/* Зарок: склейка стилей веб-версии. Собрано tools/web-bundle.cjs — руками не править. */

/* ---- app-fonts.css ---- */
/* Шрифты приложения со своего адреса, без Google Fonts: запрос к fonts.googleapis.com / fonts.gstatic.com раскрыл бы Google адрес (IP)
   посетителя. Те же файлы и те же unicode-range, что отдавал Google (Manrope 400–800 — один переменный файл на набор знаков,
   IBM Plex Mono 400/500/600), наборы latin, latin-ext, cyrillic, cyrillic-ext; лицензии OFL — public/fonts/*-OFL.txt. */
@font-face{font-family:'Manrope';font-style:normal;font-weight:400 800;font-display:swap;src:url('public/fonts/manrope-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400 800;font-display:swap;src:url('public/fonts/manrope-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400 800;font-display:swap;src:url('public/fonts/manrope-400-cyrillic.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400 800;font-display:swap;src:url('public/fonts/manrope-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('public/fonts/ibmplexmono-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('public/fonts/ibmplexmono-400-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('public/fonts/ibmplexmono-400-cyrillic.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('public/fonts/ibmplexmono-400-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('public/fonts/ibmplexmono-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('public/fonts/ibmplexmono-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('public/fonts/ibmplexmono-500-cyrillic.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('public/fonts/ibmplexmono-500-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('public/fonts/ibmplexmono-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('public/fonts/ibmplexmono-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('public/fonts/ibmplexmono-600-cyrillic.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('public/fonts/ibmplexmono-600-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
/* Хинди (сборка 102): у Manrope нет деванагари. Знаки деванагари берутся из шрифта телефона (Android — Noto Sans Devanagari,
   Windows — Nirmala UI) под теми же именами, что у шрифтов интерфейса, — порядок стеков в темах не меняется. */
@font-face{font-family:'Manrope';font-style:normal;font-weight:400 800;font-display:swap;src:local('Noto Sans Devanagari'),local('NotoSansDevanagari-Regular'),local('Nirmala UI');unicode-range:U+0900-097F,U+1CD0-1CFF,U+A8E0-A8FF}
@font-face{font-family:ZarokUI;font-style:normal;font-weight:400 800;font-display:swap;src:local('Noto Sans Devanagari'),local('NotoSansDevanagari-Regular'),local('Nirmala UI');unicode-range:U+0900-097F,U+1CD0-1CFF,U+A8E0-A8FF}
/* Разрядка ломает лигатуры деванагари («मु ला का त»): на хинди буквы не разряжаются */
:lang(hi){letter-spacing:normal!important}


/* ---- styles.css ---- */
/* ============================================================
   Распорядок дня — оформление
   Токены из design_handoff_weight_gain_app/README.md
   ============================================================ */

:root{
  --bg:#fbfaf8;
  --bg2:#f6f4f0;
  --surface:#ffffff;

  --t1:#1b1a17;
  --t2:#4a463f;
  --t3:#9a968c;
  --t4:#b0aca2;

  --line:#e8e5de;
  --line-soft:#f3f0ea;
  --line-btn:#ddd9d0;

  --green:#5b6e52;
  --green-bg:#eef2ea;
  --green-tx:#42513b;
  --yellow:#7d5c1c;
  --yellow-bg:#fdf6e8;
  --yellow-bd:#f0e2c4;

  --scrim:rgba(20,19,16,.44);

  /* заливки, отметки, линии и тревожные цвета — чтобы темы меняли их разом */
  --fill:#eceae4;
  --fill-2:#f1efe9;
  --mark:#d9d5cc;
  --hair:#dfe5da;
  --mute:#8a867e;
  --dash:#cfcabf;
  --danger:#a33b2a;
  --danger-bg:#fdf5f3;
  --danger-bd:#e6d2cd;
  /* акцент: градиент кнопок и рамка выбора */
  --acc-1:#557f69;
  --acc-2:#3e6653;
  --acc-3:#33594a;
  --acc-edge:#3a604e;
  --acc-ring:#87a791;
  --input-bg:#fafbf9;
  --me-1:#f3f8f4;
  --me-2:#e4efe7;
  --tab-1:#f1f7f3;
  --tab-2:#e2eee6;
  --hl:rgba(255,255,255,.95);
  /* текст на тёмной заливке var(--t1) */
  --on-t1:#fff;
  /* текст и значки на заливке акцента (кнопки, отметки) */
  --on-acc:#fff;
  /* фон страницы вокруг приложения (виден на широком экране) */
  --page:#eceae4;
  /* фотографии: фильтр, подкраска цветом темы и вуаль сверху под текст */
  --ph-filter:none;
  --ph-tint:transparent;
  --ph-tint-op:0;
  --ph-veil:transparent;

  --ui:'Manrope',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,'Cascadia Mono',Consolas,monospace;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;scrollbar-width:none;-ms-overflow-style:none}
*::-webkit-scrollbar{width:0;height:0;display:none}
html,body{height:100%}
body{
  margin:0;background:var(--page);font-family:var(--ui);color:var(--t1);
  display:flex;align-items:center;justify-content:center;overscroll-behavior:none;
}
button{
  font-family:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:left;
  -webkit-user-select:none;user-select:none
}
input,select,textarea{font-family:inherit;font-size:14px;color:inherit}

/* безопасные зоны: вырезы, системные панели, шапка Telegram.
   env() даёт браузер и WebView от версии 140; в более старом WebView
   те же отступы присылает Capacitor переменными --safe-area-inset-*.
   В Telegram --safe-* задаёт tg.js поверх этих значений. */
:root{
  --safe-top:max(env(safe-area-inset-top,0px),var(--safe-area-inset-top,0px));
  --safe-bottom:max(env(safe-area-inset-bottom,0px),var(--safe-area-inset-bottom,0px));
}
.app{
  position:relative;width:min(430px,100vw);height:100dvh;background:var(--surface);
  display:flex;flex-direction:column;overflow:hidden;
  padding-top:var(--safe-top);
}
/* планшеты, раскрытые складные, десктоп: приложение — карточка по центру */
@media (min-width:560px) and (min-height:820px){
  .app{height:min(900px,96dvh);border-radius:30px;box-shadow:0 34px 80px -36px rgba(0,0,0,.5);padding-top:0}
}
/* раскрытый складной в альбомной ориентации: невысокий, но широкий */
@media (min-width:700px) and (max-height:819px){
  .app{width:min(430px,52vw);height:96dvh;border-radius:26px;box-shadow:0 24px 60px -30px rgba(0,0,0,.5);padding-top:0}
}
#root{flex:1;display:flex;flex-direction:column;min-height:0}
.screen{flex:1;display:flex;flex-direction:column;min-height:0;background:var(--bg)}
/* полоса под приподнятую кнопку таббара: список в неё не заезжает */
/* touch-action: pan-y оставляет браузеру только вертикальную прокрутку,
   а горизонтальное движение достаётся нам под листание дней и месяцев */
.scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;padding-bottom:12px;margin-bottom:19px;touch-action:pan-y}

.mono{font-family:var(--mono)}
.muted{color:var(--t3)}
.empty{padding:34px 22px;text-align:center;color:var(--t3);font:500 13px/1.5 var(--ui)}
.hint{font:500 11.5px/1.45 var(--ui);color:var(--t3);margin:-2px 0 12px}
.warn{
  background:var(--yellow-bg);border:1px solid var(--yellow-bd);color:var(--yellow);
  border-radius:12px;padding:10px 12px;font:500 11.5px/1.45 var(--ui);margin-bottom:12px
}
.warn.danger{background:var(--danger-bg);border-color:var(--danger-bd);color:var(--danger)}
.warn b{font-weight:700}
.divider{height:1px;background:var(--line);margin:16px -20px 14px}
.track{flex:1;height:5px;border-radius:99px;background:var(--line);overflow:hidden}
.track i{display:block;height:100%;border-radius:99px;background:var(--green);transition:width .25s ease}

/* ============================================================
   ЭКРАН «ДЕНЬ» — шапка
   ============================================================ */
.hdr{background:var(--surface);border-bottom:1px solid var(--line);padding:14px 20px 13px;flex:none}
/* мета шторки дня — аккуратные чипы */
.meta-chips{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.meta-chips i{
  font:600 9.5px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--t3);
  background:var(--bg2);border:1px solid var(--line);border-radius:99px;padding:4px 9px
}

/* кнопка подсказок в шторке */
.hintbtn{
  position:absolute;top:14px;right:16px;width:30px;height:30px;border-radius:50%;
  background:var(--bg2);border:1px solid var(--line-btn);color:var(--t3);
  font:700 14px/1 var(--ui);display:flex;align-items:center;justify-content:center
}
.hintbtn:active{background:var(--line-soft)}

/* развёрнутое описание под кнопками курсов */
.course-note{margin-top:10px;text-align:left;line-height:1.5}
.course-note b{color:var(--t1);font-weight:700}
.hdr-row{display:flex;align-items:flex-start;gap:7px}
.hdr-main{flex:1;min-width:0}
.hdr-date{font:700 26px/1.05 var(--ui);letter-spacing:-.025em}
.hdr-sub{font:500 12px/1.35 var(--ui);color:var(--t3);margin-top:5px}
.today-nav{background:var(--t1);border-color:var(--t1);color:var(--on-t1);font-size:15px}
.navbtn{
  width:36px;height:36px;flex:none;border:1px solid var(--line-btn);border-radius:12px;
  background:var(--surface);display:flex;align-items:center;justify-content:center;
  font-size:16px;color:var(--t2)
}
.navbtn:active{background:var(--bg2)}

.hdr-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}
.pchip{
  display:inline-flex;align-items:center;gap:5px;
  font:600 11px/1 var(--ui);padding:6px 9px;border-radius:9px;
  border:1px solid var(--line);background:var(--bg2);color:var(--t2);white-space:nowrap
}
.pchip .dot{width:6px;height:6px;border-radius:99px;flex:none}
.today-btn{background:var(--t1);border-color:var(--t1);color:var(--on-t1);font-weight:700}
.today-btn:active{opacity:.85}

.hdr-prog{display:flex;align-items:center;gap:10px;margin-top:11px}
.hdr-prog span{font:600 11.5px var(--mono);flex:none}
.metrics{display:flex;gap:24px;margin-top:12px;align-items:flex-end}
.metric b{display:block;font:700 17px var(--ui);letter-spacing:-.01em}
.metric span{display:block;font:500 10.5px var(--ui);color:var(--t3);margin-top:1px}
.metric-edit{
  margin-left:auto;font:600 11.5px var(--ui);color:var(--t3);
  border:1px solid var(--line);border-radius:9px;padding:6px 10px;background:var(--surface)
}

/* баннеры состояния дня */
.banner{
  margin:14px 20px 0;padding:14px 15px;border-radius:16px;
  background:var(--green-bg);border:1px solid var(--hair)
}
.banner b{display:block;font:700 14.5px var(--ui);color:var(--green-tx)}
.banner span{display:block;font:500 12px/1.45 var(--ui);color:var(--t3);margin-top:4px}
.banner-btn{
  font:600 12px var(--ui);color:var(--on-acc);background:var(--green);border-radius:10px;
  padding:9px 14px;margin-top:11px
}
.banner.partial,.banner.missed{background:var(--surface);border-color:var(--line)}
.banner.partial b,.banner.missed b{color:var(--c,var(--t2))}

.tick{
  width:20px;height:20px;flex:none;border-radius:7px;border:1px solid var(--mark);background:var(--surface);
  display:flex;align-items:center;justify-content:center
}
.tick.on{background:var(--green);border-color:var(--green)}
.tick.on::after{content:'✓';color:var(--on-acc);font:600 11px var(--ui)}

/* ============================================================
   СТАРТ ДНЯ: ритуал → подготовка → распорядок
   ============================================================ */
.startwrap{padding:16px 20px 24px;display:flex;flex-direction:column;gap:13px}
.scard{
  background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:15px 16px 6px;
  display:flex;flex-direction:column
}
.scard.dim{opacity:.55;border-color:var(--fill-2)}
.scard-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.scard-h b{font:700 15px/1.1 var(--ui);letter-spacing:-.01em}
.scount{font:600 11.5px var(--mono)}
.sbar{height:4px;background:var(--fill);border-radius:99px;overflow:hidden;margin:12px 0 4px}
.sbar i{display:block;height:100%;border-radius:99px;transition:width .25s ease}

.rit-row{
  display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft);width:100%
}
.rit-time{font:600 11.5px/1 var(--mono);color:var(--t3);width:38px;flex:none}
.rit-body{flex:1;min-width:0}
.rit-body b{display:block;font:700 14.5px/1.2 var(--ui);letter-spacing:-.01em}
.rit-body em{display:block;font:500 11.5px/1.25 var(--ui);color:var(--t3);font-style:normal;margin-top:3px}
.rit-row.on .rit-body b{color:var(--mute);text-decoration:line-through}
.rit-row .chk{pointer-events:none}
.slink{
  align-self:flex-start;font:600 12px/1.45 var(--ui);color:var(--green);padding:12px 0 10px
}

.prep-row2{display:flex;align-items:center;gap:11px;padding:9px 0;width:100%}
.dotchk{
  width:22px;height:22px;flex:none;border-radius:99px;border:1px solid var(--mark);background:var(--surface);
  display:flex;align-items:center;justify-content:center
}
.prep-row2.on .dotchk{background:var(--green);border-color:var(--green)}
.prep-row2.on .dotchk::after{content:'✓';color:var(--on-acc);font:600 11px var(--ui)}
.prep-body{flex:1;min-width:0}
.prep-body b{display:block;font:600 13px/1.2 var(--ui)}
.prep-body em{display:block;font:500 11px/1.2 var(--ui);color:var(--t3);font-style:normal;margin-top:3px}
.prep-row2.on .prep-body b{color:var(--mute)}
.dose-pill{
  font:500 11.5px/1 var(--mono);color:var(--yellow);background:var(--yellow-bg);
  border:1px solid var(--yellow-bd);padding:6px 9px;border-radius:8px;white-space:nowrap;flex:none
}

.start-cta{
  width:100%;padding:14px;border-radius:14px;font:600 13.5px/1.45 var(--ui);text-align:center;
  background:var(--fill);color:var(--mute)
}
.start-cta.on{background:var(--t1);color:var(--on-t1)}
.start-skip{
  width:100%;text-align:center;font:600 12px/1.5 var(--ui);color:var(--t3);padding:2px 0 4px
}

/* свёрнутый старт дня над распорядком */
.startbar{
  display:block;margin:14px 20px 0;width:calc(100% - 40px);
  background:linear-gradient(142deg,#6a8060 0%,#4c6043 62%,#405438 100%);
  border:1px solid #ffffff1f;border-radius:18px;padding:15px 16px;
  box-shadow:0 10px 24px -16px rgba(64,84,56,.9)
}
.sb-h{display:flex;align-items:center;justify-content:space-between;gap:10px}
.sb-h b{font:700 15px/1.1 var(--ui);color:#fff;letter-spacing:-.01em;flex:none}
.sb-h span{font:600 11px var(--mono);color:#dbe6d2;white-space:nowrap;opacity:.85}
.sb-bars{display:flex;gap:6px;margin-top:12px}
.sb-bars > div{flex:1;height:5px;background:#ffffff2b;border-radius:99px;overflow:hidden}
.sb-bars i{display:block;height:100%;border-radius:99px}
.sb-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.sb-chip{
  padding:8px 11px;border-radius:10px;border:1px solid #ffffff2e;background:#ffffff14;
  color:#f2f5ee;font:600 12px var(--ui)
}
.sb-chip.on{background:#ffffff26;color:#fff}
.sb-link{display:block;margin-top:12px;font:600 12px var(--ui);color:#e2ecda;opacity:.9}

.startbar.done{
  background:var(--green-bg);border:1px solid #dfe5da;box-shadow:none;
  display:flex;align-items:center;gap:12px;padding:12px 15px
}
.sbd-text{flex:1;min-width:0;display:block}
.sbd-text b{display:block;font:700 13.5px/1.2 var(--ui);color:var(--green-tx)}
.sbd-text span{
  display:block;font:600 10.5px/1.2 var(--mono);color:var(--t3);margin-top:4px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.sb-arrow{font-style:normal;font:600 14px var(--ui);color:#7d8a74;flex:none}

/* таймлайн */
.timeline{padding:16px 20px 8px;display:grid;grid-template-columns:46px minmax(0,1fr);gap:12px 10px}
.timeline > *{min-width:0}
.tl-time{display:flex;flex-direction:column;align-items:flex-end;gap:6px;padding-top:2px}
.tl-time b{font:600 12px var(--mono);color:var(--t2)}
.tl-time i{flex:1;width:1px;background:var(--line);min-height:8px}

/* выполненный пункт — свёрнутая строка */
.donerow{
  display:flex;align-items:center;gap:10px;padding:8px 11px;
  background:var(--fill-2);border:1px solid var(--line);border-radius:13px;min-width:0
}
.donerow .chk{width:22px;height:22px;border-radius:7px;font-size:11px}
.donerow b{
  flex:1;min-width:0;font:600 13px/1.2 var(--ui);color:var(--mute);text-decoration:line-through;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.donerow em{
  flex:none;font:500 10.5px var(--mono);color:var(--t4);font-style:normal;
  max-width:38%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.tl-time.small b{color:var(--t4);font-weight:500}

.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.card-h{display:flex;align-items:center;gap:8px;padding:13px 14px 9px}
.card-h h3{margin:0;flex:1;font:700 15.5px/1.15 var(--ui);letter-spacing:-.01em}
.icon-btn{
  width:26px;height:26px;flex:none;border-radius:8px;border:1px solid var(--line);
  color:var(--t3);font:700 15px/1 var(--ui);display:flex;align-items:center;justify-content:center;padding-bottom:2px
}
.icon-btn:active{background:var(--bg2)}
.chk{
  width:26px;height:26px;flex:none;border-radius:9px;border:1px solid var(--mark);background:var(--surface);
  color:transparent;font:600 13px var(--ui);display:flex;align-items:center;justify-content:center;
  transition:background .15s ease,border-color .15s ease
}
.chk.on{background:var(--green);border-color:var(--green);color:var(--on-acc)}
.card-items{padding:0 14px 12px;display:flex;flex-direction:column;gap:6px}
.item{display:flex;align-items:baseline;gap:10px;font:500 13px/1.35 var(--ui);color:var(--t2)}
.item b{font-weight:500;flex:1;min-width:0}
.item span{font:500 12px var(--mono);color:var(--t3);flex:none}
.strip{
  display:flex;align-items:center;gap:8px;padding:9px 14px;
  font:600 11.5px/1.3 var(--ui);border-top:1px solid var(--line-soft);width:100%
}
.strip.pre{background:var(--yellow-bg);color:var(--yellow)}
.strip.post{background:var(--green-bg);color:var(--green-tx)}
.strip .dot{
  width:16px;height:16px;flex:none;border-radius:99px;border:1px solid currentColor;opacity:.5;
  display:flex;align-items:center;justify-content:center
}
.strip.done .dot{opacity:1;background:currentColor}
.strip.done .dot::after{content:'✓';color:#fff;font-size:9px;line-height:1}
.strip.done b{text-decoration:line-through;opacity:.6}
.strip b{font-weight:600;flex:1;min-width:0}

.evcard{border-radius:16px;padding:12px 13px;display:flex;align-items:center;gap:10px;border:1px solid}
.ic{width:100%;height:100%;display:block}
.evbadge{
  width:32px;height:32px;flex:none;border-radius:10px;display:flex;align-items:center;justify-content:center;
  padding:6px
}
.evbadge.sm{width:28px;height:28px;border-radius:9px;padding:5px}
.mealmark{width:17px;height:17px;flex:none;display:block;opacity:.85}
.evtext{flex:1;min-width:0}
.evtext b{display:block;font:700 14px/1.2 var(--ui);letter-spacing:-.01em}
.evtext span{
  font:500 11.5px/1.3 var(--ui);color:var(--t3);margin-top:3px;overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical
}
.dosecard{border-radius:14px;padding:11px 13px;display:flex;align-items:center;gap:10px;border:1px solid}

.addbtn{
  border:1px dashed var(--dash);border-radius:14px;padding:13px;
  font:600 12.5px var(--ui);color:var(--t2);background:transparent;text-align:center
}
.addbtn:active{background:#00000008}
.addpair{display:flex;gap:7px}
.addpair .addbtn{flex:1;padding:12px 4px;font-size:11.5px}

/* ============================================================
   ТАББАР
   ============================================================ */
.tabbar{
  flex:none;display:flex;align-items:flex-start;background:var(--surface);
  border-top:1px solid var(--line);
  padding:7px 6px calc(7px + var(--safe-bottom))
}
.tab{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
  color:var(--t4);padding:3px 0 2px
}
.tab-ico{
  width:40px;height:28px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  transition:background .18s ease,color .18s ease
}
.tab-ico svg{width:21px;height:21px;display:block}
.tab-lb{font:600 10px var(--ui);letter-spacing:.01em}
.tab.on{color:var(--t1)}
.tab.on .tab-ico{background:var(--fill-2)}
.tab.on .tab-lb{font-weight:700}
.tab:active .tab-ico{background:var(--fill-2)}
/* клавиатура на экране (html.kb-open) и экраны-формы (html.form-screen) — без панели вкладок: она не закрывает поля
   и кнопки формы (js/app.js syncKeyboard, data-form-screen). Нижний отступ системной навигации берёт сама форма. */
html.kb-open #root > .tabbar,html.form-screen #root > .tabbar{display:none}
html.form-screen:not(.kb-open) #root > .screen [data-form-screen]{padding-bottom:calc(16px + var(--safe-bottom))!important}

/* ============================================================
   КАЛЕНДАРЬ
   ============================================================ */
.cal-hdr{background:var(--surface);border-bottom:1px solid var(--line);padding:14px 16px 12px;flex:none}
.cal-hdr-row{display:flex;align-items:center;gap:8px}
.cal-title-box{flex:1;min-width:0;text-align:center}
.cal-title{font:800 20px/1.1 var(--ui);letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-sub{
  font:500 10.5px var(--mono);color:var(--t3);margin-top:3px;display:block;width:100%;text-align:center
}
.segrow{display:flex;gap:8px;margin-top:10px;align-items:stretch}
.segadd{
  flex:none;padding:8px 12px;border-radius:11px;background:var(--t1);color:var(--on-t1);
  font:600 11.5px var(--ui);display:flex;align-items:center;white-space:nowrap
}
.segadd:active{opacity:.85}
.viewseg{flex:1;display:flex;border:1px solid var(--line);border-radius:11px;padding:2px;background:var(--bg2)}
.viewseg button{flex:1;padding:7px 11px;border-radius:9px;font:600 11.5px var(--ui);color:var(--t3);text-align:center}
.viewseg button.on{background:var(--surface);color:var(--t1);box-shadow:0 1px 3px rgba(0,0,0,.07)}

.dow{
  display:grid;grid-template-columns:repeat(7,1fr);gap:6px;padding:10px 14px 6px;
  font:600 9.5px var(--mono);color:var(--t4);text-align:center;letter-spacing:.05em
}
.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;padding:0 14px 14px}
.cell{
  position:relative;border-radius:12px;border:1px solid var(--line);background:var(--surface);
  min-height:64px;display:flex;flex-direction:column;align-items:flex-start;padding:6px 6px 8px;overflow:hidden
}
.cell.void{border:0;background:transparent !important;pointer-events:none}
.cell.sel{box-shadow:inset 0 0 0 1.5px var(--t1)}
.cell-n{font:700 13px/1 var(--ui)}
.cell-n.today{
  background:var(--t1);border-radius:99px;width:21px;height:21px;
  display:flex;align-items:center;justify-content:center;margin:-2px 0 -2px -2px;font-size:12px
}
.cell-dots{display:flex;flex-wrap:wrap;gap:3px;margin-top:auto;padding-bottom:5px}
.cell-dots i{width:5px;height:5px;border-radius:99px;display:block}
.cell-dots u{font:600 7.5px var(--mono);color:var(--t3);text-decoration:none;line-height:5px}
.cell-bar{position:absolute;left:6px;right:6px;bottom:5px;height:3px;border-radius:99px;background:#00000010}
.cell-bar i{display:block;height:100%;border-radius:99px}

/* карточка «сегодня» */
.todaycard{margin:4px 14px 10px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:13px 14px}
.tc-top{
  font:600 10.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--t3);
  display:flex;align-items:center;gap:6px
}
.tc-top .dot{width:6px;height:6px;border-radius:99px;margin-left:auto}
.tc-row{display:flex;align-items:center;gap:14px;margin-top:9px}
.tc-prog{flex:none}
.tc-prog b{display:block;font:700 20px/1 var(--ui);letter-spacing:-.02em}
.tc-prog span{display:block;font:500 10px var(--ui);color:var(--t3);margin-top:3px}
.tc-next{flex:1;min-width:0;border-left:1px solid var(--line);padding-left:14px}
.tc-next b{display:block;font:700 13.5px/1.2 var(--ui);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tc-next span{display:block;font:500 10.5px var(--ui);color:var(--t3);margin-top:3px;white-space:nowrap}
.tc-btn{width:100%;margin-top:12px;padding:11px;font-size:12.5px}

/* список (агенда) */
.agenda{padding:8px 14px 16px;display:flex;flex-direction:column;gap:8px}
.agenda-row{
  display:flex;gap:12px;align-items:stretch;
  background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:11px 12px
}
.agenda-row.sel{box-shadow:inset 0 0 0 1.5px var(--t1)}
.agenda-row.today .agenda-date b{background:var(--t1);color:var(--on-t1);border-radius:99px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-size:14px}
.agenda-date{width:34px;flex:none;display:flex;flex-direction:column;align-items:center;gap:2px}
.agenda-date b{font:700 18px/1 var(--ui)}
.agenda-date span{font:500 9.5px var(--mono);color:var(--t3);text-transform:uppercase}
.agenda-body{flex:1;min-width:0}
.agenda-top{font:600 10px var(--mono);color:var(--t3);letter-spacing:.04em;text-transform:uppercase}
.chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.chip{
  font:600 11px/1.25 var(--ui);padding:4px 8px;border-radius:8px;white-space:nowrap;max-width:100%;
  overflow:hidden;text-overflow:ellipsis;
  color:var(--c,var(--t2));background:color-mix(in srgb,var(--c,#5b6e52) 9%,var(--surface));
  border:1px solid color-mix(in srgb,var(--c,#5b6e52) 24%,var(--surface))
}
.agenda-stat{
  flex:none;align-self:center;font:600 11px var(--mono);
  border:1px solid var(--line);border-radius:8px;padding:5px 7px;background:color-mix(in srgb,var(--surface) 66%,transparent)
}

/* FAB */
.fab{
  position:absolute;left:50%;transform:translateX(-50%);
  bottom:calc(66px + max(8px,var(--safe-bottom)));
  background:#1b1a17f0;color:#fff;border-radius:99px;padding:13px 20px;
  display:flex;align-items:center;gap:10px;font:600 13px var(--ui);
  box-shadow:0 10px 24px -10px rgba(0,0,0,.5);z-index:20
}
.fab b{font:600 15px var(--ui)}

/* ============================================================
   КУРСЫ И ПРОФИЛЬ
   ============================================================ */
.plain-hdr{
  background:var(--surface);border-bottom:1px solid var(--line);padding:16px 20px 13px;flex:none;
  display:flex;align-items:center;gap:10px
}
.plain-hdr h1{margin:0;flex:none;font:800 23px/1.1 var(--ui);letter-spacing:-.02em}
.plain-hdr .sub{font:500 11px var(--mono);color:var(--t3);flex:1;min-width:0}
.list{padding:14px 16px 24px;display:flex;flex-direction:column;gap:12px}
.course{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:15px 16px 13px}
.course-h{display:flex;align-items:center;gap:8px}
.course-h h3{margin:0;flex:1;font:700 15.5px/1.15 var(--ui);letter-spacing:-.01em}
/* плашка тега курса: мягкий глянец, спокойные тона */
.tagchip{
  font:600 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;
  padding:4px 9px;border-radius:99px;border:1px solid;white-space:nowrap;
  background-image:linear-gradient(172deg,rgba(255,255,255,.75) 0%,rgba(255,255,255,0) 55%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 1px 2px rgba(60,55,45,.06)
}
.course-dose{font:700 18px/1.2 var(--ui);letter-spacing:-.01em;margin:11px 0 12px}
.course-dose.muted{font-size:14px;font-weight:600;color:var(--t3)}
.phases{display:flex;gap:3px}
.phases > div{height:8px;border-radius:99px;background:var(--line);overflow:hidden;min-width:4px}
.phases > div.brk{background:repeating-linear-gradient(135deg,var(--fill) 0 3px,var(--bg2) 3px 6px)}
.phases i{display:block;height:100%;border-radius:99px}
.phase-meta{display:flex;justify-content:space-between;gap:10px;margin-top:9px;font:500 11.5px var(--ui);color:var(--t3)}

/* график прогресса курса по дням */
.pr{margin-top:15px}
.pr-top{display:flex;align-items:flex-end;gap:8px}
.pr-top b{font:700 34px/.9 var(--ui);letter-spacing:-.03em}
.pr-top span{font:600 12.5px/1.4 var(--ui);color:var(--t3)}
.pr-todaybar{display:flex;height:8px;border-radius:99px;background:var(--fill);overflow:hidden;margin-top:8px}
.pr-todaybar i{display:block;height:100%}

.pr-chart{position:relative;height:118px;display:flex;align-items:flex-end;gap:3px;margin-top:16px}
.pr-goal{position:absolute;left:0;right:0;border-top:1px dashed var(--dash);pointer-events:none}
.pr-col{
  flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;gap:1px;min-width:0
}
.pr-col.fut{opacity:.4}
.pr-col.brk{opacity:.3}
.pr-cap{border-radius:3px 3px 0 0}
.pr-col.fut .pr-cap,.pr-col.brk .pr-cap{
  background:repeating-linear-gradient(135deg,var(--fill) 0 3px,transparent 3px 6px)
}
.pr-col i{display:block;min-height:2px}
.pr-zero{height:2px;background:var(--fill);border-radius:2px}

/* графики оживают при входе на вкладку (.anim ставится только при её смене) */
@media (prefers-reduced-motion:no-preference){
  /* Полосы и столбики растут сдвигом масштаба (transform), а не шириной и высотой: раньше каждый кадр входа на вкладку
     пересчитывал раскладку экрана (замер сборки 96). Полоса заполняет свою дорожку с обрезкой, поэтому рост от левого края
     выглядит так же. Столбик растёт целиком от низа — его части (шапка и отрезки) растут вместе, как и раньше. */
  .anim .track i,.anim .sbar i,.anim .phases > div > i,.anim .pr-cbar i{
    transform-origin:0 50%;animation:groww .8s cubic-bezier(.25,.8,.3,1)
  }
  /* отрезки полосы дня стоят рядом в одной дорожке: каждый растёт шириной, иначе они росли бы порознь на своих местах */
  .anim .pr-todaybar i{animation:growwseg .8s cubic-bezier(.25,.8,.3,1)}
  .anim .pr-col{transform-origin:50% 100%;animation:growh .7s cubic-bezier(.25,.8,.3,1) backwards}
  .anim .pr-col:nth-child(2n){animation-delay:.06s}
  .anim .pr-col:nth-child(3n){animation-delay:.11s}
  /* сегодняшний столбик мягко дышит: день ещё идёт */
  .pr-col.now i{animation:breathe 3.2s ease-in-out 1.2s infinite}
  .anim .chart-donut svg{animation:donutin .8s cubic-bezier(.25,.8,.3,1)}
  .anim .clrow i{animation:dotin .5s ease backwards}
  .anim .clrow:nth-child(2) i{animation-delay:.12s}
  .anim .clrow:nth-child(3) i{animation-delay:.24s}
}
/* свежая галочка: чек подпрыгивает, строка мягко вспыхивает */
@media (prefers-reduced-motion:no-preference){
  .just .chk.on,.chk.on.just,.just .tick.on{animation:chkpop .5s cubic-bezier(.3,1.8,.4,1)}
  .rit-row.just,.prep-row2.just,.donerow.just,.sched-row.just{animation:rowglow .9s ease}
  .evcard.just,.dosecard.just,.card.just,.strip.just{animation:cardglow .9s ease}
  .just .dotchk{animation:chkpop .5s cubic-bezier(.3,1.8,.4,1)}
  /* стартовая панель: чипы и полосы оживают при входе */
  .anim .sb-chip{animation:chipin .5s cubic-bezier(.25,.9,.35,1.2) backwards}
  .anim .sb-chip:nth-child(2){animation-delay:.08s}
  .anim .sb-chip:nth-child(3){animation-delay:.16s}
  .anim .sb-chip:nth-child(4){animation-delay:.24s}
  .anim .sb-bars i{transform-origin:0 50%;animation:groww .8s cubic-bezier(.25,.8,.3,1)}
  .anim .startbar{animation:barrise .45s cubic-bezier(.25,.9,.35,1.1)}
  .anim .meta-chips i{animation:chipin .45s ease backwards}
  .anim .meta-chips i:nth-child(2){animation-delay:.07s}
  .anim .meta-chips i:nth-child(3){animation-delay:.14s}
}
@keyframes chkpop{0%{transform:scale(.35)}60%{transform:scale(1.22)}100%{transform:scale(1)}}
@keyframes rowglow{0%{background:rgba(139,163,124,.2)}100%{background:transparent}}
@keyframes cardglow{0%{box-shadow:0 0 0 3px rgba(139,163,124,.32)}100%{box-shadow:0 0 0 3px transparent}}
@keyframes chipin{from{opacity:0;transform:translateY(6px) scale(.92)}to{opacity:1;transform:none}}
@keyframes barrise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

@keyframes groww{from{transform:scaleX(0)}}
@keyframes growwseg{from{width:0}}
@keyframes growh{from{transform:scaleY(0)}}
@keyframes breathe{0%,100%{opacity:1}50%{opacity:.72}}
@keyframes donutin{from{transform:rotate(-40deg) scale(.92);opacity:0}to{transform:none;opacity:1}}
@keyframes dotin{from{transform:scale(0)}to{transform:none}}
.clrow i{opacity:.8}
.pr-col i:first-of-type{border-radius:3px 3px 0 0}

.pr-ticks{display:flex;gap:3px;margin-top:4px}
.pr-tick{
  flex:1;min-width:0;font:600 9px var(--mono);color:var(--t4);text-align:center;
  height:14px;padding-top:5px
}
.pr-tick.now{color:var(--t1)}
.pr-legend{
  display:flex;justify-content:space-between;gap:10px;
  font:500 11px/1.2 var(--ui);color:var(--t3);margin-top:4px
}

.pr-stats{
  display:flex;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
  padding:12px 0;margin-top:15px
}
.pr-stat{flex:1;display:flex;flex-direction:column;gap:4px}
.pr-stat b{font:700 16px/1 var(--ui);letter-spacing:-.01em}
.pr-stat span{font:500 10.5px/1 var(--ui);color:var(--t3)}

.pr-cats{display:flex;flex-direction:column;gap:11px;margin-top:13px}
.pr-cat{display:flex;align-items:center;gap:10px}
.pr-cat > i{width:8px;height:8px;border-radius:99px;flex:none}
.pr-cbody{flex:1;min-width:0}
.pr-crow{display:flex;justify-content:space-between;gap:8px}
.pr-crow b{font:600 13px/1.2 var(--ui)}
.pr-crow span{font:500 11.5px/1.2 var(--mono);color:var(--t3);white-space:nowrap}
.pr-cbar{height:5px;border-radius:99px;background:var(--fill-2);overflow:hidden;margin-top:6px}
.pr-cbar i{display:block;height:100%;border-radius:99px;transition:width .25s ease}

.course-chart{display:flex;align-items:center;gap:14px;margin:14px 0 4px}
.chart-donut{position:relative;flex:none;width:84px;height:84px}
.donut-empty{border-radius:99px;border:14px solid var(--fill-2)}
.chart-center{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px
}
.chart-center b{font:700 17px/1 var(--ui);letter-spacing:-.03em;white-space:nowrap}
.chart-center span{font:500 8.5px var(--ui);color:var(--t3);white-space:nowrap}
.chart-legend{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.clrow{display:flex;align-items:center;gap:7px;font:500 11.5px var(--ui)}
.clrow i{width:8px;height:8px;border-radius:3px;flex:none}
.clrow b{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.clrow span{font:500 11px var(--mono);color:var(--t3);flex:none}
.course-sum{font:500 11.5px var(--ui);color:var(--t3);margin-top:8px}
.course-sum b{color:var(--t1);font-weight:700}
.course-prog{display:flex;align-items:center;gap:10px;margin-top:9px}
.course-prog span{font:500 10.5px var(--ui);color:var(--t3);flex:none}

.linkbtn{
  margin-top:11px;padding-top:11px;border-top:1px solid var(--line-soft);
  font:600 12.5px var(--ui);color:var(--t2);display:flex;align-items:center;gap:6px;width:100%
}
.linkbtn u{text-decoration:none;color:var(--t3);font-size:11px}
.dosetable{display:flex;flex-direction:column;padding-top:4px}
.dosetable div{
  display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line-soft);
  font:500 12.5px var(--ui);color:var(--t3);gap:12px
}
.dosetable div.cur{color:var(--t1);font-weight:600}
.dosetable div:last-child{border-bottom:0}
.dosetable .ph{color:var(--t3);font:500 11.5px var(--ui)}

.actlist{display:flex;flex-direction:column;padding-top:4px}
.actrow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line-soft);width:100%}
.acttime{font:600 11.5px var(--mono);color:var(--t2);flex:none;width:42px}
.actbody{flex:1;min-width:0}
.actbody b{display:block;font:700 13px/1.2 var(--ui)}
.actbody em{
  display:block;font:500 11px/1.35 var(--ui);color:var(--t3);font-style:normal;margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.catdot{width:8px;height:8px;border-radius:99px;flex:none}

.setrow{display:flex;align-items:center;gap:11px;padding:9px 0;border-bottom:1px solid var(--line-soft);width:100%}
.setrow:last-child{border-bottom:0}
.setrow.flat{border-bottom:0;padding-top:0}
.sw{width:22px;height:22px;border-radius:8px;flex:none;border:1px solid #00000012}
.sw.ico{width:32px;height:32px;border-radius:10px;padding:6px;border:1px solid}
.addpair2{display:flex;gap:8px}
.addpair2 .addrow{margin-top:0}
.setbody{flex:1;min-width:0}
.setbody b{display:block;font:700 13px/1.2 var(--ui)}
.setbody em{display:block;font:500 11px var(--ui);color:var(--t3);font-style:normal;margin-top:2px}
.setrow u{text-decoration:none;font:600 11px var(--ui);color:var(--t3);flex:none}
.setinfo{
  display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line-soft);
  font:500 12.5px var(--ui);color:var(--t3)
}
.setinfo:last-child{border-bottom:0}
.setinfo b{color:var(--t1);font-weight:600}

/* ============================================================
   ПРОФИЛЬ: сворачиваемые карточки, отмена, AI-кнопка
   ============================================================ */
.fold{padding:0}
.fold-h{display:flex;align-items:center;gap:10px;width:100%;padding:14px 16px}
.fold-t{flex:1;min-width:0}
.fold-t b{display:block;font:700 15px/1.15 var(--ui);letter-spacing:-.01em}
.fold-t em{
  display:block;font:500 11.5px/1.3 var(--ui);color:var(--t3);font-style:normal;margin-top:4px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.sub-mono{font:500 10.5px var(--mono);color:var(--t3);flex:none}
.progbars{display:flex;flex-direction:column;gap:10px;margin-top:14px;padding-top:13px;border-top:1px solid var(--line-soft)}
.fold-a{font-style:normal;font-size:11px;color:var(--t3);flex:none}
.fold-b{padding:0 16px 14px;border-top:1px solid var(--line-soft);padding-top:12px}

.setrow.bigrow{
  background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px 16px;border-bottom:1px solid var(--line)
}
.sw{display:flex;align-items:center;justify-content:center;color:#fff;font:600 12px var(--ui)}

.undocard{
  background:var(--yellow-bg);border:1px solid var(--yellow-bd);border-radius:18px;
  padding:13px 15px;display:flex;align-items:center;gap:12px
}
.undo-body{flex:1;min-width:0}
.undo-body b{display:block;font:700 13.5px var(--ui);color:var(--yellow)}
.undo-body span{display:block;font:500 11.5px/1.35 var(--ui);color:var(--yellow);margin-top:3px}
.undocard .btn{flex:none;padding:10px 14px;background:var(--surface);border-color:var(--yellow-bd);color:var(--yellow)}

.mini-seg{margin-top:12px}
.mini-seg button{padding:6px 10px;font-size:11px}
.hintlink{
  width:100%;text-align:center;font:600 12px var(--ui);color:var(--t3);padding:6px 0 2px
}
.actbody b .startdot{
  display:inline-block;font:600 8.5px var(--mono);color:var(--green);background:var(--green-bg);
  border:1px solid var(--hair);border-radius:4px;padding:1px 4px;font-style:normal;
  margin-left:6px;vertical-align:1px;text-transform:uppercase;letter-spacing:.04em
}

/* ============================================================
   ЭКРАН «ПОМОЩНИК»
   ============================================================ */
.aihero{padding:18px 20px 22px;display:flex;flex-direction:column}
.aimark{
  width:60px;height:60px;border-radius:20px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(140deg,#5d7a92 0%,#3f5668 100%);color:#fff;
  box-shadow:0 14px 28px -16px rgba(40,60,78,.9);margin-bottom:16px
}
.aimark svg{width:30px;height:30px}
.aititle{margin:0;font:800 28px/1.1 var(--ui);letter-spacing:-.03em}
.aisub{margin:9px 0 0;font:500 13.5px/1.5 var(--ui);color:var(--t2)}

.aicta{
  margin-top:16px;width:100%;padding:15px;border-radius:16px;text-align:center;
  background:linear-gradient(140deg,#5d7a92 0%,#3f5668 100%);color:#fff;
  font:700 15.5px/1.2 var(--ui);letter-spacing:-.01em;
  box-shadow:0 14px 30px -16px rgba(40,60,78,.9);border:1px solid #ffffff1f
}
.aicta span{display:block;font:500 11.5px var(--ui);color:#d6e2ec;margin-top:5px}
.aicta:active{transform:scale(.99)}
.aicta.ghost{
  margin-top:18px;background:none;color:var(--t1);border:1px solid var(--line-btn);
  box-shadow:none;font-size:14px
}

/* ---------- чат помощника ---------- */
.chat{flex:1;display:flex;flex-direction:column;min-height:0}
.chat-hdr{
  flex:none;display:flex;align-items:center;gap:11px;padding:11px 16px;
  background:var(--surface);border-bottom:1px solid var(--line)
}
.aimark.xs{width:36px;height:36px;border-radius:12px;margin:0;flex:none;box-shadow:none}
.aimark.xs svg{width:19px;height:19px}
.chat-who{flex:1;min-width:0}
.chat-who b{display:block;font:700 15px/1.2 var(--ui);letter-spacing:-.01em}
.chat-who em{display:block;font:500 11px var(--ui);color:var(--t3);font-style:normal;margin-top:2px}
.chat-clear{flex:none;font:600 11.5px var(--ui);color:var(--t3);padding:6px 4px}
/* шапка помощника, вариант А (макет GPT assistant-header, владелец 22.10): знак Зарока, «Зарок» (без плашки «ИИ», владелец 22.10), роль, «⋯» */
.chat-hdr.ai-head,.functional .chat-hdr.ai-head{min-height:79px;padding:14px 16px;gap:11px;background:var(--surface);border-bottom:1px solid var(--line)}
.ai-id{flex:1;min-width:0}
.ai-id b{display:flex;align-items:center;gap:6px;text-transform:none;font:650 16px/1.2 var(--ui);letter-spacing:-.025em;color:var(--t1)}
.ai-id em{display:block;font:500 11px/1.3 var(--ui);font-style:normal;color:var(--t3);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-more{flex:none;width:35px;height:44px;min-width:44px;padding:0;display:grid;place-items:center;border:0;border-radius:12px;background:transparent;color:var(--t3);font:400 20px/1 var(--ui)}
.ai-more:hover{background:var(--fill)}
.bub.ai-greet{padding:15px 14px}
.bub.ai-greet h3{margin:0 0 8px;font:600 18px/1.2 var(--ui);letter-spacing:-.035em;color:var(--t1)}
.bub.ai-greet p{margin:0;font-size:12.5px;line-height:1.6;color:var(--t3)}
/* меню возможностей (шторка 'aimenu') */
.aim{padding:10px 17px calc(24px + var(--safe-bottom));overflow-y:auto}
.aim-top{display:flex;align-items:center;gap:11px;margin-bottom:17px}
.aim-top h2{margin:0;font:700 17px/1.2 var(--ui);letter-spacing:-.025em;color:var(--t1)}
.aim-top p{margin:3px 0 0;font:500 11px/1.3 var(--ui);color:var(--t3)}
.aim-close{margin-left:auto;flex:none;width:44px;height:44px;padding:0;display:grid;place-items:center;border:0;border-radius:50%;background:var(--fill);color:var(--t3);font:400 18px/1 var(--ui)}
.aim-row{width:100%;display:flex;align-items:center;gap:12px;text-align:left;margin-top:8px;padding:12px;min-height:59px;
  border:1px solid var(--line);border-radius:13px;background:transparent;color:var(--t1)}
.aim-ic{flex:none;width:29px;height:29px;display:grid;place-items:center;border-radius:8px;background:var(--green-bg);color:var(--acc-2)}
.aim-ic svg{width:17px;height:17px}
.aim-row b{display:block;font:600 12.5px/1.3 var(--ui)}
.aim-row small{display:block;margin-top:3px;font:500 10.5px/1.3 var(--ui);color:var(--t3)}
.aim-note{margin:15px 0 0;font:500 10.5px/1.5 var(--ui);color:var(--t3)}
/* ai-mark:start — знак Зарока в шапке помощника, нарисован кодом (js/screens.js aiMark); вид — выключатель AI_MARK */
.chat-hdr.ai-head{position:relative;z-index:2}
.ai-ava{position:relative;flex:none;width:47px;height:47px;min-width:44px;min-height:44px;padding:0;border:0;border-radius:17px;
  display:grid;place-items:center;background:var(--green-bg);color:var(--acc-2);-webkit-tap-highlight-color:transparent}
.ai-mk{display:block;overflow:visible}
.ai-mk-leaf{width:28px;height:28px;fill:currentColor}
/* знак-логотип без плашки (владелец 22.10): календарь — цветом второго текста темы, росток — цветом акцентного текста; оба читаются на шапке любой темы */
.mark-logo .ai-ava,.aim-face.mark-logo{background:none;box-shadow:none;color:var(--t2)}
.ai-mk-logo{width:34px;height:34px}
.ai-mk-logo .ai-leaf{fill:var(--green-tx)}
.ai-leaf{transform-box:view-box;transform-origin:12px 21.5px}
/* объёмный Зарок лежит на шве: линия под шапкой проходит по туловищу, лапки свисают в переписку */
.mark-zarok .ai-ava{position:absolute;left:12px;bottom:-15px;width:72px;height:54px;background:none;border-radius:0;color:var(--acc-2)}
.chat-hdr.ai-head.mark-zarok{padding-left:96px}
.chat-mark-zarok .chat-inner{padding-top:24px}
.ai-mk-zarok{width:72px;height:54px;fill:currentColor}
.ai-z-shadow{fill:var(--t1);opacity:.1}
.ai-z-body,.ai-z-all{transform-box:fill-box;transform-origin:50% 100%}
.ai-z-sprout{transform-box:view-box;transform-origin:12px 21.5px;fill:var(--acc-1)}
.ai-z-eye{transform-box:fill-box;transform-origin:50% 55%}
.ai-ava[aria-expanded="true"] .ai-z-r{transform:scaleY(.14)}
.aim-face{position:relative;flex:none;width:43px;height:43px;border-radius:15px;overflow:hidden;background:var(--green-bg)}
.aim-face .ai-mk-zarok{width:40px;height:30px}
.aim-face.mark-zarok{display:grid;place-items:center}
.aim-face.mark-leaf{display:grid;place-items:center;color:var(--acc-2)}
.aim-face.mark-logo{display:grid;place-items:center}
.ai-head.thinking .ai-ava{outline:2px solid var(--acc-2);outline-offset:3px}
.ai-head.mark-zarok.thinking .ai-ava,.ai-head.mark-logo.thinking .ai-ava{outline:0}
.ai-head.offline .ai-mk{opacity:.5}
@media (prefers-reduced-motion:no-preference){
  .ai-ava{transition:transform .12s ease}
  .ai-ava:active{transform:scale(.96)}
  .ai-head .ai-leaf,.ai-head .ai-z-sprout{animation:ai-sway 3.8s ease-in-out infinite}
  .ai-head.thinking .ai-leaf,.ai-head.thinking .ai-z-sprout{animation-duration:1.2s}
  .ai-head .ai-z-body{animation:ai-breathe 4.4s ease-in-out infinite}
  .ai-head .ai-z-eye{animation:ai-blink 5.6s ease-in-out infinite}
  .ai-head .ai-ava[aria-expanded="true"] .ai-z-r{animation:none}
  .ai-ava.wink .ai-z-all{animation:ai-hop .5s cubic-bezier(.22,1,.36,1)}
  .ai-ava.wink .ai-leaf{animation:ai-flick .55s cubic-bezier(.22,1,.36,1)}
  @keyframes ai-sway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(5deg)}}
  @keyframes ai-breathe{0%,100%{transform:scale(1,1)}50%{transform:scale(1.015,1.035)}}
  @keyframes ai-blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
  @keyframes ai-hop{0%{transform:translateY(0)}40%{transform:translateY(-4px) scale(1.03,.98)}100%{transform:translateY(0)}}
  @keyframes ai-flick{0%{transform:rotate(0) scale(1)}35%{transform:rotate(-16deg) scale(1.12)}100%{transform:rotate(0) scale(1)}}
}
/* ai-mark:end */

.chat-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain}
.chat-inner{padding:16px 14px 8px;display:flex;flex-direction:column;gap:9px}

.bub{
  max-width:84%;padding:10px 13px;border-radius:17px;font:500 13.5px/1.45 var(--ui);
  white-space:normal;word-break:break-word
}
.bub.bot{
  align-self:flex-start;background:var(--surface);border:1px solid var(--line);
  border-bottom-left-radius:6px;color:var(--t1)
}
.bub.me{
  align-self:flex-end;background:linear-gradient(140deg,#5d7a92 0%,#42596b 100%);color:#fff;
  border-bottom-right-radius:6px
}
.bub-file{
  display:flex;align-items:center;gap:6px;margin-top:7px;padding-top:7px;
  border-top:1px solid #ffffff2e;font:500 11.5px var(--ui);opacity:.9
}
.bub-file svg{width:14px;height:14px;flex:none}

.bub.typing{display:flex;gap:4px;align-items:center;padding:14px 15px}
.bub.typing i{width:6px;height:6px;border-radius:50%;background:var(--t4);animation:tp 1.1s infinite}
.bub.typing i:nth-child(2){animation-delay:.16s}
.bub.typing i:nth-child(3){animation-delay:.32s}
@keyframes tp{0%,60%,100%{opacity:.28;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}

.chips{display:flex;flex-wrap:wrap;gap:7px;align-self:flex-start;max-width:92%;margin:2px 0 4px}
.chip{
  padding:8px 12px;border-radius:99px;background:var(--surface);border:1px solid var(--line-btn);
  font:600 12px var(--ui);color:var(--t2)
}
.chip:active{background:var(--bg2)}

/* расписание дня в чате */
.schedbox{
  align-self:flex-start;width:92%;background:var(--surface);
  border:1px solid var(--line);border-radius:16px;padding:5px 13px 7px;margin-top:1px
}
.sched-h{
  display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  padding:8px 0 7px;border-bottom:1px solid var(--line-soft)
}
.sched-h b{font:700 13px var(--ui)}
.sched-h span{font:500 10.5px var(--mono);color:var(--t3)}
.sched-row{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid var(--line-soft)}
.sched-row:last-child{border-bottom:0}
.sched-t{flex:none;width:40px;font:600 11px var(--mono);color:var(--t3)}
.sched-dot{flex:none;width:7px;height:7px;border-radius:50%}
.sched-name{flex:1;min-width:0}
.sched-name b{display:block;font:600 12.5px/1.25 var(--ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sched-name em{display:block;font:500 10.5px/1.2 var(--ui);color:var(--t3);font-style:normal;margin-top:1px}
.sched-ok{flex:none;font:700 12px var(--ui);color:var(--green)}
.sched-row.done .sched-name b{color:var(--mute);text-decoration:line-through}

.planbox{
  align-self:flex-start;max-width:92%;width:92%;background:var(--surface);
  border:1px solid var(--line);border-radius:16px;padding:12px 12px 11px;margin-top:1px
}
.pb-h{
  font:600 10.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;
  color:var(--t3);margin-bottom:9px
}
.planbox .oprow{margin-bottom:6px}
.pb-foot{display:flex;gap:8px;margin-top:11px}
.pb-foot .btn{flex:1}
.planbox.done{display:flex;align-items:center;gap:10px;padding:11px 13px}
.pb-done{display:flex;align-items:center;gap:8px;flex:1;font:600 13px var(--ui);color:var(--green)}
.pb-done svg{width:16px;height:16px}
.pb-done.muted{color:var(--t3)}
.pb-undo{
  flex:none;font:600 11.5px var(--ui);color:var(--t2);padding:7px 11px;
  border:1px solid var(--line-btn);border-radius:10px
}

.cmp-files{padding:0 14px;margin-bottom:0}
/* нижний отступ — под приподнятую центральную кнопку панели */
.composer{
  flex:none;display:flex;align-items:flex-end;gap:7px;
  padding:8px 12px calc(26px + var(--safe-bottom));
  background:var(--surface);border-top:1px solid var(--line)
}
/* Поле растёт вместе с текстом до сорока процентов экрана: длинную диктовку
   надо видеть целиком, чтобы поправить, а не листать в щели на одну строку. */
.cinput{
  flex:1;min-width:0;resize:none;min-height:44px;max-height:40vh;
  padding:12px 15px;border-radius:20px;
  background:var(--bg2);border:1px solid var(--line);
  font:500 15px/1.5 var(--ui);color:var(--t1);-webkit-appearance:none;
  overflow-y:auto;overscroll-behavior:contain;
  transition:height .14s ease-out
}
.cinput:focus{outline:none;border-color:var(--dash);background:var(--surface)}
.composer.live .cinput{border-color:#c88b7a;background:var(--surface)}

/* полоса записи над полем */
.recbar{
  flex:none;display:flex;align-items:center;gap:9px;
  padding:9px 14px;margin:0 12px 6px;border-radius:14px;
  background:var(--bg2);border:1px solid var(--line);
  font:600 13px/1 var(--ui);color:var(--t2)
}
.recbar b{font-weight:700;color:var(--t1)}
.recbar .rectime{margin-left:auto;font-family:var(--mono);font-size:13px;color:var(--t3)}
.recbar button{
  flex:none;height:30px;padding:0 14px;border-radius:9px;
  background:var(--t1);color:var(--surface);font:700 12.5px/1 var(--ui)
}
.recdot{
  width:9px;height:9px;border-radius:50%;background:#b0503c;flex:none;
  animation:rec 1.2s infinite
}

/* ---------- зарок на отказ ---------- */
.h-quits{font:700 11px/1 var(--ui);letter-spacing:.1em;text-transform:uppercase;color:var(--t3);margin:16px 2px 8px}
/* у .card своих отступов нет, они у шапки; тело карточки зарока держит их само */
.quitcard{margin-bottom:10px;padding:0 14px 14px}
.quitcard .card-h{padding:13px 0 9px}
.quitcard .quota{display:flex;align-items:baseline;gap:9px;margin:8px 0 2px}
.quitcard .quota b{font:800 34px/1 var(--ui);letter-spacing:-.04em}
.quitcard .quota span{font:600 12px/1.3 var(--ui);color:var(--t3)}
.q-top{display:flex;align-items:center;gap:8px;margin-top:4px}
.q-day{font:600 11.5px/1 var(--ui);color:var(--t3)}
.q-level{font:700 10.5px/1 var(--ui);letter-spacing:.05em;text-transform:uppercase;color:var(--green);background:var(--green-bg);padding:4px 8px;border-radius:6px}
/* min-width:0 обязателен: без него текст не даёт кнопкам ужиматься,
   и ряд вылезает за карточку. Не влезло — аккуратно переносится. */
.q-btns{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.q-btn{
  flex:1 1 30%;min-width:0;height:38px;border-radius:11px;
  font:700 12.5px/1 var(--ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  padding:0 10px;background:var(--bg2);border:1px solid var(--line);color:var(--t1);text-align:center
}
.q-btn.ghost{flex:0 0 40px;padding:0;font-size:19px;font-weight:600}
/* «Тянет» — по ширине слова: в квадрате 40px оно обрезалось */
.q-btn.soft{flex:0 0 auto;padding:0 12px}
.q-btn.dark{background:var(--t1);color:var(--surface);border-color:var(--t1)}
.q-btn:active{transform:scale(.97)}
.q-zero{margin-top:6px}
.q-zero b{display:block;font:800 16px/1.3 var(--ui);color:var(--green-tx)}
.q-zero span{font:500 12.5px/1.5 var(--ui);color:var(--t3)}
.q-stats{display:flex;flex-wrap:wrap;gap:5px 14px;margin-top:10px;font:600 12px/1.4 var(--ui);color:var(--t3)}

/* шторки зарока */
.qtext{font:500 13.5px/1.55 var(--ui);color:var(--t2);margin:0 0 12px}
.qtext.dim{color:var(--t3);font-size:12.5px}
.qnote{border-radius:12px;padding:12px 14px;font:500 12.5px/1.55 var(--ui);margin-bottom:12px}
.qnote.calm{background:var(--green-bg);color:var(--green-tx);border:1px solid var(--hair)}
.qnote.warm{background:var(--yellow-bg);color:var(--yellow);border:1px solid var(--yellow-bd)}
.qchips{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.qchip{
  padding:9px 13px;border-radius:10px;border:1px solid var(--line-btn);
  background:var(--surface);font:700 12.5px/1 var(--ui);color:var(--t1)
}
.qchip.on{background:var(--t1);color:var(--surface);border-color:var(--t1)}
.input.qcur{width:74px;flex:none}
.qcheck{
  display:flex;align-items:center;gap:10px;width:100%;padding:13px 14px;
  border-radius:12px;border:1px solid var(--line-btn);background:var(--surface);
  font:700 13px/1.35 var(--ui);color:var(--t1);text-align:left;margin-top:4px
}
.qcheck.on{border-color:var(--green)}
.qsteps{display:flex;flex-direction:column;gap:8px;margin:4px 0 12px}
.qsteps>div,.qsteps>button{
  display:flex;gap:10px;align-items:flex-start;font:600 13px/1.45 var(--ui);
  color:var(--t1);text-align:left;background:none;border:0;padding:0
}
.qsteps>button{
  background:var(--bg2);border:1px solid var(--line);border-radius:11px;padding:11px 13px
}
.qsteps i{
  flex:none;width:20px;height:20px;border-radius:7px;background:var(--bg2);
  color:var(--t3);font:800 11px/20px var(--mono);text-align:center;font-style:normal
}
.qsteps>button i{background:var(--surface)}
.qsay{
  background:var(--green-bg);border-left:3px solid var(--green);
  border-radius:0 10px 10px 0;padding:11px 13px;
  font:600 13px/1.5 var(--ui);color:var(--green-tx);margin:2px 0 12px
}
.qmedal{
  width:54px;height:54px;border-radius:50%;background:var(--green-bg);
  border:1px solid var(--hair);display:flex;align-items:center;justify-content:center;
  margin:2px auto 12px;font-size:24px;color:var(--green)
}
.qtimer{text-align:center;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);margin-bottom:12px}
.qtimer b{display:block;font:800 38px/1 var(--ui);letter-spacing:-.04em}
.qtimer span{font:600 12px/1.4 var(--ui);color:var(--t3);margin-top:6px;display:block}

/* онбординг: шаг назад и свои пункты */
.onb-nav{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.onb-back{
  flex:none;width:32px;height:32px;border-radius:11px;display:flex;
  align-items:center;justify-content:center;color:var(--t2);background:var(--bg2)
}
.onb-back svg{width:18px;height:18px}
.onb-back:active{background:var(--line)}
.onb-back.ghost{background:none;pointer-events:none}
.onb-nav .onb-dots{flex:1;margin:0;justify-content:center}

.onb-chip.own{padding-right:10px}
.onb-add{display:flex;gap:8px;margin-top:9px}
.onb-add input{
  flex:1;min-width:0;height:42px;padding:0 14px;border-radius:12px;
  background:var(--bg2);border:1px solid var(--line);
  font:500 14px/1 var(--ui);color:var(--t1);-webkit-appearance:none
}
.onb-add input:focus{outline:none;border-color:#c9c4b8;background:var(--surface)}
.onb-add button{
  flex:none;height:42px;padding:0 16px;border-radius:12px;
  background:var(--t1);color:var(--surface);font:700 13.5px/1 var(--ui)
}
.onb-add button:active{transform:scale(.97)}
.cbtn{
  flex:none;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;color:var(--t3)
}
.cbtn svg{width:20px;height:20px}
.cbtn:active{background:var(--bg2)}
.cbtn.rec{color:#fff;background:#b0503c;animation:rec 1.2s infinite}
@keyframes rec{0%,100%{opacity:1}50%{opacity:.6}}
.csend{
  flex:none;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;color:var(--on-acc);background:linear-gradient(140deg,#5d7a92 0%,#42596b 100%);
  box-shadow:0 6px 14px -8px rgba(40,60,78,.95)
}
.csend svg{width:19px;height:19px}
.csend:active{transform:scale(.94)}

/* витрина платного раздела */
.aitop{display:flex;align-items:flex-start;gap:13px}
.aimark.sm{width:44px;height:44px;border-radius:14px;margin:0;flex:none}
.aimark.sm svg{width:22px;height:22px}
.aititle.sm{font-size:21px;margin-top:2px}
.aitop .aisub{margin-top:6px;font-size:12.5px}

/* покупка */
.pricebox{
  background:var(--bg2);border:1px solid var(--line);border-radius:16px;padding:15px 16px
}
.pricebox b{display:block;font:800 20px/1.1 var(--ui);letter-spacing:-.02em}
.pricebox span{display:block;font:500 12px var(--ui);color:var(--t3);margin-top:5px}
.inclrow{display:flex;align-items:flex-start;gap:10px;padding:8px 0}
.inclrow .tick{flex:none;margin-top:1px}
.inclrow b{font:500 13px/1.4 var(--ui)}

/* подписка ещё не продаётся: цены нет, пока её не прислал Google Play */
.soonbox{background:var(--bg2);border:1px dashed var(--line-btn);border-radius:16px;padding:14px 16px}
.soonbox b{display:block;font:700 15px/1.2 var(--ui)}
.soonbox span{display:block;font:500 12px/1.45 var(--ui);color:var(--t3);margin-top:4px}

/* подписка уже действует */
.okbox{background:var(--green-bg);border:1px solid var(--hair);border-radius:16px;padding:14px 16px}
.okbox b{display:block;font:700 14px/1.2 var(--ui);color:var(--green-tx)}
.okbox span{display:block;font:500 12px/1.45 var(--ui);color:var(--green-tx);margin-top:4px;opacity:.85}

/* согласие перед помощником */
.inlink{font:inherit;color:inherit;text-decoration:underline;padding:0;display:inline}
.consent-note{margin:12px 4px 0;font:500 11.5px/1.5 var(--ui);color:var(--t3);text-align:center}

/* подпись о сервисе ИИ над полем ввода */
.ai-disc{
  flex:none;padding:5px 16px 6px;text-align:center;background:var(--bg);
  font:500 10.5px/1.4 var(--ui);color:var(--t3)
}
.ai-disc button{font:600 10.5px/1.4 var(--ui);color:var(--t2);text-decoration:underline;padding:0}

/* одноразовый код входа */
.bigcode{
  margin:4px 0 14px;padding:16px;border-radius:16px;text-align:center;
  background:var(--bg2);border:1px solid var(--line);
  font:700 28px/1 var(--mono);letter-spacing:.12em;color:var(--t1);user-select:all
}

/* жалоба на ответ помощника */
.bub-report{
  align-self:flex-start;margin:-3px 0 2px 6px;padding:2px 0;
  font:600 11px var(--ui);color:var(--t3)
}
.bub-report.done{color:var(--t4)}

.aisect{
  font:600 10.5px var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--t3);
  margin:24px 0 10px
}
.aicap{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-soft)}
.aicap-ic{width:22px;height:22px;flex:none;display:block;margin-top:1px}
.aicap b{display:block;font:700 13.5px/1.2 var(--ui)}
.aicap span{display:block;font:500 12px/1.45 var(--ui);color:var(--t3);margin-top:4px}

.aiway{
  display:flex;gap:12px;background:var(--surface);border:1px solid var(--line);
  border-radius:14px;padding:12px 13px;margin-bottom:8px
}
.aiway-ic{
  width:34px;height:34px;flex:none;border-radius:11px;background:var(--bg2);
  border:1px solid var(--line);color:var(--t2);padding:7px
}
.aiway b{display:block;font:700 13px/1.2 var(--ui)}
.aiway span{display:block;font:500 12px/1.45 var(--ui);color:var(--t3);margin-top:4px}

.ainote{
  margin-top:20px;background:var(--green-bg);border:1px solid var(--hair);border-radius:16px;
  padding:13px 15px;font:500 12px/1.5 var(--ui);color:var(--green-tx)
}
.ainote b{font-weight:700}

/* обучение: одно скруглённое окно вокруг элемента, всё остальное
   затемнено его тенью; прозрачные полосы по краям ловят касания мимо */
.tour{position:absolute;inset:0;z-index:45;opacity:0;transition:opacity .2s ease}
.tour.on{opacity:1}
.tour:focus{outline:none}
.tour:not(.on){pointer-events:none}
.tour.full{background:rgba(20,19,16,.52)}
.tv{position:absolute;display:block}
.tour-ring{
  position:absolute;display:block;pointer-events:none;border-radius:14px;
  box-shadow:0 0 0 2px rgba(255,255,255,.96),0 0 0 6px rgba(91,110,82,.5),0 0 0 200vmax rgba(20,19,16,.52);
  animation:ringin .3s cubic-bezier(.2,.8,.3,1)
}
.tour.full .tour-ring{display:none}
@keyframes ringin{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:none}}
.tour-card{
  position:absolute;left:12px;top:40%;width:calc(100% - 24px);max-width:360px;padding:14px 16px 14px;
  background:var(--surface);border-radius:20px;box-shadow:0 18px 50px -16px rgba(0,0,0,.5);
  animation:tourin .28s cubic-bezier(.2,.8,.3,1)
}
@keyframes tourin{from{transform:translateY(10px);opacity:0}to{transform:none;opacity:1}}
.tour-arrow{position:absolute;display:none;width:14px;height:14px;background:var(--surface);transform:rotate(45deg);border-radius:3px}
.tour-arrow.up{display:block;top:-6px}
.tour-arrow.down{display:block;bottom:-6px}
.tour-head{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px}
.tour-n{font:600 11.5px var(--mono);color:var(--t3)}
.tour-close{flex:none;padding:6px 0 6px 12px;font:600 12.5px var(--ui);color:var(--t3)}
.tour-t{position:relative;display:block;margin-top:2px;font:800 17px/1.25 var(--ui);letter-spacing:-.02em}
.tour-card p{position:relative;margin:6px 0 0;font:500 13.5px/1.5 var(--ui);color:var(--t2)}
.tour-foot{position:relative;display:flex;justify-content:flex-end;margin-top:14px}
.tour-foot .btn{min-width:124px;height:42px;border-radius:13px}
/* «Профиль → Обучение» */
.learn-row{width:100%;text-align:left}
.learn-st{flex:none;padding:4px 9px;border-radius:99px;font:700 10.5px var(--ui);color:var(--green-tx);background:var(--green-bg)}
.learn-st.ok{color:var(--t3);background:var(--bg2)}

/* тёплая карточка за закрытый день */
.praise{
  position:absolute;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;
  background:rgba(30,28,24,.35);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  animation:prfade .3s ease;padding:26px
}
.praise.out{opacity:0;transition:opacity .3s ease}
@keyframes prfade{from{opacity:0}}
.praise-card{
  position:relative;overflow:hidden;width:100%;max-width:330px;text-align:center;
  padding:34px 24px 22px;border-radius:24px;
  background:linear-gradient(165deg,#f7f9f4 0%,#eef2e8 55%,#e7eee4 100%);
  box-shadow:0 24px 60px -20px rgba(40,50,35,.55),inset 0 1px 0 rgba(255,255,255,.85);
  animation:prcard .45s cubic-bezier(.2,.9,.3,1.15)
}
@keyframes prcard{from{transform:translateY(26px) scale(.94);opacity:0}}
.praise-glow{
  position:absolute;top:-70px;left:50%;width:220px;height:150px;transform:translateX(-50%);
  background:radial-gradient(ellipse at center,rgba(139,163,124,.35) 0%,transparent 70%);
  pointer-events:none
}
.praise-card > i{
  position:absolute;top:100%;width:5px;height:5px;border-radius:50%;
  background:#a9bd97;opacity:0;pointer-events:none;
  animation:prdot 3.6s ease-in infinite
}
@keyframes prdot{
  0%{transform:translateY(0);opacity:0}
  12%{opacity:.7}
  85%{opacity:.15}
  100%{transform:translateY(-340px);opacity:0}
}
.praise-card b{display:block;font:800 21px/1.15 var(--ui);letter-spacing:-.02em;color:#3d4a34}
.praise-card p{margin:11px 0 0;font:500 13.5px/1.55 var(--ui);color:#54604b}
.praise-btn{
  margin-top:18px;padding:11px 30px;border-radius:99px;background:#5b6e52;color:#fff;
  font:700 13.5px var(--ui);box-shadow:0 10px 22px -10px rgba(70,90,60,.8)
}



/* ============================================================
   АНКЕТА ПЕРВОГО ЗАПУСКА
   Коротко: приветствие → цели и режим → утро → план → помощник.
   Анимация входа идёт только при смене экрана (.enter ставит рендер),
   выбор пунктов её не перезапускает.
   ============================================================ */
.onb{
  flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;
  padding:0 20px;background:var(--bg)
}
.onb.enter > *{animation:onbin .45s cubic-bezier(.22,.8,.3,1) both}
.onb.enter > :nth-child(2){animation-delay:.05s}
.onb.enter > :nth-child(3){animation-delay:.1s}
.onb.enter > :nth-child(4){animation-delay:.14s}
.onb.enter > :nth-child(5){animation-delay:.18s}
@keyframes onbin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes onbpop{0%{transform:scale(.4)}60%{transform:scale(1.2)}100%{transform:scale(1)}}

/* ---- приветствие ---- */
.onb-s0{padding-top:var(--safe-top)}
.onbw-art{position:relative;flex:1 1 0;min-height:210px;margin:6px -20px 0}
.onbw-glow{
  position:absolute;left:50%;top:54%;width:min(118vw,560px);aspect-ratio:1;border-radius:50%;
  transform:translate(-50%,-50%);
  background:radial-gradient(closest-side,rgba(91,110,82,.17),rgba(91,110,82,.06) 58%,rgba(91,110,82,0) 74%)
}
.onbw-art img{
  position:absolute;inset:4% 7% 0;width:86%;height:96%;object-fit:contain;
  animation:onbfloat 7s ease-in-out infinite
}
.onb.enter .onbw-art img{animation:onbrise .8s cubic-bezier(.22,.8,.3,1) both,onbfloat 7s ease-in-out .8s infinite}
@keyframes onbrise{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
@keyframes onbfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
.onbw-text{text-align:center;padding:6px 4px 0}
/* Знак «Зарок» — вариант 1: само слово, без иконки и рамки. Unbounded 800,
   прописные, разрядка .18em. Разрядка добавляет место и после последней
   буквы — убираем его отрицательным отступом, иначе при центровке знак
   кажется сдвинутым влево. Шрифт свой (public/fonts): прорисовка без
   подмены — короткое слово лучше подождать миг, чем мигнуть другим шрифтом */
@font-face{font-family:ZarokDisplay;src:url('public/fonts/unbounded-800-cyrillic.woff2') format('woff2');font-weight:800;font-display:block;unicode-range:U+0400-052F,U+2DE0-2DFF,U+A640-A69F}
@font-face{font-family:ZarokDisplay;src:url('public/fonts/unbounded-800-latin.woff2') format('woff2');font-weight:800;font-display:block;unicode-range:U+0000-024F}
.brand{
  display:inline-block;font-family:ZarokDisplay,var(--ui);font-weight:800;font-size:13px;line-height:1;
  letter-spacing:.26em;text-transform:uppercase;color:#1b1a17;white-space:nowrap;margin-right:-.26em;
  -webkit-font-smoothing:antialiased
}
.brand--head{font-size:18px;letter-spacing:.18em;margin-right:-.18em}
.brand--inv{color:#fff}
/* знак над заголовком экрана: по центру, 30 px воздуха до заголовка */
.head-plain{margin:8px 0 30px;text-align:center}
.onb .head-plain + h1{margin-top:0}
.onbw-text h1{margin:16px auto 0;max-width:330px;font:800 29px/1.12 var(--ui);letter-spacing:-.035em;text-wrap:balance}
.onbw-text p{margin:12px auto 0;max-width:310px;font:500 14.5px/1.55 var(--ui);color:var(--t2);text-wrap:balance}

/* ---- шапка шага: назад, полоска прогресса, заголовок ---- */
.onb-head{padding:calc(14px + var(--safe-top)) 0 2px}
.onb-nav{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.onb-back{
  flex:none;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:var(--surface);border:1px solid var(--line);color:var(--t1)
}
.onb-back svg{width:18px;height:18px}
.onb-back.ghost{visibility:hidden}
.onb-prog{flex:1;display:flex;gap:5px}
.onb-prog i{position:relative;flex:1;height:5px;border-radius:99px;background:#e6e3dc;overflow:hidden}
.onb-prog i.done{background:var(--green)}
.onb-prog i.on::after{content:'';position:absolute;inset:0;border-radius:99px;background:var(--green);transform-origin:left}
.onb.enter .onb-prog i.on::after{animation:onbfill .55s cubic-bezier(.22,.8,.3,1) .12s both}
@keyframes onbfill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.onb-count{flex:none;min-width:28px;text-align:right;font:600 12px var(--mono);color:var(--t3)}
.onb-head h1{margin:0;font:800 26px/1.15 var(--ui);letter-spacing:-.03em;text-wrap:balance}
.onb-head p{margin:8px 0 0;font:500 14px/1.5 var(--ui);color:var(--t3);text-wrap:balance}

/* ---- цели ---- */
.onb-goals{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}
.onb-goal{
  position:relative;display:flex;align-items:center;gap:11px;min-height:64px;padding:12px;
  border-radius:18px;background:var(--surface);border:1.5px solid var(--line);
  transition:border-color .18s,background .18s,transform .12s
}
.onb.enter .onb-goal{animation:onbin .4s cubic-bezier(.22,.8,.3,1) backwards}
.onb-goal:active{transform:scale(.97)}
.og-ic{
  flex:none;width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:var(--bg2);color:var(--t2);transition:background .18s,color .18s
}
.og-ic svg{width:20px;height:20px}
.onb-goal b{font:700 14px/1.2 var(--ui);letter-spacing:-.01em}
.og-chk{
  position:absolute;top:7px;right:7px;width:19px;height:19px;border-radius:50%;
  display:none;align-items:center;justify-content:center;background:var(--green);color:#fff
}
.og-chk svg{width:12px;height:12px;stroke-width:3}
.onb-goal.on{border-color:var(--green);background:#f4f7f1}
.onb-goal.on .og-ic{background:var(--green);color:#fff}
.onb-goal.on .og-chk{display:flex}
.onb-goal.just .og-chk,.onb-chip.just i{animation:onbpop .32s cubic-bezier(.3,1.6,.4,1)}

/* ---- подъём и тренировки ---- */
.onb-set{margin-top:14px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:2px 14px}
.onb-set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:62px;padding:10px 0}
.onb-set-row + .onb-set-row{border-top:1px solid var(--line-soft)}
.onb-set-row > span{min-width:0}
.onb-set-row b{display:block;font:700 14px var(--ui)}
.onb-set-row em{display:block;margin-top:2px;font:500 12px var(--ui);color:var(--t3);font-style:normal}
.onb-time{
  flex:none;width:88px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--bg2);
  text-align:center;font:700 16px var(--mono);color:var(--t1);cursor:pointer;caret-color:transparent
}
.onb-time:focus{outline:none;border-color:var(--green)}
.onb-seg{flex:none;display:flex;gap:2px;padding:3px;border-radius:12px;background:var(--bg2)}
.onb-seg button{
  min-width:46px;height:34px;padding:0 10px;border-radius:9px;text-align:center;
  font:700 13px var(--ui);color:var(--t2);transition:background .15s,color .15s
}
.onb-seg button.on{background:var(--surface);color:var(--t1);box-shadow:0 1px 3px rgba(27,26,23,.14)}

/* ---- утро: добавки и подготовка ---- */
.onb-group{margin-top:18px}
.onb-group h3{display:flex;align-items:center;gap:9px;margin:0 0 10px;font:700 14px var(--ui)}
.og-ic.sm{width:30px;height:30px;border-radius:10px;background:var(--green-bg);color:var(--green)}
.og-ic.sm svg{width:17px;height:17px}
.onb-chips{display:flex;flex-wrap:wrap;gap:8px}
.onb-chip{
  display:inline-flex;align-items:center;gap:5px;height:40px;padding:0 15px;border-radius:99px;
  background:var(--surface);border:1.5px solid var(--line);font:600 13.5px var(--ui);color:var(--t2);
  transition:border-color .15s,background .15s,color .15s
}
.onb-chip i{display:none;width:16px;height:16px}
.onb-chip i svg{width:16px;height:16px;stroke-width:2.6}
.onb-chip.on{border-color:var(--green);background:var(--green-bg);color:var(--green-tx);padding-left:11px}
.onb-chip.on i{display:inline-flex}
.onb-chip.own{padding-left:15px}
.onb-chip.own u{text-decoration:none;opacity:.55;margin-left:2px}
.onb-add{display:flex;gap:8px;margin-top:10px}
.onb-add input{
  flex:1;min-width:0;height:44px;padding:0 14px;border-radius:14px;
  border:1px solid var(--line);background:var(--surface);font:500 14px var(--ui)
}
.onb-add input:focus{outline:none;border-color:var(--green)}
.onb-add button{flex:none;width:44px;height:44px;border-radius:14px;background:var(--t1);color:#fff;font:500 22px/1 var(--ui);text-align:center}

/* ---- готовый план ---- */
.onb-plan{
  margin-top:18px;padding:4px 16px;border-radius:20px;background:var(--surface);border:1px solid var(--line);
  box-shadow:0 18px 40px -32px rgba(40,50,30,.4)
}
.onb-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-soft)}
.onb.enter .onb-row{animation:chipin .5s cubic-bezier(.25,.9,.35,1.15) backwards}
.onb-row:last-child{border-bottom:0}
.onb-time2{flex:none;width:44px;font:600 12px var(--mono);color:var(--t3)}
.onb-row i{flex:none;width:9px;height:9px;border-radius:50%}
.onb-body{flex:1;min-width:0}
.onb-body b{display:block;font:700 14.5px/1.25 var(--ui)}
.onb-body em{display:block;margin-top:2px;font:500 12px/1.35 var(--ui);color:var(--t3);font-style:normal}
.onb-note{margin:12px 2px 0;font:500 12px/1.5 var(--ui);color:var(--t3)}
.onb-note.c{text-align:center}

/* ---- помощник ---- */
.onbp-card{
  margin-top:18px;padding:18px;border-radius:22px;color:#fff;
  background:linear-gradient(145deg,#557f69 0%,#3e6653 55%,#33594a 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 22px 40px -26px rgba(38,72,55,.9)
}
.onbp-ic{display:flex;width:40px;height:40px;border-radius:13px;align-items:center;justify-content:center;background:rgba(255,255,255,.16)}
.onbp-ic svg{width:22px;height:22px}
.onbp-card b{display:block;margin-top:12px;font:800 18px var(--ui);letter-spacing:-.02em}
.onbp-card p{margin:6px 0 0;font:500 13px/1.55 var(--ui);color:rgba(255,255,255,.88)}
.onb-prem{margin-top:6px}
.onb-feat{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-soft)}
.onb-feat:last-child{border-bottom:0}
.onb-feat > b{flex:none;width:36px;height:36px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--green-bg);color:var(--green)}
.onb-feat > b svg{width:19px;height:19px}
.onb-feat i{display:block;font:700 14px var(--ui);font-style:normal}
.onb-feat span{display:block;margin-top:2px;font:500 12px/1.4 var(--ui);color:var(--t3)}
.onb-plans{display:flex;gap:9px;margin-top:16px}
.onb-price{
  position:relative;flex:1;text-align:center;padding:16px 8px 13px;border-radius:16px;
  background:var(--surface);border:1.5px solid var(--line)
}
.onb-price.hit{border-color:var(--green)}
.onb-price u{
  position:absolute;top:-8px;left:50%;transform:translateX(-50%);text-decoration:none;
  font:700 9px var(--mono);letter-spacing:.05em;text-transform:uppercase;color:#fff;
  background:var(--green);border-radius:99px;padding:2px 8px
}
.onb-price b{display:block;font:800 19px var(--ui);letter-spacing:-.02em}
.onb-price span{display:block;font:500 11px/1.35 var(--ui);color:var(--t3);margin-top:3px}
/* старая цена рядом с вводной */
.onb-price s,.pricebox s{font-weight:600;font-size:14px;color:var(--t3);margin-right:3px}
.pricebox s{font-size:13px}

/* ---- низ: главная кнопка всегда на виду ---- */
.onb-ft{
  position:sticky;bottom:0;z-index:2;margin:auto -20px 0;
  padding:22px 20px calc(16px + var(--safe-bottom));
  background:linear-gradient(to top,var(--bg) 76%,rgba(251,250,248,0))
}
.onb-cta{
  display:block;width:100%;height:56px;border-radius:18px;text-align:center;color:#fff;
  font:700 16px var(--ui);letter-spacing:-.01em;
  background:linear-gradient(145deg,#557f69 0%,#3e6653 55%,#33594a 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 12px 24px -14px rgba(38,72,55,.9);
  transition:transform .12s,opacity .2s
}
.onb-cta:active{transform:scale(.985)}
.onb-cta[disabled]{opacity:.38;box-shadow:none;pointer-events:none}
.onb-skip{display:block;width:100%;padding:14px 0 4px;font:600 13.5px var(--ui);color:var(--t3);text-align:center}

@media(max-height:700px){
  .onbw-text h1{font-size:25px;margin-top:12px}
  .onbw-text p{font-size:13.5px}
  .onb-head h1{font-size:23px}
  .onb-nav{margin-bottom:16px}
  .onb-goal{min-height:56px;padding:9px 10px}
  .og-ic{width:34px;height:34px}
}
@media(prefers-reduced-motion:reduce){
  .onb *,.onb *::before,.onb *::after{animation:none !important;transition:none !important}
}

/* пустой день: сообщение и кнопки одним центрированным блоком */
.dayempty{padding:44px 22px 20px;text-align:center}
.dayempty p{margin:0 auto 20px;max-width:300px;font:500 13px/1.55 var(--ui);color:var(--t3)}
.dayempty .addpair{max-width:340px;margin:0 auto}

/* контекстное предложение */
.promobar{
  display:flex;gap:10px;margin:14px 20px 0;padding:13px 14px;border-radius:16px;
  background:linear-gradient(160deg,#f1f4f6 0%,#e9eef1 100%);border:1px solid #dde4e8;
  animation:barrise .45s cubic-bezier(.25,.9,.35,1.1)
}
.list .promobar{margin:0 0 2px}
.promo-body{flex:1;min-width:0}
.promo-body b{display:block;font:700 13.5px var(--ui);color:#3d4f5e}
.promo-body span{display:block;font:500 12px/1.45 var(--ui);color:#5b6b77;margin-top:3px}
.promo-go{display:inline-block;margin-top:8px;font:700 12.5px var(--ui);color:#3d5468}
.promo-x{flex:none;width:26px;height:26px;border-radius:50%;color:#8b98a2;font:600 15px/1 var(--ui)}

/* цены */
.planrow{display:flex;gap:9px}
.planrow .pricebox{flex:1;text-align:center;position:relative}
.pricebox.hit{border-color:#5d7a92}
.pricebox u{
  position:absolute;top:-8px;left:50%;transform:translateX(-50%);text-decoration:none;
  font:700 9px var(--mono);letter-spacing:.05em;text-transform:uppercase;color:#fff;
  background:#5d7a92;border-radius:99px;padding:2px 8px
}









.planrow .pricebox.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green) inset}



/* ---------- центральная кнопка помощника: переливающийся шар ----------
   По мотивам лоадера andrew-manzyk с Uiverse. Размытые треугольники
   вращаются внутри маски, contrast(15) сплавляет их в живую каплю,
   hue-rotate гоняет перелив по кнопке вместе с её свечением. */
.tab-ai{
  flex:none;width:54px;height:54px;margin:-18px 4px 0;border-radius:99px;
  background:#2b2318;color:#fff;position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;align-self:flex-start;
  box-shadow:0 10px 22px -10px rgba(190,74,29,.8), 0 0 18px -4px rgba(255,191,72,.45);
  border:3px solid var(--surface);
  animation:aiHue 9s ease-in-out infinite
}
.tab-ai:active{transform:scale(.94)}
.tab-ai.on{box-shadow:0 0 0 3px #f0e2c4,0 10px 22px -10px rgba(190,74,29,.8)}

.aiblob{
  position:absolute;left:50%;top:50%;width:100px;height:100px;
  transform:translate(-50%,-50%) scale(.56);pointer-events:none
}
.aiblob svg{position:absolute;width:100px;height:100px}
.aiblob-box{
  display:block;width:100px;height:100px;border-radius:50%;
  background:linear-gradient(180deg,#ffbf48 30%,#be4a1d 70%);
  mask:url(#aiclip);-webkit-mask:url(#aiclip)
}
/* Контраст постоянный, без пульса: пульс дёргал форму. Вращения
   медленные, капля лениво перетекает, а не крутится. */
#aiclip{filter:contrast(12)}
#aiclip polygon{filter:blur(7px)}
/* первый ребёнок — чёрный фон маски, треугольники идут со второго */
#aiclip polygon:nth-child(2){transform-origin:50% 50%;animation:aiRot 7s linear infinite reverse}
#aiclip polygon:nth-child(3){transform-origin:50% 60%;animation:aiRot 7s linear infinite;animation-delay:-2.3s}
#aiclip polygon:nth-child(4){transform-origin:40% 40%;animation:aiRot 7s linear infinite reverse}
#aiclip polygon:nth-child(5){transform-origin:40% 40%;animation:aiRot 7s linear infinite reverse;animation-delay:-3.5s}
#aiclip polygon:nth-child(6){transform-origin:60% 40%;animation:aiRot 7s linear infinite}
#aiclip polygon:nth-child(7){transform-origin:60% 40%;animation:aiRot 7s linear infinite;animation-delay:-4.6s}

.tab-ai-ico{position:relative;z-index:1;display:flex;filter:drop-shadow(0 1px 2px rgba(60,30,0,.4))}
.tab-ai-ico svg{width:24px;height:24px}

@keyframes aiRot{to{transform:rotate(360deg)}}
/* перелив в пределах своей гаммы: янтарь в терракоту и назад, без розового */
@keyframes aiHue{
  0%,100%{filter:hue-rotate(0deg)}
  50%{filter:hue-rotate(-22deg)}
}

@media (prefers-reduced-motion:reduce){
  .tab-ai,#aiclip,#aiclip polygon{animation:none}
}

/* ============================================================
   ШТОРКИ
   ============================================================ */
#overlay{position:absolute;inset:0;pointer-events:none;z-index:30}
.scrim{position:absolute;inset:0;background:var(--scrim);opacity:0;transition:opacity .2s ease;pointer-events:auto}
.scrim.in{opacity:1}
/* закрывающаяся шторка ещё видна, но нажатий уже не принимает:
   второе быстрое касание «Сохранить» не должно сработать повторно */
.scrim:not(.in),.sheet:not(.in){pointer-events:none}
.sheet{
  position:absolute;left:0;right:0;bottom:0;max-height:93%;
  background:var(--surface);border-radius:24px 24px 0 0;
  box-shadow:0 -10px 40px -12px rgba(0,0,0,.35);
  display:flex;flex-direction:column;pointer-events:auto;
  transform:translateY(100%);transition:transform .25s cubic-bezier(.2,.8,.3,1)
}
.sheet.in{transform:translateY(0)}
.handle{width:38px;height:4px;border-radius:99px;background:var(--line-btn);margin:9px auto 4px;flex:none}
.sheet-h{padding:6px 20px 12px;border-bottom:1px solid var(--line);flex:none;display:flex;align-items:flex-start;gap:10px}
.sheet-h h2{margin:0;font:700 19px/1.15 var(--ui);letter-spacing:-.02em;flex:1;text-transform:lowercase}
.sheet-h h2.plain{text-transform:none}
.sheet-h .sub{display:block;font:500 11.5px var(--mono);color:var(--t3);margin-top:4px;text-transform:none}
.sheet-body{overflow-y:auto;padding:14px 20px 6px;flex:1;overscroll-behavior:contain}
.sheet-foot{
  flex:none;display:flex;gap:8px;
  padding:12px 20px calc(14px + var(--safe-bottom));
  border-top:1px solid var(--line);background:var(--surface)
}

/* шапка шторки дня */
.sheet-hero{padding:4px 20px 14px;border-bottom:1px solid var(--line);flex:none}
.hero-top{display:flex;align-items:baseline;gap:9px}
.hero-date{font:700 24px/1.1 var(--ui);letter-spacing:-.025em}
.hero-year{font:500 11px var(--mono);color:var(--t3)}
.hero-stats{display:flex;align-items:flex-end;gap:20px;margin-top:13px}
.hstat b{display:block;font:700 18px/1 var(--ui);letter-spacing:-.02em}
.hstat span{display:block;font:500 10px var(--ui);color:var(--t3);margin-top:3px}
.hstat-edit{
  margin-left:auto;font:600 11.5px var(--ui);color:var(--t3);
  border:1px solid var(--line);border-radius:9px;padding:6px 10px
}
.hero-track{margin-top:12px;display:block}

/* строки плана */
.plan-row{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--line-soft);align-items:flex-start;width:100%}
.plan-row:last-child{border-bottom:0}
.plan-time{width:44px;flex:none;font:600 12px var(--mono);color:var(--t2);padding-top:2px}
.plan-body{flex:1;min-width:0}
.plan-body b{display:block;font:700 13.5px/1.2 var(--ui)}
.plan-body span{display:block;font:500 12px/1.4 var(--ui);color:var(--t3);margin-top:3px}
.plan-edit{
  flex:none;font:600 11.5px var(--ui);color:var(--t3);border:1px solid var(--line);
  border-radius:8px;padding:5px 9px;background:var(--surface);margin-left:auto
}
.plan-row.done .plan-body b{text-decoration:line-through;color:var(--t3)}
.sect{
  font:600 10.5px var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--t3);
  margin:16px 0 6px;display:flex;align-items:center;gap:8px
}
.sect .plan-edit{margin-left:auto}
.sect-note{margin-left:auto;font:500 10.5px var(--mono);color:var(--t4);text-transform:none;letter-spacing:0}

.menurow{
  display:block;width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:14px;margin-bottom:9px;
  background:var(--surface)
}
.menurow b{display:block;font:700 13.5px var(--ui)}
.menurow span{display:block;font:500 11.5px var(--ui);color:var(--t3);margin-top:3px}
.menurow.warn-row{border-color:var(--danger-bd);background:var(--danger-bg)}
.menurow.warn-row b{color:var(--danger)}

/* формы */
.field{margin-bottom:13px}
.field > label{
  display:block;font:600 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;
  color:var(--t3);margin-bottom:6px
}
.input{
  width:100%;padding:11px 12px;border:1px solid var(--line-btn);border-radius:12px;background:var(--surface);
  font:500 14px var(--ui);color:var(--t1);outline:none
}
.input:focus{border-color:var(--t2)}
input.input[type=time],input.input[type=date],input.input[type=number]{font-family:var(--mono);font-weight:500}
.row2{display:flex;gap:9px}
.row2 > *{flex:1;min-width:0}
.seg{display:flex;gap:6px;flex-wrap:wrap}
.seg button{
  flex:1;min-width:70px;padding:11px 6px;border-radius:12px;border:1px solid var(--line-btn);
  background:var(--surface);font:600 12px var(--ui);color:var(--t2);text-align:center
}
.seg button.on{background:var(--t1);border-color:var(--t1);color:var(--on-t1)}
.seg.small button{padding:9px 4px;flex:1 1 0;min-width:0;font-family:var(--mono);font-size:11.5px}
/* категории события: чип по ширине слова, ряд тянется до края — длинное слово не вылезает */
.seg.kinds button{flex:1 1 auto;min-width:0;padding:11px 12px;white-space:nowrap}
.editrow{display:flex;gap:8px;margin-bottom:8px;align-items:center}
.editrow .input{flex:1}
/* подсказка в поле ввода — приглушённый цвет темы, а не серый браузера: на тёмных темах он не читался */
.input::placeholder,textarea::placeholder,input::placeholder{color:var(--t3);opacity:1}
.editrow .input.amt{flex:0 0 84px}
.rownum{
  width:20px;flex:none;font:600 12px var(--mono);color:var(--t3);text-align:center
}
.delrow{
  width:34px;height:34px;flex:none;border-radius:10px;border:1px solid var(--line);
  color:var(--t3);font-size:15px;display:flex;align-items:center;justify-content:center
}
.addrow{
  width:100%;padding:10px;border:1px dashed var(--dash);border-radius:12px;
  font:600 12px var(--ui);color:var(--t2);margin-top:2px;text-align:center
}
.phasebox{border:1px solid var(--line);border-radius:14px;padding:11px;margin-bottom:9px}
.phasebox .editrow:last-child{margin-bottom:0}
.stepper{
  display:flex;align-items:center;border:1px solid var(--line-btn);border-radius:12px;overflow:hidden;height:42px
}
.stepper button{flex:none;width:40px;height:100%;font:600 17px var(--ui);color:var(--t2);text-align:center;
  display:flex;align-items:center;justify-content:center}
.stepper b{flex:1;text-align:center;font:700 15px var(--mono)}

.catgrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.catbtn{
  display:flex;align-items:center;gap:7px;padding:10px 10px;border-radius:12px;border:1px solid;
  font:600 12px var(--ui)
}
.catbtn i{width:8px;height:8px;border-radius:99px;flex:none}

.palette{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.swatch{height:52px;border-radius:14px;border:2px solid transparent}
.swatch.on{border-color:var(--t1);box-shadow:0 0 0 2px var(--surface) inset}

.btn{
  flex:1;padding:13px 12px;border-radius:13px;font:600 13px var(--ui);text-align:center;
  border:1px solid var(--line-btn);background:var(--surface);color:var(--t2)
}
.btn.dark{background:var(--t1);border-color:var(--t1);color:var(--on-t1)}
.btn.green{background:var(--green);border-color:var(--green);color:var(--on-acc)}
.btn.danger{color:var(--danger);border-color:var(--danger-bd);background:var(--danger-bg);flex:none;padding:13px 15px}
.btn:active{opacity:.85}

/* AI: вложения и план */
.ta{resize:vertical;min-height:110px;line-height:1.45;font-size:13.5px}
.filelist{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.filechip{
  display:inline-flex;align-items:center;gap:6px;font:600 11px var(--ui);
  background:var(--bg2);border:1px solid var(--line);border-radius:9px;padding:6px 8px
}
.filechip button{font:600 13px var(--ui);color:var(--t3);line-height:1}

.oprow{
  display:flex;align-items:flex-start;gap:11px;width:100%;padding:12px 13px;
  border:1px solid var(--line);border-radius:14px;margin-bottom:8px;background:var(--surface)
}
.oprow.on{border-color:var(--hair);background:var(--surface)}
/* видео */
.playbtn{
  flex:none;position:relative;width:34px;height:34px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;color:var(--t2);
  background:var(--surface);border:1px solid var(--line-btn)
}
.playbtn svg{width:19px;height:19px}
.playbtn:active{transform:scale(.94)}
.playbtn u{
  position:absolute;top:-4px;right:-4px;min-width:15px;height:15px;padding:0 3px;
  border-radius:99px;background:var(--t1);color:var(--on-t1);text-decoration:none;
  font:700 9px/15px var(--mono);text-align:center
}
.rit-line{display:flex;align-items:center;gap:8px}
.rit-line .rit-row{flex:1;min-width:0;border-bottom:0}
.rit-line{border-bottom:1px solid var(--line-soft)}

.vid-body{padding-bottom:6px}
.vidbox{
  position:relative;width:100%;padding-top:56.25%;border-radius:14px;overflow:hidden;
  background:#15140f;border:1px solid var(--line)
}
.vidbox iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vidplug{
  display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;
  padding:28px 20px;border-radius:14px;background:var(--bg2);border:1px solid var(--line)
}
.vidplug svg{width:34px;height:34px;color:var(--t3)}
.vidplug b{font:700 14px var(--ui)}
.vidplug span{font:500 12px/1.45 var(--ui);color:var(--t3);max-width:280px}
.vidurl{
  margin-top:12px;font:500 10.5px/1.4 var(--mono);color:var(--t4);
  word-break:break-all;text-align:center
}
/* справка и правовые страницы */
.legal{font:500 13px/1.6 var(--ui);color:var(--t1);padding:2px 0 6px}
.legal b{font-weight:700}
.legal-h{font-size:14.5px;letter-spacing:-.01em}

.confirmrow.calm{background:var(--bg2);border-color:var(--line)}
.confirmrow.calm b{color:var(--t1)}
.confirmrow.calm.on{background:var(--green-bg);border-color:var(--hair)}

.oprow.danger{border-color:var(--danger-bd);background:var(--danger-bg)}
.oprow.danger.on{border-color:var(--danger-bd);background:var(--danger-bg)}
.oprow.off{opacity:.45}
.opbody{flex:1;min-width:0}
.opbody b{display:block;font:600 13px/1.35 var(--ui)}
.opbody em{display:block;font:500 11px var(--ui);color:var(--t3);font-style:normal;margin-top:4px}
.oprow .tick{margin-top:1px}
.confirmrow{
  display:flex;align-items:center;gap:11px;width:100%;padding:12px 13px;margin-top:6px;
  border:1px solid var(--danger-bd);background:var(--danger-bg);border-radius:14px
}
.confirmrow b{font:600 12.5px var(--ui);color:var(--danger)}
.confirmrow.on{background:var(--danger-bg)}
.btn[disabled]{opacity:.45;pointer-events:none}

/* тост */
.toast{
  position:absolute;left:50%;transform:translateX(-50%) translateY(12px);
  bottom:calc(78px + var(--safe-bottom));
  background:#1b1a17f2;color:#fff;padding:11px 16px;border-radius:12px;
  font:600 12.5px var(--ui);opacity:0;transition:opacity .2s ease,transform .2s ease;
  pointer-events:none;z-index:40;max-width:80%;text-align:center
}
.toast.in{opacity:1;transform:translateX(-50%) translateY(0)}

/* окно подтверждения: выход из приложения, сброс набранного текста */
.dlg-wrap{
  position:absolute;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;
  padding:24px;background:var(--scrim);opacity:0;transition:opacity .16s ease
}
.dlg-wrap.in{opacity:1}
.dlg{
  width:100%;max-width:320px;background:var(--surface);border-radius:20px;padding:22px 20px 16px;
  box-shadow:0 18px 50px rgba(20,19,16,.22);transform:scale(.96);transition:transform .16s ease
}
.dlg-wrap.in .dlg{transform:scale(1)}
.dlg b{display:block;font:700 17px/1.35 var(--ui);color:var(--t1);letter-spacing:-.01em}
.dlg p{margin:8px 0 0;font:500 13.5px/1.55 var(--ui);color:var(--t2)}
.dlg-btns{display:flex;gap:10px;margin-top:20px}
.dlg-btns button{
  flex:1;min-height:46px;border-radius:13px;border:1px solid var(--line-btn);background:var(--surface);
  display:flex;align-items:center;justify-content:center;text-align:center;
  font:700 14px var(--ui);color:var(--t1);cursor:pointer
}
.dlg:focus{outline:none}
.dlg-btns .main{background:var(--green);border-color:var(--green);color:var(--on-acc)}
.dlg-btns .danger{background:#a4422f;border-color:#a4422f;color:#fff}
@media (prefers-reduced-motion:reduce){.dlg-wrap,.dlg{transition:none}}
/* «Нужно обновить Зарок» (js/app-update.js): поверх всего, по фону не закрывается */
.dlg-wrap.upd-gate{position:fixed;z-index:9999}
.upd-gate .upd-note{color:var(--t1)}

/* выбор даты и времени: своё окно в стиле приложения вместо системного */
[data-pick]{cursor:pointer;caret-color:transparent}
.pick-wrap{
  position:absolute;inset:0;z-index:70;display:flex;align-items:flex-end;justify-content:center;
  background:rgba(22,35,28,.32);opacity:0;transition:opacity .16s ease
}
.pick-wrap.in{opacity:1}
.pick{
  width:100%;max-width:430px;background:var(--surface);border-radius:22px 22px 0 0;
  padding:18px 18px calc(14px + var(--safe-bottom));box-shadow:0 -10px 40px rgba(22,35,28,.18);
  transform:translateY(24px);transition:transform .18s ease;font-family:var(--ui)
}
.pick-wrap.in .pick{transform:none}
.pick:focus{outline:none}
.pick-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 4px 12px}
.pick-h b{font:700 16px var(--ui);color:var(--t1)}
.pick-val{font:800 22px var(--ui);color:var(--acc-2);letter-spacing:-.01em}
.wheels{position:relative;display:flex;align-items:center;justify-content:center;gap:4px;height:220px}
.wheel-band{position:absolute;left:12px;right:12px;top:88px;height:44px;border-radius:13px;background:var(--green-bg)}
.wheel{
  position:relative;z-index:1;width:96px;height:220px;overflow-y:auto;scroll-snap-type:y mandatory;
  overscroll-behavior:contain;scrollbar-width:none;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 32%,#000 68%,transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0,#000 32%,#000 68%,transparent 100%)
}
.wheel::-webkit-scrollbar{display:none}
.wheel:focus-visible{outline:2px solid var(--acc-ring);border-radius:12px}
.wheel-pad{height:88px}
.wheel-i{
  display:block;width:100%;height:44px;scroll-snap-align:center;border:0;background:none;
  font:600 21px var(--ui);color:var(--t3);cursor:pointer;text-align:center
}
.wheel-i.on{color:var(--t1);font-weight:800}
.wheel-sep{position:relative;z-index:1;font:800 22px var(--ui);color:var(--t1)}
.pcal-h{display:flex;align-items:center;justify-content:space-between;margin:0 0 8px}
.pcal-h b{font:700 15px var(--ui);color:var(--t1)}
.pcal-h button{
  width:44px;height:44px;border-radius:13px;border:1px solid var(--line);background:var(--surface);
  font-size:22px;color:var(--t1);display:flex;align-items:center;justify-content:center;cursor:pointer
}
.pcal-dow,.pcal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
.pcal-dow span{font:650 10px var(--ui);color:var(--t3);padding:4px 0}
/* у кнопок в приложении текст слева — число в ячейке центрируем явно,
   иначе рамка выбранного дня «съезжала» с цифры */
.pcal-d{
  display:flex;align-items:center;justify-content:center;min-width:0;padding:0;text-align:center;
  height:42px;border-radius:12px;border:0;background:none;font:600 14px var(--ui);color:var(--t1);cursor:pointer
}
.pcal-d.today{box-shadow:inset 0 0 0 1.5px var(--acc-ring)}
.pcal-d.sel{
  background:linear-gradient(145deg,var(--acc-1) 0%,var(--acc-edge) 100%);color:var(--on-acc);
  box-shadow:0 4px 10px -5px rgba(38,72,55,.85)
}
.pcal-d.void{visibility:hidden}
.pick-btns{display:flex;gap:10px;margin-top:16px}
.pick-btns button{
  flex:1;min-height:48px;border-radius:13px;border:1px solid var(--line-btn);background:var(--surface);cursor:pointer;
  font:700 14px var(--ui);color:var(--t1);display:flex;align-items:center;justify-content:center
}
.pick-btns .main{
  background:linear-gradient(145deg,var(--acc-1) 0%,var(--acc-2) 55%,var(--acc-3) 100%);border-color:var(--acc-edge);color:var(--on-acc);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 8px 18px -12px rgba(38,72,55,.85)
}
@media (prefers-reduced-motion:reduce){.pick-wrap,.pick{transition:none}}

/* ============================================================
   ПРОФИЛЬ И НАСТРОЙКИ
   ============================================================ */
.prof-hdr{align-items:center}
.prof-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.prof-t .sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prof-ava{
  flex:none;width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:var(--green-bg);color:var(--green-tx);border:1px solid var(--hair);font:800 18px var(--ui);text-align:center
}
.prof-ava svg{width:22px;height:22px}
.sgroup{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:4px 14px}
.sgroup-h{padding:12px 0 4px;font:700 11px/1 var(--ui);letter-spacing:.09em;text-transform:uppercase;color:var(--t3)}
.srow{display:flex;align-items:center;gap:12px;width:100%;min-height:58px;padding:9px 0;text-align:left}
.srow + .srow{border-top:1px solid var(--line-soft)}
.srow-ic{
  flex:none;width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  background:var(--green-bg);color:var(--green)
}
.srow-ic svg{width:19px;height:19px}
.srow-body{flex:1;min-width:0}
.srow-body b{display:block;font:700 14px/1.25 var(--ui)}
.srow-body em{display:-webkit-box;margin-top:2px;font:500 12px/1.35 var(--ui);color:var(--t3);font-style:normal;
  -webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
.srow-go{flex:none;font:500 22px/1 var(--ui);color:var(--t4);font-style:normal}
/* карточка чата «Дел вместе» (раздел «Telegram»): выбор часа и языка — справа от подписи, не во всю строку */
.tg-sel select,.tg-sel .choice-trigger{flex:none;width:auto;max-width:56%;min-height:40px;margin-top:0}
.srow:active{opacity:.7}
.prof-ver{padding:4px 0 8px;text-align:center;font:500 11.5px var(--ui);color:var(--t4)}

/* страницы настроек в шторке */
.set-h{margin:18px 0 8px;font:700 11px/1 var(--ui);letter-spacing:.09em;text-transform:uppercase;color:var(--t3)}
.set-page > .set-h:first-child{margin-top:4px}
.te-list{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:2px 12px}
.te-row{display:flex;align-items:center;gap:10px;min-height:60px;padding:8px 0}
.te-row + .te-row{border-top:1px solid var(--line-soft)}
.te-row.fixed .srow-ic{background:var(--bg2);color:var(--t3)}
.te-btn{
  flex:none;width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  background:var(--bg2);border:1px solid var(--line);font:600 17px/1 var(--ui);color:var(--t2);text-align:center
}
.te-btn[disabled]{opacity:.35}
.te-btn.del{color:var(--danger);border-color:var(--danger-bd);background:var(--danger-bg)}
.te-btn.add{color:#fff;border-color:var(--green);background:var(--green);font-size:20px}
.te-btn.add[aria-disabled="true"]{opacity:.4}

/* макет низа телефона с панелью вкладок */
.tmock{
  margin:6px auto 4px;max-width:310px;border:6px solid #1b1a17;border-top:0;border-radius:0 0 30px 30px;
  background:var(--bg);overflow:hidden;box-shadow:0 22px 40px -30px rgba(27,26,23,.6)
}
.tmock-scr{display:flex;flex-direction:column;gap:7px;padding:14px 16px 12px}
.tmock-scr i{display:block;height:9px;border-radius:99px;background:#e9e6df}
.tmock-scr i.s{width:58%}
.tmock-bar{display:flex;padding:7px 4px 12px;border-top:1px solid var(--line);background:var(--surface)}
.tmock-tab{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--t3);
  animation:onbin .35s cubic-bezier(.22,.8,.3,1) both}
.tmock-ic{width:38px;height:24px;border-radius:9px;display:flex;align-items:center;justify-content:center}
.tmock-ic svg{width:17px;height:17px}
.tmock-tab em{max-width:100%;font:600 9.5px var(--ui);font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tmock-tab.on{color:var(--green-tx)}
.tmock-tab.on .tmock-ic{background:var(--green-bg)}

/* анкета: выбор разделов списком с описанием */
.onb-mock{margin-top:14px}
.onb-tabs{grid-template-columns:1fr;gap:8px;margin-top:14px}
.onb-tabs .onb-goal{min-height:58px;padding:10px 12px}
.og-t{flex:1;min-width:0;padding-right:18px}
.og-t b{display:block;font:700 14px/1.2 var(--ui)}
.og-t em{display:block;margin-top:2px;font:500 12px/1.35 var(--ui);color:var(--t3);font-style:normal}
.onb-tabs .og-chk{top:50%;right:12px;margin-top:-9.5px}
/* макет телефона уходит вверх плавно, а не обрезается */
.tmock{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 26px);mask-image:linear-gradient(to bottom,transparent 0,#000 26px)}

/* ---------- сделанное внизу распорядка ---------- */
.done-sec{margin:4px 16px 0}
.timeline:empty{display:none}
.done-h{display:flex;align-items:center;gap:8px;width:100%;padding:12px 2px 8px;text-align:left}
.done-h b{font:700 11.5px var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--t3)}
.done-h span{padding:2px 8px;border-radius:99px;background:var(--bg2);font:600 11px var(--mono);color:var(--t3)}
.done-h i{margin-left:auto;font-style:normal;color:var(--t4)}
.done-list{display:flex;flex-direction:column;gap:6px;padding-bottom:6px}
.done-t{flex:none;width:38px;font:500 11px var(--mono);color:var(--t4)}

/* ---------- отметка: искры от галочки, потом карточка плавно едет в «Выполнено» ----------
   Копия карточки живёт в слое поверх списка: за его пределы (на шапку и панель
   вкладок) она не вылезает. Пока летят искры, копия стоит на месте и не меняет
   размера — только ставится галочка и текст становится тише. */
.snap-layer{position:absolute;overflow:hidden;pointer-events:none;z-index:35}
.snap-ghost{pointer-events:none;will-change:transform,opacity}
.snap-ghost .evtext,.snap-ghost .card-h h3,.snap-ghost .card-items{animation:snap-dim .3s ease .08s forwards}
@keyframes snap-dim{to{opacity:.55}}
/* строка в пути непрозрачна: свой фон лежит поверх фона экрана, соседи под ней не просвечивают */
.snap-moving{position:relative;z-index:3}
.donerow.snap-moving{background:linear-gradient(var(--fill-2),var(--fill-2)),var(--bg)}
.snap-list .snap-moving{background:var(--surface)}
.snap-dust{position:absolute;z-index:36;pointer-events:none}
.snap-dust i{position:absolute;display:block;border-radius:1.5px;will-change:transform,opacity}
/* распад карточки: она тает слева направо под маской — размер и форма не меняются, — а пыль
   на холсте поднимается там, где карточка только что была. Сроки ставит snap.js. */
.snap-canvas{position:absolute;z-index:37;pointer-events:none}
.snap-ghost.dissolve{
  -webkit-mask-image:linear-gradient(90deg,transparent 0,transparent 44%,#000 56%,#000 100%);mask-image:linear-gradient(90deg,transparent 0,transparent 44%,#000 56%,#000 100%);
  -webkit-mask-size:226% 100%;mask-size:226% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:100% 0;mask-position:100% 0;
  animation:snap-wipe var(--snap-wipe,500ms) cubic-bezier(.4,.1,.6,.9) var(--snap-wait,90ms) both}
@keyframes snap-wipe{from{-webkit-mask-position:100% 0;mask-position:100% 0}to{-webkit-mask-position:0 0;mask-position:0 0}}
/* подсказка того же шага после фоновой перерисовки: без повторной анимации */
.tour.settled .tour-card,.tour.settled .tour-ring{animation:none}

/* утро: строка шага ритуала и кнопка видео рядом */
.rit-line{display:flex;align-items:center;gap:8px}
.rit-line .prep-row2{flex:1;min-width:0}

/* ---- повторная установка: продолжить с данными или начать заново ---- */
.onb-wb{padding-top:calc(44px + var(--safe-top))}
.onb-wb .onbw-text{padding-top:0}
.wb-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px;margin-top:22px}
.wb-stat{
  padding:14px 14px 12px;border-radius:18px;background:var(--surface);border:1px solid var(--line);
  box-shadow:0 14px 30px -26px rgba(40,50,30,.45)
}
.wb-stat b{display:block;font:800 26px/1 var(--ui);letter-spacing:-.03em;color:var(--green)}
.wb-stat span{display:block;margin-top:6px;font:600 12.5px/1.3 var(--ui);color:var(--t2)}
.wb-when{margin:14px 0 0;text-align:center;font:500 12.5px var(--ui);color:var(--t3)}
@media(max-height:700px){.onb-wb{padding-top:calc(22px + var(--safe-top))}.wb-stats{margin-top:16px}}

/* ---- живой текст диктовки: слова появляются по мере речи ----
   Хвост, который служба ещё уточняет, светлее; устоявшиеся слова темнеют.
   Высота ограничена, текст держится у последних слов. */
.recbar.live,.functional .recbar.live{display:block;padding:9px 12px 10px 14px}
.rec-head{display:flex;align-items:center;gap:9px;min-height:30px}
.rec-state{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:600 12.5px/1.2 var(--ui);color:var(--t2)}
.recbar.warn .rec-state{color:#9a5b1c}
.rec-lv{flex:none;display:flex;align-items:center;gap:2.5px;height:16px}
.rec-lv i{
  display:block;width:3px;height:16px;border-radius:2px;background:#b0503c;opacity:.85;
  transform:scaleY(calc(.18 + var(--lv, 0) * .82 * var(--k, 1)));transition:transform .12s ease-out
}
.rec-lv i:nth-child(1){--k:.55}
.rec-lv i:nth-child(2){--k:.85}
.rec-lv i:nth-child(4){--k:.75}
.rec-lv i:nth-child(5){--k:.5}
/* браузер громкость не отдаёт: полоска просто дышит, пока идёт запись */
.recbar.idle .rec-lv i{animation:lvidle .9s ease-in-out infinite alternate}
.recbar.idle .rec-lv i:nth-child(2){animation-delay:.18s}
.recbar.idle .rec-lv i:nth-child(3){animation-delay:.36s}
.recbar.idle .rec-lv i:nth-child(4){animation-delay:.54s}
.recbar.idle .rec-lv i:nth-child(5){animation-delay:.72s}
@keyframes lvidle{from{transform:scaleY(.22)}to{transform:scaleY(.7)}}
.recbar.busy .rec-lv i,.recbar.busy .recdot{animation:none;transform:scaleY(.18)}
.recbar.busy .recdot{transform:none;opacity:.45}
.rec-head .rectime{margin-left:auto}
.recbar.busy .rec-head{padding-right:4px}
.rec-text{
  margin-top:6px;max-height:min(28vh,7.5em);overflow-y:auto;overscroll-behavior:contain;
  font:500 15px/1.5 var(--ui);color:var(--t1);overflow-wrap:anywhere
}
.rec-text.over{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 1.3em);mask-image:linear-gradient(to bottom,transparent 0,#000 1.3em)}
.rec-text.empty::before{content:'Говорите — текст появится здесь';color:var(--t3)}
.rec-text .w{transition:color .4s ease}
.rec-text .w.p{color:var(--mute)}
.rec-text .w.nw{animation:wordin .24s ease-out}
@keyframes wordin{from{opacity:0}to{opacity:1}}
.rt-caret{
  display:inline-block;width:2px;height:1.05em;margin-left:1px;vertical-align:-.16em;
  border-radius:1px;background:#b0503c;animation:caret 1s steps(1) infinite
}
@keyframes caret{50%{opacity:0}}

/* ---- вопросы помощника: что он уже понял и что уточнить ---- */
.bub.ask .ask-q{margin:8px 0 0;padding-left:1.3em}
.bub.ask .ask-q li{margin-top:5px;padding-left:2px}
.bub.ask .ask-q li::marker{color:var(--green);font-weight:700}
/* готовые ответы кнопками под вопросом и время приёма курса в карточке плана (29.10.2026) */
.bub.ask .ask-a{display:flex;flex-wrap:wrap;gap:6px;margin:7px 0 2px}
.bub.ask .ask-a .qr-btn{min-height:32px}
.planbox .op-time{display:inline-flex;align-items:center;gap:6px;margin:6px 0 2px 34px}
.planbox .op-time svg{width:15px;height:15px}
.bub.ask .ask-hint{margin-top:9px;padding-top:8px;border-top:1px solid var(--line-soft);font:500 12.5px/1.45 var(--ui);color:var(--t3)}
.bub-note{margin:6px 0 2px;max-width:86%}

/* ============================================================
   ЗНАКОМСТВО И ПРИВЕТСТВИЕ НА ВИДЕО
   Первый экран — для кого оформить: две карточки с живым превью.
   Приветствие — ролик на весь экран (object-fit: cover, на любом
   телефоне без полос), заголовок проявляется по буквам на своих
   местах, потом описание и кнопки. «Начать» — «пролёт»: текст уходит,
   ролик ускоряется и растворяется в фоне следующего шага.
   ============================================================ */
.onb-look{padding-top:calc(30px + var(--safe-top))}
.look-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:24px}
.look-card{
  position:relative;display:block;padding:0;border-radius:22px;overflow:hidden;text-align:left;
  background:#f3eee4;border:1px solid var(--line);box-shadow:0 18px 40px -28px rgba(40,50,30,.55);
  transition:transform .15s ease
}
.onb.enter .look-card{animation:onbin .5s cubic-bezier(.22,.8,.3,1) backwards}
.look-card:active{transform:scale(.97)}
.look-media{display:block;aspect-ratio:9/15;background:#f3eee4}
.look-media video,.look-media img{display:block;width:100%;height:100%;object-fit:cover}
.look-card b{
  position:absolute;left:0;right:0;bottom:0;padding:36px 14px 13px;
  font:800 16px/1.1 var(--ui);letter-spacing:-.01em;color:var(--t1);
  background:linear-gradient(to top,rgba(251,250,248,.97) 42%,rgba(251,250,248,0))
}
@media(max-height:700px){.look-media{aspect-ratio:9/13}.look-cards{margin-top:16px}}

/* первый экран знакомства: Зарок и два семени (светлое — светлая тема, тёмное — тёмная); рука тянется к ближнему */
.onb-seeds{position:relative;padding:0;overflow:hidden;background:#17221d;touch-action:pan-y}
.onb-seeds.enter > .seeds-art{animation:none}
.seeds-art{position:absolute;inset:0;z-index:0;pointer-events:none}
.seeds-art::before{content:'';position:absolute;inset:-24px;background:url(img/onb-seeds.webp) 50% 0/cover no-repeat;filter:blur(30px)}
.seeds-art img{position:absolute;left:0;bottom:0;width:100%;height:auto;max-height:100%;aspect-ratio:1080/1936;object-fit:contain;object-position:50% 100%;transition:opacity .45s ease;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 26%);mask-image:linear-gradient(to bottom,transparent 0,#000 26%)}
.seeds-hand{opacity:0}
.onb-seeds[data-reach="l"][data-v="1"] .seeds-l1,.onb-seeds[data-reach="l"][data-v="2"] .seeds-l2,
.onb-seeds[data-reach="r"][data-v="1"] .seeds-r1,.onb-seeds[data-reach="r"][data-v="2"] .seeds-r2{opacity:1}
.seeds-text{position:relative;z-index:2;text-align:center;padding:calc(30px + var(--safe-top)) 24px 0;color:#fff;text-shadow:0 2px 16px rgba(0,0,0,.55)}
.seeds-text .brand{color:#fff}
.seeds-text h1{margin:16px auto 0;max-width:320px;font:800 28px/1.12 var(--ui);letter-spacing:-.03em;text-wrap:balance;color:#fff}
.seeds-text p{margin:10px auto 0;max-width:300px;font:500 14.5px/1.5 var(--ui);color:rgba(255,255,255,.92);text-wrap:balance}
.seeds-hit{position:absolute;top:30%;bottom:12%;width:50%;z-index:3;padding:0;background:transparent;border:0;-webkit-tap-highlight-color:transparent}
.seeds-hit-l{left:0}.seeds-hit-r{right:0}
.seeds-hit:focus-visible{outline:3px solid rgba(255,255,255,.85);outline-offset:-8px;border-radius:28px}
.seeds-names{position:absolute;left:0;right:0;bottom:calc(84px + var(--safe-bottom));z-index:2;display:flex;pointer-events:none}
.seeds-names span{flex:1;text-align:center;font:700 15px/1.2 var(--ui);color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.7)}
.onb-seeds .onb-ft{position:absolute;left:0;right:0;bottom:0;margin:0;z-index:4;background:linear-gradient(to top,rgba(12,18,15,.78),rgba(12,18,15,0))}
.onb-seeds .onb-skip{color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.6)}
@media(max-height:700px){.seeds-text h1{font-size:24px}.seeds-text p{font-size:13.5px}}
@media(prefers-reduced-motion:reduce){.seeds-art img{transition:none}}

.onb-vid{position:relative;padding-top:0;background:#f4efe6;overflow:hidden}
.onbv-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;pointer-events:none;background:#f4efe6}
.onb-vid > :not(.onbv-bg){position:relative;z-index:1}
.onb-vid > .onbv-back,.onb-s0 > .onbv-back{
  position:absolute;top:calc(12px + var(--safe-top));left:14px;z-index:3;
  background:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)
}
.onbv-text{position:relative;margin:auto 0;padding:0 4px;text-align:center}
/* мягкое светлое пятно под текстом: читается, даже когда за ним пролетает предмет */
.onbv-text::before{
  content:'';position:absolute;left:-24px;right:-24px;top:-40px;bottom:-40px;z-index:-1;pointer-events:none;
  background:radial-gradient(closest-side,rgba(248,244,236,.86),rgba(248,244,236,.55) 55%,rgba(248,244,236,0))
}
.onbv-h1{margin:16px auto 0;max-width:330px;font:800 29px/1.12 var(--ui);letter-spacing:-.035em;text-wrap:balance}
.onbv-h1 .tw{white-space:nowrap}
.onbv-h1 .c{opacity:0;transition:opacity .22s ease}
.onbv-h1 .c.on{opacity:1}
.onbv-p{margin:12px auto 0;max-width:310px;font:500 14.5px/1.55 var(--ui);color:var(--t2);text-wrap:balance;
  opacity:0;transform:translateY(6px);transition:opacity .5s ease .05s,transform .5s ease .05s}
.onb-vid.typed .onbv-p{opacity:1;transform:none}
.onb-vid .onb-ft{
  background:linear-gradient(to top,rgba(246,241,233,.94) 38%,rgba(246,241,233,0));
  opacity:0;transform:translateY(8px);transition:opacity .45s ease,transform .45s ease
}
.onb-vid.typed .onb-ft{opacity:1;transform:none}
/* «пролёт» по «Начать» */
.onb-vid.fly .onbv-text,.onb-vid.fly .onb-ft,.onb-vid.fly > .onbv-back{opacity:0;transform:translateY(-12px);transition:opacity .28s ease,transform .4s ease}
.onb-vid.fly .onbv-bg{animation:onbfly 1.15s cubic-bezier(.4,0,.6,1) forwards}
@keyframes onbfly{0%{transform:none;opacity:1}62%{opacity:1}100%{transform:scale(1.12);opacity:0}}
@media(max-height:700px){.onbv-h1{font-size:25px;margin-top:12px}.onbv-p{font-size:13.5px}}
/* общая анимация входа шагов анкеты держит видимость у прямых потомков —
   здесь появление ведут свои переходы (по буквам, потом описание и кнопки) */
.onb-vid.enter > :not(.onbv-bg){animation:none}
.onb-vid .head-plain{animation:onbin .5s cubic-bezier(.22,.8,.3,1) both}
/* приветствие на видео — во весь экран: ролик уходит под строку состояния, текст ниже неё */
.app.bleed{padding-top:0}
.app.bleed .onb-vid{padding-top:var(--safe-top)}
/* знакомство: блок по центру экрана, фон и под строкой состояния */
.onb-look .onbw-text{margin-top:auto}
.onb-look .look-cards{margin-bottom:8px}

/* ============================================================
   ФОНЫ КОЛЛЕКЦИИ: слой под экраном, плавная смена картинок.
   .app изолирует слой (z-index:-1 внутри себя), поэтому шторки,
   подсказки и диалоги остаются над ним как раньше.
   ============================================================ */
.app{isolation:isolate}
#appbg{position:absolute;left:0;right:0;top:0;bottom:0;z-index:-1;pointer-events:none;background:var(--bg);opacity:0;transition:opacity .35s ease}
.app.has-bg #appbg{opacity:1}
#appbg i{position:absolute;inset:0;background:50% 100% / cover no-repeat;opacity:0;transition:opacity .6s ease}
#appbg i.on{opacity:1}
/* над полем ввода помощника картинка мягко гаснет книзу */
#appbg.lift i{-webkit-mask-image:linear-gradient(to bottom,#000 86%,transparent);mask-image:linear-gradient(to bottom,#000 86%,transparent)}
.app.has-bg .screen,.app.has-bg .onb{background:transparent}
.app.has-bg .onb-ft{background:linear-gradient(to top,rgba(251,250,248,.9) 30%,rgba(251,250,248,0))}
@media(prefers-reduced-motion:reduce){#appbg,#appbg i{transition:none}}

/* закрытый день: тёплые слова и сцена отдыха */
.restcard{margin:18px 0 4px;border-radius:22px;overflow:hidden;background:var(--surface);border:1px solid var(--line)}
.restcard p{margin:0;padding:16px 18px 4px;font:500 13.5px/1.6 var(--ui);color:var(--t2)}
.restcard-ph{display:block;aspect-ratio:16/9;background:50% 86% / cover no-repeat}
/* мелкие подписи поверх сцены — на светлой подложке, чтобы читались на любой картинке */
.app.has-bg .onb-note{
  align-self:flex-start;background:rgba(251,250,248,.88);border-radius:12px;padding:7px 11px;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)
}
.app.has-bg .onb-note.c{align-self:center}

/* ============================================================
   АНКЕТА: чище и без рамок
   Поверхности отделяются мягкой тенью, а не обводкой; выбранное —
   заливкой и значком, без цветной рамки.
   ============================================================ */
.onb{--onb-sh:0 1px 2px rgba(27,26,23,.05),0 10px 26px -20px rgba(27,26,23,.38)}
.onb-back{border:0;box-shadow:var(--onb-sh)}
.onb-prog i{background:#ebe8e1}
.onb-goal{border:0;box-shadow:var(--onb-sh)}
.onb-goal.on{background:var(--green-bg);box-shadow:0 1px 2px rgba(27,26,23,.05),0 10px 24px -18px rgba(38,72,55,.55)}
.onb-set{border:0;box-shadow:var(--onb-sh)}
.onb-time{border:0}
.onb-time:focus{box-shadow:0 0 0 2px var(--green)}
.onb-chip{border:0;box-shadow:var(--onb-sh)}
.onb-chip.on{box-shadow:none}
.onb-add input{border:0;box-shadow:var(--onb-sh)}
.onb-add input:focus{box-shadow:0 0 0 2px var(--green)}
.onb-plan{border:0;box-shadow:0 1px 2px rgba(27,26,23,.05),0 18px 40px -30px rgba(40,50,30,.45)}
.onb-price{border:0;box-shadow:var(--onb-sh)}
.onb-price.hit{box-shadow:0 0 0 2px var(--green),0 10px 26px -20px rgba(38,72,55,.5)}

/* ---- обзор: «День, который держит себя сам» ---- */
.onb-secs{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.onb-sec{
  display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 13px 0 8px;border-radius:99px;
  background:var(--surface);box-shadow:var(--onb-sh);font:600 13px var(--ui);color:var(--t1)
}
.onb.enter .onb-sec{animation:onbin .4s cubic-bezier(.22,.8,.3,1) backwards}
.onb-sec i{display:flex;width:22px;height:22px;border-radius:50%;align-items:center;justify-content:center;background:var(--green-bg);color:var(--green)}
.onb-sec i svg{width:13px;height:13px}
.onb-today{
  margin-top:18px;padding:14px 16px 4px;border-radius:22px;background:var(--surface);
  box-shadow:0 1px 2px rgba(27,26,23,.05),0 22px 44px -32px rgba(40,50,30,.5)
}
.ot-h{display:flex;align-items:center;gap:10px;padding-bottom:11px}
.ot-h b{font:800 15px var(--ui);letter-spacing:-.01em}
.ot-bar{flex:1;height:5px;border-radius:99px;background:var(--fill-2);overflow:hidden}
.ot-bar i{display:block;width:67%;height:100%;border-radius:99px;background:var(--green);transform-origin:left}
.onb.enter .ot-bar i{animation:onbfill .7s cubic-bezier(.22,.8,.3,1) .35s both}
.ot-h em{font:600 11.5px var(--mono);font-style:normal;color:var(--t3)}
.ot-row{display:flex;align-items:center;gap:11px;padding:11px 0;border-top:1px solid var(--line-soft)}
.ot-t{flex:none;width:40px;font:600 11.5px var(--mono);color:var(--t3)}
.ot-dot{flex:none;width:8px;height:8px;border-radius:50%}
.ot-b{flex:1;min-width:0}
.ot-b b{display:block;font:700 14px/1.25 var(--ui)}
.ot-b em{display:block;margin-top:2px;font:500 11.5px/1.35 var(--ui);font-style:normal;color:var(--t3)}
.ot-row.done .ot-b b{color:var(--t3);text-decoration:line-through;text-decoration-color:var(--dash)}
.ot-chk{
  flex:none;width:24px;height:24px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  border:1.5px solid var(--mark);color:transparent
}
.ot-chk svg{width:14px;height:14px;stroke-width:2.8}
.ot-row.done .ot-chk{background:var(--green);border-color:var(--green);color:#fff}

/* ---- первый шаг: настоящая отметка и статус дня ---- */
.onb-stat{margin-top:24px;text-align:center}
.onb-stat b{display:block;font:800 46px/1 var(--ui);letter-spacing:-.04em;color:var(--t1)}
.onb-stat > span:not(.os-bar){display:block;margin-top:7px;font:600 12.5px var(--ui);color:var(--t3)}
.os-bar{display:block;width:62%;max-width:230px;height:6px;margin:14px auto 0;border-radius:99px;background:var(--fill-2);overflow:hidden}
.os-bar i{display:block;height:100%;border-radius:99px;background:var(--green);transform-origin:left}
.onb-stat em{display:block;margin-top:10px;font:700 13px var(--ui);font-style:normal;color:var(--green-tx)}
.onb-stat.just{animation:onbin .45s cubic-bezier(.22,.8,.3,1) both}
.onb-stat.just .os-bar i{animation:onbfill .6s cubic-bezier(.22,.8,.3,1) .15s both}
.onb-first{margin-top:20px}
.onb-chkrow{width:100%;text-align:left}
.onb-bx{
  flex:none;width:28px;height:28px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  border:1.5px solid var(--mark);background:var(--surface);color:transparent;
  transition:background .18s,border-color .18s,color .18s
}
.onb-bx svg{width:16px;height:16px;stroke-width:2.8}
.onb-chkrow.on .onb-bx{background:var(--green);border-color:var(--green);color:#fff}
.onb-chkrow.on .onb-body b{color:var(--t3);text-decoration:line-through;text-decoration-color:var(--dash)}
.onb-chkrow.just .onb-bx{animation:onbpop .32s cubic-bezier(.3,1.6,.4,1)}
/* до отметки пункт один, и его галочка мягко зовёт нажать */
.onb-first .onb-chkrow:only-child:not(.on) .onb-bx{border-color:var(--green);box-shadow:0 0 0 4px var(--green-bg)}
.onb-ftnote{margin:10px 0 0;text-align:center;font:500 12px/1.5 var(--ui);color:var(--t3)}
@media(max-height:700px){
  .onb-secs{margin-top:14px;gap:6px}
  .onb-sec{height:32px;font-size:12.5px}
  .onb-today{margin-top:14px}
  .ot-row{padding:9px 0}
}

/* приветствие на неподвижном пейзаже: текст в светлом небе, над горами */
.onb-still .onbv-text{margin:calc(9vh + var(--safe-top)) 0 auto}
.onb-still .onbv-text::before{background:radial-gradient(closest-side,rgba(246,247,248,.7),rgba(246,247,248,.35) 55%,rgba(246,247,248,0))}
.onb-still .onbv-bg{object-position:50% 100%}

/* ---------- аккаунт: вход через Google и по почте ---------- */
.acc .btn{width:100%;margin-top:10px}
.acc-card{display:grid;gap:4px;padding:16px;border-radius:16px;background:var(--fill);margin-bottom:10px}
.acc-card small{font:700 10px var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--t3)}
.acc-card b{font:700 18px var(--ui);color:var(--t1);overflow-wrap:anywhere}
.acc-card span{font-size:13px;color:var(--t2)}
.gbtn{display:flex;align-items:center;justify-content:center;gap:10px;background:var(--surface);color:var(--t1);border:1px solid var(--line)}
.g-logo{width:20px;height:20px;flex:none}
.acc-or{display:flex;align-items:center;gap:10px;margin:18px 0 6px;color:var(--t3);font-size:12px}
.acc-or:before,.acc-or:after{content:'';flex:1;height:1px;background:var(--line)}
.acc-tabs{margin:6px 0 12px}
.acc-check{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;background:none;border:0;padding:10px 0 4px;color:var(--t2);font:500 13px/1.45 var(--ui);cursor:pointer}
.acc-check .tick{flex:none;margin-top:1px}
.acc-ok{color:var(--green);font-size:13px;line-height:1.5;margin:10px 0 0}
.acc-link{display:block;margin:12px auto 0}


/* карточка плана помощника: предупреждение под пунктом (похожая запись уже есть, менять нечего) */
.planbox .op-warn{margin:6px 0 4px}
.opbody em.op-change{color:var(--green);font-weight:600}
/* подпись в опасной строке стоит на красноватой подложке — берём второй цвет текста, третий на ней не дотягивает */
.oprow.danger .opbody em{color:var(--t2)}

/* вход в аккаунт: цельная сцена (Зарок стоит на лугу), день / ночь по теме приложения */
.acc-scene{position:relative;display:flex;flex-direction:column;justify-content:space-between;min-height:min(78vh,660px);margin:0 -4px;border-radius:26px;overflow:hidden;background-size:cover;background-position:center;color:#1b3a29}
.acc-scene.night{color:#f1f5ee}
.acc-scene-top{padding:30px 22px 18px;text-align:center;position:relative;z-index:1}
.acc-scene.night .acc-scene-top{background:linear-gradient(rgba(4,9,24,.62),rgba(4,9,24,.28) 70%,rgba(4,9,24,0))}
.acc-brand{font:600 15px/1 Georgia,'Times New Roman',serif;letter-spacing:.34em}
.acc-scene h2{margin:12px 0 4px;font:600 21px/1.2 var(--ui);color:inherit}
.acc-scene-top p{margin:0;font-size:13px;font-weight:500;line-height:1.4}
.acc-scene:not(.night) .acc-brand,.acc-scene:not(.night) h2,.acc-scene:not(.night) .acc-scene-top p{text-shadow:0 0 14px rgba(255,255,255,.85),0 1px 3px rgba(255,255,255,.7)}
.acc-scene.night .acc-brand,.acc-scene.night h2{color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.65)}
.acc-scene.night .acc-scene-top p{color:#e3ecf8;text-shadow:0 1px 10px rgba(0,0,0,.7)}
.acc-scene-btns{padding:0 22px calc(18px + env(safe-area-inset-bottom,0px));display:grid;gap:9px}
.acc-scene .btn{width:100%;border-radius:999px;min-height:48px;display:flex;align-items:center;justify-content:center;gap:10px}
.acc-scene .acc-main{background:#2f5a43;color:#fff;border:1px solid transparent}
.acc-scene.night .acc-main{background:#cfe6d6;color:#14231a}
.acc-scene .acc-main .g-logo{width:20px;height:20px;background:#fff;border-radius:50%;padding:2px}
.acc-scene .acc-alt{background:rgba(255,255,255,.4);border:1px solid rgba(60,70,60,.3);color:inherit}
.acc-scene.night .acc-alt{background:rgba(0,0,0,.28);border-color:rgba(255,255,255,.3)}
.acc-later{justify-self:center;text-decoration:underline;color:inherit;opacity:.88}
.acc-fine{margin:0;text-align:center;font-size:10.5px;line-height:1.4;opacity:.72}
.acc-fine button{background:none;border:0;padding:0;font:inherit;color:inherit;text-decoration:underline}
.acc-scene .acc-later{color:inherit!important}
/* сцена закрытого дня — темы «Ханами» и «Мемы» (js/meme-theme.js, App.dayScene): ниже слоя окон и подсказок.
   Белой карточки нет: Зарок, слово и счёт стоят прямо на фоне-сцене; под фоном — сплошной цвет темы. */
html:is([data-theme^="anime"],[data-theme^="meme"]) .day-scene{position:absolute;inset:0;z-index:25;overflow:hidden;background:var(--bg) center/cover no-repeat;cursor:pointer;animation:day-scene-in .22s ease-out both}
html:is([data-theme^="anime"],[data-theme^="meme"]) .day-scene-defs{position:absolute}
html:is([data-theme^="anime"],[data-theme^="meme"]) .day-scene-sum{font:800 18px/1.2 var(--ui);font-variant-numeric:tabular-nums}
/* «Ханами» / «Цукими», итоговый вариант: оттиск печати DONE ровно по центру экрана (SVG, js/meme-theme.js, stampSvg), под ним
   счёт и Зарок с печатью в руках. Движение простое: оттиск прилетает на экран (1.6 → 1.0, короткая встряска и отскок, разлёт
   лепестков), Зарок появляется снизу. --ds-d — диаметр оттиска (70–76 % ширины экрана), задаёт js/meme-theme.js. */
html[data-theme^="anime"] .day-scene-anime{--ds-ink:#CF3327;--ds-paper:rgba(255,246,234,.88);--ds-d:260px;animation:day-scene-in .16s ease-out both,day-scene-shake .24s linear .32s both}
html[data-theme="anime-dark"] .day-scene-anime{--ds-ink:#FF8468;--ds-paper:rgba(30,26,58,.72)}
html[data-theme^="anime"] .day-scene-print{position:absolute;z-index:3;left:50%;top:42%;width:var(--ds-d);height:var(--ds-d);margin:calc(var(--ds-d) / -2) 0 0 calc(var(--ds-d) / -2);transform:rotate(-7deg);animation:day-scene-print .36s cubic-bezier(.3,.9,.4,1) .14s both}
html[data-theme^="anime"] .day-scene-print .day-scene-stamp{display:block;width:100%;height:100%;overflow:visible}
html[data-theme^="anime"] .day-scene-stamp .ds-paper{fill:var(--ds-paper)}
html[data-theme^="anime"] .day-scene-stamp .ds-ink{fill:var(--ds-ink);stroke:var(--ds-ink)}
html[data-theme^="anime"] .day-scene-stamp .ds-ink path,html[data-theme^="anime"] .day-scene-stamp .ds-ink text,html[data-theme^="anime"] .day-scene-stamp .ds-ink circle:not([fill="none"]){stroke:none}
html[data-theme^="anime"] .day-scene-stamp text{font:900 58px/1 var(--ui);letter-spacing:0}
/* слово для чтения с экрана: в оттиске оно нарисовано */
html[data-theme^="anime"] .day-scene-anime .day-scene-word{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
html[data-theme^="anime"] .day-scene-anime .day-scene-sum{position:absolute;z-index:3;left:50%;top:calc(42% + var(--ds-d) / 2 + 12px);padding:6px 18px;border-radius:999px;border:1.5px solid var(--ds-ink);background:var(--surface);color:var(--t1);font-size:22px;white-space:nowrap;transform:translateX(-50%);animation:day-scene-ribbon .22s cubic-bezier(.2,1.5,.4,1) .5s both}
/* лепестки от центра оттиска */
html[data-theme^="anime"] .day-scene-drops{position:absolute;z-index:2;left:50%;top:42%;width:0;height:0}
html[data-theme^="anime"] .day-scene-drops i{position:absolute;left:-7px;top:-5px;width:14px;height:9px;border-radius:60% 40% 60% 40%;background:#F6A6BD;opacity:0;animation:day-scene-drop .6s cubic-bezier(.1,.7,.3,1) .3s both}
html[data-theme^="anime"] .day-scene-drops i:nth-child(even){background:var(--ds-ink);width:8px;height:8px;border-radius:50%}
html[data-theme^="anime"] .day-scene-drops i:nth-child(1){--ds-x:calc(var(--ds-d) * -.72);--ds-y:calc(var(--ds-d) * -.36)}
html[data-theme^="anime"] .day-scene-drops i:nth-child(2){--ds-x:calc(var(--ds-d) * .7);--ds-y:calc(var(--ds-d) * -.44)}
html[data-theme^="anime"] .day-scene-drops i:nth-child(3){--ds-x:calc(var(--ds-d) * -.76);--ds-y:calc(var(--ds-d) * .22)}
html[data-theme^="anime"] .day-scene-drops i:nth-child(4){--ds-x:calc(var(--ds-d) * .76);--ds-y:calc(var(--ds-d) * .28)}
html[data-theme^="anime"] .day-scene-drops i:nth-child(5){--ds-x:calc(var(--ds-d) * -.22);--ds-y:calc(var(--ds-d) * -.8)}
html[data-theme^="anime"] .day-scene-drops i:nth-child(6){--ds-x:calc(var(--ds-d) * .3);--ds-y:calc(var(--ds-d) * -.78)}
/* Зарок с печатью в руках стоит под оттиском и счётом */
html[data-theme^="anime"] .day-scene-anime .day-scene-zarok{position:absolute;z-index:2;left:50%;bottom:0;width:auto;height:calc(58% - var(--ds-d) / 2 - 62px);max-width:72%;object-fit:contain;object-position:50% 100%;transform:translateX(-50%);animation:day-scene-back .22s cubic-bezier(.2,1.2,.4,1) .44s both}
/* «Мемы»: Зарок во весь экран выезжает снизу; слово и счёт — в верхней трети, прямо на фоне */
/* облачко речи: Зарок «говорит» слово — светлая заливка, жирный тёмный контур, жёсткая тень, хвостик к рту */
html[data-theme^="meme"] .day-scene-top{position:absolute;left:50%;bottom:calc(min(58%,89.4vw) + 24px);width:max-content;max-width:86%;display:grid;justify-items:center;gap:4px;padding:14px 20px 12px;border:3px solid #321C2C;border-radius:26px;background:#FFFDF2;color:#321C2C;text-align:center;box-shadow:5px 5px 0 #321C2C;transform:translateX(-50%) rotate(-3deg);animation:day-scene-word .3s cubic-bezier(.2,1.6,.4,1) .56s both}
html[data-theme^="meme"] .day-scene-top::after{content:"";position:absolute;left:50%;bottom:-15px;width:24px;height:24px;margin-left:-4px;background:#FFFDF2;border:solid #321C2C;border-width:0 3px 3px 0;border-radius:0 0 6px 0;box-shadow:5px 5px 0 #321C2C;transform:rotate(38deg) skew(8deg)}
html[data-theme^="meme"] .day-scene-meme .day-scene-word{position:relative;z-index:1;font:900 clamp(30px,11vw,50px)/1.02 var(--ui);letter-spacing:-.01em;text-transform:uppercase;overflow-wrap:anywhere}
html[data-theme^="meme"] .day-scene-meme .day-scene-sum{position:relative;z-index:1;font-size:15px;font-weight:700}
html[data-theme^="meme"].text-big .day-scene-meme .day-scene-word{font-size:clamp(28px,10vw,44px)}
html[data-theme^="meme"].text-big .day-scene-top{bottom:calc(min(52%,89.4vw) + 24px)}
html[data-theme^="meme"] .day-scene-meme .day-scene-zarok{position:absolute;left:2%;bottom:0;width:96%;height:auto;max-height:58%;object-fit:contain;object-position:50% 100%;animation:day-scene-rise .62s cubic-bezier(.2,1.25,.35,1) both}
html:is([data-theme^="anime"],[data-theme^="meme"]).text-big .day-scene-meme .day-scene-zarok{max-height:52%}
/* стикер-акцент сцены «Мемов»: вспышка у облачка речи */
html[data-theme^="meme"] .day-scene-top .day-scene-accent{position:absolute;right:-22px;top:-26px;width:58px;height:auto;transform:rotate(14deg);pointer-events:none}
/* оттиск и Зарок сцены — отдельные слои: зернистость оттиска считается один раз, анимация только двигает готовый слой */
html[data-theme^="anime"] .day-scene-anime,html[data-theme^="anime"] .day-scene-print,html[data-theme^="anime"] .day-scene-anime .day-scene-zarok{will-change:transform,opacity}
@keyframes day-scene-in{from{opacity:0}to{opacity:1}}
@keyframes day-scene-shake{0%,100%{transform:none}20%{transform:translate(-7px,5px)}45%{transform:translate(6px,-4px)}70%{transform:translate(-4px,-2px)}88%{transform:translate(2px,2px)}}
@keyframes day-scene-print{0%{opacity:0;transform:rotate(-7deg) scale(1.6);animation-timing-function:cubic-bezier(.7,0,1,.7)}50%{opacity:1;transform:rotate(-7deg) scale(1);animation-timing-function:ease-out}72%{transform:rotate(-7deg) scale(1.05)}100%{opacity:1;transform:rotate(-7deg) scale(1)}}
@keyframes day-scene-drop{0%{opacity:0;transform:translate(0,0) scale(.5)}15%{opacity:1}100%{opacity:0;transform:translate(var(--ds-x,0),var(--ds-y,0)) rotate(160deg) scale(1)}}
@keyframes day-scene-back{0%{opacity:0;transform:translateX(-50%) translateY(40%)}100%{opacity:1;transform:translateX(-50%)}}
@keyframes day-scene-ribbon{0%{opacity:0;transform:translateX(-50%) scale(.6)}100%{opacity:1;transform:translateX(-50%)}}
@keyframes day-scene-rise{0%{transform:translateY(104%)}70%{transform:translateY(-3%)}100%{transform:none}}
@keyframes day-scene-word{0%{opacity:0;transform:translateX(-50%) rotate(-3deg) scale(.5)}100%{opacity:1;transform:translateX(-50%) rotate(-3deg) scale(1)}}
/* «уменьшить движение»: сразу итоговый кадр, без встряски и выезда */
@media(prefers-reduced-motion:reduce){html:is([data-theme^="anime"],[data-theme^="meme"]) :is(.day-scene,.day-scene-anime,.day-scene-print,.day-scene-sum,.day-scene-top,.day-scene-zarok){animation:none!important}html[data-theme^="anime"] .day-scene-drops{display:none}}

/* смена языка: экран гаснет в цвет темы и не принимает нажатий, пока страница загружается заново (js/app.js, lang-set) */
html.lang-switching body{pointer-events:none}
html.lang-switching body>*{opacity:0;transition:opacity .12s ease-out}
html.lang-switching body::before{content:"";position:fixed;left:50%;top:46%;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;border:3px solid var(--green,#3f6b52);border-right-color:transparent;z-index:2147483646;animation:langspin .9s linear infinite}
html.lang-switching body::after{content:attr(data-lang-next);position:fixed;left:0;right:0;top:calc(46% + 30px);text-align:center;font:600 15px/1.4 var(--ui,system-ui);color:var(--t2,#666);z-index:2147483646}
@keyframes langspin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){html.lang-switching body>*{transition:none}}
@media(prefers-reduced-motion:reduce){html.lang-switching body::before{animation-duration:2.4s}}

/* Временная ссылка на план (js/share-link.js, шаг 144): блок ссылки в листе «Поделиться» и табло ссылки в приложении.
   Отдельным файлом не лежит, чтобы не править список файлов сборки (build-native.sh) и кэш (sw.js). */
.zl-link{margin:16px 0;padding:16px;border:1px solid var(--line,#d9e0d8);border-radius:18px;overflow-wrap:anywhere}
.zl-link input{width:100%;min-width:0;box-sizing:border-box;font-size:14px}
.zl-url{display:flex;align-items:center;gap:8px}.zl-url input{flex:1;min-height:44px;-webkit-user-select:text;user-select:text}.zl-copy-link{flex:none;width:44px;height:44px;display:grid;place-items:center;padding:0;border:1px solid var(--line,#d9e0d8);border-radius:12px;background:var(--surface,transparent);color:var(--t2,inherit)}.zl-copy-link:active{background:var(--bg2,transparent)}
.zl-board{box-sizing:border-box;width:min(100% - 24px,560px);top:var(--safe-top,0px);bottom:var(--safe-bottom,0px);max-height:calc(100dvh - 32px - var(--safe-top,0px) - var(--safe-bottom,0px));padding:22px;border:1px solid var(--line,#d9e0d8);border-radius:24px;background:var(--bg,#fffdf7);color:var(--t1,#233d33);overscroll-behavior:contain;overflow:auto}
.zl-board::backdrop{background:#13291e80;backdrop-filter:blur(5px)}
.zl-head{display:flex;align-items:flex-start;gap:16px;justify-content:space-between}
.zl-head h2{margin:0;line-height:1.2;font-size:26px}
.zl-head button{background:transparent;border:0;color:inherit;width:44px;height:44px;flex:none;font-size:30px;cursor:pointer}
.zl-board p{margin:8px 0;overflow-wrap:anywhere}
.zl-date{font-weight:650}
.zl-board [data-left]{font-variant-numeric:tabular-nums;font-size:14px}
.zl-rows{list-style:none;margin:20px 0;padding:0}
.zl-rows li{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-top:1px solid var(--line,#d9e0d8)}
.zl-rows li>div{min-width:0;flex:1}
.zl-rows time,.zl-rows small{display:block;font-size:13px;opacity:.8;overflow-wrap:anywhere}
.zl-rows p{margin:0}
.zl-mark{width:24px;flex:none;text-align:center}
.zl-rows input{width:22px;height:22px;margin:2px 0;flex:none;accent-color:var(--green,#35654b)}
.zl-datepick{display:grid;gap:6px}
.zl-datepick input{box-sizing:border-box;width:100%;padding:10px;font:inherit;color:inherit;border-radius:12px;border:1px solid var(--line,#d9e0d8);background:transparent;min-height:44px}
.zl-choice,.zl-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.zl-actions{position:sticky;bottom:-22px;padding:14px 0;background:var(--bg,#fffdf7)}
.zl-actions .btn{flex:1;min-width:135px}
.zl-board button:focus-visible{outline:3px solid var(--green,#35654b);outline-offset:2px}
.zl-link .zl-revoke{margin-top:4px}

/* Уменьшение движения: циклы, которые раньше шли и при этом включённом режиме (индикатор набора, запись голоса, уровень звука, появление слов).
   Видно только тем, у кого в системе включено «уменьшить движение»; остальным вид и тайминг прежние. */
@media (prefers-reduced-motion:reduce){
  .bub.typing i{animation:none;opacity:.6}
  .cbtn.rec{animation:none}
  .recbar.idle .rec-lv i{animation:none;transform:scaleY(.45)}
  .rec-text .w.nw{animation:none}
}

/* ---------- город: восход и закат, луна, праздник, погода (js/sky.js) ---------- */
.hdr-sky{display:flex;flex-direction:column;gap:3px;margin:7px 0 0;font:500 12px/1.35 var(--ui);color:var(--t2)}
.hdr-sky .sky-row{display:flex;flex-wrap:wrap;align-items:center;gap:3px 8px;min-width:0}
.hdr-sky .sky-row span{overflow-wrap:anywhere}
.hdr-sky .sky-moon{flex:none;color:var(--t2)}
.hdr-sky small{font:500 11px/1.3 var(--ui);color:var(--t2)}
/* праздник: карточки тем же видом, что карточки дел (.evcard), цвет значка — акцент темы; нажатие — настройки «Город, праздники и погода» */
.hol-cards{display:flex;flex-direction:column;gap:8px;margin:12px 16px 4px}
.selected-day.cal-week .hol-cards{margin:12px 0 4px}
.hol-card{border-color:var(--line);background:var(--surface);width:100%;box-sizing:border-box;margin:0;text-align:left;font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.hol-card:focus-visible{outline:2px solid var(--green-tx,var(--green));outline-offset:2px}
.hol-card:active{opacity:.85}
.hol-card .hol-go{flex:none;font:500 20px/1 var(--ui);color:var(--t2);padding:0 2px}
.hol-card .hol-badge{color:var(--green-tx,var(--green));background:var(--green-bg,var(--bg2));border:1px solid var(--line);padding:7px}
.hol-card .hol-badge svg{width:100%;height:100%;display:block}
.hol-card .evtext{display:block}
.hol-card .evtext b{color:var(--t1);overflow-wrap:anywhere}
.hol-card .evtext span{display:block;color:var(--t2)}
.cell{position:relative}
.cell-hol{position:absolute;top:3px;right:3px;width:9px;height:9px;color:var(--green-tx,var(--green));pointer-events:none;line-height:0}
.cell-hol svg{width:100%;height:100%;display:block}
.sky-set .sky-search{display:flex;flex-direction:column;gap:6px;margin:8px 0;scroll-margin-top:8px}
.sky-set .sky-lbl{font:600 12px/1.3 var(--ui);color:var(--t2)}
.sky-set input,.sky-set select{width:100%;min-height:44px;box-sizing:border-box;padding:0 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--t1);font:500 15px var(--ui)}
.sky-set .sky-pick,.sky-set .sky-scope,.sky-set #sky-results .ps-action{width:100%;text-align:left}
.sky-set .sky-hint{margin-top:8px}
.sky-set .dtv-seg button[disabled]{opacity:.5}
.hdr-sky.sky-cal{margin:8px 16px 4px}
.sky-set .sky-opt i{min-width:18px;text-align:center;color:var(--green-tx);font-size:16px}
.sky-set .sky-opt.on b{color:var(--green-tx)}

/* «Вернуть серию» (js/streak-save.js): спокойная карточка на экране дня, знак сохранённого дня в календаре */
.ss-card{position:relative;margin:4px 14px 14px;padding:17px 16px 15px;border-radius:20px;border:1px solid color-mix(in srgb,var(--green) 22%,var(--line));background:radial-gradient(ellipse at 100% 0%,color-mix(in srgb,var(--green) 9%,transparent),transparent 62%),var(--surface);color:var(--t1);overflow:hidden}
.ss-top{display:flex;gap:8px;align-items:flex-start}.ss-copy{flex:1;min-width:0}
.ss-art{flex:none;width:72px;margin:-6px -6px -4px 0}
/* Зарок стоит на опоре (20.10): в предложении — на ряду кнопок (data-zstand, js/streak-save.js), в «спасибо» — на нижнем крае карточки */
.ss-done .ss-art{align-self:flex-end;margin-bottom:-15px}
.ss-zarok{width:100%!important;max-width:none!important}
.ss-eyebrow{display:block;margin-bottom:7px;font:600 9px/1.4 var(--ui);letter-spacing:.17em;color:var(--t3)}
.ss-card h3{margin:0 0 6px;font:650 18px/1.22 var(--ui);letter-spacing:-.03em}
.ss-card p{margin:0;font:500 12.5px/1.5 var(--ui);color:var(--t2)}
.ss-btns{display:flex;gap:8px;margin-top:13px}
.ss-btns .btn{flex:1 1 0;min-height:42px;margin:0;padding:10px 12px;font-size:13px}
.ss-card small{display:block;margin-top:10px;font:500 10.5px/1.45 var(--ui);color:var(--t3)}
.ss-card.ss-done{animation:ss-pop .45s ease-out both}
.ss-ring{position:absolute;left:16px;top:14px;width:22px;height:22px;border-radius:50%;border:2px solid var(--green);opacity:0;animation:ss-ring 1.1s ease-out .1s both}
.ss-ring::after{content:'';position:absolute;left:6px;top:2px;width:5px;height:10px;border:solid var(--green);border-width:0 2px 2px 0;transform:rotate(45deg)}
.ss-done .ss-eyebrow{padding-left:30px;line-height:22px;margin-bottom:6px}
@keyframes ss-ring{0%{transform:scale(.3);opacity:0}45%{transform:scale(1.18);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes ss-pop{0%{transform:scale(.985)}60%{transform:scale(1.008)}100%{transform:none}}
@media (prefers-reduced-motion:reduce){.ss-card.ss-done,.ss-ring{animation:none;opacity:1}}
.cell-saved{position:absolute;right:6px;bottom:11px;width:8px;height:8px;border-radius:50%;border:1.5px solid var(--c,var(--green));background:transparent;pointer-events:none}
.banner.ss-banner{background:var(--surface);border-color:color-mix(in srgb,var(--green) 26%,var(--line))}
/* новое знакомство (js/onb-v2.js): вызов «N дней с Зароком» и напоминание о конце пробного Plus на экране дня */
.chl-card{position:relative;margin:4px 14px 14px;padding:16px 16px 14px;border-radius:20px;border:1px solid color-mix(in srgb,var(--green) 24%,var(--line));background:color-mix(in srgb,var(--green-bg) 70%,var(--surface));color:var(--t1);overflow:hidden}
.chl-top{display:flex;gap:12px;align-items:flex-start}.chl-copy{flex:1;min-width:0}
.chl-ic{flex:none;width:30px;height:30px;color:var(--green);margin-top:1px}.chl-ic svg{width:100%;height:100%}
.chl-card h3{margin:0 0 6px;font:650 16px/1.25 var(--ui);letter-spacing:-.02em}
.chl-count{display:block;font:600 12.5px/1.3 var(--ui);color:var(--t2)}
.chl-x{flex:none;width:32px;height:32px;margin:-6px -6px 0 0;border:0;border-radius:50%;background:transparent;color:var(--t3);font:400 20px/1 var(--ui);cursor:pointer}
.chl-x:focus-visible,.trial-x:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.chl-bar{display:block;height:6px;margin:12px 0 10px 42px;border-radius:6px;background:color-mix(in srgb,var(--green) 14%,var(--fill))}
.chl-bar i{display:block;height:100%;min-width:6px;border-radius:6px;background:var(--green);transition:width .5s ease}
.chl-note{margin:0 0 0 42px;font:500 11.5px/1.45 var(--ui);color:var(--t2)}
.chl-btns{display:flex;gap:8px;margin-top:13px}.chl-btns .btn{flex:1 1 0;min-height:42px;margin:0;padding:10px 12px;font-size:13px}
.chl-done{animation:chl-pop .45s ease-out both}
.chl-burst{position:absolute;left:31px;top:31px;width:0;height:0;pointer-events:none}
.chl-burst i{position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:var(--green);opacity:0;transform:rotate(var(--a)) translateY(0);animation:chl-dot .9s ease-out both}
.chl-burst i:nth-child(even){background:var(--yellow)}
@keyframes chl-dot{0%{opacity:0;transform:rotate(var(--a)) translateY(0) scale(.6)}30%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateY(-34px) scale(1)}}
@keyframes chl-pop{0%{transform:scale(.985)}60%{transform:scale(1.008)}100%{transform:none}}
.trial-card{position:relative;margin:4px 14px 14px;padding:18px 18px 16px;border-radius:22px;border:1px solid var(--line);background:var(--surface);color:var(--t1);box-shadow:0 10px 28px -18px rgba(20,19,16,.35)}
.trial-card h3{margin:0 34px 8px 0;font:700 18px/1.25 var(--ui);letter-spacing:-.025em}
.trial-card p{margin:0 0 14px;font:500 13px/1.5 var(--ui);color:var(--t2)}
.trial-x{position:absolute;right:8px;top:8px;width:36px;height:36px;border:0;border-radius:50%;background:transparent;color:var(--t2);font:400 22px/1 var(--ui);cursor:pointer}
.trial-go{width:100%;min-height:48px;margin:0}
@media (prefers-reduced-motion:reduce){.chl-done,.chl-burst i,.chl-bar i{animation:none;transition:none}.chl-burst{display:none}}

/* Плашка обучения на вкладках (сборка 89, решение владельца 19.10.2026): вместо подсказки поверх экрана — маленькая
   плашка над панелью вкладок; подсказка начинается только по нажатию, крестик убирает плашку навсегда */
.tour-chip{position:absolute;right:12px;bottom:calc(76px + var(--safe-bottom));z-index:30;display:flex;align-items:center;gap:2px;
  max-width:calc(100% - 24px);padding:3px 3px 3px 4px;border-radius:99px;background:var(--surface);border:1px solid var(--line);
  box-shadow:0 6px 18px rgba(0,0,0,.12)}
.tour-chip-open{font:600 12.5px var(--ui);color:var(--t1);padding:8px 10px;border-radius:99px;min-height:36px;text-align:left}
.tour-chip-x{width:36px;height:36px;border-radius:50%;font:500 18px/1 var(--ui);color:var(--t3);flex:none}
html.kb-open .tour-chip,html.form-screen .tour-chip{display:none}

/* заморозка серии (js/freeze.js, сборка 97): строка серии на «Дне», сообщение «Серию сохранила заморозка», лист серии,
   снежинка в календаре (вкладка «Заморозки» в «Вашем прогрессе» — progress.css .pg). Цвет льда — свой (--fz), остальное — от темы */
:root{--fz:#4f93c4}
.fz-chip{display:flex;align-items:center;gap:10px;width:calc(100% - 28px);margin:2px 14px 12px;padding:9px 12px 9px 13px;border-radius:16px;border:1px solid var(--line);background:var(--surface);color:var(--t1);font:600 13px/1.2 var(--ui);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.fz-chip svg{width:18px;height:18px;flex:none}
.fz-chip-streak{display:flex;align-items:center;gap:6px;flex:1;min-width:0;color:var(--t2)}
.fz-chip-streak svg,.fz-hero-ic{color:var(--orange,#d9824b)}
.fz-chip-streak b{font:750 16px/1 var(--ui);color:var(--t1);letter-spacing:-.02em}
.fz-chip-streak span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fz-chip-ice{display:inline-flex;align-items:center;gap:4px;padding:4px 9px 4px 7px;border-radius:999px;background:color-mix(in srgb,var(--fz) 13%,transparent);color:var(--fz)}
.fz-chip-ice svg{width:15px;height:15px}
.fz-chip-ice b{font:700 13px/1 var(--ui)}
.fz-chip-ice.is-empty{background:var(--fill);color:var(--t3)}
.fz-chip>i{font-style:normal;color:var(--t3);font-size:18px;line-height:1}
.fz-chip:focus-visible{outline:2px solid var(--fz);outline-offset:2px}
.fz-card{position:relative;margin:4px 14px 14px;padding:16px 16px 14px;border-radius:20px;border:1px solid color-mix(in srgb,var(--fz) 26%,var(--line));background:radial-gradient(ellipse at 100% 0%,color-mix(in srgb,var(--fz) 10%,transparent),transparent 62%),var(--surface);color:var(--t1);overflow:hidden;animation:fz-in .45s ease-out both}
.fz-top{display:flex;gap:12px;align-items:flex-start}.fz-copy{flex:1;min-width:0}
.fz-ic{flex:none;width:36px;height:36px;padding:7px;border-radius:12px;background:color-mix(in srgb,var(--fz) 14%,transparent);color:var(--fz)}
.fz-ic svg,.fz-hero-ic svg{display:block;width:100%;height:100%}
.fz-eyebrow{display:block;margin-bottom:6px;font:600 9px/1.4 var(--ui);letter-spacing:.17em;color:var(--t3)}
.fz-card h3{margin:0 0 6px;font:650 17px/1.25 var(--ui);letter-spacing:-.025em}
.fz-card p{margin:0;font:500 12.5px/1.5 var(--ui);color:var(--t2)}
.fz-card small{display:block;margin-top:8px;font:500 11px/1.45 var(--ui);color:var(--t3)}
.fz-btns{display:flex;gap:8px;margin-top:13px}.fz-btns .btn{flex:1 1 0;min-height:42px;margin:0;padding:10px 12px;font-size:13px}
@keyframes fz-in{0%{opacity:0;transform:translateY(6px)}100%{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.fz-card{animation:none}}
.cell-frz{position:absolute;right:4px;bottom:9px;width:11px;height:11px;color:var(--fz);pointer-events:none}.cell-frz svg{display:block;width:100%;height:100%}
.banner.fz-banner{background:var(--surface);border-color:color-mix(in srgb,var(--fz) 30%,var(--line))}
.banner.fz-banner b{color:var(--fz)}
.fz-wrap{z-index:140}
.fz-sheet{max-width:420px;padding:18px 18px 16px;max-height:calc(100dvh - 40px);overflow:auto;color:var(--t1)}
.fz-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.fz-head b{font:700 17px/1.2 var(--ui)}
.fz-hero{display:flex;align-items:center;gap:8px;margin:2px 0 14px}
.fz-hero-ic{flex:none;width:28px;height:28px}
.fz-hero b{font:800 34px/1 var(--ui);letter-spacing:-.04em}.fz-hero>span:last-child{font:600 14px/1.2 var(--ui);color:var(--t2)}
.fz-week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:0 0 14px;padding:0;list-style:none}
.fz-d{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px}
.fz-d-dot{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:1.5px solid var(--line);color:var(--t3);box-sizing:border-box}
.fz-d-dot svg{width:16px;height:16px}
.fz-d small{font:600 10px/1 var(--ui);color:var(--t3);text-transform:capitalize}
.fz-d.is-done .fz-d-dot{background:var(--green);border-color:var(--green);color:#fff}
.fz-d.is-frz .fz-d-dot{background:color-mix(in srgb,var(--fz) 16%,var(--surface));border-color:var(--fz);color:var(--fz)}
.fz-d.is-today .fz-d-dot{border-color:var(--t2);border-style:dashed}
.fz-d.is-miss .fz-d-dot{background:var(--fill)}
.fz-d.is-future{opacity:.5}
.fz-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.fz-head{gap:4px}.fz-head b{flex:1}
.fz-ib{flex:none;display:grid;place-items:center;width:44px;height:44px;margin:-8px 0 -8px 0;padding:0;border:0;border-radius:50%;background:none;color:var(--t2);cursor:pointer}.fz-ib svg{width:20px;height:20px}
.fz-ib[aria-expanded="true"]{color:var(--fz)}.fz-ib:focus-visible{outline:2px solid var(--fz);outline-offset:-2px}
.fz-help{margin:4px 0 14px;padding:10px 12px;border-radius:14px;background:var(--fill);font:500 12.5px/1.5 var(--ui);color:var(--t2)}.fz-help p{margin:0}.fz-help p+p{margin-top:6px}
.fz-stock{padding:12px 14px;border-radius:16px;background:color-mix(in srgb,var(--fz) 9%,var(--surface));border:1px solid color-mix(in srgb,var(--fz) 24%,var(--line))}
.fz-stock-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.fz-stock b{display:block;font:650 14px/1.25 var(--ui)}.fz-stock small{font:500 12px/1.3 var(--ui);color:var(--t2)}
.fz-slots{display:flex;gap:6px;flex:none}
.fz-slot{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;border:1.5px dashed color-mix(in srgb,var(--fz) 40%,var(--line));color:color-mix(in srgb,var(--fz) 40%,var(--t3));box-sizing:border-box}
.fz-slot.on{border-style:solid;border-color:var(--fz);background:var(--surface);color:var(--fz)}
.fz-slot svg{width:20px;height:20px}
/* запас до пяти (правило 24.10.2026): ячейки уже, чтобы пять встали рядом с подписью на 320 px */
.fz-slots{gap:4px}.fz-slot{width:28px;height:28px;border-radius:10px}.fz-slot svg{width:17px;height:17px}
.fz-ad{width:100%;min-height:46px;margin:8px 0 0}
.fz-how{margin:9px 0 0;font:500 12.5px/1.5 var(--ui);color:var(--t2)}
.fz-buy,.fz-earn{width:100%;min-height:46px;margin:11px 0 0}
.fz-buy{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap}.fz-cost{display:inline-flex;align-items:center;gap:4px}.fz-cost svg{width:16px;height:16px;color:var(--green)}
.fz-earn{margin-top:8px;display:flex;flex-direction:column;align-items:center;gap:2px}.fz-earn small{font:500 10.5px/1.2 var(--ui);color:var(--t3)}
.fz-note{margin:8px 0 0;text-align:center;font:500 12px/1.4 var(--ui);color:var(--t2)}
.fz-plus{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 7px;margin:12px 0 0;font:500 12px/1.45 var(--ui);color:var(--t2);text-align:center}
.fz-plus>b{padding:1px 5px;border:1px solid var(--line);border-radius:5px;font:600 9px/1.4 var(--ui);letter-spacing:.04em;color:var(--t2)}
.fz-help .linkbtn{display:inline-flex;align-items:center;width:auto;min-height:44px;margin:-12px 0;padding:0 2px;border:0;background:none;color:var(--green);font:650 12.5px/1.5 var(--ui);text-decoration:underline;text-underline-offset:2px;cursor:pointer}

/* прикреплённые дела (22 октября 2026): полоски «↑ до / ↓ после» под событием, делом или дозой — одним блоком с карточкой,
   у каждой свой кружок отметки (js/screens.js dayTaskCard); у приёма пищи полоски внутри его карточки, как раньше */
.att-group{display:flex;flex-direction:column}
.att-group>.evcard,.att-group>.dosecard{border-bottom-left-radius:6px;border-bottom-right-radius:6px}
.att-strips{display:flex;flex-direction:column;margin-top:3px;border:1px solid var(--line-soft);border-radius:6px 6px 14px 14px;overflow:hidden}
.att-strips .strip{border-top:0}
.att-strips .strip+.strip{border-top:1px solid var(--line-soft)}
/* обычная ссылка у шага ритуала — звенья цепи, открывается в браузере */
.playbtn.linkbtn svg{width:18px;height:18px}
/* ссылка или видео в плане (22 октября 2026, владелец: «как бады, прикреплено ниже»): плашка того же вида, что «↓ после»,
   вместо кружка — значок; отметки нет */
.strip.link{background:var(--green-bg);color:var(--green-tx)}
.strip.link .lk{width:16px;height:16px;flex:none;display:flex;align-items:center;justify-content:center}
.strip.link .lk svg{width:16px;height:16px}


/* ---- functional.css ---- */
/* Functional calendar only. No selectors apply to onboarding or its tour. */
@font-face{font-family:ZarokUI;src:url('public/fonts/manrope-400-cyrillic.woff2') format('woff2');font-weight:400;font-display:swap;unicode-range:U+0400-052F,U+2DE0-2DFF,U+A640-A69F}
@font-face{font-family:ZarokUI;src:url('public/fonts/manrope-400-latin.woff2') format('woff2');font-weight:400;font-display:swap;unicode-range:U+0000-024F}
@font-face{font-family:ZarokUI;src:url('public/fonts/manrope-600-cyrillic.woff2') format('woff2');font-weight:500 600;font-display:swap;unicode-range:U+0400-052F,U+2DE0-2DFF,U+A640-A69F}
@font-face{font-family:ZarokUI;src:url('public/fonts/manrope-600-latin.woff2') format('woff2');font-weight:500 600;font-display:swap;unicode-range:U+0000-024F}
@font-face{font-family:ZarokUI;src:url('public/fonts/manrope-700-cyrillic.woff2') format('woff2');font-weight:700;font-display:swap;unicode-range:U+0400-052F,U+2DE0-2DFF,U+A640-A69F}
@font-face{font-family:ZarokUI;src:url('public/fonts/manrope-700-latin.woff2') format('woff2');font-weight:700;font-display:swap;unicode-range:U+0000-024F}
@font-face{font-family:ZarokUI;src:url('public/fonts/manrope-800-cyrillic.woff2') format('woff2');font-weight:800;font-display:swap;unicode-range:U+0400-052F,U+2DE0-2DFF,U+A640-A69F}
@font-face{font-family:ZarokUI;src:url('public/fonts/manrope-800-latin.woff2') format('woff2');font-weight:800;font-display:swap;unicode-range:U+0000-024F}
.functional {
  --ui:ZarokUI,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  font-family:var(--ui);
  --bg:#f7f8f6; --bg2:#eff2ee; --surface:#fff;
  --t1:#202a25; --t2:#47574e; --t3:#627168; --t4:#626f67; --mute:#5d6c63;
  --line:#e1e7e1; --line-soft:#edf0ec; --line-btn:#d4ddd5;
  --green:#3e6653; --green-bg:#eaf2ec; --green-tx:#305442;
  --scrim:rgba(22,35,28,.28);
  --mark:#a5b5a9;
  font-size:14px; line-height:1.5;
  /* цвет текста — от темы: иначе он наследуется от body со светлыми значениями */
  color:var(--t1);
}
.functional .screen { background:var(--bg); }
.functional .scroll { margin-bottom:0; padding-bottom:20px; }
.functional :is(button,input,textarea,select):focus-visible { outline:3px solid var(--acc-ring); outline-offset:3px; }
.functional button { transition:background .15s,color .15s; }
.functional button:disabled { opacity:.45; cursor:default; }
.functional .hdr,.functional .cal-hdr,.functional .plain-hdr { padding:22px 20px 16px; border-bottom:1px solid var(--line); }
.functional .hdr-date,.functional .plain-hdr h1 { font-size:28px; line-height:1.15; letter-spacing:-.035em; font-weight:800; }
.functional .hdr-sub { font-size:13px; margin-top:7px; }
.functional .hdr-prog { margin-top:18px; }
.functional .hdr-prog span { font:600 12px var(--ui); color:var(--t2); }
.functional .track { height:4px; }
.functional .navbtn { width:44px; height:44px; border-radius:14px; border-color:var(--line); font-size:24px; }
.functional .today-nav { font-size:18px; }
.functional .plain-hdr { min-height:80px; }
.functional .plain-hdr .sub { font:500 12px var(--ui); }
.functional .tabbar { padding:8px 8px calc(8px + var(--safe-bottom)); align-items:stretch; }
.functional .tab { min-height:56px; justify-content:center; color:var(--t3); gap:4px; }
.functional .tab-ico { width:48px; height:28px; border-radius:9px; }
.functional .tab-lb { font-size:10px; }
.functional .tab.on { color:var(--green-tx); }
.functional .tab.on .tab-ico { background:var(--green-bg); }
.functional .tab-assistant:not(.on) .tab-ico { color:var(--green); }
.functional .timeline { padding:8px 16px 20px; grid-template-columns:39px minmax(0,1fr); gap:10px 8px; }
.functional .tl-time b { font:600 11px var(--ui); color:var(--t3); }
/* --rt-card-r, --rt-card-shadow, --rt-btn-r — радиусы и тень из каталога тем (js/themes-remote.js); без них — как всегда */
.functional :is(.evcard,.dosecard,.card,.course,.fold,.prog) { border-radius:var(--rt-card-r,16px); box-shadow:var(--rt-card-shadow,none); }
.functional :is(.evcard,.dosecard) { padding:12px; gap:6px; background:var(--surface) !important; border-color:var(--line) !important; }
/* иконки видов записей, как в первой версии: цветной значок слева в карточке */
.functional .evbadge { width:34px; height:34px; border-radius:11px; padding:7px; flex:none; display:flex; align-items:center; justify-content:center; }
.functional .evbadge.sm { width:30px; height:30px; border-radius:10px; padding:6px; }
.functional .evbadge svg { width:100%; height:100%; display:block; }
.functional .kind-auto { display:flex; align-items:center; gap:10px; width:100%; min-height:44px; margin:-4px 0 14px; padding:6px 10px; border:1px solid var(--line); border-radius:12px; background:var(--surface); text-align:left; }
.functional .kind-auto { color:var(--t1); }
.functional .kind-auto .kind-ic { color:var(--kind, currentColor); width:30px; height:30px; border-radius:9px; padding:6px; flex:none; display:flex; }
.functional .kind-auto .kind-ic svg { width:100%; height:100%; }
/* название вида — цветом текста темы: цвет вида остаётся у значка (серые и светлые виды как текст не читались) */
.functional .kind-auto b { font-size:13px; font-weight:700; color:var(--t1); }
.functional .kind-auto em { margin-left:auto; font-style:normal; font-size:11px; color:var(--t3); }
.functional .evtext { min-width:0; flex:1; }
.functional .evtext b { color:var(--t1) !important; font-size:14px; line-height:1.4; overflow-wrap:anywhere; }
.functional .evtext span { font-size:12px; line-height:1.45; color:var(--t3); margin-top:4px; }
.functional .icon-btn { min-width:32px; min-height:44px; font-size:22px; color:var(--t3); }
.functional .chk { position:relative; width:44px; height:44px; flex:none; border:0; background:transparent; color:transparent; border-radius:13px; font-size:0; }
.functional .chk::before { content:''; position:absolute; width:24px; height:24px; border:1.5px solid var(--mark); border-radius:8px; display:grid; place-items:center; }
.functional .chk.on::before { content:'✓'; background:var(--green); border-color:var(--green); color:var(--on-acc); font-size:14px; }
.functional .prep-row2.on .prep-body b { color:var(--t3); text-decoration:line-through; }
.functional .donerow { min-height:60px; border-radius:14px; padding:8px 12px; }
/* при крупном системном шрифте три кнопки в строку не помещаются — лишняя уходит на вторую строку,
   а не растягивает экран вбок */
.functional .day-actions { display:flex; flex-wrap:wrap; gap:6px; padding:16px 16px 12px; }
.functional .day-actions .btn { padding:0 10px; font-size:12px; flex:1; white-space:nowrap; }
.functional :is(.btn,.addbtn,.addrow) { min-height:44px; border-radius:var(--rt-btn-r,12px); font-size:13px; font-weight:650; box-shadow:none; }
.functional .btn.green,.functional .btn.dark { background:var(--green); color:var(--on-acc); border-color:var(--green); }
.functional .addrow { border-style:solid; background:var(--surface); }
.functional .addpair2 { gap:10px; }
.functional .dayempty { padding:50px 24px; text-align:center; }
.functional .dayempty b,.functional .empty b { font-size:18px; color:var(--t1); }
.functional .dayempty p,.functional .empty p { font-size:13px; line-height:1.65; color:var(--t3); margin:8px 0 0; }
.functional .empty { padding:40px 12px 30px; }
/* шаг «Подготовка» перед распорядком дня: карточка из первой версии */
.functional .prep-step { padding:16px 16px 24px; gap:14px; }
.functional .prep-lead { margin:0 4px; font-size:13px; line-height:1.6; color:var(--t3); }
.functional .prep-card, .functional .rit-card { border-radius:16px; padding:14px 14px 4px; }
.functional .prep-card .scard-h b, .functional .rit-card .scard-h b { font-size:15px; font-weight:750; }
.functional .prep-card .scount, .functional .rit-card .scount { color:var(--t3); }
.functional .prep-card .sbar, .functional .rit-card .sbar { background:var(--line-soft); margin:10px 0 6px; }
.functional .prep-card .sbar i, .functional .rit-card .sbar i { background:linear-gradient(90deg,var(--acc-1),var(--acc-2)); }
.functional .prep-card .prep-row2, .functional .rit-card .prep-row2 { text-align:left; }
.functional .prep-card .dotchk, .functional .rit-card .dotchk { width:24px; height:24px; border-color:var(--mark); }
.functional .prep-card .prep-row2.on .dotchk, .functional .rit-card .prep-row2.on .dotchk { background:linear-gradient(145deg,var(--acc-1),var(--acc-edge)); border-color:var(--acc-edge); }
.functional .prep-go { width:100%; min-height:50px; font-size:14px; }
.functional .prep-inline { margin:16px 16px 0; padding:0 14px; border:1px solid var(--line); border-radius:14px; background:var(--surface); }
.functional .prep-heading { width:100%; display:flex; align-items:center; gap:8px; min-height:48px; font-size:13px; font-weight:650; }
.functional .prep-heading small { margin-left:auto; color:var(--t3); font-size:12px; }
.functional .prep-row2 { min-height:48px; border-top:1px solid var(--line-soft); }
.functional .banner { margin:14px 16px 0; padding:12px 14px; }
/* зарок на «Дне» и в выбранном дне «Месяца» — в тех же полях, что баннер и подготовка;
   в списке «Курсов» поля уже даёт сам список */
.functional .quitcard { margin:14px 16px 0; }
.functional .list .quitcard { margin:0; }
.functional .banner span { font-size:12px; }
.functional .cal-title { font-size:19px; font-weight:750; }
.functional .cal-hdr { padding-top:16px; }
.functional .segrow { margin-top:14px; }
.functional .viewseg { border:0; padding:3px; }
.functional .viewseg button { min-height:38px; font-size:12px; }
.functional .segadd { background:transparent; color:var(--green-tx); font-size:12px; min-height:44px; }
.functional .dow { padding:16px 14px 8px; font:650 10px var(--ui); color:var(--t3); gap:3px; }
.functional .grid { padding:0 14px 16px; gap:3px; }
.functional .cell { min-height:48px; height:48px; border:0; border-radius:12px; align-items:center; padding:6px 2px; background:transparent !important; }
.functional .cell.sel { background:var(--green-bg) !important; box-shadow:inset 0 0 0 1.5px var(--acc-ring); }
.functional .cell-n { color:var(--t2) !important; font-size:13px; min-height:21px; display:flex; align-items:center; }
.functional .cell-n.today { color:var(--on-acc) !important; background:var(--green); width:23px; height:23px; margin:0; }
.functional .cell-dots { padding:0; gap:3px; margin-top:auto; }
.functional .cell-dots i { width:4px; height:4px; }
.functional .cell-bar { display:none; }
/* прошедшие дни серые, внимание на сегодня и будущее */
.functional .cell.past .cell-n { color:var(--t4) !important; font-weight:500; }
.functional .cell.past .cell-dots { opacity:.4; filter:grayscale(1); }
.functional .agenda-row.past { background:var(--bg2); box-shadow:none; }
/* прошедшие дни приглушены цветом и фоном строки; прозрачность убрана — с ней текст не дотягивал до нормы читаемости */
.functional .agenda-row.past .agenda-date b, .functional .agenda-row.past .agenda-body { color:var(--t3); }
/* Счётчик дня в списке календаря: цвет статуса разметка передаёт переменной --stat — им рисуется только рамка, а цифры —
   цветом текста темы (цветом статуса «впереди» и «вне учёта» цифры не читались ни в одной теме). У прошедшего дня
   рамка обычная и текст приглушён. */
.functional .agenda-stat { color:var(--t2); border-color:var(--stat, currentColor); }
.functional .agenda-row.past .agenda-stat { color:var(--t3); border-color:var(--line); }
.functional .agenda-row.past .chip { filter:grayscale(1); }
.functional .selected-day { border-top:1px solid var(--line); }
.functional .selected-day h2 { margin:18px 20px 0; font-size:17px; letter-spacing:-.02em; }
.functional .selected-day .dayempty { padding:28px 20px; }
.functional .selected-day .prep-inline { margin-top:12px; }
.functional .list { padding:16px; gap:12px; }
.functional .account-card { background:var(--surface); padding:18px; border:1px solid var(--line); border-radius:16px; margin-bottom:12px; }
.functional .account-card h2 { margin:0 0 6px; font-size:16px; letter-spacing:-.02em; }
.functional .account-card p { margin:4px 0 12px; color:var(--t3); font-size:13px; line-height:1.6; }
.functional .account-card .access-panel { padding:0; border:0; background:none; }
.functional .text-button { min-height:44px; padding:8px 0; display:block; color:var(--green-tx); font-size:13px; font-weight:600; }
.functional .assistant-intro { padding:28px 20px; }
.functional .assistant-intro h2 { margin:0 0 10px; font-size:23px; line-height:1.3; letter-spacing:-.025em; }
.functional .assistant-intro>p { color:var(--t3); font-size:14px; line-height:1.7; margin:0 0 24px; }
.functional .access-panel { border:1px solid var(--line); border-radius:16px; padding:18px; background:var(--surface); }
.functional .access-panel p { margin:0 0 12px; font-size:13px; color:var(--t2); line-height:1.65; }
.functional .access-panel p:last-child { margin:0; }
.functional .chat-hdr { padding:18px 20px; border-bottom:1px solid var(--line); }
.functional .aimark.xs { background:var(--green-bg); color:var(--green); box-shadow:none; border-radius:12px; }
.functional .chat-empty { padding:28px 4px 16px; }
.functional .chat-empty h2 { font-size:22px; line-height:1.35; margin:0 0 8px; letter-spacing:-.025em; }
.functional .chat-empty p { margin:0; font-size:13px; color:var(--t3); }
.functional .chat-inner { padding:16px; }
.functional .bub { font-size:14px; line-height:1.65; border-radius:16px; }
.functional .bub.me { background:var(--green-bg); color:var(--t1); }
.functional .chips { gap:8px; }
.functional .chip { padding:10px 12px; min-height:40px; font-size:12px; }
/* Помощник — обычная переписка: быстрые варианты мелкими кнопками под
   сообщением помощника, короткая строка об ИИ под ответом модели */
.functional .qr { display:flex; flex-wrap:wrap; gap:6px; align-self:flex-start; max-width:92%; margin:-2px 0 2px; }
.functional .qr-btn { min-height:34px; padding:6px 12px; border-radius:99px; border:1px solid var(--line-btn); background:var(--surface); font:650 12.5px var(--ui); color:var(--green-tx); }
.functional .qr-btn.main { background:linear-gradient(145deg,var(--acc-1) 0%,var(--acc-2) 55%,var(--acc-3) 100%); border-color:var(--acc-edge); color:var(--on-acc); box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 6px 14px -10px rgba(38,72,55,.9); }
.functional .qr-btn:disabled { opacity:.45; box-shadow:none; }
.functional .planbox { border-radius:16px; }
.functional .pb-one { display:flex; align-items:flex-start; gap:10px; }
.functional .pb-one .tick { flex:none; margin-top:2px; }
.functional .csend.idle { opacity:.5; box-shadow:none; }
/* экран условий помощника: один раз до начала работы */
.functional .ai-intro { padding:20px 20px 28px; }
.functional .ai-consent p { margin:0 0 14px; font-size:14px; line-height:1.65; color:var(--t2); }
.functional .ai-consent .inlink { font:inherit; color:var(--green-tx); text-decoration:underline; padding:0; }
.functional .ai-consent .ai-go { width:100%; min-height:50px; font-size:15px; margin-top:6px; }
.functional .ai-consent .consent-note { margin:12px 2px 0; text-align:left; }
.functional .sheet .ai-consent p { font-size:13px; }
/* чат: короткая строка об ИИ над полем ввода, жалоба — маленькой кнопкой у ответа */
.functional .ai-hint { margin:0; padding:6px 16px; font-size:11px; line-height:1.4; color:var(--t3); text-align:center; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; background:var(--bg); }
.functional .bub-row { display:flex; align-items:flex-end; gap:4px; align-self:flex-start; max-width:92%; }
.functional .bub-row .bub { max-width:none; }
.functional .bub-flag { flex:none; width:32px; height:32px; border-radius:10px; display:flex; align-items:center; justify-content:center; color:var(--t4); opacity:.8; }
.functional .bub-flag svg { width:15px; height:15px; }
.functional .bub-flag.done { color:var(--green); }
/* запись голоса: распознанное подсказкой над полем, «Стоп» дописывает его в поле */
.functional .recbar { display:flex; align-items:center; gap:10px; }
.functional .recprev { flex:1; min-width:0; font-size:13px; line-height:1.4; color:var(--t2); overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.functional .cbtn.rec svg { width:18px; height:18px; }
.functional .composer { padding:8px 12px 12px; gap:6px; }
.functional .cinput { font-size:16px; line-height:1.5; border-radius:13px; }
.functional .cbtn,.functional .csend { width:44px; height:44px; border-radius:12px; }
.functional .csend { background:var(--green); }
.functional .ai-consent-inline { padding:12px 16px; max-height:42dvh; overflow:auto; background:var(--surface); border-top:1px solid var(--line); }
.functional .ai-consent-inline .ainote { padding:0; margin:0 0 10px; background:none; border:0; font-size:12px; line-height:1.6; color:var(--t2); }
.functional .consent-note { margin:8px 0 0; font-size:11px; line-height:1.5; color:var(--t3); }
.functional .sheet .ai-consent-inline { padding:0; max-height:none; overflow:visible; background:none; border-top:0; }
.functional .sheet { border-radius:24px 24px 0 0; max-height:94%; box-shadow:0 -8px 32px #16231c18; }
.functional .sheet-h { padding:10px 20px 16px; }
.functional .sheet-h h2 { font-size:21px; line-height:1.3; text-transform:none; }
.functional .sheet-body { padding:18px 20px; }
.functional .sheet-foot { padding:12px 16px calc(14px + var(--safe-bottom)); }
.functional .sheet-foot .btn { min-height:48px; }
.functional .field { margin-bottom:16px; }
.functional .field label { display:block; font:600 12px/1.4 var(--ui); color:var(--t2); margin-bottom:7px; text-transform:none; letter-spacing:0; }
.functional .input { font-size:16px; min-height:48px; padding:12px; border-radius:12px; background:var(--input-bg); }
.functional .seg button { min-height:40px; font-size:12px; }
.functional .qtext,.functional .legal { font-size:13px; line-height:1.7; }
.functional .hint { font-size:12px; line-height:1.6; color:var(--t3); }
.functional .warn { font-size:13px; line-height:1.6; }
.functional .legal-links { display:flex; flex-wrap:wrap; gap:16px; }
.functional .legal-links button { min-height:44px; color:var(--green-tx); font-size:12px; text-decoration:underline; }
.functional .date-jump { display:block; position:relative; cursor:pointer; }
.functional .date-jump input { position:absolute; inset:0; opacity:0; width:100%; cursor:pointer; }
.functional .date-jump:focus-within { outline:2px solid var(--green); border-radius:6px; }
.functional .toast { display:flex; gap:12px; align-items:center; font-size:13px; line-height:1.5; bottom:calc(86px + var(--safe-bottom)); }
.functional .toast button { pointer-events:auto; min-height:44px; color:#fff; text-decoration:underline; font-weight:700; }
@media(max-width:360px) {
  .functional .hdr,.functional .plain-hdr { padding-left:16px; padding-right:16px; }
  .functional .hdr-date { font-size:25px; }
  .functional .day-actions { gap:4px; padding-left:12px; padding-right:12px; }
  .functional .day-actions .btn { font-size:11px; padding:0 7px; }
  .functional .timeline { padding-left:12px; padding-right:12px; grid-template-columns:34px minmax(0,1fr); gap:8px 5px; }
  .functional .evcard { padding:10px 8px; }
  .functional .quitcard { margin-left:12px; margin-right:12px; padding:0 12px 12px; }
  .functional .list .quitcard { margin:0; }
  .functional .q-btns { gap:5px; }
  .functional .q-btn { font-size:12px; padding:0 6px; }
  .functional .q-btn.ghost { flex-basis:36px; padding:0; }
  .functional .q-btn.soft { padding:0 9px; }
}
@media(prefers-reduced-motion:reduce) {
  .functional *, .functional *::before, .functional *::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
}

/* Глянец, как в версии до Astra: на акцентных элементах мягкий градиент,
   блик сверху и цветная тень. Раньше так были сделаны кнопка отправки,
   свои сообщения в чате, значок помощника, полоса «Старт дня» и ярлыки
   курсов; здесь тот же приём в новой палитре. Поверхности остаются плоскими. */
.functional .btn.green,.functional .btn.dark {
  background:linear-gradient(145deg,var(--acc-1) 0%,var(--acc-2) 55%,var(--acc-3) 100%);
  border-color:var(--acc-edge);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 8px 18px -12px rgba(38,72,55,.85);
}
.functional .btn.green:active,.functional .btn.dark:active { box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 3px 8px -6px rgba(38,72,55,.8); }
.functional .csend {
  background:linear-gradient(145deg,var(--acc-1) 0%,var(--acc-2) 55%,var(--acc-3) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 6px 14px -8px rgba(38,72,55,.9);
}
.functional .csend:disabled { box-shadow:none; }
.functional .bub.me {
  background:linear-gradient(160deg,var(--me-1) 0%,var(--me-2) 100%);
  box-shadow:inset 0 1px 0 var(--hl),0 3px 8px -5px rgba(38,72,55,.3);
}
.functional .aimark.xs {
  background:linear-gradient(145deg,var(--acc-1) 0%,var(--acc-2) 60%,var(--acc-3) 100%); color:var(--on-acc);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 8px 16px -10px rgba(38,72,55,.85);
}
.functional .tab.on .tab-ico {
  background:linear-gradient(180deg,var(--tab-1) 0%,var(--tab-2) 100%);
  box-shadow:inset 0 1px 0 var(--hl),0 2px 6px -3px rgba(38,72,55,.35);
}
.functional .viewseg button.on { box-shadow:inset 0 1px 0 var(--hl),0 2px 6px -3px rgba(30,50,40,.3); }
.functional .chk.on::before {
  background:linear-gradient(145deg,var(--acc-1) 0%,var(--acc-2) 60%,var(--acc-3) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 3px 8px -4px rgba(38,72,55,.8);
}
.functional .cell-n.today { background:linear-gradient(145deg,var(--acc-1) 0%,var(--acc-edge) 100%); box-shadow:0 4px 10px -5px rgba(38,72,55,.85); }

/* ============================================================
   ТЕМЫ ОФОРМЛЕНИЯ
   Тема ставится на <html data-theme> только в рабочей части приложения:
   анкета и приветствие всегда светлые. Каждая тема переопределяет те же
   переменные, что и светлая, поэтому экраны не знают о темах ничего.
   Фотографии (фоны пустых экранов, «отдых» после закрытого дня, фон
   помощника) подстраиваются под тему: фильтр, подкраска цветом темы
   и вуаль сверху под текст.
   ============================================================ */
html[data-theme="dark"]{--page:#0b0e0c}
html[data-theme="dark"] .app.functional{
  color-scheme:dark;
  --bg:#111513; --bg2:#171c19; --surface:#1a201d;
  --t1:#e7ece8; --t2:#b5c0b9; --t3:#8e9a92; --t4:#838d87;
  --line:#28302b; --line-soft:#1f2622; --line-btn:#343e38;
  --green:#467d62; --green-bg:#1d2d25; --green-tx:#9dcab0;
  --yellow:#e2c27f; --yellow-bg:#29231a; --yellow-bd:#453a22;
  --scrim:rgba(0,0,0,.58);
  --fill:#242b27; --fill-2:#1e2521; --mark:#56645c; --hair:#2c3530; --mute:#8e9a92; --dash:#434e47;
  --danger:#e38b77; --danger-bg:#2b1a16; --danger-bd:#55302a;
  --acc-1:#488164; --acc-2:#427a5e; --acc-3:#3b6d54; --acc-edge:#3f7459; --acc-ring:#6fa388;
  --input-bg:#151a17; --me-1:#22322a; --me-2:#1c2b23; --tab-1:#23332a; --tab-2:#1d2c24;
  --hl:rgba(255,255,255,.06); --on-t1:#111513;
  --ph-filter:brightness(.52) saturate(.72) contrast(1.04);
  --ph-veil:linear-gradient(to bottom,rgba(17,21,19,.9) 0%,rgba(17,21,19,.5) 40%,rgba(17,21,19,.06) 70%,rgba(17,21,19,.3) 100%);
}
/* «Ваш прогресс» на плитке профиля красится --green (заливка кнопок); в тёмной теме это 3.5:1 — тот же зелёный светлее, 4.6:1 (24.10.2026) */
html[data-theme="dark"] .app.functional .pr-tile-more{color:#539474}
html[data-theme="sage"]{--page:#dde7df}
html[data-theme="sage"] .app.functional{
  --bg:#eef3ef; --bg2:#e3ebe5; --surface:#fbfdfb;
  --t1:#1c2a22; --t2:#43574a; --t3:#586d60; --t4:#5b6d63;
  --line:#d5e1d8; --line-soft:#e5ede7; --line-btn:#c5d5c9;
  --green:#386a50; --green-bg:#dcebe1; --green-tx:#2a543e;
  --fill:#dde7df; --fill-2:#e6eee8; --mark:#9db4a4; --hair:#d0ded4; --dash:#b6c8bb; --mute:#5b6d63;
  --acc-1:#4d8267; --acc-2:#386a50; --acc-3:#2e5b44; --acc-edge:#33614a; --acc-ring:#86ab93;
  --input-bg:#f5f9f6; --me-1:#e7f2ea; --me-2:#d6e9dc; --tab-1:#e4f0e7; --tab-2:#d3e7d9;
  --ph-tint:#5f8f72; --ph-tint-op:.5;
}
html[data-theme="sand"]{--page:#e8e0d2}
html[data-theme="sand"] .app.functional{
  --bg:#f6f1e9; --bg2:#eee7db; --surface:#fffcf7;
  --t1:#29231b; --t2:#54493c; --t3:#716556; --t4:#72685a;
  --line:#e6ddcd; --line-soft:#efe8dc; --line-btn:#d9cebb;
  --green:#646d45; --green-bg:#ebe9d8; --green-tx:#4c5434;
  --fill:#ebe3d5; --fill-2:#f1ebe0; --mark:#c2b59f; --hair:#e1d9c8; --dash:#d0c4ae; --mute:#72685a;
  --acc-1:#78825a; --acc-2:#646d45; --acc-3:#545c39; --acc-edge:#5a633e; --acc-ring:#a6ad84;
  --input-bg:#fbf8f2; --me-1:#f3f1e4; --me-2:#e8e5d0; --tab-1:#f2efe2; --tab-2:#e5e1cc;
  --ph-tint:#b99a6b; --ph-tint-op:.22;
}
html[data-theme="mist"]{--page:#dfe5ec}
html[data-theme="mist"] .app.functional{
  --bg:#f1f4f7; --bg2:#e7ecf1; --surface:#fcfdfe;
  --t1:#1b2430; --t2:#445162; --t3:#5c6a7c; --t4:#5f6b7d;
  --line:#d9e0e8; --line-soft:#e8edf2; --line-btn:#c9d3de;
  --green:#3d6283; --green-bg:#e0eaf4; --green-tx:#2d4e6c;
  --fill:#e2e8ef; --fill-2:#e9eef3; --mark:#a0b0c2; --hair:#d4dde7; --dash:#b9c6d3; --mute:#5f6b7d;
  --acc-1:#54789b; --acc-2:#3d6283; --acc-3:#32526f; --acc-edge:#375977; --acc-ring:#8aa3bd;
  --input-bg:#f8fafc; --me-1:#edf2f8; --me-2:#dde7f2; --tab-1:#ebf1f8; --tab-2:#dae5f1;
  --ph-tint:#6f8cab; --ph-tint-op:.45;
}
/* тёмная: глянец и светлые подложки, которые на тёмном смотрятся мутно */
html[data-theme="dark"] .app.functional .tagchip{background-image:none;box-shadow:none}
html[data-theme="dark"] .app.functional .toast{background:#2a332e;box-shadow:0 10px 28px -8px rgba(0,0,0,.7)}
html[data-theme="dark"] .app.functional .dlg-btns .danger{background:#b3503b;border-color:#b3503b}

/* фотографии подстраиваются под тему */
#appbg{isolation:isolate}
#appbg i{filter:var(--ph-filter)}
#appbg::after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:var(--ph-tint);opacity:var(--ph-tint-op);mix-blend-mode:color}
#appbg::before{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;background:var(--ph-veil)}
.restcard{isolation:isolate}
.restcard-ph{position:relative;filter:var(--ph-filter)}
.restcard-ph::after{content:'';position:absolute;inset:0;background:var(--ph-tint);opacity:var(--ph-tint-op);mix-blend-mode:color}

/* Без фоновых картинок и декора: цвета темы те же, но нет фото, глянца,
   свечений и цветных теней — ровные заливки и спокойные поверхности */
html.plain .app.functional #appbg,
html.plain .app.functional .restcard-ph,
html.plain .app.functional .praise-glow,
html.plain .app.functional .praise-card > i{display:none}
html.plain .app.functional .btn.green,
html.plain .app.functional .btn.dark,
html.plain .app.functional .csend,
html.plain .app.functional .aimark.xs,
html.plain .app.functional .qr-btn.main,
html.plain .app.functional .cell-n.today,
html.plain .app.functional .chk.on::before{background:var(--green);border-color:var(--green);box-shadow:none}
html.plain .app.functional .csend:disabled{background:var(--fill);color:var(--t3)}
html.plain .app.functional .bub.me{background:var(--green-bg);box-shadow:none}
html.plain .app.functional .tab.on .tab-ico{background:var(--green-bg);box-shadow:none}
html.plain .app.functional .viewseg button.on{box-shadow:none}
html.plain .app.functional .tagchip{background-image:none;box-shadow:none}
html.plain .app.functional .tab-ai{animation:none}

/* выбор фоновой картинки: три плитки с самим фоном */
.bg-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0 4px}
.bg-tile{display:flex;flex-direction:column;gap:8px;padding:8px 8px 10px;border-radius:18px;background:var(--surface);box-shadow:0 0 0 1px var(--line),0 6px 16px -14px rgba(30,40,34,.5);font:600 12px/1.2 var(--ui);color:var(--t1);text-align:center;transition:box-shadow .18s}
.bg-tile.on{box-shadow:0 0 0 2px var(--green),0 8px 20px -14px rgba(30,40,34,.55)}
.bg-tile:active{transform:scale(.98)}
.bg-pv{display:block;aspect-ratio:3/4;border-radius:12px;background:50% 100% / cover no-repeat var(--fill)}
.bg-tile b{display:flex;align-items:center;justify-content:center;gap:5px;font-weight:700;flex-wrap:wrap}
.bg-tile b svg{width:13px;height:13px;color:var(--green)}
/* мини-экран темы: фон, карточка с двумя строками и отметка акцентом */
.look-pv{
  position:relative;display:block;height:64px;border-radius:12px;overflow:hidden;background:var(--pv-bg);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)
}
.look-pv::before{
  content:'';position:absolute;left:8px;right:8px;top:10px;height:26px;border-radius:8px;background:var(--pv-sf);
  box-shadow:0 2px 6px -3px rgba(0,0,0,.25)
}
.look-pv::after{
  content:'';position:absolute;left:14px;top:16px;width:30%;height:5px;border-radius:9px;background:var(--pv-t);
  box-shadow:0 8px 0 -.5px var(--pv-t2)
}
.look-pv i{position:absolute;right:14px;top:17px;width:12px;height:12px;border-radius:5px;background:var(--pv-ac)}
.look-pv u{position:absolute;left:8px;right:8px;bottom:8px;height:10px;border-radius:6px;background:var(--pv-sf);opacity:.7}
.look-premium{display:block;width:100%;font-size:9px;font-weight:700;letter-spacing:.3px;color:#9b7a43}
/* переключатель */
.setrow.switchrow{padding:12px 0}
.switch{
  position:relative;flex:none;width:46px;height:28px;border-radius:99px;background:var(--mark);
  transition:background .2s
}
.switch::after{
  content:'';position:absolute;left:3px;top:3px;width:22px;height:22px;border-radius:50%;background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .2s ease
}
.switchrow[aria-checked="true"] .switch{background:var(--green)}
.switchrow[aria-checked="true"] .switch::after{transform:translateX(18px)}

/* ============================================================
   СОГЛАСИЕ ПЕРЕД ПОМОЩНИКОМ
   Фон — картинка раздела «Помощник» под цвет темы (#appbg). Текст —
   в стеклянной карточке, листается сам по себе, полосы прокрутки нет:
   о продолжении говорят затухание снизу и стрелка. Дочитали — стрелка
   и затухание уходят, «Продолжить» оживает.
   ============================================================ */
.functional .ai-gate{flex:1;min-height:0;display:flex;flex-direction:column;padding:0 18px 14px}
.functional .ai-gate-head{flex:none;padding:26px 4px 16px}
.functional .ai-gate-head h1{margin:0;font:800 28px/1.12 var(--ui);letter-spacing:-.035em;color:var(--t1)}
.functional .ai-gate-head p{margin:8px 0 0;max-width:330px;font:500 13.5px/1.5 var(--ui);color:var(--t2)}
.functional .ai-gate-card{
  position:relative;flex:1 1 auto;min-height:170px;display:flex;flex-direction:column;overflow:hidden;
  border-radius:22px;background:color-mix(in srgb,var(--surface) 84%,transparent);
  -webkit-backdrop-filter:blur(18px) saturate(1.08);backdrop-filter:blur(18px) saturate(1.08);
  box-shadow:inset 0 1px 0 var(--hl),0 22px 44px -34px rgba(24,32,28,.6)
}
.functional .ai-gate-text{
  flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:18px 18px 40px;
  -webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 64px),transparent);
  mask-image:linear-gradient(to bottom,#000 calc(100% - 64px),transparent)
}
.functional .ai-gate-card.atend .ai-gate-text{padding-bottom:18px;-webkit-mask-image:none;mask-image:none}
.functional .ai-gate-text p{margin:0 0 12px;font:500 13.5px/1.62 var(--ui);color:var(--t2)}
.functional .ai-gate-text p:last-child{margin-bottom:0}
.functional .ai-gate-text b{color:var(--t1);font-weight:700}
.functional .ai-gate-text .inlink,.functional .ai-gate .consent-note .inlink{
  color:var(--green-tx);font-weight:600;text-underline-offset:2px;text-decoration-thickness:1px
}
.functional .ai-gate-text:focus-visible{outline:3px solid var(--acc-ring);outline-offset:-3px;border-radius:22px}
.functional .ai-gate-more{
  position:absolute;left:50%;bottom:10px;width:34px;height:34px;margin-left:-17px;border-radius:50%;
  display:grid;place-items:center;color:var(--t2);
  background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:0 6px 16px -8px rgba(0,0,0,.4);
  transition:opacity .25s ease,transform .25s ease;animation:gateNudge 1.6s ease-in-out .6s 2
}
.functional .ai-gate-more svg{width:17px;height:17px}
.functional .ai-gate-card.atend .ai-gate-more{opacity:0;transform:translateY(8px);pointer-events:none;animation:none}
@keyframes gateNudge{0%,100%{transform:none}50%{transform:translateY(4px)}}
.functional .ai-gate-dock{flex:none;padding-top:12px}
.functional .ai-gate-cta{width:100%;min-height:52px;font-size:15px;justify-content:center;text-align:center;transition:opacity .3s ease,box-shadow .3s ease}
.functional .ai-gate-cta[disabled]{opacity:.4;box-shadow:none}
/* подпись поверх картинки: мягкое свечение цветом фона вместо плашки */
.functional .ai-gate .consent-note{
  margin:10px 0 0;text-align:center;text-wrap:balance;font:500 11.5px/1.5 var(--ui);color:var(--t2);
  text-shadow:0 0 6px var(--bg),0 0 12px var(--bg),0 0 2px var(--bg)
}
/* без картинки фона стекло не нужно: обычная карточка с тонкой линией */
html.plain .app.functional .ai-gate-card{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:0 0 0 1px var(--line)}
@media(max-height:640px){
  .functional .ai-gate-head{padding:16px 4px 10px}
  .functional .ai-gate-head h1{font-size:24px}
  .functional .ai-gate-head p{display:none}
}

/* ---------- чёрно-белые темы ----------
   Светлая — чёрным по белому: чёрные контрастные кнопки и отметки.
   Тёмная — наоборот: белые кнопки с чёрным текстом на чёрном.
   Фотографии — в оттенках серого. */
html[data-theme="bw"]{--page:#e6e6e6}
html[data-theme="bw"] .app.functional{
  --bg:#f5f5f5; --bg2:#ededed; --surface:#ffffff;
  --t1:#111111; --t2:#3b3b3b; --t3:#666666; --t4:#6c6c6c;
  --line:#e0e0e0; --line-soft:#ececec; --line-btn:#cfcfcf;
  --green:#111111; --green-bg:#ebebeb; --green-tx:#111111;
  --yellow:#5c5140; --yellow-bg:#f4f2ee; --yellow-bd:#e2ddd3;
  --fill:#e8e8e8; --fill-2:#efefef; --mark:#8f8f8f; --hair:#dedede; --mute:#6a6a6a; --dash:#bdbdbd;
  --acc-1:#3a3a3a; --acc-2:#1a1a1a; --acc-3:#000000; --acc-edge:#111111; --acc-ring:#7a7a7a;
  --input-bg:#fafafa; --me-1:#f2f2f2; --me-2:#e6e6e6; --tab-1:#eeeeee; --tab-2:#e0e0e0;
  --on-acc:#ffffff;
  --ph-filter:grayscale(1) contrast(1.03);
}
html[data-theme="bwdark"]{--page:#000000}
html[data-theme="bwdark"] .app.functional{
  color-scheme:dark;
  --bg:#0b0b0b; --bg2:#141414; --surface:#171717;
  --t1:#f5f5f5; --t2:#cacaca; --t3:#8f8f8f; --t4:#848484;
  --line:#2b2b2b; --line-soft:#1f1f1f; --line-btn:#383838;
  --green:#f2f2f2; --green-bg:#262626; --green-tx:#f2f2f2;
  --yellow:#e0d3aa; --yellow-bg:#1f1c15; --yellow-bd:#3b3424;
  --scrim:rgba(0,0,0,.62);
  --fill:#212121; --fill-2:#1b1b1b; --mark:#5e5e5e; --hair:#2b2b2b; --mute:#8f8f8f; --dash:#474747;
  --danger:#ef8f7c; --danger-bg:#2a1a17; --danger-bd:#55302a;
  --acc-1:#ffffff; --acc-2:#ededed; --acc-3:#d9d9d9; --acc-edge:#e6e6e6; --acc-ring:#9a9a9a;
  --input-bg:#121212; --me-1:#262626; --me-2:#1f1f1f; --tab-1:#2a2a2a; --tab-2:#222222;
  --hl:rgba(255,255,255,.06); --on-t1:#0b0b0b; --on-acc:#0b0b0b;
  --ph-filter:grayscale(1) brightness(.5) contrast(1.05);
  --ph-veil:linear-gradient(to bottom,rgba(11,11,11,.88) 0%,rgba(11,11,11,.45) 40%,rgba(11,11,11,.05) 70%,rgba(11,11,11,.3) 100%);
}
html[data-theme="bwdark"] .app.functional .tagchip{background-image:none;box-shadow:none}
html[data-theme="bwdark"] .app.functional .toast{background:#2a2a2a;box-shadow:0 10px 28px -8px rgba(0,0,0,.7)}
/* глянец акцентных кнопок в ч/б — ровная заливка: блик на белом и чёрном смотрится грязно */
html[data-theme^="bw"] .app.functional .btn.green,
html[data-theme^="bw"] .app.functional .btn.dark,
html[data-theme^="bw"] .app.functional .csend,
html[data-theme^="bw"] .app.functional .qr-btn.main,
html[data-theme^="bw"] .app.functional .chk.on::before{background:var(--green);border-color:var(--green)}

/* ночь в горах в тёмных темах: картинка уже тёмная — без приглушения,
   вуаль слабее (в ч/б — только оттенки серого) */
html[data-theme="dark"] #appbg.night i,html[data-theme="dark"] .restcard-ph.night{filter:none}
html[data-theme="bwdark"] #appbg.night i,html[data-theme="bwdark"] .restcard-ph.night{filter:grayscale(1)}
#appbg.night::before{opacity:.45}
/* вечер у озера под светлым текстом анкеты и светлых тем: верх неба светлее */
#appbg.dusk::before{background:linear-gradient(to bottom,rgba(246,247,248,.78) 0%,rgba(246,247,248,.5) 30%,rgba(246,247,248,0) 55%)}
html[data-theme="dark"] #appbg.dusk::before,html[data-theme="bwdark"] #appbg.dusk::before{background:var(--ph-veil)}

/* ZAROK EXTRA THEMES — isolated design copy */
html[data-theme="obsidian"]{--page:#090b0a;color-scheme:dark}
html[data-theme="obsidian"] .app.functional{color-scheme:dark;
  --bg:#101310;
  --bg2:#171c16;
  --surface:#1c211b;
  --t1:#eef2e8;
  --t2:#b7c0ae;
  --t3:#97a48c;
  --t4:#97a48c;
  --line:#303a2b;
  --line-soft:#171c16;
  --line-btn:#6e805e;
  --green:#c8e99d;
  --green-bg:#2b3a21;
  --green-tx:#d4efb3;
  --fill:#283122;
  --fill-2:#171c16;
  --mark:#6e805e;
  --hair:#303a2b;
  --mute:#97a48c;
  --dash:#6e805e;
  --acc-1:#d5f2b1;
  --acc-2:#c8e99d;
  --acc-3:#adcf7e;
  --acc-edge:#adcf7e;
  --acc-ring:#c8e99d;
  --input-bg:#151a12;
  --me-1:#2b3a21;
  --me-2:#171c16;
  --tab-1:#2b3a21;
  --tab-2:#283122;
  --on-t1:#101310;
  --on-acc:#18220f;
  --hl:rgba(255,255,255,.06);
  --scrim:rgba(0,0,0,.65);
  --yellow:#ead08f;
  --yellow-bg:#393021;
  --yellow-bd:#685535;
  --danger:#f3a391;
  --danger-bg:#402624;
  --danger-bd:#805149;
  --ph-filter:brightness(.5) saturate(.55);
  --ph-tint:#c8e99d;
  --ph-tint-op:.12;
  --ph-veil:linear-gradient(to bottom,#101310 0%,transparent 90%);
}
html[data-theme="obsidian"] .app.functional :is(.btn.green,.btn.dark,.csend,.qr-btn.main){color:var(--on-acc);box-shadow:inset 0 1px 0 var(--hl)}
html[data-theme="obsidian"] .app.functional .tagchip{box-shadow:none;background-image:none}
html[data-theme="obsidian"] .app.functional .toast{background:var(--t1);color:var(--on-t1)}
html[data-theme="obsidian"] .app.functional .toast button{color:var(--on-t1)}
html[data-theme="obsidian"] #appbg.dusk::before{background:var(--ph-veil)}
html[data-theme="porcelain"]{--page:#deddd5;color-scheme:light}
html[data-theme="porcelain"] .app.functional{color-scheme:light;
  --bg:#f5f4ed;
  --bg2:#eaece1;
  --surface:#fdfcf7;
  --t1:#252c22;
  --t2:#4d5844;
  --t3:#69725e;
  --t4:#69725e;
  --line:#d9ddce;
  --line-soft:#eaece1;
  --line-btn:#98a584;
  --green:#586b3d;
  --green-bg:#e5ebd8;
  --green-tx:#45572e;
  --fill:#e4e8d9;
  --fill-2:#eaece1;
  --mark:#98a584;
  --hair:#d9ddce;
  --mute:#636658;
  --dash:#98a584;
  --acc-1:#6b7c4c;
  --acc-2:#586b3d;
  --acc-3:#485a30;
  --acc-edge:#485a30;
  --acc-ring:#586b3d;
  --input-bg:#fbfcf5;
  --me-1:#e5ebd8;
  --me-2:#eaece1;
  --tab-1:#e5ebd8;
  --tab-2:#e4e8d9;
  --on-t1:#f5f4ed;
  --on-acc:#ffffff;
  --hl:rgba(255,255,255,.65);
  --scrim:rgba(30,34,24,.3);
  --yellow:#775c20;
  --yellow-bg:#faf1dc;
  --yellow-bd:#dec992;
  --danger:#a33b2a;
  --danger-bg:#fdf0ec;
  --danger-bd:#d8a99e;
  --ph-filter:saturate(.65);
  --ph-tint:#586b3d;
  --ph-tint-op:.16;
  --ph-veil:transparent;
}
html[data-theme="porcelain"] .app.functional :is(.btn.green,.btn.dark,.csend,.qr-btn.main){color:var(--on-acc);box-shadow:inset 0 1px 0 var(--hl)}
html[data-theme="porcelain"] .app.functional .tagchip{box-shadow:none;background-image:none}
html[data-theme="porcelain"] .app.functional .toast{background:var(--t1);color:var(--on-t1)}
html[data-theme="porcelain"] .app.functional .toast button{color:var(--on-t1)}
html[data-theme="cobalt"]{--page:#060d1b;color-scheme:dark}
html[data-theme="cobalt"] .app.functional{color-scheme:dark;
  --bg:#0c162b;
  --bg2:#111f39;
  --surface:#172843;
  --t1:#eef4ff;
  --t2:#b4c6e2;
  --t3:#92aacc;
  --t4:#92aacc;
  --line:#2b4263;
  --line-soft:#111f39;
  --line-btn:#688ab6;
  --green:#a4cefa;
  --green-bg:#1c3655;
  --green-tx:#c1dfff;
  --fill:#223958;
  --fill-2:#111f39;
  --mark:#688ab6;
  --hair:#2b4263;
  --mute:#92aacc;
  --dash:#688ab6;
  --acc-1:#bfdfff;
  --acc-2:#a4cefa;
  --acc-3:#85b6ec;
  --acc-edge:#85b6ec;
  --acc-ring:#a4cefa;
  --input-bg:#10213a;
  --me-1:#1c3655;
  --me-2:#111f39;
  --tab-1:#1c3655;
  --tab-2:#223958;
  --on-t1:#0c162b;
  --on-acc:#10243c;
  --hl:rgba(255,255,255,.06);
  --scrim:rgba(0,0,0,.65);
  --yellow:#ead08f;
  --yellow-bg:#393021;
  --yellow-bd:#685535;
  --danger:#f3a391;
  --danger-bg:#402624;
  --danger-bd:#805149;
  --ph-filter:brightness(.5) saturate(.55);
  --ph-tint:#a4cefa;
  --ph-tint-op:.12;
  --ph-veil:linear-gradient(to bottom,#0c162b 0%,transparent 90%);
}
html[data-theme="cobalt"] .app.functional :is(.btn.green,.btn.dark,.csend,.qr-btn.main){color:var(--on-acc);box-shadow:inset 0 1px 0 var(--hl)}
html[data-theme="cobalt"] .app.functional .tagchip{box-shadow:none;background-image:none}
html[data-theme="cobalt"] .app.functional .toast{background:var(--t1);color:var(--on-t1)}
html[data-theme="cobalt"] .app.functional .toast button{color:var(--on-t1)}
html[data-theme="cobalt"] #appbg.dusk::before{background:var(--ph-veil)}
html[data-theme="copper"]{--page:#120f11;color-scheme:dark}
html[data-theme="copper"] .app.functional{color-scheme:dark;
  --bg:#21191d;
  --bg2:#2b2025;
  --surface:#34272c;
  --t1:#f7ede5;
  --t2:#d1bdb1;
  --t3:#b7a195;
  --t4:#b7a195;
  --line:#523b40;
  --line-soft:#2b2025;
  --line-btn:#a07e6b;
  --green:#e6ae84;
  --green-bg:#493129;
  --green-tx:#f1c5a4;
  --fill:#443037;
  --fill-2:#2b2025;
  --mark:#a07e6b;
  --hair:#523b40;
  --mute:#b7a195;
  --dash:#a07e6b;
  --acc-1:#f2c6a1;
  --acc-2:#e6ae84;
  --acc-3:#d5976d;
  --acc-edge:#d5976d;
  --acc-ring:#e6ae84;
  --input-bg:#291d22;
  --me-1:#493129;
  --me-2:#2b2025;
  --tab-1:#493129;
  --tab-2:#443037;
  --on-t1:#21191d;
  --on-acc:#302016;
  --hl:rgba(255,255,255,.06);
  --scrim:rgba(0,0,0,.65);
  --yellow:#ead08f;
  --yellow-bg:#393021;
  --yellow-bd:#685535;
  --danger:#f3a391;
  --danger-bg:#402624;
  --danger-bd:#805149;
  --ph-filter:brightness(.5) saturate(.55);
  --ph-tint:#e6ae84;
  --ph-tint-op:.12;
  --ph-veil:linear-gradient(to bottom,#21191d 0%,transparent 90%);
}
html[data-theme="copper"] .app.functional :is(.btn.green,.btn.dark,.csend,.qr-btn.main){color:var(--on-acc);box-shadow:inset 0 1px 0 var(--hl)}
html[data-theme="copper"] .app.functional .tagchip{box-shadow:none;background-image:none}
html[data-theme="copper"] .app.functional .toast{background:var(--t1);color:var(--on-t1)}
html[data-theme="copper"] .app.functional .toast button{color:var(--on-t1)}
html[data-theme="copper"] #appbg.dusk::before{background:var(--ph-veil)}
/* Свайп карточки дня: карточка едет за пальцем, под ней — действия той стороны,
   куда её тянут. Вертикальная прокрутка не перехватывается. */
.tl-swipe{position:relative;overflow:hidden;border-radius:16px;touch-action:pan-y;min-width:0}
.tl-swipe-face{position:relative;z-index:2;transform:translateX(var(--swipe-x,0px));transition:transform .22s cubic-bezier(.2,.75,.2,1);will-change:transform}
.tl-swipe.dragging .tl-swipe-face{transition:none}
.tl-swipe-actions{position:absolute;inset:0;display:flex;align-items:stretch;gap:4px;padding:4px;z-index:1;visibility:hidden}
.tl-swipe.to-right .tl-swipe-actions.left,.tl-swipe.to-left .tl-swipe-actions.right{visibility:visible}
.tl-swipe-actions.left{justify-content:flex-start;background:var(--green-bg)}
.tl-swipe-actions.right{justify-content:flex-end;background:var(--fill-2)}
.tl-swipe-actions button{box-sizing:border-box;border:0;border-radius:12px;background:var(--surface);color:var(--green-tx);font:700 11px var(--ui);padding:0 5px;min-width:55px;white-space:nowrap}
.tl-swipe-actions.right button{color:var(--t2)}
.tl-swipe-actions.right button:nth-child(1){min-width:72px}
.tl-swipe-actions.right button:nth-child(2){color:var(--danger);background:var(--danger-bg);min-width:65px}
@media(prefers-reduced-motion:reduce){.tl-swipe-face{transition:none}}
/* шторка «Повторить»: плашки 2×2, дни недели — семь плашек в ряд.
   Сама отметка спрятана под плашкой, выбранная плашка закрашена, как в редакторе события.
   Что видно, задают data-what (шаг или весь курс) и data-mode (когда повторить) на .sw-rep. */
.sw-modes{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.sw-dows{display:flex;gap:6px}
.sw-mode,.sw-dow{position:relative;min-width:0}
.sw-dow{flex:1 1 0}
.sw-mode input,.sw-dow input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.sw-mode span,.sw-dow span{display:flex;align-items:center;justify-content:center;text-align:center;border:1px solid var(--line-btn);border-radius:12px;background:var(--surface);color:var(--t2);transition:background .15s,color .15s,border-color .15s}
.sw-mode span{min-height:46px;padding:8px 10px;font:600 13px var(--ui)}
.sw-dow span{height:44px;font:600 12px var(--mono)}
.sw-mode input:checked+span,.sw-dow input:checked+span{background:var(--t1);border-color:var(--t1);color:var(--on-t1)}
.sw-mode input:focus-visible+span,.sw-dow input:focus-visible+span{outline:2px solid var(--green);outline-offset:2px}
.sw-when{display:flex;gap:9px}
.sw-when>div{flex:1 1 0;min-width:0}
.sw-rep[data-what="course"] .sw-task,.sw-rep[data-what="item"] .sw-course{display:none}
.sw-rep:not([data-mode="weekdays"]) .sw-days,.sw-rep:not([data-mode="interval"]) .sw-every,
.sw-rep:not([data-mode="once"]) .sw-date,.sw-rep:not([data-mode="once"]) .sw-hint-once,.sw-rep[data-mode="once"] .sw-hint-rule{display:none}
.sw-rep .hint{margin:2px 0 0}
/* сообщение после «Повторить»: длинный текст и до двух кнопок («Открыть», «Отменить») в одну строку */
.functional .toast.wide{gap:10px;width:max-content;max-width:calc(100% - 24px);text-align:left}
.functional .toast button{white-space:nowrap;flex:none}
/* календарь устройства: списки с отметками и выбор календаря */
.cal-option{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);line-height:1.4;color:var(--t1)}
.cal-option input{width:20px;height:20px;margin:0;accent-color:var(--green);flex:none}
.cal-option span{display:flex;flex-direction:column;gap:2px}
.cal-option small{color:var(--t3)}
.cal-settings .field{display:flex;flex-direction:column;gap:8px;margin:18px 0;font:600 12px var(--ui);color:var(--t2)}
.cal-settings .btn{display:block;width:100%;margin:12px 0}
.widget-beta-gallery{margin:24px 0;padding:18px;border-radius:24px;background:rgba(110,135,117,.1)}
.widget-beta-gallery>h3{margin:0 0 5px;font-size:18px}
.widget-beta-gallery>p{margin:0 0 16px;opacity:.7;line-height:1.45}
.widget-beta-card{margin:12px 0 18px}
.widget-beta-card>small{display:block;margin-bottom:8px;font-size:10px;letter-spacing:.12em;opacity:.65}
.widget-beta-preview{position:relative;display:flex;align-items:center;gap:15px;min-height:86px;overflow:hidden;border:1px solid rgba(255,255,255,.4);border-radius:22px;padding:18px 20px;background:linear-gradient(145deg,rgba(39,52,43,.91),rgba(40,61,49,.77));color:#f4fbf3;box-shadow:0 12px 32px rgba(10,31,17,.13)}
.widget-beta-preview>b{font-size:31px;line-height:1;font-weight:800;letter-spacing:-.04em}
.widget-beta-preview>span{font-size:12px;opacity:.8}
.widget-beta-preview>i{position:absolute;bottom:0;left:0;height:5px;background:#b9dfba}
.widget-beta-week{position:absolute;right:13px;bottom:13px;display:flex;gap:5px}
.widget-beta-week>span{display:grid;gap:3px;justify-items:center;font-size:8px}
.widget-beta-week i{display:block;width:10px;height:10px;border-radius:50%;background:conic-gradient(#b9dfba var(--pct),#607d6b 0)}
.widget-beta-week small{font-size:7px}
.widget-beta-card>.pet-pin{margin-top:8px}
.widget-stats-preview{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:4px 10px;border:1px solid rgba(255,255,255,.4);border-radius:22px;padding:18px 20px;background:linear-gradient(145deg,rgba(39,52,43,.91),rgba(40,61,49,.77));color:#f4fbf3;box-shadow:0 12px 32px rgba(10,31,17,.13)}
.widget-stats-preview>b{font-size:34px;line-height:1;font-weight:800;letter-spacing:-.04em}
.widget-stats-preview>span{font-size:12px;opacity:.8}
.widget-stats-bars{grid-column:1/-1;display:flex;align-items:flex-end;gap:8px;height:84px;margin:12px 0 4px}
.widget-stats-bars>span{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;height:100%}
.widget-stats-bars i{display:block;width:100%;max-width:26px;border-radius:7px 7px 3px 3px;background:#607d6b}
.widget-stats-bars .on i{background:#b9dfba}
.widget-stats-bars small{font-size:8px;opacity:.75}
.widget-stats-preview>dl{grid-column:1/-1;display:grid;grid-template-columns:1fr auto;gap:6px 12px;margin:8px 0 0;font-size:12px}
.widget-stats-preview dt{opacity:.72}
.widget-stats-preview dd{margin:0;font-weight:700}
.widget-stats-preview>ul{grid-column:1/-1;list-style:none;margin:10px 0 0;padding:10px 0 0;border-top:1px solid rgba(255,255,255,.16);display:grid;gap:6px;font-size:12px}
.widget-stats-preview li{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.widget-stats-preview li::before{content:"";display:inline-block;width:9px;height:9px;margin-right:8px;border:1.5px solid currentColor;border-radius:50%;opacity:.7;vertical-align:-1px}
.widget-stats-preview li.done{opacity:.6;text-decoration:line-through}
.widget-stats-preview li.done::before{background:currentColor}
/* что виджет показывает при разных размерах — одна строка под превью */
.widget-beta-note{margin:9px 2px 0;font-size:12px;line-height:1.5;opacity:.72}
.pet-widget-gallery,.widget-beta-gallery,.widget-beta-card{box-sizing:border-box;min-width:0;max-width:100%}
.pet-widget-gallery{width:100%}
.pet-widget-gallery[data-widget-skin="obsidian"] :is(.widget-beta-preview,.widget-stats-preview){background:linear-gradient(145deg,#101710,#2b3928);color:#eef2e8}
.pet-widget-gallery[data-widget-skin="porcelain"] :is(.widget-beta-preview,.widget-stats-preview){background:linear-gradient(145deg,#fdfcf7,#e8ecdd);color:#252c22;border-color:#d8e0ce}
.pet-widget-gallery[data-widget-skin="cobalt"] :is(.widget-beta-preview,.widget-stats-preview){background:linear-gradient(145deg,#101d35,#264569);color:#eef4ff}
.pet-widget-gallery[data-widget-skin="copper"] :is(.widget-beta-preview,.widget-stats-preview){background:linear-gradient(145deg,#251c20,#5b3c35);color:#f7ede5}
/* Закрытый день: один итоговый блок вместо плашки «День выполнен», кнопки
   «Следующий день» и карточки с фото. Полная линия со свечением и бликом —
   знак, что день завершён. В коллекциях Plus тем же итогом служит блок дня. */
.daydone{position:relative;margin:14px 16px 6px;padding:20px 20px 19px;border-radius:20px;background:var(--surface);border:1px solid var(--line);overflow:hidden}
.daydone-eyebrow{display:block;font:600 9px var(--ui);letter-spacing:2px;color:var(--t3)}
.daydone h2{margin:8px 0 10px;font:600 21px/1.2 var(--ui);letter-spacing:-.5px;color:var(--t1);text-transform:none}
.daydone-score{display:flex;align-items:baseline;gap:8px;line-height:1;font-variant-numeric:tabular-nums}
.daydone-score strong{font:700 56px/1 var(--ui);letter-spacing:-2px;color:var(--green)}
.daydone-score span{font:400 24px var(--ui);color:var(--t3)}
.daydone p{margin:12px 0 16px;font:500 13px/1.5 var(--ui);color:var(--t2)}
.done-line{position:relative;height:6px;border-radius:99px;overflow:hidden}
.daydone-line{background:var(--green);filter:drop-shadow(0 0 6px var(--green))}
.done-line::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.8) 50%,transparent 100%);transform:translateX(-100%);animation:done-sheen 3.8s ease-in-out infinite}
@keyframes done-sheen{0%,30%{transform:translateX(-100%)}75%,100%{transform:translateX(100%)}}
@media(prefers-reduced-motion:reduce){.done-line::after{animation:none;opacity:0}}
html.plain .done-line::after{animation:none;opacity:0}
html.plain .daydone-line{filter:none}

/* Шторку стягивают вниз за полоску и шапку (sheetDrag в app.js): зона захвата шире
   самой полоски, браузер в ней жест не перехватывает, а шторка под пальцем едет
   без задержки — переход включается снова, когда её отпустили. */
.sheet .handle,.sheet .sheet-h,.sheet .sheet-hero{touch-action:none;-webkit-user-select:none;user-select:none}
.sheet .handle{position:relative;cursor:grab}
.sheet .handle::after{content:'';position:absolute;left:-80px;right:-80px;top:-9px;bottom:-8px}
.sheet.dragging{transition:none;will-change:transform}

/* Листание дней и месяцев: страница соседнего дня или месяца лежит поверх области
   экрана и едет вместе с ним (pagePane в app.js). Пустой день с фоном-фото прозрачен, обычный закрывает
   фото собой — как и настоящий экран; в коллекциях Plus экран всегда непрозрачен. */
.screen.day-pane{position:absolute;left:0;right:0;z-index:1;pointer-events:none;will-change:transform}
html:not([data-luxe]) .app.has-bg .screen.day-pane.solid{background:var(--bg)}
html:not([data-luxe]) .screen.day-pane.clear{background:transparent}
#root.day-drag{-webkit-user-select:none;user-select:none}
#root.day-drag>.screen{will-change:transform}
.day-hdr,.cal-hdr{touch-action:pan-y}

/* выбор иконки приложения («Оформление»): плитки в три ряда, выбранная — в кольце */
.appicon-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 8px}
.appicon{display:grid;justify-items:center;gap:7px;min-width:0;padding:10px 4px 9px;border:1px solid transparent;border-radius:16px;background:transparent;color:var(--t1);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.appicon img{display:block;width:64px;height:64px;border-radius:30%;box-shadow:0 4px 12px rgba(20,30,24,.16)}
.appicon span{font:500 12px/1.25 var(--ui);text-align:center}
.appicon.on{border-color:var(--green);background:var(--fill,#f1f4f1);box-shadow:0 0 0 1px var(--green)}
.appicon:focus-visible{outline:3px solid var(--green);outline-offset:2px}

/* переписка с разработчиком (js/support.js, лист «Написать разработчику») */
.support-log{display:flex;flex-direction:column;gap:8px;max-height:44vh;overflow-y:auto;overscroll-behavior:contain;padding:2px 2px 6px;margin-bottom:10px}
.support-empty{font:500 13px/1.5 var(--ui);color:var(--t2);padding:14px 15px;border:1px dashed var(--line);border-radius:14px}
.support-day{align-self:center;font:600 11px var(--ui);color:var(--t3);padding:2px 0}
.support-bub{max-width:86%;overflow-wrap:anywhere}
.support-who{display:block;font:700 11px var(--ui);color:var(--t3);margin-bottom:3px}
.support-at{display:block;font:500 10.5px var(--ui);font-style:normal;opacity:.62;margin-top:4px;text-align:right}
.support-state,.support-note{font:500 12.5px/1.45 var(--ui);color:var(--t2);margin:2px 0 10px}
.support-note{color:var(--t1)}
.support-field{margin-bottom:8px}
/* окно поддержки: как спрашивать, темы справки при наборе, короткий вопрос, срок ответа */
.support-how{display:grid;gap:4px;margin:0 0 10px;padding:11px 13px;border-radius:14px;background:var(--bg2);color:var(--t1)}
.support-how b{font:700 13px/1.4 var(--ui)}
.support-how span{font:500 12.5px/1.45 var(--ui);color:var(--t2)}
.support-suggest{display:grid;gap:6px;margin:0 0 10px}
.support-suggest:empty{display:none}
.support-sug-h{font:700 11px var(--ui);letter-spacing:.04em;text-transform:uppercase;color:var(--t3)}
.support-sug{border:1px solid var(--line);border-radius:13px;background:var(--surface);overflow:hidden}
.support-sug-q{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:44px;padding:9px 13px;text-align:left;font:600 13px/1.35 var(--ui);color:var(--t1)}
.support-sug-q i{flex:none;font:500 18px/1 var(--ui);font-style:normal;color:var(--t3)}
.support-sug-a{padding:0 13px 11px}
.support-sug-a p{margin:0 0 6px;font:500 13px/1.5 var(--ui);color:var(--t2)}
.support-search{margin:0 0 12px}
.support-search .input{min-height:44px;width:100%;box-sizing:border-box}
.support-search .support-suggest{margin:8px 0 0}
.support-nomatch{display:grid;gap:2px;padding:11px 13px;border-radius:14px;background:var(--bg2);color:var(--t1)}
.support-nomatch p{margin:0;font:600 13px/1.45 var(--ui)}
.support-nomatch .text-button,.support-sug-a .text-button{min-height:44px;justify-self:start}
.support-sug-q span{overflow-wrap:anywhere;min-width:0}
.support-short{font:600 12.5px/1.45 var(--ui);color:var(--t1);margin:-2px 0 8px}
.support-short[hidden]{display:none}
.support-chat + .sheet-foot{flex-wrap:wrap}
.support-promise{flex:0 0 100%;order:9;text-align:center;font:500 12px/1.4 var(--ui);color:var(--t2)}
.support-links{display:flex;gap:18px;flex-wrap:wrap;margin-top:4px}

/* ---------- встреча после разлуки (js/notify.js) ----------
   Карточка с Зароком, репликой и двумя кнопками. Размеры и расположение — из копии владельца
   notification-atelier (4 октября 2026); цвета и шрифт — из активной темы приложения. */
.zr-overlay{position:absolute;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;
  padding:calc(22px + var(--safe-top,0px)) 22px calc(22px + var(--safe-bottom,0px));overflow:auto;
  background:var(--scrim);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px)}
.zr-reunion{position:relative;width:100%;max-width:390px;margin:auto;border:1px solid var(--line-btn);border-radius:32px;
  background:radial-gradient(ellipse at 50% 15%,var(--bg2),transparent 55%),var(--surface);padding:25px 27px 27px;
  box-shadow:0 16px 45px rgba(20,24,20,.22);text-align:center;color:var(--t1);font-family:var(--ui);outline:0;
  animation:zr-meet-in .35s ease both}
.zr-reunion small{display:block;font:600 9px/1.4 var(--ui);letter-spacing:2px;color:var(--t3)}
/* Зарок стоит на верхнем крае карточки (правило «на панели без зазора», 20.10): фигура над карточкой, ноги — на её кромке (data-zstand="top", js/zork.js); место над карточкой — --zr-fig из js/notify.js */
.zr-reunion>.zork{position:absolute;left:50%;bottom:100%;margin:0;transform:translateX(-50%);filter:drop-shadow(0 6px 8px rgba(20,24,20,.16))}
.zr-overlay:not(.zr-scene){padding-top:calc(22px + var(--safe-top,0px) + var(--zr-fig,0px))}
.zr-reunion h3{font:600 26px/1.2 var(--ui);letter-spacing:-1px;margin:10px 0 16px;color:var(--t1)}
.zr-reunion p{font:400 14px/1.8 var(--ui);color:var(--t2);margin:0 0 23px}
.zr-close{position:absolute;right:12px;top:12px;width:44px;height:44px;padding:0;background:transparent;border:0;
  color:var(--t3);font:400 25px/1 var(--ui);cursor:pointer}
.zr-primary{width:100%;min-height:52px;border:1px solid var(--line-btn);border-radius:99px;
  background:linear-gradient(115deg,var(--bg2),var(--surface));padding:15px 18px;text-align:left;
  display:flex;justify-content:space-between;align-items:center;gap:12px;font:600 14px/1.3 var(--ui);color:var(--t1);cursor:pointer}
.zr-secondary{display:block;margin:8px auto 0;min-height:44px;padding:0 14px;border:0;background:transparent;
  color:var(--t3);font:500 12px/1.3 var(--ui);cursor:pointer}
.zr-close:focus-visible,.zr-primary:focus-visible,.zr-secondary:focus-visible{outline:2px solid var(--acc-1);outline-offset:3px}
/* «Один маленький шаг»: дело, к которому подвела встреча, на пару секунд обведено */
.zr-here{animation:zr-here 1.3s ease 2;border-radius:18px}
@keyframes zr-meet-in{from{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes zr-here{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 0 4px var(--green-bg),0 0 0 6px var(--green)}}
@media (max-width:400px){.zr-reunion{padding:25px 22px}}
/* встреча сценой: Зарок со спины на поляне оборачивается, удивляется и здоровается (те же шрифт и подача, что на экране семян) */
.zr-overlay.zr-scene{padding:0;overflow:hidden;background:#17221d;-webkit-backdrop-filter:none;backdrop-filter:none;align-items:stretch}
.zr-scene .zr-reunion{max-width:none;height:100%;margin:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none;color:#fff;animation:none;display:flex;flex-direction:column;text-align:center}
.rn-art{position:absolute;inset:0;z-index:0;pointer-events:none}
.rn-art::before{content:'';position:absolute;inset:-24px;will-change:transform;transform:translateZ(0);background:var(--rn-bg,url(img/reunion-4.webp)) 50% 0/cover no-repeat;filter:blur(30px)}
.rn-art img{position:absolute;left:0;bottom:0;width:100%;height:auto;max-height:100%;aspect-ratio:1080/1936;object-fit:contain;object-position:50% 100%;opacity:0;will-change:opacity;transform:translateZ(0);backface-visibility:hidden;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 26%);mask-image:linear-gradient(to bottom,transparent 0,#000 26%)}
/* сцена встречи медленнее и мягче (сборка 86): 4,4 с вместо 2,4, кадры сменяются плавным наплывом по полсекунды, только прозрачность
   на отдельных слоях; пока кадры не раскодированы — пауза (.rn-wait, js/notify.js) */
.rn-art .rn-1{animation:rn1 4.4s ease-in-out both}.rn-art .rn-2{animation:rn2 4.4s ease-in-out both}
.rn-art .rn-3{animation:rn3 4.4s ease-in-out both}.rn-art .rn-4{animation:rn4 4.4s ease-in-out both}
@keyframes rn1{0%,16%{opacity:1}30%,100%{opacity:0}}
@keyframes rn2{0%,16%{opacity:0}30%,42%{opacity:1}56%,100%{opacity:0}}
@keyframes rn3{0%,42%{opacity:0}56%,68%{opacity:1}82%,100%{opacity:0}}
@keyframes rn4{0%,68%{opacity:0}82%,100%{opacity:1}}
.rn-text{position:relative;z-index:2;padding:calc(30px + var(--safe-top,0px)) 24px 0;text-shadow:0 2px 16px rgba(0,0,0,.55)}
.rn-text .brand{color:#fff}
.rn-text h3{margin:16px auto 0;max-width:320px;font:800 28px/1.12 var(--ui);letter-spacing:-.03em;text-wrap:balance;color:#fff;animation:rn-in .7s cubic-bezier(.22,.61,.36,1) 2.4s both;will-change:opacity,transform}
.rn-text p{margin:10px auto 0;max-width:300px;font:500 14.5px/1.5 var(--ui);color:rgba(255,255,255,.92);text-wrap:balance;animation:rn-in .7s cubic-bezier(.22,.61,.36,1) 2.9s both;will-change:opacity,transform}
.rn-actions{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:34px 22px calc(18px + var(--safe-bottom,0px));background:linear-gradient(to top,rgba(12,18,15,.82),rgba(12,18,15,0));animation:rn-in .7s cubic-bezier(.22,.61,.36,1) 3.3s both;will-change:opacity,transform}
.zr-scene .zr-primary{background:rgba(255,255,255,.94);border-color:transparent;color:#1d2620;box-shadow:0 10px 30px -12px rgba(0,0,0,.6)}
.zr-scene .zr-secondary{color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.6)}
.zr-scene .zr-close{color:#fff;z-index:4;top:calc(10px + var(--safe-top,0px));text-shadow:0 1px 8px rgba(0,0,0,.6)}
@keyframes rn-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.zr-scene.rn-wait .rn-art img,.zr-scene.rn-wait .rn-text h3,.zr-scene.rn-wait .rn-text p,.zr-scene.rn-wait .rn-actions{animation-play-state:paused}
.zr-scene.skip .rn-art img,.zr-scene.skip .rn-text h3,.zr-scene.skip .rn-text p,.zr-scene.skip .rn-actions{animation-delay:0s;animation-duration:.01s;animation-play-state:running}
@media (max-height:700px){.rn-text h3{font-size:24px}.rn-text p{font-size:13.5px}}
@media (prefers-reduced-motion:reduce){.zr-scene .rn-art img,.zr-scene .rn-text h3,.zr-scene .rn-text p,.zr-scene .rn-actions{animation:none;will-change:auto}.zr-scene .rn-art .rn-4{opacity:1}}
@media (prefers-reduced-motion:reduce){.zr-reunion,.zr-here{animation:none}}

/* ---------- Профиль → Оформление: выбор «Главный экран» (js/screens.js, layoutChooser) ----------
   Три плитки с условной миниатюрой экрана: как сейчас, единый день, план отдельно. */
.lay-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:2px 0 6px}
.lay-tile{display:flex;flex-direction:column;align-items:stretch;gap:7px;padding:9px 9px 11px;border:1px solid var(--line);border-radius:16px;
  background:var(--surface);color:var(--t1);text-align:left;cursor:pointer;min-width:0}
.lay-tile.on{border-color:var(--acc-1);box-shadow:0 0 0 1px var(--acc-1) inset}
.lay-tile b{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font:600 12px/1.25 var(--ui)}
.lay-tile b svg{width:13px;height:13px;flex:none}
.lay-tile em{font:400 10.5px/1.35 var(--ui);font-style:normal;color:var(--t3)}
.lay-tile .look-premium{font:600 9.5px/1 var(--ui);color:var(--t3);white-space:nowrap}
.lay-pv{position:relative;display:block;height:92px;border-radius:11px;background:var(--bg2);overflow:hidden}
.lay-pv i{position:absolute;left:9px;right:9px;display:block;border-radius:6px;background:var(--surface);border:1px solid var(--line)}
/* как сейчас: шапка строкой, блок дня, две карточки */
.lay-classic i:nth-child(1){top:8px;height:8px;right:42%;border:0;background:var(--mark)}
.lay-classic i:nth-child(2){top:22px;height:26px}
.lay-classic i:nth-child(3){top:53px;height:13px}
.lay-classic i:nth-child(4){top:70px;height:13px}
/* единый день: одна поверхность, внутри — строка даты и линии плана */
.lay-unified i:nth-child(1){top:8px;bottom:8px;border-radius:9px}
.lay-unified i:nth-child(2){top:17px;height:7px;left:17px;right:48%;border:0;background:var(--mark)}
.lay-unified i:nth-child(3){top:42px;height:1px;left:17px;right:17px;border:0;border-radius:0;background:var(--line)}
.lay-unified i:nth-child(4){top:60px;height:1px;left:17px;right:17px;border:0;border-radius:0;background:var(--line)}
/* план отдельно: обзор сверху, план — отдельной поверхностью */
.lay-split i:nth-child(1){top:8px;height:28px;border-radius:9px}
.lay-split i:nth-child(2){top:16px;height:7px;left:17px;right:48%;border:0;background:var(--mark)}
.lay-split i:nth-child(3){top:42px;bottom:8px;border-radius:9px}
.lay-split i:nth-child(4){top:60px;height:1px;left:17px;right:17px;border:0;border-radius:0;background:var(--line)}
@media (max-width:350px){.lay-grid{gap:6px}.lay-tile{padding:7px 7px 9px}.lay-tile b{font-size:11px}}

/* утренний экран: свёрнутый блок, в котором всё отмечено, и неброское добавление шага внизу */
.functional .prep-folded{padding-top:0;padding-bottom:0;opacity:.78}
.functional .prep-fold{width:100%;display:flex;align-items:center;gap:8px;min-height:52px;margin:0;text-align:left;background:none;border:0;color:inherit;font:inherit}
.functional .prep-fold .scount{margin-left:auto}
.functional .prep-fold i{font-style:normal;color:var(--t3);font-size:12px}
.functional .prep-add{display:block;width:100%;margin:6px 0 0;padding:14px 4px;text-align:left;font-size:12px;color:var(--t3);background:none;border:0}
.functional .prep-inline-done{opacity:.8}
.functional .prep-folded.fold-in{animation:prep-fold-in .52s cubic-bezier(.4,0,.15,1) both}
@keyframes prep-fold-in{from{opacity:0;transform:translateY(-26px) scale(.985)}to{opacity:.78;transform:none}}
@media(prefers-reduced-motion:reduce){.functional .prep-folded.fold-in{animation:none}}


/* галочка «Напоминать» в окне дела */
.remind-row{width:100%;margin:10px 0 2px}
.remind-later{margin:10px 0 2px}

/* экран пересмотра плана (REVIEW): четыре равных выбора под главной кнопкой */
.zr-review .zr-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;width:100%}
.zr-review .zr-choice{min-height:44px;padding:10px 8px;border:1px solid var(--hair,rgba(0,0,0,.12));border-radius:14px;background:transparent;color:inherit;font:inherit;font-size:14px;cursor:pointer}
.zr-review .zr-choice:active{opacity:.7}
/* Полоса состояния телефона (часы, сеть, батарея) — в цвет шапки, а не поверх фоновой картинки: картинка
   раздела начинается под ней. Экраны знакомства и сцены идут на весь экран сами, их это не касается. */
.app.functional.has-bg #appbg{top:var(--safe-top,0px)}

/* страница «Интеграции» и кнопка удаления копии в «Данных и памяти» */
.integ-card{display:grid;gap:12px}.integ-h{display:flex;align-items:center;gap:10px}.integ-h b{font:700 18px/1.2 var(--ui)}
.integ-card p{margin:0;color:var(--t2);font:500 14px/1.5 var(--ui)}.integ-list{margin:0;padding-left:18px;color:var(--t2);font:500 13.5px/1.6 var(--ui)}
.te-row .snap-drop{flex:none;width:44px;height:44px;color:var(--t3)}

/* «⋯» в шапке «Дня» — вход в поиск, неделю, время внимания, сценарии и метки */
.navbtn.day-more{font-size:20px;letter-spacing:.02em}
/* в другом дне в шапке четыре кнопки (↺ ⋯ ‹ ›) — делаем их уже, чтобы «Воскресенье» не упиралось */
.functional .hdr-row:has(.today-nav):has(.day-more){gap:5px}
.functional .hdr-row:has(.today-nav):has(.day-more) .navbtn{width:36px}

/* календарь: сетка месяца сворачивается в неделю; на сетке и ручке вертикальный жест наш, а не прокрутка */
.cal-foldzone{touch-action:none}
.cal-grab{display:flex;flex-direction:column;align-items:center;gap:5px;width:100%;padding:2px 0 12px;color:var(--t3);font:500 11.5px/1.2 var(--ui);touch-action:none}
.cal-grab i{width:38px;height:4px;border-radius:9px;background:var(--line)}
.grid.week{padding-bottom:8px}
.selected-day.cal-week{padding:0 16px 24px}
.functional .selected-day.cal-week h2{margin:18px 4px 12px}
.segadd.cal-files{flex:none;width:44px;padding:0;display:grid;place-items:center}
.segadd.cal-files svg{width:20px;height:20px}
.cal-week-seg{padding:12px 16px 0}.cal-week-agenda{padding:0 16px}

/* календарь: три размера. Ручка — только полоска; строка дня вместо заголовка; виды недели — тонкой строкой */
.cal-grab{padding:0 0 10px}.cal-grab span{display:none}
.cal-week-seg{padding:10px 16px 0}.selected-day.cal-week .week-views{margin-top:10px}
.cal-week-seg .week-views{margin-bottom:0}
/* во весь экран: клетка растёт и показывает названия дел */
.functional .grid.full{grid-auto-rows:minmax(108px,auto);padding-bottom:6px}
.functional .grid.full .cell{height:auto;min-height:108px;align-items:stretch;padding:6px 2px 4px;background:var(--surface) !important;border-radius:10px}
.functional .grid.full .cell.sel{background:var(--green-bg) !important}
.functional .grid.full .cell-n{align-self:center}
.cell-list{display:flex;flex-direction:column;gap:2px;margin-top:4px;min-width:0}
.cell-list i{font:500 9px/1.25 var(--ui);font-style:normal;color:var(--t2);white-space:nowrap;overflow:hidden;text-align:left;border-left:2.5px solid var(--c,var(--line));padding-left:3px;border-radius:1px}
.cell-list u{font:500 9px/1.3 var(--ui);color:var(--t3);text-decoration:none;text-align:left;padding-left:5px}
.grid.full .cell.past .cell-list{opacity:.55}
.functional .grid.full .cell.void{background:transparent !important}

.cal-week-seg{padding-top:14px}.selected-day.cal-week .week-views{margin-top:14px}

/* строка видов недели в календаре — одна тонкая плашка (вариант «В», выбор владельца 8 октября 2026) */
.cal-week-seg .week-views,.selected-day.cal-week .week-views{gap:2px;background:var(--bg2);border-radius:10px;padding:2px;margin-bottom:12px}
.cal-week-seg .week-views{margin-bottom:0}
.cal-week-seg .week-views button,.selected-day.cal-week .week-views button{flex:1;border:0;border-radius:8px;padding:0;min-height:28px;font:600 11.5px/1 var(--ui);color:var(--t3);background:transparent}
.cal-week-seg .week-views button.on,.selected-day.cal-week .week-views button.on{background:var(--surface);color:var(--t1);box-shadow:0 1px 3px rgba(0,0,0,.08)}

/* календарь: «к сегодня» — листок с числом, рядом значок «Мои календари»; обе кнопки одного размера */
.segadd.cal-today{flex:none;width:44px;padding:0;display:grid;place-items:center}
.segadd.cal-today b{display:grid;place-items:center;width:24px;height:24px;border:1.6px solid currentColor;border-top-width:5px;border-radius:7px;font:700 11px/1 var(--ui)}
.segadd.cal-today.here{color:var(--t4)}
.functional .segrow .segadd.cal-files{color:var(--t2)}

/* «День»: полка с поиском и таймером над датой; лупа в шапке */
.day-shelf{display:flex;gap:8px;margin:0 0 12px}
.day-shelf button{min-height:44px;border:1px solid var(--line);border-radius:14px;background:var(--bg2);color:var(--t2);font:500 14px/1 var(--ui);display:flex;align-items:center;gap:8px;padding:0 14px}
.day-shelf .shelf-search{flex:1;min-width:0;color:var(--t3)}
.day-shelf .shelf-search svg{width:18px;height:18px;flex:none}
.day-shelf .shelf-search span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.day-shelf .shelf-focus{flex:none;color:var(--green-tx,var(--green));font-weight:600}
.day-shelf .shelf-focus i{font-style:normal;font-size:16px}
.navbtn.day-more{font-size:0;display:grid;place-items:center}
.navbtn.day-more svg{width:20px;height:20px}
.navbtn.day-more.on{background:var(--green-bg);border-color:var(--acc-ring,var(--green));color:var(--green)}

/* календарь: верхняя строка — месяц слева, вид и «к сегодня» справа; выпадающий список видов; вид «Год» */
.cal-bar{position:relative}
.cal-bar .cal-hdr-row{gap:8px}
.functional .cal-bar .cal-title{flex:1;min-width:0;text-align:left;display:flex;align-items:baseline;gap:8px;font-size:26px;font-weight:750;letter-spacing:-.03em;position:relative}
.cal-bar .cal-title small{font:500 15px/1 var(--ui);color:var(--t3);letter-spacing:0}
.cal-bar .navbtn{display:grid;place-items:center;font-size:0;flex:none}
.cal-bar .navbtn svg{width:22px;height:22px}
.cal-bar .cal-viewbtn.on{background:var(--green-bg);border-color:var(--acc-ring,var(--green));color:var(--green)}
.cal-bar .cal-today b{display:grid;place-items:center;width:24px;height:24px;border:1.6px solid currentColor;border-top-width:5px;border-radius:7px;font:700 11px/1 var(--ui)}
.cal-bar .cal-today{color:var(--green-tx,var(--green))}.cal-bar .cal-today.here{color:var(--t4)}
.cal-menu-back{position:fixed;inset:0;z-index:40;background:transparent;border:0}
.cal-menu{position:absolute;right:16px;top:calc(100% - 8px);z-index:41;min-width:230px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:6px;box-shadow:0 18px 50px -12px rgba(0,0,0,.35)}
.cal-menu button{display:flex;align-items:center;gap:14px;width:100%;min-height:48px;padding:0 14px;border-radius:12px;font:500 16px/1 var(--ui);color:var(--t1);text-align:left}
.cal-menu button span{flex:1}
.cal-menu button svg{width:22px;height:22px;flex:none;color:var(--t2)}
.cal-menu button.on{color:var(--green)}.cal-menu button.on svg{color:var(--green)}
.cal-menu button:active{background:var(--bg2)}
.cal-year{display:grid;grid-template-columns:repeat(3,1fr);gap:22px 14px;padding:18px 16px 28px}
.cal-ym{display:block;text-align:left;border-radius:12px;padding:4px}
.cal-ym b{display:block;font:700 15px/1 var(--ui);margin-bottom:8px;color:var(--t1)}
.cal-ym.now b{color:var(--green)}
.cal-ym-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px 0}
.cal-ym-grid i{font:500 9px/14px var(--ui);font-style:normal;text-align:center;color:var(--t2)}
.cal-ym-grid i.t{background:var(--green);color:var(--on-acc,#fff);border-radius:5px;font-weight:700}
.cal-year{align-items:start}.cal-ym{align-self:start}

/* «День»: кнопка меню и боковая панель слева */
.navbtn.day-menu{display:grid;place-items:center;font-size:0;flex:none;margin-right:6px}
.navbtn.day-menu svg{width:22px;height:22px}
.drawer-back{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.34);border:0;animation:drFade .18s ease-out}
.day-drawer{position:fixed;left:0;top:0;bottom:0;z-index:61;width:min(84vw,340px);background:var(--surface);border-right:1px solid var(--line);padding:calc(var(--safe-top,0px) + 18px) 14px calc(var(--safe-bottom,0px) + 18px);overflow-y:auto;display:flex;flex-direction:column;gap:2px;animation:drIn .2s ease-out;box-shadow:18px 0 50px -20px rgba(0,0,0,.35)}
@keyframes drIn{from{transform:translateX(-24px);opacity:.4}to{transform:none;opacity:1}}@keyframes drFade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.day-drawer,.drawer-back{animation:none}}
.dr-search{display:flex;align-items:center;gap:10px;min-height:46px;border:1px solid var(--line);border-radius:14px;background:var(--bg2);color:var(--t3);font:500 14px/1 var(--ui);padding:0 14px;margin-bottom:10px;text-align:left}
.dr-search svg{width:18px;height:18px;flex:none}
.dr-row{display:flex;align-items:center;gap:12px;min-height:52px;padding:6px 8px;border-radius:12px;text-align:left;width:100%}
.dr-row:active{background:var(--bg2)}
.dr-ic{width:28px;height:28px;display:grid;place-items:center;color:var(--green-tx,var(--green));font-size:17px;flex:none}
.dr-ic svg{width:20px;height:20px}
.dr-body{display:flex;flex-direction:column;gap:3px;min-width:0}
.dr-body b{font:600 15px/1.2 var(--ui);color:var(--t1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dr-body em{font:500 12px/1.2 var(--ui);font-style:normal;color:var(--t3)}
.dr-h{font:600 11px/1 var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--t3);margin:16px 8px 6px}
.dr-tags{display:flex;flex-wrap:wrap;gap:6px;padding:2px 8px 6px}
.dr-tags button{min-height:32px;padding:0 12px;border:1px solid var(--line);border-radius:99px;font:600 12.5px/1 var(--ui);color:var(--t2)}
.dr-tags button.on,.dr-tags button.pri.on{background:var(--green-bg);border-color:var(--acc-ring,var(--green));color:var(--green-tx,var(--green))}
/* календарь: вид — подписью со стрелкой; заголовок года в длинном списке */
.cal-bar .cal-viewbtn{flex:none;display:flex;align-items:center;gap:7px;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:14px;font:600 14px/1 var(--ui);color:var(--t1);background:var(--surface)}
.cal-bar .cal-viewbtn i{width:7px;height:7px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(45deg) translateY(-2px);color:var(--t3)}
.cal-year-h{font:750 24px/1 var(--ui);letter-spacing:-.03em;margin:8px 20px 0;color:var(--t1)}

/* календарь: шапка как прежде (стрелки, месяц по центру, «Сетка / Список»), справа от плашки — кнопка вида */
.cal-top{position:relative}
.cal-top .cal-viewbtn{flex:none;display:flex;align-items:center;gap:7px;min-height:44px;padding:0 14px;border-radius:12px;font:600 13px/1 var(--ui);color:var(--green-tx,var(--green));background:transparent}
.cal-top .cal-viewbtn.on{background:var(--green-bg)}
.cal-top .cal-viewbtn i{width:7px;height:7px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.cal-menu hr{border:0;border-top:1px solid var(--line);margin:4px 8px}
.cal-menu .cal-leaf{flex:none!important;width:22px;height:22px;display:grid;place-items:center}
.cal-menu .cal-leaf b{display:grid;place-items:center;width:20px;height:20px;border:1.5px solid var(--t2);border-top-width:4px;border-radius:6px;font:700 9.5px/1 var(--ui);color:var(--t2)}

.day-edge{position:fixed;left:0;top:50%;z-index:30;width:22px;height:84px;margin-top:-42px;display:flex;align-items:center;padding:0;background:none;border:0}
.day-edge i{display:block;width:5px;height:46px;border-radius:0 6px 6px 0;background:var(--line);box-shadow:inset 0 0 0 1px rgba(0,0,0,.04)}
/* ручка у левого края — единственный видимый вход в меню дня. Стоит ниже середины экрана: у телефонов Samsung своя
   боковая ручка обычно справа и выше, путаться с ней не должна */
.day-edge{top:58%}

/* предупреждение на странице напоминаний: телефон их не показывает или задерживает */
.notify-warn{margin:12px 0 4px;padding:14px 16px;border:1px solid var(--warn-line,#e3c98f);background:var(--warn-bg,#fbf3df);border-radius:16px;display:grid;gap:8px}
.notify-warn b{font:650 15px/1.3 var(--ui);color:var(--t1)}
.notify-warn p{margin:0;font:500 13.5px/1.45 var(--ui);color:var(--t2)}
.notify-warn .btn{justify-self:start}
html[data-theme=dark] .notify-warn,html[data-theme=bwdark] .notify-warn,html[data-luxe-dark] .notify-warn{background:rgba(230,192,111,.1);border-color:rgba(230,192,111,.32)}

/* лист «Вы в другом часовом поясе» — дизайн из копии владельца (GPT, 8 октября 2026) */
/* Лист «Вы в другом часовом поясе». Все правила ограничены классами tz-*. */
.functional .sheet .tz-head{padding:10px 20px 13px;border-bottom:0}
.functional .sheet .tz-head h2.plain{font-size:1.375rem;font-weight:650;line-height:1.16;letter-spacing:-.035em;max-width:19ch;color:var(--t1)}
.functional .sheet .tz-sheet{padding:0 20px 16px;min-height:0}
.tz-route{display:grid;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);gap:9px;align-items:center;border:1px solid var(--line);border-radius:19px;background:var(--bg2);padding:12px 14px}
.tz-zone{min-width:0;display:grid;gap:4px}
.tz-label{font:500 .625rem/1.25 var(--ui);color:var(--t3);letter-spacing:.09em;text-transform:uppercase}
.tz-zone b{font:600 1rem/1.3 var(--ui);letter-spacing:-.02em;color:var(--t1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tz-offset{font:500 .6875rem/1.3 var(--ui);color:var(--t2);font-variant-numeric:tabular-nums}
.tz-current .tz-label,.tz-current .tz-offset{color:var(--green)}
.tz-route-arrow{display:grid;place-items:center;width:24px;height:24px;color:var(--green)}
.tz-route-arrow svg{width:22px;height:22px}
.tz-ready{display:flex;gap:10px;align-items:center;margin:14px 0 8px}
.tz-ready-icon{display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:50%;background:var(--green-bg);color:var(--green)}
.tz-ready-icon svg{width:21px;height:21px}
.tz-ready b{display:block;font:600 .8125rem/1.35 var(--ui);color:var(--t1)}
.tz-ready p{margin:3px 0 0;font:500 .6875rem/1.35 var(--ui);color:var(--t2)}
.tz-rhythm{font:500 .75rem/1.4 var(--ui);color:var(--t2);margin:0 0 15px}
.tz-choice{display:flex;justify-content:space-between;gap:8px;align-items:baseline;padding-top:14px;border-top:1px solid var(--line)}
.tz-choice h3{margin:0;font:600 .9375rem/1.3 var(--ui);color:var(--t1);letter-spacing:-.025em}
.tz-choice>span{font:500 .625rem/1.35 var(--ui);color:var(--t3);text-align:right;max-width:12ch}
.tz-preview-label{display:flex;justify-content:space-between;gap:10px;margin:11px 0 7px;font:500 .6875rem/1.3 var(--ui);color:var(--t2)}
.tz-preview-label b{font-weight:600;color:var(--green);font-variant-numeric:tabular-nums}
.tz-list{border:1px solid var(--line);border-radius:16px;background:var(--surface);padding:0 12px}
.tz-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0}
.tz-row+.tz-row{border-top:1px solid var(--line)}
.tz-event{min-width:0}
.tz-event b{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font:600 .8125rem/1.3 var(--ui);letter-spacing:-.015em;color:var(--t1);overflow-wrap:anywhere}
.tz-event>span{display:block;margin-top:3px;font:500 .6875rem/1.3 var(--ui);color:var(--t3)}
.tz-time{display:flex;gap:6px;align-items:center;white-space:nowrap;font:500 .75rem/1.3 var(--ui);font-variant-numeric:tabular-nums}
.tz-time>span,.tz-time>i{color:var(--t3)}
.tz-time>i{font-style:normal;font-size:.6875rem}
.tz-time>strong{font-weight:650;color:var(--t1)}
.tz-more{margin:0;padding:9px 0 10px;border-top:1px solid var(--line);font:500 .6875rem/1.4 var(--ui);color:var(--t2)}
.tz-hint{margin:10px 0 0;font:500 .6875rem/1.45 var(--ui);color:var(--t2)}
.functional .sheet .tz-foot{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;padding:12px 16px calc(14px + var(--safe-bottom));border-top:1px solid var(--line)}
.functional .sheet .tz-foot .btn{min-height:48px;min-width:0;padding:10px 12px;font:600 .75rem/1.35 var(--ui);white-space:normal;overflow-wrap:anywhere;text-align:center}
.functional .sheet .tz-foot .tz-keep{border-color:var(--line);background:var(--bg2);color:var(--t2);box-shadow:none}
.functional .sheet .tz-foot-single{grid-template-columns:1fr}
.tz-settled{margin:18px 0 4px;padding:18px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(145deg,var(--green-bg),var(--bg2))}
.tz-settled h3{font:500 1.625rem/1.15 var(--ui);letter-spacing:-.04em;color:var(--t1);margin:12px 0}
.tz-settled p{font:500 .8125rem/1.5 var(--ui);color:var(--t2);margin:0;max-width:30ch}
html.text-big .functional .sheet .tz-head{padding-bottom:10px}
html.text-big .functional .sheet .tz-sheet{padding-left:16px;padding-right:16px;padding-bottom:8px}
html.text-big .tz-route{padding:10px 12px;gap:7px}
html.text-big .tz-rhythm{margin-bottom:10px}
html.text-big .tz-ready{margin-top:10px}
html.text-big .tz-choice{padding-top:10px;align-items:flex-start}
html.text-big .tz-row{padding:8px 0;gap:8px}
html.text-big .tz-time{gap:4px}
html.text-big .functional .sheet .tz-foot{padding-top:10px;padding-bottom:calc(12px + var(--safe-bottom))}
html.text-big .functional .sheet .tz-foot .btn{padding:9px 10px}
@media(max-width:375px){.tz-choice{gap:12px}.tz-choice>span{max-width:11ch}.tz-time{gap:4px}.functional .sheet .tz-foot .btn{padding-left:9px;padding-right:9px}}

/* очистка календаря телефона (js/calendar-clean.js) */
.cc{display:grid;gap:20px;min-width:0}
.cc-intro{display:flex;align-items:flex-start;gap:12px;padding:4px 0 2px}
.cc-intro>div{min-width:0}.cc-intro b{display:block;font:650 1.125rem/1.3 var(--ui);letter-spacing:-.025em;color:var(--t1)}
.cc-emblem{display:grid;place-items:center;flex:none;width:44px;height:44px;border:1px solid var(--line);border-radius:14px;background:var(--green-bg);color:var(--green)}
.cc-emblem svg{width:23px;height:23px}
.cc-lead{margin:7px 0 0;font:500 .8125rem/1.6 var(--ui);color:var(--t2)}
.cc-options{border:1px solid var(--line);border-radius:22px;padding:16px;background:var(--surface);min-width:0}
.cc-label{display:flex;align-items:center;gap:8px;margin:24px 0 12px;font:650 .875rem/1.4 var(--ui);color:var(--t1)}
.cc-label:first-child{margin-top:0}.cc-label>span{font:600 .6875rem/1 var(--ui);color:var(--t3);font-variant-numeric:tabular-nums}
.cc-calendars{display:grid;gap:6px}
.cc-cal,.cc-row{display:flex;align-items:center;gap:12px;width:100%;min-width:0;min-height:60px;text-align:left;padding:12px;border:1px solid var(--line);border-radius:13px;background:var(--surface)}
.cc-cal.on{background:var(--green-bg)}
.cc-cal i,.cc-row i{flex:none;width:23px;height:23px;border:1.5px solid var(--t3);border-radius:7px;display:grid;place-items:center;color:transparent}
.cc-cal i svg,.cc-row i svg{width:15px;height:15px}
.cc-cal.on i,.cc-row.on i{background:var(--green-bg);border-color:var(--green);color:var(--green)}
.cc-cal span,.cc-row span{display:grid;gap:4px;min-width:0}
.cc-cal b,.cc-row b{font:600 .875rem/1.4 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.cc-cal small,.cc-row small{font:500 .75rem/1.4 var(--ui);color:var(--t2);overflow-wrap:anywhere}
.cc-row{border:0;border-radius:0;border-bottom:1px solid var(--line);padding:14px 0;user-select:none;-webkit-user-select:none;background:transparent}
.cc-row:not(.on) i{border-style:dashed}.cc-row:not(.on) b{color:var(--t2)}
.cc-seg{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px;background:var(--bg2);padding:4px;border-radius:14px}
.cc-seg button{min-width:0;min-height:48px;padding:9px 7px;border:1px solid transparent;border-radius:10px;text-align:center;font:600 .8125rem/1.4 var(--ui);color:var(--t2);overflow-wrap:anywhere}
.cc-seg button.on{border-color:var(--line);background:var(--surface);color:var(--t1)}
.cc-periods{display:flex;flex-wrap:wrap;gap:6px}
.cc-periods button{min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;font:500 .75rem/1.4 var(--ui);color:var(--t2);text-align:center}
.cc-periods button.on{border-color:var(--green);background:var(--green-bg);color:var(--t1);font-weight:650}
.cc-safe{display:flex;align-items:flex-start;gap:7px;margin:18px 0 12px;font:500 .75rem/1.5 var(--ui);color:var(--t2)}
.cc-safe>span{flex:none;color:var(--green)}.cc-safe svg{width:16px;height:16px}
.cc .cc-find,.cc .cc-del{display:block;width:100%;min-height:48px;padding:12px;font:650 .8125rem/1.4 var(--ui);white-space:normal;text-align:center}
.cc-error,.cc-result{margin:0;padding:14px;border-radius:14px;font:500 .8125rem/1.5 var(--ui);overflow-wrap:anywhere}
.cc-error{color:var(--danger);background:var(--danger-bg)}.cc-result{color:var(--t1);background:var(--green-bg)}
.cc-found{min-width:0}.cc-found-head h2{font:650 1.25rem/1.3 var(--ui);letter-spacing:-.035em;margin:0;color:var(--t1)}
.cc-found-head p{font:500 .8125rem/1.5 var(--ui);color:var(--t2);margin:6px 0 12px}
.cc-count{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 8px;border-block:1px solid var(--line);font:500 .8125rem/1.4 var(--ui);color:var(--t2);padding:6px 0}
.cc-count b{font-weight:700;color:var(--t1)}.cc-count>span{display:flex;gap:4px}
.cc-count button{min-height:44px;padding:9px 10px;font:600 .75rem/1.4 var(--ui);color:var(--t1);border-radius:10px}
.cc-gesture{display:flex;gap:8px;font:500 .6875rem/1.5 var(--ui);margin:12px 0;color:var(--t2)}.cc-gesture>span{color:var(--green);font-size:18px}
.cc-month{margin:20px 0 4px;font:600 .6875rem/1.4 var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--t3)}
.cc-note{font:500 .75rem/1.5 var(--ui);color:var(--t2);margin:12px 0 0;overflow-wrap:anywhere}
.cc-bottom{display:grid;gap:8px}.cc-bottom p{font:500 .75rem/1.5 var(--ui);color:var(--t2);margin:0}
.cc-confirm{padding:18px;border:1px solid var(--danger);border-radius:20px;background:var(--danger-bg);min-width:0}
.cc-confirm-label{font:600 .6875rem/1.4 var(--ui);letter-spacing:.07em;text-transform:uppercase;color:var(--danger)}
.cc-confirm h3{font:650 1.25rem/1.3 var(--ui);margin:10px 0;color:var(--t1);letter-spacing:-.025em}
.cc-confirm p{margin:8px 0;font:500 .8125rem/1.5 var(--ui);color:var(--t2)}
.cc-confirm .cc-final-note{color:var(--danger)}.cc-confirm>div{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:8px;margin-top:16px}
.cc-confirm .btn{min-width:0;min-height:48px;padding:10px 8px;font:600 .75rem/1.4 var(--ui);white-space:normal;text-align:center}
.cc-empty{padding:20px 0;display:grid;justify-items:start;gap:10px}.cc-empty h2,.cc-empty h3{font:650 1.125rem/1.3 var(--ui);margin:0;color:var(--t1)}
.cc-empty p{font:500 .8125rem/1.5 var(--ui);margin:0;color:var(--t2)}
/* очистка календаря, 17 октября: подписи «Прошедшие» / «Будущие», предупреждение о событиях не из Зарока, метки строк, числа найденного, кнопка выключения отправки */
.cc-sub{margin:12px 0 6px;font:600 .75rem/1.4 var(--ui);color:var(--t2)}
.cc-warn{display:flex;align-items:flex-start;gap:8px;margin:10px 0 0;padding:10px 12px;border:1px solid var(--danger);border-radius:12px;background:var(--danger-bg);font:600 .75rem/1.5 var(--ui);color:var(--danger);overflow-wrap:anywhere}
.cc-warn>span{flex:none;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--danger);color:var(--danger-bg);font:800 .6875rem/1 var(--ui)}
.cc-row .cc-tags{display:flex;flex-wrap:wrap;gap:4px}
.cc-tag{font:600 .6875rem/1.3 var(--ui);font-style:normal;color:var(--t2);border:1px solid var(--line);border-radius:999px;padding:2px 8px}
.cc-sum{margin:0 0 10px;font:500 .8125rem/1.5 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.cc-confirm .cc-confirm-sum{color:var(--t1)}
.cc-stop{display:grid;gap:8px;margin-top:8px}.cc-stop p{margin:0;font:500 .75rem/1.5 var(--ui);color:var(--t2)}.cc-stop .btn{min-height:48px;white-space:normal}
html.text-big .cc-confirm>div{grid-template-columns:1fr}html.text-big .cc-count>span{width:100%;justify-content:flex-end}

/* сценарии: строка в «Курсах» и кнопка в пустом дне */
.scn-row{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:14px 16px;border:1px solid var(--line);border-radius:18px;background:var(--surface);margin-bottom:10px}
.scn-ic{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--green-bg);color:var(--green)}
.scn-ic svg{width:22px;height:22px}
.scn-body{display:grid;gap:3px;min-width:0;flex:1}
.scn-body b{font:650 15.5px/1.2 var(--ui);color:var(--t1)}
.scn-body em{font:500 12.5px/1.35 var(--ui);font-style:normal;color:var(--t3)}
.scn-row>i{font-style:normal;color:var(--t3);font-size:20px;flex:none}
.scn-start{display:inline-flex;align-items:center;gap:8px;margin-top:14px;min-height:40px;padding:0 16px;border:1px solid var(--line);border-radius:99px;font:600 13.5px/1 var(--ui);color:var(--green-tx,var(--green));background:var(--surface)}
.scn-start svg{width:18px;height:18px}

/* «Пример» на пустых экранах — только демонстрационные данные */
.demo{margin:18px 16px 12px;padding:18px;border:1px dashed var(--t3);border-radius:22px;background:var(--surface);text-align:left;min-width:0}
.list>.demo{margin:6px 0 12px}
.demo-h{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.demo-h>div{min-width:0}
.demo-badge{display:inline-block;font:650 .625rem/1.4 var(--ui);letter-spacing:.1em;text-transform:uppercase;color:var(--t1);background:var(--green-bg);border:1px solid var(--line);border-radius:7px;padding:4px 7px}
.demo-h h3{font:650 1.1875rem/1.3 var(--ui);color:var(--t1);letter-spacing:-.035em;margin:10px 0 0;overflow-wrap:anywhere}
.demo-x{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);color:var(--t2);font:400 24px/1 var(--ui);margin:-5px -5px 0 0}
.demo-caption{font:500 .6875rem/1.5 var(--ui);color:var(--t2);margin:8px 0 18px}
.demo-list{display:grid;gap:0;border-block:1px solid var(--line)}
.demo-row{display:grid;grid-template-columns:36px 28px minmax(0,1fr) 20px;align-items:center;gap:8px;padding:14px 0;border-bottom:1px solid var(--line)}
.demo-row:last-child{border-bottom:0}.demo-row time{font:500 .6875rem/1.4 var(--ui);color:var(--t2);font-variant-numeric:tabular-nums}
.demo-ic{flex:none;width:28px;height:28px;border-radius:9px;display:grid;place-items:center;color:var(--green);background:var(--green-bg)}.demo-ic svg{width:17px;height:17px}
.demo-row-copy{display:grid;gap:4px;min-width:0}.demo-row b{font:600 .8125rem/1.4 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.demo-row small{font:500 .6875rem/1.4 var(--ui);color:var(--t2)}
.demo-row i{width:20px;height:20px;border:1px solid var(--t3);border-radius:6px;display:grid;place-items:center;color:transparent}.demo-row i svg{width:12px;height:12px}
.demo-row.done i{border-color:var(--green);color:var(--green);background:var(--green-bg)}.demo-row.done b{color:var(--t2);text-decoration:line-through;text-decoration-thickness:1px}
.demo-explain{font:500 .75rem/1.6 var(--ui);color:var(--t2);margin:14px 0 0}
.demo-f{display:grid;gap:4px;margin-top:14px}.demo .demo-f .btn{width:100%;min-width:0;min-height:48px;padding:12px;font:600 .8125rem/1.4 var(--ui);white-space:normal;text-align:center}
.demo-more{min-height:44px;padding:10px 6px;text-align:center;font:600 .75rem/1.5 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.demo-course,.demo-insight,.demo-agenda{border:1px solid var(--line);border-radius:15px;padding:14px;background:var(--bg2);min-width:0}
.demo-course{display:grid;gap:12px}.demo-course-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.demo-course-h b{flex:1;min-width:90px;font:650 .875rem/1.4 var(--ui);color:var(--t1)}
.demo-kind{font:500 .625rem/1.4 var(--ui);color:var(--t2)}.demo-course-sub{font:500 .6875rem/1.5 var(--ui);color:var(--t2);margin:0}
.demo-bar{height:5px;border-radius:10px;background:var(--line);overflow:hidden}.demo-bar i{display:block;height:100%;border-radius:inherit;background:var(--green)}
.demo-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.demo-week i{display:grid;place-items:center;aspect-ratio:1;max-height:34px;border:1px solid var(--line);border-radius:7px;font:600 .625rem/1 var(--ui);font-style:normal;color:var(--t2)}.demo-week i.on{color:var(--green);background:var(--green-bg);border-color:var(--green)}
.demo-stat{display:flex;align-items:center;gap:12px;margin-bottom:16px}.demo-stat strong{font:600 2.625rem/1 var(--ui);letter-spacing:-.05em;color:var(--t1)}.demo-stat>span{font:500 .75rem/1.5 var(--ui);color:var(--t2)}
.demo-chart{height:116px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;border-bottom:1px solid var(--line);margin:0 0 12px;padding-bottom:20px;position:relative}
.demo-chart>div{display:flex;align-items:center;justify-content:flex-end;flex-direction:column;position:relative;min-width:0}.demo-chart i{display:block;width:75%;border-radius:5px 5px 0 0;background:var(--green);opacity:.72}.demo-chart>div:nth-child(4) i{opacity:1}.demo-chart span{position:absolute;bottom:-18px;font:500 .5625rem/1.2 var(--ui);color:var(--t2)}
.demo-agenda-day{display:flex;align-items:flex-start;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}.demo-agenda-day:first-child{padding-top:0}.demo-agenda-day:last-child{padding-bottom:0;border:0}
.demo-agenda-day>span{flex:none;display:grid;justify-items:center;min-width:28px;color:var(--t1);font:500 .625rem/1.4 var(--ui)}.demo-agenda-day>span b{font:600 1.375rem/1.2 var(--ui)}
.demo-agenda-day>div{display:grid;gap:4px;min-width:0}.demo-agenda-day>div b{font:600 .8125rem/1.4 var(--ui);color:var(--t1);overflow-wrap:anywhere}.demo-agenda-day small{font:500 .6875rem/1.5 var(--ui);color:var(--t2)}.demo-agenda-day small+b{margin-top:8px}
.demo-conversation{display:grid;gap:10px}.demo-message{padding:14px;border:1px solid var(--line);background:var(--bg2);border-radius:4px 16px 16px;font:500 .8125rem/1.5 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.demo-message-you{margin-left:24px;background:var(--green-bg);border-radius:16px 4px 16px 16px}.demo-speaker{display:block;font:600 .625rem/1.5 var(--ui);color:var(--t2);margin-bottom:8px}.demo-message b{font-weight:600}.demo-message p{font:500 .75rem/1.6 var(--ui);margin:8px 0;color:var(--t2)}
html.text-big .demo{padding:16px}html.text-big .demo-row{grid-template-columns:42px minmax(0,1fr) 20px}html.text-big .demo-row>.demo-ic{display:none}html.text-big .demo-kind{flex-basis:100%;padding-left:36px}

/* готовые сценарии: лента карточек */
.scn{margin:0 0 18px;min-width:0}.scn-top{display:flex;align-items:center;gap:10px;margin:0 0 14px}.scn-top>div{flex:1;min-width:0;display:grid;gap:6px}
.scn-eyebrow{font:500 .625rem/1.4 var(--ui);letter-spacing:.09em;text-transform:uppercase;color:var(--t2)}.scn-top b{font:650 1.125rem/1.3 var(--ui);letter-spacing:-.035em;color:var(--t1)}
.scn-top button{min-height:44px;padding:10px 6px;font:600 .8125rem/1.4 var(--ui);color:var(--t1);flex:none}
.scn-rail{display:flex;align-items:stretch;gap:12px;overflow-x:auto;scroll-snap-type:x proximity;margin:0 -16px;padding:2px 16px 10px;scrollbar-width:none}.scn-rail::-webkit-scrollbar{display:none}
.scn-card{flex:none;width:210px;min-height:278px;scroll-snap-align:start;display:flex;flex-direction:column;align-items:flex-start;gap:10px;text-align:left;padding:18px;border:1px solid var(--line);border-radius:22px;background:var(--surface);min-width:0}
.scn-art{width:90px;height:72px;display:block;margin:-4px 0 2px;color:var(--t2)}.scn-art svg{width:100%;height:100%;display:block}
.scn-card>b{font:650 1rem/1.3 var(--ui);letter-spacing:-.025em;color:var(--t1);overflow-wrap:anywhere}.scn-card>em{font:500 .75rem/1.55 var(--ui);font-style:normal;color:var(--t2);flex:1;overflow-wrap:anywhere}
.scn-steps{display:flex;flex-wrap:wrap;gap:5px;color:var(--green)}.scn-steps>i{display:grid;place-items:center;width:26px;height:26px;border-radius:8px;background:var(--green-bg)}.scn-steps svg{width:15px;height:15px}
.scn-card>small{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;border-top:1px solid var(--line);padding-top:10px;font:500 .6875rem/1.4 var(--ui);color:var(--t2)}.scn-card>small span{color:var(--green);font-size:18px}
html.text-big .scn-card{width:240px}


/* лист часового пояса: число событий — значком у заголовка, срок и сдвиг — одной строкой над списком */
.tz-choice{align-items:center}.tz-choice .tz-count{flex:none;min-width:24px;height:24px;padding:0 8px;border-radius:99px;display:inline-grid;place-items:center;background:var(--green-bg);color:var(--green);font:700 12.5px/1 var(--ui);white-space:nowrap}
.tz-preview-label span{white-space:nowrap}.tz-preview-label span b{font-weight:700;color:var(--t1)}

/* Пустой день и пустые курсы. Эти классы принадлежат только двум состояниям. */
.functional .dayempty.zerostate,.functional .empty.zerostate{position:relative;padding:24px 20px 20px;display:flex;flex-direction:column;align-items:center;gap:0;min-width:0;background:transparent;text-align:center;color:var(--t1)}
.zerostate-art{display:block;flex:none;width:80px;height:64px;position:relative;color:var(--t2);margin:0 0 14px}.zerostate-art svg{position:relative;display:block;width:100%;height:100%}
.functional .zerostate h2{margin:0;font:600 1.25rem/1.3 var(--ui);color:var(--t1);letter-spacing:-.03em}
.functional .zerostate p{font:500 .8125rem/1.6 var(--ui);color:var(--t2);margin:8px 0 0;max-width:31ch;overflow-wrap:anywhere}
.functional .zerostate .scn-start{margin-top:16px;white-space:normal;text-align:center;min-height:44px;padding:10px 14px;line-height:1.4;max-width:100%}
.functional .zerostate::after{content:"";display:block;width:32px;height:1px;background:var(--line);margin-top:20px}
.functional .zerostate-course+.demo{margin-top:0}
html.text-big .functional .zerostate{padding-left:16px;padding-right:16px}

/* сценарий: «Шаг N» лежит внутри карточки шага, а не на её рамке (так рисует системная подпись группы) */
.template-item>legend{float:left;width:100%;padding:0;margin:0 0 12px}.template-item>legend+*{clear:both}
/* открытый лист: экран под ним плавно уходит в размытие и возвращается при закрытии — внимание на листе */
.scrim{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);transition:opacity .22s ease,-webkit-backdrop-filter .28s ease,backdrop-filter .28s ease}
.scrim.in{-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}
@media (prefers-reduced-motion:reduce){.scrim{transition:opacity .01s}}

/* лента сценариев: карточка в покое стоит с отступом от края экрана, а не прижата к нему; под своими курсами — ниже и тише */
.scn-rail{scroll-padding:0 16px}
.scn.scn-low{margin:28px 0 8px}
/* подготовка в распорядке: подсветка отмеченной строки — во всю ширину блока, галочка появляется без выпрыгивания за край */
.functional .prep-inline{overflow:hidden}
.functional .prep-inline .prep-row2{box-sizing:border-box;width:calc(100% + 28px);margin:0 -14px;padding:9px 14px}
.functional .prep-inline .prep-ready{width:100%;margin:8px 0 14px}
@keyframes rowglow2{0%{background:var(--green-bg)}100%{background:transparent}}
@keyframes dotpop{0%{transform:scale(.72)}70%{transform:scale(1.06)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:no-preference){
  .functional .prep-row2.just{animation:rowglow2 .7s ease-out}
  .functional .just .dotchk{animation:dotpop .32s ease-out}
}
/* ручка меню дня: за неё можно потянуть — панель едет за пальцем, ручка идёт по её краю */
.day-edge{width:28px;touch-action:none}
.day-edge i{transition:width .15s ease,background .15s ease}
.day-edge:active i,.day-edge.pull i{width:8px;background:var(--t3)}
.day-edge.pull{z-index:62}
.day-drawer{touch-action:pan-y}
.day-drawer.still,.drawer-back.still{animation:none}
/* сетка календаря тянется за пальцем: высота меняется на ходу, после отпускания доезжает до своего размера */
.cal-foldzone.pulling{overflow:hidden;padding-bottom:0}
.cal-grab i{transition:width .15s ease,background .15s ease}
.cal-grab:active i,.cal-grab.pull i{width:52px;background:var(--t3)}

/* экран подготовки: выход к делам без отметок — неброской строкой; вход в подготовку из распорядка — одной строкой */
.functional .prep-skip{align-self:center;color:var(--t3);padding:10px 12px}

/* ===== профиль, данные и доступ: дизайн GPT от 8 октября 2026 (пакет «Профиль и данные — дизайн»), классы .ps-* ===== */
/* Ordinary themes: scoped to profile services and their sheets. */
.functional :is(.ps-data,.ps-about,.ps-profile-services){display:grid;gap:16px;min-width:0}
.functional .ps-intro{margin:0 2px;font:500 .8125rem/1.7 var(--ui);color:var(--t2);overflow-wrap:anywhere}
.functional .ps-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:18px;min-width:0;margin:0}
.ps-card-head{display:flex;align-items:center;gap:12px;min-width:0}.ps-card-head>div{min-width:0;flex:1}
.functional .ps-card :is(h2,h3){font:650 1.0625rem/1.35 var(--ui);letter-spacing:-.025em;color:var(--t1);margin:0;overflow-wrap:anywhere}
.ps-symbol{display:grid;place-items:center;flex:none;width:40px;height:40px;border:1px solid var(--line);border-radius:12px;background:var(--green-bg);color:var(--t2)}.ps-symbol svg{width:21px;height:21px}
.ps-eyebrow{display:block;font:600 .625rem/1.5 var(--ui);color:var(--t2);letter-spacing:.08em;text-transform:uppercase}.ps-card-head .ps-eyebrow{margin-bottom:5px}
.ps-status-dot{display:block;flex:none;width:7px;height:7px;background:var(--green);border-radius:50%}.ps-status-dot.is-error{background:var(--danger)}.ps-status-dot.is-wait{background:var(--t3)}
.functional .ps-card p.ps-copytext{font:500 .8125rem/1.7 var(--ui);color:var(--t1);margin:14px 0 0;overflow-wrap:anywhere}
.functional .ps-note{font:500 .75rem/1.7 var(--ui);color:var(--t2);margin:10px 0 0;overflow-wrap:anywhere}
.functional .ps-card .ps-message-error{color:var(--danger)}
.ps-details{margin-top:12px;padding-top:8px;border-top:1px solid var(--line)}.ps-details summary{font:600 .6875rem/1.5 var(--ui);color:var(--t2);min-height:40px;padding:10px 0;cursor:pointer}.ps-details p{font:500 .6875rem/1.7 var(--ui);margin:4px 0 0;color:var(--t2)}
.ps-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;min-width:0}.ps-section-title>.ps-eyebrow{font-size:.5625rem;letter-spacing:.04em;text-align:right;max-width:12ch;padding-top:3px}
.ps-transfer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.ps-transfer{min-height:114px;padding:14px;min-width:0;text-align:left;border:1px solid var(--line);border-radius:14px;background:var(--bg2);display:grid;justify-items:start;gap:5px;color:var(--t1)}.ps-transfer .ps-symbol{width:30px;height:30px;border:0;background:transparent;color:var(--t2);margin-bottom:4px}.ps-transfer .ps-symbol svg{width:21px;height:21px}.ps-transfer b{font:650 .875rem/1.4 var(--ui)}.ps-transfer small{font:500 .6875rem/1.5 var(--ui);color:var(--t2)}
.functional .ps-privacy .ps-stats{display:flex;align-items:center;gap:14px;width:100%;margin:10px 0 0;padding:0 0 16px;border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;background:transparent;text-align:left}.ps-stats .setbody{min-width:0;flex:1}.functional .ps-stats .setbody b{font:650 .875rem/1.4 var(--ui);color:var(--t1);overflow-wrap:anywhere}.functional .ps-stats .setbody em{font:500 .75rem/1.6 var(--ui);color:var(--t2);font-style:normal;display:block;margin-top:6px;overflow-wrap:anywhere}.ps-stats .switch{flex:none}
.ps-quiet-note{display:flex;align-items:flex-start;gap:8px;margin-top:12px;font:500 .6875rem/1.6 var(--ui);color:var(--t2)}.ps-quiet-note svg{width:16px;height:16px;flex:none;color:var(--t2);margin-top:2px}
.ps-backup-count{display:grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border:1px solid var(--line);border-radius:8px;font:600 .6875rem/1 var(--ui);color:var(--t2);background:var(--bg2)}
.ps-copy-list{display:grid;margin-top:16px;gap:12px}.ps-copy{display:grid;grid-template-columns:36px minmax(0,1fr);gap:10px;padding-top:14px;border-top:1px solid var(--line)}.ps-copy>.ps-symbol{width:36px;height:36px;border-radius:11px}.ps-copy-body{display:grid;gap:4px;min-width:0}.ps-copy-body b{font:600 .875rem/1.45 var(--ui);color:var(--t1);overflow-wrap:anywhere}.ps-copy-body span{font:500 .75rem/1.5 var(--ui);color:var(--t2);overflow-wrap:anywhere}.ps-copy-body small{font:500 .6875rem/1.5 var(--ui);color:var(--t3)}
.ps-copy-actions{grid-column:2;display:flex;gap:8px;align-items:center}.functional .ps-copy-actions .btn{min-width:0;min-height:44px;flex:1;padding:10px;font:600 .75rem/1.4 var(--ui);white-space:normal;text-align:center;border-radius:11px}
.ps-icon-button{flex:none;min-width:44px;min-height:44px;border:1px solid var(--line);border-radius:11px;display:grid;place-items:center;background:transparent;color:var(--t2)}.ps-icon-button svg{width:19px;height:19px}
.ps-action{display:flex;align-items:center;gap:10px;text-align:left;min-height:62px;width:100%;min-width:0;padding:14px 0;background:transparent;color:var(--t1);border:0;border-top:1px solid var(--line)}.ps-action>span:not(.ps-action-icon){flex:1;min-width:0;display:grid;gap:4px}.ps-action b{font:600 .8125rem/1.45 var(--ui);overflow-wrap:anywhere}.ps-action small{font:500 .6875rem/1.5 var(--ui);color:var(--t2);overflow-wrap:anywhere}.ps-action>i{flex:none;font-style:normal;color:var(--t3);font-size:19px;line-height:1}.ps-action-icon{display:grid;place-items:center;flex:none;width:28px;height:28px;color:var(--t2)}.ps-action-icon svg{width:19px;height:19px}
.ps-action-danger{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--danger-bg);color:var(--danger)}.ps-action-danger .ps-action-icon,.ps-action-danger i{color:var(--danger)}.ps-action-danger small{color:var(--t2)}
.ps-actions{margin-top:14px}.ps-actions:empty{display:none}.ps-actions .ps-action:first-child{border-top:1px solid var(--line)}
.functional .ps-card .ps-primary,.functional .ps-data .ps-primary{display:block;width:100%;min-height:48px;padding:12px;font:650 .8125rem/1.5 var(--ui);white-space:normal;text-align:center;margin-top:16px;min-width:0}
.functional .ps-card .ps-access{margin-top:16px;padding:0;border:0;border-radius:0;background:transparent}.functional .ps-access p{font:500 .8125rem/1.75 var(--ui);color:var(--t2);margin:10px 0 0;overflow-wrap:anywhere}
.ps-access-status{display:flex;align-items:center;gap:7px;font:600 .6875rem/1.5 var(--ui);color:var(--t2)}.ps-access-error .ps-status-dot,.ps-access-hold .ps-status-dot{background:var(--danger)}.ps-access-checking .ps-status-dot,.ps-access-pending .ps-status-dot{background:var(--t3)}.ps-promo-action{margin-top:14px}
.ps-account .ps-card-head{flex-wrap:wrap}.ps-pill{font:500 .5625rem/1.5 var(--ui);color:var(--t2);padding:4px 7px;border:1px solid var(--line);border-radius:7px;background:var(--bg2);white-space:normal;max-width:15ch;text-align:center}
.ps-account-email{margin-top:12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg2);font:600 .8125rem/1.5 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.ps-about-version{text-align:center;font:500 .6875rem/1.5 var(--ui);color:var(--t2)}.ps-license{font:500 .625rem/1.7 var(--ui);color:var(--t3);margin:0;overflow-wrap:anywhere}
.functional .sheet .ps-head{padding:12px 20px 16px}.functional .sheet .ps-head h2{font:650 1.375rem/1.3 var(--ui);letter-spacing:-.035em;color:var(--t1)}
.functional .sheet .ps-foot{gap:8px;padding:12px 16px calc(14px + var(--safe-bottom));border-top:1px solid var(--line);background:var(--bg)}.functional .sheet .ps-foot .btn{min-height:48px;min-width:0;padding:11px;font:600 .8125rem/1.4 var(--ui);white-space:normal;text-align:center}
.functional .sheet-body:is(.ps-settings,.ps-auth,.ps-reset,.ps-code){padding:18px 16px;min-width:0}
.functional .ps-auth .qtext,.functional .ps-code .qtext{font:500 .8125rem/1.75 var(--ui);color:var(--t2);margin:0 0 18px;overflow-wrap:anywhere}
.functional .ps-auth .field{margin:16px 0}.functional .ps-auth .field>label,.functional .ps-code .field>label{font:600 .75rem/1.5 var(--ui);color:var(--t2)}
.functional .ps-auth .input,.functional .ps-code .input{min-height:50px;font:500 .9375rem/1.5 var(--ui);padding:12px;max-width:100%;min-width:0}
.functional .ps-auth .btn,.functional .ps-code .btn{min-height:48px;white-space:normal;padding:12px;font:600 .8125rem/1.5 var(--ui);min-width:0}
.functional .ps-auth .acc-card{padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--surface);margin:0 0 12px;gap:8px}.ps-auth .acc-card b{font:650 1.125rem/1.4 var(--ui);overflow-wrap:anywhere}.ps-auth .acc-card small,.ps-auth .acc-card span{font:500 .6875rem/1.5 var(--ui);color:var(--t2)}
.functional .ps-auth .hint,.functional .ps-code .hint{font:500 .75rem/1.7 var(--ui);color:var(--t2);margin:10px 0 16px;overflow-wrap:anywhere}
.functional .ps-auth .acc-tabs{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:4px;gap:4px;background:var(--bg2);border:1px solid var(--line);border-radius:14px;margin:20px 0}.ps-auth .acc-tabs button{min-height:44px;min-width:0;font:600 .8125rem/1.4 var(--ui);padding:10px;border-radius:10px;text-align:center}.ps-auth .acc-tabs button.on{background:var(--surface);color:var(--t1)}
.functional .ps-auth .acc-link{display:block;margin:8px 0 0;min-height:44px;padding:10px;width:100%;text-align:center;font:600 .75rem/1.5 var(--ui);color:var(--t1)}
.ps-auth .acc-check{min-height:48px;margin:14px 0;line-height:1.6}.ps-auth .acc-check span{font-size:.75rem}.functional .ps-auth .acc-ok{font:500 .8125rem/1.6 var(--ui);color:var(--t1);background:var(--green-bg);border-radius:12px;padding:12px}
.functional :is(.ps-auth,.ps-code) .warn{font:500 .75rem/1.65 var(--ui);padding:14px;border-radius:14px;overflow-wrap:anywhere}
.functional :is(.ps-auth,.ps-code) .legal-links{display:flex;flex-wrap:wrap;gap:6px 12px;justify-content:center;margin-top:20px;border-top:1px solid var(--line);padding-top:12px}.functional :is(.ps-auth,.ps-code) .legal-links button{min-height:44px;padding:8px;font:500 .6875rem/1.5 var(--ui);color:var(--t2)}

.functional .ps-reset .warn{font:500 .8125rem/1.7 var(--ui);padding:16px;border-radius:16px}.functional .ps-reset :is(.sect,.hint){font:500 .75rem/1.65 var(--ui);color:var(--t2)}
.functional .ps-reset .oprow{min-width:0;border-radius:14px;padding:14px;gap:10px;margin-bottom:8px;background:var(--surface);border-color:var(--line)}.ps-reset .opbody{min-width:0}.ps-reset .opbody b{font:650 .8125rem/1.45 var(--ui);overflow-wrap:anywhere}.ps-reset .opbody em{font:500 .75rem/1.6 var(--ui);overflow-wrap:anywhere}.functional .ps-reset .oprow.danger{background:var(--danger-bg)}.ps-reset .confirmrow{font:600 .75rem/1.65 var(--ui);padding:14px;border:1px solid var(--line);border-radius:14px;min-width:0}.ps-reset .confirmrow b{overflow-wrap:anywhere}.ps-reset .tick{flex:none}
.functional .ps-assistant-intro{padding:30px 18px;max-width:500px;margin:auto}.ps-assistant-art{display:grid;place-items:center;width:62px;height:62px;border-radius:20px;background:var(--green-bg);color:var(--t2);border:1px solid var(--line);margin-bottom:20px}.ps-assistant-art svg{width:34px;height:34px}.ps-assistant-intro>h2{font:600 1.625rem/1.2 var(--ui);letter-spacing:-.04em;color:var(--t1);margin:0 0 12px}.ps-assistant-intro>p{font:500 .8125rem/1.8 var(--ui);color:var(--t2);margin:0}.ps-assistant-flow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:20px 0 24px;font:600 .6875rem/1.5 var(--ui);color:var(--t2)}.ps-assistant-flow>span{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px}.ps-assistant-flow i{font-style:normal}.ps-assistant-intro .ps-access{margin-top:0}
.functional .acc-scene.ps-scene{margin:0;border:1px solid var(--line);border-radius:24px;color:var(--t1);min-height:min(80dvh,700px)}.functional .ps-scene .acc-scene-top{padding:22px 18px 20px;background:var(--surface);color:var(--t1);text-shadow:none}.functional .ps-scene .acc-brand{font:600 .625rem/1.5 var(--ui);color:var(--t2);letter-spacing:.14em;text-shadow:none}.functional .ps-scene h2{font:600 1.375rem/1.3 var(--ui);color:var(--t1);text-shadow:none;margin:10px 0}.functional .ps-scene .acc-scene-top p{font:500 .75rem/1.65 var(--ui);color:var(--t2);text-shadow:none}.functional .ps-scene .acc-scene-btns{background:var(--surface);padding:18px 16px 16px;border-top:1px solid var(--line)}.functional .ps-scene .acc-main{background:var(--green);color:var(--on-acc);min-height:48px;font:600 .8125rem/1.5 var(--ui);white-space:normal}.functional .ps-scene .acc-alt{background:var(--bg2);color:var(--t1);border-color:var(--line);min-height:48px;font:600 .8125rem/1.5 var(--ui);white-space:normal}.functional .ps-scene .acc-later{font:500 .75rem/1.5 var(--ui);min-height:44px;padding:10px;color:var(--t2)!important;opacity:1}.functional .ps-scene .acc-fine{font:500 .625rem/1.6 var(--ui);color:var(--t2);opacity:1}.ps-scene .acc-fine button{min-height:32px}
html.text-big .functional .ps-copy-actions{grid-column:1/-1}html.text-big .ps-card-head .ps-pill{max-width:100%}html.text-big .ps-section-title{flex-wrap:wrap}html.text-big .ps-section-title>.ps-eyebrow{text-align:left;max-width:none}

/* пример списка календаря — настоящими строками списка, только без нажатий */
.functional .demo-agenda-real{padding:0;display:grid;gap:8px}.functional .demo-agenda-real .agenda-row{pointer-events:none}

/* пустой день под календарём — одной строкой (правка владельца 9 октября 2026) */
.functional .dayempty.dayempty-cal{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 16px 0;padding:12px 12px 12px 16px;border:1px dashed var(--line);border-radius:16px;text-align:left;min-height:0}
.functional .dayempty-cal b{font:600 .9375rem/1.3 var(--ui);color:var(--t2)}
.functional .dayempty-cal .scn-start{margin:0;min-height:38px;padding:0 14px;flex:none}
/* профиль: что входит в подписку, небольшая кнопка промокода, пояснение под кнопкой аккаунта */
.functional .ps-perks{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:9px}.functional .ps-perks li{display:flex;gap:10px;align-items:flex-start;font:500 .875rem/1.4 var(--ui);color:var(--t1)}
.functional .ps-perks svg{flex:none;width:18px;height:18px;margin-top:1px;color:var(--green-tx,var(--green))}
.functional .ps-promo-link{display:inline-flex;align-items:center;align-self:flex-start;justify-self:start;width:auto;min-height:38px;margin-top:12px;padding:0 16px;border:1px solid var(--line-btn,var(--line));border-radius:99px;font:600 .8125rem/1 var(--ui);color:var(--t1);background:transparent}
.functional .ps-copytext.ps-copy-under{margin:10px 2px 4px;font:500 .8125rem/1.5 var(--ui);color:var(--t2)}

/* профиль, подписка: таблица «Бесплатно / Plus» и кнопки 70 / 30 в одну строку */
.functional .ps-cmp{display:grid;margin:2px 0 4px;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.functional .ps-cmp-row{display:grid;grid-template-columns:1fr 84px 56px;align-items:center;gap:6px;padding:10px 12px;border-top:1px solid var(--line-soft,var(--line));font:500 .8125rem/1.35 var(--ui);color:var(--t1)}
.functional .ps-cmp-row:first-child{border-top:0}.functional .ps-cmp-head{font:600 .6875rem/1.3 var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--t3);background:var(--bg2)}
.functional .ps-cmp-row>span:not(:first-child){text-align:center;display:grid;place-items:center}.functional .ps-cmp .yes svg{width:18px;height:18px;color:var(--green-tx,var(--green))}.functional .ps-cmp .no{color:var(--t3)}
.functional .ps-cmp-head>span:last-child{color:var(--green-tx,var(--green))}
.functional .ps-buyrow{display:grid;gap:8px;margin-top:14px}.functional .ps-buyrow.two{grid-template-columns:7fr 3fr}
.functional .ps-card .ps-buyrow .ps-primary{margin-top:0;padding-left:8px;padding-right:8px}
/* календарь во весь экран: недели делят высоту экрана поровну, последняя строка не уходит под вкладки */
.functional #calscroll:has(> .grid.full){display:flex;flex-direction:column;overflow:hidden}
.functional #calscroll > .grid.full{flex:1 1 auto;min-height:0;grid-auto-rows:minmax(0,1fr)}
.functional #calscroll > .grid.full .cell{min-height:0}
.functional #calscroll:has(> .grid.full) > .cal-grab{flex:none}
/* строка видов недели появляется плавно после сворачивания календаря */
@keyframes calSegIn{from{max-height:0;opacity:0;transform:translateY(-6px)}to{max-height:64px;opacity:1;transform:none}}
@media (prefers-reduced-motion:no-preference){.cal-week-seg.fold-in,.selected-day.cal-week .week-views.fold-in{overflow:hidden;animation:calSegIn .28s ease-out}}

/* боковая панель «Дня», вторая редакция (9 октября 2026): панель и ручка — один узел .drawer-wrap; закрытая панель
   сдвинута за левый край, ручка стоит на её правом краю и не может от неё отстать */
.drawer-wrap{position:fixed;left:0;top:0;bottom:auto;height:var(--app-h,100dvh);max-height:100dvh;z-index:30;width:min(84vw,340px);transform:translateX(-100%);pointer-events:none}
.drawer-wrap.open,.drawer-wrap.pulling{z-index:61}
.drawer-wrap.open{transform:none;animation:drIn .2s ease-out}.drawer-wrap.still{animation:none}
/* прокрутка панели начинается под строкой состояния: полоса над ней — фон панели (safe-area-inset-top), контент под неё не заходит */
.drawer-wrap{background:var(--surface)}
.drawer-wrap .day-drawer{position:absolute;top:var(--safe-top,0px);right:0;bottom:0;left:0;width:auto;height:auto;z-index:auto;animation:none;pointer-events:auto;box-sizing:border-box;padding-top:18px}
/* низ панели: последний пункт выше системных кнопок; если телефон не прислал нижний отступ, держим запас под трёхкнопочную навигацию (шаг 138в) */
.drawer-wrap .day-drawer{padding-bottom:0}
/* запас под системные кнопки — настоящий элемент в конце списка, а не padding: на части телефонов padding-bottom у прокручиваемого flex-контейнера в длину прокрутки не входит (шаг 139) */
/* сборка 78 (замечание владельца: последний пункт под системными кнопками): окно прокрутки панели кончается НАД системными кнопками
   (полоса под ним — фон панели, как полоса сверху под строкой состояния), поэтому ни в покое, ни при въезде, ни при прокрутке
   контент под кнопки не заходит; запас внизу списка — только для удобства нажатия. Кнопки: нижний отступ телефона
   (--safe-bottom; жестовая навигация даёт малый, трёхкнопочная — полный) не меньше 52px, если телефон его не прислал. */
.drawer-wrap{--dr-bar:max(var(--safe-bottom,0px),52px)}
/* Android confirmed immersive mode: no invented 52px system-button strip. Preserve real safe-area. */
html[data-android-navigation="immersive"] .drawer-wrap{--dr-bar:var(--safe-bottom,0px)}
.drawer-wrap .day-drawer{bottom:var(--dr-bar)}
/* клавиатура открыта (поиск в панели): окно Android сжимается, и полоса под системными кнопками поднималась над клавиатурой
   (замечание владельца, сборка 97). Под клавиатурой системных кнопок не видно — полосы нет, список доходит до клавиатуры;
   клавиатуру убрали — полоса снова внизу, под кнопками */
html.kb-open .drawer-wrap{--dr-bar:0px}
.drawer-wrap .dr-end{flex:none;height:22px;min-height:22px}
.drawer-wrap:not(.open):not(.pulling) .day-drawer{visibility:hidden}
.drawer-wrap .day-edge{position:absolute;left:100%;top:58%;z-index:1;pointer-events:auto}
.drawer-wrap.open:not(.pulling) .day-edge{display:none}
@media (prefers-reduced-motion:reduce){.drawer-wrap{animation:none!important}}
/* пакет 56: в мини-приложении Telegram панель дня, её ручка и затемнение живут внутри карточки .app, а не у края окна:
   на компьютере карточка стоит по центру, и панель у левого края окна была далеко от неё */
.in-tg .drawer-wrap{position:absolute;height:100%;max-height:none}
.in-tg .drawer-back{position:absolute}
.in-tg .tg-menu{display:grid;place-items:center;flex:none;padding:0}
.in-tg .tg-menu .ic{width:20px;height:20px}
.tg-section .tg-chat-open .srow-go::before{content:attr(data-go)}
.tg-section .tg-where em,.tg-section .tg-me em{color:var(--t2)}

/* вход в «Дела вместе»: два условия — аккаунт и подписка — и состояние каждого */
.functional .sg{padding:22px 16px 28px;display:grid;gap:12px}
.functional .sg h2{margin:2px 0 0;font:650 1.375rem/1.25 var(--ui);letter-spacing:-.03em;color:var(--t1);text-wrap:balance}
.functional .sg>p{margin:0 0 6px;font:500 .875rem/1.55 var(--ui);color:var(--t2)}
.functional .sg-step{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}
.functional .sg-step.ok{border-color:var(--acc-ring,var(--green));background:var(--green-bg)}
.functional .sg-n{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;border:1.5px solid var(--line-btn,var(--line));font:700 .9375rem/1 var(--ui);color:var(--t2)}
.functional .sg-step.ok .sg-n{border-color:var(--green);background:var(--green);color:var(--on-acc)}.functional .sg-n svg{width:18px;height:18px}
.functional .sg-step>div{flex:1;min-width:0;display:grid;gap:2px}.functional .sg-step b{font:650 .9375rem/1.25 var(--ui);color:var(--t1)}.functional .sg-step em{font:500 .8125rem/1.4 var(--ui);font-style:normal;color:var(--t2)}
.functional .sg-step .btn{flex:none;min-height:40px;padding:0 16px}

/* переключатель «Моё / Дела вместе» в профиле и вверху общих списков */
.functional .mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin:0 0 14px;border-radius:14px;background:var(--bg2);border:1px solid var(--line)}
.functional .mode-switch button{min-height:40px;border-radius:11px;font:600 .8125rem/1.2 var(--ui);color:var(--t2);display:flex;align-items:center;justify-content:center;gap:6px}
.functional .mode-switch button.on{background:var(--surface);color:var(--t1);box-shadow:0 1px 4px rgba(0,0,0,.08)}

/* сетка «во весь экран» растянута на всю высоту (flex) — на время жеста растяжение снимаем, иначе высота не идёт за пальцем */
.functional #calscroll > .cal-foldzone.pulling{flex:none!important}
/* смена размера календаря: блок под сеткой проявляется и подъезжает, строка видов раскрывается медленнее */
@keyframes calRise{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
@keyframes calSegIn2{from{max-height:0;opacity:0}to{max-height:64px;opacity:1}}
@media (prefers-reduced-motion:no-preference){
  .selected-day.fold-rise{animation:calRise .34s cubic-bezier(.2,.7,.2,1)}
  .cal-week-seg.fold-in,.selected-day.cal-week .week-views.fold-in{overflow:hidden;animation:calSegIn2 .42s cubic-bezier(.2,.7,.2,1)}
}

/* поиск в боковой панели: настоящее поле, результаты под ним, остальное меню на время поиска убирается */
.dr-search{padding:0 12px;cursor:text}.dr-search-input{flex:1;min-width:0;min-height:44px;border:0;background:transparent;color:var(--t1);font:500 15px/1.2 var(--ui);outline:none;padding:0}
.dr-search-input::placeholder{color:var(--t3)}.dr-search:focus-within{border-color:var(--green);background:var(--surface)}
.dr-results{display:grid;gap:2px}.dr-results:empty{display:none}
.day-drawer.finding .dr-menu{display:none}
.dr-res{display:grid;gap:3px;width:100%;text-align:left;padding:11px 8px;border-radius:12px;border-bottom:1px solid var(--line-soft,var(--line))}.dr-res:active{background:var(--bg2)}
.dr-res b{font:600 15px/1.3 var(--ui);color:var(--t1);overflow-wrap:anywhere}.dr-res em{font:500 12.5px/1.3 var(--ui);font-style:normal;color:var(--t3)}
.dr-res.done b{color:var(--t3);text-decoration:line-through}
.dr-res-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 8px 8px;font:600 13px/1.2 var(--ui);color:var(--green-tx,var(--green))}
.dr-res-h button{width:34px;height:34px;border:1px solid var(--line);border-radius:10px;font-size:18px;color:var(--t2)}
.dr-res-none{margin:0;padding:12px 8px;font:500 13.5px/1.4 var(--ui);color:var(--t3)}

.dr-search-input:focus,.dr-search-input:focus-visible{outline:none!important;box-shadow:none!important}

.functional .mode-switch.three{grid-template-columns:1fr 1.25fr 1.1fr}

/* профиль: строка «мой аккаунт» вверху — открывает «Мой профиль» */
.functional .prof-me{display:flex;align-items:center;gap:14px;width:100%;margin:0 0 14px;padding:14px 16px;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--t1);text-align:left}
.functional .prof-me .prof-ava{flex:none;display:grid;place-items:center}
.functional .prof-me-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.functional .prof-me-body b{font:600 1.0625rem/1.3 var(--ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.functional .prof-me-body small{font:.8125rem/1.3 var(--ui);color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.functional .prof-me-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.functional .prof-me-tags i{font:600 .6875rem/1 var(--ui);font-style:normal;padding:5px 9px;border-radius:999px;background:var(--bg2);color:var(--t2)}
.functional .prof-me-tags i.on{background:var(--green-bg,var(--bg2));color:var(--green-tx,var(--t1))}
.functional .prof-me>em{flex:none;font:400 1.375rem/1 var(--ui);font-style:normal;color:var(--t3)}

/* вкладки без повторного заголовка (название раздела уже стоит на нижней панели) */
.functional .scroll.tab-plain>.list{padding-top:18px}
.functional .tab-cap{margin:0 4px 12px;font:600 .75rem/1.3 var(--ui);color:var(--t2)}

/* полоска недели в свёрнутом календаре: стрелки по бокам, день недели над числом */
.functional .cal-strip{position:relative}
.functional .cal-hdr-row.fold .navbtn{visibility:hidden}
.functional .cal-strip .dow{max-height:0;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0;transition:max-height .18s ease,opacity .18s ease,padding .18s ease}
.functional .cal-strip:has(.pulling) .dow{max-height:40px;padding-top:16px;padding-bottom:8px;opacity:1}
.functional .cal-strip .grid.week{padding:12px 56px 6px;gap:2px}
.functional .cal-strip .grid.week .cell{min-height:0;height:auto;aspect-ratio:auto;padding:8px 0 9px;display:flex;flex-direction:column;align-items:center;gap:4px;border-radius:14px;background:transparent!important;border-color:transparent!important;box-shadow:none}
.functional .cal-strip .grid.week .cell.sel{background:var(--green-bg)!important}
.functional .cal-strip .cell-dw{font:500 .6875rem/1.2 var(--ui);color:var(--t2)}
.functional .cal-strip .grid.week .cell-n{font:500 1.0625rem/1.3 var(--ui)}
.functional .cal-strip .grid.week .cell-bar{display:none}
.functional .cal-side{position:absolute;top:12px;left:12px;z-index:2;width:38px;height:58px;display:grid;place-items:center;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--t1);font:500 1.125rem/1 var(--ui);transition:opacity .15s ease}
.functional .cal-side.next{left:auto;right:12px}
.functional .cal-strip:has(.pulling) .cal-side{opacity:0;pointer-events:none}
@media (max-width:370px){.functional .cal-strip .grid.week{padding-left:48px;padding-right:48px}.functional .cal-side{width:32px;left:10px}.functional .cal-side.next{right:10px}}

/* «Мой профиль» и «Аккаунт»: аватар, имя, Plus, достижения */
.functional .prof-ava{overflow:hidden}.functional .prof-ava img{width:100%;height:100%;object-fit:cover;display:block}
.functional .prof-ava.big{width:96px;height:96px;font-size:36px}.functional .prof-ava.big svg{width:40px;height:40px}
.functional .prof-ava.sm{width:36px;height:36px;font-size:14px}
.functional .me-hero{display:flex;flex-direction:column;align-items:center;gap:10px;padding:6px 0 18px}
.functional .me-name{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:44px;color:var(--t1)}
.functional .me-name b{font:700 1.25rem/1.3 var(--ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.functional .me-name i{font-style:normal;font-size:1.25rem;color:var(--t3)}
.functional .me-mail{font:.8125rem/1.3 var(--ui);color:var(--t2);margin-top:-8px}
.functional .me-plus{display:block;width:100%;min-height:54px;margin:0 0 12px;padding:0 16px;border:1px solid var(--line);border-radius:18px;background:var(--surface);color:var(--green-tx);font:600 1rem/1.2 var(--ui);text-align:center}
.functional div.me-plus{display:grid;place-items:center}
.functional .me-plus.plain{color:var(--t1)}
.functional .ach{margin:2px 0 14px;padding:18px 16px 14px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}
.functional .ach-note{margin:12px 0 0;font:.75rem/1.4 var(--ui);color:var(--t3)}
.functional .ava-row{position:relative;cursor:pointer}.functional .ava-file{position:absolute;inset:0;opacity:0;width:100%;height:100%}
.functional .ava-note{margin:8px 4px 14px;font:.75rem/1.4 var(--ui);color:var(--t3)}
/* окно кадрирования аватара: круг, в котором фото тянется, и ползунок масштаба */
.functional .ava-edit{display:flex;flex-direction:column;align-items:center;gap:16px;padding:6px 0 2px}
.functional .ava-stage{position:relative;width:min(280px,72vw);aspect-ratio:1/1;border-radius:50%;overflow:hidden;background:var(--bg2);border:1px solid var(--line);touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.functional .ava-stage:active{cursor:grabbing}
.functional .ava-stage img{position:absolute;max-width:none;pointer-events:none;-webkit-user-drag:none;user-select:none}
.functional .ava-zoom-row{display:flex;align-items:center;gap:12px;width:min(280px,72vw);font:600 .8125rem/1 var(--ui);color:var(--t2)}
.functional .ava-zoom{flex:1;min-width:0;accent-color:var(--green)}
.functional .ava-edit-help{margin:0;max-width:300px;font:.8125rem/1.45 var(--ui);color:var(--t3);text-align:center}

/* строка поиска в шторке: одна светлая плашка и без нажатия, и с ним (раньше серая рамка с белым полем внутри) */
.functional .dr-search{background:var(--surface)}
.functional .dr-search .dr-search-input{background:transparent!important;border:0!important;box-shadow:none!important}
/* вход по шагам */
.functional .acc-mail{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;margin:0 0 12px;padding:0 14px;border:1px solid var(--line);border-radius:14px;background:var(--bg2)}
.functional .acc-mail span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:600 .9375rem/1.3 var(--ui);color:var(--t1)}
.functional .acc-mail .text-button{flex:none;min-height:44px;font:600 .8125rem/1 var(--ui);color:var(--green-tx)}

/* неделя листается пальцем на месте: новая полоска въезжает сбоку, дела под ней проявляются */
.functional .cal-strip{overflow:hidden}
@keyframes stripInNext{from{transform:translateX(46%);opacity:.2}to{transform:none;opacity:1}}
@keyframes stripInPrev{from{transform:translateX(-46%);opacity:.2}to{transform:none;opacity:1}}
@keyframes stripFade{from{opacity:0}to{opacity:1}}
.functional .cal-strip .grid.week.strip-in-next{animation:stripInNext .22s ease-out}
.functional .cal-strip .grid.week.strip-in-prev{animation:stripInPrev .22s ease-out}
.functional .selected-day.strip-fade{animation:stripFade .22s ease-out}
@media (prefers-reduced-motion:reduce){.functional .cal-strip .grid.week.strip-in-next,.functional .cal-strip .grid.week.strip-in-prev,.functional .selected-day.strip-fade{animation:none}}

/* приветствие входа: занимает окно целиком (без второй рамки), прокручивается на низком экране,
   ссылки на Условия и Политику стоят выше системных кнопок */
.functional .acc-scene.ps-scene{border:0;border-radius:0;min-height:0;max-height:calc(100dvh - 72px);overflow-y:auto;overscroll-behavior:contain}
.functional .ps-scene .acc-scene-btns{padding-bottom:calc(18px + var(--safe-bottom,0px))}
.functional .ps-scene .acc-fine{margin:6px 0 0;line-height:1.6}
.functional .ps-scene .acc-fine button{min-height:32px;padding:4px 2px}
.functional .ps-scene .acc-wait{margin:6px 0 10px;text-align:center;font:500 .8125rem/1.5 var(--ui);color:var(--t2)}

/* картинка приветствия — фон самого блока: высоту держим, иначе Зарок пропадает */
.functional .acc-scene.ps-scene{min-height:min(78dvh,680px)}

/* «Сохраним ваш план» — макет ChatGPT registration-rewards (24.10.2026): заголовок и картинка — одна плашка 4:5,
   текст живой поверх пустого неба, крестик в углу, кнопки ниже на цвете окна. Кнопки могут заходить на низ картинки */
.functional .acc-scene.ps-scene.acc-unified{display:block;min-height:0;margin:0;border:0;border-radius:25px 25px 0 0;overflow-x:hidden;overflow-y:auto;background:var(--surface);color:var(--t1)}
.sheet:has(>.acc-unified)>.handle{position:absolute;left:50%;top:8px;z-index:4;margin:0;transform:translateX(-50%);opacity:.7}
.functional .acc-unified .acc-banner{position:relative;aspect-ratio:4/5;max-height:min(62dvh,560px);width:100%;overflow:hidden;isolation:isolate;background:#f8f6ed center/cover no-repeat}
.functional .acc-unified .acc-banner-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center bottom;z-index:-1}
.functional .acc-unified .acc-banner:after{content:'';position:absolute;inset:auto 0 0;height:44px;background:linear-gradient(transparent,var(--surface));pointer-events:none;z-index:1}
.functional .acc-unified .acc-scene-top{position:relative;z-index:2;background:transparent!important;box-shadow:none!important;padding:32px 23px 0;text-align:center;color:#293c2c;text-shadow:none}
.functional .acc-unified .acc-brand{font:600 10px/1.5 var(--ui);letter-spacing:.2em;color:#293c2c;margin-bottom:12px;text-shadow:none}
.functional .acc-unified h2{font:700 clamp(24px,7vw,27px)/1.2 var(--ui);letter-spacing:-.04em;color:#293c2c;margin:0 0 12px;text-shadow:none}
.functional .acc-unified .acc-scene-top p{font:500 min(12px,3.3vw)/1.6 var(--ui);color:#586953;max-width:none;margin:0 auto;text-wrap:pretty;text-shadow:none}  /* в одну строку на 360 px (владелец, 24.10); длинные переводы переносятся */
.functional .acc-unified .acc-x{position:absolute;right:13px;top:12px;z-index:3;width:30px;height:30px;display:grid;place-items:center;padding:0;border:0;border-radius:8px;background:#ffffff70;color:#60705b;font:400 20px/1 var(--ui);cursor:pointer}
.functional .acc-unified.night .acc-banner{background:#0f1f33}
.functional .acc-unified.night :is(.acc-brand,h2){color:#f4f5eb}
.functional .acc-unified.night .acc-scene-top p{color:#d9e3d4}
.functional .acc-unified.night .acc-x{background:#00000055;color:#e8eee4}
/* ночной вариант ChatGPT registration-rewards (night-only, 24.10.2026): у цельной картинки «Опоры» подложка — цвет её неба,
   над заголовком без старой ночной тени (styles.css .acc-scene.night .acc-scene-top) */
.functional .acc-unified.night:not(.acc-own) .acc-banner{background:#102338}.functional .acc-unified.night:not(.acc-own) .acc-scene-top{background:transparent!important;padding-bottom:0}
.functional .acc-unified .acc-fig{position:absolute;inset:40% 6% 0;z-index:1;min-height:0;margin:0;background-position:center bottom;background-size:contain;background-repeat:no-repeat}
.functional .acc-unified .acc-scene-btns{position:relative;z-index:2;display:block;margin-top:-3px;padding:0 20px calc(20px + var(--safe-bottom,0px));background:var(--surface)!important;border:0;box-shadow:none!important}
.functional .acc-unified .btn{width:100%;min-height:48px;border-radius:11px;font:700 13px/1.4 var(--ui);gap:12px}
.functional .acc-unified .acc-main{background:var(--green);color:var(--on-acc);border:1px solid transparent}
.functional .acc-unified .acc-main .g-logo{width:23px;height:23px;padding:3px;background:#fff;border-radius:50%}
.functional .acc-unified .acc-alt{margin-top:9px;background:var(--bg2);color:var(--t1);border:1px solid var(--line);font-weight:600}
.functional .acc-unified .acc-later{display:block;width:100%;min-height:44px;margin-top:7px;padding:12px 4px;background:none;border:0;text-align:center;font:500 12px/1.4 var(--ui);text-decoration:underline;text-underline-offset:4px;color:var(--t2)!important;opacity:1}
.functional .acc-unified .acc-fine{margin:12px 0 0;text-align:center;font:500 9px/1.7 var(--ui);color:var(--t2);opacity:1}
.functional .acc-unified .acc-fine button{min-height:0;padding:0;font:inherit;color:inherit;text-decoration:underline}
.functional .acc-unified .acc-gift{margin-top:10px}
.functional .acc-unified .acc-wait{margin:0 0 10px}
.functional .acc-unified .warn{margin:0 0 10px}

/* подпись повтора в карточке приёма пищи — в общих отступах карточки */
.functional .hint.meal-rep{margin:-2px 0 8px;padding:0 16px;text-align:left}
/* перерыв в графике курса — значок в стиле приложения вместо эмодзи */
.functional .ph-pause{width:16px;height:16px;vertical-align:-3px;margin-right:6px;color:var(--t3)}
/* пустой вид «По часам»: бледная шкала-пример */
.functional .week-ghost{margin:6px 0 4px;display:grid;gap:8px}
.functional .week-ghost-row{display:grid;grid-template-columns:48px 1fr;align-items:center;gap:10px}
.functional .week-ghost-row time{font:500 .75rem/1 var(--mono,var(--ui));color:var(--t3)}
.functional .week-ghost-row span{display:block;min-height:44px;padding:13px 14px;border:1px dashed var(--line);border-radius:14px;font:500 .8125rem/1.3 var(--ui);color:var(--t3)}
.functional .week-ghost-note{margin:10px 0 14px}
/* «Действия календаря»: своя стрелка вместо системного треугольника, ровные кнопки */
.functional .pc-extra>summary{list-style:none;display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font:500 .8125rem/1.3 var(--ui);color:var(--t2)}
.functional .pc-extra>summary::-webkit-details-marker{display:none}
.functional .pc-extra>summary::before{content:'';width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(-45deg);transition:transform .15s ease;margin:0 4px 0 2px}
.functional .pc-extra[open]>summary::before{transform:rotate(45deg)}
/* крестик сброса метки в шторке — по центру своей кнопки */
.functional .dr-res-h button{flex:none;display:grid;place-items:center;padding:0;line-height:1}

.functional .hint.meal-rep{padding-left:14px}

/* профиль: строка «Интеграции и импорт» отдельной карточкой; «О приложении» — значок и версия сверху */
.functional .sgroup.sgroup-solo .srow-ic{background:var(--green-bg);color:var(--green-tx)}
.functional .ab-hero{display:grid;justify-items:center;gap:6px;padding:8px 0 4px}
.functional .ab-hero img{width:72px;height:72px;border-radius:18px;display:block}
.functional .ab-hero b{font:700 1.125rem/1.3 var(--ui);color:var(--t1)}
.functional .ab-hero span{font:500 .75rem/1.4 var(--ui);color:var(--t2)}

/* карточка без заголовка: первая строка без верхней черты */
.functional .ps-card>.ps-actions:first-child{border-top:0;margin-top:0;padding-top:0}
.functional .ps-card>.ps-actions:first-child>.ps-action:first-child{border-top:0}


/* пометка Plus — плашкой в углу картинки варианта */
.functional .lay-tile{position:relative}
.functional .lay-plus{position:absolute;top:10px;right:10px;z-index:1;padding:4px 8px;border-radius:999px;background:linear-gradient(180deg,#f3dfae,#e0c078);color:#4a3a12;font:700 .625rem/1 var(--ui);letter-spacing:.02em;box-shadow:0 1px 3px rgba(0,0,0,.14)}

/* Экран «Прогресс»: заголовок экрана уже говорит «Прогресс · последние 30 дней» — шапка первой карточки («Прогресс», «30 дней») его повторяла */
.functional #progscroll .prog>.course-h{display:none}
.functional .dt-seg{display:grid;grid-template-columns:1fr 1fr;margin-bottom:8px}.functional .dt-seg.lang-list{grid-template-columns:1fr}.functional .dt-seg button{min-height:44px}

.functional .dt-zone{margin-bottom:8px}

/* кнопки под видами недели: в одну строку во всех видах */
.functional .week-tools{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.functional .week-tools button{min-height:44px;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:500 .8125rem/1.2 var(--ui);text-align:center}
/* колёсико недели: соседние недели рядом с текущей */
.functional .cal-strip .grid.week.strip-side{z-index:1}

/* текст интерфейса не выделяется долгим нажатием: оно занято своими действиями (перенос дел, быстрые действия).
   Выделять можно там, где человек пишет или читает длинное: поля ввода, переписка с помощником, документы, коды. */
.functional, .functional *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.functional :is(input,textarea,[contenteditable]), .functional :is(.bub,.legal,.ai-gate-text,.bigcode,.shared-invite code), .functional :is(.bub,.legal,.ai-gate-text,.bigcode) *{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}

/* табло дня в обычных темах: кольцо со счётом, фраза, ближайшее дело */
.functional .dboard{display:flex;align-items:center;gap:16px;margin:14px 16px 8px;padding:16px 18px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}
.functional .dboard-ring{position:relative;flex:none;width:76px;height:76px}
.functional .dboard-ring svg{width:76px;height:76px;transform:rotate(-90deg)}
.functional .dboard-ring circle{fill:none;stroke-width:8;stroke-linecap:round}
.functional .dboard-ring .bg{stroke:var(--bg2)}
.functional .dboard-ring .fg{stroke:var(--green);transition:stroke-dashoffset .4s ease}
.functional .dboard-ring b{position:absolute;inset:0;display:grid;place-items:center;grid-auto-flow:column;align-content:center;justify-content:center;font:700 1.25rem/1 var(--ui);color:var(--t1)}
.functional .dboard-ring b i{font:500 .8125rem/1 var(--ui);font-style:normal;color:var(--t2);margin-left:1px}
.functional .dboard-copy{min-width:0}
.functional .dboard-eyebrow{font:600 .6875rem/1.2 var(--ui);letter-spacing:.12em;color:var(--t3)}
.functional .dboard h2{margin:3px 0 4px;font:600 1.0625rem/1.3 var(--ui);color:var(--t1)}
.functional .dboard p{margin:0;font:.8125rem/1.4 var(--ui);color:var(--t2);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.functional .dboard.is-done .dboard-ring b{color:var(--green-tx)}
@media (prefers-reduced-motion:reduce){.functional .dboard-ring .fg{transition:none}}

/* шапка дня над табло (макет «Б»): на фоне экрана, без полосы и черты, заголовок спокойнее, кнопки листания меньше */
.functional .hdr.day-hdr.hdr-lite{background:transparent;border-bottom:0;box-shadow:none;padding:16px 16px 10px;min-height:0}
.functional .hdr-lite .hdr-date{font-size:22px;line-height:1.2;letter-spacing:-.02em;font-weight:700}
.functional .hdr-lite .hdr-sub{margin-top:2px;font-size:13px;color:var(--t2)}
.functional .hdr-lite .navbtn{width:40px;height:40px;border-radius:12px;font-size:20px;background:var(--surface)}
.functional .hdr-lite + .scroll .dboard, .functional .dboard{margin-top:4px}
.functional .dboard{margin:4px 14px 14px;padding:16px}
.functional .dboard-eyebrow{font-size:.6875rem}
.functional .dboard-ring b{font-size:1.125rem}

/* подпись курса («Добавка», «Курс»): раньше бралась прямо цветом курса и в тёмных палитрах выглядела выключенной */
@supports (color:color-mix(in srgb,red,blue)){
.functional .tagchip.tag-live{color:color-mix(in srgb,var(--c) 38%,var(--t1))!important;border-color:color-mix(in srgb,var(--c) 45%,var(--t2))!important;background:color-mix(in srgb,var(--c) 22%,transparent)!important}
}
/* «Оформление»: вкладки прижаты к заголовку окна и непрозрачны — содержимое под ними не просвечивает */
.functional .sheet-body:has(>.look-tabs){padding-top:0}

/* боковая панель «Дня» уезжает поверх нового экрана (js/app.js, drawerLeave): нажатий не принимает */
.drawer-ghost{position:fixed;inset:0;z-index:70;pointer-events:none}.drawer-ghost *{pointer-events:none!important}
.drawer-ghost .drawer-wrap,.drawer-ghost .drawer-back{animation:none}

/* «Мой профиль»: плашка действующей подписки — строкой со значком, как карточка достижений (замечание владельца, 10 октября 2026) */

/* классические темы — лентой с прокруткой вбок, как темы Plus (владелец, 10 октября 2026) */

/* метка жеста «потянуть вниз — обновить» */
.ptr-tip{position:fixed;left:50%;top:calc(var(--safe-top,0px) + 6px);z-index:60;transform:translate(-50%,-140%);padding:9px 16px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--t1);font:600 .8125rem/1.2 var(--ui);box-shadow:0 6px 20px rgba(0,0,0,.12);opacity:0;pointer-events:none;transition:opacity .15s ease;white-space:nowrap}
.ptr-tip.on{opacity:1}
.ptr-tip.spin{transition:opacity .15s ease,transform .2s ease}

/* таблица «Бесплатно / Plus»: ячейка с числом вместо галочки */
.functional .ps-cmp .num{font:600 .75rem/1.2 var(--ui);color:var(--t2);white-space:nowrap}.functional .ps-cmp-row>span.num:last-child{color:var(--green-tx,var(--green))}

/* «Дата и время» (сборка 69): структура из макета владельца, оформление — карточки и сегменты настроек. Всё под .dtv. */
.functional .dtv{gap:14px}
.functional .dtv .sx-card-heading{margin-bottom:12px}
.functional .dtv .sx-card-heading h3{font:700 15px/1.35 var(--ui);color:var(--t1);letter-spacing:-.1px}
.functional .dtv .dtv-seg{margin:0}
.functional .dtv .dtv-seg button{flex-direction:column;gap:3px;min-height:64px;padding:9px 6px;border-radius:11px;background:none;border:0;color:var(--t2)}
.functional .dtv .dtv-seg button span{font-size:12px;line-height:1.25;overflow-wrap:anywhere}
.functional .dtv .dtv-seg button b{font:700 18px/1.2 var(--ui);letter-spacing:-.2px;white-space:nowrap;font-variant-numeric:tabular-nums;color:inherit}
.functional .dtv .dtv-seg button[aria-checked=true]{background:var(--surface);color:var(--green-tx);box-shadow:0 2px 7px #233c2410,inset 0 0 0 1px var(--line)}
.functional .dtv .dtv-seg button:focus-visible,.functional .dtv .sx-fold summary:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.functional .dtv-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:12px}
.functional .dtv-week span{text-align:center;padding:7px 0;font-size:11px;line-height:1.2;color:var(--t3);border-radius:9px;background:var(--bg2)}
.functional .dtv-week .first{background:var(--green-bg);color:var(--green-tx);font-weight:700}
.functional .dtv-example{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;font-size:12px;line-height:1.4;color:var(--t3)}
.functional .dtv-example b{color:var(--t1);font:700 14px/1.3 var(--ui);font-variant-numeric:tabular-nums;white-space:nowrap}
.functional .dtv .sx-fold{margin-top:12px;border-radius:14px;background:none}
.functional .dtv .sx-fold p{margin:0}
.functional .dtv-auto{background:var(--green-bg);color:var(--green-tx);border-radius:20px;font-size:10px;line-height:1.2;padding:5px 9px;flex-shrink:0}
.functional .dtv-zone{display:flex;flex-direction:column;gap:5px;min-width:0}
.functional .dtv-zone b{font:700 26px/1.2 var(--ui);letter-spacing:-.6px;color:var(--t1);font-variant-numeric:tabular-nums}
.functional .dtv-zone-name{font-size:13px;line-height:1.45;color:var(--t2);overflow-wrap:anywhere}
.functional .dtv .dtv-caption{font-size:11px;line-height:1.55;color:var(--t3);margin:8px 0 0}
.functional .dtv .dtv-resync{width:100%;margin-top:12px}
html[data-luxe] .functional .dtv .sx-card-heading h3{font-weight:600}
html.text-big .functional .dtv .dtv-seg button{min-height:72px}
html.text-big .functional .dtv .dtv-seg button b{font-size:17px}
html.text-big .functional .dtv-week span{font-size:10px;padding:6px 0}
html.text-big .functional .dtv-zone b{font-size:23px}
@media(max-width:340px){.functional .dtv .dtv-seg button b{font-size:16px}.functional .dtv .dtv-seg button span{font-size:11px}.functional .dtv-week{gap:3px}.functional .dtv-zone b{font-size:23px}}

/* ---------- читаемость кнопок помощника и окон «Да / Нет» (шаг 124; владелец: «плохая читаемость кнопок… в зависимости
   от яркости телефона») ----------
   1. «Применено» было цветом акцента (--green): в «Мемах» это лайм на светлой карточке, в тёмных темах — тусклый зелёный.
      Теперь это текст акцента для чтения (--green-tx), он подобран под фон каждой темы.
   2. Кнопки второго плана («Не нужно», «Нет», «Оставить как есть») отделялись от фона линией в 1,2–1,6:1 и на низкой
      яркости сливались с ним. Контур — цветом приглушённого текста: не ниже 3:1 к фону во всех темах.
   3. Отключённая «Применить» была той же яркой кнопкой с прозрачностью 0,45 — текст не читался. Теперь это спокойная
      плашка: читается, но активной не выглядит.
   4. Красная кнопка окна на тёмных темах почти не отличалась от фона — у неё светлый край. */
.functional .pb-done{color:var(--green-tx)}
.functional .pb-done.muted{color:var(--t2)}
.functional .qr-btn:not(.main){border-color:var(--t3)}
html .app.functional .qr-btn.main:disabled,html[data-theme] .app.functional .qr-btn.main:disabled,.functional .qr-btn:disabled{opacity:1;background:var(--surface-2,var(--surface));background-image:none;border-color:var(--t3);border-style:dashed;color:var(--t2);box-shadow:none;text-shadow:none}
.dlg-btns button:not(.main):not(.danger){border-color:var(--t2)}
.dlg-btns .danger{border-color:color-mix(in srgb,var(--t1) 42%,#a4422f)}
html[data-theme="dark"] .app.functional .dlg-btns .danger{border-color:color-mix(in srgb,var(--t1) 42%,#b3503b)}
html[data-theme="meme"] .dlg-btns .main{border-color:#1d2020}
/* шаг 142б (contrast-ui, компоненты по переменным темы): граница основной кнопки окна — цветом зелёного текста темы */
.dlg-btns .main{border-color:var(--green-tx)}
/* «Удалить» на тёмных фонах: текст цветом опасности темы (на светлых фонах оставлен прежний) */
html[data-theme="dark"] .app.functional .dlg-btns .danger,html[data-theme="bwdark"] .app.functional .dlg-btns .danger,
html[data-theme="obsidian"] .app.functional .dlg-btns .danger,html[data-theme="cobalt"] .app.functional .dlg-btns .danger,
html[data-theme="copper"] .app.functional .dlg-btns .danger,html[data-theme="garnet"] .app.functional .dlg-btns .danger,
html[data-theme="carnelian"] .app.functional .dlg-btns .danger,html[data-theme="citrine"] .app.functional .dlg-btns .danger,
html[data-theme="jade"] .app.functional .dlg-btns .danger,html[data-theme="aquamarine"] .app.functional .dlg-btns .danger,
html[data-theme="indigo"] .app.functional .dlg-btns .danger,html[data-theme="amethyst"] .app.functional .dlg-btns .danger,
html[data-theme="yang"] .app.functional .dlg-btns .danger,html[data-theme="anime-dark"] .app.functional .dlg-btns .danger,
html[data-theme="meme-dark"] .app.functional .dlg-btns .danger{color:var(--danger);border-color:var(--danger)}
/* у «Удалить» в тёмной и тёмной ч/б теме заливка красная (#b3503b / #a4422f): текст светлым тоном того же цвета */
html[data-theme="dark"] .app.functional .dlg-btns .danger,html[data-theme="bwdark"] .app.functional .dlg-btns .danger{color:#fdf1ee;border-color:#fdf1ee}
/* кнопки действия в чате («Не нужно», «Применить»): граница вторичной кнопки — цветом зелёного текста темы */
.functional .qr-btn:not(.main){border-color:var(--green-tx)}
html[data-theme="porcelain"] .app.functional .qr-btn:not(.main),html[data-theme="yin"] .app.functional .qr-btn:not(.main){border-color:#1f2a1c}
html[data-theme="porcelain"] .app.functional .qr-btn.main,html[data-theme="yin"] .app.functional .qr-btn.main{background:#3a4530;border-color:#1f2a1c}
html[data-theme="dark"] .app.functional .qr-btn.main{border-color:var(--green-tx)}

/* ---------- Список дел дня (шаг 133) ---------- */
/* боковая панель: строки блока «План дня» переносят подписи, а не обрезают их; переключатель стоит справа */
.dr-row.switchrow .switch{margin-left:auto;flex:none}
.dr-row.dr-wrap .dr-body{flex:1 1 auto}
.dr-row.dr-wrap .dr-body b{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}

/* ---------- Список дел дня: поделиться (шаг 133) ---------- */
.share-preview{white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 6px;max-height:42vh;overflow:auto;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--bg2);font:500 13.5px/1.5 var(--ui);color:var(--t1);-webkit-user-select:text;user-select:text}
.share-opts{margin-top:6px}
.share-opts .setrow{text-align:left}
.share-limit{margin-top:8px}

/* ---------- Список дел дня: порядок и группы (шаг 133) ---------- */
.dr-row.dr-static{min-height:40px;padding-bottom:2px}
.dr-order{display:flex;flex-wrap:wrap;gap:6px;padding:2px 8px 10px 48px;animation:dr-order-in .16s ease-out}
@keyframes dr-order-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.dr-order{animation:none}}
/* стрелка раскрытия у строки «Порядок дел» */
.dr-row .dr-chev{flex:none;width:8px;height:8px;margin:0 10px 4px 6px;border-right:1.6px solid var(--t3);border-bottom:1.6px solid var(--t3);transform:rotate(45deg);transition:transform .16s ease}
.dr-row.dr-fold[aria-expanded="true"] .dr-chev{transform:rotate(-135deg);margin-bottom:-4px}
.dr-order button{min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:99px;font:600 12.5px/1.15 var(--ui);color:var(--t2);background:transparent;white-space:nowrap}
.dr-order button[aria-checked="true"]{background:var(--green-bg);border-color:var(--acc-ring,var(--green));color:var(--green-tx,var(--green))}
.tl-group{grid-column:1 / -1;display:flex;align-items:center;gap:8px;min-width:0;padding:10px 2px 0}
.tl-group:first-child{padding-top:2px}
.tl-group b{font:700 11.5px var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--t3);overflow-wrap:anywhere}
.tl-group span{flex:none;padding:2px 8px;border-radius:99px;background:var(--bg2);font:600 11px var(--mono);color:var(--t3)}
.tl-group i{flex:1;height:1px;background:var(--line)}
html.day-flow-concept .functional .flow-journal .tl-group{padding:14px 0 0}
html.day-flow-concept .functional .flow-journal .tl-group:first-child{padding-top:14px}

/* ---------- Список дел дня: выбор нескольких дел (шаг 133) ---------- */
/* долгое нажатие не выделяет текст и не зовёт меню системы */
.tl-swipe{-webkit-touch-callout:none}
.tl-swipe-face{-webkit-user-select:none;user-select:none}
html.sel-mode .day-edge{display:none}
/* ручка панели есть и на других экранах (js/app.js DRAWER_HOST): при открытой клавиатуре и на экранах-формах её нет */
html:is(.kb-open,.form-screen) .drawer-wrap:not(.open) .day-edge{display:none}
html.sel-mode .tl-swipe-actions{display:none}
html.sel-mode .tl-swipe-face{pointer-events:none}
html.sel-mode .tl-swipe-face :is(.icon-btn,.chk,.playbtn){visibility:hidden}
html.sel-mode :is(.done-sec,.day-actions,details.flow-add,.prep-inline){opacity:.5;pointer-events:none}
.tl-swipe.sel-row{cursor:pointer}
.tl-swipe.sel-row:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.sel-mark{position:absolute;right:12px;top:50%;transform:translateY(-50%);z-index:4;width:28px;height:28px;box-sizing:border-box;border-radius:50%;border:2px solid var(--line-btn,var(--t3));background:var(--surface);display:grid;place-items:center;color:var(--on-acc,#fff);pointer-events:none}
.sel-mark svg{width:16px;height:16px;opacity:0}
.sel-on .sel-mark{background:var(--green);border-color:var(--green)}
.sel-on .sel-mark svg{opacity:1}
.sel-on .tl-swipe-face>*{box-shadow:inset 0 0 0 2px var(--green)}
html.day-flow-concept .sel-on .tl-swipe-face>*{box-shadow:none}
html.day-flow-concept .tl-swipe.sel-on{background:color-mix(in srgb,var(--green) 10%,transparent);box-shadow:inset 0 0 0 2px var(--green)}
/* шаг 133в: в «Едином дне» и «Плане отдельно» у строки нет своих полей, значок дела стоит у самого края, и рамка выбора шла прямо по нему.
   В режиме выбора строка раздвигается в обе стороны на свои же поля: содержимое остаётся на месте, рамка обходит значок.
   Кружок выбора стоит там же, где стояла галочка. У строки с метками (luxe.css: метки своей строкой на всю ширину) он держится
   первой строки — название и кнопки, 18px поля + половина кнопки в 44px, — и до меток не достаёт: сужать их в режиме выбора не нужно. */
html.day-flow-concept .functional .flow-journal .tl-swipe.sel-row{margin-left:-12px;margin-right:-4px;padding-left:12px;padding-right:4px}
html.day-flow-concept .functional .flow-journal .sel-row>.sel-mark{right:12px}
/* шаг 133г: рамка одна и ровная — от значка слева и от кружка справа по 12px; линия-разделитель строки под рамкой не видна */
html.day-flow-concept .functional .flow-journal .tl-swipe.sel-on .tl-swipe-face>*{border-bottom-color:transparent!important}
html.day-flow-concept .functional .flow-journal .sel-row:has(.pm-card .card-tags)>.sel-mark{top:40px}
@media(max-width:350px){html.day-flow-concept .functional .flow-journal .tl-swipe.sel-row{margin-left:-10px;margin-right:-2px;padding-left:10px;padding-right:2px}html.day-flow-concept .functional .flow-journal .sel-row>.sel-mark{right:10px}}
/* конец шага 133в */
/* панель действий вместо вкладок */
.selbar{flex:none;background:var(--surface);border-top:1px solid var(--line);padding:10px 14px calc(12px + var(--safe-bottom,0px));box-shadow:0 -14px 30px -24px rgba(0,0,0,.45)}
.selbar-top{display:flex;align-items:center;gap:10px;margin:0 2px 10px;min-width:0;font:600 15px/1.2 var(--ui);color:var(--t1)}
.selbar-x{flex:none;width:44px;height:44px;border-radius:12px;border:1px solid var(--line-btn,var(--line));display:grid;place-items:center;color:var(--t2);font:500 20px/1 var(--ui)}
.selbar-n{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.selbar-all{flex:none;max-width:48%;min-height:44px;padding:0 6px;font:600 13px/1.15 var(--ui);color:var(--green-tx,var(--green));text-align:right}
.selbar-btns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.selbar-btns .btn{min-width:0;min-height:56px;padding:6px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-size:12.5px;line-height:1.1;text-align:center}
.selbar-btns .btn span{min-width:0;overflow-wrap:anywhere}
.selbar-btns .btn svg{width:20px;height:20px;flex:none}
.selbar-btns .btn:disabled{opacity:.45}
.selbar-btns .selbar-del{color:#b3261e}
html[data-theme="dark"] .selbar-btns .selbar-del,html[data-theme$="-dark"] .selbar-btns .selbar-del,html[data-theme="obsidian"] .selbar-btns .selbar-del{color:#ff9b8f}
@media(min-width:700px){.selbar{padding-left:max(14px,calc((100% - 560px) / 2));padding-right:max(14px,calc((100% - 560px) / 2))}}

.linkbtn.tg-story{width:auto;margin:10px 0 0;padding:8px 12px;border:1px solid var(--line);border-radius:12px;color:var(--green);background:transparent}

/* ---------- одна кнопка «назад» во всех разделах из боковой панели дня (сборка 77; замечание владельца 16 октября 2026) ----------
   Раньше: круглая кнопка справа (Сценарии, Календари, Внимание…) и ссылка «‹ День» слева над заголовком («Дела вместе»). Теперь везде одна:
   кружок справа от заголовка, 36 px на глаз и 44 px для пальца (кружок рисуется ::before внутри области нажатия), шапка ниже прежней.
   Подпись для чтения с экрана — aria-label кнопки; текст «‹» скрыт, стрелку рисует ::after, поэтому кнопка не зависит от шрифта. */
html:root .functional .plain-hdr:has(>.sec-back){display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-height:0;padding-top:14px;padding-bottom:12px}
/* «‹» всегда последняя в шапке, поэтому «соседи перед ней» — то же, что «соседи в шапке с ней». Прежняя запись :has(>.sec-back)>…
   заставляла браузер при любой вставке узла в приложение пересчитывать стили всего экрана (замер сборки 96: 4,6 мс на вставку) */
html:root .functional .plain-hdr>:not(.sec-back):has(~.sec-back){flex:1;min-width:0}
html:root .functional .plain-hdr>.sec-back{position:relative;isolation:isolate;display:block;flex:none;width:44px;height:44px;min-width:44px;min-height:44px;margin:-4px -6px -4px 0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--t2);font-size:0;line-height:0;text-align:center}
html:root .functional .plain-hdr>.sec-back::before{content:"";position:absolute;z-index:-1;left:4px;top:4px;width:36px;height:36px;box-sizing:border-box;border:1px solid var(--line);border-radius:50%;background:var(--lx-surface,var(--surface))}
html:root .functional .plain-hdr>.sec-back::after{content:"";position:absolute;left:17px;top:17px;width:9px;height:9px;box-sizing:border-box;border-left:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateX(2px) rotate(45deg);border-radius:1px}
html:root .functional .plain-hdr>.sec-back>*{display:none}
html:root .functional .plain-hdr>.sec-back:active::before{background:var(--bg2,var(--surface))}
html:root .functional .plain-hdr>.sec-back:focus-visible{outline:2px solid var(--green);outline-offset:-2px;border-radius:50%}
/* Разрешение на уведомления отозвано, а у дел есть галочки «Напоминать»: тихая строка над планом дня (js/notify.js dayStrip) */
.notify-strip{display:flex;align-items:center;gap:10px;margin:0 16px 12px;padding:9px 10px 9px 12px;border-radius:14px;background:var(--yellow-bg);border:1px solid var(--yellow-bd);font:500 12.5px/1.4 var(--ui);color:var(--t2)}
.flow-scroll .notify-strip,.meme-scroll .notify-strip,.anime-scroll .notify-strip{margin-top:8px}
.notify-strip-ic{display:inline-flex;flex:none;color:var(--yellow)}
.notify-strip-ic svg{width:18px;height:18px}
.notify-strip-t{flex:1;min-width:0}
.notify-strip-go{flex:none;font:600 12px/1.2 var(--ui);padding:7px 10px;border-radius:10px;border:1px solid var(--line-btn,var(--line));background:var(--surface);color:var(--t1);cursor:pointer}
.notify-strip-x{flex:none;width:28px;height:28px;border:0;background:none;color:var(--t3);font-size:18px;line-height:1;cursor:pointer;border-radius:8px}
/* мягкий экран разрешения: та же карточка, что у встречи Зарока */
.zr-offer .zr-reunion p{margin-bottom:4px}
/* Нажимаемая область не меньше 40×40 на телефоне (проверка сайта и приложения, 18 октября 2026). Вид кнопок прежний:
   где сама кнопка мельче, область нажатия расширяет прозрачный ::after. */
.functional .viewseg button{min-height:40px}
.functional .cal-strip .cal-side::after{content:'';position:absolute;inset:0 -2px 0 -8px}
.functional .cal-strip .cal-side.next::after{inset:0 -8px 0 -2px}
.functional .cal-strip .grid.week .cell{position:relative;overflow:visible}
.functional .cal-strip .grid.week .cell::after{content:'';position:absolute;inset:0 -1px}
.functional .cal-week-seg .week-views button,.functional .selected-day.cal-week>.week-views button{position:relative}
.functional .cal-week-seg .week-views button::after,.functional .selected-day.cal-week>.week-views button::after{content:'';position:absolute;inset:-6px 0}
.functional .course.prog>.linkbtn{padding-bottom:11px;margin-bottom:-11px}

/* сборка 86: долгое нажатие нигде не выделяет текст интерфейса (владелец: на «С возвращением» вышло «Копировать / Перевести»).
   Раньше запрет действовал только внутри .functional, а знакомство, «С возвращением», окна поверх и встреча Зарока идут без
   этого класса. Выделять можно поля ввода и места для чтения и копирования — тот же список, что выше. */
body, body *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
body :is(input,textarea,[contenteditable]:not([contenteditable="false"])), body :is(.bub,.legal,.ai-gate-text,.bigcode,.shared-invite code,.share-preview,.neural-command code,.neural-endpoint code), body :is(.bub,.legal,.ai-gate-text,.bigcode) *{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.ps-snaps-clear{margin-top:12px;min-height:52px}

/* Profile navigation only. Existing settings controls keep their handlers. */
.functional .profile-manage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}
.functional .profile-manage-grid>button{display:flex;flex-direction:column;align-items:flex-start;gap:7px;padding:16px;min-width:0;border:1px solid var(--line);border-radius:18px;background:var(--surface);text-align:left;color:var(--t1)}
.profile-manage-grid svg{width:23px;height:23px;color:var(--green-tx)}.profile-manage-grid b{font:650 14px/1.4 var(--ui);overflow-wrap:anywhere}.profile-manage-grid span{font:400 11px/1.5 var(--ui);color:var(--t2);overflow-wrap:anywhere}
.functional .profile-progress-link{display:flex;align-items:center;gap:13px;padding:15px 18px;border:1px solid var(--line);border-radius:18px;background:var(--surface);width:100%;text-align:left;color:var(--t1);margin:14px 0}
.profile-progress-link>span{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:var(--green-bg);color:var(--green-tx)}.profile-progress-link svg{width:23px;height:23px}.profile-progress-link>div{flex:1;min-width:0}.profile-progress-link b{display:block;font:650 14px/1.4 var(--ui)}.profile-progress-link small{display:block;font:400 11px/1.5 var(--ui);color:var(--t2);margin-top:3px}.profile-progress-link>i{font:normal 23px/1 var(--ui);color:var(--t3)}
.functional .profile-preferences .sgroup{margin-bottom:16px}.functional .profile-account-services .sgroup{margin-bottom:16px}
@media(max-width:374px){.functional .profile-manage-grid>button{padding:12px}.profile-manage-grid b{font-size:13px}}

/* Профиль и его страницы — значения макета GPT profile-layout-v1.html (шапка .demo-heading и правила .content) один в один.
   .pf — прокрутка профиля и тело страницы настроек; страница настроек (setpage) — во весь экран над панелью вкладок (js/app.js, pagePlace) */
.functional .pf-head{height:60px;display:flex;align-items:center;gap:10px;padding:13px 16px;flex:none;border-bottom:1px solid var(--line);background:var(--bg)}
.functional .pf-head h2{margin:0;font:700 19px/1.3 var(--ui);color:var(--t1);letter-spacing:normal;text-transform:none}
.functional .pf-back{flex:none;font:500 12px/1.4 var(--ui);color:var(--green-tx);min-height:32px;padding:4px 8px;border:1px solid var(--line);border-radius:10px}
/* страница во весь экран — без рамки: у шторок в темах-материалах, «Мемах» и «Аниме» есть обводка .sheet (luxe.css, meme-theme.css, anime-theme.css), на странице она светилась линией по периметру экрана (владелец, 20.10) */
#overlay .pf-page{position:absolute;right:auto;bottom:auto;max-height:none;display:flex;flex-direction:column;border:0;border-radius:0;box-shadow:none;transform:none;transition:none;background:var(--bg)}
#overlay .pf-page:focus{outline:none}#overlay .pf-under{pointer-events:none}
/* сборка 95: верхняя страница доходит до низа экрана (js/app.js pagePlace), панель вкладок — над ней; под панелью — фон страницы
   (запас --pf-float), а не прошлый экран. Glass и доски ремёсел листают список под панель своими правилами */
.app:has(> #overlay > .sheet.pf-page:last-child) > #root > .tabbar{position:relative;z-index:31}
#overlay .pf-page:not(.pf-under){padding-bottom:var(--pf-float,0px)}
#overlay .pf-page>.sheet-body,#overlay .pf-under-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:16px}
.functional .scroll.pf{padding:0}
.pf>.list{padding:16px;display:block}
.pf .sgroup{margin-bottom:14px}.pf .srow{min-height:66px}.pf .srow-ic{width:34px;height:34px;border-radius:11px}.pf .srow-body b{font-size:13px}.pf .srow-body em{font-size:11px;line-height:1.4}
.pf .sgroup-h{font-size:10px;padding:13px 16px 5px}
.pf .prof-me{padding:14px;margin-bottom:16px}.pf .prof-ava{width:43px;height:43px}.pf .prof-me-body b{font-size:16px}.pf .prof-me-body small{font-size:11px}.pf .prof-me-tags i{font-size:9px}
.pf .ps-card{padding:17px;border-radius:18px}.pf .ps-card h2{font-size:18px}.pf .ps-action{min-height:62px}.pf .ps-action b{font-size:13px}.pf .ps-action small{font-size:11px}.pf .ps-copytext{font-size:12px}
.pf .ps-primary{font-size:12px;min-height:42px}.pf .ps-account-email{font-size:13px}.pf .ps-cmp-row{font-size:11px}.pf .ps-symbol{width:34px;height:34px}.pf .ps-eyebrow{font-size:9px}
/* «Прогресс» страницей: статистика и достижения с тем же шагом, что во вкладке */
.pf .pf-stack{display:flex;flex-direction:column;gap:12px}

/* Profile / My profile / Connections, 20 October 2026. Scoped to new components. */
.pr-person{text-align:center;padding:14px 8px 24px}.pr-avatar{position:relative;display:block;width:116px;height:116px;margin:0 auto 18px;cursor:pointer;border-radius:50%}.pr-avatar .prof-ava.big{width:116px;height:116px;margin:0;font-size:42px;border:1px solid var(--line);box-shadow:0 8px 24px #243c2b0c}.pr-avatar input{position:absolute;width:1px;height:1px;opacity:0;left:50%;bottom:10px}.pr-avatar:focus-within{outline:2px solid var(--green-tx);outline-offset:5px}.pr-avatar-edit{position:absolute;right:0;bottom:0;width:32px;height:32px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);border-radius:50%;color:var(--green-tx);box-shadow:0 3px 8px #0001}.pr-avatar-edit svg{width:18px;height:18px}.pr-avatar-edit i{position:absolute;right:3px;bottom:1px;font-size:13px;font-style:normal}.pr-name{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0}.pr-name h2{margin:0;font:700 24px/1.3 var(--ui);color:var(--t1);overflow-wrap:anywhere}.pr-pencil{display:grid;place-items:center;flex:none;width:44px;height:44px;border-radius:50%;color:var(--green-tx);border:1px solid var(--line);background:var(--surface)}.pr-pencil svg{width:18px;height:18px}.pr-email{font:500 13px/1.5 var(--ui);color:var(--t2);margin:4px 0 0;overflow-wrap:anywhere}.pr-photo-note{font:400 11px/1.5 var(--ui);color:var(--t2);margin:14px 0 0}.pr-quiet{font:500 12px/1.4 var(--ui);color:var(--green-tx);min-height:44px;text-decoration:underline;text-underline-offset:3px}.pr-name-form{max-width:320px;margin:auto;text-align:left}.pr-name-form label{display:block;font:500 12px/1.5 var(--ui);color:var(--t2);margin-bottom:6px}.pr-name-form input{box-sizing:border-box;width:100%;min-height:48px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--t1);padding:10px 12px;font:600 18px/1.4 var(--ui)}.pr-edit-buttons{display:flex;gap:8px;margin-top:12px}.pr-edit-buttons .btn{flex:1;min-width:0;min-height:44px}.pr-account,.pr-signin{margin-bottom:16px}.pr-account h3,.pr-signin h3,.pr-connections h3{font:700 16px/1.4 var(--ui);color:var(--t1);margin:0 0 8px}.pr-delete{border-top:1px solid var(--line);margin-top:10px;padding-top:4px}.pr-delete summary,.pr-sync-info summary{padding:14px 0;min-height:44px;cursor:pointer;font:500 12px/1.5 var(--ui);color:var(--t2)}.pr-delete .btn{width:100%;margin-top:8px}.pr-review{margin:24px 0 8px!important;width:100%}.pr-connections{display:grid;gap:16px}.pr-connections .ps-card{margin:0}.pr-connections .srow{padding-left:0;padding-right:0}.pr-service{border-top:1px solid var(--line)}.pr-service>summary{display:flex;align-items:center;gap:10px;min-height:66px;cursor:pointer;list-style:none}.pr-service>summary::-webkit-details-marker{display:none}.pr-service>summary b{flex:1;font:600 14px/1.4 var(--ui);color:var(--t1)}.pr-service>summary span{font:500 11px/1.4 var(--ui);color:var(--green-tx)}.pr-service>summary i{font-style:normal;color:var(--t2)}.pr-service[open]>summary i{transform:rotate(180deg)}.pr-service .zconn-svc{border-top:0;padding-top:0}.pr-service .zconn-btns{display:flex;flex-wrap:wrap;gap:8px}.pr-service .btn{min-height:44px}.pr-sync-info{border-top:1px solid var(--line)}.pr-avatar-editor{max-width:300px;margin:0 auto 20px}.pr-avatar-editor .ava-stage{position:relative;width:min(250px,100%);aspect-ratio:1;margin:auto;border-radius:50%;overflow:hidden;touch-action:none;background:var(--surface);border:2px solid var(--line)}.pr-avatar-editor .ava-stage img{position:absolute;max-width:none;user-select:none;pointer-events:none}.pr-avatar-editor .ava-zoom-row{display:flex;align-items:center;gap:12px;margin-top:16px;color:var(--t2);font:500 12px/1.4 var(--ui)}.pr-avatar-editor .ava-zoom{min-width:0;flex:1;accent-color:var(--green-tx)}
.pr-privacy{padding-top:4px;padding-bottom:4px}.pr-privacy>:last-child{border-bottom:0}.pr-service>summary{gap:14px;min-height:88px}.pr-service>summary>.pr-service-logo{display:grid;place-items:center;width:46px;height:46px;flex:none;border-radius:14px;border:1px solid var(--line);background:#fff;color:#42584b}.pr-service-logo svg{width:30px;height:30px}.pr-service>summary>.pr-service-body{flex:1;min-width:0}.pr-service-body b{display:block;overflow-wrap:anywhere}.pr-service-body small{display:block;margin-top:4px;font:400 12px/1.5 var(--ui);color:var(--t2)}.pr-service>summary>i{font-size:24px;line-height:1;transition:transform .18s ease}.pr-service[open]>summary>i{transform:rotate(90deg)}.pr-service .zconn-svc{padding:0 0 18px 60px}.pr-service>summary b{font-size:14px}@media(max-width:360px){.pr-service>summary{gap:10px}.pr-service>summary>.pr-service-logo{width:42px;height:42px}.pr-service .zconn-svc{padding-left:0}}@media(prefers-reduced-motion:reduce){.pr-service>summary>i{transition:none}}
.pr-privacy .ps-action{border-top:0;min-height:56px;padding:12px 0}
/* «Поставщики ИИ» — свёрнутая строка под кнопкой согласия и под «Согласием на ИИ» в профиле (25.10.2026) */
.ai-providers{font:400 12px/1.5 var(--ui);color:var(--t2);text-align:left}.ai-providers>summary{cursor:pointer;color:var(--t3);font-weight:500;list-style-position:inside}.ai-providers>p{margin:6px 0 0}.ai-providers .inlink{color:inherit;text-decoration:underline}
.pr-privacy .pr-privacy-note{margin:0;padding:12px 0}.ai-gate .ai-providers.consent-note{text-align:center}.ai-gate .ai-providers>p{text-align:left}
/* «Зарок Plus и покупки» (владелец 23.10, макет GPT settings-cleanup): возможности видны сразу, одна главная кнопка, восстановление — внизу отдельно */
.pr-plus{display:flex;flex-direction:column;gap:16px}.functional .pr-plus .ps-card{margin:0}
.pr-plus-head{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:4px 12px;min-width:0}.pr-plus-head .ps-symbol{grid-row:span 2}
.functional .pr-plus-head h2{min-width:0;align-self:end;font:700 1.375rem/1.25 var(--ui);letter-spacing:-.03em;color:var(--t1);margin:0;overflow-wrap:anywhere}
.pr-plus-badge{justify-self:start;align-self:start;max-width:100%;padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:var(--bg2);color:var(--t2);font:600 .6875rem/1.3 var(--ui);text-align:center;overflow-wrap:anywhere}
.ps-access-active .pr-plus-badge{background:var(--green-bg);color:var(--green-tx)}.ps-access-error .pr-plus-badge,.ps-access-hold .pr-plus-badge{color:var(--danger)}
.functional .pr-plus .pr-plus-state{margin-top:12px}
.functional .pr-plus .pr-plus-eyebrow{margin:18px 0 2px;text-transform:uppercase;letter-spacing:.08em}
.pr-plus-perks{list-style:none;margin:0;padding:0}.pr-plus-perks li{display:flex;align-items:center;gap:12px;min-height:54px;padding:9px 0}.pr-plus-perks li+li{border-top:1px solid var(--line)}
.pr-plus-perks .ps-symbol{width:36px;height:36px;border-radius:11px;color:var(--green-tx)}.pr-plus-perks .ps-symbol svg{width:20px;height:20px}
.pr-plus-perks b{min-width:0;font:600 .8125rem/1.45 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.pr-plus-free{margin:12px 0 14px;font:500 .6875rem/1.6 var(--ui);color:var(--t2);text-align:center}
.functional .pr-plus-card .ps-primary{width:100%;min-height:46px;margin:0}
.functional .pr-plus .pr-plus-restore{padding-top:2px;padding-bottom:2px}.pr-plus-restore .ps-action{border-top:0}.pr-plus-restore .ps-action[disabled]{opacity:.55;cursor:default}
/* «Сброс данных»: копия в файл первой строкой выбора (js/sheets.js resetSheet) */
.functional .ps-reset .ps-reset-export{min-height:56px;margin:0 0 12px;padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.ps-reset-export .ps-action-icon{color:var(--green-tx)}
.pr-storage-head{display:flex;align-items:center;gap:12px}.pr-storage-head .ps-symbol{flex:none}.pr-storage-head h3{font:700 17px/1.35 var(--ui);color:var(--t1);margin:3px 0 0}.pr-data-hub>.ps-card{margin-bottom:16px}.pr-data-hub .ps-primary{width:100%;min-height:46px}.pr-explain{border-top:1px solid var(--line);margin-top:12px}.pr-explain>summary{min-height:44px;padding:12px 0;cursor:pointer;font:500 12px/1.5 var(--ui);color:var(--green-tx)}.pr-explain p{font:400 12px/1.6 var(--ui);color:var(--t2)}.pr-data-menu .srow{padding-block:14px}.pr-data-danger .srow-body b{color:var(--t2)}.pr-data-part .ps-transfer{min-height:120px}.pr-data-part .ps-transfer small{font-size:11px}.pr-data-part .ps-transfer b{font-size:16px}.pr-data-part .setrow .setbody b{font-size:14px;line-height:1.45}.pr-data-part .setrow .setbody em{font-size:11px;line-height:1.6}.pr-data-part .ps-copy-body{min-width:0}.pr-data-part .ps-copy-actions{flex-wrap:wrap;gap:6px}.pr-data-part .ps-copy-body b{font-size:12px}
.functional .ach.achv .achv-tabs.even{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:6px}.functional .ach.achv .achv-tabs.even .achv-tab{width:100%;min-width:0;height:44px;flex:none}.pr-award-stats{padding:18px 4px 4px}.pr-award-stats>h3{font:700 17px/1.4 var(--ui);margin:0 0 20px;color:var(--t1)}.pr-leaf-summary{display:flex;align-items:center;justify-content:center;gap:24px;margin:6px 0 22px}.pr-leaf-ring{width:132px;height:132px;padding:9px;border-radius:50%;background:conic-gradient(var(--green-tx) var(--leaf-pct),var(--line) 0);flex:none;transform:rotate(0deg)}.pr-leaf-ring>div{width:100%;height:100%;border-radius:50%;background:var(--surface);display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px}.pr-leaf-ring b{font:700 30px/1.2 var(--ui);color:var(--t1)}.pr-leaf-ring span,.pr-leaf-total span,.pr-leaf-total small{font:400 11px/1.5 var(--ui);color:var(--t2)}.pr-leaf-total{display:flex;flex-direction:column;gap:4px}.pr-leaf-total b{font:700 24px/1.3 var(--ui);color:var(--t1)}.pr-budget{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--bg)}.pr-budget>div{display:flex;justify-content:space-between;gap:10px;align-items:center;font:500 11px/1.5 var(--ui);color:var(--t1)}.pr-budget progress{display:block;width:100%;height:6px;margin-top:12px;border:0;appearance:none;border-radius:8px;overflow:hidden;background:var(--line)}.pr-budget progress::-webkit-progress-bar{background:var(--line)}.pr-budget progress::-webkit-progress-value{background:var(--green-tx);border-radius:8px}.pr-budget progress::-moz-progress-bar{background:var(--green-tx);border-radius:8px}.pr-task-progress{border-top:1px solid var(--line);margin-top:8px}.pr-task-progress>summary,.pr-profile-more>summary{padding:14px 0;cursor:pointer;font:600 12px/1.5 var(--ui);color:var(--green-tx)}.pr-profile-stats .prog{margin:0;padding:16px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}.pr-profile-stats .course-h{display:flex;justify-content:space-between;align-items:center;gap:12px}.pr-profile-stats .course-h h3{font-size:16px;margin:0}.pr-profile-stats .sub-mono{font-size:10px}.pr-profile-stats .course-chart{display:flex;align-items:center;gap:14px}.pr-profile-stats .chart-donut{flex:none;position:relative;width:112px;height:112px}.pr-profile-stats .chart-legend{flex:1;min-width:0}.pr-profile-stats .clrow{font-size:10px}.pr-profile-stats .viewseg{display:flex;gap:4px;padding:4px;margin-top:14px;border-radius:12px;background:var(--bg)}.pr-profile-stats .viewseg button{flex:1;min-height:38px;font:500 11px/1.4 var(--ui);border-radius:9px;color:var(--t2)}.pr-profile-stats .viewseg button.on{background:var(--surface);color:var(--green-tx);box-shadow:0 2px 6px #0001}.pr-profile-stats .course-sum{font-size:11px;line-height:1.6}.pr-profile-more{margin-top:12px;border-top:1px solid var(--line)}@media(max-width:360px){.pr-leaf-summary{gap:16px}.pr-leaf-ring{width:112px;height:112px}.pr-profile-stats .course-chart{gap:8px}.pr-profile-stats .prog{padding:12px}}
.pr-profile-overview{overflow:hidden;margin:0 0 16px;border:1px solid var(--line);border-radius:24px;background:var(--surface);box-shadow:0 4px 18px #243c2b04}#content .pr-profile-overview .prof-me,.functional .pr-profile-overview .prof-me{width:100%;margin:0;border:0;border-radius:0;background:transparent;box-shadow:none;padding:18px}.pr-profile-overview>.pr-profile-stats{border-top:1px solid var(--line);margin:0 18px;padding:14px 0 4px}.pr-profile-overview .pr-profile-stats .prog{border:0;padding:0;margin:0;border-radius:0;background:transparent}.pr-profile-overview .course-h{display:none}.pr-profile-overview .pr-profile-stats .viewseg{margin:0;padding:3px;gap:3px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}.pr-profile-overview .pr-profile-stats .viewseg button{min-height:32px;padding:5px 12px;font-size:11px;border-radius:9px}.pr-profile-overview .pr-profile-stats .course-chart{margin:16px 0 12px!important;gap:18px}.pr-profile-overview .chart-legend .clrow{display:flex;align-items:center;gap:6px;min-height:26px;font-size:11px}.pr-profile-overview .chart-legend .clrow b{font-weight:600}.pr-profile-overview .chart-legend .clrow span{margin-left:auto;white-space:nowrap;font-size:11px}.pr-profile-overview .course-sum{margin:12px 0;font-size:11px}.pr-profile-overview .pr-profile-more{margin-top:12px}.pr-profile-overview .pr-profile-more>summary{font-size:11px;padding:12px 0}.pr-profile-overview .prof-me:focus-visible{outline:2px solid var(--green-tx);outline-offset:-4px}.pr-profile-overview .pr-stats{gap:6px}.pr-profile-overview .pr-stat{font-size:10px}@media(max-width:360px){.functional .pr-profile-overview .prof-me{padding:14px}.pr-profile-overview>.pr-profile-stats{margin-inline:14px}.pr-profile-overview .pr-profile-stats .course-chart{gap:10px}.pr-profile-overview .chart-legend .clrow,.pr-profile-overview .chart-legend .clrow span{font-size:10px}}
/* новый ответ поддержки: точка у строки профиля «Настройки приложения» */
.srow-dot{display:inline-block;width:8px;height:8px;margin-left:7px;vertical-align:middle;border-radius:50%;background:var(--green-tx)}.srow-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Root profile scene and four collection tabs. */
.pr-home{padding:0!important;background:var(--bg)}.pr-home-hero{position:relative;padding:10px 18px 20px;background:radial-gradient(ellipse at 50% 45%,#dbe8da88,transparent 65%),linear-gradient(145deg,var(--surface),var(--bg));isolation:isolate}.pr-home-hero:after{content:'';position:absolute;inset:65px -30px 50px;border:1px solid color-mix(in srgb,var(--green-tx) 8%,transparent);border-radius:50%;z-index:-1}.pr-home-top{display:flex;align-items:center;justify-content:space-between;gap:12px;position:relative;z-index:2}.pr-home-identity{display:flex;align-items:center;gap:12px;min-width:0;text-align:left;color:var(--t1);border:0;background:none;padding:0;flex:1;min-height:52px}.pr-home-identity>.prof-ava{width:48px;height:48px;flex:none;border:1px solid var(--line);background:var(--surface);font-size:21px}.pr-home-identity>span:last-child{display:flex;flex-direction:column;min-width:0;gap:4px}.pr-home-identity b{font:700 20px/1.25 var(--ui);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pr-home-identity small{font:400 10px/1.4 var(--ui);color:var(--t2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pr-home-gear{display:grid;place-items:center;width:44px;height:44px;flex:none;border:1px solid color-mix(in srgb,var(--line) 65%,transparent);border-radius:15px;background:color-mix(in srgb,var(--surface) 80%,transparent);color:var(--t1);box-shadow:0 3px 12px #19382005}.pr-home-gear svg{width:23px;height:23px}.pr-home-scene{height:274px;position:relative;margin:-10px -12px -34px;pointer-events:none}.pr-home-scene>img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 14px 17px #264f2410)}.pr-home-counters{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:10px;z-index:1}.pr-home-counters>button{min-height:76px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--line) 75%,white 25%);border-radius:20px;text-align:left;display:flex;flex-direction:column;justify-content:center;gap:6px;color:var(--t1);background:color-mix(in srgb,var(--surface) 86%,transparent);backdrop-filter:blur(20px);box-shadow:0 8px 24px #17351e07}.pr-home-counters small{font:500 10px/1.4 var(--ui);color:var(--t2)}.pr-home-counters b{font:700 25px/1.2 var(--ui);display:flex;align-items:center;gap:6px;color:var(--green-tx)}.pr-home-counters b>span{font:500 14px/1.4 var(--ui);color:var(--t2)}.pr-home-counters svg{width:22px;height:22px}.pr-home-content{padding:0 16px 18px}.pr-home-tabs{position:sticky;top:0;z-index:8;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;border-bottom:1px solid var(--line);padding:8px 0 10px;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(18px)}.pr-home-tabs button{min-width:0;min-height:62px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;border:1px solid transparent;border-radius:16px;font:500 9px/1.4 var(--ui);color:var(--t2);padding:7px 2px;background:transparent}.pr-home-tabs button svg{width:25px;height:25px}.pr-home-tabs button[aria-selected=true]{background:color-mix(in srgb,var(--green-tx) 11%,var(--surface));border-color:color-mix(in srgb,var(--green-tx) 28%,var(--line));color:var(--green-tx)}.pr-home-panel{padding:16px 0 0;min-height:260px}.pr-home-rewards .ach.achv{padding:0!important;margin:0!important;border:0!important;border-radius:0;box-shadow:none;background:transparent}.pr-award-filter{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:20px}.pr-award-filter>span{font:700 16px/1.4 var(--ui);color:var(--t1)}.pr-award-filter select{border:1px solid var(--line);border-radius:11px;min-height:36px;max-width:160px;padding:6px 10px;font:500 11px/1.4 var(--ui);color:var(--green-tx);background:var(--surface)}.pr-gallery-title{margin:0 0 18px;font:700 16px/1.4 var(--ui);color:var(--t1)}.pr-skin-grid,.pr-theme-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px 10px}.pr-skin-tile,.pr-theme-tile{display:flex;flex-direction:column;gap:9px;align-items:center;padding:0;min-width:0;border:0;background:none;color:var(--t1)}.pr-skin-tile b,.pr-theme-tile b{font:500 11px/1.4 var(--ui);text-align:center;overflow-wrap:anywhere}.pr-gallery-head{display:flex;align-items:start;justify-content:space-between;gap:10px;margin-bottom:18px}.pr-gallery-head .pr-gallery-title{margin:0}.pr-gallery-head>button{font:500 10px/1.5 var(--ui);text-align:right;color:var(--green-tx);max-width:120px}.pr-theme-sample{width:100%;aspect-ratio:1;position:relative;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:13px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(140deg,#f4f0e6,#c6d2b9);overflow:hidden}.pr-theme-sample i{height:8px;border-radius:8px;background:#486345aa;width:80%;box-shadow:0 2px 4px #0001}.pr-theme-sample i:nth-child(2){width:55%;opacity:.5}.pr-theme-sample em{position:absolute;right:6px;bottom:5px;font:600 9px/1.4 var(--ui);font-style:normal;color:inherit}.pr-theme-sample[data-lx-material=dark],.pr-theme-sample[data-lx-material=obsidian]{background:linear-gradient(145deg,#303829,#11150c);color:#c5ed97}.pr-theme-sample[data-lx-material=dark] i,.pr-theme-sample[data-lx-material=obsidian] i{background:#b5d487}.pr-theme-sample[data-lx-material=jade]{background:linear-gradient(135deg,#d7eddf,#41715b);color:#173c2b}.pr-theme-sample[data-lx-material=copper]{background:linear-gradient(135deg,#f0d2b7,#9d573d);color:#532f1c}.pr-theme-sample[data-lx-material=anime]{background:linear-gradient(135deg,#fff4db,#bba4d6);color:#63527a}.pr-theme-tile[aria-pressed=true]>.pr-theme-sample{outline:2px solid var(--green-tx);outline-offset:3px}.pr-general-settings .sgroup{margin-bottom:16px}.pr-home .pr-review{margin-top:28px!important}#content:has(>.pr-home)>.pf-head{display:none}.pr-home-scene{--zpt:200px}.pr-home-scene>img.pr-pose{position:absolute;z-index:1;left:50%;bottom:34px;width:auto;max-width:none;height:calc(var(--zpt) / var(--zpv));object-fit:fill;transform:translate(-50%,calc((1 - var(--zpb)) * 100%));filter:drop-shadow(0 10px 12px #264f2414)}
@media(max-width:360px){.pr-home-scene{--zpt:176px}}
@media(max-width:360px){.pr-home-hero{padding-inline:14px}.pr-home-scene{height:242px}.pr-home-content{padding-inline:12px}.pr-home-identity b{font-size:18px}.pr-home-identity small{font-size:9px}.pr-home-tabs button{font-size:9px}.pr-skin-grid,.pr-theme-grid{gap:18px 8px}}
.pr-home{overflow-x:hidden}.pr-theme-sample i{background:var(--pr-theme-accent,#486345aa)}@keyframes prHomeEnter{from{opacity:.55;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.pr-photo-card{position:relative;border:1px solid var(--line);border-radius:24px;margin:0 0 16px;padding:20px 16px 16px;overflow:hidden;background:radial-gradient(ellipse at 20% 15%,rgba(var(--pr-photo-a,91,132,111),.25),transparent 70%),radial-gradient(ellipse at 85% 80%,rgba(var(--pr-photo-b,173,188,157),.2),transparent 65%),var(--surface)}.pr-photo-pick{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:136px;cursor:pointer}.pr-profile-photo{width:88px;height:88px;display:grid;place-items:center;flex:none;border-radius:50%;border:3px solid color-mix(in srgb,var(--surface) 90%,transparent);background:var(--surface);color:var(--green-tx);box-shadow:0 5px 18px #18372110;overflow:hidden}.pr-profile-photo img{width:100%;height:100%;object-fit:cover;display:block}.pr-profile-photo svg{width:32px;height:32px}.pr-photo-pick>b{font:600 13px/1.5 var(--ui);color:var(--green-tx)}.pr-photo-pick input{position:absolute;left:50%;top:50%;width:1px;height:1px;opacity:0}.pr-photo-pick:focus-within{outline:2px solid var(--green-tx);outline-offset:4px;border-radius:18px}.pr-photo-remove{display:block;margin:0 auto;min-height:36px;font:500 11px/1.5 var(--ui);color:var(--t2);padding:6px 12px}.pr-person-fields{overflow:hidden}.pr-person-row{display:flex;align-items:center;gap:12px;width:100%;min-height:76px;padding:15px 16px;border:0;background:transparent;text-align:left;color:var(--t1)}.pr-person-row+.pr-person-row{border-top:1px solid var(--line)}.pr-person-row>span:nth-child(2){display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.pr-person-row small{font:400 11px/1.4 var(--ui);color:var(--t2)}.pr-person-row b{font:600 14px/1.5 var(--ui);overflow-wrap:anywhere}.pr-person-row>i{font-style:normal;font-size:22px;color:var(--t2)}.pr-person-icon{display:grid;place-items:center;width:38px;height:38px;flex:none;border-radius:13px;background:color-mix(in srgb,var(--green-tx) 9%,var(--surface));color:var(--green-tx)}.pr-person-icon svg{width:20px;height:20px}.pr-person-fields .pr-name-form{padding:16px;max-width:none}.pr-person-fields>.srow{border-top:1px solid var(--line)}.pr-account-compact{overflow:hidden}.pr-account-compact .ps-action{padding:15px 16px;min-height:64px;border-top:1px solid var(--line)}.pr-account-compact .sgroup-h+.ps-action{border-top:0}.pr-account-compact .ps-action b{font-size:13px}.pr-account-compact .ps-action small{font-size:11px}.pr-person-danger{color:var(--t2)}.pr-person-danger b{color:var(--t2)}.pr-photo-card .pr-avatar-editor{margin:0 auto}.pr-photo-card .ava-stage{width:190px;max-width:100%}.pr-photo-card .ava-zoom-row{margin-top:12px}.pr-photo-card .pr-edit-buttons .btn{min-height:40px}@media(max-width:360px){.pr-photo-card{padding:16px 14px 12px}.pr-person-row{padding:14px;gap:10px}.pr-person-row b{font-size:13px}.pr-account-compact .ps-action{padding:14px}}
.pr-home-counters{gap:0;border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(18px);box-shadow:0 5px 18px #17351e05;overflow:hidden}.pr-home-counters>button,.pr-home-counters>.pr-metric-balance{min-height:56px;padding:9px 12px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:8px;border:0;border-radius:0;background:transparent;backdrop-filter:none;box-shadow:none;text-align:left}.pr-home-counters>button{border-left:1px solid var(--line)}.pr-home-counters small{font:500 9px/1.45 var(--ui);color:var(--t2);max-width:78px}.pr-home-counters b{font:700 21px/1.2 var(--ui);color:var(--green-tx);display:flex;align-items:center;gap:5px;white-space:nowrap}.pr-home-counters b>span{font:500 12px/1.4 var(--ui);color:var(--t2)}.pr-home-counters svg{width:18px;height:18px}.pr-home-hero{padding-bottom:12px}.pr-home-tabs button svg{width:23px;height:23px;stroke-width:1.6}.pr-plan-switch{display:flex;gap:3px;padding:3px;border:1px solid var(--line);border-radius:12px;background:var(--bg);width:184px;max-width:100%}.pr-plan-switch button{flex:1;min-height:34px;padding:6px 16px;border-radius:9px;border:0;background:transparent;font:600 11px/1.4 var(--ui);color:var(--t2)}.pr-plan-switch button[aria-selected=true]{background:var(--surface);color:var(--green-tx);box-shadow:0 1px 5px #0001}.pr-gallery-head{align-items:center;margin-bottom:20px}.pr-home-panel .wg-storebar{margin-top:0}.pr-home-panel .wg-wallet{display:none}.pr-home-panel .wg-plan-tabs{height:auto;min-height:40px;max-width:220px}.pr-home-panel .wg-plan-tabs button{min-height:34px;font-size:11px}.pr-home-panel .pet-widget-gallery{padding-top:0}.pr-home-panel .pr-widget-demo>.pr-plan-switch{margin-bottom:20px}:is(#root,#content) .pr-person-page :is(.srow,.ps-action,.pr-person-row){display:grid;grid-template-columns:38px minmax(0,1fr) 16px;align-items:center;column-gap:12px;padding:14px 16px;min-height:72px;width:100%;box-sizing:border-box}:is(#root,#content) .pr-person-page :is(.srow-ic,.ps-action-icon,.pr-person-icon){display:grid;place-items:center;width:38px;height:38px;min-width:38px;padding:0;margin:0;border:0;border-radius:12px;background:color-mix(in srgb,var(--green-tx) 9%,var(--surface));color:var(--green-tx);box-shadow:none;grid-column:1}:is(#root,#content) .pr-person-page :is(.srow-ic,.ps-action-icon,.pr-person-icon)>svg{width:20px;height:20px;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;color:inherit;fill:none}:is(#root,#content) .pr-person-page :is(.srow-body,.ps-action>span:nth-child(2),.pr-person-row>span:nth-child(2)){grid-column:2;min-width:0}:is(#root,#content) .pr-person-page :is(.srow,.ps-action,.pr-person-row)>i{grid-column:3;justify-self:end;align-self:center;padding:0;margin:0;font-size:21px;line-height:1;color:var(--t2);font-style:normal}:is(#root,#content) .pr-person-page :is(.srow-body b,.ps-action b,.pr-person-row b){font-size:13px;line-height:1.45}:is(#root,#content) .pr-person-page :is(.srow-body em,.ps-action small,.pr-person-row small){font-size:11px;line-height:1.5}@media(max-width:360px){.pr-home-counters>button,.pr-home-counters>.pr-metric-balance{padding-inline:10px;gap:6px}.pr-home-counters small{font-size:9px;max-width:68px}.pr-home-counters b{font-size:19px;gap:3px}:is(#root,#content) .pr-person-page :is(.srow,.ps-action,.pr-person-row){padding-inline:14px;gap:10px}.pr-plan-switch{width:164px}}
/* Restored soft counter cards; shallow four-tab rail placed directly below. */
.pr-home-counters{gap:8px;padding:5px;border:1px solid color-mix(in srgb,var(--line) 65%,var(--surface));border-radius:24px;background:color-mix(in srgb,var(--surface) 65%,transparent);box-shadow:inset 0 1px 0 #ffffff55,0 8px 20px #17351e07}.pr-home-counters>button,.pr-home-counters>.pr-metric-balance{min-height:64px;padding:10px 13px;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px;border:1px solid color-mix(in srgb,var(--line) 70%,var(--surface));border-radius:19px;background:color-mix(in srgb,var(--surface) 82%,transparent);box-shadow:inset 0 1px 0 #ffffff44}.pr-home-counters>button{align-items:flex-end;text-align:right}.pr-home-counters small{font-size:10px;max-width:none;white-space:nowrap}.pr-home-counters b{font-size:24px;gap:6px}.pr-home-counters b>span{font-size:14px}.pr-home-counters svg{width:21px;height:21px}.pr-home-hero{padding-bottom:4px}.pr-home-tabs{gap:4px;margin:0;padding:4px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--surface) 65%,var(--bg));box-shadow:inset 0 1px 0 #ffffff44}.pr-home-tabs button{min-height:48px;padding:4px 2px;gap:3px;border-radius:13px;font-size:9px;line-height:12px}.pr-home-tabs button svg{width:22px;height:22px}.pr-home-tabs button[aria-selected=true]{background:color-mix(in srgb,var(--green-tx) 10%,var(--surface));border-color:color-mix(in srgb,var(--green-tx) 32%,var(--line));box-shadow:inset 0 1px 0 #ffffff55}.pr-home-panel{padding-top:16px}@media(max-width:360px){.pr-home-counters{gap:6px;padding:4px}.pr-home-counters>button,.pr-home-counters>.pr-metric-balance{min-height:62px;padding:9px 10px;gap:5px}.pr-home-counters small{font-size:9px}.pr-home-counters b{font-size:23px}.pr-home-tabs button{min-height:46px}}
/* Denser counter treatment matching the earlier compact reference. */
.pr-home-counters{margin-inline:6px;padding:4px;gap:7px;border-radius:21px;box-shadow:inset 0 1px 0 #ffffff55,0 5px 14px #17351e06}.pr-home-counters>button,.pr-home-counters>.pr-metric-balance{min-height:48px;padding:5px 10px;gap:2px;border-radius:16px}.pr-home-counters small{font-size:9.5px;line-height:1.4}.pr-home-counters b{font-size:20px;line-height:1.15;gap:5px}.pr-home-counters b>span{font-size:12px;line-height:1.4}.pr-home-counters svg{width:18px;height:18px}@media(max-width:360px){.pr-home-counters{margin-inline:4px;gap:6px}.pr-home-counters>button,.pr-home-counters>.pr-metric-balance{min-height:48px;padding:5px 9px;gap:2px}.pr-home-counters small{font-size:9px}.pr-home-counters b{font-size:20px}}

/* Approved variant A: glass caption below, selection badge at top right. */
.pr-skin-grid{gap:10px}.pr-skin-tile>span{position:relative;display:block;width:100%;aspect-ratio:4/5;overflow:hidden;box-sizing:border-box;border:1px solid var(--line);border-radius:18px;background:var(--surface)}.pr-skin-tile img{position:absolute;inset:4px 0 auto;width:100%;height:calc(100% - 30px);object-fit:contain}.pr-skin-tile[aria-checked=true]>span{border-color:var(--green-tx);box-shadow:inset 0 0 0 1px var(--green-tx);background:color-mix(in srgb,var(--green-tx) 5%,var(--surface))}.pr-skin-tile>span>b{position:absolute;bottom:7px;left:6px;right:6px;display:flex;align-items:center;justify-content:center;min-height:25px;padding:3px 5px;box-sizing:border-box;border:1px solid color-mix(in srgb,var(--line) 70%,transparent);border-radius:10px;background:color-mix(in srgb,var(--surface) 80%,transparent);backdrop-filter:blur(12px);font:600 11px/1.3 var(--ui);color:var(--t1);text-align:center;overflow-wrap:anywhere}.pr-skin-tile i{position:absolute;top:7px;right:7px;bottom:auto;display:grid;place-items:center;width:21px;height:21px;margin:0;border:2px solid var(--surface);border-radius:50%;background:var(--green-tx);color:var(--surface);box-sizing:content-box;box-shadow:0 2px 5px #0001}.pr-skin-tile i svg{width:15px;height:15px}.pr-skin-tile:focus-visible{outline:2px solid var(--green-tx);outline-offset:3px;border-radius:18px}

/* Stable profile updates and denser collection controls. */
.pf,.sheet-body:has(.ps-card),.demo-sheet{scroll-behavior:auto!important;overflow-anchor:none}.pr-scroll-space{display:block;flex:none;width:1px;min-height:0;pointer-events:none}.pr-home-panel{padding-top:10px}.pr-home .pr-gallery-head{margin-bottom:10px;gap:8px}.pr-home .pr-plan-switch{width:142px;padding:2px;gap:2px;border-radius:10px;box-sizing:border-box}.pr-home .pr-plan-switch button{min-height:28px;padding:4px 10px;border-radius:7px;font-size:10px;line-height:16px}.pr-home .pr-widget-demo>.pr-plan-switch{margin-bottom:10px}.pr-home .wg-storebar{margin:0 0 10px;gap:8px}.pr-home .wg-plan-tabs{flex:none;width:142px;max-width:142px;min-height:0;height:auto;padding:2px;box-sizing:border-box}.pr-home .wg-plan-tabs button{min-height:28px;padding:4px 10px;font-size:10px;line-height:16px;border-radius:7px}.pr-home .wg-plan-tabs:before{inset:2px auto 2px 2px;width:calc((100% - 4px)/2);border-radius:7px}.pr-home .pr-theme-grid{gap:10px}.pr-theme-sample{padding-bottom:39px}.pr-theme-sample>b{position:absolute;left:5px;right:5px;bottom:6px;display:grid;place-items:center;min-height:26px;padding:3px 4px;box-sizing:border-box;background:color-mix(in srgb,var(--surface) 82%,transparent);backdrop-filter:blur(12px);border:1px solid color-mix(in srgb,var(--line) 70%,transparent);border-radius:9px;font:600 10px/1.3 var(--ui);color:var(--t1)}.pr-theme-sample em{top:5px;right:6px;bottom:auto}.pr-home .wv-store .wg-grid,.pr-home .wv-active-grid{gap:12px 10px}.pr-home .wg-group{margin-bottom:12px}.pr-home .pr-review{margin-top:14px}.pr-home-tabs button,.pr-skin-tile>span,.pr-theme-sample,.pr-plan-switch button{transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}@media(prefers-reduced-motion:reduce){.pr-home-tabs button,.pr-skin-tile>span,.pr-theme-sample,.pr-plan-switch button,.pr-home .wg-plan-tabs:before{transition:none}}

/* Compact review candidate: shared name/action footer, price above the preview. */
.pr-theme-card{position:relative;min-width:0;border-radius:18px}.pr-theme-card>.pr-theme-tile{width:100%}.pr-theme-card:has(.ad-offer) .pr-theme-sample{padding-top:30px;padding-bottom:48px}.pr-theme-card:has(.ad-offer) .pr-theme-sample>b{left:8px;right:79px;bottom:8px;min-height:34px;padding:3px 0;border:0;background:transparent;backdrop-filter:none;justify-content:start;text-align:left;font-size:11px}.pr-theme-card:has(.ad-offer) .pr-theme-sample em{left:8px;right:auto}.pr-theme-card .ad-offer-col{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:flex-end;box-sizing:border-box;padding:0 7px 8px!important;margin:0;padding:0;border:0;background:none;pointer-events:none}.pr-theme-card .lx-theme-cta{position:static;display:flex;align-items:center;justify-content:center;gap:4px;width:66px;min-height:36px;margin:0;padding:6px 4px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--green-tx);font:600 10px/1.3 var(--ui);pointer-events:auto;box-shadow:0 2px 5px #17351e08}.pr-theme-card .lx-theme-cta>svg,.pr-theme-card .theme-price svg{width:13px;height:13px;flex:none}.pr-theme-card .theme-price,.pr-theme-card .theme-time{position:absolute;right:8px;top:8px;bottom:auto;display:inline-flex;align-items:center;gap:3px;white-space:nowrap;min-height:23px;padding:3px 5px;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:10px;pointer-events:none}.pr-theme-card .theme-time svg{width:12px;height:12px}.pr-theme-grid:has(.ad-offer){grid-template-columns:repeat(2,minmax(0,1fr))}
/* Профиль, карточки тем (владелец, 20.10): кнопка в стиле своей темы — обёртка .lx-theme-cell с материалом темы, как на экране оформления; кнопка и таймер срока поверх ночной половины пары */
.pr-theme-card>.pr-theme-offer{display:contents}.pr-theme-card .ad-offer-col{z-index:3}.pr-theme-card .pr-theme-offer.lx-theme-cell .ad-offer-col .ad-watch.lx-theme-cta{width:auto;min-width:66px;min-height:36px;margin:0;padding:6px 10px;gap:4px;justify-content:center;font-size:10px;line-height:1.3}.pr-theme-card .pr-theme-offer .ad-watch.lx-theme-cta>svg{width:13px;height:13px}.pr-theme-card .pr-theme-offer :is(.theme-time,.theme-price){z-index:3;color:var(--t1);font-weight:600}.pr-theme-card .pr-theme-offer.lx-theme-cell:is([data-lx-material="meme"],[data-lx-material="meme-dark"]) .ad-offer-col .ad-watch.lx-theme-cta{background:var(--green);color:var(--on-acc);border:2px solid var(--meme-tile-shadow,#1D2020);border-radius:12px;box-shadow:3px 3px 0 var(--meme-tile-shadow,#1D2020);font-weight:700}.pr-theme-card:has(.ad-offer) .pr-theme-sample>b{border:0!important;box-shadow:none!important;background:transparent!important;backdrop-filter:none!important}
/* Профиль → «Темы», карточки Glass (сборка 95, владелец 21.10; правила по data-lx-material, работают в любой теме приложения — поэтому здесь, а не в glass-theme.css): кнопка «Открыть» / «Продлить» и цена в листочках стоят над ночной половиной карточки —
   прозрачное стекло там сливалось с фоном. Плотная светлая плашка стекла, текст — акцент палитры (контраст не ниже 4.5, tests/theme-cards-ui.cjs);
   название не уходит под кнопку */
.pr-theme-card .pr-theme-offer.lx-theme-cell[data-lx-material^="glass-"] .ad-offer-col .ad-watch.lx-theme-cta{background:linear-gradient(145deg,#ffffff8c,#ffffff00 60%),var(--surface);color:var(--green-tx);border:1px solid color-mix(in srgb,var(--green-tx) 30%,#ffffff);box-shadow:inset 0 1px 0 #ffffffd0,0 3px 10px #0000002e;font-weight:700}
.pr-theme-card .pr-theme-offer.lx-theme-cell[data-lx-material^="glass-"] :is(.theme-time,.theme-price){background:var(--surface);color:var(--t1);border:1px solid color-mix(in srgb,var(--t2) 30%,#ffffff);box-shadow:0 2px 6px #00000026}
.pr-theme-card:has(.ad-offer) :is(.pr-theme-sample[data-lx-material^="glass-"],.pr-theme-night[data-lx-material^="glass-"]>.pr-theme-sample)>b{right:98px}
/* Виджеты в профиле — прежние превью магазина (сборки 90/91): название под образцом, а не поверх него (владелец, 20.10) */
/* Профиль: пары тем «день и ночь» — одна карточка, разделённая диагональю (как .lx-pair-night на экране оформления) */
.pr-theme-sample>.pr-theme-night{z-index:2;border-radius:0;background:none;overflow:hidden}
.pr-theme-night>.pr-theme-sample{flex:1 1 auto;width:100%;height:100%;aspect-ratio:auto;border:0;border-radius:0;box-sizing:border-box}
.pet-widget-gallery .wg-pv.pr-split>.pr-split-day{position:absolute;inset:0;z-index:0;display:block;clip-path:none;background:var(--fill,var(--bg2))}
.pet-widget-gallery .wg-pv.pr-split>.pr-split-night{z-index:1;display:block;background:var(--fill,var(--bg2))}
.pet-widget-gallery .wg-pv.pr-split>span>.wg-pv-in{height:100%}
/* новый ответ поддержки — точка у шестерёнки корня профиля (внутри — у «Настройки приложения» и «Помощи и информации») */
.pr-home-gear{position:relative}.pr-home-gear>.srow-dot{position:absolute;top:7px;right:7px;margin:0}
/* темы с сервера (js/themes-remote.js): точка на вкладке «Темы» и на половине Free | Plus, пока новое не открыли; метка «Новое»
   на карточке — сверху слева (справа — галочка темы и цена). На выбранной вкладке точка не видна (вкладку уже открыли) */
.pr-home-tabs button,.pr-plan-switch button{position:relative}
.pr-tab-dot{position:absolute;top:5px;right:calc(50% - 19px);width:8px;height:8px;border-radius:50%;background:var(--green-tx);box-shadow:0 0 0 2px var(--surface);pointer-events:none}
.pr-plan-switch .pr-tab-dot{top:4px;right:6px;width:6px;height:6px}
.pr-home-tabs button[aria-selected=true]>.pr-tab-dot,.pr-home-tabs button[aria-selected=true]>.pr-tab-dot+.srow-sr{display:none}
.pr-theme-card>.pr-new{position:absolute;left:6px;top:6px;z-index:4;padding:2px 7px;border-radius:8px;background:var(--green);color:var(--on-acc);font:700 9px/1.4 var(--ui);font-style:normal;letter-spacing:.02em;pointer-events:none;box-shadow:0 1px 4px #0000001f}
/* Профиль: лента виджетов как в макете v5 — Free / Plus без общей подложки, сплошная сетка в две колонки; названия групп остаются для чтения с экрана */
.pr-home .pet-widget-gallery .wg-storebar{padding:0;border:0;background:none;box-shadow:none}
.pr-home .pet-widget-gallery .wg-group>h3{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* Профиль, «Мой профиль»: вход без аккаунта — ровная плашка, отступ до «Данных и разрешений» как между остальными (замечание владельца 20.10) */
.functional .ps-card.pr-signin{margin:0 0 14px;padding:16px}.functional .ps-card.pr-signin>.ps-primary{margin:0;width:100%}
/* Профиль, темы: замочек у закрытой Plus-темы; лист темы (образец, срок, «Как меняется», «Включить тему») */
.pr-theme-sample em{display:inline-flex;align-items:center;gap:3px}.pr-theme-sample .pr-lock{width:11px;height:11px;flex:none}
.pr-theme-page{padding:2px 0 16px}.pr-theme-hero{margin:0 0 12px}.pr-theme-hero .pr-theme-sample{aspect-ratio:16/9;padding:22px 22px 58px;gap:12px}.pr-theme-hero .pr-theme-sample i{height:12px}.pr-theme-hero .pr-theme-sample>b{left:10px;right:10px;bottom:10px;min-height:36px;font-size:14px}
.pr-theme-desc{margin:0 2px 10px;font:500 13px/1.5 var(--ui);color:var(--t2)}
.pr-theme-renew .ad-offer-col{position:static;display:block;margin:0 0 6px;padding:0;border:0;background:none}.pr-theme-renew .lx-theme-cta{position:static;display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--green-tx);font:600 13px/1.3 var(--ui)}.pr-theme-renew .lx-theme-cta svg{width:15px;height:15px}.pr-theme-renew :is(.theme-price,.theme-time){position:static;display:inline-flex;align-items:center;gap:3px}
.pr-theme-apply{display:block;width:100%;margin-top:16px}.pr-theme-apply:disabled{opacity:.6}
/* Карточки «Мемы» и «Сакура» — как сами темы (meme-theme.css, anime-theme.css, плитки экрана «Оформление»), а не общий глянец */
.pr-theme-sample[data-lx-material=meme],.pr-theme-night[data-lx-material=meme]>.pr-theme-sample{background:linear-gradient(#EFF7CD,#EFF7CD) left top/100% 46% no-repeat,#FFFEF8!important;color:#1D2020!important;border:1.75px solid #59624F;box-shadow:3px 3px 0 #1D2020}
.pr-theme-night[data-lx-material=meme-dark]>.pr-theme-sample,.pr-theme-sample[data-lx-material=meme-dark]{background:linear-gradient(#202721,#202721) left top/100% 46% no-repeat,#242B28!important;color:#F5F7EC!important}
:is(.pr-theme-sample[data-lx-material=meme],.pr-theme-night[data-lx-material=meme]>.pr-theme-sample) i{background:#CEED4A;border:1.5px solid #1D2020;box-shadow:none;opacity:1}
:is(.pr-theme-sample[data-lx-material=meme],.pr-theme-night[data-lx-material=meme]>.pr-theme-sample) i:nth-child(2){background:#59624F;border:0}
:is(.pr-theme-sample[data-lx-material=meme-dark],.pr-theme-night[data-lx-material=meme-dark]>.pr-theme-sample) i{background:#DBF45D;border:1.5px solid #080A08;box-shadow:none;opacity:1}
:is(.pr-theme-sample[data-lx-material=meme-dark],.pr-theme-night[data-lx-material=meme-dark]>.pr-theme-sample) i:nth-child(2){background:#98A58F;border:0}
:is(.pr-theme-sample[data-lx-material=meme],.pr-theme-night[data-lx-material=meme]>.pr-theme-sample)>b{background:#FFFEF8;color:#1D2020;border:1.5px solid #1D2020;box-shadow:2px 2px 0 #1D2020;backdrop-filter:none}
:is(.pr-theme-sample[data-lx-material=meme-dark],.pr-theme-night[data-lx-material=meme-dark]>.pr-theme-sample)>b{background:#242B28;color:#F5F7EC;border:1.5px solid #98A58F;box-shadow:2px 2px 0 #080A08;backdrop-filter:none}
.pr-theme-sample[data-lx-material=anime],.pr-theme-night[data-lx-material=anime]>.pr-theme-sample{background:linear-gradient(#FFFCFA94,#FFFCFA94),url("img/anime/tile-day.webp") center top/cover no-repeat,#FFFCFA!important;color:#251E35!important;border-color:#D5CADA;box-shadow:0 3px 0 #F0EAF5}
.pr-theme-night[data-lx-material=anime-dark]>.pr-theme-sample,.pr-theme-sample[data-lx-material=anime-dark]{background:linear-gradient(#252B4694,#252B4694),url("img/anime/tile-night.webp") center top/cover no-repeat,#252B46!important;color:#F4F0FA!important}
:is(.pr-theme-sample[data-lx-material=anime],.pr-theme-night[data-lx-material=anime]>.pr-theme-sample) i{background:#A93455;box-shadow:none}
:is(.pr-theme-sample[data-lx-material=anime-dark],.pr-theme-night[data-lx-material=anime-dark]>.pr-theme-sample) i{background:#F8B7CF;box-shadow:none}
:is(.pr-theme-sample[data-lx-material=anime],.pr-theme-night[data-lx-material=anime]>.pr-theme-sample)>b{background:#FFFCFAd9;color:#251E35;border-color:#D5CADA}
:is(.pr-theme-sample[data-lx-material=anime-dark],.pr-theme-night[data-lx-material=anime-dark]>.pr-theme-sample)>b{background:#252B46d9;color:#F4F0FA;border-color:#4A536D}
/* Виджеты (владелец, 20.10): «Продлить» — те же размеры, скругления и подложка, что у «Открыть»; значок по строке текста; образец не уходит под кнопку. Страница виджета: настройки карточкой */
.pet-widget-gallery .wv-panel>.wv-action.is-active{background:color-mix(in srgb,var(--surface,#fff) 90%,transparent);border-color:var(--line,#d9e2d8)}.pet-widget-gallery .wv-action-label{line-height:16px}.pet-widget-gallery :is(.wv-action-label,.wv-detail-primary)>svg{width:15px;height:15px;flex:none;display:block;overflow:visible}.pet-widget-gallery .wv-panel .wv-preview .wg-pv-in{-webkit-mask-image:linear-gradient(#000 calc(100% - 54px),transparent calc(100% - 48px));mask-image:linear-gradient(#000 calc(100% - 54px),transparent calc(100% - 48px))}.pr-home .pet-widget-gallery .wg-page{scroll-margin-top:96px}
/* профиль v5: кольцо-эллипс за Зароком (.pr-home-hero:after, inset −30px) не даёт прокрутки вбок */
.pr-home-hero{overflow-x:clip}
/* сборка 95: отступ под строкой состояния уже даёт .app (padding-top:var(--safe-top), styles.css) — у шапки профиля только свои 10 px
   (прежний calc(env(safe-area-inset-top) + 18px) удваивал вырез: шапка сползала вниз). tests/profile-pageholes-ui.cjs */
/* Страница виджета: свои настройки виджета до добавления (владелец, 20.10; js/pet.js ownSettings) и живой образец */
.wv-cfg{display:grid;gap:8px;margin:10px 0 14px}.wv-cfg .wv-cfg-h{margin:8px 0 0;font:700 13px/1.4 var(--ui);color:var(--t1)}.wv-cfg-note{margin:0;font:500 12px/1.5 var(--ui);color:var(--t2)}
.wv-cfg-seg{display:flex;flex-wrap:wrap;gap:6px}.wv-cfg-seg>button{flex:1 1 auto;min-height:40px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--t1);font:600 12px/1.3 var(--ui)}.wv-cfg-seg>button[aria-checked=true]{border-color:var(--green-tx);background:color-mix(in srgb,var(--green-tx) 12%,var(--surface));color:var(--green-tx)}
.wv-cfg-rows{display:grid;gap:6px}.wv-cfg-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:46px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--t1);text-align:left}.wv-cfg-row>span{display:grid;gap:2px;min-width:0}.wv-cfg-row b{font:600 13px/1.35 var(--ui);overflow-wrap:anywhere}.wv-cfg-row small{font:500 11px/1.4 var(--ui);color:var(--t2)}
.wv-cfg-row>i{flex:none;width:18px;height:18px;border:1.6px solid var(--line);border-radius:50%}.wv-cfg-row[role=checkbox]>i{border-radius:5px}.wv-cfg-row[aria-checked=true]{border-color:var(--green-tx)}.wv-cfg-row[aria-checked=true]>i{border-color:var(--green-tx);background:var(--green-tx);box-shadow:inset 0 0 0 3px var(--surface)}
.wv-cfg .wv-cfg-toggle{margin:2px 0;padding:8px 0;border:0;background:none}.wv-cfg-field{width:100%;box-sizing:border-box;min-height:44px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--t1);font:500 14px/1.4 var(--ui)}.wv-cfg-range{width:100%;accent-color:var(--green-tx)}
.wv-detail-art[data-moon-look] .pw-moon{--ma:.72;background:linear-gradient(rgba(14,26,51,var(--ma)),rgba(43,60,102,var(--ma)));border:1px solid #ffffff2e}.wv-detail-art[data-moon-glass=light] .pw-moon{--ma:.42}.wv-detail-art[data-moon-glass=dense] .pw-moon{--ma:.94}.wv-detail-art[data-moon-look=button] .pw-moon{box-shadow:inset 0 1px 0 #ffffff59,inset 0 -10px 18px #00000038,0 8px 18px #0003}.wv-detail-art[data-moon-look=simple] .pw-moon{box-shadow:none}
.wv-detail-art[data-k=moon]{background:linear-gradient(135deg,#7b4fd0,#c08fe8 55%,#5a3fa8);border-radius:18px;padding:12px}
.wv-detail-art[data-bg=glass] .pw{background:color-mix(in srgb,var(--surface) 55%,transparent)!important;backdrop-filter:blur(8px)}.wv-detail-art[data-bg=glass]{background:linear-gradient(135deg,#7b4fd0,#c08fe8 55%,#5a3fa8);border-radius:18px;padding:12px}
.wv-detail-art[data-pending] .pw-row:has(>i:not(:empty)){display:none}
.wv-detail-art[data-heat] .pw-cal-grid i.dot{background:color-mix(in srgb,var(--acc,#4d7965) 45%,transparent);border-radius:7px}.wv-detail-art[data-heat][data-style=circles] .pw-cal-grid i.dot,.wv-detail-art[data-heat][data-style=circles] .pw-cal-grid i.on{border-radius:50%}
.wv-detail-art[data-k=habits][data-style=tiles] .pw-habits .pw-hrow i{border-radius:3px}.wv-detail-art[data-k=habits][data-view=month] .pw-habits .pw-hrow:not(:first-of-type){display:none}
.wv-detail-art[data-view=today] .pw-totals .pw-bars i:not(.on){opacity:.25}
.wv-detail-art[data-k=ahead][data-view=days] .pw-ahead .pw-row{display:none}.wv-detail-art[data-k=ahead][data-period="1"] .pw-ahead .pw-day~.pw-day,.wv-detail-art[data-k=ahead][data-period="1"] .pw-ahead .pw-day~.pw-day~.pw-row{display:none}
.wv-detail-art[data-k=personal] .pw{background:color-mix(in srgb,var(--surface) calc(var(--pw-op,1)*100%),transparent)!important;color:var(--t1)}
/* тема «Мемы»: гость дня в профиле v5 (js/meme-theme.js guestPeek(…, 'profile'), как до v5) — одна фигурка рядом со сценой Зарока, выглядывает из-за него */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-hero .pr-home-scene>.meme-peek.at-profile{top:auto;bottom:46px;left:calc(71% - 40px);right:auto}html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-hero .pr-home-scene>.meme-peek.at-profile[data-side="l"]{left:auto;right:calc(71% - 40px)}html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-hero .pr-home-scene>.meme-peek.at-profile.pk-stick{top:auto;bottom:96px;left:calc(50% + 92px)}.pr-home-scene>img{position:relative;z-index:1}

/* переходы для всех тем (сборка 93, js/motion.js): тот же prHomeEnter, что у вкладок профиля — 180 мс, проявление и сдвиг 4 px.
   Смена раздела (нижние вкладки, разделы боковой панели) — класс anim у экрана; смена вкладки внутри раздела, страницы настроек
   и листа — motion-in на новой панели. Только при смене: фоновая перерисовка не проигрывает его заново. Glass и веб-панель
   ставят свои правила (glass-theme.css, desk.css — они точнее). «Уменьшить движение» — без анимации. */
#root>.screen.anim,.motion-in{animation:prHomeEnter .18s ease-out}
@media(prefers-reduced-motion:reduce){#root>.screen.anim,.motion-in{animation:none}}

/* Профиль, тема-пара (владелец, 20.10): диагональ делит только образец виджета; кнопка «Открыть»/«Продлить», цена в листочках и таймер — поверх, целиком, в стиле текущей темы.
   Половины дня и ночи заперты внутри образца (isolation), у карточки с кнопкой обе половины гаснут над полосой кнопки — там фон текущей темы */
.pet-widget-gallery .wv-preview .wg-pv.pr-split{position:relative;isolation:isolate;overflow:hidden;background:var(--fill,var(--bg2))}
.pet-widget-gallery .wv-panel .wg-pv.pr-split>:is(.pr-split-day,.pr-split-night){-webkit-mask-image:linear-gradient(#000 calc(100% - 60px),transparent calc(100% - 52px));mask-image:linear-gradient(#000 calc(100% - 60px),transparent calc(100% - 52px))}
.pet-widget-gallery :is(.wv-panel,.wv-preview-wrap)>:is(.wv-meta,.wv-action){z-index:3}
/* Профиль: липкая полоса вкладок на подложке во всю ширину — фон экрана до верхнего края, под скруглёнными углами прокрутка не видна (владелец, 20.10) */
.pr-home-tabs-bar{position:sticky;top:0;z-index:8;margin:0 -16px;padding:0 16px;background:var(--bg)}
.pr-home-tabs-bar>.pr-home-tabs{position:relative;top:auto}
html[data-glass] .functional .pr-home-tabs-bar{background:var(--glass-scene) fixed,var(--bg)}
@media(max-width:360px){.pr-home-tabs-bar{margin-inline:-12px;padding-inline:12px}}
/* Профиль, «Виджеты»: Free | Plus — та же плашка, что во «Темах» (.pr-plan-switch); бегунок каталога не нужен */
.pr-home .wg-plan-tabs.pr-plan-switch{display:flex;grid-template-columns:none;isolation:auto}
.pr-home .wg-plan-tabs.pr-plan-switch:before{display:none}
.pr-home .wg-plan-tabs.pr-plan-switch button{flex:1;font-weight:600}
/* «Загруженные темы» (js/packs.js page): строки — как копии на устройстве (ps-copy); «Используется» — спокойная метка вместо кнопки, внизу — сколько занято */
.pk-page .pk-used{display:inline-flex;align-items:center;min-height:32px;padding:4px 12px;border-radius:99px;background:var(--fill-2,var(--fill));color:var(--t2);font:600 .75rem/1.4 var(--ui)}
.pk-code{display:block;font:500 .6875rem/1.3 var(--ui);color:var(--t3,var(--t2));opacity:.8;letter-spacing:.02em}
.pk-page .pk-total{display:flex;justify-content:space-between;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);font:500 .8125rem/1.5 var(--ui);color:var(--t2)}
.pk-page .pk-total b{color:var(--t1);font-weight:700}
.pk-page .pk-empty{margin-top:12px}
/* вкладка «Значки» профиля (js/appicon.js, владелец 21.10.2026): пять вкладок в ряд; карточка значка — как у «Тем»
   (галочка выбранного, название, «Открыть» / «Продлить» у Plus), только картинка значка крупнее; лист значка — примерка */
/* вкладок пять или шесть («Друзья», js/friends.js), порядок и скрытые — человека (js/prof-tabs.js): колонки по числу кнопок */
.pr-home-tabs{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:3px}
.pr-home-tabs button{padding-inline:0}
.pr-home-tabs button>span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr-icon-note{margin:0 0 12px}
.pr-icon-set{margin:0 0 16px}
.pr-icon-h{margin:0 0 8px;font:700 13px/1.4 var(--ui);color:var(--t1)}
.pr-icon-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.pr-icon-card{position:relative;min-width:0;display:flex;flex-direction:column;gap:6px}
.pr-icon-tile{display:block;width:100%;min-width:0;padding:0;border:0;background:none;color:var(--t1)}
.pr-icon-sample{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;aspect-ratio:1;padding:6px 6px 4px;box-sizing:border-box;border:1px solid var(--line);border-radius:18px;background:linear-gradient(150deg,var(--surface),color-mix(in srgb,var(--green-tx) 7%,var(--bg)));overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}
.pr-icon-sample>img{display:block;width:54%;height:auto;aspect-ratio:1;flex:none;border-radius:26%;object-fit:cover;box-shadow:0 3px 9px #0000002e}
.pr-icon-sample>b{max-width:100%;font:600 10px/1.25 var(--ui);color:var(--t1);text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.pr-icon-sample>em{position:absolute;top:6px;right:8px;font:700 11px/1 var(--ui);font-style:normal;color:var(--green-tx)}
.pr-icon-tile[aria-pressed=true]>.pr-icon-sample{border-color:var(--green-tx);box-shadow:0 0 0 1px var(--green-tx)}
.pr-icon-offer .ad-offer-col{position:static;display:block;margin:0;padding:0;border:0;background:none}
.pr-icon-offer .lx-theme-cta{position:static;display:flex;align-items:center;justify-content:center;gap:4px;width:100%;min-height:32px;margin:0;padding:4px 6px;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--green-tx);font:600 10px/1.3 var(--ui);box-shadow:0 2px 5px #17351e08}
.pr-icon-offer .lx-theme-cta svg{width:13px;height:13px;flex:none}
.pr-icon-offer :is(.theme-price,.theme-time){position:static;display:inline-flex;align-items:center;gap:2px;margin-left:2px;padding:0;border:0;background:none;font-size:10px;color:var(--t1)}
.pr-icon-page{display:flex;flex-direction:column;gap:12px}
/* витрина набора (GPT 4.16, 23.10): плашка «Адаптивный значок» с примеркой, панель 12 лиц, «О значке» */
.pr-icon-hero{position:relative;padding:20px 13px 13px;border-radius:24px;background:radial-gradient(ellipse at 50% 37%,color-mix(in srgb,var(--surface) 61%,transparent),transparent 63%),linear-gradient(145deg,color-mix(in srgb,var(--green-tx) 10%,var(--bg)),var(--bg));overflow:hidden;margin-bottom:6px}
.pr-icon-hero-copy{position:relative;z-index:2;text-align:center}
.pr-icon-hero-copy h3{margin:0 0 6px;font:650 22px/1.25 var(--ui);letter-spacing:-.5px;color:var(--t1)}
.pr-icon-hero-copy p{margin:0;font:400 12px/1.5 var(--ui);color:var(--t2)}
.pr-icon-stage{position:relative;height:135px;display:flex;justify-content:center;align-items:center;gap:17px}
.pr-icon-stage:after{content:'';position:absolute;left:50%;bottom:18px;width:184px;height:14px;margin-left:-92px;background:#414c3420;filter:blur(9px);border-radius:50%;z-index:0}
.pr-icon-stage img{position:relative;z-index:1;width:88px;height:88px;object-fit:cover;border-radius:24%;box-shadow:0 7px 12px #34433124,inset 0 1px 0 #fff5}
.pr-icon-stage img.side{width:57px;height:57px;opacity:.72;transform:translateY(14px) rotate(-9deg)}
.pr-icon-stage img.side:last-child{transform:translateY(14px) rotate(9deg)}
.pr-icon-board{padding:17px 12px 12px;border:1px solid color-mix(in srgb,var(--green-tx) 13%,transparent);border-radius:23px;background:var(--surface);box-shadow:0 4px 14px #34433104}
.pr-icon-board-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 4px 11px}
.pr-icon-board-head b{font:650 13px/1.4 var(--ui);color:var(--t1)}
.pr-icon-board-head span{flex:none;font:400 10px/1.4 var(--ui);color:var(--t2)}
.pr-icon-variants{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.pr-icon-variants button{display:grid;place-items:center;aspect-ratio:1;min-width:0;min-height:44px;padding:8px;border:1px solid transparent;border-radius:17px;background:var(--bg);transition:background .15s ease,border-color .15s ease}
.pr-icon-variants button[aria-pressed=true]{border-color:color-mix(in srgb,var(--green-tx) 45%,transparent);background:color-mix(in srgb,var(--green-tx) 10%,var(--bg))}
.pr-icon-variants img{display:block;width:100%;max-width:58px;height:auto;aspect-ratio:1;border-radius:23%;box-shadow:0 3px 7px #34433113}
.pr-icon-about{margin:0 5px;font:400 11px/1.5 var(--ui);color:var(--t2)}
.pr-icon-about summary{cursor:pointer;min-height:34px;padding:8px 0;box-sizing:border-box}
.pr-icon-about p{margin:4px 0 0}
.pr-icon-page .pr-theme-desc{margin:0;text-align:center}
.pr-icon-apply{display:flex;align-items:center;justify-content:center;gap:6px}
.pr-icon-apply .pr-lock{width:16px;height:16px}
.pr-icon-warn{margin:0}
@media(max-width:360px){.pr-icon-grid{gap:8px}.pr-icon-variants{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.pr-icon-sample,.pr-icon-variants button{transition:none}}
/* наборы значков Топы (Plus, вкладка «Значки», 21.10.2026): карточка набора — шесть лиц и название; лист набора — лица по состояниям */
.pr-iconset-list{display:flex;flex-direction:column;gap:10px}
.pr-iconset-card{display:flex;flex-direction:column;gap:6px;min-width:0}
.pr-iconset-tile{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(150deg,var(--surface),color-mix(in srgb,var(--green-tx) 7%,var(--bg)));color:var(--t1);text-align:left}
.pr-iconset-tile[aria-pressed=true]{border-color:var(--green-tx);box-shadow:0 0 0 1px var(--green-tx)}
.pr-iconset-faces{display:grid;grid-template-columns:repeat(3,40px);gap:5px;flex:none}
.pr-iconset-faces img{display:block;width:40px;height:40px;border-radius:26%;object-fit:cover;box-shadow:0 2px 5px #00000026}
.pr-iconset-text{display:flex;flex-direction:column;gap:3px;min-width:0}
.pr-iconset-text b{font:700 14px/1.3 var(--ui)}
.pr-iconset-text small{font:500 11px/1.4 var(--ui);color:var(--t2)}
.pr-iconset-tile>em{position:absolute;top:8px;right:10px;font:700 12px/1 var(--ui);font-style:normal;color:var(--green-tx)}
@media(max-width:360px){.pr-iconset-faces{grid-template-columns:repeat(3,36px)}.pr-iconset-faces img{width:36px;height:36px}}

/* ---------- нижняя панель: эффект выбранного раздела (пакет ChatGPT out/v5/nav-lab, сборка 96) ----------
   Один эффект на тему: html[data-nav-fx=fog|lens|capsule|layers] ставит js/app.js applyTheme по таблице js/nav-fx.js;
   слой света .nav-fluid и жест — js/nav-fx.js. Здесь общие правила лаборатории (effects.css), «Туман», «Жидкая капсула»
   и «Два слоя»; «Линза» — glass-theme.css (только под html[data-glass]); материалы «Тумана» — artisan-theme.css.
   Без рамок и подложки у выбранной кнопки; размер кнопок и сама панель — своей темы; видимый фокус клавиатуры сохранён.
   Работает и на панели раздела таймера (js/focus.js bar: те же классы tabbar/tab). */
html[data-nav-fx] #app.functional .tabbar{--light:color-mix(in srgb,var(--t1) 22%,transparent);--glow:color-mix(in srgb,var(--green-tx) 30%,transparent);position:relative;isolation:isolate;touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
/* обычные темы (у панели нет своего материала): как в лаборатории — без верхней линии; Люкс, Glass, ремёсла, «Мемы»
   и «Ханами» сохраняют свою панель */
html[data-nav-fx]:is([data-theme=light],[data-theme=dark],[data-theme=sage],[data-theme=sand],[data-theme=mist],[data-theme=bw],[data-theme=bwdark]) #app.functional .tabbar{border:0}
html[data-nav-fx] #app.functional .tabbar .tab{position:relative;z-index:2;min-width:0;border-color:transparent;background:none;box-shadow:none;color:var(--t2);transition:color .2s,transform .25s;touch-action:pan-y}
html[data-nav-fx] #app.functional .tabbar .tab.on{color:var(--t1);background:none;box-shadow:none}
html[data-nav-fx] #app.functional .tabbar .tab .tab-ico{background:none;box-shadow:none;border-color:transparent}
html[data-nav-fx] #app.functional .tabbar .tab.on .tab-ico{color:inherit}
html[data-nav-fx] #app.functional .tabbar .tab.on .tab-lb{font-weight:800}
html[data-nav-fx] #app.functional .tabbar .tab.on svg{stroke-width:2}
html[data-nav-fx] #app.functional .tabbar .tab-lb{white-space:nowrap}
html[data-nav-fx] #app.functional .tabbar .tab:focus-visible{outline:2px solid var(--green-tx);outline-offset:-3px;border-radius:15px}
html[data-nav-fx] #app.functional .tabbar>.nav-fluid{position:absolute;pointer-events:none;z-index:0;left:0;top:var(--nav-y,8px);width:var(--nav-w,72px);height:var(--nav-h,60px);transform:translate3d(var(--nav-x,0px),0,0);transition:transform .48s cubic-bezier(.18,1.4,.36,1),width .3s,opacity .25s;border:0}
html[data-nav-fx] #app.functional .tabbar.is-dragging>.nav-fluid{transition:transform .08s linear,width .12s}
html:not([data-nav-fx]) .tabbar>.nav-fluid,html[data-nav-fx] #app.functional .tabbar.nav-fx-none>.nav-fluid{display:none}
/* «Туман»: рассеянный свет без силуэта; цвета светлых палитр — по светлоте материала, тёмные — от --glow */
html[data-nav-fx=fog] #app.functional .tabbar{--nav-fog-color:#dcebe3;--nav-active-ink:var(--green-tx)}
html[data-nav-fx=fog]:not([data-artisan]) #app.functional .tabbar{overflow:hidden}
html[data-nav-fx=fog][data-theme=sage] #app.functional .tabbar{--nav-fog-color:#d2e6d8}
html[data-nav-fx=fog][data-theme=porcelain] #app.functional .tabbar{--nav-fog-color:#e4e8d7}
html[data-nav-fx=fog]:is([data-theme=dark],[data-theme=obsidian]) #app.functional .tabbar{--nav-fog-color:var(--glow);--nav-active-ink:var(--t1)}
/* свет гаснет к краям своего слоя ровно до нуля (closest-side): у края панели (overflow:hidden) нет прямого среза (замечание владельца, сборка 97) */
html[data-nav-fx=fog] #app.functional .tabbar>.nav-fluid{background:radial-gradient(closest-side ellipse at 50% 50%,color-mix(in srgb,var(--nav-fog-color) 86%,transparent) 0%,color-mix(in srgb,var(--nav-fog-color) 62%,transparent) 38%,color-mix(in srgb,var(--nav-fog-color) 22%,transparent) 72%,transparent 100%);transition:transform .18s ease-out,width .18s ease-out;will-change:transform}
html[data-nav-fx=fog] #app.functional .tabbar .tab.on{color:var(--nav-active-ink)}
html[data-nav-fx=fog] #app.functional .tabbar.is-pressing>.nav-fluid{transition:none}
/* «Жидкая капсула»: подложка растягивается от скорости пальца и возвращается после отпускания */
html[data-nav-fx=capsule] #app.functional .tabbar>.nav-fluid{border-radius:28px;background:var(--light);scale:var(--stretch,1) 1}
html[data-nav-fx=capsule] #app.functional .tabbar.is-pressing>.nav-fluid{border-radius:38% 42% 39% 44%;filter:blur(1px)}
/* «Два слоя»: два световых слоя, наклон по направлению движения */
html[data-nav-fx=layers] #app.functional .tabbar>.nav-fluid{height:calc(var(--nav-h,60px) - 2px);border-radius:22px;background:linear-gradient(160deg,var(--light),transparent 90%);rotate:var(--tilt,0deg);box-shadow:0 8px 18px color-mix(in srgb,var(--green-tx) 9%,transparent)}
html[data-nav-fx=layers] #app.functional .tabbar>.nav-fluid::after{content:"";position:absolute;inset:8px -4px -4px 8px;background:var(--glow);filter:blur(12px);border-radius:25px;z-index:-1}
/* сразу на месте: первая отрисовка панели, смена размера окна (js/nav-fx.js still) */
html[data-nav-fx] #app.functional .tabbar.nav-fx-still>.nav-fluid{transition:none}
/* «Уменьшить движение»: свет стоит под выбранной кнопкой, без переходов, растяжения и наклона */
@media(prefers-reduced-motion:reduce){
  html[data-nav-fx] #app.functional .tabbar>.nav-fluid{transition:none!important;scale:none;rotate:none}
  html[data-nav-fx] #app.functional .tabbar .tab,html[data-nav-fx] #app.functional .tabbar .tab-ico{transition:none!important}
}

/* ---- Страница темы и её строки (макет ChatGPT out/v5/settings-lab, сборка 96; пакет очистки cleanup.html, 22.10.2026): список из
   четырёх строк со значком, отметка «Сохранено» и (i), страницы строк (компоновка, цвета, картины, день и ночь), кнопка внизу ---- */
.functional .pr-set-list{margin:16px 0;background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.functional .pr-set-list>.setrow{margin:0;padding:14px;min-height:68px;gap:12px;border:0;border-radius:0;background:none;text-align:left;color:var(--t1)}
.functional .pr-set-list>.setrow+.setrow,.functional .pr-set-list>.pr-color-editor+.setrow{border-top:1px solid var(--line)}
.functional .pr-set-list .setbody b{font-size:13px}.functional .pr-set-list .setbody em{font-size:11px;line-height:1.4;color:var(--t2)}
.pr-set-symbol{width:32px;height:32px;flex:none;display:grid;place-items:center;border-radius:10px;background:var(--green-bg);color:var(--green-tx);font:400 16px/1 var(--ui);font-style:normal}
.pr-set-go{font-size:20px;color:var(--t2);flex:none}
.pr-theme-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-6px 2px 0;font:500 11px/1.4 var(--ui);color:var(--t2)}
.pr-saved{display:inline-flex;align-items:center;gap:4px}.pr-saved svg{width:14px;height:14px;color:var(--green)}
/* (i) и ⋯: значок 28 px, область нажатия 44 px; пояснение раскрывается карточкой под значком */
.pr-pop{position:relative;flex:none}
/* «Значок приложения» в Настройках (js/screens.js setIconLive): строка «Живая иконка» и (i) справа */
.pr-iconlive{display:flex;align-items:center;gap:4px}.pr-iconlive>.switchrow{flex:1;min-width:0;border-bottom:0}
.functional .pr-pop-btn{display:grid;place-items:center;width:44px;height:44px;margin:-8px -8px -8px 0;list-style:none;cursor:pointer;color:var(--t2);border-radius:14px}
.pr-pop-btn::-webkit-details-marker{display:none}
.pr-pop-btn svg{width:21px;height:21px}
.pr-pop[open]>.pr-pop-btn{color:var(--t1)}
.pr-pop-body{position:absolute;right:-4px;top:calc(100% + 6px);z-index:6;width:min(300px,calc(100vw - 40px));padding:12px 14px;background:var(--surface);color:var(--t1);border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 30px rgba(0,0,0,.18);font:400 12px/1.5 var(--ui);text-align:left}
.pr-pop-body p{margin:0}.pr-pop-body p+p{margin-top:8px}.pr-pop-body b{display:block;font-weight:650}.pr-pop-body span{display:block;color:var(--t2)}
.functional .pr-pop-item{display:block;width:100%;min-height:44px;margin:-4px 0;padding:10px 0;border:0;background:none;color:var(--t1);font:500 13px/1.4 var(--ui);text-align:left}
.pr-ctx{display:flex;align-items:center;gap:8px;min-height:44px;margin:10px 2px 6px}.pr-theme-sub>.pr-ctx:first-child{margin-top:-6px}
.pr-ctx>b{flex:1;min-width:0;font:400 12px/1.4 var(--ui);color:var(--t2)}
.pr-ctx>.pr-pop+.pr-pop .pr-pop-btn{margin-left:0}
/* вкладки «Дни» / «Категории дел» */
.pr-seg{display:flex;gap:4px;padding:4px;background:var(--bg2);border:1px solid var(--line);border-radius:14px}
.functional .pr-seg>button{flex:1;min-width:0;min-height:44px;padding:8px 6px;border:0;border-radius:10px;background:none;color:var(--t2);font:500 13px/1.3 var(--ui);text-align:center;justify-content:center}
.functional .pr-seg>button[aria-selected=true]{background:var(--surface);color:var(--t1);font-weight:700;box-shadow:0 1px 5px rgba(0,0,0,.08),inset 0 0 0 1px var(--line)}
.pr-ctx+.pr-calendar-sample{margin-top:4px}.pr-ctx+.pr-set-list{margin-top:4px}
.functional .pr-color-list>.pr-color-row{min-height:56px}
.pr-color-row .sw{width:24px;height:24px;flex:none;border-radius:8px;border:1px solid rgba(0,0,0,.06)}
.pr-color-row[aria-expanded=true] .pr-set-go{transform:rotate(90deg)}
/* «Картины и свет» — один переключатель */
.functional .pr-set-list>.pr-switch-row{align-items:center}.pr-switch-row .setbody{flex:1;min-width:0}
/* день и ночь — сетка 2×2 */
.pr-mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:4px 0 0}
.functional .pr-mode{display:flex;align-items:center;gap:9px;min-width:0;min-height:64px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--t1);text-align:left}
.pr-mode svg{width:21px;height:21px;flex:none;color:var(--t2)}.pr-mode b{min-width:0;font:500 12px/1.4 var(--ui);overflow-wrap:anywhere}
.functional .pr-mode[aria-checked=true]{border-color:var(--green);background:var(--green-bg);color:var(--green-tx);box-shadow:inset 0 0 0 1px var(--green)}
.pr-mode[aria-checked=true] svg{color:var(--green-tx)}.pr-mode[aria-checked=true] b{font-weight:700}
/* кнопка страницы темы (владелец, 22.10.2026): стоит внизу страницы и на короткой странице (тело страницы — колонка, содержимое
   растягивается), при прокрутке не уезжает. Под ней — нижняя панель страницы с «Назад» (владелец 23.10.2026, js/screens.js pageNav),
   отступ системной навигации — у панели. Тело без нижнего поля: кнопка доходит до панели
   (#app — сильнее правил запаса под панелью у Glass и ремёсел; под шторкой страница та же — .pf-under-body) */
#app #overlay .pf-page>:is(.sheet-body,.pf-under-body):has(>.pr-theme-save){display:flex;flex-direction:column;padding-bottom:0}
/* страница с кнопкой темы кончается над панелью страницы и там, где списки уходят под панель (Glass, доски ремёсел): иначе кнопка под ней */
#app #overlay .pf-page:not(.pf-under):has(>.sheet-body>.pr-theme-save){padding-bottom:var(--pf-float,0px)}
#overlay .pf-page>:is(.sheet-body,.pf-under-body)>.pr-theme-page{flex:1 0 auto}
.pr-theme-save{position:sticky;bottom:0;z-index:2;flex:none;margin:20px -16px 0;padding:12px 16px;background:var(--bg);border-top:1px solid var(--line)}
.pr-theme-save .btn{display:block;width:100%;min-height:48px;margin:0}
.pr-theme-note{margin:12px 2px 16px;font:400 11px/1.6 var(--ui);color:var(--t2)}
.pr-theme-sub .lay-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.pr-theme-sub .lay-tile{min-width:0;padding:9px}.pr-theme-sub .lay-tile b{font-size:11px}.pr-theme-sub .lay-tile em{font-size:10px}
.pr-theme-preview{display:flex;flex-direction:column;justify-content:flex-end;gap:7px;min-height:160px;margin-top:16px;padding:22px;border-radius:22px;border:1px solid var(--line)}
.pr-theme-preview b{font:650 21px/1.3 var(--ui)}.pr-theme-preview small,.pr-theme-preview span,.pr-theme-preview p{margin:0;font:500 11px/1.4 var(--ui)}
.pr-theme-meter{height:4px;margin:6px 0;border-radius:4px;background:color-mix(in srgb,currentColor 15%,transparent);overflow:hidden}.pr-theme-meter i{display:block;height:100%;min-width:4px;background:var(--pr-theme-accent,currentColor)}
.pr-layout-demo{margin:12px 0;padding:12px;border-radius:18px;background:var(--bg2);font:500 12px/1.4 var(--ui);color:var(--t1)}
.pr-demo-date{margin-bottom:9px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);font-weight:650}
.pr-demo-plan{display:grid;gap:8px}.pr-demo-plan>div{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow-wrap:anywhere}.pr-demo-plan span{margin-right:12px;color:var(--t2)}
.pr-layout-demo.unified{background:var(--surface);border:1px solid var(--line)}.pr-layout-demo.unified .pr-demo-date{margin:0;border:0}.pr-layout-demo.unified .pr-demo-plan{gap:0}.pr-layout-demo.unified .pr-demo-plan>div{border:0;border-top:1px solid var(--line);border-radius:0}
.pr-layout-demo.split .pr-demo-plan{gap:0;padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:16px}.pr-layout-demo.split .pr-demo-plan>div{border:0}
.pr-calendar-sample{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:14px 0 20px}.pr-calendar-sample span{display:grid;place-items:center;height:36px;border-radius:9px;font:650 12px var(--ui)}
.pr-color-editor{padding:0 16px 16px;border-top:1px solid var(--line)}
.pr-color-choices{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:16px 0}.functional .pr-color-choices button{width:100%;max-width:44px;height:44px;padding:0;border-radius:14px;border:3px solid transparent}.functional .pr-color-choices button[aria-pressed=true]{border-color:var(--t1)}
.pr-own-color{display:block;font:500 12px/1.5 var(--ui);color:var(--t2)}.pr-own-color input{display:block;width:100%;min-height:48px;margin-top:4px;padding:5px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}

/* ============================================================
   Кнопка с заливкой хода загрузки — кнопка с заливкой хода загрузки (js/fill-btn.js, владелец 23.10.2026).
   Цвета — только от самой кнопки: жидкость, волна и галочка рисуются её чернилами
   (currentColor), фон и материал кнопке даёт тема. Своих цветов здесь нет.
   ============================================================ */
.fill-btn{position:relative;overflow:hidden;isolation:isolate;--fill-ink:color-mix(in srgb,currentColor 24%,transparent)}
/* жидкость — слой во всю ширину, сдвинут влево на недолитую часть (transform, раскладка не трогается) */
.fill-btn .fill-liquid{position:absolute;left:0;top:0;bottom:0;z-index:0;width:100%;transform:translateX(calc(var(--fill-p,0%) - 100%));background:var(--fill-ink);pointer-events:none;transition:transform .45s cubic-bezier(.3,.7,.3,1)}
/* волна на кромке: полукруглые гребни той же жидкости, бегут вдоль кромки */
.fill-btn .fill-wave{position:absolute;left:100%;top:0;bottom:0;width:6px;background:var(--fill-ink);opacity:0;
  -webkit-mask:radial-gradient(circle at 0 50%,#000 5.5px,transparent 6px) 0 0/6px 14px repeat-y;mask:radial-gradient(circle at 0 50%,#000 5.5px,transparent 6px) 0 0/6px 14px repeat-y;
  animation:fill-wave 1.1s linear infinite}
.fill-btn[data-fill="busy"] .fill-wave{opacity:1}
@keyframes fill-wave{to{-webkit-mask-position:0 14px;mask-position:0 14px}}
.fill-btn .fill-label{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:0;flex-wrap:wrap}
.fill-btn .fill-sub{font-size:.85em;font-weight:500;opacity:.8;font-variant-numeric:tabular-nums}
.fill-btn .fill-sub::before{content:'· '}
/* ход неизвестен: спокойная полоса без процента */
.fill-btn[data-fill="wait"] .fill-liquid{width:36%;transform:translateX(-100%);transition:none;background:linear-gradient(90deg,transparent,var(--fill-ink) 35%,var(--fill-ink) 65%,transparent);animation:fill-wait 2.2s ease-in-out infinite}
@keyframes fill-wait{from{transform:translateX(-100%)}to{transform:translateX(290%)}}
/* готово: кнопка полна, галочка дорисовывается */
.fill-btn .fill-check{display:none;width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.fill-btn[data-fill="done"] .fill-check{display:block;stroke-dasharray:22;stroke-dashoffset:0}
.fill-btn.fill-fresh[data-fill="done"] .fill-check{animation:fill-draw .5s ease-out both}
@keyframes fill-draw{from{stroke-dashoffset:22}}
.fill-btn[aria-disabled="true"]{cursor:default}
@media (prefers-reduced-motion:reduce){
  .fill-btn .fill-liquid{transition:none}
  .fill-btn .fill-wave{display:none}
  .fill-btn[data-fill="wait"] .fill-liquid{width:100%;transform:none;animation:none;opacity:.5;background:var(--fill-ink)}
  .fill-btn.fill-fresh[data-fill="done"] .fill-check{animation:none}
}
/* лист набора значков: «О значке» под кнопкой, пояснение при отказе загрузки */
.pr-icon-page .fill-err{margin:-4px 5px 0;font:400 12px/1.5 var(--ui);color:var(--t2)}
/* лист темы: причина отказа загрузки над строками темы (кнопка с заливкой — «Повторить») */
.pr-theme-page .pr-theme-err{margin:12px 4px 0;font:400 12px/1.5 var(--ui);color:var(--t2)}
/* вкладка «Облики»: ход загрузки сцен облика — кольцо в значке выбранной карточки, цвета значка темы (currentColor) */
.pr-skin-tile i.pk-load svg,.pr-skin-tile i.pk-again svg{width:19px;height:19px}
.pk-ring{fill:none;stroke:currentColor;stroke-width:2.6;transform:rotate(-90deg)}
.pk-ring circle:first-child{opacity:.22}
.pk-ring .pk-ring-bar{stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:calc(100 - var(--pk-p,0));transition:stroke-dashoffset .4s ease}
.pk-ring.pk-ring-wait .pk-ring-bar{stroke-dashoffset:72;animation:pk-ring-spin 1.1s linear infinite;transform-origin:12px 12px}
@keyframes pk-ring-spin{to{transform:rotate(360deg)}}
.pk-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (prefers-reduced-motion:reduce){.pk-ring .pk-ring-bar{transition:none}.pk-ring.pk-ring-wait .pk-ring-bar{animation:none}}
/* в темах-ремёслах значок выбранной карточки, пока грузится Зарок темы, рисует своё ожидание (artisan-theme.css); наше кольцо и «повторить» — поверх него */
html[data-artisan][data-artisan-actor=wait] .functional .pr-skin-tile[aria-checked=true]>span>i:is(.pk-load,.pk-again)>svg{visibility:visible}
html[data-artisan][data-artisan-actor=wait] .functional .pr-skin-tile[aria-checked=true]>span>i:is(.pk-load,.pk-again)::before{content:none}

/* Редактор виджета: отдельный слой корпуса сохраняет контраст содержимого.
   Цвет и градиент берутся из текущего материала в pet.js (paintSurface). */
.wv-detail-art>[data-wv-surface]{position:relative!important;isolation:isolate;background:transparent!important;box-shadow:none!important}
.wv-detail-art>[data-wv-surface]>.wv-preview-surface{position:absolute!important;inset:0;z-index:-1;pointer-events:none;width:auto!important;height:auto!important;margin:0!important;padding:0!important;border:0!important}

/* Подготовка: область касания равна всей ширине строки, включая прежние боковые поля. */
.functional .prep-step .scard{overflow:hidden}
.functional .prep-step .snap-list{margin-inline:-14px}
.functional .prep-step .prep-row2,.snap-layer .prep-row2{box-sizing:border-box;width:100%;padding-inline:14px}
.snap-checked .dotchk{background:var(--green);border-color:var(--green)}
.snap-checked .dotchk::after{content:'✓';color:var(--on-acc);font:600 11px var(--ui)}
.prep-hdr .hdr-main{min-width:0}.prep-hdr .hdr-date{font-size:clamp(22px,6vw,30px);line-height:1.15}
.srow.switchrow .switch{margin-left:auto;flex:none}
/* «План отдельно»: полоса папок своей строкой между обзором дня и планом — во всю ширину, как в «Карточках» (js/screens.js, 27.10) */
html.day-flow-split .functional .flow-scroll>.zc-list-filter{margin:0 -14px 12px;width:calc(100% + 28px)}@media(max-width:350px){html.day-flow-split .functional .flow-scroll>.zc-list-filter{margin:0 -10px 12px;width:calc(100% + 20px)}}
/* включённая тема в галерее профиля: обводка цветом темы и плашка «✓ Включена» сверху слева (владелец, 27.10) */
.pr-theme-card.on>.pr-theme-tile{outline:3px solid var(--green);outline-offset:3px;border-radius:18px}
.pr-theme-on{position:absolute;z-index:4;top:8px;left:8px;display:inline-flex;align-items:center;padding:3px 9px;border-radius:99px;background:var(--green);color:var(--on-acc,#fff);font:700 11px/1.4 var(--ui);font-style:normal;pointer-events:none;box-shadow:0 2px 6px #0003}
/* «Отменить последнее изменение» — первой карточкой «Настроек», с отступом от групп ниже (js/screens.js, 27.10) */
.set-page .undocard{margin-bottom:14px}
/* подсказка Зарока «меня можно убрать с главного экрана» (js/zarok-tip.js): облачко из Зарока поверх всего, крестика нет */
.ztip-back{position:fixed;inset:0;z-index:90;background:color-mix(in srgb,#000 32%,transparent);opacity:0;transition:opacity .2s ease}
.ztip-back.in{opacity:1}
.ztip{position:fixed;max-width:min(300px,calc(100vw - 24px));padding:16px 16px 14px;border-radius:18px;background:var(--surface);color:var(--t1);box-shadow:0 10px 30px #0004;transform:scale(.6) translateY(-14px);transform-origin:var(--ztip-tail,80%) 0;opacity:0;transition:transform .32s cubic-bezier(.3,1.5,.5,1),opacity .2s ease}
.ztip-back.in .ztip{transform:none;opacity:1}
.ztip::before{content:'';position:absolute;top:-8px;left:calc(var(--ztip-tail,80%) - 9px);width:18px;height:18px;background:inherit;transform:rotate(45deg);border-radius:4px}
.ztip p{position:relative;margin:0 0 12px;font:600 16px/1.4 var(--ui)}
.ztip .ztip-go{position:relative;width:100%;min-height:44px;background:var(--green);color:var(--on-acc);border:0}
.pr-zarok-row.ztip-glow{animation:ztipGlow 1.2s ease 2}
@keyframes ztipGlow{50%{box-shadow:0 0 0 3px var(--green)}}
@media(prefers-reduced-motion:reduce){.ztip,.ztip-back{transition:none}.pr-zarok-row.ztip-glow{animation:none;box-shadow:0 0 0 3px var(--green)}}
/* линия расписания «День» и «План дня» (владелец, 29.10, образец «цепочка»): время у левого края, сразу справа от него —
   сплошная линия с точкой у каждого дела, карточки придвинуты к линии (колонка 44 px, отступ 6 px); у дел без времени — только точка.
   Внутри группы («Без времени», «По времени») линия не рвётся; между группами — разрыв */
html:not(.day-flow-concept) .timeline{grid-template-columns:44px minmax(0,1fr);column-gap:6px}
html:not(.day-flow-concept) .timeline>.tl-time{position:relative;align-items:flex-start}
html:not(.day-flow-concept) .timeline>.tl-time>i{position:absolute;top:0;bottom:-12px;left:40.25px;width:1.5px;min-height:0;background:color-mix(in srgb,var(--t3) 24%,transparent)}
html:not(.day-flow-concept) .timeline>.tl-time::after{content:'';position:absolute;top:26px;left:37px;width:8px;height:8px;border-radius:50%;background:color-mix(in srgb,var(--t3) 62%,transparent)}
html:not(.day-flow-concept) .timeline>.tl-time:first-child>i,html:not(.day-flow-concept) .timeline>.tl-group+.tl-time>i{top:26px}
html:not(.day-flow-concept) .timeline>.tl-time:nth-last-child(2)>i,html:not(.day-flow-concept) .timeline>.tl-time:has(+*+.tl-group)>i{bottom:0}
/* смайлик и картинка-мем в квадрате карточки — без подложки и рамки (владелец, 29.10); у значков-рисунков плашка остаётся */
:is(#root,.zc-dialog) .evbadge:has(> :is(.ti-e,.ti-m)){background:none!important;border-color:transparent!important;box-shadow:none!important;filter:none!important}
:is(#root,.zc-dialog) .evbadge > .ti-e .ti-emo{font-size:24px}
/* ИИ Зарок — с 16 лет (владелец 27.10.2026): Зарок посередине и тихая кнопка к листу года */
.functional .ai-age .ai-gate-head{display:flex;flex-direction:column;align-items:center;text-align:center;padding-top:10vh}
.functional .ai-age .ai-gate-head p{display:block;margin:8px auto 18px}
.functional .ai-age-pic{width:150px;height:150px;object-fit:contain;margin-bottom:10px}
.functional .ai-age-fix{border:1px solid var(--line);background:transparent;border-radius:18px;padding:12px 18px;font:600 14px/1.35 var(--ui);color:var(--t1);max-width:300px}
/* значок дела в карточке дня — в квадрате слева вместо значка категории (27.10.2026, js/taskicon.js); дорожки сетки 0..1fr —
   смайлик крупнее ячейки остаётся по центру, а не уезжает вправо и вниз (29.10) */
.functional .evbadge .ti-card{width:100%;height:100%;color:inherit;grid-template:minmax(0,1fr)/minmax(0,1fr)}.functional .evbadge .ti-card img{width:86%;height:86%}.functional .evbadge .ti-card .ti-emo{font-size:20px}
/* «Ваш прогресс» без шапки (владелец 28.10.2026): отступ под строку состояния телефона */
.pf-nohead{padding-top:calc(env(safe-area-inset-top,0px) + 14px)!important}
/* свой выбор цвета вместо системного окна (js/colorpick.js, владелец 28.10.2026) */
.cpk-scrim{position:fixed;inset:0;z-index:2147483000;background:rgba(0,0,0,.42);display:flex;align-items:flex-end;justify-content:center}
.cpk{width:100%;max-width:520px;box-sizing:border-box;background:var(--surface,#fff);color:var(--t1,#1f2a22);border-radius:24px 24px 0 0;padding:16px 16px calc(18px + env(safe-area-inset-bottom,0px));box-shadow:0 -10px 30px rgba(0,0,0,.25);font-family:var(--ui,system-ui)}
.cpk h3{margin:2px 0 14px;text-align:center;font-size:18px}
.cpk-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;margin-bottom:14px}
.cpk-sw{aspect-ratio:1;border-radius:50%;border:2px solid transparent;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);cursor:pointer;padding:0}
.cpk-sw[aria-pressed=true]{border-color:var(--t1,#1f2a22);box-shadow:inset 0 0 0 2px var(--surface,#fff)}
.cpk-row{display:grid;grid-template-columns:80px 1fr;align-items:center;gap:10px;margin:8px 0;font-size:13px;color:var(--t2,#5c6359)}
.cpk-row input{-webkit-appearance:none;appearance:none;height:14px;border-radius:9px;margin:0;width:100%}
.cpk-hue{background:linear-gradient(90deg,#f00,#ff0,#0f0,#0ff,#00f,#f0f,#f00)}
.cpk-row input::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:#fff;border:2px solid rgba(0,0,0,.25);box-shadow:0 2px 6px rgba(0,0,0,.25)}
.cpk-foot{display:flex;align-items:center;gap:10px;margin-top:16px}.cpk-prev{width:40px;height:40px;border-radius:12px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);flex:none}
.cpk-hex{flex:1;font:600 14px/1 var(--ui,system-ui);letter-spacing:.04em}
.cpk-btn{min-height:44px;padding:0 16px;border-radius:14px;border:1px solid var(--line,#d9ddd5);background:transparent;color:inherit;font:600 14px/1 var(--ui,system-ui);cursor:pointer}
.cpk-ok{background:var(--acc-2,#3f6b52);border-color:var(--acc-2,#3f6b52);color:var(--on-acc,#fff)}


/* ---- pets.css ---- */
.pet-widget-gallery{color:var(--text,#202921);padding:12px 0 20px;font-family:inherit}.pet-widget-gallery h2{font-size:27px;line-height:1.15;letter-spacing:-1px;margin:12px 0}.pet-demo-tabs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:24px}.pet-demo-tabs button{font:inherit;font-size:11px;padding:9px 11px;border-radius:20px;border:1px solid var(--line,#dce5dd);background:transparent;color:inherit;cursor:pointer}.pet-demo-tabs button[aria-pressed=true]{background:var(--acc,#4d7965);color:var(--on-acc,#fff)}.pet-widget-grid{display:grid;gap:24px}.pw-block>small{display:block;color:var(--muted,#68766c);font-size:9px;letter-spacing:1.6px;margin:0 0 8px 4px}.pw{position:relative;border-radius:25px;overflow:hidden;background:var(--surface,#fff);border:1px solid var(--line,#dce5dd);min-width:0;padding:22px}.pw>.pw-art{position:absolute;right:16px;bottom:0}.pw-top{display:block;font-size:10px;font-weight:700;letter-spacing:1.3px;position:relative;z-index:2}.pw-next{min-height:190px;padding-right:128px}.pw-time{font-size:36px;letter-spacing:-1.5px;display:block;margin:19px 0 7px;font-weight:500}.pw-title{display:block;font-size:17px;line-height:1.2;position:relative;z-index:2;letter-spacing:-.4px}.pw-note{display:block;font-size:10px;line-height:1.5;color:var(--muted,#68766c);margin-top:7px;position:relative;z-index:2}.pw-cta{display:inline-block;font-size:10px;border-bottom:1px solid currentColor;padding-bottom:4px;margin-top:16px;position:relative;z-index:2}.pw-progress{min-height:190px;padding-right:128px}.pw-progress .pw-title{margin-top:12px;font-size:14px}.pw-number{font-size:49px;line-height:1;margin-top:28px;letter-spacing:-2px}.pw-number small{font-size:19px;letter-spacing:-.5px;color:var(--muted,#68766c)}.pw-track{height:4px;margin-top:17px;background:var(--line,#dce5dd);border-radius:4px;overflow:hidden}.pw-track i{height:100%;display:block;background:var(--acc,#4d7965)}.pw-list-top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px}.pw-list-top>.pw-art{position:relative;right:auto;bottom:auto}.pw-list-head{display:grid;gap:5px}.pw-list-head .pw-top{margin-bottom:8px}.pw-list-head>b{font-size:29px;letter-spacing:-1px}.pw-list-head>span{font-size:11px;color:var(--muted,#68766c)}.pw-row{display:flex;gap:10px;align-items:center;padding:13px 0;border-top:1px solid var(--line,#dce5dd)}.pw-row>span{font-size:9px;color:var(--muted,#68766c)}.pw-row b{font-size:12px;flex:1}.pw-row i{width:18px;height:18px;border:1px solid var(--muted,#68766c);border-radius:6px;font-size:12px;text-align:center;font-style:normal}.pw-return{min-height:170px;padding-right:128px;display:grid;align-content:center}.pw-return .pw-title{margin-top:12px}.pw-strip{display:flex;gap:12px;align-items:center;padding:14px 18px}.pw-strip>div{display:grid;gap:6px;flex:1}.pw-strip b{font-size:14px}.pw-strip>.pw-art{position:relative;right:auto;bottom:auto}.pet-demo-tabs button:focus-visible{outline:3px solid var(--acc,#4d7965);outline-offset:3px}
.pet-widget-gallery,.dlg-check,.pet-actor,.pa-preview{--text:var(--t1,#202a25);--muted:var(--t3,#68776e);--acc:var(--green,#3e6653)}
/* Зарок: один компонент показа (js/zork.js). Квадрат, фигура стоит на нижнем краю, по ширине посередине;
   ширину квадрата, --zw и --zb (срез прозрачных полей набора и поправка размера) задаёт компонент. */
.zork{display:inline-block;position:relative;aspect-ratio:1;overflow:hidden;flex-shrink:0;vertical-align:bottom;max-width:100%}
.zork>img{position:absolute;left:50%;bottom:var(--zb,0);width:var(--zw,100%);height:var(--zw,100%);max-width:none;transform:translateX(-50%);user-select:none;-webkit-user-drag:none;pointer-events:none}
/* выбор формы и выключатель реакций в галерее виджетов */



.zork-forms{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-bottom:8px}
.zork-form{display:grid;justify-items:center;gap:1px;min-width:0;padding:8px 2px 9px;border:1px solid transparent;border-radius:16px;background:transparent;color:var(--t1);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.zork-form b{font:600 12px var(--ui);margin-top:5px}
.zork-form small{font-size:10px;color:var(--t3)}
.zork-form.on{border-color:var(--green);background:var(--fill,#f1f4f1);box-shadow:0 0 0 1px var(--green)}
.zork-form:focus-visible{outline:3px solid var(--acc,#4d7965);outline-offset:2px}

.pet-carousel{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none}.pet-carousel::-webkit-scrollbar{display:none}.pet-slide{flex:0 0 100%;min-width:0;scroll-snap-align:start;scroll-snap-stop:always}.pet-slide>h3{font-size:21px;margin:0 0 6px}.pet-slide>p{font-size:13px;color:var(--t3);margin:0 0 22px}.pet-carousel-dots{display:flex;justify-content:center;position:sticky;bottom:0;gap:2px;background:var(--bg);padding:8px;border-radius:22px}.pet-carousel-dots button{width:40px;height:38px;border:0;background:transparent;display:grid;place-items:center}.pet-carousel-dots i{width:7px;height:7px;background:var(--t3);opacity:.35;border-radius:50%;transition:width .2s}.pet-carousel-dots [aria-current="true"] i{width:23px;background:var(--acc);opacity:1}.pet-pin{margin-top:12px;min-height:44px;border:1px solid var(--line);border-radius:14px;padding:10px 16px;background:var(--fill);color:var(--t1);font:600 12px var(--ui)}.pet-section-widgets{margin-top:24px}.pet-section-widgets p{color:var(--t3);font-size:12px;line-height:1.6}.pet-section-widgets>div{display:flex;align-items:center;gap:12px;justify-content:space-between;font-size:13px;padding:8px 0;border-bottom:1px solid var(--line)}.pet-section-widgets .pet-pin{flex-shrink:0;margin:0;font-size:11px;padding:8px}
/* Shared lightweight reactions: same contract for images and atlas pets. */
.dlg-check{display:flex;align-items:flex-start;gap:10px;text-align:left;font-size:13px;line-height:1.5;margin:18px 0;color:var(--t2)}.dlg-check input{width:20px;height:20px;flex-shrink:0;accent-color:var(--acc);margin:0}
.companion-art{position:relative;display:inline-block;width:48px;height:48px;flex-shrink:0}.companion-image{transform-origin:50% 85%}.companion-art>i{position:absolute;right:-4px;top:-3px;background:var(--acc);color:var(--on-acc,#fff);border-radius:50%;min-width:20px;height:20px;display:grid;place-items:center;font:600 12px var(--ui);box-shadow:0 2px 8px #0002}.mood-thinking .companion-image,.mood-confused .companion-image{animation:pet-think 1.8s ease-in-out 3}.mood-typing>i{animation:pet-pulse 1.3s ease-in-out 4}.mood-happy .companion-image,.mood-answer .companion-image,.mood-complete .companion-image,.mood-streak .companion-image{animation:pet-hop .8s ease-in-out 2}.mood-sad .companion-image{transform:rotate(-7deg) translateY(3px)}.mood-welcome .companion-image,.mood-peek .companion-image{animation:pet-peek 1.8s ease-in-out 2}
@keyframes pet-think{0%,100%{transform:rotate(0)}45%,65%{transform:rotate(-9deg) translateY(-2px)}}@keyframes pet-pulse{50%{opacity:.5;transform:scale(.88)}}@keyframes pet-hop{0%,100%{transform:translateY(0)}45%{transform:translateY(-7px) rotate(4deg)}70%{transform:translateY(0) scale(1.03,.97)}}@keyframes pet-peek{0%,100%{transform:rotate(0)}45%{transform:translateX(4px) rotate(9deg)}}@keyframes pet-appear{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.companion-art .companion-image,.companion-art>i{animation:none!important;transform:none!important}}
.widget-family{margin:28px 0 38px;min-width:0}.widget-family>h3{font-size:16px;margin:0 0 6px}.widget-family>p{font-size:12px;line-height:1.6;color:var(--t3);margin:0 0 16px;max-width:340px}.widget-family .pet-carousel-dots{position:static;padding:0;background:none}.widget-family>.pet-pin{display:block;margin:5px auto 0}.widget-family .pet-slide{padding:0 2px}.widget-variant-label{text-align:center;font-size:12px;font-weight:600;margin:14px 0 5px}.widget-variant-label small{display:block;font-size:10px;font-weight:400;color:var(--t3);margin-top:5px}.widget-family .pw{max-width:100%}
.widget-skin-row{display:flex;gap:7px;overflow-x:auto;padding:2px 2px 7px;scrollbar-width:thin}.widget-skin{flex:none;display:flex;align-items:center;gap:6px;border:1px solid var(--line,#dce5dd);border-radius:30px;padding:7px 10px;background:var(--fill,#f1f4f1);color:var(--t1);font:600 10px var(--ui)}.widget-skin.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}.widget-skin small{font-size:8px;color:#a98248}.widget-skin-dot{width:15px;height:15px;display:block;border-radius:50%;background:linear-gradient(135deg,#f7f8f6 50%,#263e32 50%);box-shadow:inset 0 1px 1px #ffffff80}.skin-obsidian{background:linear-gradient(135deg,#0d120f,#618957 55%,#d0e9a1)}.skin-porcelain{background:linear-gradient(135deg,#fffef9,#d9e5d0 65%,#567747)}.skin-cobalt{background:linear-gradient(135deg,#0c172b,#346391 60%,#b3d9ff)}.skin-copper{background:linear-gradient(135deg,#201619,#875443 60%,#f5c5a1)}
.pet-widget-gallery[data-widget-skin=obsidian]{--pw-bg:#1c211b;--pw-fill:#283122;--pw-text:#eef2e8;--pw-muted:#b7c0ae;--pw-line:#35422f;--pw-ac:#c8e99d}.pet-widget-gallery[data-widget-skin=porcelain]{--pw-bg:#fdfcf7;--pw-fill:#e4e8d9;--pw-text:#252c22;--pw-muted:#69725e;--pw-line:#d6ddce;--pw-ac:#586b3d}.pet-widget-gallery[data-widget-skin=cobalt]{--pw-bg:#172843;--pw-fill:#223958;--pw-text:#eef4ff;--pw-muted:#b4c6e2;--pw-line:#395575;--pw-ac:#a4cefa}.pet-widget-gallery[data-widget-skin=copper]{--pw-bg:#34272c;--pw-fill:#443037;--pw-text:#f7ede5;--pw-muted:#d1bdb1;--pw-line:#624850;--pw-ac:#e6ae84}
.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw{background:linear-gradient(140deg,#ffffff14,transparent 45%),var(--pw-bg);color:var(--pw-text);border-color:var(--pw-line);box-shadow:inset 0 1px 0 #ffffff22,0 12px 22px #00000019}.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-note,.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-number small,.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-list-head>span,.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-row>span{color:var(--pw-muted)}.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-row{border-color:var(--pw-line)}.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-track{background:var(--pw-fill,var(--line))}.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-track i{background:var(--pw-ac,var(--acc))}
.widget-look-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.widget-look{display:grid;gap:4px;min-width:0;padding:8px 8px 10px;border:1px solid var(--line,#dce5dd);border-radius:18px;background:var(--fill,#f1f4f1);color:var(--t1);text-align:left;font:600 13px var(--ui)}.widget-look img{display:block;width:100%;height:auto;aspect-ratio:320/173;border-radius:12px;margin-bottom:4px;background:var(--line,#dce5dd)}.widget-look b{font-weight:600;padding:0 2px}.widget-look b small{font-size:9px;font-weight:600;color:#a98248}.widget-look.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}.widget-look:disabled{opacity:1}
.pet-rig-note{font-size:12px;line-height:1.6;color:var(--t3)}

/* «Зарок на экране» (по мотивам ассистента Omni у ROG): питомец выбегает к краю экрана,
   по нажатию — быстрые действия. Касания мимо питомца проходят в приложение. */
.pet-actor{position:absolute;right:10px;z-index:74;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none;max-width:calc(100% - 20px)}
.pa-pet{pointer-events:auto;border:0;background:none;padding:0;margin:0;cursor:pointer;display:block;transform:translateX(140%);-webkit-tap-highlight-color:transparent}
.pa-pet .zork{display:block;filter:drop-shadow(0 8px 10px rgba(20,30,24,.28));transform-origin:50% 100%}
.pet-actor.in .pa-pet{animation:pa-run-in .9s cubic-bezier(.2,.8,.25,1) forwards}
.pet-actor.in .pa-pet .zork{animation:pa-hop .3s ease-in-out 3,pa-idle 3.2s ease-in-out .9s infinite}
.pet-actor.out .pa-pet{transform:none;animation:pa-run-out .8s ease-in forwards}
.pet-actor.out .pa-pet .zork{animation:pa-hop .28s ease-in-out 3}
.pa-bubble{pointer-events:auto;max-width:230px;padding:10px 13px;border-radius:16px 16px 4px 16px;background:var(--surface,#fff);color:var(--t1,#202a25);border:1px solid var(--line,#dce5dd);box-shadow:0 8px 24px rgba(20,30,24,.16);font:500 13px/1.45 var(--ui);opacity:0;transform:translateY(6px)}
.pet-actor.in .pa-bubble{animation:pa-pop .35s ease-out .75s forwards}
.pet-actor.open .pa-bubble,.pet-actor.out .pa-bubble{display:none}
.pa-menu{pointer-events:auto;display:grid;gap:2px;min-width:220px;max-width:260px;padding:8px;border-radius:18px;background:var(--surface,#fff);border:1px solid var(--line,#dce5dd);box-shadow:0 12px 32px rgba(20,30,24,.2);animation:pa-pop .22s ease-out both}
.pa-menu button{display:grid;gap:2px;text-align:left;min-height:42px;padding:9px 12px;border:0;border-radius:12px;background:transparent;color:var(--t1,#202a25);font:600 14px var(--ui);cursor:pointer}
.pa-menu button:active{background:var(--fill,#eef2ee)}
.pa-menu button small{font:700 10px var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--acc)}
.pa-menu button b{font:600 14px var(--ui)}
.pa-menu .pa-bye{color:var(--t3,#68776e);font-weight:500}
.pa-done{padding:10px 12px;font:500 13px var(--ui);color:var(--t3,#68776e)}
@keyframes pa-run-in{from{transform:translateX(140%)}to{transform:translateX(0)}}
@keyframes pa-run-out{from{transform:translateX(0)}to{transform:translateX(150%)}}
@keyframes pa-hop{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-12px) rotate(-5deg)}}
@keyframes pa-idle{0%,100%{transform:scale(1,1)}50%{transform:scale(1.02,.975)}}
@keyframes pa-pop{from{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:none}}
/* без анимации: просто появляется и исчезает */
.pet-actor.still .pa-pet{transform:none;opacity:0;transition:opacity .25s}
.pet-actor.still.in .pa-pet{opacity:1;animation:none}
.pet-actor.still .pa-pet .zork,.pet-actor.still .pa-menu{animation:none!important}
.pet-actor.still.in .pa-bubble{animation:none;opacity:1;transform:none}
.pet-actor.still.out .pa-pet{animation:none;opacity:0}
@media(prefers-reduced-motion:reduce){.pa-pet .zork,.pa-menu,.pa-bubble{animation:none!important}}
.pa-preview{display:flex;align-items:center;gap:16px;margin:12px 0 18px;padding:14px 16px;border-radius:20px;background:var(--fill,#f1f4f1)}
.pa-preview .zork{filter:drop-shadow(0 6px 8px rgba(20,30,24,.22))}
.pa-preview .btn{flex:1}

/* Примеры виджетов в галерее — как сами виджеты с 1.0.17 (сборка 30): подпись заглавными, счёт жирным
   с тонким «/ 3», время жирным, за фигурой — мягкое свечение цвета формы. */
.pw-top{text-transform:uppercase}
.pw-number{font-weight:700}.pw-number small{font-weight:300}
.pw-time{font-weight:700}
/* без круглой подложки за Зароком: он стоит на нижнем крае карточки (правило владельца 18.10, data-zstand в js/pet.js fig) */

/* Виджет помощника: поле с подсказкой и микрофоном, ниже — четыре быстрых начала сообщения. */
.pw-ai{display:grid;gap:10px;padding:13px}
.pw-ai-field{display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 7px 6px 16px;border-radius:30px;background:var(--fill,#f1f4f1);color:var(--t2);font-size:13.5px;line-height:1.25}
.pw-ai-field>svg{flex:none;width:20px;height:20px;color:var(--acc,#4d7965)}
.pw-ai-field>span{flex:1;min-width:0}
.pw-ai-field>i{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--acc,#4d7965);color:var(--on-acc,#fff)}
.pw-ai-field>i svg{width:20px;height:20px}
.pw-ai-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.pw-ai-tiles b{display:grid;justify-items:center;gap:6px;padding:15px 2px 13px;border-radius:14px;background:var(--fill,#f1f4f1);color:var(--t2);font-size:10.5px;font-weight:600;white-space:nowrap}
.pw-ai-tiles svg{width:22px;height:22px;color:var(--acc,#4d7965)}
.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-ai-field,.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-ai-tiles b{background:var(--pw-fill);color:var(--pw-muted)}
.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-ai-field>svg,.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-ai-tiles svg{color:var(--pw-ac)}
.pet-widget-gallery[data-widget-skin]:not([data-widget-skin=follow]) .pw-ai-field>i{background:var(--pw-ac);color:var(--pw-bg)}
.pet-pin-note{margin:8px 0 0;text-align:center;font-size:11px;color:var(--t3)}
.sky-dawn{--sky1:#f8d5c8;--sky2:#fdf0e6;--hill1:#c9d7af;--hill2:#a6c390;--orb:#ffb36e}
.sky-night{--sky1:#1d2645;--sky2:#394576;--hill1:#2c4741;--hill2:#223a33;--orb:#f5efd6}
/* виджет «Ближайший шаг», день закрыт: подписи нет, заголовок словами — крупно, в одну или две строки */
.pw-closed{display:flex;flex-direction:column;justify-content:center}
.pw-closed .pw-time{margin:0 0 7px;line-height:1.05}
.pw-closed .pw-time.pw-two{font-size:27px;letter-spacing:-.9px;line-height:1.1}

/* Нарисованная сцена на примерах виджетов 4 × 2 — как на самих виджетах с 1.0.20 (сборка 34): картина с Зарком
   на время суток вместо цвета темы (и вместо глянцевой коллекции), своей фигуры нет, текст — цветами сцены,
   на закате под текстом светлая дымка. Чёрно-белым темам картина обесцвечивается. Выключены «Фоновые
   изображения и декор» — пример прежний: фигура на цвете темы. Цвета — те же, что в WidgetArt.java.
   Под картиной — цвет в тон времени суток: пока она грузится, текст уже читается. */
html:not(.plain) .pet-widget-gallery .pw.pw-scene{background:var(--scene) right center/cover no-repeat #dbe6df;border-color:transparent;box-shadow:none;padding-right:calc(56% + 8px);color:#1e2823;--ps3:#47534c;--psa:#3f7a5c;--pst:#2c5a45;--psm:#8d9a9266}
html:not(.plain) .pet-widget-gallery .pw.pw-scene.scene-sunset{background-color:#e6c3ad;color:#2b1d1f;--ps3:#4a3938;--psa:#8a4529;--pst:#6b3826;--psm:#a08a7e66}
html:not(.plain) .pet-widget-gallery .pw.pw-scene.scene-night{background-color:#152030;color:#fff;--ps3:#b9c4d6;--psa:#8fc7a8;--pst:#a9d3bd;--psm:#7f8ea366}
html:not(.plain) .pw-scene.scene-sunset::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#f4dfcf80 0 37%,#f4dfcf00 56%);pointer-events:none}
html:not(.plain) .pw-scene>*{position:relative;z-index:1}
html:not(.plain) .pet-widget-gallery .pw-scene .pw-top{color:var(--pst)}
html:not(.plain) .pet-widget-gallery .pw-scene .pw-note,html:not(.plain) .pet-widget-gallery .pw-scene .pw-number small{color:var(--ps3)}
html:not(.plain) .pet-widget-gallery .pw-scene .pw-track{background:var(--psm)}
html:not(.plain) .pet-widget-gallery .pw-scene .pw-track i{background:var(--psa)}
html:not(.plain)[data-theme="bw"] .pw-scene,html:not(.plain)[data-theme="bwdark"] .pw-scene{filter:grayscale(1)}
/* Полоска 4 × 1 и карточка 2 × 2 на картинах. Место для текста (--zone) — как на виджете: общее для четырёх
   времён суток формы; под текстом дымка в тон времени суток (--haze), к Зарку она сходит на нет. */
html:not(.plain) .pet-widget-gallery .pw.pw-strip.pw-scene{aspect-ratio:313/76;border:0;padding:0 calc(100% - var(--zone) + 14px) 0 18px;--haze:#ffffff52}
html:not(.plain) .pet-widget-gallery .pw.pw-strip.pw-scene.scene-sunset{--haze:#f4dfcf66}
html:not(.plain) .pet-widget-gallery .pw.pw-strip.pw-scene.scene-night{--haze:#0b131f52}
html:not(.plain) .pw-strip.pw-scene::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--haze) 0,var(--haze) calc(var(--zone) - 18%),transparent var(--zone));pointer-events:none}
/* Коллекции Plus при «Как в приложении» (замечание владельца 2026-10-05: «УТРО» тёмно-зелёное на почти чёрном). luxe.css красит
   там все карточки .pw, кроме .pw-pet и .pw-return, плашкой материала — она ложится поверх картины, а подписи, «/ 5», дорожка
   и дымка сцены остаются цветами светлой картины. У таких карточек плашка и цвета заданы вместе. Тёмные материалы: подписи,
   пояснения, дорожка и заливка — цветами материала (--pw-*), дымки нет. Светлые (Фарфор, Инь): днём цвета сцены на светлой
   плашке читаются и остаются, ночью они светлые — берутся дневные. Исключения — как в luxe.css; если luxe.css начнёт оставлять
   картину и на этих карточках, эти правила убрать. */
html:not(.plain)[data-luxe]:not([data-theme=porcelain]):not([data-theme=yin]) .functional .pet-widget-gallery[data-widget-skin=follow] .pw.pw-scene:not(.pw-pet):not(.pw-return){background:var(--lx-stage,var(--surface));color:var(--pw-text,var(--t1));--pst:var(--pw-ac,var(--green));--ps3:var(--pw-muted,var(--t3));--psa:var(--pw-ac,var(--green));--psm:var(--pw-line,var(--line))}
html:not(.plain)[data-luxe]:is([data-theme=porcelain],[data-theme=yin]) .functional .pet-widget-gallery[data-widget-skin=follow] .pw.pw-scene.scene-night:not(.pw-pet):not(.pw-return){background:var(--lx-stage,var(--surface));color:var(--pw-text,var(--t1));--pst:#2c5a45;--ps3:#47534c;--psa:#3f7a5c;--psm:#8d9a9266}
html:not(.plain)[data-luxe]:not([data-theme=porcelain]):not([data-theme=yin]) .functional .pet-widget-gallery[data-widget-skin=follow] .pw.pw-scene:not(.pw-pet):not(.pw-return)::before,html:not(.plain)[data-luxe]:is([data-theme=porcelain],[data-theme=yin]) .functional .pet-widget-gallery[data-widget-skin=follow] .pw.pw-scene.scene-night:not(.pw-pet):not(.pw-return)::before{content:none}
/* строки «Отдельных разделов» и «Зарока на отказ»: название, превью, кнопка друг под другом; платная — с пояснением под кнопкой */
.pet-section-widgets>h3{margin:30px 0 4px;font-size:16px}.pet-section-widgets>h3:first-child{margin-top:0}
.pet-section-widgets>.widget-row{display:block;padding:0;border:0;margin:0 0 34px}
.widget-row-head b{display:block;font-size:15px;font-weight:600;line-height:1.3;letter-spacing:-.2px}
.widget-row-head small{display:block;margin-top:4px;font-size:12px;line-height:1.55;color:var(--t3)}
.widget-row .pw{margin:14px 0 0;max-width:100%}
.pet-section-widgets .widget-row>.pet-pin{display:block;width:100%;margin:12px 0 0;padding:11px 16px;font-size:13px}
.widget-row .pet-pin-note{margin:8px 0 0;font-size:11.5px;line-height:1.5;text-align:center}
.pw-mini .pw-list-head>b{font-size:25px}.pw-mini .pw-row{padding:10px 0}.pw-mini .pw-row>span{min-width:34px}
.pw-cal{padding:18px 18px 14px}.pw-cal-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}.pw-cal-head b{font-size:17px;letter-spacing:-.4px}.pw-cal-head span{font-size:11px;opacity:.6}
.pw-cal-week,.pw-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}.pw-cal-week span{font-size:9px;font-weight:700;letter-spacing:.8px;opacity:.55;padding-bottom:6px}
.pw-cal-grid{gap:3px 0}.pw-cal-grid i{font-style:normal;font-size:11px;line-height:26px;position:relative;border-radius:9px}.pw-cal-grid i.on{background:var(--acc,#4d7965);color:var(--on-acc,#fff);font-weight:700}.pw-cal-grid i.dot::after{content:"";position:absolute;left:50%;bottom:1px;width:3px;height:3px;margin-left:-1.5px;border-radius:50%;background:var(--acc,#4d7965)}
.pw-quit .pw-time,.pw-date .pw-time{font-size:34px}

/* пошаговые строки галереи: «1 — создайте, 2 — добавьте виджет» (курсы, питание, зарок на отказ) */
.widget-steps{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:10px}
.widget-step{display:grid;grid-template-columns:26px 1fr;gap:6px 10px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:16px;background:var(--surface,transparent)}
.widget-step-n{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--acc-bg,rgba(127,127,127,.18));color:var(--acc,currentColor);font-style:normal;font-size:12.5px;font-weight:700}
.widget-step.done .widget-step-n{background:var(--acc,#4d7965);color:var(--on-acc,#fff)}
.widget-step-t{font-size:13px;line-height:1.45}
.widget-step .pet-pin{grid-column:2;justify-self:start;display:inline-block;width:auto;margin:2px 0 0;padding:9px 16px;font-size:13px;white-space:normal}
.widget-step .pet-pin.ghost{background:transparent;border:1px solid var(--line);color:inherit}
.widget-step .pet-pin-note{grid-column:2;margin:4px 0 0;font-size:11.5px;text-align:left}

.widget-filters{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 6px}.widget-filter{padding:8px 14px;border-radius:999px;border:1px solid var(--line,#dce5dd);background:var(--surface,#fff);color:var(--t1,#1d2620);font:600 13px/1 var(--ui,system-ui)}.widget-filter.on{background:var(--green,#3f6b52);border-color:transparent;color:#fff}

.widget-group{margin-top:22px}.widget-group>h2,.widget-group-title{font-size:19px;margin:0 0 6px}.widget-group>h2 small{font-size:13px;opacity:.7}.widget-free-fold{margin-top:26px;border-top:1px solid var(--line,#dce5dd);padding-top:12px}.widget-free-fold>summary{cursor:pointer;font:700 17px/1.3 var(--ui,system-ui);padding:6px 0;list-style:none}.widget-free-fold>summary::before{content:'›';display:inline-block;margin-right:8px;transition:transform .2s}.widget-free-fold[open]>summary::before{transform:rotate(90deg)}

/* ---- галерея сеткой: плитки с превью, название под ним, Plus в углу; страница виджета вместо длинной ленты ---- */
.wg-group{margin:26px 0 0}.wg-group>h3{font-size:17px;margin:0 0 4px;letter-spacing:-.2px}.wg-group>p{font-size:12px;line-height:1.5;color:var(--t3);margin:0 0 14px}
.wg-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px}
@media (min-width:620px){.wg-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.wg-pv{display:block;position:relative;height:150px;overflow:hidden;border-radius:18px;background:var(--fill,#f0f3ef);border:1px solid var(--line,#e2e7e1);transition:transform .12s ease}
.wg-pv-in{zoom:.5;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:18px;box-sizing:border-box;pointer-events:none}
.wg-pv-in>*{margin:0!important;flex:0 1 auto;max-width:100%;max-height:100%;overflow:hidden}
.pw-add{display:flex;align-items:center;gap:12px;padding:14px 16px;min-height:64px}.pw-add i{flex:none;width:44px;height:44px;border-radius:50%;background:var(--accent,#3f6b52);color:var(--on-accent,#fff);font:400 30px/42px system-ui,sans-serif;text-align:center;font-style:normal}.pw-add b{font-size:16px;font-weight:600;overflow-wrap:anywhere}
.pw-moon{display:grid;justify-items:center;gap:3px;padding:14px 10px;background:linear-gradient(#0e1a33,#2b3c66);color:#fff;text-align:center}.pw-moon-disc{width:58px;height:58px;border-radius:50%;background:radial-gradient(circle at 62% 40%,#f3eedf,#cfc9b8);box-shadow:inset 24px 0 0 -3px #0000,0 0 18px 4px #fff3d822;position:relative;overflow:hidden;margin-bottom:4px}.pw-moon-disc:before{content:'';position:absolute;inset:0;background:#1b2745;border-radius:50%;transform:translateX(-36%)}.pw-moon b{font:700 12px/1.3 var(--ui);text-shadow:0 1px 3px #0009}.pw-moon span{font:500 11px/1.3 var(--ui);opacity:.85;text-shadow:0 1px 3px #0009}
.pw-ahead .pw-day{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:8px 0 2px;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;opacity:.75}.pw-ahead .pw-day em{font-style:normal;font-weight:500;letter-spacing:0}
.pw-habits .pw-hrow{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid var(--line,rgba(0,0,0,.08))}.pw-habits .pw-hrow b{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pw-habits .pw-hrow span{display:flex;gap:4px;flex:none}.pw-habits .pw-hrow i{width:11px;height:11px;border-radius:50%;box-sizing:border-box;border:1.3px solid var(--muted,#8a968e)}.pw-habits .pw-hrow i.pw-hd{background:var(--acc,#3f6b52);border-color:var(--acc,#3f6b52)}.pw-habits .pw-hrow i.pw-hn{border:0;border-radius:0;height:1.3px;width:7px;margin:5px 2px;background:var(--muted,#8a968e)}
.pw-totals .pw-bars{display:flex;align-items:stretch;gap:6px;height:54px;margin-top:8px}.pw-totals .pw-bars i{flex:1;position:relative;border-radius:99px;background:var(--line,rgba(0,0,0,.08))}.pw-totals .pw-bars em{position:absolute;left:0;right:0;bottom:0;border-radius:99px;background:var(--acc,#3f6b52);opacity:.7}.pw-totals .pw-bars i.on em{opacity:1}
.wg-pv-in>.pw-moon,.wg-pv-in>.pw-add,.wg-pv-in>.pw-list,.wg-pv-in>.pw-cal,.wg-pv-in>.widget-beta-preview,.wg-pv-in>.widget-stats-preview,.wg-pv-in>.pw-ai,.wg-pv-in>.pw-next,.wg-pv-in>.pw-progress,.wg-pv-in>.pw-return,.wg-pv-in>.pw-strip{width:100%}
.pet-widget-gallery[data-wg-open]>.wg-head,.pet-widget-gallery[data-wg-open]>.wg-grids{display:none}
.wg-group:first-child{margin-top:14px}
.wg-page[hidden]{display:none}
.wg-back{display:inline-flex;align-items:center;min-height:44px;margin:0 0 6px -4px;padding:0 10px 0 4px;border:0;background:none;color:var(--acc,#3e6653);font:inherit;font-size:14px;font-weight:600;cursor:pointer}

.pet-widget-gallery>.wg-head:empty{display:none}.pet-widget-gallery .wg-group:first-child{margin-top:4px}

/* заголовок первой группы виджетов ближе к шапке окна (владелец, 10 октября 2026) */
.pet-widget-gallery{padding-top:0}.pet-widget-gallery .wg-group:first-child{margin-top:0}

/* Светлая тема «Мемы»: акцент темы — лайм, и на светлой подложке макета он не читается (1,3:1). Как на настоящих виджетах
   (правило сборщика): акцент на подложке — читаемый оливковый той же темы, не ниже 3,3:1; лайм остаётся только заливкой
   под тёмным значком (кнопка микрофона, выбранный день). Действует, пока виджеты идут «как в приложении». */
html[data-theme="meme"] .pet-widget-gallery[data-widget-skin=follow] .pw :is(.pw-ai-field>svg,.pw-ai-tiles svg){color:var(--green-tx,#3d5314)}
html[data-theme="meme"] .pet-widget-gallery[data-widget-skin=follow] .pw .pw-hd{background:var(--green-tx,#3d5314);border-color:var(--green-tx,#3d5314)}
/* тёмная классическая тема: акцент на тёмной подложке макета — 2,8–3,0:1, берём тот же читаемый цвет текста акцента */
html[data-theme="dark"] .pet-widget-gallery[data-widget-skin=follow] .pw :is(.pw-ai-field>svg,.pw-ai-tiles svg){color:var(--green-tx,#8fc7ab)}
html[data-theme="dark"] .pet-widget-gallery[data-widget-skin=follow] .pw :is(.pw-hd,.pw-bars em){background:var(--green-tx,#8fc7ab);border-color:var(--green-tx,#8fc7ab)}

/* Спокойные сцены и лица Зарока (картинки Codex v6, js/zcalm.js) */
.lx-pet.zb-scene{object-fit:contain;object-position:bottom}
.zb-focus{display:block;margin:6px auto -4px;width:auto;height:auto;max-width:150px;max-height:120px;object-fit:contain;pointer-events:none}
.zb-face{display:inline-block;position:relative;flex:none;overflow:visible;line-height:0}
.zb-face>img{display:block;width:100%;height:100%;object-fit:contain;object-position:bottom}
.zb-face .zb-hand{position:absolute;right:-8%;bottom:-6%;width:44%;height:44%}
.zb-chat-row{display:flex;padding:2px 14px 0;margin:-2px 0 0}
.zb-chat{width:44px;height:44px;filter:drop-shadow(0 2px 3px #0002)}
.rv-zarok.rv-bust{height:88px}
.zb-stamp{position:fixed;left:50%;z-index:120;width:124px;height:124px;margin:-62px 0 0 -62px;transform:rotate(-7deg);animation:zb-stamp-hit .42s cubic-bezier(.2,.9,.3,1) both,zb-stamp-out .4s ease-in 2s forwards;--zb-ink:#c8372d}
.zb-stamp-svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 6px 10px #0003)}
.zb-stamp .zb-paper{fill:var(--surface,#fff);fill-opacity:.9}
.zb-stamp .zb-ink{fill:var(--zb-ink);stroke:var(--zb-ink)}
.zb-stamp .zb-ink path,.zb-stamp .zb-ink text{stroke:none}
.zb-stamp text{font:900 30px/1 var(--ui,sans-serif);letter-spacing:.04em}
@keyframes zb-stamp-hit{0%{opacity:0;transform:rotate(-7deg) scale(1.7)}55%{opacity:1;transform:rotate(-7deg) scale(.96)}100%{opacity:1;transform:rotate(-7deg) scale(1)}}
@keyframes zb-stamp-out{to{opacity:0}}
@media(prefers-reduced-motion:reduce){.zb-stamp{animation:zb-stamp-out .4s ease-in 2s forwards}}
/* Зарок-спутник в блоке дня (js/pet.js dayArt / inHtml, правка владельца 24.10): стоит ВНУТРИ блока справа. Обёртка .zb-in — нижний
   край на линии опоры, высота — сколько Зарока видно над линией; картинка выше в --zk раз, что ниже линии (лапы, ноги), уходит за неё.
   Положение absolute: высота и отступы блока не меняются; текст, кольцо и кнопки не закрываются. Широкие прежние сцены (лист)
   ужимаются по ширине места (--zmax), низ рисунка остаётся на линии.
   Plus: на полосе прогресса, низ рисунка ровно на верхе полосы, без захода вниз (обёртка в .lx-hero-foot, высота --zv). Обычные темы: на нижнем крае табло и итога дня, лапы и ноги
   свешиваются за край — в пустой правый край ряда «Папки». */
.zb-in{position:absolute;z-index:2;pointer-events:none}
.zb-in>img{position:absolute;right:0;bottom:calc((1 - var(--zk,1)) * 100%);height:calc(var(--zk,1) * 100%);width:auto;max-width:var(--zmax,180px);object-fit:contain;object-position:right bottom;filter:drop-shadow(0 5px 6px rgba(28,38,30,.16));user-select:none;-webkit-user-drag:none}
.zb-in-plus{right:-10px;bottom:100%;height:var(--zv,120px);width:calc(var(--zv,120px) * var(--zr,1))}
.lx-hero.has-zin h2{max-width:64%}
.lx-hero.has-zin .lx-next{max-width:60%}
.functional :is(.dboard,.daydone).has-zin{position:relative;overflow:visible}
.zb-in-board{--zmax:106px;right:8px;bottom:0;width:106px;height:min(calc(100% - 6px),calc(106px / var(--zr,1)))}
.functional .dboard.has-zin .dboard-copy{min-width:0;flex:1 1 auto;margin-right:98px}
.daydone.has-zin>:is(h2,p,.daydone-score,.daydone-eyebrow){max-width:calc(100% - 104px)}
/* один Зарок на экране: при карточке «Вернуть серию» или приглашении оценить спутника нет */
#dayscroll:has(.ss-art,.rv-zarok) .zb-in{display:none}
@media(prefers-reduced-motion:no-preference){.zb-in>img{animation:zb-in-in .5s cubic-bezier(.2,.8,.25,1) both}}
/* та же поза после перерисовки экрана (js/app.js picsPut): без повторного появления — иначе Зарок мигал (владелец, 27.10) */
.zb-in[data-kept]>img,img.lx-pet[data-kept]{animation:none!important}
@keyframes zb-in-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.zork.zb-pose>img{width:auto;height:auto;max-width:100%;max-height:100%;bottom:0}
/* шапка чата с Зароком-спутником (js/screens.js aiHead): фигура вместо знака, кнопка «⋯» и подписи те же */
.ai-head.mark-pet{--acc:var(--green,#3e6653)}
.ai-head.mark-pet .ai-ava{background:none;border-radius:14px;width:50px;height:50px}
.ai-head.mark-pet.thinking .ai-ava{outline:0}
.ai-head.mark-pet.offline .companion-art{opacity:.55;filter:grayscale(.5)}
@media (prefers-reduced-motion:no-preference){.ai-head.mark-pet .ai-ava.wink .companion-image{animation:pet-hop .8s ease-in-out 1}}

/* Общий параметр «опоры»: на сколько фигурка уходит за линию, на которой стоит (полоса прогресса, нижний край блока) */
:root{--zb-sink:2px}
.lx-pet.zb-scene{translate:0 0}

.zb-like{display:inline-block;width:auto;height:1.15em;vertical-align:-.22em;margin-left:3px;pointer-events:none}
/* Реклама, этап B (js/ads.js): у закрытого виджета — «▶ На сутки за видео» тёплой кнопкой и «Plus»; открытый — пометка «открыт до …» */
.ad-offer{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.ad-offer button{display:block;width:100%;min-height:36px;border-radius:12px;padding:8px;font:700 12.5px/1.2 var(--ui,inherit);cursor:pointer;-webkit-tap-highlight-color:transparent}
.ad-watch{background:color-mix(in srgb,#e2b45c 16%,var(--surface,#fff));border:1px solid color-mix(in srgb,#c9a15a 45%,var(--surface,#fff));color:color-mix(in srgb,#9a6a14 72%,var(--t1,#1b1a17))}
.ad-watch:disabled{opacity:.5;cursor:default}
.ad-tryon-strip{margin:0 0 12px;padding:8px 12px;border-radius:12px;background:var(--green-bg,#eef2ea);color:var(--green-tx,#42513b);font-size:12.5px;font-weight:700;line-height:1.35}
.lx-theme-cell{display:flex;flex-direction:column;min-width:0}
.lx-done{position:sticky;bottom:8px;z-index:2;margin:28px 0 0}
.lx-done-btn{display:flex;align-items:center;justify-content:center;width:100%;text-align:center;min-height:46px;border:0;border-radius:14px;background:var(--green-tx);color:var(--surface);font:700 14px var(--ui);cursor:pointer}
/* Листочки (js/ads.js): окно замочка — по макету «Реклама — замочек и две рекламы подряд»; с 18 октября 2026 одна реклама на нажатие, 1 листочек = 1 день */
.leaf-wrap{align-items:flex-end}
.leaf-sheet{width:100%;max-width:420px;text-align:left}
.leaf-sheet .leaf-until{color:var(--green-tx,#42513b);font-weight:600}
.leaf-btn{display:block;width:100%;margin-top:8px;min-height:44px;border:0;border-radius:14px;padding:10px 12px;font:700 14px/1.25 var(--ui,inherit);cursor:pointer;text-align:center;-webkit-tap-highlight-color:transparent}
.leaf-btn small{display:block;font-weight:500;font-size:11.5px;opacity:.8;margin-top:2px}
.leaf-btn.ad{background:var(--t1,#1f2328);color:var(--surface,#fff)}
.leaf-btn.spend{background:var(--surface,#fff);border:1px solid var(--line,#ddd9d0);color:var(--t1,#1b1a17)}
.leaf-btn.ghost{background:transparent;color:var(--t3,#6b6f76);min-height:36px}
.leaf-btn:disabled{opacity:.45;cursor:default}

/* ---------- Достижения на пять лет (js/achievements.js): коллекция 4.2 ChatGPT на телефоне; цвета — переменные текущей темы ---------- */
.achv-small-icon{width:19px;height:19px;flex:none}
/* верх коллекции (App.achievements.open), основа — обложка ChatGPT 4.2: широкая скруглённая панель с мягкими дугами,
   «‹ Назад» слева сверху, Зарок формы человека на своей полке; полка стоит на стеклянной панели, ноги свисают на плашки */
.achv-cover{position:relative;isolation:isolate;height:350px;margin:8px 0 0;overflow:hidden;border:1px solid var(--line);border-radius:27px;background:radial-gradient(ellipse at 48% 15%,#b6c7a63b,transparent 68%),linear-gradient(145deg,var(--green-bg),var(--surface))}
.achv-cover::before,.achv-cover::after{content:'';position:absolute;z-index:-1;border:1px solid color-mix(in srgb,var(--green-tx) 9%,transparent);border-radius:50%;width:390px;height:390px;left:calc(50% - 195px);top:46px}
.achv-cover::after{width:470px;height:470px;left:calc(50% - 235px);top:6px;opacity:.55}
.achv-cover-light{position:absolute;z-index:-1;left:8%;right:8%;top:28px;height:200px;background:radial-gradient(ellipse,#ffffff2b,transparent 70%)}
.achv-back{position:absolute;left:12px;top:12px;z-index:4;display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 13px 0 10px;border:1px solid color-mix(in srgb,#fff 55%,var(--line));border-radius:22px;background:color-mix(in srgb,var(--surface) 86%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--t1);font:650 .8125rem/1.15 var(--ui);cursor:pointer}
.achv-back>span{font-size:1.375rem;line-height:1;margin-top:-2px}
.achv-skin{position:absolute;right:12px;top:12px;z-index:4;display:grid;place-items:center;width:38px;height:38px;padding:0;border:1px solid color-mix(in srgb,#fff 55%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--surface) 86%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--t1);cursor:pointer}.achv-skin svg{width:19px;height:19px}
.achv-cover-glass{position:absolute;z-index:1;left:10px;right:10px;bottom:18px;height:70px;border-radius:20px;border:1px solid color-mix(in srgb,#fff 62%,var(--line));background:linear-gradient(115deg,color-mix(in srgb,var(--surface) 62%,transparent),color-mix(in srgb,var(--green-bg) 28%,transparent));-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);box-shadow:0 9px 24px #14281c15,inset 0 1px 1px #ffffff99,inset 0 -1px 0 #ffffff44}
.achv-cover-zarok{position:absolute;z-index:3;display:block;width:286px;height:286px;left:calc(50% - 143px);bottom:60px;object-fit:contain;pointer-events:none}
.achv-stats{position:absolute;z-index:2;left:17px;right:17px;bottom:24px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px}
.achv-cover .achv-stat{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:2px;min-width:0;min-height:56px;padding:8px 11px 7px;border:1px solid color-mix(in srgb,#fff 48%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--surface) 50%,transparent);color:var(--t1);text-align:left;cursor:pointer}
.achv-cover .achv-stat:nth-child(2){align-items:flex-end;text-align:right}.achv-stat small{font:500 .625rem/1.3 var(--ui);color:var(--t2);overflow-wrap:anywhere}.achv-stat b{display:flex;align-items:center;gap:5px;font:750 1.25rem/1.15 var(--ui);color:var(--green-tx);font-variant-numeric:tabular-nums}.achv-stat b>span{font-size:.8125rem;font-weight:600;color:var(--t2)}.achv-stat .achv-small-icon{width:18px;height:18px}
html[data-luxe] .functional .achv-cover{background:radial-gradient(ellipse at 50% 12%,var(--lx-light,#ffffff20),transparent 72%),var(--lx-surface,var(--surface))}
.achv-page-body{width:100%;max-width:560px;margin:0 auto;padding:0 10px 24px}

/* вкладки разделов: квадратные значки без подписей, выбранная — тонированная; в коллекции ряд на стекле заходит на обложку */
.achv-tabs{display:flex;gap:8px;padding:4px 2px 6px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.achv-tabs::-webkit-scrollbar{display:none}
.ach.achv .achv-tab{position:relative;flex:0 0 auto;display:grid;place-items:center;width:48px;height:48px;padding:0;border:1px solid transparent;border-radius:15px;background:transparent;color:var(--t2);scroll-snap-align:start;transition:background .18s ease,border-color .18s ease}
.achv-tab svg{width:28px;height:28px}
.ach.achv .achv-tab.on{background:color-mix(in srgb,var(--green-tx) 15%,var(--surface));border-color:color-mix(in srgb,var(--green-tx) 45%,transparent);color:var(--green-tx);box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
.achv-tab-dot{position:absolute;top:5px;right:5px;width:11px;height:11px;border-radius:50%;background:#d64541;border:2px solid var(--surface)}
.ach.achv.in-page{margin:0;padding:0 2px;border:0;border-radius:0;background:none;box-shadow:none}
.in-page .achv-tabs{position:relative;z-index:5;margin:-18px 6px 0;padding:9px;gap:9px;border:1px solid color-mix(in srgb,#fff 55%,var(--line));border-radius:21px;background:color-mix(in srgb,var(--surface) 66%,transparent);-webkit-backdrop-filter:blur(22px) saturate(1.25);backdrop-filter:blur(22px) saturate(1.25);box-shadow:inset 0 1px 0 #ffffff66,0 8px 22px #10291b14}
.achv-sum{padding:14px 4px 12px}
.achv-tab-title{margin:0;font:750 1.25rem/1.25 var(--ui);color:var(--t1);letter-spacing:-.01em}
.achv-sum>span{display:block;margin-top:3px;font:.8125rem/1.4 var(--ui);color:var(--t2)}
.ach.achv{margin:2px 0 14px;padding:16px 12px 10px;border:1px solid var(--line);border-radius:22px;background:var(--surface)}
.ach.achv button{font-family:var(--ui);cursor:pointer}
.achv-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 4px 12px}
.achv-head h2{margin:0;font:750 1.375rem/1.25 var(--ui);color:var(--t1);letter-spacing:-.01em}
.ach.achv .achv-chip{display:inline-flex;align-items:center;gap:5px;flex:none;min-height:40px;padding:0 13px 0 10px;border:1px solid var(--line);border-radius:999px;background:var(--green-bg);color:var(--green-tx);font:700 .9375rem/1 var(--ui);font-variant-numeric:tabular-nums}
.achv-chip .achv-small-icon{width:18px;height:18px}
.achv-token-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:18px 6px;padding:2px 0 10px}
.ach.achv .achv-token{display:flex;flex-direction:column;align-items:center;gap:7px;min-width:0;padding:0 2px;border:0;background:none;color:var(--t1);text-align:center}
.achv-token-art{position:relative;display:block;width:88px;max-width:100%;aspect-ratio:1}
.achv-token>b{max-width:100%;font:600 .75rem/1.3 var(--ui);overflow-wrap:anywhere;text-wrap:balance}
.achv-token.locked>b{color:var(--t2)}
.achv-orbit{position:relative;display:block;width:100%;height:100%;color:var(--green-tx)}
.achv-orbit>svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke-width:4;transform:rotate(-90deg)}
.achv-orbit .track{stroke:var(--line)}
.achv-orbit .fill{stroke:currentColor;stroke-linecap:round;transition:stroke-dasharray .35s ease}
.achv-disc{position:absolute;inset:7px;display:block;border-radius:50%;overflow:hidden;box-shadow:0 3px 6px rgba(11,32,21,.15)}
.achv-medallion{display:block;width:100%;height:100%}
/* значки-картинки (js/achievements.js ART): закрытая видимая награда — серая и приглушённая */
img.achv-art{object-fit:cover}
.achv-art.off{filter:grayscale(1) brightness(.82);opacity:.72}
.achv-level{position:absolute;top:-1px;right:-1px;min-width:24px;height:24px;display:grid;place-items:center;padding:0 6px;border-radius:12px;background:#2b7d4b;color:#fff;border:2px solid var(--surface);font:750 .6875rem/1 var(--ui);font-variant-numeric:tabular-nums;box-shadow:0 1px 4px rgba(0,0,0,.15)}
.achv-ready-dot{position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#d64541;border:2px solid var(--surface)}
/* единая коллекция «Наград» (ChatGPT, reward-collection, 22.10.2026; js/achievements.js collection, js/learn.js path/tiles):
   одна плашка — сверху полоса «Первые шаги», под ней «Все / Получены / Забрать», ниже одна сетка значков по 4. Размеры — как
   в макете; цвета — от темы. Легенды снизу нет (владелец). Крупный системный шрифт (html.text-big) — 3 в ряд, шапка полосы в два ряда */
.achv-coll,.achv-sh-wrap,.rwi-wrap{--ac-card:var(--surface);--ac-line:var(--line);--ac-accent:var(--green-tx);--ac-soft:var(--green-bg);--ac-text:var(--t1);--ac-muted:color-mix(in srgb,var(--t2) 55%,var(--t3));--ac-pend:color-mix(in srgb,var(--t1) 18%,#d9a24a)}
.achv-coll{background:var(--ac-card);border:1px solid var(--ac-line);border-radius:22px;overflow:hidden;padding:0 12px 15px;color:var(--ac-text);text-align:left}
.achv-coll-solo{margin:0 0 14px;padding-bottom:0}
.achv-coll-solo .achv-path{border-bottom:0}
.achv-path{display:block;width:100%;border:0;border-bottom:1px solid var(--ac-line);background:transparent;color:var(--ac-text);text-align:left;padding:14px 2px 13px;min-height:76px;font:inherit;cursor:pointer}
.achv-path-head{display:flex;align-items:center;gap:9px;min-width:0;line-height:1.3}
.achv-path-title{font-size:12px;font-weight:650;flex:1;min-width:0}
.achv-path-next{font-size:10px;color:var(--ac-muted);display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.achv-path-next svg{width:13px;height:13px;color:var(--ac-accent)}
.achv-path-count{font-size:11px;font-weight:650;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ac-accent)}
.achv-path-rail{position:relative;display:block;height:24px;margin:10px 11px 0}
.achv-rail-bg,.achv-rail-fill{height:4px;position:absolute;top:10px;left:0;border-radius:6px}
.achv-rail-bg{width:100%;background:var(--ac-soft)}
.achv-rail-fill{width:var(--progress);background:var(--ac-accent);transition:width .55s cubic-bezier(.22,1,.36,1)}
.achv-mile{position:absolute;left:var(--at);top:0;transform:translateX(-50%);display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--ac-card);border:1px solid var(--ac-line);color:var(--ac-muted);box-shadow:0 0 0 3px var(--ac-card)}
.achv-mile svg{width:13px;height:13px}
.achv-mile.reached{color:var(--ac-card);background:var(--ac-accent);border-color:var(--ac-accent)}
.achv-mile.next{border-color:var(--ac-accent);color:var(--ac-accent)}
.achv-coll-tools{display:flex;gap:4px;margin:12px 0 7px}
.achv-coll-tools button{border:0;background:transparent;color:var(--ac-muted);font:inherit;font-size:10px;line-height:1.45;min-height:34px;padding:6px 10px;border-radius:9px;cursor:pointer}
.achv-coll-tools button[aria-pressed=true]{background:var(--ac-soft);color:var(--ac-accent);font-weight:650}
.achv-coll-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 2px;list-style:none;margin:0;padding:0}
.achv-coll-grid>li{min-width:0}
.achv-coll-extra{margin:4px 0 12px}
.achv-tile{width:100%;border:0;background:transparent;padding:7px 1px 6px;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--ac-text);min-height:108px;border-radius:13px;font:inherit;text-align:center;cursor:pointer}
@media (hover:hover){.achv-tile:hover{background:var(--ac-soft)}}
.achv-medal{width:63px;height:63px;max-width:90%;aspect-ratio:1;border-radius:50%;position:relative;padding:3px;display:grid;place-items:center;flex-shrink:0;background:conic-gradient(var(--ac-accent) var(--value),var(--ac-line) 0)}
/* серый значок полупрозрачен: сквозь него светится сектор кольца прогресса (подсветка из макета), остальное приглушено */
.achv-medal>:not(.achv-mark){width:100%;height:100%;display:block;margin:0;border-radius:50%;object-fit:contain;background:var(--ac-card);padding:1px;filter:none;opacity:1;color:#9a7b35}
.achv-medal>:not(.achv-mark) svg{display:block;width:100%;height:100%}
.achv-tile.not-started .achv-medal{background:var(--ac-line)}
.achv-tile:is(.not-started,.in-progress) .achv-medal>:not(.achv-mark){filter:grayscale(1);opacity:.42}
.achv-tile.pending .achv-medal{background:var(--ac-pend)}
.achv-mark{position:absolute;right:-2px;top:-2px;min-width:17px;height:17px;padding:0 2px;display:grid;place-items:center;border:2px solid var(--ac-card);border-radius:12px;background:var(--ac-accent);color:var(--ac-card);font-size:8px;font-weight:700;line-height:1}
.achv-mark svg{width:9px;height:9px}
.achv-mark.reward{background:var(--ac-pend);color:#2b2415;padding:0 3px;min-width:22px}
.achv-mark.lock{background:var(--ac-soft);color:var(--ac-muted)}
.achv-tile-label{font-size:10px;font-weight:500;line-height:1.3;text-align:center;display:block;overflow-wrap:normal;max-width:100%;hyphens:auto}
.achv-tile-label small{display:block;font-size:8px;color:var(--ac-muted);font-weight:400;margin-top:3px}
.achv-coll-empty{grid-column:1/-1;padding:30px 10px;text-align:center;color:var(--ac-muted);font-size:12px}
:is(.achv-tile,.achv-coll-tools button,.achv-sh button):focus-visible{outline:3px solid #6e9ae4;outline-offset:3px}
.achv-path:focus-visible{outline:3px solid #6e9ae4;outline-offset:-3px}
html.text-big .achv-coll-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
html.text-big .achv-tile{min-height:130px}
html.text-big .achv-path-head{flex-wrap:wrap}
html.text-big .achv-path-title{flex-basis:70%}
html.text-big .achv-path-count{order:1}
html.text-big .achv-path-next{order:2;flex-basis:100%;margin-top:4px;white-space:normal}
@media (max-width:355px){.achv-coll{padding-inline:9px}.achv-medal{width:54px;height:54px}.achv-tile-label{font-size:9px}.achv-tile{min-height:101px}.achv-path-title{font-size:11px}.achv-path-next{font-size:9px}.achv-path-count{font-size:10px}.achv-coll-tools button{padding-inline:8px}}
@media (min-width:720px){.achv-coll-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}}
/* нижний лист пункта и «Первых шагов» (js/learn.js openSheet bottom) */
.achv-sh-wrap{position:fixed;inset:0;z-index:2147482000;display:flex;align-items:flex-end;justify-content:center;background:#07100c65;opacity:0;transition:opacity .25s cubic-bezier(.22,1,.36,1)}
.achv-sh-wrap.in{opacity:1}
.achv-sh-wrap:focus{outline:none}
.achv-sh{width:100%;max-width:560px;max-height:90%;overflow:auto;padding:13px 20px calc(22px + env(safe-area-inset-bottom));border:1px solid var(--ac-line);border-bottom:0;border-radius:25px 25px 0 0;background:var(--ac-card);color:var(--ac-text);text-align:left;transform:translateY(14px);transition:transform .25s cubic-bezier(.22,1,.36,1)}
.achv-sh-wrap.in .achv-sh{transform:none}
.achv-sh:before{content:'';display:block;width:31px;height:3px;background:var(--ac-line);border-radius:4px;margin:0 auto 13px}
.achv-sh-head{display:flex;align-items:center;gap:13px;margin-bottom:16px}
.achv-sh-img{display:block;flex:none;width:64px;height:64px;object-fit:contain}
.achv-sh-img svg{display:block;width:100%;height:100%}
.achv-sh-head h3{margin:0 0 5px;font-size:19px;line-height:1.2;font-weight:620;letter-spacing:-.025em;color:var(--ac-text)}
.achv-sh-head p{margin:0;font-size:11px;color:var(--ac-muted)}
.achv-sh-close{flex:none;width:44px;min-width:44px;height:44px;margin-left:auto;display:grid;place-items:center;border:0;border-radius:50%;background:var(--ac-soft);color:var(--ac-muted);font:inherit;font-size:21px;cursor:pointer}
.achv-sh-copy{margin:0 0 15px;font-size:13px;line-height:1.6;color:var(--ac-muted)}
.achv-sh-note{margin:13px 0;font-size:11px;color:var(--ac-muted)}
.achv-sh-primary{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:46px;padding:10px 13px;border:0;border-radius:13px;background:var(--ac-accent);color:var(--ac-card);font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.achv-sh-steps{list-style:none;margin:0 0 19px;padding:0}
.achv-sh-steps li{display:flex;gap:11px;align-items:center;padding:11px 0;border-bottom:1px solid var(--ac-line);font-size:12px}
.achv-sh-steps svg{width:19px;height:19px;flex-shrink:0;color:var(--ac-accent)}
.achv-sh-steps .achv-sh-art{width:36px;height:36px;flex-shrink:0}.achv-sh-steps .achv-sh-art.off{filter:grayscale(1) brightness(.82);opacity:.72}
.achv-sh-steps small{display:block;color:var(--ac-muted);font-size:11px}
@media (prefers-reduced-motion:reduce){.achv-rail-fill,.achv-sh-wrap,.achv-sh{transition:none}}

/* компактный просмотр награды (ChatGPT registration-rewards, 24.10.2026): окно по центру — «НАГРАДА» и ×, значок 132,
   название, счёт этой награды, условие, свёрнутая история; «Обзор наград» — то же окно со списком. Получение — прежний экран */
.rwi-wrap{--rwi-gold:color-mix(in srgb,var(--t1) 42%,#a8823a);position:fixed;inset:0;z-index:2147482000;display:flex;align-items:center;justify-content:center;padding:18px;box-sizing:border-box;background:#1a291b77;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);opacity:0;transition:opacity .2s ease-out}
.rwi-wrap.in{opacity:1}
.rwi-wrap:focus{outline:none}
.rwi{position:relative;box-sizing:border-box;width:100%;max-width:340px;max-height:calc(100dvh - 36px);overflow:auto;overscroll-behavior:contain;padding:20px 22px;border:1px solid var(--ac-line);border-radius:22px;background:var(--ac-card);color:var(--ac-text);text-align:center;box-shadow:0 15px 50px #14221522;transform:translateY(7px);transition:transform .2s ease-out}
.rwi-wrap.in .rwi{transform:none}
.rwi-ov .rwi{max-width:390px;text-align:left}
.rwi-head{display:flex;align-items:center;justify-content:space-between;min-height:32px}
.rwi-head small{font:600 9px/1.4 var(--ui);letter-spacing:.1em;text-transform:uppercase;color:var(--ac-muted)}
.rwi-tools{display:flex;align-items:center;gap:8px}
.rwi-x,.rwi-share{display:grid;place-items:center;width:32px;height:32px;min-width:32px;padding:0;border:0;border-radius:9px;background:var(--ac-soft);color:var(--ac-text);font:400 19px/1 var(--ui);cursor:pointer}
.rwi .shc-btn.rwi-share{gap:0;min-height:32px;padding:0;border:0;border-radius:9px;background:var(--ac-soft);color:var(--ac-text);box-shadow:none}.rwi .rwi-share svg{width:16px;height:16px;color:currentColor}.rwi .rwi-share>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.rwi-art{display:flex;justify-content:center}
.rwi-art>:is(img,svg,span){display:block;width:132px;height:132px;margin:0 auto 14px;object-fit:contain}
.rwi-art span svg{width:100%;height:100%}
.rwi h2{max-width:270px;margin:0 auto;font:650 24px/1.2 var(--ui);letter-spacing:-.033em;color:var(--ac-text);overflow-wrap:anywhere}
.rwi-count{margin:9px 0 13px;font:600 11px/1.5 var(--ui);color:var(--rwi-gold)}
.rwi-cond{max-width:270px;margin:0 auto;font:500 12px/1.65 var(--ui);color:var(--ac-muted)}
.rwi-cond strong{color:var(--ac-text);font-weight:600}
.rwi-cond .achv-small-icon,.rwi-hist .achv-small-icon{width:12px;height:12px;vertical-align:-2px}
.rwi-hist{margin-top:17px;border-top:1px solid var(--ac-line);text-align:left}
.rwi-hist summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;box-sizing:border-box;padding:13px 0;list-style:none;font:600 11px/1.4 var(--ui);color:var(--ac-text);cursor:pointer}
.rwi-hist summary::-webkit-details-marker{display:none}
.rwi-hist summary:after{content:'+';font-weight:500}.rwi-hist[open] summary:after{content:'−'}
.rwi-hist summary span{margin-left:auto;margin-right:12px}
.rwi-hist ol{max-height:235px;overflow:auto;margin:0;padding:0;list-style:none}
.rwi-hist li{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-top:1px solid var(--ac-line);font:500 11px/1.45 var(--ui);color:var(--ac-text)}
.rwi-hist li small{display:block;font-size:10px;color:var(--ac-muted)}
.rwi-hist li>span{flex:none;max-width:95px;text-align:right;font-size:10px;color:var(--ac-accent)}
.rwi .rwi-primary{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;margin-top:16px;padding:10px 16px;border:0;border-radius:11px;background:var(--ac-accent);color:var(--ac-card);font:700 12px/1.3 var(--ui);cursor:pointer}
.rwi :is(button,summary):focus-visible{outline:3px solid #6e9ae4;outline-offset:3px}
.rwi-ov-title{margin:14px 0 0!important;max-width:none!important;font-size:27px!important;letter-spacing:-.04em}
.rwi-ov-note{margin:6px 0 0;font:500 10px/1.6 var(--ui);color:var(--ac-muted)}
.rwi-ov-stats{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:14px 0 4px;padding:14px 15px;border-radius:12px;background:var(--ac-soft);color:var(--ac-text)}
.rwi-ov-stats strong{font:700 21px/1.2 var(--ui)}.rwi-ov-stats strong span{font-size:11px;font-weight:500}
.rwi-ov-stats div>span,.rwi-ov-stats b span{font:500 11px/1.4 var(--ui);color:var(--ac-muted)}
.rwi-ov-stats b{font:600 12px/1.4 var(--ui);text-align:right}
.rwi-ov-h3{margin:18px 0 5px;font:650 12px/1.4 var(--ui);color:var(--ac-text)}
.rwi-ov-list{margin:0;padding:0;list-style:none}
.rwi-ov-list button{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:10px 0;border:0;border-bottom:1px solid var(--ac-line);background:none;color:var(--ac-text);text-align:left;font:500 12px/1.4 var(--ui);cursor:pointer}
.rwi-ov-list button>:is(img,svg,span:first-child){flex:none;width:44px;height:44px}
.rwi-ov-list button>span:not(:first-child){flex:1;min-width:0}
.rwi-ov-list small{display:block;font-size:10px;color:var(--ac-muted)}
.rwi-ov-list b{flex:none;font:600 11px/1.3 var(--ui);color:var(--ac-accent)}
.rwi-ov-list .off{filter:grayscale(1);opacity:.55}
.rwi-ov-next{margin-top:12px}
.achv-ov-link{display:block;margin:6px auto 0;min-height:44px;padding:12px 4px;border:0;background:none;color:var(--t2);font:500 12px/1.4 var(--ui);text-decoration:underline;text-underline-offset:4px;cursor:pointer}
@media (max-width:360px){.rwi{padding:18px}.rwi-art>:is(img,svg,span){width:120px;height:120px}.rwi h2{font-size:22px}}
@media (prefers-reduced-motion:reduce){.rwi-wrap,.rwi{transition:none}}
.achv-rules{margin:2px 4px 0;padding:10px 0 4px;border-top:1px solid var(--line);font:600 .8125rem/1.4 var(--ui);color:var(--t2)}
.achv-rules summary{min-height:36px;display:flex;align-items:center;cursor:pointer}
.achv-rules p{margin:6px 0 8px;font:.75rem/1.5 var(--ui);color:var(--t3);overflow-wrap:anywhere}
.ach.achv .ach-note{margin:10px 0 0;font:.75rem/1.4 var(--ui);color:var(--t3)}
/* экран награды: отдельный экран поверх приложения, закрывается × и «Назад» */
.achv-screen{position:fixed;inset:0;z-index:8500;display:block;overflow-y:auto;overscroll-behavior:contain;padding:var(--safe-top,0px) 0 var(--safe-bottom,0px);background:var(--bg);color:var(--t1);opacity:0;transform:translateY(20px);transition:opacity .2s ease,transform .22s ease}
.achv-screen.in{opacity:1;transform:none}
.achv-screen:focus{outline:none}
.achv-screen h3{margin:0 0 6px;font:750 1.5rem/1.25 var(--ui);letter-spacing:-.01em;color:var(--t1);overflow-wrap:anywhere}
/* полёт листочка после «Забрать» */
.achv-fly{position:fixed;z-index:9999;font-size:22px;pointer-events:none;transform:translate(-50%,0);animation:achvFly 1s ease-out forwards}
@keyframes achvFly{0%{opacity:0;transform:translate(-50%,0) scale(.6)}15%{opacity:1;transform:translate(-50%,-8px) scale(1.1)}100%{opacity:0;transform:translate(-50%,-120px) rotate(-25deg) scale(.9)}}
/* окна «Первые листочки» и подарок Plus */
.achv-wrap{z-index:9000}
.achv-dlg{max-width:360px;text-align:center}
.achv-dlg h3{margin:4px 0 8px;font:650 1.0625rem/1.3 var(--ui);color:var(--t1)}
.achv-dlg p{margin:0 0 10px;font:.875rem/1.45 var(--ui);color:var(--t2)}
.achv-dlg .achv-acts{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.achv-dlg .btn{flex:none;width:100%}
.achv-dlg .btn.primary{background:var(--t1);border-color:var(--t1);color:var(--on-t1,#fff)}
.achv-dlg .btn.ghost{border-color:transparent;background:none}
@media (max-width:374px){.achv-token-art{width:80px}.achv-token-grid{gap:16px 4px}.achv-token>b{font-size:.6875rem}.achv-cover-zarok{width:270px;height:270px;left:calc(50% - 135px);bottom:60px}.ach.achv .achv-tab{flex-basis:46px;width:46px;height:46px}}
@media (min-width:720px){.achv-token-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:24px 12px}.achv-token-art{width:104px}}
@media (prefers-reduced-motion:reduce){.achv-fly{display:none}.achv-orbit .fill,.ach.achv .achv-tab{transition:none}.achv-screen{transition:none;transform:none}}
.achv-rules summary,.achv-history summary{list-style:none;gap:8px}
.achv-rules summary::-webkit-details-marker,.achv-history summary::-webkit-details-marker{display:none}
.achv-rules summary::after,.achv-history summary::after{content:'';flex:none;width:7px;height:7px;margin:0 6px 3px auto;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg)}
.achv-rules[open]>summary::after,.achv-history[open]>summary::after{margin-bottom:-3px;transform:rotate(-135deg)}
.achv-token.locked .achv-disc{filter:grayscale(.85);opacity:.78}
.achv-token-grid.one{grid-template-columns:repeat(3,minmax(0,1fr));justify-content:normal}
html[data-luxe] .functional .ach.achv.in-page{background:none;box-shadow:none}

@media(prefers-reduced-motion:reduce){.achv-fly{display:none!important}.achv-screen,.achv-orbit .fill,.achv-tabs,.achv-tab{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

/* V5.1: единая карточка коллекции, компактные счётчики и необязательные фильтры. */
.ach.achv.in-page{margin:12px 0 0;padding:12px 10px 10px;border:1px solid var(--line);border-radius:22px;background:var(--surface);box-shadow:0 4px 18px #10291b08}
.in-page .achv-tabs{margin:0 0 9px;padding:4px;gap:5px;border-radius:14px;box-shadow:inset 0 1px 0 #ffffff33;background:color-mix(in srgb,var(--green-bg) 45%,transparent)}
.ach.achv .achv-tab{width:40px;height:40px;border-radius:11px}
.achv-tab svg{width:23px;height:23px;stroke-width:1.7}
.achv-tab-dot{width:9px;height:9px;top:3px;right:3px}
.achv-sum{padding:10px 4px 14px}
.achv-tab-title{font-size:1.125rem}
.achv-sum>span{font-size:.75rem;line-height:1.45;max-width:40em}
.achv-token-grid{padding:0 0 12px;gap:18px 6px}
.achv-token>b{font-size:.6875rem;line-height:1.35}
@media(max-width:374px){.ach.achv .achv-tab{flex-basis:40px;width:40px;height:40px}.achv-token-art{width:76px}.achv-token-grid{gap:16px 4px}}
@media(min-width:720px){.achv-token-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px 12px}}

.in-page .achv-tabs{margin:0 0 16px}
/* сборка 95: награда — карточка по центру на затемнении во всех темах; касание по затемнению и «‹ Назад» карточки закрывают */
.achv-screen.achv-detail{display:flex;flex-direction:column;box-sizing:border-box;padding:calc(var(--safe-top,0px) + 16px) 0 calc(var(--safe-bottom,0px) + 16px);background:rgba(6,10,8,.58);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transform:none}
/* экран награды — вариант Б ChatGPT (компактный, 22.10.2026; reward-design/compact.html): размеры и отступы один в один.
   Цвета макета → токены темы: текст t1, приглушённый t2, акцент и подсказки green-tx; «приподнятое» и «утопленное» —
   смесь с текстом и green-bg поверх карточки, поэтому одинаково ложится на светлую, тёмную, Glass, ремёсла, Мемы и Ханами */
.achv-detail{--rw-raised:color-mix(in srgb,var(--t1) 7%,transparent);--rw-inset:color-mix(in srgb,var(--green-bg) 55%,transparent)}
.achv-detail .achv-screen-body{position:relative;flex:none;box-sizing:border-box;width:calc(100% - 24px);max-width:400px;margin:auto;padding:0;border:1px solid var(--line);border-radius:27px;background:var(--surface);box-shadow:0 16px 44px rgba(0,0,0,.2);overflow:hidden;color:var(--t1);text-align:left;transform:translateY(14px);transition:transform .22s ease}
.achv-detail.in .achv-screen-body{transform:none}
.achv-toolbar{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:16px 18px 0}
.achv-screen.achv-detail .achv-toolbar .achv-card-back{position:static;display:inline-flex;align-items:center;gap:6px;min-width:44px;min-height:44px;box-sizing:border-box;padding:6px 0;border:0;border-radius:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;color:var(--t2);font:400 12px/1.2 var(--ui);touch-action:manipulation}
.achv-card-back svg{width:16px;height:16px;flex:none}
.achv-wallet{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--line);border-radius:20px;background:var(--rw-raised);color:var(--t1);font:650 13px/1.5 var(--ui);font-variant-numeric:tabular-nums}
.achv-wallet .achv-small-icon{width:15px;height:15px;color:var(--green-tx)}
.achv-leaf-tools{display:flex;align-items:center;gap:2px;margin:0 -8px 0 auto}
.achv-ib{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:none;color:var(--t2);cursor:pointer}.achv-ib svg{width:20px;height:20px}
.achv-ib[aria-expanded="true"]{color:var(--green-tx)}.achv-ib:focus-visible{outline:2px solid var(--green-tx);outline-offset:-3px}
.achv-leaf-help{margin:10px 18px 0;padding:11px 13px;border-radius:14px;background:var(--rw-inset);color:var(--t2);font:500 12.5px/1.55 var(--ui)}.achv-leaf-help p{margin:0}.achv-leaf-help p+p{margin-top:6px}
.achv-rw{padding:16px 20px 20px;overflow-wrap:anywhere}
.achv-hero{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.achv-badge-well{position:relative;flex-shrink:0;width:100px;height:100px}
.achv-badge-well::before{content:'';position:absolute;inset:8px;border-radius:100%;background:#a8d36928;filter:blur(18px)}
.achv-badge-well .achv-medallion{position:relative;display:block;width:100%;height:100%;object-fit:contain}
.achv-hero>div:last-child{min-width:0}
.achv-eyebrow{margin:0 0 7px;font:750 9px/1.5 var(--ui);letter-spacing:.09em;text-transform:uppercase;color:var(--green-tx)}
.achv-screen.achv-detail .achv-hero h3{margin:0 0 8px;font:650 25px/1.1 var(--ui);letter-spacing:-.04em;color:var(--t1)}
.achv-hero h3+p{margin:0;font:12px/1.45 var(--ui);color:var(--t2)}
/* прогресс одной строкой: осталось, счёт, награда; тонкая полоса снизу */
.achv-strip{margin:0 0 15px;padding:0 1px}
.achv-strip-row{display:flex;align-items:center;gap:10px;min-height:23px;font:12px/1.35 var(--ui)}
.achv-strip-label{flex:1;min-width:0;font-weight:550;color:var(--t1)}
.achv-strip-fraction{font-size:11px;color:var(--t2);white-space:nowrap;font-variant-numeric:tabular-nums}
.achv-strip-prize{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:650;color:var(--green-tx);white-space:nowrap}
.achv-strip-prize .achv-small-icon{width:14px;height:14px}
.achv-track{height:4px;margin:8px 0 0;border-radius:10px;background:var(--rw-raised);overflow:hidden}
.achv-track>span{display:block;height:100%;border-radius:inherit;background:var(--green-tx)}
/* «Забрать» и «получено + Поделиться» — короткие блоки */
.achv-take-box{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:0 0 10px;padding:10px;border:1px solid #a6c56235;border-radius:14px;background:linear-gradient(110deg,#a6c5620e,transparent)}
.achv-take-box>div{flex:1;min-width:80px}
.achv-take-box strong,.achv-got-box strong{display:block;font:600 13px/1.35 var(--ui);color:var(--t1)}
.achv-take-box>div>span{display:block;margin-top:3px;font:10px/1.35 var(--ui);color:var(--t2)}
.achv-detail .btn.achv-claim{display:flex;align-items:center;justify-content:center;gap:7px;flex:none;width:auto;min-height:44px;padding:10px 13px;border:0;border-radius:10px;background:var(--green-tx);color:var(--surface);box-shadow:inset 0 1px #ffffff50;font:650 12px/1.2 var(--ui);white-space:nowrap;cursor:pointer}
.achv-detail .btn.achv-claim:active{transform:scale(.985)}
.achv-detail .btn.achv-claim:disabled{opacity:.65}
.achv-detail .btn.achv-claim .achv-small-icon{width:16px;height:16px}
.achv-got-box{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:8px 9px 8px 12px;border:1px solid var(--line);border-radius:14px;background:var(--rw-inset)}
.achv-box-icon{display:grid;place-items:center;flex-shrink:0;width:28px;height:28px;border-radius:9px;background:var(--rw-raised);color:var(--green-tx)}
.achv-box-icon svg{width:16px;height:16px}
.achv-got-box>div{flex:1;min-width:0}
.achv-got-box>div>span{display:flex;align-items:center;gap:4px;margin-top:3px;font:10px/1.3 var(--ui);color:var(--t2)}
.achv-got-box>div>span .achv-small-icon{width:12px;height:12px;color:var(--green-tx)}
.achv-screen.achv-detail .achv-got-box .achv-share{display:flex;align-items:center;justify-content:center;flex:none;width:44px;min-width:44px;min-height:44px;margin:0;padding:0 0 0 5px;border:0;border-left:1px solid var(--line);border-radius:0;background:transparent;color:var(--green-tx);font:400 20px/1 var(--ui)}
.achv-screen.achv-detail .achv-got-box .achv-share svg{display:none}
.achv-screen.achv-detail .achv-got-box .achv-share:active{border-radius:8px;background:var(--rw-raised)}
/* тайная следующая ступень: силуэт «?» и короткая плашка без условия и награды */
.achv-secret-box{display:flex;align-items:center;gap:10px;margin:0 0 17px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--rw-inset)}
.achv-secret-box .achv-box-icon{width:38px;height:38px;border-radius:12px}
.achv-secret-box .achv-box-icon .achv-small-icon{width:20px;height:20px}
.achv-secret-box strong{display:block;font:700 13px/1.5 var(--ui);color:var(--t1)}
.achv-secret-box p{margin:2px 0 0;font:11px/1.5 var(--ui);color:var(--t2)}
/* история ступеней: название и условие, справа — состояние */
.achv-detail .achv-history{margin:1px 0 0;border-top:1px solid var(--line);color:var(--t2)}
.achv-detail .achv-history summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;padding:10px 0 0;font:12px/1.5 var(--ui);cursor:pointer}
.achv-steps{list-style:none;margin:10px 0 0;padding:0}
.achv-steps li{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font:12px/1.5 var(--ui);color:var(--t1)}
.achv-steps li:last-child{border-bottom:0}
.achv-steps li span{font-size:11px;color:var(--t2)}
.achv-steps li>div{min-width:0}
.achv-steps li>span{flex:none;max-width:50%;text-align:right;font-variant-numeric:tabular-nums}
.achv-steps .achv-small-icon{width:12px;height:12px;vertical-align:-2px;color:var(--green-tx)}
.achv-note{margin:8px 0 0;font:10px/1.45 var(--ui);color:var(--t2)}
/* «Листочек у вас» (после «Забрать» первые 3 раза и по плашке «Ваши листочки»): та же карточка, другое содержимое */
.achv-leaf-head{padding:3px 0 17px;text-align:center}
.achv-leaf-orbit{position:relative;display:grid;place-items:center;width:88px;height:88px;margin:0 auto 15px;border-radius:50%;background:radial-gradient(circle,#a1ca5e2c,transparent 72%);color:var(--green-tx)}
.achv-leaf-orbit .achv-small-icon{width:49px;height:49px}
.achv-leaf-orbit[data-n]::after{content:attr(data-n);position:absolute;right:-2px;bottom:4px;padding:3px 8px;border:3px solid var(--surface);border-radius:20px;background:var(--green-tx);color:var(--surface);font:750 13px/1.2 var(--ui)}
.achv-leaf-cause{margin:0 0 6px;font:500 12.5px/1.45 var(--ui);color:var(--t2)}
.achv-screen.achv-detail .achv-leaf-head h3{margin:0 0 8px;font:650 25px/1.16 var(--ui);letter-spacing:-.04em;color:var(--t1)}
.achv-leaf-rows{display:flex;flex-direction:column;margin:0 0 4px;border:1px solid var(--line);border-radius:16px;background:var(--rw-raised);overflow:hidden}
.achv-leaf-row{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:10px 14px;border:0;background:none;color:var(--t1);text-align:left;font:600 14px/1.3 var(--ui);cursor:pointer}
.achv-leaf-row+.achv-leaf-row{border-top:1px solid var(--line)}
.achv-leaf-row svg{flex:none;width:22px;height:22px;color:var(--green-tx)}.achv-leaf-row span{flex:1;min-width:0}.achv-leaf-row i{font-style:normal;font-size:18px;line-height:1;color:var(--t3)}
.achv-leaf-row:focus-visible{outline:2px solid var(--green-tx);outline-offset:-3px}
.achv-leaf-help .achv-leaf-rate{display:flex;align-items:center;gap:8px;font:650 14px/1.4 var(--ui);color:var(--t1)}.achv-leaf-rate b{display:inline-flex;align-items:center;gap:3px}.achv-leaf-rate .achv-small-icon{width:16px;height:16px;color:var(--green-tx)}.achv-leaf-rate span{color:var(--t2)}
.achv-detail .btn.achv-continue{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-height:46px;margin-top:17px;padding:11px 15px;border:0;border-radius:13px;background:var(--green-tx);color:var(--surface);box-shadow:inset 0 1px #ffffff50;font:650 13px/1.2 var(--ui);cursor:pointer}
@media(prefers-reduced-motion:no-preference){.achv-rw.achv-swap{animation:achvSwap .28s cubic-bezier(.22,1,.36,1)}}
@keyframes achvSwap{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
/* задания «MCP …»: шаги подключения и кнопка в «Подключения» (20.10) */
.achv-detail .achv-how{margin:0 0 10px;padding:10px 12px;border-radius:14px;background:var(--rw-inset)}
.achv-detail .achv-how p{margin:0 0 6px;font:13px/1.5 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.achv-detail .achv-how p:last-child{margin:0;color:var(--t2);font-size:12px}
.achv-detail .btn.achv-mcp-open{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-height:44px;margin:0 0 10px;padding:0 14px;border:0;border-radius:10px;background:var(--green-tx);color:var(--surface);font:650 12px/1.2 var(--ui);cursor:pointer}
/* крупный текст телефона (html.text-big, js/app.js textCheck): как «Увеличенный текст» макета — строка прогресса в два ряда, значок над названием */
html.text-big .achv-rw{padding-inline:15px}
html.text-big .achv-hero{flex-direction:column;align-items:flex-start}
html.text-big .achv-strip-row{flex-wrap:wrap;gap:8px}
html.text-big .achv-strip-label{flex-basis:100%}
html.text-big .achv-take-box>div{min-width:120px}
@media(max-width:355px){.achv-rw{padding-inline:13px}.achv-badge-well{width:78px;height:78px}.achv-screen.achv-detail .achv-hero h3{font-size:21px}.achv-eyebrow{letter-spacing:0}.achv-hero{gap:10px}.achv-strip-row{font-size:11px;gap:8px}.achv-strip-fraction,.achv-strip-prize{font-size:10px}.achv-detail .btn.achv-claim{font-size:11px;padding-inline:10px}}
.achv-wrap .achv-dlg{box-sizing:border-box;width:calc(100% - 32px);max-width:328px;padding:20px;border:1px solid var(--line);border-radius:22px;background:var(--surface);box-shadow:0 16px 56px #10291b26;text-align:left}
.achv-dlg h3{margin:0 0 8px;font-size:1.0625rem;line-height:1.35}
.achv-dlg p{margin:0 0 14px;font-size:.8125rem;line-height:1.5}
.achv-dlg .achv-acts{margin-top:14px;gap:7px}
.achv-dlg .btn{box-sizing:border-box;min-height:44px;padding:10px 12px;border-radius:12px;font:600 .8125rem/1.3 var(--ui)}
.achv-dlg .btn.primary{background:var(--green-tx);border-color:var(--green-tx);color:var(--surface)}
.achv-dlg .btn.ghost{min-height:40px;color:var(--t2)}
@media(prefers-reduced-motion:reduce){.achv-detail .achv-screen-body{transition:none;transform:none}.achv-detail .btn.achv-claim:active{transform:none}}

.achv-empty{padding:6px 4px 14px;text-align:center}
.lx-theme-cell>.ad-offer-col{margin:0;padding:0 12px 12px;gap:7px}
.lx-theme-cell .ad-offer-col .ad-watch{border:1px solid color-mix(in srgb,var(--green-tx) 40%,transparent);background:var(--green-bg);color:var(--green-tx);border-radius:12px;min-height:44px;font-size:12px;font-weight:650}
.theme-time{display:block;text-align:center;color:var(--t2);font:600 11px/1.4 var(--ui);font-variant-numeric:tabular-nums}
.leaf-wrap .leaf-sheet{box-sizing:border-box;width:calc(100% - 24px);max-width:364px;max-height:calc(100dvh - 40px);overflow-y:auto;padding:20px;border:1px solid var(--line);border-radius:24px;background:var(--surface);color:var(--t1);text-align:left}
.leaf-wrap{align-items:center;padding:16px}
.leaf-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.leaf-sheet .leaf-heading>b{font:700 18px/1.35 var(--ui);letter-spacing:-.02em}
.leaf-close{flex:none;display:grid;place-items:center;width:36px;height:36px;margin:-6px -6px 0 0;border:0;border-radius:50%;background:var(--bg2);color:var(--t2);font:500 24px/1 var(--ui);cursor:pointer}
.leaf-balance,.leaf-price{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0;color:var(--t2);font:500 12px/1.4 var(--ui)}
.leaf-balance b,.leaf-price b{display:inline;font:650 13px/1.4 var(--ui);color:var(--t1)}
.leaf-sheet .leaf-until{margin:0 0 14px;padding:8px 10px;border-radius:10px;background:var(--green-bg);font:600 12px/1.4 var(--ui);font-variant-numeric:tabular-nums}
.leaf-sheet .leaf-btn{margin-top:8px;min-height:44px;padding:11px 12px;border-radius:12px;font:650 13px/1.35 var(--ui)}
.leaf-sheet .leaf-btn.spend{border:1px solid var(--green-tx);background:var(--green-tx);color:var(--surface)}
.leaf-sheet .leaf-btn.ad{background:var(--bg2);color:var(--t1);border:1px solid var(--line)}
.leaf-sheet .leaf-btn.ad small{font:500 10px/1.4 var(--ui);margin-top:3px;color:var(--t2);opacity:1}
.leaf-sheet .leaf-short{margin:8px 0 0;font:500 12px/1.4 var(--ui);color:var(--t2)}
.leaf-help{margin:10px 0 0;padding-top:8px;border-top:1px solid var(--line);font:500 11px/1.5 var(--ui);color:var(--t2)}
.leaf-help summary{cursor:pointer;min-height:36px;display:flex;align-items:center;justify-content:space-between;list-style:none}
.leaf-help summary::after{content:'+';font-size:16px}.leaf-help[open] summary::after{content:'−'}.leaf-help summary::-webkit-details-marker{display:none}
.leaf-sheet .leaf-help p{font:500 11px/1.5 var(--ui);margin:6px 0 10px}
@media(prefers-reduced-motion:reduce){.leaf-wrap,.leaf-sheet{transition:none!important;animation:none!important}}

/* Таймеры и выбор любого целого срока в пределах баланса. */
.access-icon{display:inline-block;flex:none;width:16px;height:16px;vertical-align:-3px}
.theme-time,.leaf-sheet .leaf-until{display:flex;align-items:center;justify-content:center;gap:6px;font-variant-numeric:tabular-nums}
.leaf-sheet .leaf-until{justify-content:flex-start}
.lx-theme-cell .ad-offer-col .ad-watch{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap}
.theme-price{display:inline-flex;align-items:center;gap:3px;margin-left:auto;padding-left:4px;font-variant-numeric:tabular-nums}
.theme-price .access-icon{width:14px;height:14px}
.leaf-duration{margin:16px 0 12px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--bg2)}
.leaf-duration-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font:500 12px/1.4 var(--ui);color:var(--t2)}
.leaf-duration-value{font-weight:700;color:var(--t1);font-variant-numeric:tabular-nums}
.leaf-range{box-sizing:border-box;display:block;width:100%;min-height:44px;margin:6px 0 0;padding:0;appearance:none;-webkit-appearance:none;border:0;border-radius:0;background:linear-gradient(to right,var(--green-tx) 0 var(--range-progress,0%),var(--line) var(--range-progress,0%) 100%) center/100% 4px no-repeat;cursor:pointer;accent-color:var(--green-tx)}
.leaf-range::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:22px;height:22px;border:3px solid var(--surface);border-radius:50%;background:var(--green-tx);box-shadow:0 1px 5px #10291b33}
.leaf-range::-moz-range-thumb{width:16px;height:16px;border:3px solid var(--surface);border-radius:50%;background:var(--green-tx);box-shadow:0 1px 5px #10291b33}
.leaf-range:focus-visible{outline:2px solid var(--green-tx);outline-offset:2px;border-radius:8px}
.leaf-range:disabled{opacity:.45;cursor:default}
.leaf-range-ends{display:flex;align-items:center;justify-content:space-between;font:500 10px/1.4 var(--ui);color:var(--t2)}

/* Продление: подпись слева, счётчик в той же кнопке справа. */
.lx-theme-cell .ad-offer-col .ad-watch{justify-content:flex-start;flex-wrap:nowrap;gap:5px;padding:10px}
.lx-theme-cell .theme-time-inline{margin-left:auto;gap:4px;white-space:nowrap;color:inherit;font-size:10px;line-height:1.3;min-width:0}
.theme-time-inline .access-icon{width:13px;height:13px}
/* Лента вкладок по состоянию (решение владельца 19.10): четыре равные колонки на всю ширину его ленты; вариант с подписями — TAB_LOOK */
.in-page .achv-tabs.even{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:visible}
.ach.achv .achv-tabs.even .achv-tab{width:auto;flex-basis:auto}
.ach.achv .achv-tabs.labels .achv-tab{height:48px;align-content:center;gap:2px}
.achv-tabs.labels .achv-tab svg{width:21px;height:21px}
.achv-tab-lb{font:600 .625rem/1.1 var(--ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.achv-tabs.even .achv-tab-dot{left:calc(50% + 7px);right:auto}
.achv-tabs.labels .achv-tab-dot{top:4px}

.lx-theme-index,.lx-theme-state{padding-top:3px;color:var(--t3);font:500 9px/1.4 var(--ui);letter-spacing:.03em}
.lx-theme-state{max-width:42px;font-size:8px;letter-spacing:0;text-align:right}
.lx-theme-cell>.ad-offer-col{padding:0 14px 14px}
.lx-theme-cell .ad-offer-col .ad-watch.lx-theme-cta{margin:0;min-height:44px;padding:9px 11px;border:1px solid transparent;border-radius:999px;background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;color:var(--lx-button-ink);box-shadow:inset 0 1px 0 var(--lx-light),0 4px 10px var(--lx-shadow);font:500 12px/1.3 var(--ui)}
.lx-theme-cell .ad-watch.lx-theme-cta .theme-time-inline{font-size:10px}
/* кнопка «Выбрать» без рекламы — на месте кнопки листочков, в цветах темы карточки */
.lx-theme-cell>.lx-pick{padding:0 14px 14px}
.lx-pick-btn{display:flex;align-items:center;justify-content:space-between;width:100%;margin:0;min-height:44px;padding:9px 14px;border:1px solid transparent;border-radius:999px;background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;color:var(--lx-button-ink);box-shadow:inset 0 1px 0 var(--lx-light),0 4px 10px var(--lx-shadow);font:500 12px/1.3 var(--ui);cursor:pointer}
:is(.lx-theme-grid.lx-strip>.lx-theme-cell,.lx-pair-night):is([data-lx-material="anime"],[data-lx-material="anime-dark"]){background:linear-gradient(color-mix(in srgb,var(--surface) 58%,transparent),color-mix(in srgb,var(--surface) 58%,transparent)),var(--anime-tile-art) center top/cover no-repeat,var(--surface)}
.lx-pair-night:is([data-lx-material="meme"],[data-lx-material="meme-dark"]){background:linear-gradient(var(--bg2),var(--bg2)) left top/100% 46% no-repeat,var(--surface)}
/* пара «день и ночь»: карточка в цветах дневной половины, ночная — треугольником в правом нижнем углу, как у «Как в системе» */
.lx-pair{position:relative;isolation:isolate}
/* ночная половина пары (решение владельца 19.10): половина карточки по диагонали, как у «Как в системе»; там та же карточка
   в ночной теме — цифры, полоса и часть кнопки в ночных цветах. Только картинка: нажатия проходят к дневной карточке под ней */
.lx-pair-night{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;pointer-events:none;background:var(--lx-stage,var(--surface));color:var(--t1);clip-path:polygon(60% 0,100% 0,100% 100%,40% 100%)}
.lx-pair-night>.ad-offer-col{margin:0;padding:0 14px 14px;gap:7px}.lx-pair-night>.lx-pick{padding:0 14px 14px}
.lx-pair-night :is(.ad-watch,.lx-pick-btn){box-sizing:border-box;width:100%}
:is(.lx-theme-cell,.lx-pair-night):is([data-lx-material="meme"],[data-lx-material="meme-dark"]) :is(.ad-watch.lx-theme-cta,.lx-pick-btn){background:var(--green);border:2px solid var(--meme-tile-shadow);border-radius:12px;box-shadow:3px 3px 0 var(--meme-tile-shadow);color:var(--on-acc);font:700 13px/1.3 var(--ui)}
:is(.lx-theme-cell,.lx-pair-night)[data-lx-material="meme-dark"] :is(.ad-watch.lx-theme-cta,.lx-pick-btn){border-color:var(--meme-outline,#F0F0F0)}
:is(.lx-theme-cell,.lx-pair-night):is([data-lx-material="anime"],[data-lx-material="anime-dark"]) :is(.ad-watch.lx-theme-cta,.lx-pick-btn){background:var(--green);border:1px solid var(--green);border-radius:13px;box-shadow:0 3px 0 color-mix(in srgb,var(--green) 65%,var(--t1));color:var(--on-acc);font:600 13px/1.3 var(--ui)}
.look-tablist{display:flex;gap:22px;flex:1;min-width:0}
:is(.lx-switch-row,.look-seg)>button{text-align:center}
.leaf-plus-list{margin:6px 0 10px;padding-left:18px;font:500 12px/1.5 var(--ui);color:var(--t2)}
.leaf-sheet .leaf-plus .leaf-plus-go{width:100%;margin:2px 0 8px}.lx-switch-h{display:block;margin:0 0 8px;font:650 11px/1.4 var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--t2)}
:is(.lx-switch-row,.look-seg){display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;border:1px solid var(--line);border-radius:14px;background:var(--bg2)}
:is(.lx-switch-row,.look-seg)>button{min-height:40px;padding:6px 8px;border:0;border-radius:10px;background:transparent;color:var(--t2);font:600 12px/1.25 var(--ui);cursor:pointer}
:is(.lx-switch-row,.look-seg)>button.on{background:var(--surface);color:var(--t1);box-shadow:0 1px 4px #10291b1f}

/* Настройки города: короткий обзор, поиск и подробности раскрываются отдельно. */
.sky-set.sky-organized{padding:16px;display:flex;flex-direction:column;gap:12px}
.sky-organized .sx-card{margin:0;padding:16px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}
.sky-organized .sx-card-heading{margin:0 0 12px;padding:0}
.sky-organized h3{margin:0;font:700 15px/1.4 var(--ui);color:var(--t1);letter-spacing:-.01em}
.sky-organized .sky-caption{margin:6px 0 10px;font:500 11px/1.45 var(--ui);color:var(--t2)}
.sky-organized .sky-city-picker>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;list-style:none;cursor:pointer}
.sky-city-current{display:flex;flex-direction:column;min-width:0;gap:3px}
.sky-city-current>b{font:650 17px/1.3 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.sky-city-current>small{font:500 11px/1.4 var(--ui);color:var(--t2)}
.sky-city-change{display:inline-flex;align-items:center;gap:8px;color:var(--green-tx);font:650 11px/1.4 var(--ui);white-space:nowrap}
.sky-city-edit{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.sky-organized .sky-search{display:flex;flex-direction:column;gap:6px;margin:0}
.sky-organized .sky-lbl{font:500 11px/1.4 var(--ui);color:var(--t2)}
.sky-organized input[type="search"],.sky-organized select{box-sizing:border-box;min-height:44px;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--t1);font:500 13px/1.4 var(--ui)}
.sky-organized #sky-results{margin-top:10px;max-height:260px;overflow-y:auto;overscroll-behavior:contain}
.sky-organized #sky-results .ps-action{min-height:48px;padding:10px 2px;font-size:12px}
.sky-organized #sky-results .ps-action b{font:600 12px/1.4 var(--ui)}
.sky-organized #sky-results small{font-size:10px}
.sky-organized #sky-results .sky-hint{font:500 11px/1.4 var(--ui);margin:10px 0 4px}
.sky-reset{margin-top:12px;min-height:40px;padding:8px 12px;background:transparent;color:var(--t2);border:1px solid var(--line);border-radius:10px;font:500 11px/1.4 var(--ui);cursor:pointer}
.sky-segments{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;padding:4px;border:1px solid var(--line);border-radius:13px;background:var(--bg2)}
.sky-segments .sky-opt{min-height:40px;min-width:0;padding:7px 3px;margin:0;border:0;border-radius:9px;background:transparent;color:var(--t2);font:600 11px/1.3 var(--ui);cursor:pointer;overflow-wrap:anywhere}
.sky-segments .sky-opt.on{background:var(--surface);color:var(--green-tx);box-shadow:0 1px 5px #10291b14}
.sky-country-row{display:flex;flex-direction:column;gap:7px;font:500 11px/1.4 var(--ui);color:var(--t2)}
.sky-weather-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.sky-switch{position:relative;flex:none;width:48px;height:28px;padding:3px;border:1px solid var(--line);border-radius:18px;background:var(--bg2);cursor:pointer}
.sky-switch>span{display:block;width:20px;height:20px;border-radius:50%;background:var(--t3)}
.sky-switch[aria-checked="true"]{background:var(--green-tx);border-color:var(--green-tx)}
.sky-switch[aria-checked="true"]>span{transform:translateX(19px);background:var(--surface)}
.sky-switch:disabled{opacity:.45;cursor:default}
.sky-organized .sky-weather .sky-caption{margin:8px 0 0}
.sky-widget>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:24px;list-style:none;cursor:pointer;color:var(--t1);font:650 13px/1.4 var(--ui)}
.sky-widget-body{padding-top:12px}
.sky-widget-add{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--green-bg);color:var(--green-tx);font:600 12px/1.4 var(--ui);cursor:pointer}
.sky-data-help{padding:0 4px;color:var(--t2);font:500 11px/1.5 var(--ui)}
.sky-data-help>summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;cursor:pointer;list-style:none}
.sky-data-help p{margin:0 0 12px;font:500 11px/1.55 var(--ui)}
.sky-organized summary::-webkit-details-marker{display:none}
.sky-organized button:focus-visible,.sky-organized summary:focus-visible{outline:2px solid var(--green-tx);outline-offset:2px}
@media(max-width:374px){.sky-set.sky-organized{padding:12px;gap:10px}.sky-organized .sx-card{padding:14px}.sky-segments .sky-opt{font-size:10px}}

/* Единое выравнивание строк и неподвижная область действия справа. */
.sky-organized .sky-city-picker>summary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:2px 0;text-align:left}
.sky-city-change{display:inline-grid;grid-template-columns:auto 14px;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 12px;border:1px solid var(--line);border-radius:11px;background:var(--bg);text-align:left;flex:none}
.sky-organized .sky-widget>summary,.sky-organized .sky-data-help>summary{display:grid;grid-template-columns:minmax(0,1fr) 14px;gap:12px;align-items:center;min-height:44px;text-align:left}
.sky-organized .sky-disclosure-icon{display:grid;place-items:center;width:14px;height:14px;margin:0;padding:0;flex:none;line-height:1;color:var(--t2)}
.sky-organized .sky-disclosure-icon::before{content:'';display:block;box-sizing:border-box;width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transform-origin:center}
.sky-city-picker[open]>summary .sky-disclosure-icon::before,.sky-widget[open]>summary .sky-disclosure-icon::before,.sky-data-help[open]>summary .sky-disclosure-icon::before{transform:rotate(45deg)}
.sky-organized #sky-results .ps-action{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left}
.sky-organized #sky-results .ps-action>span{min-width:0;text-align:left}
.sky-organized #sky-results .ps-action>i{flex:none;width:14px;display:grid;place-items:center;margin:0}
.sky-organized .sky-opt{text-align:center}
.sky-organized .sky-reset{display:block;width:100%;min-height:44px;text-align:center}
.sky-organized .sky-widget-add{display:grid;grid-template-columns:minmax(0,1fr) 14px;text-align:left;gap:12px}
.sky-organized .sky-widget-add>span{width:14px;display:grid;place-items:center;margin:0;line-height:1}
@media(max-width:374px){.sky-city-change{padding:0 10px;gap:6px}.sky-organized .sky-city-picker>summary{gap:8px}}

/* Перенос в приложение (19.10.2026): лист настроек уже даёт поля 16 px, а section-design.css и choice-ui.css грузятся позже pets.css.
   Здесь только возвращаются значения макета ChatGPT (aligned-controls.html) поверх этих общих правил; своих решений нет. */
.functional .sky-set.sky-organized{display:flex;gap:12px;padding:16px 0}
.functional .sky-organized .sx-card-heading{display:block}
.functional .sky-organized .sx-card h3{margin:0;font:700 15px/1.4 var(--ui);letter-spacing:-.01em}
.functional .sky-organized .sky-reset{font:500 11px/1.4 var(--ui)}
.functional .sky-organized .sky-switch{font:400 13.3333px/normal var(--ui)}
.functional .sky-organized .sky-widget-add{font:600 12px/1.4 var(--ui)}
.functional .sky-organized #sky-results .ps-action{line-height:normal}
.functional .sky-organized .sky-country-row .choice-trigger{min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--t1);font:500 13px/1.4 var(--ui)}
@media(max-width:374px){.functional .sky-set.sky-organized{padding:12px 0;gap:10px;margin:0 -4px}}
.functional .sky-organized .sky-country-row .choice-trigger span{line-height:1}
/* «Оформление»: заголовок страницы только для чтения с экрана (видимой шапки нет, js/sheets.js) */
.look-title{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Витрина: доступ сверху, размеры внутри вкладки, один образец на странице. */
.pet-widget-gallery .wg-storebar{display:flex;align-items:center;gap:12px;margin:0 0 20px;padding:4px;border:1px solid var(--line,#dfe5df);border-radius:17px;background:var(--bg2,#eff2ed)}
.wg-plan-tabs{position:relative;isolation:isolate;display:grid;grid-template-columns:1fr 1fr;flex:1;min-width:0;padding:3px}
.wg-plan-tabs:before{content:'';position:absolute;z-index:-1;inset:3px auto 3px 3px;width:calc((100% - 6px)/2);border-radius:11px;background:var(--surface,#fff);box-shadow:0 1px 5px #20332612;transform:translateX(calc(var(--wg-tab)*100%));transition:transform .22s cubic-bezier(.2,.7,.2,1)}
.wg-plan-tabs button{display:grid;place-items:center;min-height:40px;padding:6px 12px;border:0;border-radius:11px;background:transparent;color:var(--t2,#5b685f);font:700 14px/1.3 var(--ui);cursor:pointer}
.wg-plan-tabs button[aria-selected=true]{color:var(--green-tx,#365a46)}
.wg-wallet{display:flex;align-items:center;gap:6px;flex:none;padding:0 12px 0 5px;color:var(--green-tx,#365a46);font-size:13px;font-variant-numeric:tabular-nums}
.wg-wallet svg{width:17px;height:17px}
.pet-widget-gallery .wg-group{margin:0 0 26px}
.pet-widget-gallery .wg-group>h3{font-size:15px;font-weight:700;margin:0 0 12px;letter-spacing:0}
.pet-widget-gallery .wg-grid{gap:20px 12px}
.pet-widget-gallery .wg-pv{height:145px;border-radius:20px;background:radial-gradient(ellipse at 15% 0%,#ffffffb8,transparent 75%),var(--fill,#edf0e9);border-color:var(--line,#e0e6df);box-shadow:inset 0 1px 0 #ffffff80}
.pet-widget-gallery .wg-pv-in{padding:14px}
.wg-access-label{display:inline-flex;align-items:center;justify-content:center;gap:4px;font:600 10px/1.4 var(--ui);font-variant-numeric:tabular-nums;color:var(--green-tx,#365a46)}
.wg-access-label svg{width:13px;height:13px}
.wg-access-label [data-leaf-until]{white-space:nowrap}
.pet-widget-gallery [hidden]{display:none!important}
.pet-widget-gallery .wg-page .pet-pin{display:block;width:100%;min-height:46px;margin:16px 0 0;padding:11px 16px;border-radius:14px;font:700 13px/1.4 var(--ui)}
.wg-plan-tabs button:focus-visible{outline:2px solid var(--green-tx,#365a46);outline-offset:2px}
@media(max-width:359px){.pet-widget-gallery .wg-pv{height:130px}.pet-widget-gallery .wg-grid{gap:18px 10px}}
@media(prefers-reduced-motion:reduce){.wg-plan-tabs:before{transition:none}.pet-widget-gallery .wg-pv{transition:none}}

/* Магазин «Виджеты Зарока» — вариант А макета ChatGPT (HANDOFF 19.10.2026, variants.css без ветки Б): карточка с ценой или таймером
   сверху и действием в подложке, «Открыты сейчас», страница виджета с общей стеклянной панелью */
.wv-store .wg-grid,.wv-active-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 12px}
.wv-product{min-width:0;display:flex;flex-direction:column;align-items:stretch}
.wv-preview-wrap,.wv-panel{position:relative;min-width:0}
/* Free и Plus — один контейнер карточки виджета (сборка 95, владелец 21.10): у Free (.wv-preview-wrap) то же скругление, что у Plus (.wv-panel), — рамка темы (ремёсла, Glass) идёт по скруглению */
.wv-panel,.wv-preview-wrap{border-radius:20px;isolation:isolate}
.wv-panel .wv-preview .wg-pv{height:180px}
.wv-panel .wv-preview .wg-pv-in{padding:34px 14px 55px}
.wv-panel>.wv-action{position:absolute;left:9px;right:9px;bottom:9px;width:calc(100% - 18px);min-height:36px;padding:7px 9px;border-radius:11px;background:color-mix(in srgb,var(--surface,#fff) 90%,transparent);box-shadow:inset 0 1px 0 #ffffff70,0 2px 6px #18342208;backdrop-filter:blur(10px)}
.wv-panel>.wv-action.is-active{background:color-mix(in srgb,var(--green-bg,#e5eee6) 92%,var(--surface,#fff))}
.wv-preview{position:relative;display:block;min-width:0;width:100%;border:0;padding:0;border-radius:20px;background:none;cursor:pointer;color:var(--t1);font:inherit}
.wv-preview .wg-pv{height:150px}
.wv-preview .wg-pv-in{padding:36px 14px 16px}
.wv-meta{position:absolute;top:10px;right:10px;display:inline-flex;align-items:center;gap:4px;min-height:23px;padding:4px 7px;border:1px solid var(--line);border-radius:9px;background:var(--surface,#fff);box-shadow:0 1px 4px #29412a08;color:var(--green-tx,#365a46);font:500 10px/1.3 var(--ui);pointer-events:none}
.wv-meta svg{width:13px;height:13px;flex:none}.wv-meta b{font-weight:700}.wv-meta span{white-space:nowrap}
.wv-meta .wg-access-label{font-size:11px;gap:4px}
.wv-name{font:600 13px/1.35 var(--ui);color:var(--t1);text-align:center;margin:9px 0 8px;min-height:2.7em;display:grid;align-items:center}
.wv-action{display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;width:100%;min-height:40px;border:1px solid var(--line,#d9e2d8);border-radius:12px;background:var(--surface,#fff);color:var(--green-tx,#365a46);font:700 11px/1.3 var(--ui);padding:8px;cursor:pointer}
.wv-action-label{display:inline-flex;align-items:center;justify-content:center;gap:5px}.wv-action-label svg{width:14px;height:14px;flex:none}
.wv-product.is-active .wg-pv{border-color:var(--green-tx,#365a46);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--green-tx,#365a46) 15%,transparent)}
.wv-action.is-active{background:var(--green-bg,#e5eee6);border-color:color-mix(in srgb,var(--green-tx,#365a46) 40%,var(--line))}
.wv-active-section{margin:0 0 24px}.wv-active-section>h3{font:700 15px/1.4 var(--ui);margin:0 0 12px}
.wv-store[data-wg-open]>.wv-active-section{display:none}
.wv-preview:focus-visible,.wv-action:focus-visible{outline:2px solid var(--green-tx);outline-offset:3px}







.wv-detail-stage{position:relative;display:flex;align-items:center;justify-content:center;min-height:235px;padding:52px 20px 26px;box-sizing:border-box}
.wv-detail-art{width:100%;min-width:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.wv-detail-art>*{width:100%;max-width:100%;margin:0!important;box-sizing:border-box}
.wv-detail-meta{position:absolute;top:12px;right:12px;display:flex;align-items:center;gap:5px;min-height:28px;border:1px solid var(--line);border-radius:10px;padding:5px 9px;background:var(--surface,#fff);color:var(--green-tx);font:500 11px/1.3 var(--ui);font-variant-numeric:tabular-nums}
.wv-detail-meta svg{width:14px;height:14px}.wv-detail-meta .wg-access-label{font-size:12px}

.wv-store .wv-detail-primary{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;margin:0;padding:12px 16px;border:1px solid transparent;border-radius:14px;font:700 13px/1.4 var(--ui);cursor:pointer;box-sizing:border-box}
.wv-store .wv-detail-primary{background:var(--green-tx,#365a46);color:var(--surface,#fff);box-shadow:inset 0 1px 0 #ffffff18}


.wv-detail-setup{display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding:13px;margin:0 0 16px;border:1px solid var(--line);border-radius:14px;font:400 12px/1.5 var(--ui);color:var(--t2)}
.wv-detail-setup>.widget-step-n{display:none}.wv-detail-setup>.widget-step-t{flex:1 1 100%}.wv-detail-setup .pet-pin{margin:0!important;width:auto!important}
.wv-detail-primary:focus-visible{outline:2px solid var(--green-tx);outline-offset:3px}
@media(max-width:359px){.wv-preview .wg-pv{height:138px}.wv-meta{right:7px;top:8px;padding:4px 5px;font-size:9px}.wv-name{font-size:12px}}
/* широкий экран — адаптивная сетка приложения (три столбца, как .wg-grid) */
@media (min-width:620px){.wv-store .wg-grid,.wv-active-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.wv-preview .wg-pv{transition:none}}

/* «Таймер» 2 × 2 в каталоге виджетов (20.10.2026, js/pet.js focusMiniMock): как FocusMini.java — слово, отсчёт, одна кнопка,
   Зарок за столом в правом нижнем углу (стол уходит за край, ножки на нижнем крае: data-zstand) */
.pw-focus-mini{width:250px;height:250px;max-width:100%;padding:20px;display:flex;flex-direction:column;align-items:flex-start;box-sizing:border-box}
.pw-fm-head{font-size:13px;font-weight:600;color:var(--pw-muted,var(--t2))}
.pw-focus-mini .pw-time{font-size:44px;margin:4px 0 0;position:relative;z-index:2}
.pw-fm-play{margin-top:auto;width:52px;height:52px;border-radius:16px;background:var(--pw-ac,var(--green,#4d7965));position:relative;z-index:2;flex:none}
.pw-fm-play::before{content:'';position:absolute;left:21px;top:17px;border-left:14px solid var(--pw-bg,#fff);border-top:9px solid transparent;border-bottom:9px solid transparent}
.pw-fm-art{position:absolute;right:-13%;bottom:0;width:62%;line-height:0;pointer-events:none}
.pw-fm-art img{display:block;width:100%;height:auto}
/* «Лист-письмо» — сообщение Зарока внутри приложения (решение владельца 21.10.2026, пакет ChatGPT system-surfaces,
   вариант «Лист-письмо»): уведомление, пришедшее при открытом приложении (js/notify.js letter), и реплика Зарока у края
   экрана (js/companion.js). Размеры, отступы и движение — один в один из витрины (surfaces.css: .sp-notification, .sp-inapp,
   .sp-motion-leaf, .sp-note-*, .sp-trail, .sp-seal, .sp-note-close; #sp-overlay — место сверху). Темы-ремёсла — бумага
   и материал темы; остальные темы — тот же вид в своих цветах.
   «Уменьшить движение» — без анимации. */
.zl-letter{position:relative;overflow:hidden;border-radius:22px;padding:13px 15px;color:#20392d;background:#f3f5f0ed;border:1px solid #fff7;box-shadow:0 12px 28px #122e2a26;text-align:left;font-family:var(--ui)}
.zl-meta{display:flex;align-items:center;gap:7px;font-size:8px;letter-spacing:.8px;color:#657261}
.zl-meta i{display:grid;place-items:center;width:19px;height:19px;background:#476d4b;color:white;border-radius:6px}
.zl-meta svg{width:13px;height:13px}
.zl-meta span{margin-left:auto;font-size:8px;letter-spacing:0}
.zl-copy{margin-top:9px}
.zl-copy>b{font-size:12px;font-weight:650;display:block}
.zl-copy p{font-size:10px;line-height:1.5;margin:4px 0 0;color:#62725f}
.zl-extra{display:flex;align-items:center;gap:10px;margin-top:13px;padding-top:12px;border-top:1px solid #34593824}
.zl-extra>div:last-child{flex:1;min-width:0}
.zl-extra small{font-size:8px;letter-spacing:1px;opacity:.7}
.zl-extra .zl-trail{color:#476e48;margin-top:6px}
.zl-buttons{display:flex;gap:5px;margin-top:12px}
.zl-buttons button{flex:1;min-height:35px;border:0;border-radius:9px;background:#dfe7d9;color:#335039;font-size:9px;padding:5px;font-family:inherit;text-align:center;justify-content:center}
.zl-buttons button:first-child{background:#44694a;color:white}
.zl-seal{width:40px;height:45px;flex:none;border-radius:50% 50% 40% 55%;display:grid;place-items:center;background:#d9e6cb;color:#4f7248}
.zl-seal svg{width:23px;height:23px}
.zl-trail{display:flex;align-items:center;gap:3px;color:var(--green-tx)}
.zl-trail span{font:700 12px var(--ui);white-space:nowrap;margin-right:6px}
.zl-trail i{width:12px;opacity:.25;display:block}
.zl-trail i.done{opacity:1}
.zl-trail svg{width:100%;height:16px;display:block}
/* крестик — внутри листа, в правом верхнем углу (владелец 21.10: раньше вылезал за скруглённый угол); «сейчас» отодвинуто */
/* письмо о деле сверху экрана (макет «Уведомления Зарока», 25.10.2026): тонкий цветной край, заголовок крупнее, кнопки 46 px,
   вторая — тихая; крестик 44 px. Реплика Зарока у края экрана (.pa-bubble.zl-host) остаётся компактной */
/* в приложении: бумага и материал (у тем-ремёсел) — .sp-inapp */
.zl-inapp{background:var(--surface,#f3f5f0);color:var(--t1);border-color:var(--line);border-radius:25px 25px 25px 10px}
.zl-inapp .zl-copy p,.zl-inapp .zl-meta{color:var(--t2)}
.zl-inapp .zl-extra .zl-trail{color:var(--green-tx)}
.zl-inapp .zl-copy{padding-bottom:4px}
html[data-artisan] .zl-inapp{background:var(--paper),var(--material);border-color:var(--edge);box-shadow:var(--relief)}
/* остальные темы: зелёные детали витрины — в цветах темы */
html:not([data-artisan]) .zl-meta i{background:var(--green,#476d4b);color:var(--on-acc,#fff)}
html:not([data-artisan]) .zl-buttons button{background:var(--green-bg,#dfe7d9);color:var(--green-tx,#335039)}
html:not([data-artisan]) .zl-buttons button:first-child{background:var(--green,#44694a);color:var(--on-acc,#fff)}
html:not([data-artisan]) .zl-seal{background:var(--green-bg,#d9e6cb);color:var(--green-tx,#4f7248)}
html:not([data-artisan]) .zl-extra{border-top-color:var(--line,#34593824)}
/* «Лист-письмо»: вход и три листика */
.zl-motion-leaf{animation:zl-leaf-entry .7s cubic-bezier(.22,1,.36,1) both}
.zl-leaves{position:absolute;right:8px;top:10px;width:65px;height:65px;pointer-events:none;opacity:.25}
.zl-leaves>svg{position:absolute;width:16px;height:16px;animation:zl-leaf-drift 1.15s ease-out both}
.zl-leaves>svg:nth-child(2){right:20px;top:20px;animation-delay:.08s}
.zl-leaves>svg:nth-child(3){right:5px;top:37px;animation-delay:.18s}
/* реплика Зарока у края экрана (js/companion.js): то же письмо вместо прежнего облачка; появляется, когда Зарок добежал */
.pa-bubble.zl-host{padding:0;background:none;border:0;box-shadow:none;max-width:250px;opacity:1;transform:none}
.pet-actor.in .pa-bubble.zl-host{animation:none}
.pa-bubble.zl-host .zl-letter{padding:11px 13px}
.pa-bubble.zl-host .zl-motion-leaf,.pa-bubble.zl-host .zl-leaves>svg{animation-delay:.75s}
.pa-bubble.zl-host .zl-leaves>svg:nth-child(2){animation-delay:.83s}
.pa-bubble.zl-host .zl-leaves>svg:nth-child(3){animation-delay:.93s}
@keyframes zl-leaf-entry{from{opacity:0;transform:translateY(-14px) rotate(-2deg) scale(.98)}to{opacity:1;transform:none}}
@keyframes zl-leaf-drift{from{opacity:0;transform:translateY(-8px) rotate(-20deg)}35%{opacity:.8}to{opacity:.25;transform:translate(3px,4px) rotate(14deg)}}
@media(prefers-reduced-motion:reduce){.zl-letter,.zl-leaves>svg{animation:none!important}}
/* Сборка 96 (макет ChatGPT out/v5/settings-lab): строка «Оформление виджетов» под каталогом и «Цвет, вид и Зарок всех виджетов» на странице
   виджета; страница общего оформления с подписью «Для всех виджетов»; у «Луны» — ползунок прозрачности, оттенки стекла и свой цвет */





.wv-slider-head{display:flex;justify-content:space-between;align-items:center;padding:10px 0 6px;font:600 13px/1.4 var(--ui)}.wv-slider-head output{font-variant-numeric:tabular-nums;color:var(--green-tx);font-weight:700}
.wv-glass-slider{padding:0 0 12px}.wv-glass-slider input{display:block;width:100%;height:44px;margin:0;accent-color:var(--green-tx);touch-action:pan-y}.wv-glass-slider>div{display:flex;justify-content:space-between;font-size:10px;color:var(--t2)}
.wv-glass-colors{display:flex;gap:6px}.wv-glass-colors>button{flex:1;min-width:0;min-height:66px;display:grid;place-items:center;gap:2px;padding:6px;border:0;border-radius:14px;background:none;color:var(--t2);cursor:pointer}
.wv-glass-colors>button[aria-checked=true]{background:var(--green-bg);color:var(--green-tx);font-weight:700}.wv-glass-colors i{display:block;width:28px;height:28px;border-radius:50%;box-shadow:inset 0 1px 2px #fff,0 1px 3px #00000026}.wv-glass-colors small{font-size:9px}
.wv-own-tint{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0 4px;font:500 12px/1.4 var(--ui);color:var(--t1)}.wv-own-tint input{width:54px;height:44px;padding:5px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.wv-detail-art[data-moon-own][data-moon-look] .pw-moon{background:var(--moon-bg);color:var(--moon-ink);border:1px solid #ffffff59;backdrop-filter:blur(12px)}.wv-detail-art[data-moon-own] .pw-moon :is(b,span){text-shadow:none}

/* «Ваши листочки»: заголовок только для чтения с экрана (23.10) */
.achv-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Редактор виджета (макет GPT out/v5/widget-editor, владелец 23.10.2026): превью, «Оформление» с «Общее / Своё», «Содержание» и одна
   кнопка внизу. Шапка профиля, его вкладки и нижняя навигация на этом экране скрыты — без глобального класса: :has по открытой
   странице галереи, поэтому после выхода или смены вкладки ничего не остаётся скрытым */
body:has(.pr-home .pet-widget-gallery[data-wg-open]) :is(.pr-home-hero,.pr-home-tabs-bar){display:none!important}
body:has(.pet-widget-gallery[data-wg-open]) .tabbar:not(.unified-return){display:none!important}
/* редактор: шапка «‹ · название · (i)», превью, карточки и закреплённая кнопка */
.wv-ed-top{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:6px;min-height:56px;margin:0 0 12px;padding:6px 0;background:var(--bg);border-bottom:1px solid var(--line)}
.pet-widget-gallery .wv-ed-top h2{flex:1;min-width:0;margin:0;font:700 17px/1.3 var(--ui);letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;outline:none}
.wv-ed-back,.wv-ed-info{flex:none;display:grid;place-items:center;width:44px;height:44px;margin:0;padding:0;border:0;border-radius:12px;background:none;color:var(--t1);cursor:pointer}
.wv-ed-info{color:var(--t3)}
.wv-ed-back svg,.wv-ed-info svg{width:22px;height:22px}
.wv-ed-back:focus-visible,.wv-ed-info:focus-visible{outline:2px solid var(--green-tx);outline-offset:2px}
.wv-ed-about{margin:-4px 2px 12px;font:400 13px/1.55 var(--ui);color:var(--t2)}
.wv-ed-stage{min-height:0;padding:22px 16px;margin:0 0 14px;border:1px solid var(--line);border-radius:22px;background:var(--fill)}
.wv-ed-sec{margin:0 0 12px;padding:16px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}
.wv-ed-sec>h3{margin:0;font:700 15px/1.4 var(--ui);color:var(--t1)}
.wv-ed-content>h3{margin-bottom:6px}
.wv-ed-look .wv-cfg-h{margin:14px 0 8px;font:700 13px/1.4 var(--ui);color:var(--t1)}
.wv-ed-look .widget-skin{min-height:36px;font-size:11px}
.wv-ed-look .wv-cfg-toggle{width:100%;margin:8px 0 0;padding:8px 0;border:0;background:none}
/* «Применить ко всем виджетам» — первой строкой под заголовком; у «Времени внимания» выбор только для всех */
.wv-ed-look .wv-ed-all{margin:4px 0 2px}.wv-ed-look .wv-ed-all:disabled{opacity:1;cursor:default}
.wv-ed-quiet{margin:8px 2px 0;font:400 12px/1.5 var(--ui);color:var(--t3)}
.wv-ed-pack{margin:6px 0 4px}.wv-ed-pack .fill-btn{width:100%;margin-top:6px}
.wv-ed-foot{position:sticky;bottom:0;z-index:5;margin:14px 0 0;padding:12px 0 calc(12px + env(safe-area-inset-bottom,0px));background:var(--bg);border-top:1px solid var(--line)}
.wv-ed-foot .wv-ed-quiet{text-align:center}

/* Unified return controls: candidate audit patch, 28 Oct 2026. */
.unified-return{position:sticky!important;bottom:0!important;inset-inline:auto!important;width:100%!important;transform:none!important;display:flex!important;align-items:center;justify-content:center;flex:none;margin:0!important;padding:7px 12px calc(7px + var(--safe-bottom,env(safe-area-inset-bottom,0px)));min-height:64px;background:var(--surface);border-top:1px solid var(--line);z-index:8;box-sizing:border-box}
.unified-return .tab{min-height:48px;min-width:64px}.unified-return svg{width:23px;height:23px}.wv-ed-top{gap:0}.wv-ed-foot{padding-bottom:0}.wv-ed-foot .wv-primary-area{padding-bottom:10px}.wv-ed-foot .unified-return{background:var(--bg)}.achv-page-body{padding-bottom:8px}.achv-screen .unified-return{box-shadow:none;border-radius:0}.achv-page>.unified-return{position:sticky!important}

/* No visual header or reserved header slot on content-first internal pages. */
.pf-nohead{padding-top:0}.pf-page-help{padding:14px 0 6px;display:flex;justify-content:flex-end}.srow-sr{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* Widget help belongs to its preview; closed by default, no footer caption. */
.wv-ed-stage{position:relative}.wv-preview-help{position:absolute;right:8px;top:8px;width:40px;z-index:6;font:400 13px/1.5 var(--ui);color:var(--t2)}.wv-preview-help>summary{margin-left:auto;width:40px;height:40px;display:grid;place-items:center;cursor:pointer;list-style:none;border-radius:50%;background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--t1);z-index:3}.wv-preview-help>summary::-webkit-details-marker{display:none}.wv-preview-help>summary>span{width:20px;height:20px;border:1.5px solid currentColor;border-radius:50%;text-align:center;line-height:18px;font:600 13px/18px var(--ui)}.wv-preview-help[open]{width:calc(100% - 16px);max-width:360px}.wv-preview-help[open]>summary{background:var(--surface);box-shadow:0 0 0 1px var(--line)}.wv-help-content{max-height:min(300px,45dvh);overflow-y:auto;overscroll-behavior:contain;box-shadow:0 8px 24px #0002;padding:12px 14px;margin-top:12px;border:1px solid var(--line);border-radius:15px;background:var(--surface);text-align:left}.wv-help-content p{margin:7px 0}.neural-nav-help{margin-top:16px;color:var(--t2);font:400 13px/1.5 var(--ui)}.neural-nav-help summary{cursor:pointer;min-height:44px;padding:12px 0}

/* Widget editor owns the available app height. Only settings scroll; both actions
   stay in one footer. Native safe-bottom is consumed once by the return bar. */
.pr-home:has(.pet-widget-gallery[data-wg-open]){display:flex;flex-direction:column;min-height:0;overflow:hidden}
.pr-home-content:has(.pet-widget-gallery[data-wg-open]),.pr-home-panel:has(.pet-widget-gallery[data-wg-open]){display:flex;flex-direction:column;flex:1;min-height:0;padding:0}
.pet-widget-gallery[data-wg-open]{display:flex;flex-direction:column;flex:1;min-height:0;padding:0;overflow:hidden}
.pet-widget-gallery[data-wg-open]>.wg-pages{display:flex;flex-direction:column;flex:1;min-height:0}
.pet-widget-gallery[data-wg-open] .wg-page:not([hidden]){display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
.wv-ed-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:12px;scrollbar-gutter:auto}
.pet-widget-gallery[data-wg-open] .wv-ed-foot{position:relative;flex:none;margin:0;padding:12px 12px 0;z-index:8}
.wv-ed-foot .unified-return{position:relative!important}

/* The full achievements collection had the same short-page sticky-footer issue.
   A reward dialog remains a dialog, with safe areas owned by its outer layer. */
.achv-screen.achv-page{display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box;padding-bottom:0}
.achv-page>.achv-page-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.achv-page>.unified-return{position:relative!important;flex:none}
.achv-detail .unified-return{padding-bottom:7px}
.pr-home-panel:has(.pet-widget-gallery[data-wg-open]){min-height:0!important}

/* Price/timer and help share a compact top row when rewarded access is offered. */
.wv-ed-stage:has(.wv-detail-meta){padding-top:56px}
.wv-ed-stage .wv-detail-meta{right:auto;left:12px;max-width:calc(100% - 76px);box-sizing:border-box}


/* ---- onboarding.css ---- */
/* Localized product walkthrough. All visible copy is DOM text from onboarding-demo.js. */
.onb-s1 .onb-head h1{font-size:27px;max-width:330px}.onb-s1 .onb-head p{font-size:13px;text-wrap:initial}.onb-demo{margin:17px 0 0;flex-shrink:0}.od-label{display:flex;justify-content:space-between;align-items:center;margin:0 3px 10px;color:#596e60;font-size:9px;letter-spacing:1.2px;font-weight:700}.od-label small{font-size:10px;font-weight:400;letter-spacing:0;color:#7b857b}.od-stage{height:340px;border-radius:26px;overflow:hidden;background:#e9ede5;position:relative;pointer-events:none;user-select:none;display:flex;justify-content:center;padding-top:15px}.od-device{width:264px;flex-shrink:0;height:367px;border:5px solid #263e32;border-radius:30px;background:#f9faf6;box-shadow:0 12px 30px #2438291a;overflow:hidden;position:relative}.od-speaker{height:4px;width:38px;border-radius:4px;background:#cad3c7;margin:8px auto}.od-screen{position:relative;height:328px;margin:0 9px;overflow:hidden;color:#25392d;font-family:var(--ui)}.od-top{height:32px;display:flex;align-items:center;gap:6px;border-bottom:1px solid #e3e8df;font-size:12px}.od-top>span{font-size:16px}.od-top small{margin-left:auto;font-size:9px;color:#738372}
.od-voice-phase,.od-transcript,.od-review,.od-saved,.od-morning{position:absolute;left:0;right:0;top:42px}.od-voice-phase{animation:od-first 24s linear both}.od-voice{background:white;border:1px solid #e2e8df;border-radius:13px;padding:10px;display:flex;align-items:center;gap:8px}.od-mic{width:30px;height:30px;border-radius:50%;background:#e5ece3;display:grid;place-items:center;font-size:17px;color:#375f49}.od-voice>div{flex:1;display:grid;gap:3px}.od-voice b{font-size:11px}.od-voice small,.od-voice-time{font-size:8px;color:#7a877c}.od-wave{display:flex;align-items:center;justify-content:center;gap:4px;height:74px}.od-wave i{height:18px;width:3px;border-radius:3px;background:#6c8b75;animation:od-wave 1s ease-in-out infinite alternate}.od-wave i:nth-child(3n){height:30px;animation-delay:.2s}.od-wave i:nth-child(4n){height:12px;animation-delay:.5s}
.od-transcript{animation:od-transcript 24s linear both;background:#e5eee2;border-radius:12px;padding:13px;line-height:1.48}.od-transcript small,.od-review>small,.od-morning>small{font-size:8px;color:#66816a;font-weight:700;letter-spacing:.3px}.od-transcript p{font-size:11px;margin:8px 0 0}.od-review{animation:od-review 24s linear both;background:white;border:1px solid #e1e8dc;border-radius:14px;padding:11px 12px 12px}.od-review p{font-size:10px;font-weight:650;margin:7px 0 6px}.od-items{display:grid}.od-item{display:flex;align-items:center;gap:7px;min-height:26px;border-top:1px solid #edf0ea;font-size:9.5px;line-height:1.2}.od-review .od-item{animation:od-row 24s linear both;animation-delay:calc(var(--od-i)*.32s)}.od-item-check{width:12px;height:12px;flex:none;border:1px solid #96ad9b;border-radius:3px}.od-question{display:block;font-size:10px;margin:9px 0 8px}.od-choices{display:flex;gap:7px}.od-choices>*{flex:1;border-radius:7px;padding:7px 3px;text-align:center;font-size:9px;font-weight:650}.od-choices span{border:1px solid #cbd8cc}.od-choices strong{color:#fff;background:#3e6653;animation:od-confirm 24s linear both}
.od-saved{animation:od-saved 24s linear both;top:90px;display:grid;justify-items:center;gap:15px;text-align:center;padding:25px 15px}.od-saved-check{width:38px;height:38px;border-radius:50%;background:#3e6653;color:#fff;display:grid;place-items:center;font-size:19px}.od-saved b{font-size:14px;line-height:1.3}.od-morning{animation:od-morning 24s linear both}.od-morning h3{font-size:19px;margin:5px 0 9px}.od-morning-count{font-size:9px;color:#61746a;margin-bottom:8px}.od-morning .od-item{font-size:9.5px;min-height:30px}.od-widget-line{font-size:9px;font-weight:650;color:#426b54;padding:11px 0;border-top:1px solid #edf0ea}.od-caption{position:relative;height:32px;margin-top:13px;text-align:center;font-size:12px;font-weight:600;color:#38543f}.od-caption>span{position:absolute;inset:0}.od-caption-voice{animation:od-first 24s linear both}.od-caption-check{animation:od-caption-check 24s linear both}.od-caption-done{animation:od-caption-done 24s linear both}.od-controls{display:flex;align-items:center;justify-content:space-between;gap:7px;font-size:9px;color:#7a8275}.od-controls button{font:600 10px var(--ui);background:transparent;border:0;padding:7px 2px;color:#4d6955;min-height:34px}.od-controls span{text-align:center}.onb-demo *{animation-play-state:var(--od-play,running)}.od-paused{--od-play:paused}.od-restart *{animation:none!important}.onb-mini-features{font-size:11px;line-height:1.7;text-align:center;color:var(--t3);margin:14px 8px 0}.onb-s1 .onb-ft{padding-top:16px}.onb-s1 .onb-skip{font-size:12px}
@keyframes od-first{0%,17%{opacity:1;transform:none}22%,100%{opacity:0;transform:translateY(-6px)}}@keyframes od-transcript{0%,17%{opacity:0;transform:translateY(8px)}22%,34%{opacity:1;transform:none}39%,100%{opacity:0;transform:translateY(-8px)}}@keyframes od-review{0%,35%{opacity:0;transform:translateY(8px)}41%,75%{opacity:1;transform:none}79%,100%{opacity:0;transform:translateY(-8px)}}@keyframes od-row{0%,38%{opacity:0}47%,100%{opacity:1}}@keyframes od-confirm{0%,70%{filter:brightness(1)}73%,76%{filter:brightness(.75)}79%,100%{filter:brightness(1)}}@keyframes od-saved{0%,76%{opacity:0;transform:translateY(8px)}81%,86%{opacity:1;transform:none}91%,100%{opacity:0;transform:translateY(-8px)}}@keyframes od-morning{0%,88%{opacity:0;transform:translateY(8px)}94%,100%{opacity:1;transform:none}}@keyframes od-caption-check{0%,34%{opacity:0}40%,75%{opacity:1}80%,100%{opacity:0}}@keyframes od-caption-done{0%,76%{opacity:0}82%,100%{opacity:1}}@keyframes od-wave{to{transform:scaleY(.45)}}
@media(max-height:720px){.od-stage{height:304px}.onb-s1 .onb-head h1{font-size:24px}.onb-s1 .onb-head p{font-size:12px}.onb-demo{margin-top:11px}.onb-mini-features{margin-top:7px}.od-caption{margin-top:9px}}
@media(prefers-reduced-motion:reduce){.onb-demo *{animation:none!important}.od-voice-phase,.od-transcript,.od-review,.od-saved,.od-caption-voice,.od-caption-check{display:none}.od-morning,.od-caption-done{opacity:1;transform:none}.od-controls{display:none}.od-stage{height:304px}}
/* Keep the confirmation choice in frame on real phone heights. */
.od-stage{height:360px}.od-review .od-item{min-height:23px}.od-review p{margin:5px 0}.od-review .od-question{margin:6px 0}.od-review .od-choices>*{padding:6px 3px}
@media(max-height:720px){.od-stage{height:304px}.od-device{transform:scale(.89);transform-origin:top center}}
/* Dark onboarding: the dark seed switches the theme at once (js/app.js applyTheme), so every onboarding step follows it.
   Onboarding is not .functional, so the dark palette is repeated here (same values as functional.css); the welcome photo (step 1) keeps the light one. */
html[data-theme="dark"] .app:not(.functional){color-scheme:dark;--bg:#111513;--bg2:#171c19;--surface:#1a201d;--t1:#e7ece8;--t2:#b5c0b9;--t3:#8e9a92;--t4:#838d87;--line:#28302b;--line-soft:#1f2622;--line-btn:#343e38;--green:#467d62;--green-bg:#1d2d25;--green-tx:#9dcab0;--yellow:#e2c27f;--yellow-bg:#29231a;--yellow-bd:#453a22;--scrim:rgba(0,0,0,.58);--fill:#242b27;--fill-2:#1e2521;--mark:#56645c;--hair:#2c3530;--mute:#8e9a92;--dash:#434e47;--danger:#e38b77;--danger-bg:#2b1a16;--danger-bd:#55302a;--acc-1:#488164;--acc-2:#427a5e;--acc-3:#3b6d54;--acc-edge:#3f7459;--acc-ring:#6fa388;--input-bg:#151a17;--me-1:#22322a;--me-2:#1c2b23;--tab-1:#23332a;--tab-2:#1d2c24;--hl:rgba(255,255,255,.06);--on-t1:#111513}
html[data-theme="dark"] .app:not(.functional) .onb-vid{color-scheme:light;--bg:#fbfaf8;--bg2:#f6f4f0;--surface:#fff;--t1:#1b1a17;--t2:#4a463f;--t3:#9a968c;--t4:#b0aca2;--line:#e8e5de;--line-soft:#f3f0ea;--line-btn:#ddd9d0;--green:#5b6e52;--green-bg:#eef2ea;--green-tx:#42513b;--fill:#eceae4;--fill-2:#f1efe9;--mark:#d9d5cc;--hair:#dfe5da;--mute:#8a867e;--dash:#cfcabf;--acc-1:#557f69;--acc-2:#3e6653;--acc-3:#33594a;--acc-edge:#3a604e;--acc-ring:#87a791;--input-bg:#fafbf9;--hl:rgba(255,255,255,.95);--on-t1:#fff;color:#1b1a17}
html[data-theme="dark"] .app:not(.functional){color:var(--t1)}
html[data-theme="dark"] .app:not(.functional) .onb-vid{color:#1b1a17}
html[data-theme="dark"] .app:not(.functional) .onb:not(.onb-vid) .brand{color:var(--t1)}
html[data-theme="dark"] .app:not(.functional) .onb-prog i{background:var(--line)}
html[data-theme="dark"] .app:not(.functional) .onb-prog i.done,html[data-theme="dark"] .app:not(.functional) .onb-prog i.on::after{background:var(--green)}
html[data-theme="dark"] .app:not(.functional) .onb-goal.on{background:var(--green-bg)}
html[data-theme="dark"] .app:not(.functional) .onb-add button{color:var(--on-t1)}
html[data-theme="dark"] .app:not(.functional) .onb-add input:focus{border-color:var(--acc-ring)}
html[data-theme="dark"] .app:not(.functional) .od-caption{color:var(--green-tx)}
html[data-theme="dark"] .app:not(.functional) :is(.od-label,.od-label small,.od-controls,.od-controls button){color:var(--t3)}


/* ---- luxe.css ---- */
/* Four material collections. Loaded last; only Plus themes opt into the app
   treatment. No entitlement or task-state logic lives in this stylesheet.
   Numbers and progress deliberately use separate pigments (especially Cobalt). */
@font-face{font-family:ZarokUI;src:url('public/fonts/manrope-500-cyrillic.woff2') format('woff2');font-weight:500;font-display:swap;unicode-range:U+0400-052F,U+2DE0-2DFF,U+A640-A69F}
@font-face{font-family:ZarokUI;src:url('public/fonts/manrope-500-latin.woff2') format('woff2');font-weight:500;font-display:swap;unicode-range:U+0000-024F}
:is(html[data-theme="obsidian"] .app.functional,[data-lx-material="obsidian"]){
  --bg:#101110;--bg2:#191a17;--surface:#1c1d19;--t1:#f5f4ee;--t2:#c6c5bb;--t3:#a3a398;--t4:#989b8e;
  --line:#363830;--line-soft:#292b25;--line-btn:#6e7160;--fill:#252720;--fill-2:#191a17;--mark:#7c826c;
  --green:#d1f9a1;--green-tx:#d1f9a1;--green-bg:#2b3423;--on-acc:#18210f;--on-t1:#141510;
  --acc-1:#e3ffc0;--acc-2:#b5e47f;--acc-3:#91bc62;--acc-edge:#b5d590;--acc-ring:#cbed99;
  --input-bg:#161813;--lx-numeral:linear-gradient(155deg,#efffd3 5%,#cff9a0 52%,#9bd469);
  --lx-progress:linear-gradient(90deg,#b4e984,#ddffb7 72%,#c4ef97);--lx-track:#30332b;
  --lx-light:rgba(210,211,160,.12);--lx-surface:linear-gradient(145deg,#292b24 0%,#1a1c18 38%,#141512 100%);
  --lx-stage:radial-gradient(ellipse at 94% 12%,#73714c42,transparent 62%),linear-gradient(133deg,#272822 0%,#0c0e0b 68%,#1d2117);
  --lx-edge:linear-gradient(125deg,#a4a68b9e,#44483d 33%,#252920 60%,#676c4c);
  --lx-button:linear-gradient(125deg,#282c21,#12160f);--lx-button-edge:linear-gradient(110deg,#d1c9a4,#555d43 60%,#aaa98a);
  --lx-button-ink:#f2f2e9;--lx-metal:#d3c39b;--lx-shadow:#00000050;--lx-nav:#151712ee;
}
:is(html[data-theme="porcelain"] .app.functional,[data-lx-material="porcelain"],[data-lx-material="luxe-auto"]){
  --bg:#eeede8;--bg2:#e5e4dc;--surface:#f7f6f1;--t1:#262821;--t2:#55594b;--t3:#606255;--t4:#66695b;
  --line:#d6d8ca;--line-soft:#e3e5d9;--line-btn:#a4aa90;--fill:#e5e7dd;--fill-2:#e9e8e1;--mark:#949d7f;
  --green:#596540;--green-tx:#4d5a32;--green-bg:#dde3ce;--on-acc:#fffef4;--on-t1:#f9f8f1;
  --acc-1:#6a774d;--acc-2:#526039;--acc-3:#414f29;--acc-edge:#5e6e42;--acc-ring:#718153;
  --input-bg:#f8f8f2;--lx-numeral:linear-gradient(145deg,#738050,#454c30);
  --lx-progress:linear-gradient(90deg,#899568,#526039 68%,#748052);--lx-track:#d4d5cb;
  --lx-light:#ffffffcc;--lx-surface:linear-gradient(135deg,#ffffff,#f3f2ec 56%,#e8e7df);
  --lx-stage:radial-gradient(ellipse at 90% 5%,#ffffff,transparent 70%),linear-gradient(135deg,#f9f8f4,#e4e3db);
  --lx-edge:linear-gradient(130deg,#ffffff,#e3e3d8 58%,#bcbfaf);--lx-button:linear-gradient(135deg,#7a835a,#4e5738 70%,#636e49);
  --lx-button-edge:linear-gradient(110deg,#a9b48c,#5a643e 65%,#aab58f);--lx-button-ink:#fffef4;--lx-metal:#5d6844;
  --lx-shadow:#3d42201c;--lx-nav:#f4f4edeb;
}
:is(html[data-theme="cobalt"] .app.functional,[data-lx-material="cobalt"]){
  --bg:#080f20;--bg2:#101a32;--surface:#121f3b;--t1:#f0f3ff;--t2:#becded;--t3:#99afda;--t4:#91a4c8;
  --line:#2a3c64;--line-soft:#1c2a4a;--line-btn:#5579b2;--fill:#1c2b4b;--fill-2:#101a32;--mark:#6482b7;
  --green:#aed6ff;--green-tx:#bcdfff;--green-bg:#1c3154;--on-acc:#101b35;--on-t1:#091224;
  --acc-1:#c7e7ff;--acc-2:#92b8ed;--acc-3:#7b9ad1;--acc-edge:#829ddb;--acc-ring:#a6cfff;
  --input-bg:#0e1930;--lx-numeral:linear-gradient(150deg,#e6f8ff,#acd6ff 53%,#7d9de1);
  --lx-progress:linear-gradient(90deg,#ad9dff,#7154ff 55%,#ad91ff);--lx-track:#233054;
  --lx-light:#5673e326;--lx-surface:linear-gradient(135deg,#192c51,#0d1830 65%,#142243);
  --lx-stage:radial-gradient(ellipse at 105% 82%,#305ac877,transparent 52%),radial-gradient(ellipse at 10% 0%,#263d6255,transparent 70%),linear-gradient(135deg,#0f1b35,#070d1b 70%,#172a53);
  --lx-edge:linear-gradient(125deg,#83a8ee99,#2b4270 35%,#243353 55%,#5f84d69c);
  --lx-button:linear-gradient(115deg,#182944,#0a1429 60%,#1b2549);--lx-button-edge:linear-gradient(115deg,#92b8ff,#3857a2 50%,#7a8ed2);
  --lx-button-ink:#edf4ff;--lx-metal:#b5d4ff;--lx-shadow:#00091b66;--lx-nav:#0e1931ed;
}
:is(html[data-theme="copper"] .app.functional,[data-lx-material="copper"]){
  --bg:#1b1314;--bg2:#281b1c;--surface:#302123;--t1:#faf0e8;--t2:#d8bfb0;--t3:#bba293;--t4:#b99d90;
  --line:#513735;--line-soft:#3b2828;--line-btn:#976d56;--fill:#3c2926;--fill-2:#281b1c;--mark:#ac8069;
  --green:#f3b688;--green-tx:#ffcfaa;--green-bg:#492f26;--on-acc:#322014;--on-t1:#241718;
  --acc-1:#ffdab4;--acc-2:#e8a173;--acc-3:#c98661;--acc-edge:#d19773;--acc-ring:#f0bf99;
  --input-bg:#241919;--lx-numeral:linear-gradient(150deg,#ffe3c4,#f4b486 52%,#cd8764);
  --lx-progress:linear-gradient(90deg,#df9267,#ffcca5 70%,#f1ae80);--lx-track:#513733;
  --lx-light:#e9a2711f;--lx-surface:linear-gradient(135deg,#412b29,#261a1b 62%,#2e1f20);
  --lx-stage:radial-gradient(ellipse at 95% 15%,#ca8c6240,transparent 65%),linear-gradient(135deg,#322020,#1a1214 68%,#34201c);
  --lx-edge:linear-gradient(125deg,#e6ae8177,#634036 36%,#412626 60%,#a36b4f88);
  --lx-button:linear-gradient(115deg,#3c2824,#221818 65%,#38231f);--lx-button-edge:linear-gradient(115deg,#f3c69c,#80523c 56%,#c38661);
  --lx-button-ink:#fff1e4;--lx-metal:#edba8c;--lx-shadow:#0c030555;--lx-nav:#23181aec;
}

/* Real interface, with room for fingers and long translated labels. */
html[data-luxe] .app.functional{background:var(--bg);--mono:var(--ui);--scrim:#0009}
html[data-luxe] .functional .screen{background:radial-gradient(ellipse at 100% 0%,var(--lx-light),transparent 62%),var(--bg)}
html[data-luxe] .functional :is(.hdr,.cal-hdr,.plain-hdr){background:transparent;border-bottom-color:var(--line-soft);padding:24px 22px 18px}
html[data-luxe] .functional :is(.hdr-date,.plain-hdr h1){font-size:32px;font-weight:600;letter-spacing:-1.25px;line-height:1.15}
html[data-luxe] .functional .hdr-sub{font-weight:400;color:var(--t3);font-size:12px}
html[data-luxe] .functional .day-hdr .hdr-prog{display:none}
html[data-luxe] .functional .day-hdr .metrics{margin-top:12px}
html[data-luxe] .functional .navbtn{background:linear-gradient(150deg,var(--surface),var(--bg));border:1px solid var(--line);border-radius:50%;box-shadow:inset 0 1px 0 var(--lx-light);width:40px;height:40px;font-size:23px}
html[data-luxe] .functional :is(.btn,.addbtn,.addrow,.pet-pin){border-radius:999px;min-height:46px;font-weight:500;letter-spacing:-.15px}
html[data-luxe] .app.functional :is(.btn.green,.btn.dark,.csend,.qr-btn.main,.prep-go),.lx-continue,.lx-theme-cta{
  border:1px solid transparent;background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;
  color:var(--lx-button-ink);box-shadow:inset 0 1px 0 var(--lx-light),0 6px 16px var(--lx-shadow);
}
html[data-luxe] .functional .btn:not(.green):not(.dark):not(.danger):not(.prep-go){background:linear-gradient(140deg,var(--surface),var(--bg2));border-color:var(--line)}
html[data-luxe] .functional button{transition:background .18s,color .18s,box-shadow .18s,transform .18s}
html[data-luxe] .functional button:active{transform:translateY(1px)}
html[data-luxe] .functional .tabbar{background:var(--lx-nav);border-top:1px solid var(--line);backdrop-filter:blur(20px);box-shadow:0 -10px 32px var(--lx-shadow);padding-top:8px}
html[data-luxe] .functional .tab-ico{height:32px;width:49px;border-radius:12px}
html[data-luxe] .functional .tab.on .tab-ico{background:linear-gradient(140deg,var(--fill),var(--bg2));box-shadow:inset 0 1px 0 var(--lx-light);color:var(--green)}
html[data-luxe] .functional .tab-lb{font-size:10px;font-weight:500}
html[data-luxe] .functional :is(.evcard,.dosecard,.card,.course,.scard,.fold,.prog,.sgroup,.prep-inline,.setrow,.pet-profile,.ai-gate-card,.widget-skins){
  background:var(--lx-surface)!important;border-color:var(--line)!important;box-shadow:inset 0 1px 0 var(--lx-light),0 8px 20px -10px var(--lx-shadow);border-radius:20px;
}
html[data-luxe] .functional :is(.evcard,.dosecard){padding:14px 10px 14px 14px}
html[data-luxe] .functional .evtext b{font-size:14px;font-weight:600;letter-spacing:-.25px}
html[data-luxe] .functional .evtext span{font-size:11px;font-weight:400;line-height:1.6}
html[data-luxe] .functional .evbadge{border:1px solid currentColor;opacity:.85;border-radius:50%;width:29px;height:29px;padding:6px}
html[data-luxe] .functional .icon-btn{border:0;background:transparent;min-width:24px;width:24px}
html[data-luxe] .functional .timeline{padding:12px 18px 20px;gap:12px 9px;grid-template-columns:36px minmax(0,1fr)}
html[data-luxe] .functional .tl-time b{font-size:10px;font-weight:500;letter-spacing:-.25px}
html[data-luxe] .functional .tl-time i{background:var(--line)}
html[data-luxe] .functional .tl-swipe{border-radius:20px}
html[data-luxe] .functional :is(.chk,.dotchk){border-radius:50%}
html[data-luxe] .functional .chk::before{border-radius:50%;width:24px;height:24px;box-shadow:inset 0 1px 3px var(--lx-shadow)}
html[data-luxe] .functional :is(.chk.on::before,.prep-row2.on .dotchk){background:linear-gradient(145deg,var(--acc-1),var(--acc-3));color:var(--on-acc);box-shadow:inset 0 1px 0 #ffffff50;border-color:var(--acc-edge)}
html[data-luxe] .functional :is(.track,.sbar){background:var(--lx-track);height:6px;border-radius:20px;box-shadow:inset 0 1px 2px #0002}
html[data-luxe] .functional :is(.track i,.sbar i){background:var(--lx-progress)!important;box-shadow:inset 0 1px 0 #ffffff6b;border-radius:inherit}
html[data-luxe] .functional .prep-step{padding-top:4px}
html[data-luxe] .functional .prep-lead{font-size:12px}
html[data-luxe] .functional .scard-h b{font-weight:600!important}
html[data-luxe] .functional .sheet{background:var(--bg);border:1px solid var(--line);border-radius:28px 28px 0 0;box-shadow:0 -15px 70px var(--lx-shadow)}
html[data-luxe] .functional :is(.sheet-h,.sheet-foot){background:var(--bg);border-color:var(--line-soft)}
html[data-luxe] .functional .sheet-h h2{font-weight:600;letter-spacing:-.6px;font-size:23px}
html[data-luxe] .functional :is(input:not([type="checkbox"]):not([type="radio"]),textarea,select){border-color:var(--line);background:var(--input-bg);border-radius:13px;color:var(--t1)}
html[data-luxe] .functional :is(.set-h,.sgroup-h){font-size:10px;letter-spacing:1.5px;text-transform:uppercase;font-weight:500;color:var(--t3)}
html[data-luxe] .functional .setrow{margin:7px 0;padding:13px}
html[data-luxe] .functional .sgroup .setrow{margin:0;box-shadow:none;border-radius:0;background:transparent!important}
html[data-luxe] .functional .sgroup{overflow:hidden}
html[data-luxe] .functional .setbody b{font-weight:500}
html[data-luxe] .functional .viewseg{background:var(--bg2);border:1px solid var(--line-soft);border-radius:16px}
html[data-luxe] .functional .viewseg button.on{background:var(--lx-surface);box-shadow:inset 0 1px 0 var(--lx-light),0 3px 8px var(--lx-shadow)}
html[data-luxe] .functional .cell.sel{border-radius:16px;background:var(--fill)!important;box-shadow:inset 0 0 0 1px var(--acc-edge)}
html[data-luxe] .functional .bub{border:1px solid var(--line);background:var(--lx-surface);box-shadow:inset 0 1px 0 var(--lx-light);font-weight:400}
html[data-luxe] .functional .bub.me{background:linear-gradient(130deg,var(--green-bg),var(--bg2));border-color:var(--line-btn)}
html[data-luxe] .functional .composer{background:var(--lx-nav);border-top-color:var(--line)}
html[data-luxe] .functional #appbg{opacity:.2;filter:saturate(.35)}

/* A live hero: the selected pet is a transparent existing asset, never a
   screenshot with baked text. All counters/labels remain real DOM content. */
.lx-eyebrow{font-size:9px;letter-spacing:2px;font-weight:500;color:var(--t3);display:block;line-height:1.6}
.lx-hero{position:relative;isolation:isolate;overflow:hidden;margin:14px 16px 20px;padding:23px 23px 19px;border:1px solid transparent;border-radius:27px;background:var(--lx-stage) padding-box,var(--lx-edge) border-box;box-shadow:inset 0 1px 0 var(--lx-light),0 16px 26px -16px var(--lx-shadow)}
.lx-hero-copy{position:relative;z-index:2;pointer-events:none}
.lx-hero h2{font-size:23px;line-height:1.2;letter-spacing:-.75px;font-weight:500;max-width:220px;margin:9px 0 13px;text-wrap:balance}
.lx-score{display:flex;align-items:baseline;gap:8px;font-variant-numeric:tabular-nums;line-height:1;letter-spacing:-3px}
.lx-score strong,.lx-theme-score{color:var(--green);background:var(--lx-numeral);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:78px;font-weight:600}
.lx-score>span{font-size:32px;letter-spacing:-1px;color:var(--t3);font-weight:400}
.lx-next{font-size:11px;line-height:1.5;color:var(--t2);margin:12px 0 14px;max-width:100%;overflow-wrap:anywhere}
.lx-hero.has-pet .lx-next{max-width:64%}
.lx-hero.has-pet h2{max-width:67%}
.lx-pet{position:absolute;width:44%;height:68%;right:-1%;bottom:calc(28px - var(--zb-sink,2px));translate:0 5%;object-fit:contain;object-position:bottom;z-index:1;filter:drop-shadow(0 12px 12px #0003);pointer-events:none}
.lx-hero-foot{position:relative;z-index:2}
.lx-meter{display:block;height:6px;background:var(--lx-track);border-radius:99px;overflow:hidden;box-shadow:inset 0 1px 2px #0002}
.lx-meter>i{display:block;height:100%;border-radius:inherit;background:var(--lx-progress);box-shadow:inset 0 1px 0 #ffffff66;transition:width .45s ease}
.lx-continue{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:44px;min-width:164px;max-width:100%;padding:10px 18px;border-radius:999px;font:500 13px var(--ui);margin-top:18px;text-align:left}
.lx-continue>span{color:var(--lx-metal);font:400 23px/1 var(--ui)}
html[data-theme="porcelain"] .lx-continue>span{color:var(--lx-button-ink)}
html[data-luxe] .functional .dayempty{display:none}
html[data-luxe] .functional .evbadge{filter:brightness(1.35)}
html[data-theme="porcelain"] .functional .evbadge{filter:none}
.lx-hero:not(.has-pet) .lx-next{max-width:100%}

/* Collection chooser also previews the actual pigments and button material. */
.lx-collection-intro{padding:5px 0 24px}
.lx-collection-intro h2{font:500 28px/1.18 var(--ui);letter-spacing:-1px;margin:12px 0}
.lx-collection-intro p{font-size:12px;line-height:1.6;color:var(--t3);max-width:320px}
.lx-theme-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:28px}
.lx-theme-top{display:flex;align-items:center;justify-content:space-between;font:500 9px var(--ui);color:var(--t3);letter-spacing:1px}
.lx-theme-top>span{font-size:8px;letter-spacing:.4px}
.lx-theme-score{display:block;font-size:51px;line-height:1.2;margin:13px 0 12px;letter-spacing:-2px}
.lx-theme-score small{font-size:23px;font-weight:400;color:var(--t3);-webkit-text-fill-color:var(--t3);letter-spacing:-1px;margin-left:4px}
.lx-theme-cta{display:flex;align-items:center;justify-content:space-between;padding:7px 9px;border-radius:30px;font:400 9px var(--ui);margin:13px 0 20px}

/* Widget previews use the same material system; native rendering is separate. */
html[data-luxe] .functional .pet-widget-gallery[data-widget-skin="follow"]{--pw-bg:var(--surface);--pw-fill:var(--fill);--pw-text:var(--t1);--pw-muted:var(--t3);--pw-line:var(--line);--pw-ac:var(--green)}
html[data-luxe] .functional .pet-widget-gallery[data-widget-skin="follow"] .pw:not(.pw-pet):not(.pw-return){background:var(--lx-stage);border:1px solid var(--line);box-shadow:inset 0 1px 0 var(--lx-light);color:var(--t1)}
html[data-luxe] .functional .pet-widget-gallery[data-widget-skin="follow"] .pw-track i{background:var(--lx-progress)}
html[data-luxe] .functional .widget-beta-preview{background:var(--lx-stage);color:var(--t1);border-color:var(--line);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .widget-beta-preview>strong{color:var(--green);font-weight:600;letter-spacing:-2px}

/* Explicit decoration opt-out wins over every material rule. */
html[data-luxe].plain .functional :is(.screen,.lx-hero,.card,.evcard,.dosecard,.course,.scard,.fold,.prog,.setrow,.sgroup,.prep-inline,.pet-profile,.ai-gate-card,.widget-beta-preview){background:var(--surface)!important;box-shadow:none!important;border-color:var(--line)!important}
html[data-luxe].plain .functional :is(.lx-pet,.zb-in-plus){display:none}
html[data-luxe].plain .functional .lx-hero :is(h2,.lx-next){max-width:100%}
html[data-luxe].plain .functional :is(.lx-continue,.btn.green,.btn.dark,.csend,.prep-go){background:var(--green)!important;color:var(--on-acc);border-color:var(--green);box-shadow:none}
html[data-luxe].plain .functional .lx-continue>span{color:inherit}
html[data-luxe].plain .functional .lx-score strong{background:none;-webkit-text-fill-color:var(--green)}
html[data-luxe].plain .functional :is(.lx-meter>i,.track i,.sbar i){background:var(--green)!important;box-shadow:none}
@media(max-width:350px){.lx-hero{padding:20px 18px}.lx-score strong{font-size:66px}.lx-score>span{font-size:27px}.lx-hero h2{font-size:21px}.lx-theme-grid{gap:10px}.lx-theme-score{font-size:45px}html[data-luxe] .functional .timeline{padding-left:12px;padding-right:12px;gap:10px 6px}html[data-luxe] .functional .evtext b{font-size:13px}}
@media(prefers-reduced-motion:reduce){html[data-luxe] .functional *,html[data-luxe] .functional *::before{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
/* Закрытый день: блок дня становится итогом — без кнопки и персонажа, полная
   линия со свечением (блик задаёт .done-line в functional.css). */
.lx-hero.is-done .lx-next{margin-bottom:18px}
.lx-meter.done-line{filter:drop-shadow(0 0 7px var(--green))}
html[data-luxe].plain .functional .lx-meter.done-line{filter:none}

/* Atelier additions: seven symbolic chakra colours and yin/yang materials. */
:is(html[data-theme="garnet"] .app.functional,[data-lx-material="garnet"]){--bg:#190e13;--bg2:#422b33;--surface:#2b1920;--t1:#f5f1ea;--t2:#f3e3e1;--t3:#a19896;--t4:#a19896;--line:#523840;--line-soft:#422b33;--line-btn:#8d6670;--fill:#422b33;--fill-2:#2b1920;--mark:#8d6670;--green:#eeb3bf;--green-tx:#eeb3bf;--green-bg:#483038;--on-acc:#190e13;--on-t1:#190e13;--acc-1:#f1c2cc;--acc-2:#eeb3bf;--acc-3:#8d6670;--acc-edge:#8d6670;--acc-ring:#eeb3bf;--input-bg:#2b1920;--lx-numeral:linear-gradient(145deg,#f3cad2,#eeb3bf);--lx-progress:linear-gradient(90deg,#eeb3bf,#f2c4cd,#eeb3bf);--lx-track:#422b33;--lx-light:#eeb3bf18;--lx-surface:linear-gradient(135deg,#39242b,#2b1920 66%,#190e13);--lx-stage:radial-gradient(ellipse at 90% 5%,#eeb3bf18,transparent 65%),linear-gradient(135deg,#2b1920,#190e13);--lx-edge:linear-gradient(125deg,#f1c2ccaa,#8d667055 40%,#2b1920,#f1c2cc77);--lx-button:linear-gradient(135deg,#422b33,#2b1920);--lx-button-edge:linear-gradient(115deg,#f1c2cc,#8d6670 60%,#f1c2cc);--lx-button-ink:#f5f1ea;--lx-metal:#f1c2cc;--lx-shadow:#00000030;--lx-nav:#2b1920ef;}
:is(html[data-theme="carnelian"] .app.functional,[data-lx-material="carnelian"]){--bg:#24160f;--bg2:#4c3627;--surface:#352319;--t1:#f5f1ea;--t2:#f5e6d6;--t3:#aea59d;--t4:#aea59d;--line:#5b4231;--line-soft:#4c3627;--line-btn:#957155;--fill:#4c3627;--fill-2:#352319;--mark:#957155;--green:#f4be91;--green-tx:#f4be91;--green-bg:#523a2b;--on-acc:#24160f;--on-t1:#24160f;--acc-1:#f6cba7;--acc-2:#f4be91;--acc-3:#957155;--acc-edge:#957155;--acc-ring:#f4be91;--input-bg:#352319;--lx-numeral:linear-gradient(145deg,#f7d2b2,#f4be91);--lx-progress:linear-gradient(90deg,#f4be91,#f6cca9,#f4be91);--lx-track:#4c3627;--lx-light:#f4be9118;--lx-surface:linear-gradient(135deg,#422e21,#352319 66%,#24160f);--lx-stage:radial-gradient(ellipse at 90% 5%,#f4be9118,transparent 65%),linear-gradient(135deg,#352319,#24160f);--lx-edge:linear-gradient(125deg,#f6cba7aa,#95715555 40%,#352319,#f6cba777);--lx-button:linear-gradient(135deg,#4c3627,#352319);--lx-button-edge:linear-gradient(115deg,#f6cba7,#957155 60%,#f6cba7);--lx-button-ink:#f5f1ea;--lx-metal:#f6cba7;--lx-shadow:#00000030;--lx-nav:#352319ef;}
:is(html[data-theme="citrine"] .app.functional,[data-lx-material="citrine"]){--bg:#201d10;--bg2:#46412a;--surface:#302c19;--t1:#f5f1ea;--t2:#f3ecda;--t3:#b1ada3;--t4:#b1ada3;--line:#554f35;--line-soft:#46412a;--line-btn:#8e845e;--fill:#46412a;--fill-2:#302c19;--mark:#8e845e;--green:#ebdca3;--green-tx:#ebdca3;--green-bg:#4c462e;--on-acc:#201d10;--on-t1:#201d10;--acc-1:#efe3b5;--acc-2:#ebdca3;--acc-3:#8e845e;--acc-edge:#8e845e;--acc-ring:#ebdca3;--input-bg:#302c19;--lx-numeral:linear-gradient(145deg,#f1e7bf,#ebdca3);--lx-progress:linear-gradient(90deg,#ebdca3,#efe4b7,#ebdca3);--lx-track:#46412a;--lx-light:#ebdca318;--lx-surface:linear-gradient(135deg,#3d3823,#302c19 66%,#201d10);--lx-stage:radial-gradient(ellipse at 90% 5%,#ebdca318,transparent 65%),linear-gradient(135deg,#302c19,#201d10);--lx-edge:linear-gradient(125deg,#efe3b5aa,#8e845e55 40%,#302c19,#efe3b577);--lx-button:linear-gradient(135deg,#46412a,#302c19);--lx-button-edge:linear-gradient(115deg,#efe3b5,#8e845e 60%,#efe3b5);--lx-button-ink:#f5f1ea;--lx-metal:#efe3b5;--lx-shadow:#00000030;--lx-nav:#302c19ef;}
:is(html[data-theme="jade"] .app.functional,[data-lx-material="jade"]){--bg:#10201b;--bg2:#2c453b;--surface:#1b3028;--t1:#f5f1ea;--t2:#e3ede2;--t3:#abafa8;--t4:#abafa8;--line:#375347;--line-soft:#2c453b;--line-btn:#608876;--fill:#2c453b;--fill-2:#1b3028;--mark:#608876;--green:#a5dfc4;--green-tx:#a5dfc4;--green-bg:#304a3f;--on-acc:#10201b;--on-t1:#10201b;--acc-1:#b7e5d0;--acc-2:#a5dfc4;--acc-3:#608876;--acc-edge:#608876;--acc-ring:#a5dfc4;--input-bg:#1b3028;--lx-numeral:linear-gradient(145deg,#c0e9d6,#a5dfc4);--lx-progress:linear-gradient(90deg,#a5dfc4,#b9e6d1,#a5dfc4);--lx-track:#2c453b;--lx-light:#a5dfc418;--lx-surface:linear-gradient(135deg,#253c33,#1b3028 66%,#10201b);--lx-stage:radial-gradient(ellipse at 90% 5%,#a5dfc418,transparent 65%),linear-gradient(135deg,#1b3028,#10201b);--lx-edge:linear-gradient(125deg,#b7e5d0aa,#60887655 40%,#1b3028,#b7e5d077);--lx-button:linear-gradient(135deg,#2c453b,#1b3028);--lx-button-edge:linear-gradient(115deg,#b7e5d0,#608876 60%,#b7e5d0);--lx-button-ink:#f5f1ea;--lx-metal:#b7e5d0;--lx-shadow:#00000030;--lx-nav:#1b3028ef;}
:is(html[data-theme="aquamarine"] .app.functional,[data-lx-material="aquamarine"]){--bg:#0e2028;--bg2:#2b4652;--surface:#1a313d;--t1:#f5f1ea;--t2:#e4edeb;--t3:#acb1b0;--t4:#acb1b0;--line:#365460;--line-soft:#2b4652;--line-btn:#608895;--fill:#2b4652;--fill-2:#1a313d;--mark:#608895;--green:#a6deed;--green-tx:#a6deed;--green-bg:#2f4b57;--on-acc:#0e2028;--on-t1:#0e2028;--acc-1:#b8e5f1;--acc-2:#a6deed;--acc-3:#608895;--acc-edge:#608895;--acc-ring:#a6deed;--input-bg:#1a313d;--lx-numeral:linear-gradient(145deg,#c1e8f2,#a6deed);--lx-progress:linear-gradient(90deg,#a6deed,#bae5f1,#a6deed);--lx-track:#2b4652;--lx-light:#a6deed18;--lx-surface:linear-gradient(135deg,#243d49,#1a313d 66%,#0e2028);--lx-stage:radial-gradient(ellipse at 90% 5%,#a6deed18,transparent 65%),linear-gradient(135deg,#1a313d,#0e2028);--lx-edge:linear-gradient(125deg,#b8e5f1aa,#60889555 40%,#1a313d,#b8e5f177);--lx-button:linear-gradient(135deg,#2b4652,#1a313d);--lx-button-edge:linear-gradient(115deg,#b8e5f1,#608895 60%,#b8e5f1);--lx-button-ink:#f5f1ea;--lx-metal:#b8e5f1;--lx-shadow:#00000030;--lx-nav:#1a313def;}
:is(html[data-theme="indigo"] .app.functional,[data-lx-material="indigo"]){--bg:#12152b;--bg2:#333b5a;--surface:#212843;--t1:#f5f1ea;--t2:#e8e8ef;--t3:#a7a7ad;--t4:#a7a7ad;--line:#3f4869;--line-soft:#333b5a;--line-btn:#6d77a1;--fill:#333b5a;--fill-2:#212843;--mark:#6d77a1;--green:#b9c6ff;--green-tx:#b9c6ff;--green-bg:#38405f;--on-acc:#12152b;--on-t1:#12152b;--acc-1:#c7d1ff;--acc-2:#b9c6ff;--acc-3:#6d77a1;--acc-edge:#6d77a1;--acc-ring:#b9c6ff;--input-bg:#212843;--lx-numeral:linear-gradient(145deg,#ced7ff,#b9c6ff);--lx-progress:linear-gradient(90deg,#b9c6ff,#c8d3ff,#b9c6ff);--lx-track:#333b5a;--lx-light:#b9c6ff18;--lx-surface:linear-gradient(135deg,#2c3350,#212843 66%,#12152b);--lx-stage:radial-gradient(ellipse at 90% 5%,#b9c6ff18,transparent 65%),linear-gradient(135deg,#212843,#12152b);--lx-edge:linear-gradient(125deg,#c7d1ffaa,#6d77a155 40%,#212843,#c7d1ff77);--lx-button:linear-gradient(135deg,#333b5a,#212843);--lx-button-edge:linear-gradient(115deg,#c7d1ff,#6d77a1 60%,#c7d1ff);--lx-button-ink:#f5f1ea;--lx-metal:#c7d1ff;--lx-shadow:#00000030;--lx-nav:#212843ef;}
:is(html[data-theme="amethyst"] .app.functional,[data-lx-material="amethyst"]){--bg:#201629;--bg2:#473653;--surface:#32243d;--t1:#f5f1ea;--t2:#f0e5ec;--t3:#ada6aa;--t4:#ada6aa;--line:#544261;--line-soft:#473653;--line-btn:#887097;--fill:#473653;--fill-2:#32243d;--mark:#887097;--green:#debcf1;--green-tx:#debcf1;--green-bg:#4c3b58;--on-acc:#201629;--on-t1:#201629;--acc-1:#e5c9f4;--acc-2:#debcf1;--acc-3:#887097;--acc-edge:#887097;--acc-ring:#debcf1;--input-bg:#32243d;--lx-numeral:linear-gradient(145deg,#e8d0f5,#debcf1);--lx-progress:linear-gradient(90deg,#debcf1,#e5cbf4,#debcf1);--lx-track:#473653;--lx-light:#debcf118;--lx-surface:linear-gradient(135deg,#3e2f4a,#32243d 66%,#201629);--lx-stage:radial-gradient(ellipse at 90% 5%,#debcf118,transparent 65%),linear-gradient(135deg,#32243d,#201629);--lx-edge:linear-gradient(125deg,#e5c9f4aa,#88709755 40%,#32243d,#e5c9f477);--lx-button:linear-gradient(135deg,#473653,#32243d);--lx-button-edge:linear-gradient(115deg,#e5c9f4,#887097 60%,#e5c9f4);--lx-button-ink:#f5f1ea;--lx-metal:#e5c9f4;--lx-shadow:#00000030;--lx-nav:#32243def;}
:is(html[data-theme="yin"] .app.functional,[data-lx-material="yin"],[data-lx-material="yin-yang"]){--bg:#f4f2ec;--bg2:#e7e7e7;--surface:#ffffff;--t1:#222525;--t2:#555952;--t3:#5b605a;--t4:#5b605a;--mute:#5b605a;--line:#d6d7d7;--line-soft:#e7e7e7;--line-btn:#9a9b9a;--fill:#e7e7e7;--fill-2:#ffffff;--mark:#9a9b9a;--green:#343635;--green-tx:#343635;--green-bg:#e1e1e1;--on-acc:#ffffff;--on-t1:#f4f2ec;--acc-1:#5d5e5d;--acc-2:#343635;--acc-3:#9a9b9a;--acc-edge:#6e6f6e;--acc-ring:#343635;--input-bg:#ffffff;--lx-numeral:linear-gradient(145deg,#717272,#343635);--lx-progress:linear-gradient(90deg,#343635,#616261,#343635);--lx-track:#e7e7e7;--lx-light:#34363518;--lx-surface:linear-gradient(135deg,#f1f1f1,#ffffff 66%,#f4f2ec);--lx-stage:radial-gradient(ellipse at 90% 5%,#34363518,transparent 65%),linear-gradient(135deg,#ffffff,#f4f2ec);--lx-edge:linear-gradient(125deg,#5d5e5daa,#9a9b9a55 40%,#ffffff,#5d5e5d77);--lx-button:linear-gradient(135deg,#e7e7e7,#ffffff);--lx-button-edge:linear-gradient(115deg,#5d5e5d,#9a9b9a 60%,#5d5e5d);--lx-button-ink:#222525;--lx-metal:#5d5e5d;--lx-shadow:#00000030;--lx-nav:#ffffffef;}
:is(html[data-theme="yang"] .app.functional,[data-lx-material="yang"]){--bg:#101114;--bg2:#38393c;--surface:#202226;--t1:#f5f1ea;--t2:#f1eee6;--t3:#a4a3a0;--t4:#a4a3a0;--line:#47494a;--line-soft:#38393c;--line-btn:#838380;--fill:#38393c;--fill-2:#202226;--mark:#838380;--green:#e5e3da;--green-tx:#e5e3da;--green-bg:#3e3f41;--on-acc:#101114;--on-t1:#101114;--acc-1:#eae9e1;--acc-2:#e5e3da;--acc-3:#838380;--acc-edge:#838380;--acc-ring:#e5e3da;--input-bg:#202226;--lx-numeral:linear-gradient(145deg,#edebe5,#e5e3da);--lx-progress:linear-gradient(90deg,#e5e3da,#ebe9e2,#e5e3da);--lx-track:#38393c;--lx-light:#e5e3da18;--lx-surface:linear-gradient(135deg,#2e3033,#202226 66%,#101114);--lx-stage:radial-gradient(ellipse at 90% 5%,#e5e3da18,transparent 65%),linear-gradient(135deg,#202226,#101114);--lx-edge:linear-gradient(125deg,#eae9e1aa,#83838055 40%,#202226,#eae9e177);--lx-button:linear-gradient(135deg,#38393c,#202226);--lx-button-edge:linear-gradient(115deg,#eae9e1,#838380 60%,#eae9e1);--lx-button-ink:#f5f1ea;--lx-metal:#eae9e1;--lx-shadow:#00000030;--lx-nav:#202226ef;}
/* Цвета состояний у тёмных материалов: предупреждение (карточка «Последнее изменение»), опасное действие (сброс данных,
   удаление аккаунта), приглушённый текст и тонкие линии. Без этой строки они наследовались из светлой основы (:root):
   светлая плашка под светлым текстом. Подложки смешиваются с поверхностью темы — плашка заметна, но в её цветах. */
:is(html[data-theme="garnet"] .app.functional,html[data-theme="carnelian"] .app.functional,html[data-theme="citrine"] .app.functional,html[data-theme="jade"] .app.functional,html[data-theme="aquamarine"] .app.functional,html[data-theme="indigo"] .app.functional,html[data-theme="amethyst"] .app.functional,html[data-theme="yang"] .app.functional){--yellow:#ead08f;--yellow-bg:color-mix(in srgb,#e2b85a 15%,var(--surface));--yellow-bd:color-mix(in srgb,#e2b85a 44%,var(--surface));--danger:#f3a391;--danger-bg:color-mix(in srgb,#e8705a 18%,var(--surface));--danger-bd:color-mix(in srgb,#e8705a 48%,var(--surface));--mute:var(--t3);--hair:var(--line-btn);--dash:var(--line-btn)}

/* ============================================================
   Компоновки главного экрана «Единый день» и «План отдельно» (settings.dayLayout: unified / split).
   Стили — из копии владельца zarok-plus-atelier-v7/design/atelier/day-flow.css, как есть; изменено одно:
   ровный фон экрана ограничен разделом «День» (data-screen-tab ставит applyTheme в js/app.js).
   Отметки на <html>: day-flow-concept — любая из двух компоновок, day-flow-split — «План отдельно».
   ============================================================ */
/* Day concept only. One continuous material surface for date, progress and tasks. */
html.day-flow-concept[data-screen-tab="day"] .functional .screen{background:var(--bg);background-image:none!important}
html.day-flow-concept .functional .flow-scroll{padding:16px 14px 26px}
html.day-flow-concept .functional .flow-journal{border:1px solid var(--line-btn);border-radius:29px;overflow:hidden;background:var(--lx-stage);box-shadow:inset 0 1px 0 var(--lx-light),0 20px 40px var(--lx-shadow)}
html.day-flow-concept .functional .flow-date{padding:22px 22px 0;border:0;background:none!important;box-shadow:none}
html.day-flow-concept .functional .flow-date .hdr-row{align-items:center;gap:6px}
html.day-flow-concept .functional .flow-date .hdr-date{font-size:10px;font-weight:500;letter-spacing:1.7px;text-transform:uppercase;color:var(--t3)}
html.day-flow-concept .functional .flow-date .hdr-sub{font-size:19px;font-weight:500;letter-spacing:-.5px;margin:5px 0 0;color:var(--t1)}
html.day-flow-concept .functional .flow-date .navbtn{width:44px;height:44px;border:0;border-radius:20px;background:transparent;font-size:24px;color:var(--t2);box-shadow:none}
html.day-flow-concept .functional .flow-date .hdr-prog{display:none}
html.day-flow-concept .functional .flow-summary{margin:0;padding:26px 22px 20px;border:0;border-radius:0;background:none!important;box-shadow:none;min-height:0}
html.day-flow-concept .functional .flow-summary .lx-eyebrow{display:none}
html.day-flow-concept .functional .flow-summary h2{font-size:25px;line-height:1.18;letter-spacing:-.85px;font-weight:500;max-width:calc(100% - 108px);margin:0;min-height:59px}
html.day-flow-concept .functional .flow-summary .lx-score{position:absolute;right:22px;top:22px;gap:5px;margin:0;align-items:baseline}
html.day-flow-concept .functional .flow-summary .lx-score strong{font-size:51px;font-weight:600;letter-spacing:-3px;line-height:1.1}
html.day-flow-concept .functional .flow-summary .lx-score>span{font-size:17px;letter-spacing:-.6px}
html.day-flow-concept .functional .flow-summary .lx-pet{display:none}
html.day-flow-concept .functional .flow-summary .lx-hero-foot{margin:21px 0 0}
html.day-flow-concept .functional .flow-summary .lx-meter{height:4px;box-shadow:none;filter:none}
html.day-flow-concept .functional .flow-plan-heading{display:flex;justify-content:space-between;align-items:center;margin:0 22px;padding:0 0 12px;border-bottom:1px solid var(--line);font-size:12px;font-weight:600;color:var(--t2)}
html.day-flow-concept .functional .flow-plan-heading small{font-size:10px;font-weight:400;color:var(--t3)}
html.day-flow-concept .functional .flow-journal .timeline{padding:0 22px;grid-template-columns:38px minmax(0,1fr);gap:0 11px}
html.day-flow-concept .functional .flow-journal .tl-time{padding-top:22px;position:relative}
html.day-flow-concept .functional .flow-journal .tl-time b{font-size:10px;font-weight:400}
html.day-flow-concept .functional .flow-journal .tl-time i{background:var(--line);margin-top:10px;width:1px}
html.day-flow-concept .functional .flow-journal :is(.evcard,.dosecard,.mealcard){padding:18px 0;margin:0;border-radius:0;border:0;border-bottom:1px solid var(--line-soft)!important;background:transparent!important;box-shadow:none!important;gap:10px;min-height:85px}
html.day-flow-concept .functional .flow-journal :is(.evic,.doseic){display:none}
/* значок категории (вариант E, владелец 6 октября 2026): справа от текста, перед кружком отметки — 20 px, цвет категории, без плашки; левая колонка не меняется */
html.day-flow-concept .functional .flow-journal .evbadge{order:1;width:20px;height:20px;min-width:20px;padding:0;border:0!important;background:none!important;border-radius:0;opacity:.9;display:grid;place-items:center}
html.day-flow-concept .functional .flow-journal .evbadge svg{width:20px;height:20px}
html.day-flow-concept .functional .flow-journal :is(.evcard,.dosecard,.mealcard)>:not(.evtext):not(.evbadge){order:2}
html.day-flow-concept .functional .flow-journal :is(.evcard,.dosecard,.mealcard)>.chk{order:3}
html.day-flow-concept .functional .flow-journal .evtext b{font-size:14px;font-weight:500;line-height:1.45}
html.day-flow-concept .functional .flow-journal .evtext span{font-size:11px;line-height:1.5;color:var(--t3)}
html.day-flow-concept .functional .flow-journal .evmore{width:24px;min-width:24px;background:none;border:0;color:var(--t3)}
html.day-flow-concept .functional .flow-journal .chk{border-radius:50%;width:44px;height:44px;min-width:44px;display:grid;place-items:center}
html.day-flow-concept .functional .flow-journal .icon-btn{background:none;border:0;box-shadow:none;width:32px;min-width:32px;height:44px;font-size:18px;color:var(--t3)}
html.day-flow-concept .functional .flow-journal .flow-current .evtext b{color:var(--green)!important}
html.day-flow-concept .functional .flow-journal .flow-current .evcard{position:relative}
html.day-flow-concept .functional .flow-journal .flow-current .evcard:before{content:'';position:absolute;left:-13px;top:26px;width:4px;height:4px;background:var(--green);border-radius:50%;box-shadow:0 0 8px var(--lx-light)}
html.day-flow-concept .functional .flow-journal .done-sec{margin:0 22px;border:0;border-radius:0;background:none;box-shadow:none}
html.day-flow-concept .functional .flow-journal .done-h{padding:17px 0;color:var(--t3);font-size:11px}
html.day-flow-concept .functional .flow-journal .fold{border-radius:0;background:none;border:0;border-bottom:1px solid var(--line-soft);box-shadow:none}
html.day-flow-concept .functional .flow-journal .donerow{border-radius:0;background:none;border:0;border-bottom:1px solid var(--line-soft);box-shadow:none;padding:14px 0}
html.day-flow-concept .functional .flow-journal .day-actions{padding:8px 22px 22px;gap:7px}
html.day-flow-concept .functional .flow-journal .day-actions .btn{min-height:40px;padding:9px 12px;font-size:11px;box-shadow:none}
html.day-flow-concept .functional .flow-journal .day-actions .btn.green{background:none;color:var(--t2);border-color:var(--line-btn)}
html.day-flow-concept .functional .flow-add{padding-bottom:8px}
html.day-flow-concept .functional .flow-add summary{list-style:none;margin:0 22px;padding:14px 0;font-size:12px;color:var(--t2);cursor:pointer;min-height:44px}
html.day-flow-concept .functional .flow-add summary::-webkit-details-marker{display:none}
html.day-flow-concept .functional .flow-add summary:focus-visible{outline:2px solid var(--green);outline-offset:4px}
@media(max-width:350px){html.day-flow-concept .functional .flow-scroll{padding:10px}html.day-flow-concept .functional .flow-date{padding:18px 18px 0}html.day-flow-concept .functional .flow-summary{padding:23px 18px 18px}html.day-flow-concept .functional .flow-summary h2{font-size:23px}html.day-flow-concept .functional .flow-summary .lx-score{right:18px}html.day-flow-concept .functional .flow-summary .lx-score strong{font-size:44px}html.day-flow-concept .functional .flow-journal .timeline{padding:0 18px;grid-template-columns:32px minmax(0,1fr);gap:0 8px}}
@media(prefers-reduced-motion:reduce){html.day-flow-concept *{animation:none!important;transition:none!important}}
/* Variant 2: one overview above a separate, quiet surface for the plan. */
html.day-flow-split .functional .flow-overview{margin-bottom:16px}
html.day-flow-split .functional .flow-overview .flow-summary{padding-bottom:25px}
html.day-flow-split .functional .flow-plan{background:var(--lx-surface);border-color:var(--line);box-shadow:inset 0 1px 0 var(--lx-light)}
html.day-flow-split .functional .flow-plan .flow-plan-heading{padding-top:20px;padding-bottom:14px;font-size:13px;color:var(--t1)}
html.day-flow-split .functional .flow-plan .done-sec{border-top:1px solid var(--line)}
html.day-flow-split .functional .flow-plan .done-h{padding-top:18px}

/* ---------- дополнения к компоновкам: состояния, которых не было на макете ---------- */
/* «вчера», «через 3 дня» и счёт утра — строкой под датой: рядом с кнопками листания они не помещаются */
html.day-flow-concept .functional .flow-date .hdr-rel{display:block;margin-top:3px;font-size:12px;font-weight:400;letter-spacing:0;color:var(--t3)}
/* над планом стоит блок (подготовка, зарок на отказ, пометка дня) — заголовок плана к нему не прилипает */
html.day-flow-concept:not(.day-flow-split) .functional .prep-inline + .flow-plan-heading,
html.day-flow-concept:not(.day-flow-split) .functional .quitcard + .flow-plan-heading,
html.day-flow-concept:not(.day-flow-split) .functional .banner + .flow-plan-heading{margin-top:20px}
/* утро в «Плане отдельно»: первый текст не прижат к краю своей поверхности */
html.day-flow-split .functional .flow-plan .prep-step{padding-top:20px}
/* крупный системный шрифт (html.text-big ставит app.js): заголовок дня и счёт — друг под другом */
html.text-big.day-flow-concept .functional .flow-summary h2{max-width:none;min-height:0}
html.text-big.day-flow-concept .functional .flow-summary .lx-score{position:static;justify-content:flex-end;margin:8px 0 0}

/* правки по скриншотам с телефона, 5 октября 2026 */
/* свайп строки в новых компоновках: у строки нет своей плашки, поэтому кнопки просвечивали сквозь текст —
   пока панель открыта или строку тянут, строка получает непрозрачную подложку */
html.day-flow-concept .functional .flow-journal .tl-swipe:is(.to-left,.to-right) .tl-swipe-face{background:var(--lx-surface,var(--surface));border-radius:16px}
html.day-flow-concept .functional .flow-journal .tl-swipe:is(.to-left,.to-right) .tl-swipe-face :is(.evcard,.dosecard,.mealcard){border-bottom-color:transparent!important;padding-left:12px;padding-right:8px}
html.day-flow-concept .functional .flow-journal .tl-swipe-actions{border-radius:16px}
html.day-flow-concept .functional .flow-journal .prep-inline-done{margin-top:6px;margin-bottom:8px;opacity:.78}
html.day-flow-concept .functional .flow-journal .tl-swipe:is(.to-left,.to-right).flow-current .evcard:before{display:none}
/* слой распада в новых компоновках: стили строки — от ленты, а рамка и фон поверхности ему не нужны */
.snap-layer.snap-flow{border:0!important;background:none!important;box-shadow:none!important;border-radius:0!important;overflow:hidden}
html.day-flow-concept .functional .snap-layer.snap-flow :is(.evcard,.dosecard,.mealcard){border-bottom-color:transparent!important}
/* строка дела в «Едином дне» и «Плане отдельно» (шаг 133в, замечание владельца: «Важное» и «#работа» стояли друг под другом).
   Сетка строки пришла от карточки (task-meta.css): колонка значка 34px при значке 20px и метки в одной колонке с названием, рядом
   с кнопками. Тексту оставалось 125px из 390, двум меткам не хватало 4px. Здесь колонка значка — по значку, а метки стоят своей
   строкой под названием на всю ширину строки (под кнопками тоже) и переносятся только целиком. */
/* между временем и значком на 4px больше прежнего: туда встаёт рамка выбора (functional.css), не касаясь ни времени, ни значка */
html.day-flow-concept .functional .flow-journal .timeline{column-gap:18px}
@media(max-width:350px){html.day-flow-concept .functional .flow-journal .timeline{column-gap:14px}}
html.day-flow-concept .functional .flow-journal :is(.evcard,.dosecard).pm-card{grid-template-columns:20px minmax(0,1fr) 88px;column-gap:10px;row-gap:2px}
html.day-flow-concept .functional .flow-journal .pm-card>.card-copy{display:contents}
html.day-flow-concept .functional .flow-journal .pm-card>.card-copy>.evtext{grid-column:2;grid-row:1;align-self:center;min-width:0}
html.day-flow-concept .functional .flow-journal .pm-card>.card-copy>.card-tags{grid-column:2/-1;grid-row:2;box-sizing:border-box}
html.day-flow-concept .functional .flow-journal .pm-card>.card-video-footer{grid-row:3}
html.day-flow-concept .functional .flow-journal .card-tags .card-tag{flex:none;overflow-wrap:normal}
html.day-flow-concept .functional .flow-journal .card-tags .card-tag-label{overflow-wrap:break-word}
/* конец шага 133в */

/* Правки по скриншотам владельца (411 dp, Plus, режим «простой»): кнопка «＋ Событие» в «Едином дне» и «Плане отдельно»
   получала тёмный текст на оливковой плашке (правило flow перебивало цвет у plain-заливки); заголовок пустого дня
   растягивался на всю строку, и счёт падал под него. Здесь возвращаем читаемый цвет и место под счёт. */
html[data-luxe].plain .app.functional .day-actions .btn.green{color:var(--on-acc)}
html[data-luxe].plain .functional .lx-hero.flow-summary h2{max-width:calc(100% - 108px)}

/* Три экрана — дополнительное оформление Plus */
/* Plus only — добавить в luxe.css; только очистка календаря. */
html[data-luxe] .functional .cc-options{padding:20px;border-color:var(--line);border-radius:24px;background:var(--lx-surface);box-shadow:inset 0 1px 0 var(--lx-light),0 12px 26px -18px var(--lx-shadow)}
html[data-luxe] .functional .cc-emblem{border-radius:50%;background:radial-gradient(ellipse at 30% 0%,var(--green-bg),var(--bg2));color:var(--lx-metal,var(--t2));box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .cc-intro b{font-size:1.25rem;font-weight:500;letter-spacing:-.035em}
html[data-luxe] .functional .cc-label{font-weight:500}html[data-luxe] .functional .cc-label>span{font-variant-numeric:tabular-nums}
html[data-luxe] .functional .cc-cal{background:var(--bg2);border-radius:14px}html[data-luxe] .functional .cc-cal.on{background:linear-gradient(135deg,var(--green-bg),var(--surface));box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .cc-seg{background:var(--bg2);border:1px solid var(--line);border-radius:16px}
html[data-luxe] .functional .cc-seg button.on{background:linear-gradient(145deg,var(--surface),var(--green-bg))}
html[data-luxe] .functional .cc-periods button{border-radius:99px}html[data-luxe] .functional .cc-periods button.on{border-color:var(--lx-metal,var(--green));background:linear-gradient(145deg,var(--green-bg),var(--surface))}
html[data-luxe] .functional .cc-found-head h2{font-weight:500;font-size:1.375rem;letter-spacing:-.04em}
html[data-luxe] .functional .cc-row i{border-radius:50%}html[data-luxe] .functional .cc-row.on i{box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .cc-confirm{background:linear-gradient(145deg,var(--danger-bg),var(--bg2));border-radius:24px;box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .cc-confirm h3{font-weight:500;letter-spacing:-.035em}
html.text-big[data-luxe] .functional .cc-options{padding:16px}

/* Plus only — добавить в luxe.css. Обычные темы этот блок не используют. */
html[data-luxe] .functional :is(.dayempty.zerostate,.empty.zerostate){display:flex;margin:8px 16px 14px;padding:26px 22px 22px;border:1px solid var(--line);border-radius:24px;background:radial-gradient(ellipse at 50% 0%,var(--green-bg),transparent 70%),var(--lx-surface);box-shadow:inset 0 1px 0 var(--lx-light),0 12px 24px -18px var(--lx-shadow)}
html[data-luxe] .functional .list>.zerostate{margin-left:0;margin-right:0}
html[data-luxe] .functional .zerostate-art{width:92px;height:76px;margin-bottom:18px;color:var(--lx-metal,var(--t2))}
html[data-luxe] .functional .zerostate-art::before{content:"";position:absolute;inset:-8px -14px;border:1px solid var(--line);border-radius:50%;background:radial-gradient(ellipse,var(--green-bg),transparent 72%)}
html[data-luxe] .functional .zerostate-art::after{content:"";position:absolute;inset:-14px -20px;border:1px solid var(--line);border-radius:50%;opacity:.35;pointer-events:none}
html[data-luxe] .functional .zerostate h2{font-size:1.5rem;font-weight:500;letter-spacing:-.045em}
html[data-luxe] .functional .zerostate p{max-width:30ch;font-weight:400}
html[data-luxe] .functional .zerostate::after{width:42px;background:var(--lx-metal,var(--t2));opacity:.45;margin-top:18px}
html[data-luxe] .functional .zerostate-course+.demo{margin-top:0}
html[data-luxe] .functional .zerostate-course:has(+.demo){margin-bottom:0;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0;box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .zerostate-course+.demo{border-top-style:dashed;border-top-left-radius:0;border-top-right-radius:0}
html.text-big[data-luxe] .functional .zerostate{padding:24px 16px 18px}

/* Plus only — добавить в luxe.css; пометка примера остаётся явной. */
html[data-luxe] .functional .demo{padding:22px;border:1px dashed var(--t3);border-radius:24px;background:var(--lx-surface);box-shadow:inset 0 1px 0 var(--lx-light),0 12px 26px -18px var(--lx-shadow);backdrop-filter:blur(12px)}
html[data-luxe] .functional .demo-badge{border-radius:99px;padding:5px 10px;font-weight:500;letter-spacing:.09em}
html[data-luxe] .functional .demo-h h3{font-size:1.375rem;font-weight:500;letter-spacing:-.04em}
html[data-luxe] .functional .demo-x{background:linear-gradient(145deg,var(--surface),var(--bg2));box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional :is(.demo-course,.demo-insight,.demo-agenda){background:linear-gradient(145deg,var(--surface),var(--bg2));border-color:var(--line);box-shadow:inset 0 1px 0 var(--lx-light);border-radius:18px}
html[data-luxe] .functional .demo-ic{border-radius:50%;color:var(--lx-metal,var(--t2));border:1px solid var(--line)}
html[data-luxe] .functional .demo-row i{border-radius:50%}html[data-luxe] .functional .demo-week i{border-radius:50%}
html[data-luxe] .functional .demo-bar{height:6px;background:var(--lx-track,var(--line))}html[data-luxe] .functional .demo-bar i{background:var(--lx-progress,var(--green))}
html[data-luxe] .functional .demo-stat strong{font-weight:500;color:var(--lx-metal,var(--t1))}
html[data-luxe] .functional .demo-chart i{background:var(--lx-progress,var(--green));opacity:.85}
html[data-luxe] .functional .demo-message{background:linear-gradient(145deg,var(--surface),var(--bg2));box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .demo-message-you{background:linear-gradient(135deg,var(--green-bg),var(--surface))}
html.text-big[data-luxe] .functional .demo{padding:18px}

/* Plus only — добавить в luxe.css; лента и каталог используют один материал. */
html[data-luxe] .functional :is(.scn-card,.template-card){background:var(--lx-surface);border-radius:24px;box-shadow:inset 0 1px 0 var(--lx-light),0 14px 28px -18px var(--lx-shadow);backdrop-filter:blur(12px)}
html[data-luxe] .functional :is(.scn-art,.template-art){color:var(--lx-metal,var(--t2));background:radial-gradient(ellipse,var(--green-bg),transparent 70%);border-radius:50%}
html[data-luxe] .functional .scn-card{width:222px;padding:20px;min-height:288px}html[data-luxe] .functional .scn-card>b{font-size:1.125rem;font-weight:500;letter-spacing:-.035em}
html[data-luxe] .functional .scn-card>small{border-top-color:var(--line)}
html[data-luxe] .functional .scn-steps>i{border-radius:50%;color:var(--lx-metal,var(--t2));border:1px solid var(--line);background:linear-gradient(145deg,var(--surface),var(--green-bg))}
html[data-luxe] .functional .template-card h2{font-weight:500;letter-spacing:-.045em;font-size:1.625rem}
html[data-luxe] .functional .template-card button,html[data-luxe] .functional .template-footer button[data-template="preview"]{border:1px solid transparent;border-radius:99px;background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;color:var(--lx-button-ink);box-shadow:inset 0 1px 0 var(--lx-light),0 6px 16px var(--lx-shadow);font-weight:500}
html[data-luxe] .functional .template-card button+button{border-color:var(--line);background:linear-gradient(145deg,var(--surface),var(--bg2));color:var(--t2);box-shadow:none}
html[data-luxe] .functional .template-item{background:var(--lx-surface);border-radius:20px;box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional :is(.template-step-strip svg,.template-check svg,.template-step-icon){color:var(--lx-metal,var(--t2))}
html[data-luxe] .functional .template-step-icon{border-radius:50%;border:1px solid var(--line);background:linear-gradient(145deg,var(--surface),var(--green-bg))}
html.text-big[data-luxe] .functional .scn-card{width:248px}

/* ===== профиль, данные и доступ в палитрах Plus: дизайн GPT от 8 октября 2026 ===== */
/* Plus only. Append to luxe.css; retain the ordinary stylesheet separately. */
html[data-luxe] .functional .ps-card{background:var(--lx-surface);border-radius:24px;padding:22px;box-shadow:inset 0 1px 0 var(--lx-light),0 12px 26px -18px var(--lx-shadow)}
html[data-luxe] .functional .ps-card :is(h2,h3){font-weight:500;font-size:1.1875rem;letter-spacing:-.04em}
html[data-luxe] .functional .ps-symbol{border-radius:50%;background:linear-gradient(145deg,var(--surface),var(--green-bg));color:var(--lx-metal,var(--t2));box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .ps-transfer{background:linear-gradient(145deg,var(--surface),var(--bg2));border-radius:18px;box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .ps-copy>.ps-symbol{border-radius:50%}html[data-luxe] .functional .ps-copy-actions .btn{border-radius:99px}
html[data-luxe] .functional .ps-backup-count,html[data-luxe] .functional .ps-pill{border-radius:99px;background:linear-gradient(145deg,var(--green-bg),var(--surface))}
html[data-luxe] .functional .ps-icon-button{border-radius:50%;background:linear-gradient(145deg,var(--surface),var(--bg2));box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .ps-action-icon{color:var(--lx-metal,var(--t2))}html[data-luxe] .functional .ps-action-danger{border-radius:20px;background:linear-gradient(145deg,var(--danger-bg),var(--bg2))}html[data-luxe] .functional .ps-action-danger .ps-action-icon{color:var(--danger)}
html[data-luxe] .functional .ps-account-email{border-radius:14px;background:linear-gradient(145deg,var(--surface),var(--bg2));box-shadow:inset 0 1px 0 var(--lx-light);font-weight:500}
html[data-luxe] .functional .sheet .ps-head{padding:14px 20px 18px}html[data-luxe] .functional .sheet .ps-head h2{font:500 1.5rem/1.25 var(--ui);letter-spacing:-.045em}
html[data-luxe] .functional .sheet .ps-foot{background:var(--bg)}
html[data-luxe] .functional .ps-auth .acc-card{background:var(--lx-surface);border-radius:22px;box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .ps-auth .acc-card b{font-weight:500}html[data-luxe] .functional .ps-auth .acc-tabs button.on{background:linear-gradient(145deg,var(--surface),var(--green-bg))}


html[data-luxe] .functional .ps-reset .oprow{background:var(--lx-surface);border-radius:18px;box-shadow:inset 0 1px 0 var(--lx-light)}html[data-luxe] .functional .ps-reset .oprow.danger{background:linear-gradient(145deg,var(--danger-bg),var(--bg2))}
html[data-luxe] .functional .ps-assistant-art{width:72px;height:72px;border-radius:50%;background:radial-gradient(ellipse,var(--green-bg),var(--surface));color:var(--lx-metal,var(--t2));box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .ps-assistant-intro>h2{font-weight:500;font-size:1.875rem}html[data-luxe] .functional .ps-assistant-flow>span{border-radius:99px;background:var(--lx-surface)}
html[data-luxe] .functional .ps-scene .acc-scene-top,html[data-luxe] .functional .ps-scene .acc-scene-btns{background:var(--lx-surface);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .ps-scene :is(.acc-main,.acc-alt){background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;color:var(--lx-button-ink);border:1px solid transparent;box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .ps-scene .acc-alt{background:linear-gradient(145deg,var(--surface),var(--bg2));color:var(--t1);border-color:var(--line);box-shadow:none}
/* «Сохраним ваш план» (24.10.2026): главная кнопка — материал темы; общее правило светлых кнопок .btn:not(.green) её не перекрашивает */
html[data-luxe] .functional .acc-unified .acc-scene-btns .btn.acc-main.acc-main{background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;color:var(--lx-button-ink)}
html.text-big[data-luxe] .functional .ps-card{padding:18px}

/* ===== «Время внимания» в палитрах Plus: дизайн GPT от 9 октября 2026 ===== */
/* Plus is a separate visual layer; existing material roles supply its palette. */
html[data-luxe] .functional .fa-header{padding:24px 20px 18px;background:transparent}
html[data-luxe] .functional .fa-header h1{font-weight:500;letter-spacing:-.05em}
html[data-luxe] .functional .fa-header .focus-back{border-radius:50%;background:var(--lx-surface);box-shadow:inset 0 1px 0 var(--lx-light);border-color:var(--line)}
html[data-luxe] .functional .fa-hero{background:var(--lx-stage);border-color:var(--line);border-radius:28px;box-shadow:inset 0 1px 0 var(--lx-light),0 16px 35px -25px var(--lx-shadow)}
html[data-luxe] .functional .fa-hero[data-phase=break]{background:var(--lx-surface)}
html[data-luxe] .functional .fa-hero .focus-dial strong{color:var(--t1);font-weight:500}
html[data-luxe] .functional .fa-hero .focus-track{stroke:var(--lx-track,var(--line))}
html[data-luxe] .functional .fa-hero .focus-arc{stroke:var(--lx-metal,var(--green-tx));stroke-width:3.5}
html[data-luxe] .functional .fa-hero .focus-primary{background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;border:1px solid transparent;color:var(--lx-button-ink);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .fa-hero .focus-secondary{background:var(--surface);border-color:var(--line);color:var(--t1)}
html[data-luxe] .functional .fa-task-title{background:var(--surface);border:1px solid var(--line);border-radius:14px}
html[data-luxe] .functional :is(.fa-setup,.fa-fold,.fa-history-list,.focus-pin){background:var(--lx-surface);border-color:var(--line);box-shadow:inset 0 1px 0 var(--lx-light);border-radius:22px}
html[data-luxe] .functional .fa-symbol{background:var(--surface);color:var(--lx-metal,var(--t2));border-radius:50%;border:1px solid var(--line)}
html[data-luxe] .functional .fa-summary{background:var(--lx-surface);border-color:var(--line);box-shadow:inset 0 1px 0 var(--lx-light);border-radius:24px;padding:24px 20px}
html[data-luxe] .functional .fa-total{color:var(--t1);font-size:1.875rem;font-weight:500}
html[data-luxe] .functional :is(.fa-summary-art,.fa-session-icon){color:var(--lx-metal,var(--t2))}
html[data-luxe] .functional .fa-fold .focus-card{background:transparent;border:0;box-shadow:none}
html[data-luxe] .functional .fa-fold .focus-card>.focus-secondary{background:var(--surface);border-color:var(--line-btn);color:var(--t1)}
html[data-luxe] .functional .fa-empty{background:var(--lx-surface);border-color:var(--line-btn)}

/* ===== метки, видео и кнопки утра в палитрах Plus: дизайн GPT от 9 октября 2026 ===== */
/* Plus layer; takes all materials from the existing theme. */
html[data-luxe] .functional .prep-actions .prep-skip{background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;border:1px solid transparent;color:var(--lx-button-ink);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .prep-actions .prep-add{background:var(--lx-surface);border-color:var(--line);box-shadow:inset 0 1px 0 var(--lx-light);color:var(--t1)}
html[data-luxe] .functional .card-tag-label{background:var(--surface);background:color-mix(in srgb,var(--surface) 72%,transparent);border-color:var(--line);border-color:color-mix(in srgb,var(--line) 42%,transparent);color:var(--t2);border-radius:8px}
html[data-luxe] .functional .card-tag.meta-match .card-tag-label{background:var(--green-bg);border-color:color-mix(in srgb,var(--green) 38%,transparent);color:var(--green-tx)}
html[data-luxe] .functional .pm-card>.icon-btn{width:44px;min-width:44px;height:44px;min-height:44px}
html[data-luxe] .functional .pm-card>.card-controls>button{width:44px;min-width:44px;height:44px;min-height:44px}

/* «Дела вместе» в палитрах Plus: те же карточки на материале темы */
html[data-luxe] .functional :is(.shared-item,.shared-member,.shared-summary,.shared-form,.shared-list-card,.sg-step){background:var(--lx-surface);box-shadow:inset 0 1px 0 var(--lx-light),0 14px 28px -18px var(--lx-shadow);backdrop-filter:blur(12px)}
html[data-luxe] .functional :is(.shared-tick,.shared-more,.shared-back){background:transparent}

/* ===== «Дела вместе» в палитрах Plus: дизайн GPT от 9 октября 2026 ===== */
/* Plus has its own material layer. */
html[data-luxe] .functional .sh-header{background:transparent;padding:12px 20px 18px}
html[data-luxe] .functional .shared-header.sh-header .sh-heading h1{font-size:1.5rem;font-weight:500}
html[data-luxe] .functional .sh-scroll :is(.sh-intro,.sh-list-card,.sh-empty,.sh-member,.shared-form,.sh-settings-card,.shared-comment,.shared-detail-head,.notice-hero,.sh-gate){background:var(--lx-surface);border-color:var(--line);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .sh-scroll .shared-primary{background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;border:1px solid transparent;color:var(--lx-button-ink);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .sh-scroll .shared-secondary{background:var(--surface);color:var(--t1);border-color:var(--line)}
html[data-luxe] .functional .sh-scroll .sh-symbol{background:var(--surface);border:1px solid var(--line);color:var(--lx-metal,var(--green-tx))}
html[data-luxe] .functional .sh-tabs,html[data-luxe] .functional .sh-list-tabs{background:var(--surface)}
html[data-luxe] .functional .sh-issued{background:var(--green-bg);border-color:var(--line)}
html[data-luxe] .functional .sh-scroll :is(.sh-list-tabs,.sh-filters) button{background:transparent;border:0;color:var(--t2)}
html[data-luxe] .functional .sh-scroll :is(.sh-list-tabs,.sh-filters) button.on{background:var(--green-bg);color:var(--green-tx);box-shadow:inset 0 0 0 1px var(--line);font-weight:600}

/* профиль: строка «мой аккаунт» в палитрах Plus */
html[data-luxe] .functional .prof-me{background:var(--lx-surface);border-color:var(--line);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .prof-me-tags i{background:transparent;border:1px solid var(--line);color:var(--t2)}
html[data-luxe] .functional .prof-me-tags i.on{border-color:var(--line-btn,var(--line));color:var(--lx-metal,var(--t1))}

/* полоска недели в палитрах Plus */
html[data-luxe] .functional .cal-side{background:var(--lx-surface);border-color:var(--line);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .cal-strip .grid.week .cell.sel{background:var(--lx-surface)!important;border-color:var(--line-btn,var(--line))!important}


/* «Мой профиль» и «Аккаунт» в палитрах Plus */
html[data-luxe] .functional :is(.ach,.me-plus){background:var(--lx-surface);border-color:var(--line);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .me-plus{color:var(--lx-metal,var(--t1))}

html[data-luxe] .functional .acc-mail{background:var(--lx-surface);border-color:var(--line)}html[data-luxe] .functional .acc-mail .text-button{color:var(--lx-metal,var(--t1))}html[data-luxe] .functional .dr-search{background:var(--lx-surface)}


/* Коллекции Plus витриной (решение владельца 10 октября 2026): плитки прежнего размера стоят в один ряд и листаются вбок;
   лента идёт до краёв шторки, следующая плитка выглядывает справа */
.functional .lx-theme-grid{display:flex;grid-template-columns:none;gap:12px;margin:0 -20px 10px;padding:10px 20px 28px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scroll-padding:0 20px;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;touch-action:pan-x pan-y}
.functional .lx-theme-grid::-webkit-scrollbar{display:none}

/* Помощник в палитрах Plus (владелец, 11 октября 2026: «грязновато там, где пишется, что запланировать»).
   Тень панели вкладок ложилась на поле ввода серой полосой; на экране с полем ввода её нет — поле и панель одна поверхность. */
html[data-luxe] .app:has(.composer) .tabbar{box-shadow:none;border-top:1px solid var(--line)}
html[data-luxe] .functional .composer{border-top:1px solid var(--line);box-shadow:none}
/* «Инь»: кнопка отправки тёмная, как знак помощника в шапке, — светлая на светлом выглядела выключенной */
html[data-theme=yin] .functional .csend{background:linear-gradient(135deg,#4a4d4c,#1f2222)!important;color:#fff!important;border-color:#1f2222!important;box-shadow:0 4px 12px rgba(0,0,0,.14)!important}
html[data-theme=yin] .functional .csend:disabled{opacity:.45}
/* «Ян»: кнопка отправки светлая, как знак помощника в шапке */
html[data-theme=yang] .functional .csend{background:linear-gradient(135deg,#f5f1ea,#d6d2ca)!important;color:#16181b!important;border-color:#f5f1ea!important;box-shadow:0 4px 12px rgba(0,0,0,.3)!important}
html[data-theme=yang] .functional .csend:disabled{opacity:.45}

/* Классический план Plus: дата и стрелки в карточке, без большого дубля сверху. */
.functional .day-head-extras{padding:0 14px;border:0;min-height:0;background:transparent}
.functional .day-head-extras:empty{display:none}
.lx-hero.lx-day-compact{margin-top:10px;padding-top:14px}
.lx-day-head{position:relative;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px;min-height:40px}
.lx-day-heading{display:flex;align-items:center;flex-wrap:wrap;gap:5px;min-width:0}
.lx-day-heading .lx-eyebrow{font:600 11px/1.4 var(--ui);letter-spacing:.02em;color:var(--t2);text-transform:none}
.lx-date-dot{font-size:12px;line-height:1;color:var(--t3)}
.lx-day-date{position:relative;display:inline-flex;align-items:center;min-height:32px;cursor:pointer;color:var(--t2);font:500 11px/1.4 var(--ui);white-space:nowrap}
.lx-day-date input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.lx-day-nav{display:flex;align-items:center;gap:5px;flex:none}
.lx-day-nav .navbtn{display:grid;place-items:center;width:36px;height:40px;min-width:36px;min-height:40px;margin:0;padding:0;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--surface) 66%,transparent);color:var(--t1);font:500 23px/1 var(--ui);cursor:pointer}
.lx-day-nav .today-nav{font-size:18px}.lx-day-nav .tg-menu svg{width:16px;height:16px}
.lx-day-nav .navbtn:focus-visible,.lx-day-date:focus-within{outline:2px solid var(--green-tx);outline-offset:2px}
@media(max-width:374px){.lx-hero.lx-day-compact{padding:12px 14px 16px}.lx-day-head{gap:6px}.lx-day-heading{gap:4px}.lx-day-nav{gap:3px}.lx-day-nav .navbtn{width:32px;min-width:32px}.lx-day-heading .lx-eyebrow,.lx-day-date{font-size:10px}}
/* Владелец, 19 октября 2026: «Ваш день» и дата — одна строка на одной базовой линии, по центру со стрелками
   (общее правило .functional .date-jump делало подпись блоком, и дата поднималась вверх). */
.functional .lx-day-heading .lx-day-date{display:inline-flex;align-items:center}
/* Ряд папок под этой карточкой — в том же ряду размеров, что кнопки макета: высота 40, радиус 12, шаг 8, подпись 12 px.
   Кнопки и их действия прежние (js/folders.js). */
.functional .lx-day-compact ~ .zc-list-filter{gap:8px}
.functional .lx-day-compact ~ .zc-list-filter button{min-height:40px;padding:8px 12px;border-radius:12px;font:500 12px/1.2 var(--ui)}
.functional .lx-day-compact ~ .zc-list-filter :is(.fbar-toggle,.fbar-tune){padding:8px 10px}
@media(max-width:389px){.functional .lx-day-compact ~ .zc-list-filter{gap:6px}.functional .lx-day-compact ~ .zc-list-filter button{padding:8px 9px;gap:5px}.functional .lx-day-compact ~ .zc-list-filter :is(.fbar-toggle,.fbar-tune){padding:8px 7px}}


/* ---- progress.css ---- */
/* Progress atelier: the completion colour follows the active material and a
   user's per-theme choice. The ring and bars share one visual language. */
:root { --progress-color:#187e63; --progress-light:#68cca8; }
.app.functional .lx-hero .lx-meter { height:8px; background:color-mix(in srgb,var(--progress-color) 14%,var(--fill)); box-shadow:inset 0 1px 2px #0002; }
.app.functional .lx-hero .lx-meter>i,
.app.functional .track i,
.app.functional .sbar i {
  background:linear-gradient(90deg,var(--progress-color),var(--progress-light) 58%,var(--progress-color))!important;
  box-shadow:inset 0 1px 0 #ffffff33,0 1px 3px color-mix(in srgb,var(--progress-color) 10%,transparent);
}
html[data-luxe].plain .app.functional :is(.lx-hero .lx-meter>i,.track i,.sbar i) {
  background:var(--progress-color)!important;
  box-shadow:none;
}
.app.functional .lx-hero .lx-meter.done-line { filter:drop-shadow(0 0 3px color-mix(in srgb,var(--progress-color) 10%,transparent)); }

@media(prefers-reduced-motion:reduce){.app.functional .lx-meter>i{transition:none;animation:none}}

/* ---- Наша адаптация (6 октября 2026, по слову владельца): в тёмных темах круг и полосы должны выделяться.
   Цвет дуги почти везде того же тона, что и сама тема (зелёное на зелёном), поэтому дорожку делаем нейтральной,
   а не подкрашенной тем же цветом, дугу — чуть светлее, свечение — заметнее. Оттенки тем не меняются. ---- */
html:is([data-theme="dark"],[data-theme="bwdark"],[data-theme="obsidian"],[data-theme="cobalt"],[data-theme="copper"],[data-theme="garnet"],[data-theme="carnelian"],[data-theme="citrine"],[data-theme="jade"],[data-theme="aquamarine"],[data-theme="indigo"],[data-theme="amethyst"],[data-theme="yang"]) {
  --progress-track:color-mix(in srgb,#fff 11%,transparent);
}
html:is([data-theme="dark"],[data-theme="bwdark"],[data-theme="obsidian"],[data-theme="cobalt"],[data-theme="copper"],[data-theme="garnet"],[data-theme="carnelian"],[data-theme="citrine"],[data-theme="jade"],[data-theme="aquamarine"],[data-theme="indigo"],[data-theme="amethyst"],[data-theme="yang"]) .pg-ring-track {
  stroke:var(--progress-track);
}
html:is([data-theme="dark"],[data-theme="bwdark"],[data-theme="obsidian"],[data-theme="cobalt"],[data-theme="copper"],[data-theme="garnet"],[data-theme="carnelian"],[data-theme="citrine"],[data-theme="jade"],[data-theme="aquamarine"],[data-theme="indigo"],[data-theme="amethyst"],[data-theme="yang"]) .pg-ring-fill {
  filter:brightness(1.12) drop-shadow(0 0 5px color-mix(in srgb,var(--progress-color) 34%,transparent));
}
html:is([data-theme="dark"],[data-theme="bwdark"],[data-theme="obsidian"],[data-theme="cobalt"],[data-theme="copper"],[data-theme="garnet"],[data-theme="carnelian"],[data-theme="citrine"],[data-theme="jade"],[data-theme="aquamarine"],[data-theme="indigo"],[data-theme="amethyst"],[data-theme="yang"]) .app.functional .lx-hero .lx-meter {
  background:var(--progress-track);
}

/* «Ваш прогресс» (js/screens.js progressCard) — макет GPT friends-lab/progress.html, 24.10.2026. Цвета — токены темы:
   выполнение — --progress-color, лёд — --fz; карточки несут класс .card, поэтому рамки и тени тем («Мемы», «Аниме»,
   Glass, ремёсла) ложатся сами. */
.pg{--pg-acc:var(--progress-color,var(--green));--pg-soft:color-mix(in srgb,var(--pg-acc) 13%,var(--surface));--pg-ice:color-mix(in srgb,var(--fz) 12%,var(--surface));--pg-ice-line:color-mix(in srgb,var(--fz) 30%,var(--line));color:var(--t1);container-type:inline-size}
.pg .pg-ic{width:20px;height:20px;flex:none}
.pg-tabs{display:grid;grid-template-columns:repeat(var(--pg-n,3),minmax(0,1fr));gap:4px;margin:0 0 14px;padding:4px;border:1px solid var(--line);border-radius:16px;background:var(--fill-2,var(--bg2))}
.pg-tabs:has(> button:nth-child(2):last-child){--pg-n:2}
.pg .pg-tabs>button{display:flex;align-items:center;justify-content:center;width:100%;min-width:0;min-height:44px;margin:0;padding:6px 4px;border:0;border-radius:12px;background:transparent;box-shadow:none;color:var(--t2);font:600 13.5px/1.2 var(--ui);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.pg .pg-tabs>[aria-selected="true"]{background:var(--surface);color:var(--green-tx);font-weight:700;box-shadow:0 1px 2px #0000000f,0 2px 8px #284a2414}
.pg-tabs button:focus-visible,.pg button:focus-visible{outline:2px solid var(--pg-acc);outline-offset:2px}
.pg .card{margin:0 0 12px}
.pg-hero{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:20px 18px;border-radius:24px}
.pg-hero-ov{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px 10px;padding:15px 18px 19px;background:linear-gradient(125deg,var(--surface),var(--pg-soft))}
.pg-ctx{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.pg-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border:1px solid var(--line);border-radius:9px;background:var(--surface);font:600 11px/1.2 var(--ui);color:var(--green-tx);white-space:nowrap}
.pg-pill .pg-ic{width:13px;height:13px}
.pg-dates{font:500 11px/1.3 var(--ui);color:var(--t2);white-space:nowrap}
.pg-eyebrow{margin:0 0 8px;font:500 12px/1.3 var(--ui);color:var(--t2)}
.pg-num{font:700 46px/1.05 var(--ui);letter-spacing:-2px;font-variant-numeric:tabular-nums}
.pg-num small{font:400 16px/1 var(--ui);letter-spacing:-.3px;color:var(--t2);white-space:nowrap}
.pg-muted{margin:10px 0 0;font:500 12px/1.55 var(--ui);color:var(--t2)}
/* .chart-donut.progress-ring — для украшений тем («Ханами»: блёстки и декор у круга, anime-theme.css) */
.pg .pg-ring{position:relative;width:91px;height:91px;flex:none}
.pg-ring svg{display:block;width:100%;height:100%;fill:none;stroke-width:8;overflow:visible}
.pg-ring-track{stroke:var(--pg-soft)}
.pg-ring-fill{stroke:var(--pg-acc);stroke-linecap:round}
.pg-ring>span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:700 21px/1 var(--ui);letter-spacing:-.8px}
.pg-ring small{font:600 10px/1 var(--ui);margin:6px 0 0 2px;letter-spacing:0;color:var(--t2)}
.pg-card{padding:16px 17px;border-radius:22px}
.pg-card h3{margin:0;font:700 15px/1.25 var(--ui);letter-spacing:-.3px}
.pg-head{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:9px}
.pg-sub{display:block;font:500 11px/1.3 var(--ui);color:var(--t2)}
.pg-today-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.pg-today-top h3{margin-bottom:5px}
.pg-today-num{font:700 27px/1.15 var(--ui);letter-spacing:-1px;white-space:nowrap;font-variant-numeric:tabular-nums}
.pg-today-num small{font:400 12px/1 var(--ui);letter-spacing:-.2px;color:var(--t2)}
.pg-track{height:5px;margin:15px 0 8px;border-radius:4px;background:var(--pg-soft);overflow:hidden}
.pg-track i{display:block;height:100%;border-radius:inherit;background:var(--pg-acc)}
.pg-note{margin:0;font:500 12px/1.6 var(--ui);color:var(--t2)}
.pg-card>.pg-note+*{margin-top:12px}
.pg-ib{display:grid;place-items:center;width:44px;height:44px;margin:-10px -10px -10px 0;padding:0;border:0;border-radius:12px;background:transparent;color:var(--t2);cursor:pointer;flex:none}
.pg-dur{display:flex;align-items:center;gap:10px;margin:10px 0 9px;padding:11px 12px;border:1px solid var(--line);border-radius:14px;background:var(--bg)}
.pg-dur .pg-ic{width:19px;height:19px;color:var(--pg-acc)}
.pg-dur>div{flex:1;min-width:0}
.pg-dur span{display:block;font:500 11px/1.45 var(--ui);color:var(--t2)}
.pg-dur b{display:block;margin-top:3px;font:700 18px/1.2 var(--ui);letter-spacing:-.3px}
.pg-chart{display:block;width:100%;height:auto;margin-top:10px;overflow:visible}
.pg-plan{fill:var(--pg-soft)}.pg-done{fill:var(--pg-acc)}.pg-frz{fill:var(--fz)}
.pg-axis{display:flex;justify-content:space-between;margin-top:7px;font:500 11px/1.3 var(--ui);color:var(--t2)}
.pg-key{display:flex;flex-wrap:wrap;gap:14px;margin:4px 0 2px;padding:10px 12px;border-radius:12px;background:var(--bg);font:500 12.5px/1.3 var(--ui);color:var(--t2)}
.pg-key span{display:flex;align-items:center;gap:5px}
.pg-key i{width:7px;height:7px;border-radius:2px;background:var(--pg-soft);border:1px solid color-mix(in srgb,var(--pg-acc) 25%,transparent)}
.pg-key span:nth-child(2) i{background:var(--pg-acc);border:0}.pg-key span:nth-child(3) i{background:var(--fz);border:0}
.pg-link{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:46px;margin:13px 0 0;padding:10px 0 0;border:0;border-top:1px solid var(--line);background:transparent;color:var(--green-tx);font:600 13px/1.3 var(--ui);text-align:left;cursor:pointer}
.pg-link .pg-ic{width:16px;height:16px}
.pg-link-solo{margin:4px 0 12px;padding:10px 4px;border-top:0}
.pg-shortcuts{display:flex;gap:10px}
.pg .pg-short{flex:1;min-width:0;display:flex;align-items:center;gap:8px;min-height:80px;margin:0;padding:13px 11px;border-radius:18px;color:var(--green-tx);text-align:left;cursor:pointer}
.pg-short>span{flex:1;min-width:0}
.pg-short b{display:block;font:700 14px/1.25 var(--ui);color:var(--t1)}
.pg-short small{display:block;margin-top:4px;font:500 11px/1.4 var(--ui);color:var(--t2)}
.pg-short>.pg-ic:first-child{width:19px;height:19px}.pg-short>.pg-ic:last-child{width:13px;height:13px;color:var(--t2)}
.pg-short:first-child>.pg-ic:first-child{color:var(--orange,#d9824b)}.pg-ice>.pg-ic:first-child{color:var(--fz)}
.pg-hero-ic{display:grid;place-items:center;width:70px;height:70px;border-radius:24px;flex:none}
.pg-hero-ic .pg-ic{width:33px;height:33px}
.pg-hero-series .pg-hero-ic{background:var(--pg-soft);color:var(--orange,#d9824b)}
.pg .pg-hero-frost{background:linear-gradient(120deg,var(--surface),var(--pg-ice))}
.pg-hero-frost .pg-hero-ic{background:var(--pg-ice);border:1px solid var(--pg-ice-line);color:var(--fz)}
.pg-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin:14px 0;padding:0;list-style:none}
.pg-wd{position:relative;min-width:0;text-align:center}
.pg-wd small{display:block;margin-bottom:7px;font:600 11px/1 var(--ui);color:var(--t2);text-transform:capitalize}
.pg-wd>span{display:grid;place-items:center;width:31px;max-width:100%;height:31px;margin:auto;border-radius:11px;background:var(--pg-soft);color:var(--t2)}
.pg-wd .pg-ic{width:16px;height:16px}
.pg-wd.is-done>span,.pg-wd.is-saved>span{background:var(--pg-acc);color:var(--surface)}
.pg-wd.is-frozen>span{background:var(--pg-ice);border:1px solid var(--pg-ice-line);color:var(--fz)}
.pg-wd.is-now>span{outline:1px solid var(--pg-acc);outline-offset:2px}
.pg-wd.is-future{opacity:.55}
.pg-wd>span>i{width:5px;height:5px;border-radius:50%;background:var(--pg-acc)}
.pg-wd b{display:block;margin-top:7px;font:500 11px/1 var(--ui);color:var(--t2)}
.pg-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pg-wkey{display:flex;flex-wrap:wrap;gap:12px;font:500 11px/1.3 var(--ui);color:var(--t2)}
.pg-wkey span:before{content:'';display:inline-block;width:6px;height:6px;margin-right:5px;border-radius:50%;background:var(--line);vertical-align:1px}
.pg-wkey .k-done:before{background:var(--pg-acc)}.pg-wkey .k-frz:before{background:var(--fz)}
.pg-wkey+.pg-note{margin-top:12px}
.pg-sum{display:grid;grid-template-columns:1fr 1fr;margin:14px 0 4px}
.pg-sum>div+div{padding-left:22px;border-left:1px solid var(--line)}
.pg-sum b{display:block;font:700 28px/1.2 var(--ui);font-variant-numeric:tabular-nums}
.pg-sum span{display:block;margin-top:5px;font:500 12px/1.3 var(--ui);color:var(--t2)}
.pg .shc-row{margin:0 0 4px}
.pg .pg-stock{text-align:center;border-color:var(--pg-ice-line)}
.pg-slots{display:flex;justify-content:center;gap:9px;margin:4px 0 16px}
.pg-slots>span{display:grid;place-items:center;width:46px;height:46px;border:1px dashed var(--pg-ice-line);border-radius:15px;background:var(--bg);color:color-mix(in srgb,var(--fz) 35%,var(--t3))}
.pg-slots>span.on{border-style:solid;background:var(--pg-ice);color:var(--fz)}
.pg-slots .pg-ic{width:24px;height:24px}
.pg .pg-buy{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:48px;margin:14px 0 0}
.pg-buy .pg-ic{width:17px;height:17px}
.pg-full{display:flex;align-items:center;justify-content:center;gap:7px;margin:16px 0 4px;font:600 13px/1.3 var(--ui);color:var(--green-tx)}
.pg-full .pg-ic{width:17px;height:17px}
.pg-quiet{margin:12px 0 0;font:500 11.5px/1.55 var(--ui);color:var(--t2)}
.pg-count{padding:5px 7px;border-radius:9px;background:var(--pg-ice);color:var(--fz);font:600 11px/1.2 var(--ui);white-space:nowrap}
.pg-fday{display:flex;align-items:center;gap:11px;padding:13px 0;border-top:1px solid var(--line)}
.pg-fday:first-of-type{margin-top:12px}
.pg-fday>span{display:grid;place-items:center;width:35px;height:35px;border-radius:12px;background:var(--pg-ice);color:var(--fz)}
.pg-fday>span .pg-ic{width:18px;height:18px}
.pg-fday>div{flex:1;min-width:0}
.pg-fday b{display:block;font:600 13px/1.3 var(--ui)}
.pg-fday small{display:block;margin-top:3px;font:500 11.5px/1.3 var(--ui);color:var(--t2)}
.pg-fday i{font:500 11.5px/1.3 var(--ui);font-style:normal;color:var(--t2)}
.pg-empty{margin:14px 0 0;padding-top:13px;border-top:1px solid var(--line);font:500 12.5px/1.7 var(--ui);color:var(--t2)}
@container (max-width:340px){.pg-hero{padding:17px 14px}.pg-hero-ov{padding:13px 14px 17px}.pg-ring{width:84px;height:84px}.pg-hero-ic{width:60px;height:60px;border-radius:20px}.pg .pg-short{padding:12px 8px;gap:6px}.pg-week{gap:3px}.pg-slots{gap:6px}.pg-slots>span{width:40px;height:40px}.pg-num{font-size:40px}}
/* листы страницы: история дней и пояснения */
.pg-wrap{z-index:140;align-items:flex-end;padding:56px 0 0}
.pg-wrap .pg-sheet{max-width:440px;max-height:100%;overflow:auto;padding:18px 18px 22px;border-radius:24px 24px 0 0;color:var(--t1)}
.pg-sheet-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:8px}
.pg-sheet-head b{flex:1;margin-top:9px;font:700 17px/1.35 var(--ui)}
.pg-sheet-head .pg-ib{margin:0 -6px 0 0}
.pg-sheet p{margin:10px 0 0;font:500 13.5px/1.65 var(--ui);color:var(--t2)}
.pg-sheet p b{display:inline;font:700 13.5px/1.65 var(--ui);color:var(--t1)}
.pg-sheet .pg-ic{width:20px;height:20px}
.pg-hrow{display:flex;align-items:center;gap:11px;padding:12px 0;border-bottom:1px solid var(--line)}
.pg-hrow>div{flex:1;min-width:0}
.pg-hrow b{display:block;font:600 13px/1.3 var(--ui)}
.pg-hrow small{display:block;margin-top:3px;font:500 11.5px/1.4 var(--ui);color:var(--t2)}
.pg-hrow>span:last-child{font:500 11.5px/1.3 var(--ui);color:var(--t2);white-space:nowrap}
.pg-dot{display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:11px;background:var(--fill);color:var(--t2)}
.pg-dot .pg-ic{width:16px;height:16px}
.pg-dot.is-done,.pg-dot.is-saved{background:var(--progress-color,var(--green));color:var(--surface)}
.pg-dot.is-frozen{background:color-mix(in srgb,var(--fz) 14%,var(--surface));color:var(--fz)}
/* ---- доработка 24.10.2026 по снимкам владельца ---- */
.pg-sheet{--pg-acc:var(--progress-color,var(--green));--pg-soft:color-mix(in srgb,var(--pg-acc) 13%,var(--surface))}
/* «Поделиться серией» / «Итоги недели» — в самом низу страницы */
.pg-share:empty{display:none}
.pg-share{margin:6px 0 4px}
.pg-share .shc-row{margin:0}
/* узкий экран (320 px): «Заморозки» — ячейки делят ширину, строка бесплатной переносится, без выхода за край */
.pg-slots>span{flex:0 1 46px;min-width:0;aspect-ratio:1;height:auto}
.pg-head{flex-wrap:wrap}
@container (max-width:340px){
  .pg-tabs{gap:2px;padding:3px}.pg .pg-tabs>button{font-size:12.5px;padding:6px 2px}
  .pg-hero-frost .pg-num,.pg-hero-series .pg-num{font-size:40px}
  .pg .pg-stock{padding:14px 12px}
  .pg-slots{gap:5px;margin-bottom:14px}.pg-slots .pg-ic{width:21px;height:21px}
  .pg-fday{gap:9px}.pg-fday>span{width:32px;height:32px}
  .pg-card{padding:14px 13px}
}

/* «Ханами» (anime, anime-dark): фонарик свисает на шнурке с верхней кромки верхней карточки — между плашкой периода и
   датами, над свободным местом между подписью и кругом; круг и даты не закрывает. Искры у круга — без декора. */
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .pg .chart-donut.progress-ring::before,
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .pg .chart-donut.progress-ring::after{content:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .pg .pg-hero-ov{position:relative}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .pg .pg-hero-ov::after{content:"";position:absolute;left:calc(50% - .75px);top:0;width:1.5px;height:12px;background:color-mix(in srgb,var(--t2) 70%,transparent);opacity:var(--anime-decor-dim,1);pointer-events:none;z-index:1}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .pg .pg-hero-ov::before{content:"";position:absolute;left:calc(50% - 14px);top:10px;width:28px;height:42px;background:var(--anime-decor-progress,none) center top/contain no-repeat;opacity:var(--anime-decor-dim,1);filter:var(--anime-decor-night,none);transform-origin:50% -10px;animation:pg-sway 5s ease-in-out infinite;pointer-events:none;z-index:1}
@keyframes pg-sway{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
@media (prefers-reduced-motion:reduce){html[data-anime-decor="1"] .pg .pg-hero-ov::before{animation:none}}

/* «Мемы» (meme, meme-dark): лайм, тёмный контур и жёсткая тень — как «День», календарь и таймер темы */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg{--pg-acc:var(--green);--pg-soft:var(--bg2);--pg-ice:color-mix(in srgb,var(--fz) 16%,var(--surface));--pg-ice-line:var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-tabs{border:1.75px solid var(--line);border-radius:14px;background:var(--bg2);padding:4px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg .pg-tabs>button{border-radius:10px;color:var(--t2);font-weight:700}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg .pg-tabs>[aria-selected="true"]{background:var(--green);color:var(--on-acc);border:1.75px solid var(--shadow);box-shadow:2px 2px 0 var(--shadow)}
html[data-theme="meme-dark"] .pg .pg-tabs>[aria-selected="true"]{border-color:var(--meme-outline,#F0F0F0)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg .card{border-width:1.75px!important;box-shadow:3px 3px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg .pg-hero-ov{background:var(--meme-stage-bg,var(--green-bg))!important;border-width:2px!important;box-shadow:4px 4px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-pill{border:1.5px solid var(--line);border-radius:7px;background:var(--surface);color:var(--t1);font-weight:700}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-ring-track{stroke:var(--surface)!important}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg .pg-ring-fill{stroke:var(--green)!important;filter:drop-shadow(1.5px 1.5px 0 var(--shadow))}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-ring svg{filter:drop-shadow(0 0 0 var(--line))}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-ring>span{color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-track{height:10px;border:1.5px solid var(--line);border-radius:7px;background:var(--bg2)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-track i{background:var(--green);border-right:1.5px solid var(--line);border-radius:0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-dur{background:var(--green-bg);border:1.5px solid var(--line);border-radius:11px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-dur .pg-ic{color:var(--green-tx)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-done{fill:var(--green);stroke:var(--shadow);stroke-width:.9}
html[data-theme="meme-dark"] .pg-done{stroke:var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-plan{fill:var(--bg2);stroke:color-mix(in srgb,var(--line) 45%,transparent);stroke-width:.6}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-link{color:var(--green-tx);font-weight:700;border-top-width:1.5px;border-top-color:var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg .pg-short{color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg .pg-short:active,html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg .pg-link-solo:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-short>.pg-ic:first-child,html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-hero-ic{border:1.5px solid var(--line);border-radius:10px;background:var(--green);color:var(--on-acc)!important;box-shadow:2px 2px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-short>.pg-ic:first-child{width:34px;height:34px;padding:7px;box-sizing:border-box}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-ice>.pg-ic:first-child,html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-hero-frost .pg-hero-ic{background:var(--pg-ice);color:var(--fz)!important}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-hero-ic{border-radius:18px;border-width:1.75px;box-shadow:3px 3px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg .pg-hero-series,html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg .pg-hero-frost{background:var(--surface)!important}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-wd>span{border:1.5px solid var(--line);border-radius:9px;background:var(--surface)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-wd.is-done>span,html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-wd.is-saved>span{background:var(--green);color:var(--on-acc);border-color:var(--shadow);box-shadow:2px 2px 0 var(--shadow)}
html[data-theme="meme-dark"] .pg-wd.is-done>span,html[data-theme="meme-dark"] .pg-wd.is-saved>span{border-color:var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-wd.is-frozen>span{background:var(--pg-ice);border-color:var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-wd.is-now>span{outline:2px solid var(--green-tx)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-wkey .k-done:before{background:var(--green);box-shadow:0 0 0 1px var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-sum>div+div{border-left:1.5px solid var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-slots>span{border:1.5px dashed var(--line);border-radius:11px;background:var(--bg2)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-slots>span.on{border-style:solid;background:var(--pg-ice);box-shadow:2px 2px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-count{border:1.5px solid var(--line);border-radius:7px;background:var(--pg-ice);color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-fday>span{border:1.5px solid var(--line);border-radius:9px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-full{color:var(--green-tx);font-weight:700}
/* листы страницы и лист серии в «Мемах» */
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.pg-sheet,.fz-sheet){border:2px solid var(--line);box-shadow:4px 4px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-sheet{--pg-acc:var(--green);--pg-soft:var(--bg2)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-dot{border:1.5px solid var(--line);border-radius:9px;background:var(--surface)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.pg-dot.is-done,.pg-dot.is-saved){background:var(--green);color:var(--on-acc)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-stock{background:var(--green-bg);border:1.75px solid var(--line);border-radius:14px;box-shadow:3px 3px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-slot{border:1.5px dashed var(--line);border-radius:9px;background:var(--surface)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-slot.on{border-style:solid;color:var(--fz);box-shadow:2px 2px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-d-dot{border:1.5px solid var(--line);border-radius:10px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-d.is-done .fz-d-dot{background:var(--green);border-color:var(--shadow);color:var(--on-acc);box-shadow:2px 2px 0 var(--shadow)}
html[data-theme="meme-dark"] .fz-d.is-done .fz-d-dot{border-color:var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-d.is-frz .fz-d-dot{border-color:var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-sheet .fz-buy{background:var(--green);color:var(--on-acc);border:1.75px solid var(--shadow);box-shadow:3px 3px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-sheet .fz-buy .fz-cost svg{color:var(--on-acc)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-sheet :is(.fz-ad,.fz-earn){background:var(--surface);color:var(--t1);border:1.75px solid var(--line);box-shadow:3px 3px 0 var(--shadow)}
html[data-theme="meme-dark"] .fz-sheet .fz-buy{border-color:var(--meme-outline,#F0F0F0)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-sheet :is(.fz-buy,.fz-ad,.fz-earn):active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-sheet .fz-buy:disabled{background:var(--bg2);color:var(--t2);box-shadow:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-help{background:var(--green-bg);border:1.5px solid var(--line);border-radius:12px;color:var(--t1)}
.pg-share{margin-top:12px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-share .shc-chip{border:1.75px solid var(--line);background:var(--surface);color:var(--t1);box-shadow:3px 3px 0 var(--shadow);font-weight:700}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pg-share .shc-chip:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--shadow)}

/* ---- второй круг правок владельца (24.10.2026) ----
   Цвета дней во всех темах: выполнено — зелёный (насыщеннее плана), заморозка — голубая, план — нейтральный.
   Лист серии, «Ритм месяца», неделя, история. В «Мемах» выполнено — лайм темы (правила выше). */
:root{--day-done:#2c9a59;--day-frz:#3d8fd3;--day-on:#fff}
html:is([data-theme="dark"],[data-theme="bwdark"],[data-theme="obsidian"],[data-theme="cobalt"],[data-theme="copper"],[data-theme="garnet"],[data-theme="carnelian"],[data-theme="citrine"],[data-theme="jade"],[data-theme="aquamarine"],[data-theme="indigo"],[data-theme="amethyst"],[data-theme="yang"],[data-theme$="-dark"]){--day-done:#4fc27f;--day-frz:#6ab4ee;--day-on:#0d2416}
.pg,.pg-sheet,.fz-sheet{--day-plan:color-mix(in srgb,var(--t1) 10%,var(--surface))}
.pg-plan{fill:var(--day-plan)}.pg-done{fill:var(--day-done)}.pg-frz{fill:var(--day-frz)}
.pg-key i{background:var(--day-plan);border:0}.pg-key span:nth-child(2) i{background:var(--day-done)}.pg-key span:nth-child(3) i{background:var(--day-frz)}
.pg-wd>span{background:var(--day-plan)}
.pg-wd.is-done>span,.pg-wd.is-saved>span{background:var(--day-done);color:var(--day-on)}
.pg-wd.is-frozen>span{background:color-mix(in srgb,var(--day-frz) 18%,var(--surface));border:1px solid var(--day-frz);color:var(--day-frz)}
.pg-wkey .k-done:before{background:var(--day-done)}.pg-wkey .k-frz:before{background:var(--day-frz)}
.pg-dot{background:var(--day-plan)}
.pg-dot.is-done,.pg-dot.is-saved{background:var(--day-done);color:var(--day-on)}
.pg-dot.is-frozen{background:color-mix(in srgb,var(--day-frz) 18%,var(--surface));color:var(--day-frz)}
.fz-d.is-done .fz-d-dot{background:var(--day-done);border-color:var(--day-done);color:var(--day-on)}
.fz-d.is-frz .fz-d-dot{background:color-mix(in srgb,var(--day-frz) 18%,var(--surface));border-color:var(--day-frz);color:var(--day-frz)}
.fz-d.is-miss .fz-d-dot{background:var(--day-plan)}
/* «Бесплатная на этой неделе: использована» — светлая скруглённая плашка одной строкой, крестик скрывает до следующей недели */
.fz-free{display:flex;align-items:center;gap:8px;margin:12px 0 0;padding:4px 4px 4px 13px;border-radius:999px;background:color-mix(in srgb,var(--day-frz) 10%,var(--surface));font:500 12.5px/1.3 var(--ui);color:var(--t2);white-space:nowrap;text-align:left}
.fz-stock .fz-free{background:var(--surface)}
.fz-free>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.fz-free>b{flex:none;font:700 12.5px/1.3 var(--ui);color:var(--t1)}
.fz-free>b.is-on{color:var(--day-frz)}
.fz-free-x{flex:none;display:grid;place-items:center;width:32px;height:32px;margin:0;padding:0;border:0;border-radius:50%;background:transparent;color:var(--t2);font:400 18px/1 var(--ui);cursor:pointer}
.fz-free-x:focus-visible{outline:2px solid var(--day-frz);outline-offset:-2px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-free{background:var(--green-bg);border:1.5px solid var(--line);color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-free>b.is-on{color:var(--green-tx)}
/* знакомство: одна строка при первом открытии листа */
.fz-intro{margin:-4px 0 12px;font:500 12.5px/1.45 var(--ui);color:var(--t2)}
/* кнопка покупки — всегда одной строкой: подпись, точка, листик и цена рядом */
.fz-sheet .fz-buy{flex-wrap:nowrap;white-space:nowrap}
.fz-stock-top{flex-wrap:wrap;row-gap:8px}
/* узкий экран: лист серии шире, ячейки запаса меньше — пять встают рядом с подписью */
@media (max-width:360px){
  .fz-wrap{padding:12px}
  .fz-sheet{padding:16px 14px 14px}
  .fz-stock{padding:12px}
  .fz-slots{gap:3px}.fz-slot{width:25px;height:25px;border-radius:8px}.fz-slot svg{width:15px;height:15px}
  .fz-free,.fz-free>b{font-size:12px}.fz-free{padding-left:11px;gap:6px}
  .fz-sheet .fz-buy{padding-left:10px;padding-right:10px;font-size:14px}
}
.fz-sheet>.fz-free{margin:0 0 10px}
@media (max-width:360px){.fz-wrap{padding:10px}.fz-sheet{padding:16px 12px 12px}.fz-free-x{width:28px;height:28px}}
.pg>.fz-free{margin:0 0 12px}
@media (max-width:360px){.fz-wrap{padding:8px}.fz-sheet{padding:16px 11px 12px}.fz-free,.fz-free>b{font-size:11.5px}.fz-free{gap:4px;padding-left:10px}.fz-free-x{width:26px;height:26px;font-size:16px}}
.pg-wkey span:before{background:var(--day-plan);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--t1) 28%,transparent)}
.pg-wkey .k-done:before,.pg-wkey .k-frz:before{box-shadow:none}
@media (max-width:360px){html:is([data-theme="meme"],[data-theme="meme-dark"]) .fz-free{padding-left:9px;gap:3px;letter-spacing:-.15px}html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.fz-free,.fz-free>b){font-size:11px}}
@media (max-width:360px){html[data-artisan] .fz-free{padding-left:9px;gap:3px;letter-spacing:-.15px}html[data-artisan] :is(.fz-free,.fz-free>b){font-size:11px}}


/* ---- review.css ---- */
.rv-card{position:relative;isolation:isolate;overflow:hidden;padding:22px;border:1px solid color-mix(in srgb,var(--green) 24%,var(--line));border-radius:26px;background:radial-gradient(ellipse at 96% 0%,color-mix(in srgb,var(--green) 9%,transparent),transparent 65%),var(--surface);color:var(--t1);box-shadow:inset 0 1px 0 #ffffff16;margin:18px 0}
.rv-close{position:absolute;right:9px;top:9px;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font:400 23px/1 var(--ui);color:var(--t3);z-index:2;background:var(--surface)}
.rv-top{display:flex;gap:6px;align-items:center;min-height:126px}.rv-copy{flex:1;min-width:0}.rv-eyebrow{display:block;margin-bottom:12px;font:600 8px/1.4 var(--ui);letter-spacing:.17em;color:var(--t3)}
.rv-card h2{font:600 25px/1.14 var(--ui);letter-spacing:-.055em;margin:0 0 10px}.rv-card p{font:500 11px/1.6 var(--ui);color:var(--t3);margin:0}.rv-art{width:88px;flex:none;align-self:flex-end;margin-right:-9px}.rv-zarok{width:100%!important;max-width:none!important}
.rv-stars{display:flex;justify-content:space-between;gap:7px;margin:22px 0 9px}.rv-star{width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--line);background:var(--fill-2);border-radius:15px;transition:background .15s,border-color .15s;flex:1;max-width:56px}.rv-star svg{width:26px;height:26px;fill:transparent;stroke:var(--t3);stroke-width:1.35;stroke-linejoin:round}.rv-star.filled{background:color-mix(in srgb,var(--green) 10%,var(--surface));border-color:color-mix(in srgb,var(--green) 48%,var(--line))}.rv-star.filled svg{fill:var(--green);stroke:var(--green)}
.rv-rating-label{font:500 10px var(--ui);color:var(--t3);text-align:center;min-height:14px}.rv-compose{margin-top:20px;padding-top:17px;border-top:1px solid var(--line)}.rv-compose[hidden]{display:none}.rv-compose label{font:600 12px var(--ui);display:block}.rv-compose label>span{float:right;color:var(--t3);font-weight:400;font-size:10px}.rv-compose textarea{display:block;resize:vertical;min-height:88px;max-height:200px;width:100%;margin:10px 0 11px;padding:12px 13px;border-radius:15px;border:1px solid var(--line-btn);background:var(--input-bg,var(--fill-2));color:var(--t1);font:500 12px/1.5 var(--ui)}.rv-compose textarea::placeholder{color:var(--t3)}
.rv-card p.rv-handoff{font-size:9.5px;line-height:1.5;margin-bottom:13px}.rv-primary{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:46px;padding:11px 15px;border-radius:999px;border:1px solid color-mix(in srgb,var(--green) 60%,var(--line));background:color-mix(in srgb,var(--green) 12%,var(--surface));color:var(--t1);font:600 11px/1.4 var(--ui)}.rv-primary>span{font-size:20px;color:var(--green)}.rv-primary:disabled,.rv-team:disabled{opacity:.55;cursor:wait}.rv-team{display:block;margin:13px auto 0;font:500 10px var(--ui);text-decoration:underline;text-underline-offset:3px;color:var(--t2)}.rv-card p.rv-notice:empty{display:none}.rv-card p.rv-notice{margin-top:15px;font-size:11px;color:var(--t2)}.rv-optout{display:block;margin:16px auto 0;font:500 9px var(--ui);color:var(--t3)}
.rv-letter{padding:27px}.rv-letter .rv-top{flex-direction:column-reverse;align-items:flex-start;gap:16px}.rv-letter .rv-art{width:94px;align-self:flex-start;margin:0}.rv-letter h2{font-size:29px;max-width:250px}.rv-letter .rv-copy p{max-width:270px}.rv-anniversary{background:radial-gradient(ellipse at 95% 5%,color-mix(in srgb,var(--green) 13%,transparent),transparent 65%),var(--surface)}.rv-anniversary::before{content:attr(data-years);position:absolute;font:500 135px/1 var(--ui);letter-spacing:-.08em;color:color-mix(in srgb,var(--green) 7%,transparent);right:8px;top:6px;z-index:-1}.rv-anniversary h2{font-size:27px}.rv-anniversary .rv-top{min-height:148px}
.rv-modal{position:absolute;inset:0;z-index:180;background:#0007;display:flex;align-items:flex-end;padding:12px;backdrop-filter:blur(3px)}.rv-modal>.rv-card{margin:0;max-height:calc(100% - var(--safe-top,0px) - 24px);overflow:auto;width:100%;box-shadow:0 24px 60px #0004;padding-bottom:max(24px,var(--safe-bottom,0px))}.rv-modal .rv-letter .rv-top{flex-direction:row;gap:12px}.rv-modal .rv-letter .rv-art{align-self:center;width:74px}.rv-modal .rv-letter h2{font-size:25px}
.rv-stars{display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}.rv-star{width:100%;min-width:0;max-width:none}
.rv-card button:focus-visible,.rv-card textarea:focus-visible{outline:2px solid var(--green);outline-offset:3px}.rv-profile-open{display:flex;justify-content:space-between;width:100%;padding:14px 16px;margin:12px 0;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--t1);font:600 12px var(--ui)}
@media(max-width:350px){.rv-card{padding:18px}.rv-card h2{font-size:23px}.rv-art{width:70px}.rv-stars{gap:5px}.rv-star{height:44px}.rv-primary{font-size:10px}.rv-modal .rv-letter .rv-art{width:55px}.rv-modal .rv-letter h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){.rv-star{transition:none}}

/* вариант «меньше касаний»: пять звёзд показаны сразу, нажимать их не нужно */
.rv-stars-shown .rv-star{cursor:default;pointer-events:none}.rv-card .rv-compose{margin-top:14px;padding-top:0;border-top:0}

/* годовщина: цифра на фоне — число лет; заголовок и текст ровными строками и с отступом от картинки */
.rv-card h2{text-wrap:balance}.rv-card .rv-copy p{text-wrap:pretty}.rv-card .rv-top{gap:16px}.rv-card .rv-copy{padding-right:2px}
.rv-anniversary::before{right:14px;top:10px;font-size:120px}
/* на годовщине Зарок с тортиком крупнее: торт должен читаться */
.rv-card.rv-anniversary .rv-art{width:116px;margin-right:-6px}


/* ---- lifecycle.css ---- */
/* ============================================================
   lifecycle.css — подарки и предложения (js/lifecycle.js; раскадровка ChatGPT «Подарки и предложения», 21.10.2026).
   Цвета — токены темы (styles.css :root и палитры Plus через html[data-theme]), рисунки без текста — js/lifecycle.js art.
   ============================================================ */

/* ---------- окно поверх приложения ---------- */
.lc-wrap{position:fixed;inset:0;z-index:2147482000;display:flex;align-items:flex-end;justify-content:center;padding:16px 14px calc(16px + env(safe-area-inset-bottom));background:var(--scrim);opacity:0;transition:opacity .18s ease}
.lc-wrap.in{opacity:1}
.lc-wrap .lc-box{width:100%;max-width:440px;max-height:calc(100% - 20px);overflow:auto;transform:translateY(14px);transition:transform .22s cubic-bezier(.2,.8,.2,1)}
.lc-wrap.in .lc-box{transform:none}
.lc-wrap:focus{outline:none}
.lc-wrap.lc-page{align-items:stretch;padding:0;background:var(--bg)}
.lc-wrap.lc-page .lc-box{max-width:none;max-height:none;height:100%;padding:calc(18px + env(safe-area-inset-top)) 18px calc(22px + env(safe-area-inset-bottom));background:var(--bg);color:var(--t1)}
.lc-wrap.lc-page .lc-box>*{max-width:520px;margin-left:auto;margin-right:auto}

/* ---------- карточки ---------- */
.lc-card{position:relative;padding:19px;border:1px solid var(--line);border-radius:24px;background:var(--surface);color:var(--t1);box-shadow:0 10px 28px -18px rgba(20,19,16,.35)}
.lc-glass{background:radial-gradient(ellipse at 20% 0%,var(--surface) 0%,color-mix(in srgb,var(--green-bg) 55%,var(--surface)) 45%,color-mix(in srgb,var(--green-bg) 90%,var(--surface)) 100%);box-shadow:inset 0 1px 0 var(--hl),0 7px 23px rgba(56,92,73,.06)}
.lc-gift{text-align:center}
.lc-card h3{margin:10px 0 6px;font:700 18px/1.25 var(--ui);letter-spacing:-.02em}
.lc-card p{margin:8px 0;font:500 13.5px/1.5 var(--ui);color:var(--t2)}
.lc-title{margin:12px 0;font:700 25px/1.2 var(--ui);letter-spacing:-.03em;color:var(--t1)}
.lc-card .lc-small,.lc-small{font:500 12px/1.55 var(--ui);color:var(--t3)}
.lc-pill{display:inline-block;padding:4px 10px;border-radius:14px;background:var(--green-bg);color:var(--green-tx);font:600 11px/1.4 var(--ui)}
.lc-proof{font:600 11px/1.4 var(--ui);letter-spacing:1px;text-transform:uppercase;color:var(--green-tx);opacity:.8}

/* Зарок держит подарок */
.lc-holder{position:relative;width:160px;height:160px;margin:6px auto 0}
.lc-holder .lc-pet{width:100%;height:100%}
.lc-pet{display:block;width:160px;height:160px;object-fit:contain;margin:6px auto 0;filter:drop-shadow(0 10px 14px rgba(38,79,36,.08))}
.lc-pet-s{width:120px;height:120px}
.lc-pet-mini{width:64px;height:64px;object-fit:contain;flex:none}
.lc-hold{position:absolute;right:6px;bottom:10px;width:46px;height:46px;padding:9px;border-radius:15px;background:var(--surface);color:var(--green-tx);box-shadow:0 6px 16px rgba(20,19,16,.14);border:1px solid var(--line)}
.lc-hold.lc-badge{right:-8px;bottom:2px;width:72px;height:72px;padding:0;border:0;border-radius:50%;background:none;box-shadow:none;filter:drop-shadow(0 6px 10px rgba(20,19,16,.18))}
.lc-pet-gift{position:absolute;left:calc(50% + 46px);bottom:104px;width:42px;height:42px;padding:9px;border-radius:14px;background:var(--surface);color:var(--green-tx);border:1px solid var(--line);box-shadow:0 6px 16px rgba(20,19,16,.12)}
.lc-pet-gift svg,.lc-hold{display:block}
.lc-pet-gift svg{width:100%;height:100%}

/* кнопки */
.lc-card .lc-btn{display:block;width:100%;min-height:48px;margin:12px 0 0;border-radius:16px;font-weight:600}
.lc-card .lc-secondary{background:var(--green-bg);border-color:transparent;color:var(--green-tx)}
.lc-card .lc-link,.lc-box .lc-link{background:transparent;border-color:transparent;color:var(--t3);margin-top:4px}
.lc-box>.lc-btn{display:block;width:100%;min-height:48px;margin:12px 0 0;border-radius:16px;font-weight:600}
.lc-box>.lc-secondary{background:var(--green-bg);border-color:transparent;color:var(--green-tx)}
.lc-btn[disabled]{opacity:.6}

/* ---------- «День» ---------- */
.lc-day{margin:4px 14px 12px;display:flex;flex-direction:column;gap:10px}
.lc-note{display:flex;align-items:flex-start;gap:8px;width:100%;margin:0;padding:13px 14px;border:0;border-radius:15px;background:var(--green-bg);color:var(--green-tx);font:500 12.5px/1.5 var(--ui);text-align:left}
.lc-note.lc-quietline{background:transparent;padding:2px 4px;color:var(--t3)}
.lc-spark{flex:none;font-size:14px;line-height:1.3}
.lc-warm{background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--green-bg) 70%,var(--surface)));border-color:color-mix(in srgb,var(--green) 22%,var(--line))}
.lc-warm h3{font-size:21px;letter-spacing:-.03em}
.lc-mini{max-width:230px;margin:0 auto}

/* ---------- рисунки без надписей ---------- */
.lc-art{position:relative;isolation:isolate;width:100%;overflow:hidden;border-radius:22px;background:linear-gradient(135deg,#f8fcf1,#e7f0da);margin:10px 0}
.lc-art.lavender{background:linear-gradient(135deg,#fff,#eee7fb)}
.lc-art svg{display:block;width:100%;height:auto;max-height:200px}
.lc-mini .lc-art{margin:0 0 4px}
.lc-m{transform-box:fill-box;transform-origin:center;animation-duration:4.6s;animation-timing-function:ease-in-out;animation-iteration-count:3}
.lc-float{animation-name:lc-float}.lc-cardm{animation-name:lc-card}.lc-wave{animation-name:lc-wave}.lc-orbit{animation-name:lc-orbit}
@keyframes lc-float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-14px) rotate(2deg)}}
@keyframes lc-card{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-9px) rotate(3deg)}}
@keyframes lc-wave{0%,100%{opacity:.3;transform:scale(.95)}50%{opacity:.8;transform:scale(1.04)}}
@keyframes lc-orbit{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(7px) rotate(12deg)}}
.lc-benefits{list-style:none;padding:0;margin:8px 0}
.lc-benefits li{display:flex;align-items:flex-start;gap:9px;margin:8px 0;font:500 13.5px/1.45 var(--ui);color:var(--t1)}
.lc-benefits li:before{content:'✓';color:var(--green);font-weight:700}

/* ---------- вкладка ИИ ---------- */
.lc-ai,.lc-ending{margin:10px 0 12px;text-align:left}
.lc-ai .lc-title{font-size:22px;margin:10px 0 4px}
.lc-ai .lc-pet-s{margin:4px auto}
.lc-inner{margin-top:8px;padding:14px;border-radius:18px;background:var(--bg2);border:1px solid var(--line-soft)}
.lc-row{display:flex;gap:12px;align-items:flex-start}
.lc-row h3{margin-top:2px}
.lc-trialline{margin:4px 2px 8px}
.lc-end-screen{padding:18px 16px 28px}
.lc-head{margin:6px 2px 14px;font:700 25px/1.2 var(--ui);letter-spacing:-.03em;color:var(--t1)}

/* ---------- профиль и награды ---------- */
.lc-saved{margin:0 0 18px;text-align:center}
.lc-saved .lc-title{font-size:21px;margin:2px 0 6px}

/* ---------- пробный Plus ---------- */
.lc-trial .lc-proof{margin-bottom:6px}
.lc-trial .lc-btn{display:block;width:100%;min-height:46px;margin:10px 0 0;border-radius:15px}
.lc-trial .lc-secondary{background:var(--green-bg);border-color:transparent;color:var(--green-tx)}
.leaf-quiet24{margin-top:6px}

/* ---------- предпросмотр историй (локально и на бете) ---------- */
.lc-preview{position:fixed;left:8px;right:8px;top:calc(6px + env(safe-area-inset-top));z-index:2147483100;display:flex;align-items:center;gap:4px;padding:4px;border-radius:14px;background:rgba(18,18,20,.82);color:#fff;font:600 12px/1.3 var(--ui,system-ui);box-shadow:0 6px 20px rgba(0,0,0,.25)}
.lc-preview button{min-width:36px;min-height:36px;border:0;border-radius:10px;background:transparent;color:#fff;font:inherit;font-size:18px}
.lc-preview button[disabled]{opacity:.3}
.lc-preview .lc-pv-t{flex:1;min-width:0;font-size:12px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lc-menu{max-height:80vh;overflow:auto}
.lc-menu-row{display:flex;justify-content:space-between;gap:10px;width:100%;margin:6px 0;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--t1);text-align:left;font:500 13px/1.4 var(--ui)}
.lc-menu-row span{color:var(--t3)}

@media (prefers-reduced-motion:reduce){.lc-m{animation:none!important}.lc-wrap,.lc-wrap .lc-box{transition:none}}

/* скрытые награды (js/hidden-rewards.js): медальон кодом или значок владельца, выбор, открытка с цифрами, «Дни с делами» */
.hr-card{text-align:center}
.hr-medal{display:block;width:104px;height:104px;margin:10px auto 2px}
.hr-medal svg{display:block;width:100%;height:100%}
.hr-opts{display:grid;gap:0}
.hr-postcard{margin:10px 0 0;padding:14px;border:1px dashed var(--line);border-radius:18px}
.lc-card .hr-big{margin:4px 0;font:700 18px/1.3 var(--ui);color:var(--t1)}
.lc-card .hr-dd{margin-top:12px;text-align:left}

/* «Знакомство с Зароком» (js/learn.js): окна за 5 / 10 / весь список. Полоса и значки пунктов — в единой коллекции (pets.css .achv-coll) */
.ln-big{display:block;width:120px;height:120px;margin:10px auto 2px}
.ln-big svg{display:block;width:100%;height:100%}
.ln-big.off{filter:grayscale(1);opacity:.55}
.ln-big-n{display:block;margin:14px 0 4px;font:750 30px/1.1 var(--ui);color:var(--green-tx)}

/* ---------- подарки сборки 101 (js/gift-offers.js, решения владельца 25.10.2026) ----------
   Вид — макет «Уведомления Зарока» с уточнением 25.10.2026 (notification-studio: gift-view.js, gift-design.css, композиция
   «Компактная»): токены макета → токены темы (--ink → --t1, --muted → --t2, --paper → --surface, --soft → --green-bg,
   --accent → --green-tx; золото бирки и сиреневое стекло Plus — смесью с цветами темы, светлой и тёмной). Кнопки — свои (.btn). */
/* общее: метка с листком (состояния темы, ошибка, подписка, нет связи), факты, срок, мелкий текст, крестик 44 px */
.go-eyebrow{display:flex;align-items:center;gap:7px;padding-right:40px;color:var(--green-tx);font:700 11px/1.3 var(--ui);letter-spacing:.02em}
.go-eyebrow svg{width:16px;height:16px;flex:none}
.go-x{position:absolute;right:8px;top:8px;z-index:2;display:grid;place-items:center;text-align:center;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--t2);font:400 20px/1 var(--ui);cursor:pointer}
.go-head{display:flex;align-items:center;gap:14px}
.go-heading{min-width:0;flex:1}
.go-fine,.lc-card .go-fine{margin:10px 0 0;font:500 10px/1.5 var(--ui);color:var(--t2)}
/* плашка темы «Мемы» над нижней панелью, без затемнения экрана: коробка с биркой «2 дня», заголовок и строка с общим левым краем */
.gt-plate{position:fixed;left:12px;right:12px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:2147481000;max-width:440px;max-height:calc(100% - 120px);overflow:auto;margin:0 auto;padding:20px 20px 16px;border:1px solid var(--line);border-radius:25px;background:linear-gradient(140deg,var(--surface),var(--bg));color:var(--t1);box-shadow:0 15px 40px rgba(20,41,26,.15);opacity:0;transform:translateY(10px);transition:opacity .2s ease,transform .22s cubic-bezier(.2,.8,.2,1)}
.gt-plate.in{opacity:1;transform:none}
.gt-plate .gt-h{margin:0;font:700 22px/1.22 var(--ui);letter-spacing:-.03em;color:var(--t1)}
.gt-plate .gt-text{margin:0;font:500 12px/1.55 var(--ui);color:var(--t2)}
.gt-head .go-heading{display:flex;flex-direction:column;align-items:flex-start;gap:7px;text-align:left}
.go-present{position:relative;flex:none;width:80px;height:93px;transform:translateY(6px);background:radial-gradient(ellipse at 50% 65%,color-mix(in srgb,#f5eedb 60%,var(--surface)),transparent 75%)}
.go-box{display:block;width:80px;height:80px;filter:drop-shadow(0 4px 3px rgba(111,99,59,.1))}
.go-present>span{position:absolute;bottom:0;left:50%;transform:translateX(-50%);padding:3px 10px;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:color-mix(in srgb,#8f763e 75%,var(--t1));font:700 10px/1.3 var(--ui);white-space:nowrap}
.gt-plate .gt-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;gap:6px;margin-top:13px}
.gt-plate .gt-row>:only-child{grid-column:1/-1}
.gt-plate .gt-apply{min-height:46px;padding:9px 8px;border-radius:14px;font:700 11px/1.3 var(--ui)}
.gt-plate .gt-cancel{min-height:46px;padding:9px 8px;border:0;border-radius:14px;background:transparent;color:var(--t2);font:400 11px/1.3 var(--ui);white-space:normal}
.gt-plate button[disabled]{opacity:.6}
.gt-plate .gt-refusal{margin:8px 0 0;text-align:center;font-size:9px}
/* сообщение после «Включить» (не менялось уточнением): компактнее */
.gt-plate.gt-status{padding:14px 16px 14px;border-radius:18px}
.gt-plate.gt-status .gt-h{font-size:18px;margin:9px 0 6px;padding-right:40px}
.gt-plate.gt-status .gt-text{font-size:12.5px}
.gt-plate.gt-error{border-color:color-mix(in srgb,#b8794f 55%,var(--line))}
.gt-plate.gt-error .go-eyebrow{color:#9b674b}
/* окно подарка ИИ и его состояния */
.lc-card.go-n{padding:20px 20px 16px;border-radius:25px;text-align:left;background:linear-gradient(140deg,var(--surface),var(--bg));box-shadow:0 15px 40px rgba(20,41,26,.15)}
.go-n .go-h{margin:0;text-wrap:balance;font:700 23px/1.22 var(--ui);letter-spacing:-.03em;color:var(--t1)}
.lc-card.go-n .go-body{margin:0;font:500 12px/1.55 var(--ui);color:var(--t2)}
.go-char{flex:none;display:flex;align-items:flex-end;justify-content:center;width:94px;height:114px;background:radial-gradient(ellipse at 50% 78%,var(--green-bg),transparent 74%)}
.go-char img{display:block;width:100%;height:108px;object-fit:contain}
.go-offer .go-head,.go-active .go-head,.go-expired .go-head{padding-right:16px;min-height:114px;margin-bottom:10px}
.go-plan{margin:8px 0 12px;position:relative;padding:12px 13px;border:1px solid var(--line);border-radius:15px;background:var(--green-bg)}
.go-facts{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}
.go-facts span{flex:1;padding:8px 5px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--green-tx);text-align:center;white-space:nowrap;font:700 10px/1.3 var(--ui)}
.go-deadline{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 10px;padding:12px;border:1px solid var(--line);border-radius:15px;background:var(--bg)}
.go-deadline small{display:block;font:500 9px/1.4 var(--ui);color:var(--t2)}
.go-deadline strong{display:block;margin:4px 0 0;font:700 12px/1.4 var(--ui);color:var(--t1);font-variant-numeric:tabular-nums}
.go-deadline>span{flex:none;max-width:80px;padding:7px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--green-tx);text-align:center;font:600 10px/1.3 var(--ui);font-variant-numeric:tabular-nums}
.go-actions{display:grid;gap:6px;margin-top:14px}
.lc-card.go-n .go-actions .lc-btn{margin:0;min-height:46px;border-radius:14px;font-size:12px;font-weight:700}
.lc-card.go-n .go-actions .go-secondary{min-height:40px;padding:6px;background:transparent;border-color:transparent;color:var(--t2);font-size:11px;font-weight:400}
/* срок истёк: Зарок грустит у кромки; «К моим делам» и стекло «Посмотреть Plus» */
.go-expired .go-head{align-items:center;min-height:92px;padding-right:18px}
.go-expired .go-h{font-size:21px}
/* Зарок держится ладонями за кромку: линия проходит по пальцам, ниже неё картинку срезаем (владелец 25.10) */
.go-char.go-sad{width:108px;height:86px;border-bottom:1px solid var(--line);background:none;overflow:hidden}
.go-char.go-sad img{width:108px;height:auto;max-height:none;transform:translateY(7px)}
.go-err .go-h{white-space:nowrap;font-size:clamp(17px,5.6vw,22px)}
.go-n .go-plain{margin:10px 0}
.go-actions.go-two{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:8px}
.lc-card.go-n .go-actions .go-plus{display:grid;align-content:center;justify-items:center;gap:1px;min-height:48px;padding:6px 7px;border:1px solid rgba(160,120,200,.45);background:linear-gradient(130deg,rgba(184,150,220,.2),rgba(196,164,231,.07));color:color-mix(in srgb,#8a63ad 60%,var(--t1));box-shadow:inset 0 1px 0 rgba(255,255,255,.3)}
.go-plus>span{font:400 9px/1.2 var(--ui)}
.go-plus strong{display:flex;align-items:center;gap:4px;font:700 16px/1.2 var(--ui);letter-spacing:-.02em}
.go-plus svg{width:15px;height:15px}
/* подарка нет: только заголовок, строка и кнопка */
.go-none .go-head{padding:7px 33px 0 0}
.go-none .go-h{font-size:22px}
.go-none .go-plain{margin:8px 0 0}
.go-none .go-actions{margin-top:15px}
/* день начался */
.go-active .go-head{min-height:102px}
.go-active .go-char{height:102px}
.go-active .go-char img{height:100px}
.go-active .go-facts{margin:10px 0 0}
.go-active .go-facts span{flex:initial;padding:8px 10px}
/* прежний вид: ошибка, подписка, нет связи */
.go-n.go-err{border-color:color-mix(in srgb,#b8794f 55%,var(--line))}
.go-n.go-err .go-eyebrow{color:#9b674b}
.go-err .go-char,.go-paid .go-h,.go-offline .go-h,.go-err .go-h{margin:10px 0 8px}
.go-err .go-char{margin-left:auto;margin-right:auto}
@media (prefers-reduced-motion:reduce){.gt-plate{transition:none}}

/* Зарок сидит на панели с описанием (владелец 25.10): шапка без отступа снизу, ноги на верхней кромке панели */
.go-offer .go-head,.go-active .go-head{margin-bottom:0;align-items:flex-end}
.go-offer .go-head+.go-plan,.go-active .go-head+.go-plan{margin-top:-2px}
.go-offer .go-char,.go-active .go-char{background:none}


/* ---- plus-warmup.css ---- */
/* ============================================================
   plus-warmup.css — прогрев «Попробуйте Plus! 7 дней бесплатно» (js/plus-warmup.js; макет ChatGPT warmup.css, 22.10.2026).
   Все правила — внутри окна .pwu (#pwu-sheet). Шрифт Nunito 400–900 (OFL, public/fonts/nunito-OFL.txt) — только здесь.

   Цвет акцентных строк — одна строка на каждый (выбор владельца из вариантов цвета):
     --wu-accent-trial  — «7 дней бесплатно», «Решите спокойно!»;
     --wu-accent-remind — «за 2 / 3 дня» на шаге напоминания.
   Заголовок шага 4 берёт --wu-accent-plan, если её задать, иначе — тот же --wu-accent-trial.
   Кнопка — фиолетовая #5146df с белым, единственное яркое действие.
   ============================================================ */
:root{--wu-accent-trial:#5f9e1f;--wu-accent-remind:#4f8f1f}
@font-face{font-family:"Zarok Nunito";font-weight:400 900;font-style:normal;font-display:swap;src:url("public/fonts/nunito-400-900.woff2") format("woff2")}

.pwu{color-scheme:light;position:fixed;inset:0;z-index:2147482100;display:flex;justify-content:center;background:#eef3f6;opacity:0;transition:opacity .2s ease;
  --pwu-ink:#2e4435;--pwu-soft:#7c8672;--pwu-paper:#fff;--pwu-line:#e2e6dc;--pwu-pick:#f3f7ec;--pwu-pick-line:#94a582;--pwu-dot:#698258;--pwu-cell:#e6eddc;--pwu-cell-ink:#446340;
  --pwu-acc-trial:var(--wu-accent-trial);--pwu-acc-remind:var(--wu-accent-remind)}
.pwu.in{opacity:1}
.pwu:focus{outline:none}
.pwu *{box-sizing:border-box}
#pwu-sheet .pwu-box,#pwu-sheet .pwu-box *{font-family:"Zarok Nunito",Manrope,system-ui,sans-serif}
.pwu-box{position:relative;width:100%;max-width:480px;height:100%;display:flex;flex-direction:column;overflow:hidden;isolation:isolate;container-type:inline-size;
  background:var(--pwu-paper);color:var(--pwu-ink);font:15px/1.5 "Zarok Nunito",Manrope,system-ui,sans-serif;
  padding:0 0 env(safe-area-inset-bottom)}
.pwu button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.pwu button:focus-visible{outline:3px solid #71c2da;outline-offset:4px}
.pwu[data-step=offer] .pwu-box{background:radial-gradient(ellipse at 50% 13%,#fffdf6 0,transparent 62%),linear-gradient(180deg,#f6f9fc 0%,#edf4f8 44%,#f9fbfc 74%,#fff 91%)}

/* шапка: «‹» и «×» */
.pwu-nav{position:relative;z-index:4;display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:calc(12px + env(safe-area-inset-top)) 12px 0;flex-shrink:0}
.pwu-nav>button{border:0;background:transparent;color:#85907f;width:40px;height:40px;font-size:27px;line-height:1;border-radius:12px}
.pwu-nav .pwu-back{font-size:32px}
.pwu-nav>button:disabled{visibility:hidden}

.pwu-screen{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;scrollbar-width:thin}
.pwu-heading{padding:10px 18px 0;text-align:center;flex-shrink:0;position:relative;z-index:3}
.pwu-heading h1{margin:0;font-size:29px;line-height:1.15;font-weight:900;letter-spacing:-.45px;text-wrap:balance;color:var(--pwu-ink)}
.pwu[data-step=offer] .pwu-heading h1{font-size:clamp(29px,8.5cqw,35px);line-height:1.12;letter-spacing:-.5px}
.pwu[data-step=reminder] .pwu-heading h1{font-size:clamp(20px,6.3cqw,26px);line-height:1.18;letter-spacing:-.35px}
.pwu-heading mark{background:none;padding:0;font-weight:inherit;color:var(--pwu-acc-trial)}
.pwu-heading mark.pwu-acc-remind{color:var(--pwu-acc-remind)}
.pwu-line{display:block;white-space:nowrap}
.pwu-heading h1.pwu-wrap .pwu-line{white-space:normal}

/* рисунок шага над мягкой облачной подложкой */
.pwu-hero{flex:1;position:relative;min-height:160px;max-height:215px;display:flex;align-items:center;justify-content:center;isolation:isolate;overflow:visible;
  background:radial-gradient(ellipse at 50% 85%,#edf4f8a8,transparent 70%)}
.pwu-hero:before{content:"";position:absolute;inset:auto -15% -10px;height:43px;background:var(--pwu-paper);border-radius:60% 50% 0 0;box-shadow:-25px -10px 0 5px var(--pwu-paper),45px -8px 0 3px var(--pwu-paper);z-index:0}
.pwu-hero img{position:absolute;width:100%;height:100%;object-fit:contain;z-index:1;filter:drop-shadow(0 8px 12px #7992a218);animation:pwu-arrive .4s ease-out both}

/* первый шаг: семь Зароков на облаках и четыре статичных слоя глубины */
.pwu .pwu-ensemble{flex:1;min-height:280px;max-height:none;margin:0 -4px;background:none;isolation:isolate;overflow:visible}
.pwu .pwu-ensemble:before{display:none}
.pwu-ensemble>img{left:-2%;width:104%;z-index:2;filter:drop-shadow(0 14px 15px #526f8b1c)}
.pwu-depth{position:absolute;inset:-65px -30px -20px;pointer-events:none;z-index:0;overflow:visible}
.pwu-depth i{position:absolute;display:block}
.pwu-halo{inset:0 -12% 1%;border-radius:50%;background:radial-gradient(ellipse at 52% 39%,#fff5debd 0,#fff7e336 30%,transparent 58%),radial-gradient(ellipse at 24% 62%,#d3e4f28f,transparent 61%)}
.pwu-cloud-back{width:145%;height:35%;left:-28%;top:19%;border-radius:50%;transform:rotate(-14deg);background:linear-gradient(165deg,#ffffffb3 5%,#f5f9fc85 50%,#dce9f247 92%);box-shadow:inset 0 7px 13px #ffffffbc,0 13px 26px #8ca9c010}
.pwu-cloud-floor{width:88%;height:16%;left:7%;bottom:11%;border-radius:50%;transform:rotate(-4deg);background:radial-gradient(ellipse,#91abc33b 0,#b7cad930 35%,#dbe8f012 62%,transparent 75%)}
.pwu-cloud-front{width:150%;height:29%;left:-24%;bottom:-7%;border-radius:50% 65% 0 0;transform:rotate(7deg);background:linear-gradient(178deg,#fff 0,#ffffffc9 42%,#ffffff00 92%);box-shadow:0 -3px 14px #ffffffbd}

/* второй и третий шаги: тот же воздушный фон, что у сцены первого шага, Зарок сидит на облачке внизу рисунка */
.pwu[data-step=reminder] .pwu-box,.pwu[data-step=compare] .pwu-box{background:radial-gradient(ellipse at 50% 13%,#fffdf6 0,transparent 62%),linear-gradient(180deg,#f6f9fc 0%,#edf4f8 44%,#f9fbfc 74%,#fff 91%)}
.pwu[data-step=reminder] .pwu-footer{background:linear-gradient(180deg,#ffffff00,#fff 26px)}
.pwu .pwu-seated{flex:1;min-height:210px;max-height:none;background:none;overflow:visible;isolation:isolate}
.pwu .pwu-seated:before{display:none}
.pwu .pwu-seated .pwu-depth{inset:-40px -30px -10px}
.pwu .pwu-seated>img{left:0;top:auto;bottom:30px;width:100%;height:calc(100% - 36px);max-height:300px;object-fit:contain;object-position:50% 100%;z-index:2;filter:drop-shadow(0 10px 14px #526f8b1f)}
/* облачко под Зароком: несколько перекрывающихся мягких клубов — радиальные градиенты без контура, края растворяются,
   снизу лёгкая голубоватая тень, как у облачных островков сцены первого шага */
.pwu-seat{position:absolute;left:max(12%,calc(50% - 150px));right:max(12%,calc(50% - 150px));pointer-events:none}
.pwu-seat i{position:absolute;border-radius:50%;background:radial-gradient(circle at 50% 38%,#fff 0,#fff 38%,#f6f9fcf2 52%,#e9f1f7b3 63%,#e9f1f700 72%)}
.pwu-seat-back{z-index:1;bottom:26px;height:70px;filter:blur(.6px)}
.pwu-seat-front{z-index:3;bottom:0;height:62px}
.pwu-seat-front:after{content:"";position:absolute;left:6%;right:6%;bottom:-6px;height:22px;border-radius:50%;background:radial-gradient(ellipse at 50% 40%,#9db6c840 0,#9db6c81a 45%,#9db6c800 72%);z-index:-1}
.pwu-seat-back i:nth-child(1){width:34%;height:120%;left:2%;top:10%}
.pwu-seat-back i:nth-child(2){width:38%;height:150%;left:24%;top:-30%}
.pwu-seat-back i:nth-child(3){width:36%;height:140%;left:46%;top:-24%}
.pwu-seat-back i:nth-child(4){width:32%;height:115%;right:2%;top:12%}
.pwu-seat-front i:nth-child(1){width:30%;height:120%;left:0;top:12%}
.pwu-seat-front i:nth-child(2){width:32%;height:150%;left:15%;top:-20%}
.pwu-seat-front i:nth-child(3){width:34%;height:170%;left:33%;top:-40%}
.pwu-seat-front i:nth-child(4){width:32%;height:150%;left:52%;top:-22%}
.pwu-seat-front i:nth-child(5){width:30%;height:120%;right:0;top:14%}
.pwu-seat-front i:nth-child(6){width:70%;height:90%;left:15%;top:38%}

/* второй шаг: выбор срока — вплотную над кнопкой */
.pwu-options{padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:8px;flex-shrink:0}
.pwu-options button{width:100%;display:flex;align-items:center;gap:10px;min-height:54px;text-align:left;padding:10px 13px;border:1px solid var(--pwu-line);background:var(--pwu-paper);border-radius:14px;color:#42563d}
.pwu-options button[aria-checked=true]{border:1.5px solid var(--pwu-pick-line);background:var(--pwu-pick)}
.pwu-options strong{font-size:14px;font-weight:900}
.pwu-options span{margin-left:auto;font-size:11px;color:#7d8c6c}
.pwu-options i{position:relative;flex-shrink:0;width:16px;height:16px;border:1.5px solid #97a486;border-radius:50%}
.pwu-options [aria-checked=true] i:before{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--pwu-dot)}
.pwu-permission{font-size:10px;line-height:1.45;text-align:center;color:#64775d;margin:0 0 8px}

/* третий шаг: сравнение */
.pwu-table{position:relative;z-index:4;background:var(--pwu-paper);color:#334c37;padding:5px 23px 13px;margin-top:auto;border-radius:23px 23px 0 0;flex-shrink:0}
.pwu-table table{width:100%;border-collapse:collapse;font-size:11px;table-layout:fixed}
.pwu-table th:first-child,.pwu-table thead td{width:58%}
.pwu-table th:first-child{text-align:left;font-weight:700}
.pwu-table th,.pwu-table td{padding:7px;text-align:center;line-height:1.25}
.pwu-table thead th{font-size:9px;color:#6e8061;font-weight:900}
.pwu-table tbody td{font-size:17px;line-height:1;color:#c2caba}
.pwu-table tr>*:last-child{background:var(--pwu-cell);color:var(--pwu-cell-ink)}
.pwu-table thead tr>*:last-child{border-radius:13px 13px 0 0}
.pwu-table tbody tr:last-child>*:last-child{border-radius:0 0 13px 13px}
.pwu-table tbody tr+tr th{border-top:1px solid #ebefe2}
.pwu-price{text-align:center;color:#6c7e63;font-size:11px;margin:0 0 12px}
.pwu-err{text-align:center;color:#a2412f;font-size:12px;font-weight:700;margin:0 0 10px}

/* низ: кнопка, условия, «Позже» */
.pwu-footer{position:relative;z-index:3;flex-shrink:0;background:var(--pwu-paper);color:#304536;padding:8px 22px 6px}
.pwu[data-step=offer] .pwu-footer{background:linear-gradient(180deg,#ffffffd1,#fff 30%)}
.pwu .pwu-primary{display:block;width:100%;text-align:center;letter-spacing:normal;text-transform:none;min-height:55px;padding:12px 13px;border:0;border-radius:15px;background:#5146df;color:#fff;box-shadow:0 4px 0 #342b9e;font-size:15px;line-height:1.3;font-weight:900;transition:transform .12s}
.pwu .pwu-primary:active{transform:translateY(3px);box-shadow:0 1px 0 #342b9e}
.pwu .pwu-primary:disabled{opacity:.7;cursor:default}
.pwu-terms{font-size:10px;line-height:1.5;color:var(--pwu-soft);text-align:center;margin:13px 0 1px}
.pwu .pwu-later{display:block;min-height:37px;margin:auto;padding:7px 17px;border:0;background:none;color:#75816b;font-size:12px;font-weight:800}
.pwu .pwu-link{display:inline;padding:0;border:0;background:none;color:#5146df;font-size:inherit;font-weight:800;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}
.pwu-sheet{position:absolute;inset:0;z-index:10;display:flex;align-items:flex-end;background:#1b2b3559;animation:pwu-arrive .2s ease-out}
.pwu-sheet-box{width:100%;max-height:85%;overflow:auto;background:#fff;color:#2e4435;border-radius:23px 23px 0 0;padding:22px 22px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -12px 40px #0002}
.pwu-sheet-box:focus{outline:none}
.pwu-sheet-box h2{margin:0 0 10px;font-size:21px;line-height:1.2;font-weight:900}
.pwu-sheet-box p{margin:0 0 16px;font-size:13px;line-height:1.55;color:#5d6c56}
/* шаг 4: выбор тарифа — раскладка как в выборе подписки, вид прогрева: светлое небо шагов 1–3, Зарок на пушистом облачке
   в шапке, акцент прогрева, выбранная карточка — фиолетовым тона кнопки с мягким свечением, плашки и картинки Зарока */
.pwu[data-step=plans] .pwu-box{background:radial-gradient(ellipse at 50% 0,#fffdf6 0,transparent 55%),linear-gradient(180deg,#f6f9fc 0,#edf4f8 220px,#fff 330px)}
.pwu-plan-head{position:relative;flex-shrink:0;text-align:center;padding:0 12px;isolation:isolate}
.pwu-plan-head h1{margin:0;font-size:clamp(19px,5.9cqw,27px);line-height:1.22;font-weight:900;letter-spacing:-.35px;color:var(--pwu-ink);text-wrap:balance}
.pwu-plan-head mark{background:none;padding:0;font-weight:inherit;color:var(--wu-accent-plan,var(--pwu-acc-trial))}
.pwu-head-pet{position:relative;width:170px;height:118px;margin:2px auto 18px}
.pwu-head-pet>img{position:absolute;left:0;right:0;bottom:22px;margin:auto;height:96px;width:auto;z-index:2;filter:drop-shadow(0 8px 10px #526f8b1f)}
.pwu-head-pet .pwu-seat{left:0;right:0}
.pwu-head-pet .pwu-seat-back{bottom:18px;height:40px}
.pwu-head-pet .pwu-seat-front{bottom:0;height:36px}
.pwu-plans{padding:0 18px 10px;display:flex;flex-direction:column;gap:14px;flex-shrink:0}
.pwu-divider{position:relative;z-index:3;display:flex;align-items:center;gap:14px;margin:0 0 4px;color:#78876a;font-size:12px;font-weight:900;letter-spacing:.6px;text-transform:uppercase}
.pwu-divider:before,.pwu-divider:after{content:"";flex:1;height:2px;border-radius:2px;background:#e2e8dc}
.pwu-plan{position:relative;border-radius:20px;background:#fff;border:1.5px solid #e2e6dc;box-shadow:0 6px 18px #526f8b12}
.pwu-plan.on{border:2.5px solid #5146df;box-shadow:0 0 0 4px #5146df1a,0 10px 26px #5146df26}
.pwu .pwu-plan-hit{position:relative;z-index:1;display:block;min-height:122px;white-space:normal;font-weight:600;width:100%;text-align:left;border:0;background:none;padding:18px 16px 16px;color:#2e4435;border-radius:18px}
.pwu-plan.tagged .pwu-plan-hit{padding-top:44px}
.pwu-plan-tag{position:absolute;top:12px;left:14px;padding:4px 11px;border-radius:999px;background:#5146df;color:#fff;font-size:11px;font-weight:900;letter-spacing:.5px;text-transform:uppercase;box-shadow:0 3px 8px #5146df33}
.pwu-plan-tag.alt{background:#eaf0df;color:#4d6640;box-shadow:none}
.pwu-plan-check{position:absolute;top:-12px;right:-10px;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#5146df;color:#fff;font-size:16px;font-weight:900;box-shadow:0 0 0 3px #fff,0 4px 10px #5146df4d}
.pwu-plan-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.pwu-plan-top strong{font-size:21px;font-weight:900;color:#2e4435}
.pwu-plan-month{font-size:13px;font-weight:900;color:#5d6c56;white-space:nowrap}
.pwu-plan-sub{display:block;margin-top:6px;font-size:14px;font-weight:800;color:var(--pwu-acc-trial)}
.pwu-plan-year{color:#5d6c56}
.pwu-plan-year+.pwu-plan-sub{margin-top:2px}
.pwu-plan-line{display:block;margin-top:12px;font-weight:600;padding-right:76px;font-size:13px;line-height:1.45;color:#56664f}
.pwu-plan-perks{display:flex;flex-direction:column;gap:7px;margin-top:12px;padding-right:76px}
.pwu-plan-perks span{position:relative;padding-left:24px;font-size:14px;font-weight:600;line-height:1.35;color:#46573f}
.pwu-plan-perks span:before{content:"✓";position:absolute;left:2px;top:0;color:#5146df;font-weight:900}
/* картинка Зарока справа внизу карточки — уже имеющиеся рисунки, без новых растров */
.pwu-plan-art{position:absolute;right:8px;bottom:8px;width:72px;height:72px;object-fit:contain;pointer-events:none;filter:drop-shadow(0 6px 8px #526f8b24)}
.pwu-plan-family .pwu-plan-art{width:92px;height:70px}
.pwu-sizes{position:relative;z-index:1;display:flex;gap:8px;padding:0 96px 16px 16px}
.pwu .pwu-sizes button{flex:1;min-height:36px;border:1.5px solid #e2e6dc;border-radius:12px;background:#fff;color:#2e4435;font-weight:900;font-size:14px}
.pwu .pwu-sizes button[aria-checked=true]{border-color:#5146df;background:#f1f0ff;color:#3f35c4}
.pwu .pwu-more{display:block;margin:0 auto;padding:8px 14px;border:0;background:none;color:#5d6c56;font-size:14px;font-weight:800;text-decoration:underline;text-underline-offset:3px}
.pwu-cancel{margin:0 0 10px;text-align:center;font-size:13px;color:#6b7280}
.pwu[data-step=plans] .pwu-footer{border-top:1px solid #eef1ea;padding-bottom:12px}
.pwu-disc{margin-top:10px}
.pwu-announce{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}

/* короткий экран: меньше сцена и отступы, прокручивается содержимое, кнопка остаётся на месте */
@media (max-height:700px){
  .pwu .pwu-ensemble{min-height:195px}
  .pwu-depth{inset:-40px -25px -10px}
  .pwu-heading{padding-top:5px}
  .pwu-hero{min-height:110px;max-height:170px}
  .pwu .pwu-seated{min-height:150px}
  .pwu-table th,.pwu-table td{padding-top:7px;padding-bottom:7px}
}
@media (max-width:350px){
  .pwu-heading{padding-left:12px;padding-right:12px}
  .pwu .pwu-ensemble{min-height:245px}
  .pwu[data-step=reminder] .pwu-heading h1{font-size:clamp(19px,6.3cqw,22px)}
  .pwu .pwu-primary{font-size:14px}
  .pwu-footer{padding-left:17px;padding-right:17px}
}
@media (prefers-contrast:more){.pwu-terms{color:#526148}}


@keyframes pwu-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.pwu,.pwu *{animation:none!important;transition:none!important}}


/* ---- share-year.css ---- */
/* ============================================================
   share-year.css — карточка «Поделиться» (js/share-card.js) и «Итоги года» (js/year.js), сборка 97.
   Цвета — токены темы (styles.css :root, палитры Plus); Glass и ремёсла — их стекло и материал (html[data-glass],
   html[data-artisan]). Движение — только transform и opacity и только без «Уменьшить движение» (tests/smooth.cjs).
   ============================================================ */

/* ---------- кнопки «Поделиться» ---------- */
.shc-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--t1);font:600 13.5px/1.2 var(--ui);cursor:pointer;-webkit-tap-highlight-color:transparent}
.shc-btn svg{width:18px;height:18px;flex:none;color:var(--green-tx)}
.shc-btn:focus-visible{outline:2px solid var(--acc-ring);outline-offset:2px}
.shc-row{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}
.shc-row .shc-chip{flex:1 1 140px}

/* ---------- окно предпросмотра ---------- */
.shc-wrap{position:fixed;inset:0;z-index:2147483200;display:flex;align-items:flex-end;justify-content:center;padding:14px 14px calc(14px + env(safe-area-inset-bottom));background:var(--scrim);opacity:0}
.shc-wrap.in{opacity:1}
.shc-wrap:focus{outline:none}
.shc-box{width:100%;max-width:440px;max-height:calc(100% - 8px);overflow:auto;padding:16px 16px 10px;border:1px solid var(--line);border-radius:26px;background:var(--surface);color:var(--t1);box-shadow:0 18px 50px -20px rgba(0,0,0,.45)}
.shc-h{margin:2px 0 12px;font:700 18px/1.25 var(--ui);letter-spacing:-.02em;text-align:center}
.shc-stage{position:relative;display:flex;align-items:center;justify-content:center;height:min(50vh,440px);aspect-ratio:9/16;max-width:100%;margin:0 auto;border-radius:18px;background:var(--bg2);overflow:hidden;box-shadow:0 10px 28px -16px rgba(0,0,0,.35)}
.shc-stage.square{width:min(100%,330px);height:auto;aspect-ratio:1/1}
.shc-stage.invite{aspect-ratio:3/4}
.shc-canvas{display:block;width:100%;height:100%}
.shc-stage.busy .shc-canvas{opacity:.5}
.shc-wait,.yr-wait{position:absolute;left:50%;top:50%;width:28px;height:28px;margin:-14px 0 0 -14px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--acc-1);opacity:0}
.shc-stage.busy .shc-wait,.yr-preview .yr-wait{opacity:1}
.shc-note{margin:10px 6px 0;font:500 12px/1.45 var(--ui);color:var(--t3);text-align:center}
.shc-seg{display:flex;gap:6px;margin:12px 0 0;padding:4px;border-radius:14px;background:var(--fill-2,var(--bg2))}
.shc-fmt{flex:1;display:flex;align-items:center;justify-content:center;min-height:42px;padding:0 8px;border:0;border-radius:11px;background:transparent;color:var(--t2);font:600 13px/1 var(--ui);text-align:center;cursor:pointer}
.shc-fmt.on{background:var(--surface);color:var(--t1);box-shadow:0 1px 4px rgba(0,0,0,.14)}
/* промокод и QR на карточке: два переключателя под форматом, QR — только при включённом промокоде */
.shc-opts{margin:10px 0 0;padding:0 12px;border-radius:14px;background:var(--fill-2,var(--bg2))}
.shc-opts .shc-opt{min-height:52px;padding:10px 0;border:0;background:transparent;color:var(--t1);text-align:left;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.shc-opts .shc-opt+.shc-opt{border-top:1px solid var(--line)}
.shc-opts .shc-opt[hidden]{display:none}
.shc-opts .setbody em{font-variant-numeric:tabular-nums;letter-spacing:.04em}
.shc-opts .shc-opt:focus-visible{outline:2px solid var(--acc-ring);outline-offset:2px;border-radius:10px}
.shc-box .btn{display:block;width:100%;min-height:48px;margin:10px 0 0;border-radius:16px;font-weight:600}
.shc-box .shc-x{background:transparent;border-color:transparent;color:var(--t3);margin-top:4px}

/* ---------- «Итоги года»: экраны-истории ---------- */
.yr-wrap{position:fixed;inset:0;z-index:2147482600;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--bg),var(--bg2));color:var(--t1);overflow:hidden;opacity:0;touch-action:pan-y;-webkit-user-select:none;user-select:none}
.yr-wrap.in{opacity:1}
.yr-wrap:focus{outline:none}
.yr-glow{position:absolute;right:-35%;top:-18%;width:130%;height:70%;background:radial-gradient(closest-side,color-mix(in srgb,var(--acc-1) 28%,transparent),transparent);pointer-events:none}
.yr-top{position:relative;z-index:3;display:flex;align-items:center;gap:10px;padding:calc(12px + env(safe-area-inset-top)) 12px 6px 16px}
.yr-bars{flex:1;display:flex;gap:4px}
.yr-bars i{flex:1;height:4px;border-radius:2px;background:color-mix(in srgb,var(--t1) 16%,transparent);overflow:hidden}
.yr-bars i b{display:block;width:100%;height:100%;border-radius:2px;background:var(--t1);transform:scaleX(0);transform-origin:0 50%}
.yr-bars i.past b,.yr-bars i.on b{transform:none}
.yr-x{flex:none;display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:color-mix(in srgb,var(--surface) 72%,transparent);color:var(--t1);cursor:pointer}
.yr-x svg{width:20px;height:20px}
.yr-x:focus-visible,.yr-nav:focus-visible{outline:2px solid var(--acc-ring);outline-offset:-4px}
/* касание: справа — дальше, слева — назад; зоны под экраном, кнопки экрана — над ними */
.yr-nav{position:absolute;top:calc(68px + env(safe-area-inset-top));bottom:0;z-index:1;padding:0;border:0;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
.yr-nav.prev{left:0;width:30%}
.yr-nav.next{right:0;width:70%}
.yr-stage{position:relative;z-index:2;flex:1;pointer-events:none}
.yr-slide{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:8px 26px calc(26px + env(safe-area-inset-bottom));text-align:center;opacity:0;overflow:hidden}
.yr-slide.in{opacity:1}
.yr-slide:focus{outline:none}
.yr-slide button,.yr-slide a{pointer-events:auto}
.yr-kick{display:inline-block;padding:6px 14px;border-radius:999px;background:var(--green-bg);color:var(--green-tx);font:700 11.5px/1.3 var(--ui);letter-spacing:.12em;text-transform:uppercase}
.yr-h{margin:4px 0 0;max-width:340px;font:800 30px/1.15 var(--ui);letter-spacing:-.03em;color:var(--t1)}
.yr-big{font:800 clamp(60px,21vw,104px)/1.02 ZarokDisplay,var(--ui);letter-spacing:-.02em;color:var(--t1);font-variant-numeric:tabular-nums;max-width:100%;overflow-wrap:anywhere}
.yr-clock{font-size:clamp(54px,17vw,86px)}
.yr-unit{max-width:320px;font:700 18px/1.3 var(--ui);color:var(--t2)}
.yr-text{margin:6px 0 0;max-width:330px;font:500 16px/1.5 var(--ui);color:var(--t2)}
.yr-note{margin:0;max-width:320px;font:500 12.5px/1.5 var(--ui);color:var(--t3)}
.yr-tip{margin:12px 0 0;font:600 12.5px/1.4 var(--ui);color:var(--t3)}
.yr-z{display:block;margin:2px auto}
.yr-badge{width:140px;height:140px;filter:drop-shadow(0 12px 22px rgba(0,0,0,.18))}
.yr-badges{display:flex;justify-content:center;gap:12px}
.yr-badges img{width:84px;height:84px;filter:drop-shadow(0 8px 14px rgba(0,0,0,.16))}
.yr-pair{display:flex;flex-direction:column;gap:3px;margin:6px 0}
.yr-pair small{font:700 11.5px/1.3 var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--t3)}
.yr-pair b{font:800 32px/1.12 var(--ui);letter-spacing:-.02em;color:var(--t1)}
.yr-card{width:100%;max-width:340px;padding:4px 18px;border:1px solid var(--line);border-radius:22px;background:var(--surface);box-shadow:0 10px 28px -18px rgba(20,19,16,.35)}
.yr-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--line-soft,var(--line))}
.yr-row:last-child{border-bottom:0}
.yr-row span{font:600 14.5px/1.3 var(--ui);color:var(--t2);text-align:left}
.yr-row b{font:800 26px/1 ZarokDisplay,var(--ui);color:var(--t1);font-variant-numeric:tabular-nums}
/* двенадцать месяцев: высота столбика — transform, не height */
.yr-months{display:flex;gap:5px;width:100%;max-width:330px;height:118px;margin:6px 0 0}
.yr-months span{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0}
.yr-months i{flex:1;width:100%;border-radius:6px 6px 3px 3px;background:color-mix(in srgb,var(--acc-1) 34%,transparent);transform:scaleY(var(--h));transform-origin:50% 100%}
.yr-months .top i{background:linear-gradient(var(--acc-1),var(--acc-2))}
.yr-months small{font:700 10.5px/1 var(--ui);color:var(--t3)}
.yr-months .top small{color:var(--t1)}
.yr-preview{position:relative;flex:none;height:min(44vh,400px);aspect-ratio:9/16;border-radius:18px;background:var(--bg2);overflow:hidden;box-shadow:0 16px 40px -18px rgba(0,0,0,.5)}
.yr-card-img{display:block;width:100%;height:100%}
.yr-thanks{font-size:22px}
.yr-acts{display:flex;flex-direction:column;gap:6px;width:100%;max-width:320px;margin-top:4px}
.yr-acts .btn,.yr-slide>.yr-done{min-height:48px;border-radius:16px;font-weight:600}
.yr-acts .yr-done{background:transparent;border-color:transparent;color:var(--t2)}
.yr-slide>.yr-done{width:100%;max-width:320px}
@media (max-height:640px){.yr-h{font-size:25px}.yr-text{font-size:14.5px}.yr-months{height:92px}.yr-preview{height:38vh}}

/* ---------- вход из профиля и напоминание ---------- */
.yr-entry{display:flex;align-items:center;gap:12px;width:100%;margin:0 0 12px;padding:8px 14px 8px 8px;border:1px solid color-mix(in srgb,var(--acc-1) 30%,var(--line));border-radius:20px;background:linear-gradient(135deg,var(--surface),color-mix(in srgb,var(--green-bg) 80%,var(--surface)));color:var(--t1);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.yr-entry .zork{flex:none}
.yr-entry>span:not(.zork){flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.yr-entry b{font:800 16px/1.25 var(--ui);letter-spacing:-.01em}
.yr-entry small{font:500 12.5px/1.4 var(--ui);color:var(--t2)}
.yr-entry>i{font-style:normal;font-size:22px;line-height:1;color:var(--t3)}
.yr-entry:focus-visible{outline:2px solid var(--acc-ring);outline-offset:2px}
.yr-remind .yr-z{margin:8px auto 0}

/* ---------- Glass и ремёсла: своё стекло и материал ---------- */
html[data-glass] .yr-wrap{background:var(--glass-scene,linear-gradient(180deg,var(--bg),var(--bg2)))}
html[data-glass] :is(.shc-box,.yr-card,.yr-entry){background:var(--glass-face,var(--surface));border-color:var(--glass-edge,var(--line));box-shadow:var(--glass-shadow,none);-webkit-backdrop-filter:blur(18px) saturate(1.15);backdrop-filter:blur(18px) saturate(1.15)}
html[data-glass] .shc-fmt.on{background:var(--glass-selected,var(--surface))}
html[data-artisan] .yr-wrap{background:var(--at-page,linear-gradient(180deg,var(--bg),var(--bg2)))}
html[data-artisan] :is(.shc-box,.yr-card,.yr-entry){background:var(--at-surf,var(--material,var(--surface)));border-color:var(--edge,var(--line));box-shadow:var(--relief,none)}
html[data-artisan] .shc-btn{background:var(--button,var(--surface));color:var(--button-ink,var(--t1));border-color:var(--edge,var(--line))}

/* ---------- движение: только без «Уменьшить движение» ---------- */
@media (prefers-reduced-motion:no-preference){
  .shc-wrap{transition:opacity .18s ease}
  .shc-box{transform:translateY(16px);transition:transform .24s cubic-bezier(.2,.8,.2,1)}
  .shc-wrap.in .shc-box{transform:none}
  .shc-stage.busy .shc-wait,.yr-preview .yr-wait{animation:shc-spin .8s linear infinite}
  .yr-wrap{transition:opacity .22s ease}
  .yr-slide{transition:opacity .3s ease,transform .36s cubic-bezier(.2,.8,.2,1)}
  .yr-slide.from-right{transform:translateX(36px)}
  .yr-slide.from-left{transform:translateX(-36px)}
  .yr-slide.in{transform:none}
  .yr-slide.out-left{opacity:0;transform:translateX(-36px)}
  .yr-slide.out-right{opacity:0;transform:translateX(36px)}
  .yr-slide.in :is(.yr-big,.yr-h,.yr-pair,.yr-card,.yr-badges,.yr-badge){animation:yr-up .5s cubic-bezier(.2,.8,.2,1) .06s both}
  .yr-slide.in .yr-months i{animation:yr-grow .7s cubic-bezier(.2,.8,.2,1) .12s both}
  .yr-bars i.on b{animation:yr-fill .4s ease both}
}
@keyframes yr-up{from{opacity:0;transform:translateY(14px)}}
@keyframes yr-grow{from{transform:scaleY(0)}}
@keyframes yr-fill{from{transform:scaleX(0)}}
@keyframes shc-spin{to{transform:rotate(360deg)}}


/* ---- season.css ---- */
/* ============================================================
   season.css — карточка сезонного события в Профиль → Темы (js/season.js shell), сборка 97; вид — макет GPT v5
   seasonal-track (22.10.2026): сверху сцена события, ниже — спокойная часть на токенах темы (дорожка — season-track.css).
   Сцена своя у каждого вида события (data-ss-kind, макет seasons.css: winter, spring, summer, school, halloween; неизвестный
   вид — ночные цвета темы события --ss-h1/--ss-h2) и одинакова в светлой и тёмной теме. Цвета наград (--sx-*) — из макета.
   Движение — частицы сцены: transform и opacity, пока сцена на экране (.is-on), без них при reduced motion.
   Glass — только под html[data-glass]: грань и тень, поверхность непрозрачная (под ней — изгиб сцены).
   ============================================================ */
.ss-card.sz-card{--sx-done:#325d4c;--sx-dot:#325d4c;--sx-gold:#f7dba1;--sx-gold-edge:#b19767;--sx-gold-ink:#2a3433;--sx-line:#638d79;--sx-ring:#799987;--sx-art:#73856a;
  --sz-h1:#132f42;--sz-h2:#214e59;--sz-glow:#3b747a55;--sz-muted:#d4e4e6;--sz-fx:#e4f5fa;
  position:relative;margin:0 0 14px;padding:0;border:1px solid var(--line);border-radius:25px;overflow:hidden;background:var(--surface);color:var(--t1);box-shadow:0 6px 18px #142b1c07}
/* варианты сцены по виду события (макет seasons.css): небо, золото кнопки, цвет полученного шага и частиц */
.sz-card[data-ss-kind="spring"]{--sx-done:#43694d;--sx-gold:#f7e0ba;--sx-gold-edge:#b8a17a;--sz-h1:#254b42;--sz-h2:#4f7461;--sz-glow:#b7d8a74a;--sz-muted:#e3efdf;--sz-fx:#f6cfde}
.sz-card[data-ss-kind="summer"]{--sx-done:#2d6964;--sx-gold:#ffe1a0;--sx-gold-edge:#b39b62;--sz-h1:#16515d;--sz-h2:#35767b;--sz-glow:#e5da8038;--sz-muted:#deefea;--sz-fx:#fff2b6}
.sz-card[data-ss-kind="school"]{--sx-done:#3a5a73;--sx-gold:#f4d7a0;--sx-gold-edge:#a99166;--sz-h1:#283c58;--sz-h2:#3b566e;--sz-glow:#8faebe25;--sz-muted:#dce7ee;--sz-fx:#e8d5aa}
.sz-card[data-ss-kind="halloween"]{--sx-done:#755347;--sx-gold:#ffd19b;--sx-gold-edge:#b98c62;--sz-h1:#322840;--sz-h2:#514153;--sz-glow:#e6a76522;--sz-muted:#eddfeb;--sz-fx:#ffda9a}

/* ---------- сцена ---------- */
.sz-hero{position:relative;isolation:isolate;overflow:hidden;min-height:245px;color:#fff;
  background:radial-gradient(ellipse at 95% 50%,var(--sz-glow),transparent 65%),linear-gradient(125deg,var(--sz-h1),var(--sz-h2))}
/* неизвестный вид события — ночные цвета его темы */
.sz-card[data-ss-kind="other"] .sz-hero{background:radial-gradient(ellipse at 95% 50%,#ffffff1a,transparent 65%),linear-gradient(125deg,var(--ss-h1,#132f42),var(--ss-h2,#214e59))}
.sz-copy{position:relative;z-index:3;max-width:62%;padding:22px 0 38px 20px}
.sz-card .sz-label{margin:0 0 12px;font:650 9px/1.3 var(--ui);letter-spacing:1.8px;text-transform:uppercase;color:var(--sz-muted)}
.sz-card .sz-title{margin:0 0 11px;font:500 30px/1.02 Georgia,'Times New Roman',serif;letter-spacing:-.5px;color:#fff;overflow-wrap:break-word;text-wrap:balance}
.sz-card[data-ss-kind="school"] .sz-title{font-size:28px}
.sz-card[data-ss-kind="halloween"] .sz-title{font-size:29px}
.sz-card .sz-copy.is-long .sz-title{font-size:27px}
.sz-card[data-ss-kind="school"] .sz-copy,.sz-card[data-ss-kind="halloween"] .sz-copy{max-width:64%}
.sz-card .sz-copy.is-long{max-width:62%}
.sz-card .sz-line{margin:0 0 17px;font:400 11px/1.5 var(--ui);color:var(--sz-muted);max-width:190px;text-wrap:balance}
.sz-try{display:inline-flex;align-items:center;gap:13px;min-height:38px;padding:11px 13px;border:0;border-radius:12px;background:var(--sx-gold);color:var(--sx-gold-ink);
  font:750 11px/1.2 var(--ui);text-align:left;box-shadow:0 3px 0 var(--sx-gold-edge);cursor:pointer;-webkit-tap-highlight-color:transparent}
.sz-try:active{transform:translateY(2px);box-shadow:0 1px 0 var(--sx-gold-edge)}
.sz-hero-badge{position:absolute;z-index:2;right:-5px;top:34px;width:156px;height:172px;padding:0;border:0;background:none;color:#d6e3df;cursor:pointer;-webkit-tap-highlight-color:transparent}
.sz-hero-img{position:relative;z-index:2;display:block;width:100%;height:auto;filter:drop-shadow(0 9px 14px #031d3066);transform:rotate(9deg)}
.sz-hero-img svg{display:block;width:100%;height:auto}
.sz-halo{position:absolute;inset:4px -10px 16px;border:1px solid #c5e6e316;border-radius:50%;background:radial-gradient(circle,#b4dbe12f,transparent 70%)}
.sz-year{position:relative;z-index:2;display:block;margin-top:1px;font:500 8px/1.3 var(--ui);letter-spacing:1.5px;text-transform:uppercase}
.sz-twinkle{position:absolute;right:24px;top:16px;font-size:28px;line-height:1;color:#f8dfb2}
.sz-card[data-ss-kind="halloween"] .sz-twinkle{color:#ffd19b;font-size:24px}
.sz-bank{position:absolute;z-index:4;bottom:-22px;left:-20%;width:140%;height:43px;border-radius:50% 65% 0 0;background:var(--surface);transform:rotate(-2deg)}
.sz-try:focus-visible,.sz-hero-badge:focus-visible{outline:3px solid #459de3;outline-offset:3px}

/* неподвижный рисунок сцены: весна — силуэты листьев; лето — солнечный диск и линии волн; учебный год — тетрадная сетка,
   листы и карандаш; Хэллоуин — луна и облака. У зимы рисунка нет — только снег */
.sz-scene{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.sz-scene i{position:absolute;display:block}
.sz-card[data-ss-kind="spring"] .sz-scene i{width:120px;height:45px;right:-26px;bottom:13px;border:1px solid #c7e6d22b;border-radius:100% 0 100% 0;background:#c8dec916;transform:rotate(-50deg)}
.sz-card[data-ss-kind="spring"] .sz-scene i:nth-child(2){width:100px;right:26px;bottom:1px;transform:rotate(-10deg)}
.sz-card[data-ss-kind="spring"] .sz-scene i:nth-child(3){width:95px;right:-25px;bottom:84px;transform:rotate(-75deg)}
.sz-card[data-ss-kind="summer"] .sz-scene i:first-child{width:112px;height:112px;right:-30px;top:-38px;border-radius:50%;background:linear-gradient(150deg,#f5e7a254,#f5d7830d);box-shadow:0 0 0 12px #ffe9a407,0 0 0 29px #ffe9a406}
.sz-card[data-ss-kind="summer"] .sz-scene i:nth-child(2),.sz-card[data-ss-kind="summer"] .sz-scene i:nth-child(3){width:290px;height:85px;right:-70px;bottom:-34px;border:1px solid #c0e0dc44;border-radius:50%;background:#a8d1c90c;transform:rotate(-12deg)}
.sz-card[data-ss-kind="summer"] .sz-scene i:nth-child(3){right:-17px;bottom:-52px;transform:rotate(8deg)}
.sz-card[data-ss-kind="school"] .sz-scene{background-image:linear-gradient(#cfdeed09 1px,transparent 1px),linear-gradient(90deg,#cfdeed09 1px,transparent 1px);background-size:22px 22px;
  -webkit-mask-image:linear-gradient(90deg,transparent 35%,#000);mask-image:linear-gradient(90deg,transparent 35%,#000)}
.sz-card[data-ss-kind="school"] .sz-scene i:first-child{width:95px;height:122px;right:-17px;top:12px;border:1px solid #e7dcb72e;border-radius:6px;background:#ebdfbc0e;transform:rotate(-15deg)}
.sz-card[data-ss-kind="school"] .sz-scene i:nth-child(2){width:85px;height:110px;right:-11px;top:28px;border:1px solid #e0d9be25;border-radius:6px;transform:rotate(-4deg)}
.sz-card[data-ss-kind="school"] .sz-scene i:nth-child(3){width:11px;height:90px;right:20px;bottom:11px;border:1px solid #e8c68c44;background:#e8c68c22;transform:rotate(35deg);clip-path:polygon(0 0,100% 0,100% 83%,50% 100%,0 83%)}
.sz-card[data-ss-kind="halloween"] .sz-scene i:first-child{width:64px;height:64px;right:14px;top:-19px;border-radius:50%;background:#fbd9a42a;box-shadow:0 0 30px #fbd9a414}
.sz-card[data-ss-kind="halloween"] .sz-scene i:nth-child(2){width:85px;height:25px;right:-24px;bottom:30px;border-radius:50%;background:#261c3266;transform:rotate(-35deg)}
.sz-card[data-ss-kind="halloween"] .sz-scene i:nth-child(3){width:80px;height:17px;right:13px;bottom:17px;border-radius:50%;background:#261c3244;transform:rotate(12deg)}

/* частицы сцены: зима — снег, весна — лепестки, лето — солнечные блики, учебный год — золотые искры, Хэллоуин — светлячки.
   Только transform и opacity; идут, пока сцена на экране и приложение открыто (.is-on, js/season.js watch); без них при reduced motion */
.sz-snow{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none}
.sz-snow i{position:absolute;top:-15px;left:var(--x);width:var(--s);height:var(--s);border-radius:50%;background:var(--sz-fx);opacity:0}
.sz-snow i:nth-child(4n){filter:blur(1px)}
.sz-snow.is-on i{animation:sz-snow var(--d) var(--l) linear infinite}
@keyframes sz-snow{0%{opacity:0;transform:translate(0,-6px)}12%{opacity:var(--o)}85%{opacity:var(--o)}100%{opacity:0;transform:translate(var(--dx),260px)}}
.sz-card[data-ss-kind="spring"] .sz-snow i{width:calc(var(--s) * 2.6);height:calc(var(--s) * 1.6);border-radius:85% 0 85% 10%}
.sz-card[data-ss-kind="spring"] .sz-snow.is-on i{animation:sz-petal calc(var(--d) * 1.3) var(--l) linear infinite}
@keyframes sz-petal{0%{opacity:0;transform:translate(-9px,-12px) rotate(-30deg)}15%{opacity:var(--o)}50%{transform:translate(14px,105px) rotate(60deg)}85%{opacity:var(--o)}100%{opacity:0;transform:translate(-5px,265px) rotate(160deg)}}
.sz-card[data-ss-kind="summer"] .sz-snow i{top:calc(20% + var(--x) * .5);box-shadow:0 0 7px #ffe6a2}
.sz-card[data-ss-kind="summer"] .sz-snow i:nth-child(3n){width:6px;height:1px}
.sz-card[data-ss-kind="summer"] .sz-snow i:nth-child(3n)::before{content:"";position:absolute;left:2px;top:-2px;width:1px;height:6px;background:var(--sz-fx)}
.sz-card[data-ss-kind="school"] .sz-snow i{top:var(--x);border-radius:0;transform:rotate(45deg)}
.sz-card[data-ss-kind="summer"] .sz-snow.is-on i,.sz-card[data-ss-kind="school"] .sz-snow.is-on i{animation:sz-glint var(--d) var(--l) ease-in-out infinite}
@keyframes sz-glint{0%,100%{opacity:0;transform:scale(.7)}45%,55%{opacity:.55;transform:scale(1.1)}}
.sz-card[data-ss-kind="halloween"] .sz-snow i{top:var(--x);box-shadow:0 0 7px 2px #ffda9a44;filter:none}
.sz-card[data-ss-kind="halloween"] .sz-snow.is-on i{animation:sz-firefly var(--d) var(--l) ease-in-out infinite}
@keyframes sz-firefly{0%,100%{opacity:0;transform:translate(0,0)}25%{opacity:.2;transform:translate(10px,-12px)}55%{opacity:.65;transform:translate(-9px,-26px)}85%{opacity:.15;transform:translate(9px,-8px)}}
@media (prefers-reduced-motion:reduce){.sz-snow{display:none}}

/* узкий экран: узкая раскладка макета (в макете — до 350 px; у нас до 380 px — телефоны 360 px, длинные заголовки событий на всех языках) */
@media (max-width:380px){.sz-hero-badge{width:128px;right:-7px;top:44px}.sz-card .sz-title{font-size:27px}.sz-card[data-ss-kind="school"] .sz-title,.sz-card[data-ss-kind="halloween"] .sz-title,.sz-card .sz-copy.is-long .sz-title{font-size:25px}.sz-copy{padding-left:16px}.sz-card .sz-body{padding-left:12px;padding-right:12px}}

/* ---------- нижняя часть ---------- */
.sz-body{padding:17px 17px 15px}
/* событие без дорожки — только строка значка */
.sz-card .ss-reward{display:flex;align-items:center;gap:12px}
.sz-card .ss-badge{flex:none;width:42px;height:42px;border-radius:50%;display:block}
.sz-card .ss-badge svg{display:block;width:42px;height:42px}
.sz-card .ss-reward-text{flex:1;min-width:0;display:grid;gap:2px}
.sz-card .ss-reward-text b{font:650 12px/1.3 var(--ui);color:var(--t1)}
.sz-card .ss-reward-text small{font:400 10px/1.35 var(--ui);color:var(--t3)}
.sz-card .ss-claim{flex:none;min-height:38px;padding:0 14px;border:0;border-radius:12px;background:var(--sx-done);color:#fff;font:650 12px/1 var(--ui);cursor:pointer;-webkit-tap-highlight-color:transparent}
.sz-card .ss-claim:disabled{opacity:.6}
.sz-card .ss-claim:focus-visible{outline:2px solid var(--acc-ring);outline-offset:2px}

/* крестик «Скрыть карточку события» (js/season.js hide): поле касания 44 px, звёздочка зимы — левее */
.sz-x{position:absolute;z-index:6;right:4px;top:4px;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:none;color:#e8f1f2;
  font:400 24px/44px var(--ui);text-align:center;opacity:.8;cursor:pointer;-webkit-tap-highlight-color:transparent}
.sz-x:active{opacity:1}
.sz-x:focus-visible{outline:3px solid #459de3;outline-offset:-3px}
.sz-card .sz-x ~ .sz-twinkle{right:52px}
/* страница темы: карточку скрыли — дорожка и «Вернуть карточку» (js/season.js themeTrack) */
.sz-card.sz-page{margin:0 0 14px}
.sz-page .sz-back{display:block;width:calc(100% - 34px);min-height:44px;margin:0 17px 15px;border:1px solid var(--line-btn);border-radius:12px;background:none;
  color:var(--t1);font:600 12px/1.2 var(--ui);cursor:pointer;-webkit-tap-highlight-color:transparent}
.sz-page .sz-back:focus-visible{outline:2px solid var(--acc-ring);outline-offset:2px}

html[data-glass] .ss-card.sz-card{border-color:var(--glass-edge,var(--line));box-shadow:var(--glass-shadow,none)}


/* ---- season-track.css ---- */
/* ============================================================
   season-track.css — «Сезонная дорожка наград» (js/season-track.js) в нижней части карточки события (season.css), вид —
   макет GPT v5 seasonal-track (22.10.2026): строка «N дней с делами», ряд шагов с днями, строка значка с кольцом серии,
   «Забрать подарок»; лист шага. Поверхности и текст — токены текущей темы; цвета наград (--sx-*, season.css .ss-card) —
   из макета: получено — зелёный, готово — золото, без красного. Движения нет, кроме заливки линии (transform); при reduced motion —
   без него. Glass — только под html[data-glass].
   ============================================================ */
.sz-card .st-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 18px}
.sz-card .st-head b{font:700 12px/1.3 var(--ui);color:var(--t1)}
.sz-card .st-head span{font:400 9px/1.3 var(--ui);color:var(--t3);text-align:right}

/* шаги: колонки поровну; линия пути — от центра первого шага до центра последнего, заливка — по дням с делами */
.st-row{position:relative;isolation:isolate;display:grid;grid-template-columns:repeat(var(--st-n,4),minmax(0,1fr));margin:0 -3px 17px;padding:0;list-style:none}
.st-row::before,.st-row::after{content:"";position:absolute;z-index:-1;top:22px;height:3px;left:calc(50% / var(--st-n,4));pointer-events:none}
.st-row::before{right:calc(50% / var(--st-n,4));background:var(--line)}
.st-row::after{width:calc(100% - 100% / var(--st-n,4));background:var(--sx-line,#638d79);transform:scaleX(var(--st-fill,0));transform-origin:0 50%;transition:transform .8s ease}
.st-step{display:flex;justify-content:center;min-width:0}
.st-btn{display:flex;flex-direction:column;align-items:center;width:100%;min-height:79px;padding:0;border:0;background:none;color:var(--t3);
  font:inherit;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent}
.st-btn:focus-visible{outline:none}
.st-btn:focus-visible .st-dot,.st-badge:focus-visible,.st-claim:focus-visible{outline:2px solid var(--acc-ring,#459de3);outline-offset:2px}
.st-dot{position:relative;display:grid;place-items:center;width:46px;height:46px;box-sizing:border-box;margin-bottom:7px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--t3)}
.st-dot svg{width:23px;height:23px}
.sz-card .st-btn b{max-width:100%;font:600 10px/1.3 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.sz-card .st-btn small{margin-top:1px;font:400 9px/1.3 var(--ui);color:var(--t3)}
.st-step.is-got .st-dot{border-color:var(--sx-done);background:var(--sx-done);color:#fff}
.st-step.is-ready .st-dot{border-color:var(--sx-gold-edge);background:var(--sx-gold);color:var(--sx-gold-ink);box-shadow:0 0 0 4px #e7cf9730}
.st-step.is-ready .st-dot::after{content:"";position:absolute;top:0;right:0;width:7px;height:7px;border:2px solid var(--surface);border-radius:50%;background:var(--sx-dot,#325d4c)}
.st-step.is-next .st-dot{border-color:#7f9b86;color:var(--t1)}
/* не успели — бледнеет только рисунок */
.st-step.is-miss .st-dot>*{opacity:.5}
.st-step.is-miss b{color:var(--t3)}

/* строка значка: своё правило — дни подряд */
.st-badge{display:flex;align-items:center;gap:10px;width:100%;padding:12px 0;border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  background:none;color:var(--t1);font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.st-badge>img,.st-badge>svg{flex:none;display:block;width:42px;height:42px}
.st-badge-t{flex:1;min-width:0}
.sz-card .st-badge-t strong{display:block;font:650 12px/1.3 var(--ui)}
.sz-card .st-badge-t small{display:block;margin-top:2px;font:400 10px/1.3 var(--ui);color:var(--t3)}
.st-ring{flex:none;position:relative;width:29px;height:29px;border-radius:50%;background:conic-gradient(var(--sx-ring,#799987) var(--st-sw,0deg),var(--line) 0)}
.st-ring::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--surface)}
.st-chev{flex:none;font-size:22px;line-height:1;color:var(--t3)}
.st-claim{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:12px;padding:11px;border:0;border-radius:12px;background:var(--sx-done,#325d4c);color:#fff;
  font:650 12px/1.3 var(--ui);cursor:pointer;-webkit-tap-highlight-color:transparent}
.sz-card .st-done{margin:11px 0 0;font:400 10px/1.4 var(--ui);color:var(--t3);text-align:center}
@media (prefers-reduced-motion:reduce){.st-row::after{transition:none}}

/* лист шага: окно приложения (.dlg) снизу экрана, как в макете */
.st-wrap{--sx-done:#325d4c;--sx-art:#73856a;align-items:flex-end;padding:10px}
/* главная кнопка листа — цвет вида события, как у полученного шага в карточке (season.css) */
.st-wrap[data-ss-kind="spring"]{--sx-done:#43694d}
.st-wrap[data-ss-kind="summer"]{--sx-done:#2d6964}
.st-wrap[data-ss-kind="school"]{--sx-done:#3a5a73}
.st-wrap[data-ss-kind="halloween"]{--sx-done:#755347}
.dlg.st-sheet{position:relative;max-width:480px;max-height:90%;overflow-y:auto;padding:25px 23px;border-radius:24px;text-align:left;color:var(--t1);
  box-shadow:0 -8px 40px #0002;transform:translateY(12px)}
.dlg-wrap.in .dlg.st-sheet{transform:none}
.st-x{position:absolute;right:12px;top:10px;width:36px;height:36px;padding:0;border:0;background:transparent;color:var(--t3);font:400 26px/1 var(--ui);cursor:pointer}
.st-sheet-icon{margin-top:5px;color:var(--sx-art)}
.st-sheet-icon svg{display:block;width:53px;height:53px}
.st-sheet-icon img{display:block;width:64px;height:64px;border-radius:50%;object-fit:cover}
.st-sheet-icon.is-badge img{width:110px;height:auto;border-radius:0}
.dlg.st-sheet .st-kick{margin:10px 0;font:500 9px/1.3 var(--ui);letter-spacing:1.3px;text-transform:uppercase;color:var(--t3)}
.dlg.st-sheet .st-title{display:block;margin:8px 0 10px;font:500 25px/1.15 Georgia,'Times New Roman',serif;letter-spacing:0;color:var(--t1);text-align:left}
.dlg.st-sheet p{margin:10px 0 0;font:400 13px/1.6 var(--ui);color:var(--t3)}
.dlg.st-sheet .st-prog{margin-top:6px;font-weight:650;color:var(--t1)}
.st-main{display:block;width:100%;text-align:center;margin-top:22px;padding:13px;border:0;border-radius:12px;background:var(--sx-done);color:#fff;font:650 13px/1.3 var(--ui);cursor:pointer}
.st-main:disabled{background:var(--line);color:var(--t3);cursor:default}
.st-x:focus-visible,.st-main:focus-visible{outline:2px solid var(--acc-ring,#459de3);outline-offset:2px}

html[data-glass] .dlg.st-sheet{border:1px solid var(--glass-edge,var(--line));box-shadow:var(--glass-shadow,0 -8px 40px #0002)}


/* ---- news.css ---- */
/* ============================================================
   news.css — «Новости и задания» с сервера (js/news.js): один вид карточки и окна на все записи.
   Только переменные текущей темы (styles.css :root и темы): цвета записи с сервера не приходят.
   ============================================================ */
.nw-card{position:relative;display:flex;gap:12px;align-items:flex-start;margin:10px 0 12px;padding:14px 14px 14px 16px;border-radius:18px;
  background:var(--surface);color:var(--t1);border:1px solid var(--line);box-shadow:0 1px 2px rgba(0,0,0,.04)}
.nw-card .nw-img{flex:0 0 auto;width:56px;height:56px;border-radius:14px;object-fit:contain;background:var(--bg2)}
.nw-copy{flex:1 1 auto;min-width:0;padding-right:22px}
.nw-pill{margin:0 0 4px;font-size:12px;line-height:1.3;color:var(--t3);font-weight:600;letter-spacing:.01em}
.nw-h{margin:0;font-size:16px;line-height:1.3;font-weight:700;color:var(--t1);overflow-wrap:anywhere}
.nw-b{margin:4px 0 0;font-size:14px;line-height:1.45;color:var(--t2);overflow-wrap:anywhere}
.nw-x{position:absolute;top:6px;right:6px;width:32px;height:32px;border:0;border-radius:50%;background:transparent;color:var(--t3);
  font-size:20px;line-height:32px;text-align:center;cursor:pointer;padding:0}
.nw-x:hover,.nw-x:focus-visible{background:var(--bg2);color:var(--t1)}
.nw-x:focus-visible,.nw-btn:focus-visible{outline:2px solid var(--acc-ring);outline-offset:2px}
.nw-prog{margin:10px 0 0;display:flex;flex-direction:column;gap:6px}
.nw-bar{display:block;height:8px;border-radius:8px;background:var(--fill);overflow:hidden}
.nw-bar i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,var(--acc-1),var(--acc-2))}
.nw-line{font-size:13px;color:var(--t2)}
.nw-prog.is-done .nw-line{color:var(--green-tx);font-weight:600}
.nw-rw{margin:6px 0 0;font-size:13px;font-weight:600;color:var(--t1)}
.nw-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.nw-btn{min-height:40px;padding:0 16px;border-radius:14px;font-weight:600;max-width:100%;white-space:normal}
/* окно при заходе: снизу, как остальные окна приложения */
.nw-wrap{position:fixed;inset:0;z-index:2147482000;display:flex;align-items:flex-end;justify-content:center;padding:16px 14px calc(16px + env(safe-area-inset-bottom));
  background:var(--scrim);opacity:0;transition:opacity .18s ease}
.nw-wrap.in{opacity:1}
.nw-wrap:focus{outline:none}
.nw-box{width:100%;max-width:440px;max-height:calc(100% - 20px);overflow:auto;transform:translateY(14px);transition:transform .22s cubic-bezier(.2,.8,.2,1)}
.nw-wrap.in .nw-box{transform:none}
.nw-sheet{flex-direction:column;align-items:stretch;margin:0;padding:22px 18px 18px;border-radius:24px}
.nw-sheet .nw-img{width:96px;height:96px;align-self:center;border-radius:20px}
.nw-sheet .nw-copy{padding-right:0;text-align:center}
.nw-sheet .nw-h{font-size:19px}
.nw-sheet .nw-b{font-size:15px}
.nw-sheet .nw-btns{flex-direction:column}
.nw-sheet .nw-btn{width:100%;min-height:48px;border-radius:16px}
.nw-sheet .nw-later{background:transparent;border-color:transparent;color:var(--t2)}
@media (prefers-reduced-motion:reduce){.nw-wrap,.nw-box{transition:none}}


/* ---- focus.css ---- */
.focus-entry{display:flex;align-items:center;gap:9px;width:100%;padding:11px 0 0;font-size:11px;color:var(--t2)}
.focus-entry>span{font-size:20px;color:var(--green)}.focus-entry b{font-weight:600}.focus-entry em{margin-left:auto;font-style:normal;font-size:10px;color:var(--t2);font-variant-numeric:tabular-nums}
.focus-header{display:flex;justify-content:space-between;align-items:center}.focus-back{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;font-size:26px;text-align:center}
.focus-scroll{padding:20px!important}.focus-hero{text-align:center;padding:28px 18px 24px;background:var(--surface);border:1px solid var(--line);border-radius:28px}
.focus-kicker{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--t2)}.focus-hero h2{font-size:24px;font-weight:600;letter-spacing:-.045em;line-height:1.2;margin:14px 0 20px}
.focus-dial{width:220px;height:220px;position:relative;margin:0 auto 20px}.focus-dial svg{width:100%;height:100%;transform:rotate(-90deg)}.focus-dial circle{fill:none;stroke-width:5}.focus-track{stroke:var(--line)}.focus-arc{stroke:var(--green);stroke-linecap:round}.focus-dial>div{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px}.focus-dial strong{font-size:48px;letter-spacing:-.04em;line-height:1;font-weight:500;font-variant-numeric:tabular-nums}.focus-dial span{font-size:11px;color:var(--t2)}
.focus-task-title{font-size:14px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}.focus-actions{display:flex;flex-direction:column;gap:9px}.focus-actions button{min-height:46px;padding:12px;border-radius:15px;text-align:center;font-size:13px;font-weight:600}.focus-primary{background:var(--green);color:var(--on-acc)}.focus-secondary{border:1px solid var(--line-btn);color:var(--t1)}.focus-mark{color:var(--green-tx);background:var(--green-bg)}
.focus-note{font-size:11px;line-height:1.65;color:var(--t2);margin:14px 0 0}.focus-setup,.focus-history{padding:22px 4px}.focus-setup h3,.focus-history h3{font-size:14px;margin:0 0 16px;font-weight:600}.focus-setup label{display:flex;flex-direction:column;gap:8px;font-size:11px;color:var(--t2)}.focus-setup select,.focus-setup input{width:100%;min-width:0;background:var(--surface);border:1px solid var(--line-btn);border-radius:13px;padding:12px;color:var(--t1);font-size:14px;min-height:46px}.focus-presets{display:flex;gap:8px;margin:14px 0}.focus-presets button{flex:1;border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center;font-size:12px}.focus-presets button.on{background:var(--green-bg);color:var(--green-tx);border-color:var(--green)}.focus-durations{display:grid;grid-template-columns:1fr 1fr;gap:14px}.focus-history{border-top:1px solid var(--line)}.focus-history-head{display:flex;align-items:start;gap:8px;justify-content:space-between}.focus-history-head h3{margin-bottom:0}.focus-history-head>b{font-size:14px;color:var(--green-tx)}.focus-empty{font-size:12px;line-height:1.7;color:var(--t2);padding:12px 0}.focus-history-row{display:flex;gap:12px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}.focus-history-row>div{flex:1;min-width:0}.focus-history-row b{display:block;font-size:12px;font-weight:600;overflow-wrap:anywhere}.focus-history-row span{display:block;font-size:10px;line-height:1.5;color:var(--t2);margin-top:6px}.focus-history-row strong{font-size:11px;flex:none;font-weight:600}
@media(max-width:350px){.focus-scroll{padding:14px!important}.focus-hero{padding:24px 10px}.focus-hero h2{font-size:21px}.focus-entry{gap:6px}.focus-entry em{font-size:9px}.focus-dial{width:200px;height:200px}}
@media(prefers-reduced-motion:reduce){.focus-arc{transition:none}}
.focus-signal-settings .focus-check{flex-direction:row;align-items:flex-start;gap:10px;font-size:12px;line-height:1.6}.focus-signal-settings .focus-check input{width:18px;height:18px;flex:none;padding:0;accent-color:var(--green)}.focus-signal-link{display:block;width:100%;min-height:44px;font-size:11px;color:var(--green-tx);text-align:left;padding:10px 0}.focus-signal-settings input[type=time]{font-size:14px}
.focus-signal-settings{border-top:1px solid var(--line)}.focus-signal-settings>label{margin-bottom:16px}.focus-signal-settings .focus-check input{min-height:18px;margin-top:1px}.focus-signal-settings>.focus-secondary{display:block;width:100%;min-height:46px;border-radius:15px;padding:12px;margin-top:16px;text-align:center;font-size:13px;font-weight:600}.focus-signal-settings>[data-focus=signal-save]{background:var(--green-bg);color:var(--green-tx);border-color:var(--green)}

/* таймер: кнопка виджета, блок сигнала карточкой и список настроек телефона строками (правки владельца 8 октября 2026) */
.focus-pin{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:46px;margin-top:14px;padding:10px 14px;border:1px solid var(--line-btn);border-radius:15px;font-size:13px;color:var(--t1);background:var(--surface);text-align:center}.focus-pin b{font-weight:600}.focus-pin span{font-size:15px;color:var(--green-tx)}
.focus-card{border:1px solid var(--line);border-radius:18px;background:var(--surface);padding:16px}
.focus-signal-settings .focus-card>label{margin-bottom:14px}.focus-signal-settings .focus-card>label.focus-check{margin-bottom:12px}
.focus-check>span{display:grid;gap:2px;font-size:13px;line-height:1.4;color:var(--t1)}.focus-check em{font-style:normal;font-size:11px;color:var(--t2)}
.focus-card:has(#focus-quiet-hours:not(:checked)) .focus-quiet-range{display:none}
.focus-card>.focus-secondary{display:block;width:100%;min-height:46px;border-radius:15px;padding:12px;margin-top:16px;text-align:center;font-size:13px;font-weight:600;background:var(--green-bg);color:var(--green-tx);border:1px solid var(--green)}
.focus-setup h3.focus-sub{margin:22px 0 12px}
.focus-rows{padding:2px 16px}
.focus-row{display:flex;align-items:center;gap:12px;width:100%;min-height:58px;padding:10px 0;text-align:left;border-top:1px solid var(--line)}.focus-row:first-child{border-top:0}
.focus-row>span{flex:1;min-width:0;display:grid;gap:3px}.focus-row b{font-size:13px;font-weight:600;color:var(--t1)}.focus-row em{font-style:normal;font-size:11px;line-height:1.45;color:var(--t2)}.focus-row>i{font-style:normal;font-size:20px;color:var(--t3);flex:none}

/* ===== «Время внимания»: дизайн GPT от 9 октября 2026 (пакет «Время внимания — дизайн»), классы .fa-* ===== */
/* Ordinary themes. All overrides belong to this renderer only. */
.functional .fa-header{padding:22px 20px 18px;gap:14px;background:var(--bg);border-bottom:1px solid var(--line-soft)}
.functional .fa-header>div{min-width:0}.functional .fa-header h1{font:600 1.625rem/1.2 var(--ui);letter-spacing:-.045em;overflow-wrap:anywhere}.functional .fa-header .sub{display:block;font:400 .8125rem/1.5 var(--ui);color:var(--t2);margin-top:7px}
.functional .fa-header .focus-back{width:44px;height:44px;flex:none;border-radius:14px;background:var(--surface);display:grid;place-items:center}.fa-header .focus-back svg{width:22px;height:22px}
.functional .fa-scroll{padding:20px!important;display:flex;flex-direction:column;gap:18px}
.functional .fa-hero{padding:24px 18px 20px;flex:none;border-radius:26px;border:1px solid var(--line);background:var(--surface);text-align:center}
.functional .fa-hero .focus-kicker{font-size:.6875rem;letter-spacing:.12em;color:var(--t2);line-height:1.5}
.functional .fa-hero h2{font:500 1.375rem/1.3 var(--ui);letter-spacing:-.04em;margin:12px auto 20px;max-width:260px}
.functional .fa-hero .focus-dial{width:216px;height:216px;margin:0 auto 18px}
.functional .fa-hero .focus-dial circle{stroke-width:3}.functional .fa-hero .focus-track{stroke:var(--line)}.functional .fa-hero .focus-arc{stroke:var(--green);stroke-width:4}
.functional .fa-hero .focus-dial>div{gap:12px}.functional .fa-hero .focus-dial strong{font:500 3.25rem/1.1 var(--ui);letter-spacing:-.065em;color:var(--t1)}.functional .fa-hero .focus-dial span{font:400 .75rem/1.45 var(--ui);color:var(--t2)}
.functional .fa-hero[data-phase=break]{background:var(--green-bg)}.functional .fa-hero[data-phase=break] .focus-kicker{color:var(--green-tx)}
.functional .fa-task-title{padding:10px 14px;margin:0 0 18px;border-radius:12px;background:var(--bg2);font:500 .875rem/1.5 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.functional .fa-hero .focus-actions{gap:10px}.functional .fa-hero .focus-actions button{font:600 .875rem/1.4 var(--ui);min-height:48px;border-radius:14px;padding:13px 16px;overflow-wrap:anywhere}
.functional .fa-hero .focus-primary{background:var(--green);color:var(--on-acc)}.functional .fa-hero .focus-secondary{background:var(--surface);border:1px solid var(--line-btn);color:var(--t1)}
.functional .fa-hero .focus-note{font-size:.75rem;line-height:1.65;text-wrap:pretty;margin-top:16px}
.functional .fa-scroll .focus-pin{margin:0;padding:14px;min-height:66px;display:flex;gap:12px;text-align:left;background:var(--surface);border-radius:18px}
.functional .fa-scroll .focus-pin>span:nth-child(2){display:grid;gap:4px;flex:1;min-width:0}.functional .fa-scroll .focus-pin b{font-size:.8125rem}.functional .fa-scroll .focus-pin small{font:400 .6875rem/1.5 var(--ui);color:var(--t2)}.functional .fa-scroll .focus-pin i{flex:none;width:16px;display:flex}
.fa-symbol{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:11px;background:var(--green-bg);color:var(--green-tx)}.fa-symbol svg{width:19px;height:19px}.fa-scroll svg{display:block}.fa-scroll .focus-pin i svg{width:16px;height:16px}
.functional .fa-section-heading{display:flex;align-items:center;gap:10px;margin:0 0 20px}.functional .fa-section-heading h3{font:600 1rem/1.4 var(--ui);margin:0;letter-spacing:-.025em;flex:1}
.functional .fa-setup{border:1px solid var(--line);border-radius:22px;padding:20px;background:var(--surface);flex:none}
.functional .fa-scroll :is(.focus-setup label,.focus-note){font-size:.75rem;line-height:1.6}.functional .fa-scroll .focus-setup :is(input,select,.choice-trigger){font:500 .875rem/1.5 var(--ui);min-height:48px;background:var(--bg);border-color:var(--line-btn);border-radius:12px;padding:12px;color:var(--t1)}
.functional .fa-scroll .choice-trigger span{font-size:1rem}.functional .fa-scroll .focus-durations{gap:12px}.functional .fa-scroll .focus-durations>label{min-width:0}
.functional .fa-scroll .focus-presets{margin:16px 0;gap:8px}.functional .fa-scroll .focus-presets button{min-height:44px;font:500 .8125rem/1.4 var(--ui);border-radius:12px;padding:10px 5px;background:var(--bg);color:var(--t1)}.functional .fa-scroll .focus-presets button.on{background:var(--green-bg);border-color:var(--green);color:var(--green-tx)}
.functional .fa-fold{padding:0;border:1px solid var(--line);border-radius:20px;flex:none;background:var(--surface);overflow:hidden}
.functional .fa-fold>summary{list-style:none;min-height:78px;padding:18px 16px;display:flex;align-items:center;gap:12px;cursor:pointer;color:var(--t1)}.fa-fold>summary::-webkit-details-marker{display:none}
.functional .fa-fold>summary>span:nth-child(2){display:grid;gap:5px;flex:1;min-width:0}.functional .fa-fold>summary b{font:600 .875rem/1.4 var(--ui);letter-spacing:-.02em}.functional .fa-fold>summary small{font:400 .75rem/1.5 var(--ui);color:var(--t2)}
.functional .fa-fold>summary>i{font-style:normal;width:16px;flex:none;display:block;transform:rotate(90deg)}.fa-fold>summary>i svg{width:16px;height:16px}.functional .fa-fold[open]>summary>i{transform:rotate(-90deg)}
.functional .fa-fold[open]>summary{border-bottom:1px solid var(--line)}.functional .fa-fold-content{padding:20px}
.functional .fa-fold .focus-card{padding:0;background:transparent;border:0;border-radius:0}
.functional .fa-fold .focus-card>.focus-secondary{font:600 .875rem/1.5 var(--ui);border-radius:12px;min-height:48px;background:var(--green-bg);border-color:var(--line-btn);color:var(--green-tx);margin-top:20px}
.functional .fa-fold .focus-check{display:flex;align-items:center;min-height:48px;gap:12px;padding:8px 0}.functional .fa-fold .focus-check>span{flex:1;font-size:.875rem;line-height:1.4}.functional .fa-fold .focus-check em{font-size:.75rem;line-height:1.55;margin-top:3px;color:var(--t2)}
.functional .fa-scroll .fa-fold .focus-check input{appearance:none;position:relative;width:42px;height:26px;min-height:26px;margin:0;padding:0;flex:none;border:1px solid var(--line-btn);border-radius:99px;background:var(--fill);cursor:pointer}
.functional .fa-fold .focus-check input::before{content:'';position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:var(--t2)}.functional .fa-fold .focus-check input:checked{background:var(--green);border-color:var(--green)}.functional .fa-fold .focus-check input:checked::before{left:19px;background:var(--on-acc)}
.functional .fa-fold h3.focus-sub{font:500 .75rem/1.5 var(--ui);letter-spacing:.03em;margin:24px 0 6px;color:var(--t2)}
.functional .fa-fold .focus-row{min-height:70px;padding:14px 0;gap:16px}.functional .fa-fold .focus-row b{font-size:.8125rem}.functional .fa-fold .focus-row em{font-size:.75rem;line-height:1.5}.functional .fa-fold .focus-row i{font-size:22px;color:var(--t2)}
.functional .fa-history{padding:8px 0 4px;border:0;flex:none}.functional .fa-history .fa-section-heading{margin-bottom:16px}
.functional .fa-summary{padding:20px;background:var(--green-bg);border:1px solid var(--line);border-radius:22px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.functional .fa-eyebrow{display:block;font:500 .75rem/1.5 var(--ui);color:var(--t2)}.functional .fa-total{display:block;font:500 1.75rem/1.3 var(--ui);letter-spacing:-.045em;color:var(--t1);margin:8px 0}.functional .fa-count{display:block;font:400 .75rem/1.5 var(--ui);color:var(--t2)}
.functional .fa-total .fa-time-unit{font:400 .8125rem/1.4 var(--ui);letter-spacing:0;color:var(--t2);margin-right:4px}
.functional .fa-summary-art{width:46px;height:46px;flex:none;display:grid;place-items:center;color:var(--green-tx)}.fa-summary-art svg{width:42px;height:42px;stroke-width:1}
.functional .fa-history-note{margin:12px 2px 22px;color:var(--t2)}.functional .fa-history-date{margin:20px 4px 10px;font:500 .75rem/1.5 var(--ui);color:var(--t2)}
.functional .fa-history-list{background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden;padding:0 16px}
.functional .fa-session{min-height:86px;padding:18px 0;gap:12px;align-items:center;border-color:var(--line-soft)}.functional .fa-session:last-child{border-bottom:0}
.functional .fa-session-icon{width:26px;height:26px;flex:none;display:grid;place-items:center;color:var(--t2)}.fa-session-icon svg{width:20px;height:20px}
.functional .fa-session .fa-session-text{min-width:0;flex:1}.functional .fa-session b{font:500 .875rem/1.45 var(--ui);letter-spacing:-.025em;color:var(--t1);overflow-wrap:anywhere}
.functional .fa-session .fa-session-meta{display:flex;flex-wrap:wrap;gap:3px 5px;margin-top:6px;font:400 .6875rem/1.45 var(--ui);color:var(--t2)}.functional .fa-session-meta>span{display:inline;font:inherit;margin:0;color:inherit}
.functional .fa-session strong{font:500 .8125rem/1.4 var(--ui);max-width:76px;flex:none;text-align:right;color:var(--t1)}
.functional .fa-empty{padding:28px 20px;text-align:center;border:1px dashed var(--line-btn);border-radius:20px;background:var(--surface);margin-top:20px}.fa-empty>span{display:grid;place-items:center;color:var(--green-tx)}.fa-empty svg{width:40px;height:40px;stroke-width:1}
.functional .fa-empty h4{font:500 1rem/1.5 var(--ui);margin:12px 0 6px;color:var(--t1)}.functional .fa-empty p{font:400 .8125rem/1.65 var(--ui);margin:0;color:var(--t2)}
.functional .fa-fold>summary:focus-visible{outline:2px solid var(--green);outline-offset:-4px;border-radius:18px}
@media(max-width:350px){.functional .fa-scroll{padding:14px!important}.functional .fa-setup,.functional .fa-fold-content{padding:16px}.functional .fa-session{gap:8px}.functional .fa-history-list{padding:0 12px}}
/* ---------- «Время внимания» в новом виде (js/focus-look.js; решение владельца 18 октября 2026) ----------
   Всё под префиксом .zf-v2 / .zf-: прежний экран не меняется. Крупный отсчёт вместо круга, полоска хода, Зарок за столом. */
.fa-hero.zf-v2{background:radial-gradient(ellipse at 50% 58%,var(--surface),transparent 72%);border-color:transparent;padding:18px 14px 18px}
.fa-hero.zf-v2[data-phase=break]{background:radial-gradient(ellipse at 50% 58%,var(--green-bg),transparent 72%)}
.functional .fa-hero.zf-v2 h2{margin:8px auto 4px}
.fa-hero.zf-v2 .focus-dial,.functional .fa-hero.zf-v2 .focus-dial{width:auto;height:auto;margin:0 auto}
.fa-hero.zf-v2 .focus-dial svg{display:none}
.fa-hero.zf-v2 .focus-dial>div{position:static;gap:2px}
.fa-hero.zf-v2 .focus-dial strong,.functional .fa-hero.zf-v2 .focus-dial strong{font:700 4rem/1.05 var(--ui);letter-spacing:-.05em;color:var(--green-tx)}
.fa-hero.zf-v2[data-status=paused] .focus-dial strong{opacity:.6}
.zf-line{display:block;width:120px;height:3px;border-radius:3px;background:var(--line);margin:10px auto 0;overflow:hidden}
.zf-line>b{display:block;height:100%;background:var(--green);transition:width .9s linear}
.zf-desk,.zf-calm{position:relative;width:min(240px,72vw);aspect-ratio:1/.95;margin:4px auto 2px;isolation:isolate}
.zf-desk .zf-pose{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 4px 4px rgba(39,65,37,.14));visibility:hidden}
.zf-desk[data-zf-pose="0"] .zf-upright,.zf-desk[data-zf-pose="1"] .zf-mid,.zf-desk[data-zf-pose="2"] .zf-slouch{visibility:visible}
.fa-hero.zf-v2[data-status=paused] .zf-desk .zf-pose{opacity:.8;filter:grayscale(.25)}
.zf-calm img{position:absolute;inset:4% 10%;width:80%;height:92%;object-fit:contain;pointer-events:none}
.zf-glow{position:absolute;inset:12% 4% 4%;border-radius:50%;background:radial-gradient(ellipse,rgba(150,178,120,.2),transparent 70%);z-index:-1}
.zf-ground{position:absolute;bottom:5%;left:20%;right:6%;height:7%;background:radial-gradient(ellipse,rgba(39,65,37,.14),transparent 65%);filter:blur(5px);z-index:-1}
html[data-theme$=dark] .zf-glow{background:radial-gradient(ellipse,rgba(120,170,130,.13),transparent 70%)}
html[data-theme$=dark] .zf-ground{background:radial-gradient(ellipse,rgba(0,0,0,.45),transparent 65%)}
.focus-actions .focus-desk{background:none;border:0;color:var(--t2);font:500 .8125rem/1.4 var(--ui);min-height:36px}
/* настольный режим: во весь экран, телефон боком или стоя */
.zf-stand{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center;gap:4vw;padding:24px max(24px,env(safe-area-inset-right)) 24px max(24px,env(safe-area-inset-left));background:var(--bg,#111513);color:var(--t1,#e7ece8);font-family:var(--ui)}
.zf-stand-main{text-align:left;min-width:0}
.zf-stand .zf-kicker{font-size:.6875rem;letter-spacing:.14em;text-transform:uppercase;color:var(--t2)}
.zf-stand strong{display:block;font:700 clamp(4rem,16vw,8rem)/1 var(--ui);letter-spacing:-.05em;color:var(--green-tx);font-variant-numeric:tabular-nums;margin:6px 0}
.zf-stand .zf-line{margin:6px 0 18px;width:160px}
.zf-stand-btns .zf-primary{display:inline-flex;align-items:center;justify-content:center;padding:0 22px;min-width:170px;min-height:48px;border:0;border-radius:16px;background:var(--green);color:var(--on-acc,#fff);font:600 .875rem/1 var(--ui)}
.zf-stand-art .zf-desk,.zf-stand-art .zf-calm{width:min(300px,38vw)}
.zf-stand-close{position:absolute;top:max(12px,env(safe-area-inset-top));right:16px;width:44px;height:44px;border-radius:50%;border:1px solid var(--line-btn);background:none;color:var(--t2);font-size:22px}
@media (orientation:portrait){.zf-stand{flex-direction:column;text-align:center}.zf-stand-main{text-align:center}.zf-stand .zf-line{margin:6px auto 18px}.zf-stand-art .zf-desk,.zf-stand-art .zf-calm{width:min(300px,76vw)}}
@media (prefers-reduced-motion:reduce){.zf-desk animate{display:none}.zf-line>b{transition:none}}

/* Unified attention hub: timer and personal attention, one drawer entry. */
.fh-root{height:100%;min-height:0;display:flex;flex-direction:column;background:var(--bg);color:var(--t1)}.fh-tabs{display:grid;grid-template-columns:1fr 1fr;padding:3px;margin:0 18px 12px;background:var(--fill,var(--surface));border:1px solid var(--line);border-radius:14px;gap:3px;flex:none}.fh-tabs button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:38px;border:0;border-radius:10px;background:transparent;color:var(--t2);font:600 12px/1.3 var(--ui)}.fh-tabs svg{width:17px;height:17px}.fh-tabs button[aria-selected=true]{background:var(--surface);box-shadow:0 2px 7px #1c352a0b;color:var(--green-tx)}.fh-scroll{padding:0 18px 18px!important;overflow-y:auto;overflow-anchor:none;scroll-behavior:auto!important;flex:1;min-height:0}.fh-timer{padding:16px!important;margin:0 0 10px!important;border:1px solid var(--line);border-radius:24px!important;background:var(--surface);box-shadow:0 6px 20px #193e2204;overflow:hidden}.fh-clock-layout{display:grid;grid-template-columns:minmax(0,1fr) 116px;align-items:center;min-height:126px;gap:8px;border-bottom:1px solid var(--line)}.fh-status{font:500 11px/1.4 var(--ui);color:var(--t2);margin:0 0 5px;text-align:left}.fh-timer .focus-dial{display:block;width:auto;height:auto;margin:0;text-align:left}.fh-timer .focus-dial strong{font:700 54px/1.15 var(--ui);font-variant-numeric:tabular-nums;letter-spacing:-2px;color:var(--green-tx)}.fh-timer .zf-line{display:block;width:100%;height:3px;margin:12px 0 0;border-radius:3px;background:var(--line)}.fh-timer .zf-line b{height:100%;background:var(--green-tx);display:block;border-radius:3px}.fh-art{width:116px;height:126px;overflow:hidden;display:grid;place-items:center;align-self:end}.fh-art :is(.zf-calm,.zf-desk){width:116px!important;height:126px!important;max-width:none!important;margin:0!important}.fh-art img{object-fit:contain;max-width:100%;max-height:100%}.fh-art .zf-glow{display:none}.fh-task{margin:9px 0 12px;padding:8px 10px;border-radius:10px;background:var(--fill);text-align:left;font:600 12px/1.4 var(--ui);overflow-wrap:anywhere}.fh-setup{margin-top:12px;text-align:left}.fh-root label{font:500 11px/1.4 var(--ui);color:var(--t2);display:block}.fh-root :is(select,input[type=number],input[type=time]){box-sizing:border-box;width:100%;min-height:40px;margin:5px 0 0;padding:9px 10px;background:var(--bg);border:1px solid var(--line);border-radius:11px;color:var(--t1);font:500 13px/1.3 var(--ui)}.fh-root .focus-presets{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:10px 0 0}.fh-root .focus-presets button{min-height:36px;margin:0;padding:6px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--t2);font:600 12px var(--ui)}.fh-root .focus-presets .on{background:var(--green-bg);color:var(--green-tx);border-color:var(--green-tx)}.fh-custom{margin-top:8px}.fh-custom summary{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px 0;cursor:pointer;list-style:none;font:500 11px var(--ui);color:var(--t2)}.fh-custom summary span{font-variant-numeric:tabular-nums}.fh-custom p{font:400 10px/1.5 var(--ui);color:var(--t2);margin:7px 0}.fh-root .focus-durations{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}.fh-root .focus-actions{display:grid;grid-template-columns:1fr;gap:7px;margin:9px 0 0}.fh-root .focus-actions:has(.focus-secondary){grid-template-columns:1fr 1fr}.fh-root .focus-actions button,.fh-root .focus-secondary{font:600 13px/1.3 var(--ui);border-radius:12px;min-height:42px;margin:0;padding:10px;border:1px solid var(--line)}.fh-root .focus-primary{background:var(--green-tx);color:var(--surface)}.fh-root .focus-secondary{background:var(--bg);color:var(--t1)}.fh-root .focus-mark{grid-column:1/-1;background:var(--green-bg);color:var(--green-tx)}.fh-root .focus-desk{font:500 11px/1.4 var(--ui);min-height:34px;margin-top:6px}.fh-root .fa-fold{margin:0 0 10px;padding:0;border:1px solid var(--line);border-radius:16px;background:var(--surface)}.fh-root .fa-fold summary{display:flex;align-items:center;gap:10px;padding:12px;min-height:0}.fh-root .fa-fold summary>b{font-size:12px}.fh-root .fa-fold summary b{font:600 12px/1.4 var(--ui)}.fh-root .fa-fold summary small{font:400 10px/1.4 var(--ui)}.fh-root .fa-symbol{width:30px;height:30px;border-radius:10px;flex:none;display:grid;place-items:center}.fh-root .fa-symbol svg{width:17px;height:17px}.fh-root .fa-fold summary i{margin-left:auto}.fh-root .fa-fold summary i svg{width:14px;height:14px;transform:rotate(90deg)}.fh-root .fa-fold-content{padding:0 12px 12px}.fh-root .fa-fold-content .focus-card{padding:0;border:0}.fh-root .focus-check{display:flex;margin:12px 0;gap:8px}.fh-root .focus-check em{font-size:10px}.fh-pin{display:flex;align-items:center;gap:9px;width:100%;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--t2);font:500 11px var(--ui)}.fh-pin svg{width:17px;height:17px}.fh-pin svg:last-child{margin-left:auto;width:12px}.fh-stats{padding:16px;margin:0 0 10px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}.fh-stats-top{display:flex;align-items:center;justify-content:space-between;gap:10px;font:500 12px var(--ui);color:var(--t2)}.fh-total{display:block;font:700 34px/1.3 var(--ui);color:var(--green-tx);letter-spacing:-1px;margin:4px 0 9px}.fh-stat-chips{display:flex;gap:6px;flex-wrap:wrap}.fh-stat-chips span{font:500 10px/1.4 var(--ui);padding:4px 8px;border-radius:8px;background:var(--green-bg);color:var(--green-tx)}.fh-root .stats-chart{display:flex;align-items:flex-end;gap:5px;height:103px;margin:12px 0 0;padding:0;border:0;background:none}.fh-root .stats-day{display:flex;flex:1;min-width:0;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;height:100%}.fh-root .stats-day i{width:72%;max-width:27px;background:var(--green-tx);border-radius:5px 5px 2px 2px}.fh-root .stats-day small{font:400 9px var(--ui);color:var(--t2);min-height:12px}.fh-footnote{font:400 10px/1.4 var(--ui);color:var(--t2);margin:12px 0 0}.fh-empty{font:400 12px/1.6 var(--ui);color:var(--t2);margin:14px 0 0}.fh-tabs button:focus-visible,.fh-root button:focus-visible{outline:2px solid var(--green-tx);outline-offset:2px}@media(max-width:350px){.fh-tabs{margin-inline:12px}.fh-scroll{padding-inline:12px!important}.fh-timer{padding:12px!important}.fh-clock-layout{grid-template-columns:minmax(0,1fr) 98px}.fh-art{width:98px}.fh-art :is(.zf-calm,.zf-desk){width:98px!important}.fh-timer .focus-dial strong{font-size:48px}.fh-tabs button{font-size:11px}}@media(prefers-reduced-motion:no-preference){.fh-tabs button{transition:background-color .15s,color .15s}}

.fh-root .fa-fold summary i{transform:none!important}.fh-root .fa-fold[open] summary i svg{transform:rotate(-90deg)}.fh-root .choice-trigger{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;width:100%;min-height:40px;margin-top:5px;padding:9px 10px;border:1px solid var(--line);border-radius:11px;background:var(--bg);color:var(--t1);font:500 13px/1.3 var(--ui)}.fh-root .choice-trigger span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fh-root .focus-row{min-height:48px;padding:10px 0}.fh-root .focus-row b{font-size:12px}.fh-root .focus-row em{font-size:10px}.fh-root .focus-sub{font:600 11px var(--ui);margin:14px 0 4px}

/* Native-style route surface: no duplicated page title or visual back control. */
.fh-root>.fh-tabs{margin-top:12px}.fh-root .focus-desk{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;margin:10px 0 0;padding:8px 13px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--green-tx);font:600 11px/1.4 var(--ui);box-shadow:none}.fh-root .focus-desk svg{width:17px;height:17px;flex:none}.fh-root .fa-fold summary>span:nth-child(2){display:grid;gap:3px;flex:1;min-width:0}.fh-root .fa-fold summary b{display:block;white-space:normal;overflow-wrap:anywhere}.fh-root .fa-fold summary small{display:block;color:var(--t2)}

/* Application controls for notification and quiet-hour choices. */
.fh-root .fh-signal summary{display:grid;grid-template-columns:30px minmax(0,1fr) 16px;gap:10px}.fh-root .fh-signal .fh-signal-copy{display:flex!important;flex-direction:column;gap:4px!important}.fh-root .fh-signal .fh-signal-copy b{font:600 12px/1.4 var(--ui)}.fh-root .fh-signal .fh-signal-copy small{font:400 10px/1.4 var(--ui);margin:0}.fh-root .fh-signal .fa-fold-content{padding:0 12px 12px}.fh-signal-modes{display:grid;gap:6px;margin:3px 0 12px}.fh-root label.fh-signal-option{position:relative;display:flex;align-items:center;gap:9px;min-height:42px;padding:9px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--t1);font:500 12px/1.4 var(--ui);cursor:pointer}.fh-signal-option>input{position:absolute;opacity:0;width:1px;height:1px}.fh-signal-option:has(input:checked){background:var(--green-bg);border-color:var(--green-tx)}.fh-mode-icon{display:grid;place-items:center;width:22px;flex:none;color:var(--green-tx)}.fh-mode-icon svg{width:18px;height:18px}.fh-signal-option>i{width:16px;height:16px;border:1px solid var(--line);border-radius:50%;margin-left:auto;flex:none}.fh-signal-option:has(input:checked)>i{border:5px solid var(--green-tx);background:var(--surface)}.fh-signal-option:focus-within,.fh-setting-switch:focus-within{outline:2px solid var(--green-tx);outline-offset:2px}.fh-root label.fh-setting-switch{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;padding:10px 1px;border-top:1px solid var(--line);cursor:pointer}.fh-setting-switch>span{display:flex;flex-direction:column;gap:3px}.fh-setting-switch b{font:500 12px/1.4 var(--ui);color:var(--t1)}.fh-setting-switch small{font:400 10px/1.4 var(--ui);color:var(--t2)}.fh-setting-switch>input{position:absolute;opacity:0;width:1px;height:1px}.fh-setting-switch>i{position:relative;width:36px;height:22px;border-radius:20px;background:color-mix(in srgb,var(--t2) 50%,var(--surface));flex:none}.fh-setting-switch>i:after{content:'';position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:0 1px 3px #0002}.fh-setting-switch:has(input:checked)>i{background:var(--green-tx)}.fh-setting-switch:has(input:checked)>i:after{transform:translateX(14px)}.fh-setting-switch:has(input:disabled){opacity:.45;cursor:default}.fh-quiet-times{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin:5px 0 12px}.fh-quiet-times>div>span{display:block;margin:0 0 5px;font:500 10px var(--ui);color:var(--t2)}.fh-time-button{display:flex;align-items:center;justify-content:space-between;gap:7px;width:100%;min-height:43px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--t1)}.fh-time-button b{font:600 18px/1.2 var(--ui);font-variant-numeric:tabular-nums;letter-spacing:.3px}.fh-time-button svg{width:17px;height:17px;color:var(--t2);flex:none}.fh-root .fh-signal-save{width:100%;min-height:42px;border:0;border-radius:12px;padding:10px;font:600 12px var(--ui)}
.fh-time-dialog{position:fixed;inset:auto 0 0;margin:0 auto;width:min(100%,460px);max-width:100%;max-height:85dvh;overflow:auto;padding:9px 20px calc(env(safe-area-inset-bottom,0px) + 18px);border:1px solid var(--line);border-bottom:0;border-radius:24px 24px 0 0;background:var(--surface);color:var(--t1);font-family:var(--ui);box-shadow:0 -12px 50px #102b1820}.fh-time-dialog::backdrop{background:#10211665;backdrop-filter:blur(3px)}.fh-picker-grab{width:34px;height:4px;border-radius:4px;background:var(--line);margin:0 auto 16px}.fh-time-dialog header{display:flex;align-items:center;justify-content:space-between;gap:12px}.fh-time-dialog h2{font:600 15px/1.4 var(--ui);margin:0}.fh-time-dialog header button{width:30px;height:30px;border:0;border-radius:50%;background:var(--bg);color:var(--t2);font:400 22px var(--ui)}.fh-time-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.fh-time-columns h3{margin:0 0 7px;text-align:center;color:var(--t2);font:500 11px var(--ui)}.fh-time-wheel{position:relative;height:170px;overflow-y:auto;overscroll-behavior:contain;scroll-snap-type:y proximity;border:1px solid var(--line);border-radius:15px;background:var(--bg);scrollbar-width:none}.fh-time-wheel button{display:block;width:100%;height:42px;border:0;background:none;color:var(--t2);font:500 22px var(--ui);font-variant-numeric:tabular-nums;scroll-snap-align:center}.fh-time-wheel [aria-pressed=true]{background:var(--green-bg);color:var(--green-tx);font-weight:700;border-radius:10px}.fh-time-apply{width:100%;min-height:43px;padding:10px;border:0;border-radius:12px;background:var(--green-tx);color:var(--surface);font:600 13px var(--ui)}
/* Task totals are an expandable summary; each session has a distinct record card. */
.fh-task-summary{margin:0 0 16px;border:1px solid var(--line);border-radius:17px;background:var(--surface);overflow:hidden}.fh-task-summary>summary{display:flex;align-items:center;gap:8px;list-style:none;padding:14px;cursor:pointer;font:600 12px var(--ui)}.fh-task-summary>summary small{margin-left:auto;background:var(--bg);padding:3px 7px;border-radius:7px;font:500 10px var(--ui);color:var(--t2)}.fh-task-summary>summary i{font-style:normal;color:var(--t2)}.fh-task-totals{padding:0 14px 4px}.fh-task-total{padding:12px 0;border-top:1px solid var(--line)}.fh-task-total>div:first-child{display:flex;align-items:start;justify-content:space-between;gap:10px}.fh-task-total b{font:500 12px/1.4 var(--ui);overflow-wrap:anywhere}.fh-task-total strong{font:600 12px/1.4 var(--ui);color:var(--green-tx);white-space:nowrap}.fh-task-track{height:4px;border-radius:4px;background:var(--line);margin:8px 0 5px;overflow:hidden}.fh-task-track i{display:block;height:100%;background:var(--green-tx);border-radius:4px}.fh-task-total small{font:400 9px var(--ui);color:var(--t2)}.fh-sessions>header{display:flex;align-items:center;justify-content:space-between;padding:0 3px}.fh-sessions h2{margin:0;font:600 14px/1.4 var(--ui)}.fh-sessions>header>span{font:500 10px var(--ui);color:var(--t2)}.fh-session-card{margin:0 0 8px;padding:13px;border:1px solid var(--line);border-radius:17px;background:var(--surface)}.fh-session-main{display:grid;grid-template-columns:29px minmax(0,1fr) auto;align-items:center;gap:9px}.fh-session-symbol{display:grid;place-items:center;width:29px;height:29px;border-radius:10px;background:var(--green-bg);color:var(--green-tx)}.fh-session-symbol svg{width:18px;height:18px}.fh-session-main>b{font:600 12px/1.4 var(--ui);overflow-wrap:anywhere}.fh-session-main>strong{font:700 17px/1.3 var(--ui);color:var(--green-tx);white-space:nowrap;font-variant-numeric:tabular-nums}.fh-session-card footer{display:flex;align-items:center;justify-content:space-between;gap:7px;flex-wrap:wrap;margin-top:11px;padding-top:10px;border-top:1px solid var(--line)}.fh-session-status{display:inline-flex;align-items:center;gap:4px;font:500 9px/1.4 var(--ui);padding:3px 6px;border-radius:7px;background:var(--bg);color:var(--t2)}.fh-session-status.is-complete{color:var(--green-tx);background:var(--green-bg)}.fh-session-status i{font-style:normal}.fh-session-card time{font:400 9px/1.4 var(--ui);color:var(--t2);font-variant-numeric:tabular-nums}[hidden]{display:none!important}@media(prefers-reduced-motion:no-preference){.fh-setting-switch>i:after{transition:transform .15s ease}.fh-time-dialog[open]{animation:fhSheetIn .18s ease-out}@keyframes fhSheetIn{from{transform:translateY(20px);opacity:.3}to{transform:none;opacity:1}}}

/* Vertical scrolling remains native; horizontal drags belong to registered tabs. */
[data-swipe-tabs]{touch-action:pan-y pinch-zoom}[data-swipe-tabs] [role=tabpanel]{will-change:auto}[data-swipe-ignore]{touch-action:auto}
.fh-period{display:flex;gap:3px;padding:3px;border:1px solid var(--line);border-radius:11px;background:var(--bg)}.fh-period button{min-height:34px;padding:6px 10px;border:0;border-radius:8px;background:none;font:500 11px/1.4 var(--ui);color:var(--t2)}.fh-period button[aria-pressed=true]{background:var(--surface);color:var(--green-tx);box-shadow:0 1px 5px #20392c0d}.fh-period button:focus-visible{outline:2px solid var(--green-tx)}.fh-session-group{margin-top:10px;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--surface)}.fh-session-group>header{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:11px 13px;background:var(--green-bg);color:var(--green-tx)}.fh-session-group h3{font:600 12px/1.4 var(--ui);margin:0}.fh-session-group>header time{font:400 10px/1.4 var(--ui);color:var(--t2)}.fh-session-group .fh-session-card{margin:0;border:0;border-radius:0;padding:13px}.fh-session-group .fh-session-card+.fh-session-card{border-top:1px solid var(--line)}.fh-session-group .fh-session-card footer{border:0;margin-top:7px;padding:0 0 0 38px}.fh-session-group .fh-session-main>strong{font-size:15px}

/* Tags/search share the day card component; only the surrounding tools differ. */
.tt-root{height:100%;min-height:0;display:flex;flex-direction:column;background:var(--bg);color:var(--t1)}.tt-tabs{margin-top:12px}.tt-scroll{flex:1;min-height:0;overflow-y:auto;padding:0 18px 18px!important;scroll-behavior:auto!important;overflow-anchor:none}.tt-day-bar{display:flex;align-items:center;gap:8px;margin-bottom:10px}.tt-day-bar>button{display:grid;place-items:center;flex:none;width:34px;height:36px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--green-tx);font:400 23px var(--ui)}.tt-day-bar>label{position:relative;flex:1;display:grid;place-items:center;min-height:36px;background:var(--surface);border:1px solid var(--line);border-radius:11px;font:600 12px var(--ui);overflow:hidden}.tt-day-bar input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.tt-context,.tt-empty{font:400 11px/1.6 var(--ui);color:var(--t2);margin:10px 2px 14px}.tt-item{margin:0 0 12px}.tt-item-time,.tt-result-date{font:500 10px/1.4 var(--ui);color:var(--t2);margin:11px 3px 6px}.tt-item-footer{display:flex;align-items:center;justify-content:flex-end;gap:7px;padding:5px 3px 0}.tt-item-footer>span{margin-right:auto;font:500 10px var(--ui);color:var(--t2)}.tt-item-footer button{min-height:30px;padding:6px 9px;border:0;border-radius:8px;background:var(--green-bg);color:var(--green-tx);font:500 10px/1.4 var(--ui)}.tt-editor-task{margin-bottom:10px}.tt-editor{padding:14px;border:1px solid var(--line);border-radius:19px;background:var(--surface)}.tt-field{display:block;font:500 11px/1.4 var(--ui);color:var(--t2)}.tt-root :is(.tt-field input,.tt-field select,.choice-trigger){width:100%;min-width:0;min-height:40px;padding:9px 10px;margin:6px 0 0;border:1px solid var(--line);border-radius:11px;background:var(--bg);color:var(--t1);font:500 12px/1.4 var(--ui)}.tt-root fieldset{min-width:0;margin:14px 0;padding:0;border:0}.tt-root legend{padding:0;margin-bottom:7px;font:500 11px var(--ui);color:var(--t2)}.tt-priority{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.tt-priority label,.tt-scope label{position:relative;cursor:pointer}.tt-priority input,.tt-scope input{position:absolute;opacity:0;width:1px;height:1px}.tt-priority span,.tt-scope span{display:flex;align-items:center;justify-content:center;min-height:38px;padding:7px 5px;border:1px solid var(--line);border-radius:10px;background:var(--bg);font:500 10px/1.4 var(--ui);color:var(--t2)}.tt-scope{display:grid;gap:6px}.tt-scope span{justify-content:flex-start;padding-inline:10px;min-height:37px;font-size:11px}.tt-priority :checked+span,.tt-scope :checked+span{background:var(--green-bg);border-color:var(--green-tx);color:var(--green-tx)}.tt-priority label:focus-within,.tt-scope label:focus-within{outline:2px solid var(--green-tx);outline-offset:2px;border-radius:10px}.tt-primary{width:100%;min-height:41px;padding:10px;border:0;border-radius:12px;background:var(--green-tx);color:var(--surface);font:600 12px var(--ui)}.tt-editor-actions{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-top:8px}.tt-editor-actions button{min-height:32px;padding:5px;border:0;background:none;color:var(--t2);font:500 10px var(--ui)}.tt-query{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:13px;background:var(--surface);color:var(--t2)}.tt-query svg{width:18px;height:18px;flex:none}.tt-query input{min-width:0;flex:1;width:100%;height:42px;border:0;outline:none;background:none;color:var(--t1);font:400 13px var(--ui)}.tt-query:focus-within{border-color:var(--green-tx);box-shadow:0 0 0 2px var(--green-bg)}.tt-filters,.tt-saved{margin-top:8px;border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden}.tt-root details>summary{list-style:none;cursor:pointer}.tt-filters>summary,.tt-saved>summary{display:flex;align-items:center;gap:8px;min-height:39px;padding:10px 12px;font:500 11px var(--ui)}.tt-root summary::-webkit-details-marker{display:none}.tt-root summary small{margin-left:auto;padding:2px 5px;border-radius:6px;background:var(--bg);font:500 9px var(--ui);color:var(--t2)}.tt-root summary i{font-style:normal;color:var(--t2)}.tt-filter-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:11px;padding:0 12px 12px}.tt-filter-body>.tt-field:nth-child(3){grid-column:1/-1}.tt-search-dates{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;grid-column:1/-1}.tt-filter-reset{grid-column:1/-1;min-height:32px;border:0;border-radius:9px;background:var(--bg);color:var(--t2);font:500 11px var(--ui)}.tt-search-count{font:400 10px/1.6 var(--ui);color:var(--t2);margin:13px 2px}.tt-saved-list{padding:0 12px}.tt-saved-row{display:flex;align-items:center;gap:5px;padding:7px 0;border-bottom:1px solid var(--line)}.tt-saved-row button{border:0;background:none;font:500 11px var(--ui);color:var(--green-tx);min-height:30px}.tt-saved-row button:first-child{flex:1;text-align:left;overflow-wrap:anywhere}.tt-saved-row button:last-child{width:30px;color:var(--t2);font-size:18px}.tt-save-new{margin:8px 12px 12px}.tt-save-new>summary{font:500 10px var(--ui);color:var(--green-tx);padding:8px 0}.tt-save-new .tt-primary{margin-top:9px}.tt-root .evcard,.tt-root .dosecard,.tt-root .card{margin:0}.tt-root button:focus-visible{outline:2px solid var(--green-tx);outline-offset:2px}@media(max-width:350px){.tt-scroll{padding-inline:12px!important}.tt-tabs{margin-inline:12px}.tt-editor{padding:12px}.tt-priority span{font-size:9px}}

.tt-filter-body{display:block}.tt-root fieldset.tt-filter-group{margin:0 0 13px;padding:0;border:0}.tt-filter-group>legend{font:500 10px var(--ui);color:var(--t2);margin-bottom:7px}.tt-filter-group>div{display:flex;flex-wrap:wrap;gap:5px}.tt-filter-group label{position:relative;cursor:pointer}.tt-filter-group input{position:absolute;opacity:0;width:1px;height:1px}.tt-filter-group span{display:flex;align-items:center;min-height:32px;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--t2);font:500 10px/1.4 var(--ui)}.tt-filter-group :checked+span{background:var(--green-bg);color:var(--green-tx);border-color:var(--green-tx)}.tt-filter-group label:focus-within{outline:2px solid var(--green-tx);outline-offset:2px;border-radius:9px}.tt-filter-body>.tt-field{margin:5px 0 12px}.tt-filter-reset{width:100%;margin-top:10px}.tt-search-dates{margin-top:10px}
.day-drawer .dr-row.dr-tag-action{display:flex;align-items:center;gap:12px;min-height:48px;width:100%;padding-inline:12px}
.day-drawer .dr-tag-action .dr-body{flex:1;min-width:0;order:1}
.day-drawer .dr-tag-action .dr-ic{order:2;margin-left:auto;flex:none}
/* «Важное» и #метки — широкие полосы на всю ширину панели, как в макете GPT (владелец, 20.10.2026); фон и текст — токены темы */
.day-drawer .dr-tags button{display:block;width:100%;min-height:32px;margin:7px 0;padding:0 12px;text-align:left;border:1px solid var(--line);border-radius:99px;font:600 12.5px/1 var(--ui)}
.day-drawer .dr-tags button:not(.on){background:var(--surface);color:var(--t1)}

.sc-mobile,.sh-mobile{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--bg);color:var(--t1)}.sc-mobile>.fh-tabs{margin-top:12px}.sc-mobile .template-scroll,.sh-mobile .sh-scroll{flex:1;min-height:0;overflow:auto;padding:0 18px 18px!important;scroll-behavior:auto!important}.sc-card{margin:0 0 10px;border:1px solid var(--line);border-radius:20px;background:var(--surface);overflow:hidden}.sc-choose{display:grid;grid-template-columns:48px minmax(0,1fr) 12px;align-items:center;gap:10px;width:100%;padding:14px 13px 9px;border:0;background:none;text-align:left;color:var(--t1)}.sc-art{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:var(--green-bg);color:var(--green-tx)}.sc-art svg{width:43px;height:43px}.sc-copy{display:flex;flex-direction:column;gap:4px;min-width:0}.sc-copy>b{font:600 14px/1.3 var(--ui);letter-spacing:-.2px}.sc-copy>small{font:400 10px/1.5 var(--ui);color:var(--t2)}.sc-metrics{font:500 10px/1.4 var(--ui);color:var(--green-tx)}.sc-chevron{font-size:22px;color:var(--t2)}.sc-strip{display:flex;align-items:center;gap:12px;padding:4px 13px 12px 71px}.sc-strip>span{display:inline-flex;align-items:center;gap:4px;font:400 9px var(--ui);color:var(--t2)}.sc-strip svg{width:13px;height:13px;color:var(--green-tx)}.sc-delete{display:block;margin:0 13px 10px auto;padding:5px 8px;min-height:28px;border:0;background:var(--bg);border-radius:8px;color:var(--t2);font:500 10px var(--ui)}.sc-empty{padding:18px 8px;font:400 12px/1.7 var(--ui);color:var(--t2)}.sc-mine-empty .sc-empty{padding:14px 4px 12px}.sc-sample{border-style:dashed}.sc-sample .sc-choose{grid-template-columns:48px minmax(0,1fr)}.sc-sample .sc-art svg{width:24px;height:24px}.sc-sample-badge{align-self:flex-start;padding:2px 7px;border-radius:99px;background:var(--green-bg);color:var(--green-tx);font:600 9px/1.4 var(--ui)}.sc-new{display:block;width:100%;text-align:center;min-height:44px;margin:4px 0 0;padding:10px 12px;border:0;border-radius:12px;background:var(--green-tx);color:var(--surface);font:600 12px/1.4 var(--ui)}.sc-new:focus-visible{outline:2px solid var(--green-tx);outline-offset:2px}.sc-mobile .template-top{margin:0 0 10px}.sc-mobile .template-top button{background:none;border:0;padding:7px 0;color:var(--green-tx);font:500 11px var(--ui)}.sc-mobile #template-form{padding:14px;border:1px solid var(--line);border-radius:19px;background:var(--surface)}.sc-mobile label{display:flex;flex-direction:column;gap:5px;font:500 10px/1.4 var(--ui);color:var(--t2);margin:0 0 11px}.sc-mobile :is(input:not([type=checkbox]),select){width:100%;min-width:0;min-height:38px;margin:0;padding:8px 9px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--t1);font:500 12px/1.4 var(--ui)}.sc-mobile .template-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px}.sc-mobile .template-item{min-width:0;padding:12px;margin:8px 0;border:1px solid var(--line);border-radius:15px;background:var(--bg)}.sc-mobile .template-item legend{float:none;width:auto;padding:0 4px;margin:0}.sc-mobile .template-check{display:flex;flex-direction:row;align-items:center;gap:7px;margin:0;color:var(--t1);font-size:11px}.sc-mobile .template-check svg{width:15px;height:15px}.sc-mobile .template-check input{accent-color:var(--green-tx)}.sc-mobile .template-footer{display:grid;gap:7px;padding:11px 0}.sc-mobile .template-footer button,.sc-mobile .template-card>button{display:block;width:100%;min-height:39px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--green-tx);font:600 11px/1.4 var(--ui);margin-top:6px}.sc-mobile .template-footer button:last-child,.sc-mobile [data-template=apply]{background:var(--green-tx);color:var(--surface)}.sc-mobile .template-card{margin:0 0 11px;padding:15px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}.sc-mobile .template-card .template-art{display:block;width:48px;height:48px;margin:0 0 8px}.sc-mobile .template-card .template-art svg{width:48px;height:48px}.sc-mobile .template-card h2{font:600 17px/1.4 var(--ui);margin:6px 0}.sc-mobile .template-card p{font:400 11px/1.6 var(--ui);color:var(--t2)}.sc-mobile .template-kicker{font:500 10px/1.4 var(--ui);color:var(--green-tx)}.sc-mobile .template-preview-row{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.sc-mobile .template-step-icon{width:30px;height:30px;border-radius:9px;background:var(--green-bg);display:grid;place-items:center;color:var(--green-tx)}.sc-mobile .template-step-icon svg{width:18px;height:18px}.sc-mobile .template-preview-row time{font:500 10px var(--ui);color:var(--t2)}.sc-mobile .template-preview-row b{display:block;font:600 12px/1.4 var(--ui);margin:3px 0}.sc-mobile .template-preview-row small{font:400 9px var(--ui);color:var(--t2)}
.sh-mobile .sh-scroll{padding-top:12px!important}.sh-mobile .sh-route-context{padding:13px 18px 5px;font:600 15px/1.4 var(--ui);flex:none}.sh-mobile .sh-symbol svg{width:21px;height:21px}.sh-mobile :is(.shared-primary,.shared-secondary){min-height:40px;border-radius:12px;padding:10px 12px;font:600 12px/1.4 var(--ui)}.sh-mobile .shared-primary{border:0;background:var(--green-tx);color:var(--surface)}.sh-mobile .shared-secondary{border:1px solid var(--line);background:var(--surface);color:var(--green-tx)}.sh-mobile .sh-full{width:100%}.sh-mobile .shared-section-title h3{font:600 13px var(--ui)}.sh-mobile .sh-list-card{padding:13px;border-radius:17px;gap:10px;margin:0 0 9px}.sh-mobile .sh-list-text b{font-size:13px}.sh-mobile .sh-list-text small{font-size:10px}.sh-mobile .sh-list-icon{width:32px;height:32px;border-radius:10px}.sh-mobile .sh-list-icon svg{width:18px;height:18px}.sh-mobile .sh-empty-list{font:400 11px/1.7 var(--ui);padding:14px}.sh-mobile .sh-home-extra{margin-top:12px}.sh-mobile .sh-link-row{min-height:50px;padding:10px 12px;border-radius:14px}.sh-mobile .sh-link-row b{font-size:12px}.sh-mobile .sh-link-row small{font-size:10px}.sh-mobile .shared-form{padding:14px;border:1px solid var(--line);border-radius:19px;background:var(--surface)}.sh-mobile .shared-form label{font:500 11px/1.4 var(--ui)}.sh-mobile .shared-form :is(input,select,textarea){min-height:39px;border-radius:11px;font:400 12px/1.4 var(--ui);padding:9px}.sh-mobile .sh-form-intro,.sh-mobile .shared-muted{font:400 11px/1.7 var(--ui)}.sh-mobile .sh-task{border-radius:17px;padding:12px;gap:9px}.sh-mobile .sh-task-copy h3 button{font:600 13px/1.4 var(--ui)}.sh-mobile .shared-item-meta{font-size:9px}.sh-mobile .shared-tick{width:25px;height:25px;border-radius:9px}.sh-mobile .sh-progress{padding:13px;border-radius:16px}.sh-mobile .sh-progress b{font-size:14px}@media(max-width:350px){.sc-mobile .template-scroll,.sh-mobile .sh-scroll{padding-inline:12px!important}.sc-copy>b{font-size:13px}.sc-strip{padding-left:13px}}
/* Shared lists variant: the same grouped surfaces as attention history. */
.sh-mobile .sh-panel{margin:0 0 12px;border:1px solid var(--line);border-radius:18px;background:var(--surface);overflow:hidden}
.sh-mobile .sh-panel-head{display:flex;align-items:center;gap:9px;padding:10px 13px;background:var(--green-bg);border:0;min-height:52px}
.sh-mobile .sh-panel-head h2{display:flex;align-items:center;gap:7px;flex:1;min-width:0;margin:0;font:600 13px/1.4 var(--ui);letter-spacing:0;color:var(--green-tx)}
.sh-mobile .sh-panel-head>div{display:flex;gap:4px;align-items:center}
.sh-mobile .sh-panel-head .sh-symbol{width:27px;height:27px;display:grid;place-items:center;color:var(--green-tx);background:none;border-radius:0;margin:0}
.sh-mobile .sh-panel-head .sh-symbol svg{width:20px;height:20px}
.sh-mobile .sh-count{font:500 10px/1.3 var(--ui);background:var(--surface);padding:3px 6px;border-radius:7px;color:var(--t2)}
.sh-mobile .sh-panel-head :is(.sh-small-icon,.sh-add-list){display:grid;place-items:center;width:38px;height:38px;min-height:38px;min-width:38px;padding:8px;border:0;border-radius:11px;background:transparent;color:var(--green-tx);cursor:pointer}
.sh-mobile .sh-panel-head .sh-add-list{background:var(--surface);box-shadow:0 1px 3px #1c30290a}
.sh-mobile :is(.sh-small-icon,.sh-add-list) svg{width:19px;height:19px}
.sh-mobile .sh-panel-body{padding:0 13px}
.sh-mobile .sh-panel .sh-list-card{display:flex;align-items:center;flex-wrap:nowrap;gap:10px;width:100%;padding:16px 0;margin:0;border:0;border-radius:0;background:transparent;text-align:left;min-height:90px;box-shadow:none}
.sh-mobile .sh-panel .sh-list-card+.sh-list-card{border-top:1px solid var(--line)}
.sh-mobile .sh-panel .sh-list-icon{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:11px;background:var(--bg);color:var(--green-tx)}
.sh-mobile .sh-panel .sh-list-text{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1}
.sh-mobile .sh-panel .sh-list-text b{font:600 14px/1.4 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.sh-mobile .sh-panel .sh-list-text small{font:400 10px/1.5 var(--ui);color:var(--t2);margin:0}
.sh-mobile .sh-panel .sh-list-card>i{display:grid;place-items:center;width:16px;flex:none;color:var(--t2)}
.sh-mobile .sh-list-meter{height:3px;width:100%;max-width:160px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:2px}
.sh-mobile .sh-list-meter>i{display:block;height:100%;border-radius:inherit;background:var(--green-tx)}
.sh-mobile .sh-panel>footer{border-top:1px solid var(--line);padding:0 13px}
.sh-mobile .sh-join-row{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:48px;padding:10px 0;border:0;background:none;color:var(--green-tx);text-align:left;font:500 12px/1.4 var(--ui);cursor:pointer}
.sh-mobile .sh-join-row svg{width:16px;height:16px;flex:none}
.sh-mobile .sh-activity-panel .sh-link-row{display:flex;align-items:center;gap:10px;min-height:75px;width:100%;margin:0;border:0;padding:13px;background:none;text-align:left;border-radius:0;color:var(--t1)}
.sh-mobile .sh-activity-panel .sh-symbol{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--bg);color:var(--green-tx);flex:none;margin:0}
.sh-mobile .sh-activity-panel .sh-link-row>span:nth-child(2){min-width:0;flex:1}
.sh-mobile .sh-activity-panel .sh-link-row b{display:block;font:500 12px/1.4 var(--ui)}
.sh-mobile .sh-activity-panel .sh-link-row small{display:block;font:400 10px/1.5 var(--ui);color:var(--t2);margin-top:3px}
.sh-mobile .sh-help{margin:0;border:1px solid var(--line);border-radius:16px;background:var(--surface);overflow:hidden}
.sh-mobile .sh-help summary{display:flex;align-items:center;justify-content:space-between;gap:10px;list-style:none;min-height:48px;padding:12px 14px;color:var(--t2);font:500 12px/1.4 var(--ui);cursor:pointer}
.sh-mobile .sh-help summary::-webkit-details-marker{display:none}
.sh-mobile .sh-help summary i{display:grid;place-items:center;width:24px;height:24px;border-radius:8px;background:var(--bg);font:400 19px/1 var(--ui);font-style:normal;color:var(--green-tx)}
.sh-mobile .sh-help[open] summary i{transform:rotate(45deg)}
.sh-mobile .sh-help ol{list-style:none;counter-reset:shared-step;margin:0;padding:0 14px 5px}
.sh-mobile .sh-help li{counter-increment:shared-step;position:relative;padding:12px 0 12px 32px;border-top:1px solid var(--line)}
.sh-mobile .sh-help li:before{content:counter(shared-step);position:absolute;left:0;top:12px;display:grid;place-items:center;width:22px;height:22px;border-radius:8px;background:var(--green-bg);color:var(--green-tx);font:500 10px var(--ui)}
.sh-mobile .sh-help li b{display:block;font:500 12px/1.4 var(--ui);color:var(--t1)}
.sh-mobile .sh-help li span{display:block;font:400 11px/1.6 var(--ui);color:var(--t2);margin-top:3px}
.sh-mobile .sh-access-body{padding:16px}
.sh-mobile .sh-access-body h3{font:600 15px/1.45 var(--ui);letter-spacing:-.2px;margin:0 0 7px;color:var(--t1)}
.sh-mobile .sh-access-body p{font:400 12px/1.65 var(--ui);color:var(--t2);margin:0 0 16px;overflow-wrap:anywhere}
.sh-mobile .sh-access-status[aria-busy=true]{padding-left:13px;border-left:3px solid var(--green-bg)}
.sh-mobile .sh-access-status[aria-busy=true] p{margin-bottom:0}
.sh-mobile .shared-primary,.functional .sh-mobile .sh-scroll .shared-primary{background:var(--green);color:var(--on-acc,#fff);min-height:44px;border:0;font:600 12px/1.4 var(--ui);border-radius:12px;box-shadow:none}
.sh-mobile .shared-primary :is(span,svg),.functional .sh-mobile .sh-scroll .shared-primary :is(span,svg){color:inherit}
.sh-mobile .shared-secondary,.functional .sh-mobile .sh-scroll .shared-secondary{background:var(--bg);color:var(--green-tx);min-height:42px;font:500 12px/1.4 var(--ui);border:1px solid var(--line);border-radius:12px}
.sh-mobile :is(button,summary):focus-visible{outline:2px solid var(--green-tx);outline-offset:-3px}
@media(prefers-reduced-motion:no-preference){.sh-mobile .sh-help summary i{transition:transform .16s ease}}

/* Shared routes use existing theme tokens and the common .chk renderer. */
.functional .sh-mobile{--sh-accent:var(--green-tx);--sh-ink:var(--on-acc,#fff)}
.functional .sh-mobile .sh-route-context{padding:12px 18px 2px;font:600 16px/1.4 var(--ui);letter-spacing:-.3px;color:var(--t1)}
.functional .sh-mobile .sh-progress{padding:12px 14px;margin:0 0 9px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.functional .sh-mobile .sh-progress>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px;font:400 11px/1.4 var(--ui);color:var(--t2)}
.functional .sh-mobile .sh-progress b{font:600 13px/1.4 var(--ui);color:var(--green-tx)}
.functional .sh-mobile .shared-bar{margin-top:9px;height:4px;background:var(--lx-track,var(--line))}
.functional .sh-mobile .shared-bar i{background:var(--lx-progress,var(--green))}
.functional .sh-mobile .sh-list-tabs{display:flex;gap:4px;padding:4px;margin:0 0 10px;border:1px solid var(--line);border-radius:13px;background:var(--bg)}
.functional .sh-mobile .sh-list-tabs button{flex:1;min-width:0;min-height:40px;padding:8px 5px;border:0;border-radius:10px;background:none;color:var(--t2);font:500 12px/1.4 var(--ui);text-align:center}
.functional .sh-mobile .sh-list-tabs button.on{background:var(--surface);color:var(--green-tx);box-shadow:0 1px 4px color-mix(in srgb,var(--t1) 5%,transparent)}
.functional .sh-mobile .sh-filters{display:flex;gap:5px;margin:0 0 12px;padding:0;border:0;background:none;border-radius:0}
.functional .sh-mobile .sh-filters button{flex:1;min-height:38px;min-width:0;padding:7px 5px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font:500 10px/1.4 var(--ui);color:var(--t2);text-align:center;overflow-wrap:anywhere}
.functional .sh-mobile .sh-filters button.on{background:var(--green-bg);border-color:var(--green-tx);color:var(--green-tx);box-shadow:none}
.functional .sh-mobile .sh-task{display:flex;align-items:center;gap:8px;padding:10px 9px 10px 6px;margin:0 0 8px;border:1px solid var(--line);border-radius:17px;background:var(--surface)}
.functional .sh-mobile .sh-task-copy{min-width:0;flex:1}
.functional .sh-mobile .sh-task-copy h3{margin:0;font-size:13px;line-height:1.5}
.functional .sh-mobile .sh-task-copy h3 .shared-item-title{display:block;width:100%;min-height:28px;padding:2px 0;border:0;background:none;font:600 13px/1.5 var(--ui);color:var(--t1);text-align:left;overflow-wrap:anywhere}
.functional .sh-mobile .sh-task.done .shared-item-title{text-decoration:line-through;color:var(--t2)}
.functional .sh-mobile .sh-task-copy>p{font:400 11px/1.6 var(--ui);color:var(--t2);margin:3px 0;white-space:pre-wrap;overflow-wrap:anywhere}
.functional .sh-mobile .shared-item-meta{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:3px 0 0;padding:0}
.functional .sh-mobile .shared-item-meta span{border:0;background:var(--bg);color:var(--t2);font:400 10px/1.4 var(--ui);padding:3px 6px;border-radius:6px;overflow-wrap:anywhere}
.functional .sh-mobile .shared-item-meta .important{background:var(--green-bg);color:var(--green-tx)}
.functional .sh-mobile .sh-comment-count{display:block;margin:4px 0 0;font:400 10px/1.4 var(--ui);color:var(--t2)}
.functional .sh-mobile .shared-more{display:grid;place-items:center;width:36px;min-width:36px;height:44px;align-self:center;padding:0;border:0;border-radius:10px;background:none;color:var(--t2);font:600 21px/1 var(--ui)}
.functional .sh-mobile .sh-add-bottom{margin:12px 0 0;padding:0}
.functional .sh-mobile .sh-add-bottom button{width:100%;min-height:44px}
.functional .sh-mobile .sh-empty{display:block;padding:17px 15px;margin:0 0 12px;border:1px solid var(--line);border-radius:17px;background:var(--surface);text-align:left}
.functional .sh-mobile .sh-empty-art{float:left;display:grid;place-items:center;width:32px;height:32px;margin:0 10px 8px 0;border-radius:10px;background:var(--green-bg);color:var(--green-tx)}
.functional .sh-mobile .sh-empty-art svg{width:20px;height:20px}
.functional .sh-mobile .sh-empty h3{font:600 13px/1.5 var(--ui);margin:0 0 5px;color:var(--t1)}
.functional .sh-mobile .sh-empty p{font:400 11px/1.6 var(--ui);color:var(--t2);margin:0 0 12px}
.functional .sh-mobile .sh-empty button{clear:both;width:100%;margin:0}
.functional .sh-mobile .sh-viewer-note{font:400 11px/1.6 var(--ui);color:var(--t2);margin:0 0 10px;padding:10px 12px;border-radius:12px;background:var(--green-bg)}
.functional .sh-mobile .sh-task-locked{padding:14px}
.functional .sh-mobile .sh-lock{display:grid;place-items:center;width:32px;height:32px;flex:none;background:var(--bg);border-radius:10px}
/* Forms, roles, invitations and settings share one surface hierarchy. */
.functional .sh-mobile :is(.sh-form,.sh-invite-form,.sh-settings-card,.sh-danger-zone,.shared-detail-head,.shared-discussion,.shared-attachments,.shared-calendar-policy,.shared-calendar-links,.shared-calendar-issued,.shared-calendar-help){padding:14px;margin:0 0 12px;border:1px solid var(--line);border-radius:17px;background:var(--surface);box-shadow:none}
.functional .sh-mobile :is(h2,h3){overflow-wrap:anywhere}
.functional .sh-mobile :is(.sh-settings-card,.shared-detail-head,.shared-discussion,.shared-calendar-policy,.shared-calendar-links,.shared-calendar-help) :is(h2,h3){font:600 14px/1.5 var(--ui);letter-spacing:0;margin:0 0 8px}
.functional .sh-mobile :is(.sh-settings-card,.sh-danger-zone,.shared-calendar-policy,.shared-calendar-help) p{font:400 11px/1.6 var(--ui);color:var(--t2);margin:0 0 12px}
.functional .sh-mobile .shared-form label{margin:0 0 13px;font:500 11px/1.5 var(--ui);color:var(--t2);gap:5px}
.functional .sh-mobile .shared-form :is(input:not([type=checkbox]):not([type=radio]),textarea,select){width:100%;min-width:0;min-height:44px;margin:0;padding:10px;border:1px solid var(--line-btn,var(--line));border-radius:11px;background:var(--input-bg,var(--bg));font:400 13px/1.5 var(--ui);color:var(--t1);box-shadow:none}
.functional .sh-mobile .shared-pair{gap:10px}
.functional .sh-mobile .shared-form-actions{display:flex;gap:8px;margin-top:16px}
.functional .sh-mobile .shared-form-actions>*{flex:1;min-height:44px;padding:10px;border-radius:11px;text-align:center;color:var(--t2);font:500 12px/1.4 var(--ui)}
.functional .sh-mobile .shared-check{display:flex!important;flex-direction:row!important;align-items:flex-start;gap:8px!important;font:400 11px/1.6 var(--ui)!important}
.functional .sh-mobile .shared-check input{flex:none;width:20px;height:20px;accent-color:var(--green);margin:0}
.functional .sh-mobile .sh-role-options{margin:0 0 14px;padding:0;border:0;min-width:0}
.functional .sh-mobile .sh-role-options legend{font:600 13px/1.5 var(--ui);margin:0 0 9px;padding:0;color:var(--t1)}
.functional .sh-mobile .sh-role-option{display:flex;align-items:flex-start;gap:9px;padding:12px;margin:0 0 7px!important;border:1px solid var(--line);border-radius:12px;background:var(--bg);cursor:pointer}
.functional .sh-mobile .sh-role-option:has(input:checked){border-color:var(--green-tx);background:var(--green-bg)}
.functional .sh-mobile .sh-role-option input{margin:2px 0 0;width:18px;height:18px;flex:none;accent-color:var(--green)}
.functional .sh-mobile .sh-role-option span{min-width:0;flex:1}
.functional .sh-mobile .sh-role-option b{display:block;font:500 12px/1.5 var(--ui);color:var(--t1)}
.functional .sh-mobile .sh-role-option small{display:block;font:400 10px/1.6 var(--ui);color:var(--t2);margin-top:3px}
.functional .sh-mobile .sh-plus-mark{font:500 10px var(--ui);font-style:normal;color:var(--green-tx)}
.functional .sh-mobile .sh-role-locked{opacity:.7}
.functional .sh-mobile .sh-members{margin:0}
.functional .sh-mobile .sh-members .shared-section-title{margin:10px 2px;font:500 12px var(--ui)}
.functional .sh-mobile .sh-members .shared-section-title h2{font:600 13px/1.4 var(--ui);margin:0}
.functional .sh-mobile .sh-member-list{border:1px solid var(--line);border-radius:17px;padding:0 12px;background:var(--surface)}
.functional .sh-mobile .sh-member{display:flex;align-items:center;gap:10px;margin:0;padding:13px 0;flex-wrap:nowrap;border:0;border-bottom:1px solid var(--line)}
.functional .sh-mobile .sh-member:last-child{border:0}
.functional .sh-mobile .shared-avatar{width:32px;height:32px;flex:none;font:500 12px var(--ui)}
.functional .sh-mobile .sh-member-copy{flex:1;min-width:0}
.functional .sh-mobile .sh-member-copy b{font:500 12px/1.5 var(--ui);color:var(--t1)}
.functional .sh-mobile .sh-member-copy small{font:400 10px/1.5 var(--ui);color:var(--t2)}
.functional .sh-mobile .sh-you{font:400 9px var(--ui);color:var(--t2);padding-left:4px}
.functional .sh-mobile .sh-member-menu{position:relative;flex:none}
.functional .sh-mobile .sh-member-menu summary{display:grid;place-items:center;list-style:none;width:40px;height:44px;border-radius:10px;color:var(--t2);font-size:20px;cursor:pointer}
.functional .sh-mobile .sh-member-menu-body{position:absolute;right:0;top:40px;z-index:10;min-width:min(240px,65vw);max-height:270px;overflow:auto;padding:6px;border:1px solid var(--line);border-radius:13px;background:var(--surface);box-shadow:0 6px 20px color-mix(in srgb,var(--t1) 12%,transparent)}
.functional .sh-mobile .sh-member-menu-body button{width:100%;min-height:44px;margin:0 0 4px!important;text-align:left;font:400 11px/1.5 var(--ui)}
.functional .sh-mobile :is(.sh-role-help,.sh-danger-zone){margin:12px 0;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:0 13px}
.functional .sh-mobile :is(.sh-role-help,.sh-danger-zone) summary{min-height:46px;padding:13px 0;font:500 12px/1.5 var(--ui);color:var(--t2);cursor:pointer}
.functional .sh-mobile .sh-role-help dl{font:400 11px/1.6 var(--ui);margin:0 0 12px}
.functional .sh-mobile .sh-role-help dt{font-weight:600;color:var(--t1)}
.functional .sh-mobile .sh-role-help dd{margin:0 0 9px;color:var(--t2)}
.functional .sh-mobile :is(.sh-invite-action,.sh-leave-action){margin:12px 0}
.functional .sh-mobile :is(.sh-invite-action,.sh-leave-action)>button{width:100%}
.functional .sh-mobile .sh-issued{margin:12px 0;padding:14px;background:var(--green-bg);border:1px solid var(--line);border-radius:14px}
.functional .sh-mobile .sh-issued code{font:600 23px/1.5 var(--mono,var(--ui));letter-spacing:2px;user-select:text;color:var(--green-tx);margin:10px 0}
.functional .sh-mobile .shared-detail-head h2{font-size:17px;margin:5px 0 9px}
.functional .sh-mobile .shared-detail-head p{font:400 12px/1.65 var(--ui);color:var(--t2)}
.functional .sh-mobile .shared-discussion .shared-section-title{margin:0 0 8px}
.functional .sh-mobile .shared-comment{border:0;border-top:1px solid var(--line);padding:12px 0;margin:0;background:none}
.functional .sh-mobile .shared-comment b{font:600 11px/1.4 var(--ui);color:var(--t1)}
.functional .sh-mobile .shared-comment small{font:400 9px/1.5 var(--ui);color:var(--t2)}
.functional .sh-mobile .shared-comment p{font:400 12px/1.6 var(--ui);color:var(--t1);white-space:pre-wrap;overflow-wrap:anywhere;margin:7px 0}
.functional .sh-mobile .shared-comment-form{border:0;background:none;padding:8px 0 0;margin:0;box-shadow:none}
.functional .sh-mobile .shared-error,.functional .sh-mobile .shared-conflict{font:400 12px/1.6 var(--ui);background:var(--surface);color:var(--t1);border:1px solid var(--line);border-radius:14px;padding:12px;margin:0 0 10px}
.functional .sh-mobile .shared-danger{background:var(--danger-bg,var(--bg));color:var(--danger);border:1px solid var(--danger-bd,var(--line));font:500 12px/1.5 var(--ui);border-radius:11px}
.functional .sh-mobile .shared-text{min-height:40px;font:500 11px/1.4 var(--ui);color:var(--green-tx)}
.functional .sh-mobile :is(input,textarea,select,button,summary):focus-visible{outline:2px solid var(--green-tx);outline-offset:2px}
@media(max-width:350px){.functional .sh-mobile .shared-pair{grid-template-columns:minmax(0,1fr)}.functional .sh-mobile .sh-task{gap:4px}.functional .sh-mobile .shared-more{min-width:30px;width:30px}}
/* Activity and calendar routes keep the same density as list/task routes. */
.functional .sh-mobile .sh-scroll .notice-hero{padding:14px;margin:0 0 10px;border:1px solid var(--line);border-radius:17px;background:var(--surface)}
.functional .sh-mobile .sh-scroll .notice-hero>.shared-eyebrow{display:none}
.functional .sh-mobile .sh-scroll .notice-hero h2{font:600 14px/1.5 var(--ui);margin:0 0 5px}
.functional .sh-mobile .sh-scroll .notice-hero p{font:400 11px/1.6 var(--ui);margin:0 0 10px}
.functional .sh-mobile .sh-scroll .notice-hero>div{display:flex;align-items:baseline;gap:7px;padding-top:9px;border-top:1px solid var(--line)}
.functional .sh-mobile .sh-scroll .notice-hero strong{font:600 24px/1.3 var(--ui);color:var(--green-tx)}
.functional .sh-mobile .sh-scroll .notice-hero>div span{font:400 11px/1.5 var(--ui);color:var(--t2)}
.functional .sh-mobile .sh-scroll .notice-tools{display:flex;gap:4px;margin:0 0 9px;flex-wrap:wrap}
.functional .sh-mobile .sh-scroll .notice-tools button{min-height:40px;padding:7px;font:500 10px/1.4 var(--ui);color:var(--green-tx)}
.functional .sh-mobile .sh-scroll .notice-filters{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin:12px 0}
.functional .sh-mobile .sh-scroll .notice-filters label{min-width:0;font:400 11px/1.5 var(--ui);color:var(--t2)}
.functional .sh-mobile .sh-scroll .notice-filters :is(select,.choice-trigger){width:100%;min-width:0;min-height:42px;border:1px solid var(--line);background:var(--surface);color:var(--t1);border-radius:11px;padding:9px;font:400 11px/1.4 var(--ui);margin-top:5px}
.functional .sh-mobile .sh-scroll .notice-card{padding:12px;margin:0 0 9px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:none}
.functional .sh-mobile .sh-scroll .notice-footer{font:400 10px/1.6 var(--ui);color:var(--t2);padding:11px 0}
.functional .sh-mobile .sh-scroll .notice-empty{padding:17px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.functional .sh-mobile .sh-scroll .shared-calendar-hero{padding:14px;margin:0 0 12px;background:var(--surface);border:1px solid var(--line);border-radius:17px}
.functional .sh-mobile .sh-scroll .shared-calendar-hero h2{font:600 17px/1.4 var(--ui);margin:6px 0}
.functional .sh-mobile .sh-scroll .shared-calendar-hero p{font:400 11px/1.6 var(--ui);margin:0}
.functional .sh-mobile .sh-scroll .shared-calendar-icon{display:none}
.functional .sh-mobile .sh-scroll .shared-calendar-link{display:flex;gap:10px;padding:12px 0;border-top:1px solid var(--line);align-items:center}
.functional .sh-mobile .sh-scroll .shared-calendar-link>div{min-width:0;flex:1}
.functional .sh-mobile .sh-scroll .shared-calendar-link b{display:block;font:500 12px/1.5 var(--ui)}
.functional .sh-mobile .sh-scroll .shared-calendar-link small{display:block;font:400 10px/1.6 var(--ui);color:var(--t2)}
/* Surface controls have explicit styles in the standalone and native app. */
.functional .sh-mobile button{appearance:none;-webkit-appearance:none;border:0;background:none;color:inherit;font-family:var(--ui);cursor:pointer}
.functional .sh-mobile .sh-people-body{padding:12px;display:grid;gap:8px}
.functional .sh-mobile .sh-person{display:flex;align-items:center;gap:10px;min-height:76px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--bg);box-shadow:none}
.functional .sh-mobile .sh-person-avatar{display:grid;place-items:center;width:38px;height:38px;flex:none;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--green-tx);font:600 14px/1 var(--ui)}
.functional .sh-mobile .sh-person-copy{flex:1;min-width:0;display:grid;gap:6px}
.functional .sh-mobile .sh-person-copy>b{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font:600 13px/1.4 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.functional .sh-mobile .sh-self-chip{font:500 9px/1.4 var(--ui);padding:2px 5px;border-radius:5px;background:var(--surface);color:var(--t2);border:1px solid var(--line)}
.functional .sh-mobile .sh-person-role{justify-self:start;font:500 10px/1.4 var(--ui);padding:3px 7px;border-radius:6px;background:var(--surface);color:var(--t2);border:1px solid var(--line)}
.functional .sh-mobile .sh-person-role.is-owner{background:var(--green-bg);color:var(--green-tx);border-color:transparent}
.functional .sh-mobile .sh-person .sh-member-menu summary{background:var(--surface);border:1px solid var(--line);width:34px;height:40px}
.functional .sh-mobile summary::-webkit-details-marker{display:none}
.functional .sh-mobile .sh-people-actions{padding:0 13px}
.functional .sh-mobile .sh-invite-row{padding:13px 0}
.functional .sh-mobile .sh-invite-row button{width:100%;display:flex;align-items:center;justify-content:center;gap:8px}
.functional .sh-mobile .sh-surface-action{display:flex;align-items:center;gap:10px;width:100%;min-height:62px;padding:12px 0;border:0;border-top:1px solid var(--line);background:none;text-align:left;color:var(--t1);font:500 12px/1.5 var(--ui)}
.functional .sh-mobile .sh-surface-action>.sh-row-icon{display:grid;place-items:center;width:32px;height:32px;flex:none;background:var(--bg);border:1px solid var(--line);border-radius:10px;color:var(--green-tx)}
.functional .sh-mobile .sh-surface-action>span:nth-child(2){flex:1;min-width:0}
.functional .sh-mobile .sh-surface-action small{display:block;font:400 10px/1.6 var(--ui);color:var(--t2);margin-top:3px}
.functional .sh-mobile .sh-surface-action>svg{width:16px;height:16px;flex:none;color:var(--t2)}
.functional .sh-mobile .sh-role-help summary{display:flex;align-items:center;justify-content:space-between;gap:8px;list-style:none}
.functional .sh-mobile .sh-role-help summary i{font:400 19px/1 var(--ui);font-style:normal;color:var(--green-tx)}
.functional .sh-mobile .sh-role-help[open] summary i{transform:rotate(45deg)}
.functional .sh-mobile .sh-list-access{display:block;align-self:start;font:500 9px/1.4 var(--ui);color:var(--green-tx)}
.functional .sh-mobile .sh-scroll .notice-action-panel{padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:17px;margin:0 0 10px}
.functional .sh-mobile .sh-scroll .notice-action-panel .notice-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:0;margin:0 0 6px}
.functional .sh-mobile .sh-scroll .notice-action-panel .notice-tools button{display:flex;align-items:center;justify-content:center;min-height:44px;margin:0;padding:8px 5px;border:1px solid var(--line);border-radius:11px;background:var(--bg);color:var(--green-tx);font:500 10px/1.4 var(--ui);text-align:center;overflow-wrap:anywhere;box-shadow:none}
.functional .sh-mobile .sh-scroll .notice-tabs{display:flex;padding:3px;gap:4px;border:0;border-radius:11px;background:var(--bg);margin:0}
.functional .sh-mobile .sh-scroll .notice-tabs button{flex:1;display:flex;align-items:center;justify-content:center;min-height:38px;padding:7px;border:0;border-radius:9px;background:none;color:var(--t2);font:500 12px/1.4 var(--ui);box-shadow:none}
.functional .sh-mobile .sh-scroll .notice-tabs button.on{background:var(--surface);color:var(--green-tx);box-shadow:0 1px 3px color-mix(in srgb,var(--t1) 6%,transparent)}
.functional .sh-mobile .sh-scroll .notice-tabs button:focus-visible{outline:2px solid var(--green-tx);outline-offset:-2px}
.functional .sh-mobile .sh-scroll .notice-filter-panel{margin:0 0 10px}
.functional .sh-mobile .sh-scroll .notice-filter-panel .notice-filters{margin:0;padding:0 13px 13px}
.functional .sh-mobile .sh-people-panel{overflow:visible}
.functional .sh-mobile .sh-people-panel>.sh-panel-head{border-radius:17px 17px 0 0}
.functional .sh-mobile .sh-scroll .notice-event-meta{display:flex;align-items:center;gap:8px;font:400 9px/1.5 var(--ui);color:var(--t2)}
.functional .sh-mobile .sh-scroll .notice-kind{padding:3px 7px;border-radius:6px;background:var(--green-bg);color:var(--green-tx);font-weight:500}
.functional .sh-mobile .sh-scroll .notice-event-meta time{margin-left:auto;font-variant-numeric:tabular-nums}
.functional .sh-mobile .sh-scroll .notice-event-meta>i{width:5px;height:5px;border-radius:50%;background:var(--green);flex:none}
.functional .sh-mobile .sh-scroll .notice-event h3{font:600 14px/1.5 var(--ui);margin:10px 0 5px;color:var(--t1)}
.functional .sh-mobile .sh-scroll .notice-event-text{font:400 11px/1.6 var(--ui);margin:4px 0;color:var(--t2)}
.functional .sh-mobile .sh-scroll .notice-event-source{display:flex;gap:7px;align-items:center;flex-wrap:wrap;font:400 10px/1.5 var(--ui);color:var(--t2);margin:4px 0 12px}
.functional .sh-mobile .sh-scroll .notice-event-source>span+span:before{content:'·';padding-right:7px;color:var(--t3,var(--t2))}
.functional .sh-mobile .sh-scroll .notice-event-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;border-top:1px solid var(--line);padding-top:10px}
.functional .sh-mobile .sh-scroll .notice-event-actions button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:44px;padding:10px;border:1px solid var(--line);border-radius:11px;background:var(--bg);font:500 12px/1.4 var(--ui);color:var(--green-tx);text-align:center}
.functional .sh-mobile .sh-scroll .notice-event-actions .notice-task-action{border-color:transparent;background:var(--green-bg);color:var(--green-tx)}
.functional .sh-mobile .sh-scroll .notice-task-action svg{width:16px;height:16px}
.functional .sh-mobile .sh-scroll .notice-read-state{display:flex;align-items:center;justify-content:center;font:400 10px/1.4 var(--ui);color:var(--t2)}
.functional .sh-mobile .sh-scroll .sh-task-detail{padding:12px 14px;margin-bottom:12px}
.functional .sh-mobile .sh-scroll .sh-task-detail-context{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 6px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.functional .sh-mobile .sh-scroll .sh-task-detail-context>span{font:500 11px/1.5 var(--ui);color:var(--t2)}
.functional .sh-mobile .sh-scroll .sh-detail-refresh{display:grid;place-items:center;width:44px;height:44px;min-width:44px;padding:11px;background:var(--bg);border:1px solid var(--line);border-radius:12px;color:var(--green-tx)}
.functional .sh-mobile .sh-scroll .sh-task-detail-row{display:flex;align-items:center;gap:10px;padding:5px 0}
.functional .sh-mobile .sh-scroll .sh-task-detail-row>div{flex:1;min-width:0}
.functional .sh-mobile .sh-scroll .sh-task-detail-row h2{font:600 16px/1.45 var(--ui);margin:0 0 5px;color:var(--t1);letter-spacing:-.2px}
.functional .sh-mobile .sh-scroll .sh-detail-state{display:inline-block;padding:3px 7px;border-radius:6px;background:var(--bg);color:var(--t2);font:500 10px/1.4 var(--ui)}
.functional .sh-mobile .sh-scroll .sh-detail-state.is-done{background:var(--green-bg);color:var(--green-tx)}
.functional .sh-mobile .sh-scroll .sh-detail-note,.functional .sh-mobile .sh-scroll .sh-detail-viewer{font:400 11px/1.65 var(--ui);color:var(--t2);margin:8px 0 0;white-space:pre-wrap}
.functional .sh-mobile .sh-scroll .sh-discussion-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid var(--line)}
.functional .sh-mobile .sh-scroll .sh-discussion-heading h3{font:600 13px/1.4 var(--ui);margin:0}
.functional .sh-mobile .sh-scroll .sh-discussion-heading>span{font:500 10px var(--ui);padding:3px 6px;border-radius:6px;background:var(--bg);color:var(--t2)}
.functional .sh-mobile .sh-scroll .sh-discussion-comment{padding:12px;margin:0 0 10px;border:1px solid var(--line);border-radius:13px;background:var(--bg)}
.functional .sh-mobile .sh-scroll .sh-discussion-comment>header{display:flex;align-items:center;gap:8px}
.functional .sh-mobile .sh-scroll .sh-comment-avatar{display:grid;place-items:center;width:29px;height:29px;flex:none;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--green-tx);font:500 11px/1 var(--ui)}
.functional .sh-mobile .sh-scroll .sh-discussion-comment>header>div{display:grid;gap:2px}
.functional .sh-mobile .sh-scroll .sh-discussion-comment b{font:600 11px/1.4 var(--ui)}
.functional .sh-mobile .sh-scroll .sh-discussion-comment time{font:400 9px/1.5 var(--ui);color:var(--t2)}
.functional .sh-mobile .sh-scroll .sh-discussion-comment>p{font:400 12px/1.65 var(--ui);margin:10px 0 0;color:var(--t1);white-space:pre-wrap;overflow-wrap:anywhere}
.functional .sh-mobile .sh-scroll .shared-comment-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.functional .sh-mobile .sh-scroll .sh-comment-action{min-height:44px;min-width:72px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--green-tx);font:500 11px/1.4 var(--ui);text-align:center}
.functional .sh-mobile .sh-scroll .sh-comment-action.is-danger{color:var(--danger)}
.functional .sh-mobile .sh-scroll .shared-comment-form{padding:4px 0 0;border:0;background:none;box-shadow:none;margin:0}
.functional .sh-mobile .sh-scroll .shared-comment-form label{font:500 11px/1.5 var(--ui);color:var(--t2);margin:0}
.functional .sh-mobile .sh-scroll .shared-comment-form textarea{min-height:80px;max-height:240px;resize:vertical;font:400 13px/1.6 var(--ui);padding:10px;border-radius:12px;margin-top:6px}
.functional .sh-mobile .sh-scroll .shared-comment-form .shared-form-actions{margin-top:9px}
.functional .sh-mobile .sh-scroll .sh-detail-more>.shared-text{width:100%;min-height:44px;padding:10px;margin-bottom:12px;border:1px solid var(--line);border-radius:11px;background:var(--bg);color:var(--t2);text-align:center}


/* ---- task-search.css ---- */
/* Цвета берутся из действующей темы, отдельная палитра для десктопа не нужна. */
.workspace-rail{background:var(--bg);padding:6px 20px;border-bottom:1px solid var(--line)}
.workspace-search{display:flex;align-items:center;gap:9px;color:var(--t2);font-size:12px;min-height:32px;width:100%}
.workspace-search span{font-size:24px;line-height:1}.workspace-search kbd{margin-left:auto;font-size:10px;opacity:.7}
.workspace-brand,.workspace-nav,.workspace-foot,.workspace-context{display:none}
.workspace-rail{order:-1}
.ws-dialog{color:var(--t1);background:var(--bg);border:1px solid var(--line);border-radius:28px;padding:26px;width:min(800px,calc(100vw - 24px));max-height:90dvh;box-shadow:0 24px 100px #0004;overflow:auto}
.ws-dialog::backdrop{background:var(--scrim);backdrop-filter:blur(5px)}
.ws-heading{display:flex;gap:20px;align-items:start;justify-content:space-between}.ws-heading h2{font-size:25px;letter-spacing:-.04em;margin:8px 0 24px}.ws-heading>button{font-size:28px;width:40px;height:40px;text-align:center;flex:none}
.workspace-eyebrow{font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--t2)}
.ws-form label{display:flex;flex-direction:column;gap:6px;font-size:11px;color:var(--t2)}
.ws-form input,.ws-form select{width:100%;min-width:0;min-height:44px;background:var(--surface);color:var(--t1);border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:13px}
.ws-query input{font-size:16px}.ws-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.ws-dates{display:flex;gap:12px;margin-bottom:16px}.ws-dates[hidden]{display:none}.ws-dates label{flex:1}
.ws-save{display:flex;gap:12px;align-items:end}.ws-save label{flex:1}.ws-save button{min-height:44px;background:var(--t1);color:var(--on-t1);border-radius:12px;padding:10px 16px;font-size:12px}
.ws-saved{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}.ws-saved-label{flex-basis:100%;font-size:11px;color:var(--t2)}.ws-saved-label small{margin-left:8px}.ws-saved-item{display:flex;border:1px solid var(--line);border-radius:10px;max-width:100%}.ws-saved-item button{padding:8px 10px;font-size:12px;overflow-wrap:anywhere}
.ws-count{font-size:12px;color:var(--t2);margin:22px 0 10px}.ws-result{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:12px 0}.ws-check{width:30px;height:30px;border:1px solid var(--line-btn);border-radius:10px;text-align:center;flex:none}.ws-check.checked{background:var(--green);color:var(--on-acc)}.ws-result-open{display:flex;flex-direction:column;gap:5px;flex:1;min-width:0;padding:5px;overflow-wrap:anywhere}.ws-result-open b{font-size:14px}.ws-result-open span,.ws-result-open small,.ws-hint{font-size:11px;line-height:1.5;color:var(--t2)}
.ws-dialog :focus-visible,.workspace-rail :focus-visible,.workspace-context :focus-visible{outline:2px solid var(--green);outline-offset:3px}
@media(max-width:540px){.ws-dialog{padding:20px;border-radius:22px}.ws-heading h2{font-size:22px}.ws-controls{grid-template-columns:1fr 1fr}.ws-controls label:last-child{grid-column:1/-1}.ws-save{flex-direction:column;align-items:stretch}.ws-save input{font-size:16px}.workspace-search kbd{display:none}}

.day-tools{display:flex;align-items:center;gap:12px}.day-tools .focus-entry{flex:1;min-width:0}.day-tools .focus-entry em{display:none}.task-search-entry{flex:none;padding:8px 10px;border:1px solid var(--line);border-radius:10px;font-size:11px;color:var(--t2);margin-top:8px}

/* поиск по-простому: одно поле, результаты сразу под ним, фильтры свёрнуты (правка владельца 9 октября 2026) */
.ws-dialog{padding:18px;border-radius:22px}
.ws-heading{align-items:center;margin-bottom:12px}.ws-heading h2{font:650 20px/1.2 var(--ui);letter-spacing:-.02em;margin:0}
.ws-heading>button{width:40px;height:40px;border:1px solid var(--line);border-radius:12px;font-size:22px;background:var(--surface)}
.ws-form label.ws-query{position:relative;flex-direction:row;align-items:center}
.ws-query-ic{position:absolute;left:14px;display:grid;color:var(--t3);pointer-events:none}.ws-query-ic svg{width:20px;height:20px}
.ws-query input{min-height:52px;padding-left:44px;border-radius:16px;font-size:16px}
.ws-more{margin-top:10px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.ws-more>summary{list-style:none;display:flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;font:600 13px/1 var(--ui);color:var(--t1);cursor:pointer}
.ws-more>summary::-webkit-details-marker{display:none}
.ws-more-n:not(:empty){display:grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:99px;background:var(--green);color:var(--on-acc);font:700 11px/1 var(--ui);font-style:normal}
.ws-more>summary i{margin-left:auto;width:8px;height:8px;border-right:1.7px solid var(--t3);border-bottom:1.7px solid var(--t3);transform:rotate(45deg) translateY(-2px);transition:transform .15s}
.ws-more[open]>summary i{transform:rotate(225deg) translateY(-2px)}
.ws-more[open]{padding:0 14px 14px}.ws-more[open]>summary{padding:0}
.ws-more .ws-controls{margin:4px 0 12px}.ws-meta-controls{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.ws-more .ws-saved{margin-top:14px}
.ws-count{margin:16px 2px 6px;font-size:13px}
.ws-result{gap:12px;padding:10px 0}.ws-result-open{text-align:left;gap:3px}.ws-result-open b{font:650 15px/1.3 var(--ui)}.ws-result-open span{font-size:12.5px}.ws-result-open small{font-size:12px}
.ws-edit-meta{flex:none;min-height:34px;padding:0 10px;border:1px solid var(--line);border-radius:99px;font:600 11.5px/1 var(--ui);color:var(--t2)}


/* ---- templates.css ---- */
/* Экран сценариев: каталог, настройка, предпросмотр, результат. */
.template-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.template-header>div{min-width:0}.template-header h1{margin:0;overflow-wrap:anywhere}.template-header .sub{display:block;margin-top:8px;line-height:1.5}
.template-header>button{font-size:26px;flex:none;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;text-align:center;color:var(--t2)}
.template-scroll{padding:20px 18px!important;min-width:0}.template-intro{font:500 .8125rem/1.6 var(--ui);color:var(--t2);margin:0 0 18px;overflow-wrap:anywhere}
.template-card{position:relative;padding:22px;border:1px solid var(--line);border-radius:24px;background:var(--surface);margin-bottom:14px;min-width:0}
.template-cover{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-4px 0 12px}.template-art{display:block;flex:none;width:96px;height:76px;color:var(--t2)}.template-art svg{width:100%;height:100%;display:block}
.template-kicker{font:500 .6875rem/1.5 var(--ui);color:var(--t2);overflow-wrap:anywhere}.template-cover .template-kicker{text-align:right;max-width:12ch}
.template-card h2{font:600 1.5rem/1.25 var(--ui);letter-spacing:-.04em;color:var(--t1);margin:8px 0 10px;overflow-wrap:anywhere}.template-card p{font:500 .8125rem/1.6 var(--ui);color:var(--t2);margin:10px 0}
.template-step-strip{display:flex;flex-wrap:wrap;gap:7px;margin:14px 0}.template-step-strip span{display:flex;align-items:center;gap:5px;font:500 .6875rem/1.4 var(--ui);color:var(--t2)}.template-step-strip svg{width:17px;height:17px;color:var(--green)}
.template-card button,.template-footer button{width:100%;min-height:48px;border-radius:14px;padding:12px;text-align:center;border:1px solid var(--line);background:var(--green-bg);color:var(--t1);font:650 .8125rem/1.4 var(--ui);margin-top:12px;white-space:normal;overflow-wrap:anywhere}
.template-card button+button{background:transparent;color:var(--t2)}.template-top{margin-bottom:18px}.template-top button{font:600 .8125rem/1.5 var(--ui);color:var(--green);min-height:44px}
.template-scroll label{display:flex;flex-direction:column;gap:8px;font:500 .75rem/1.5 var(--ui);color:var(--t2);margin-bottom:14px;min-width:0}
.template-scroll input,.template-scroll select{width:100%;min-width:0;max-width:100%;border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--surface);color:var(--t1);font:500 .875rem/1.4 var(--ui);min-height:48px;color-scheme:light}
html:is([data-theme="dark"],[data-theme="bwdark"],[data-theme="obsidian"],[data-theme="cobalt"],[data-theme="copper"]) .template-scroll :is(input[type="date"],input[type="time"],select){color-scheme:dark}
.template-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.template-item{margin:20px 0;padding:16px 14px 4px;border:1px solid var(--line);border-radius:18px;background:var(--surface);min-width:0}
.template-scroll .template-check{display:flex;flex-direction:row;align-items:center;gap:8px;margin:0;font:600 .8125rem/1.4 var(--ui);color:var(--t1)}.template-check input{width:20px;height:20px;min-height:20px;padding:0;accent-color:var(--green)}.template-check svg{width:20px;height:20px;color:var(--green);flex:none}
.template-preview-row{display:flex;align-items:flex-start;gap:12px;padding:16px 0;border-bottom:1px solid var(--line)}.template-preview-row>.template-step-icon{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:10px;color:var(--green);background:var(--green-bg)}.template-step-icon svg{width:19px;height:19px}
.template-preview-row>div{min-width:0;flex:1}.template-preview-row time{font:500 .6875rem/1.5 var(--ui);color:var(--t2);display:block;margin-bottom:4px}.template-preview-row b{font:600 .875rem/1.4 var(--ui);color:var(--t1);overflow-wrap:anywhere}.template-preview-row small{display:block;font:500 .75rem/1.5 var(--ui);color:var(--t2);margin-top:6px}
.template-error{border:1px solid var(--danger);background:var(--danger-bg);padding:14px;border-radius:14px;color:var(--danger);font:500 .8125rem/1.5 var(--ui)}.template-success{text-align:center}.template-success .template-art{margin:0 auto 12px}
.template-footer button:not([data-template="preview"]){background:transparent;color:var(--t2)}.template-catalog-undo{border:1px solid var(--line);padding:12px;border-radius:12px;font:500 .8125rem/1.5 var(--ui);color:var(--t2)}
html.text-big .template-pair{grid-template-columns:1fr}html.text-big .template-card{padding:18px}html.text-big .template-cover .template-kicker{max-width:14ch}


/* ---- task-meta.css ---- */
.meta-header{display:flex;align-items:center;justify-content:space-between}.meta-header>button{font-size:26px;width:40px;height:40px;text-align:center}.meta-scroll{padding:20px!important}.meta-scroll label{display:flex;flex-direction:column;gap:7px;font-size:11px;color:var(--t2);margin-bottom:16px}.meta-scroll input,.meta-scroll select{width:100%;min-height:44px;border:1px solid var(--line-btn);border-radius:12px;padding:11px;background:var(--surface);color:var(--t1);font-size:14px}.meta-hint{font-size:12px;line-height:1.7;color:var(--t2)}.meta-item{width:100%;padding:18px;border:1px solid var(--line);border-radius:20px;margin:10px 0;background:var(--surface)}.meta-item>b{font-size:14px;font-weight:600;display:block;overflow-wrap:anywhere}.meta-item>small{font-size:11px;color:var(--t2);display:block;margin-top:7px}.meta-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.meta-chips span{font-size:10px;line-height:1.6;padding:3px 8px;border-radius:8px;background:var(--fill,var(--bg));color:var(--t2);overflow-wrap:anywhere}.meta-chips .meta-priority{background:var(--green-bg);color:var(--green-tx)}.task-meta-badges{width:100%;padding:6px 0 0;text-align:left;flex-basis:100%}.meta-editor h2{font-size:23px;line-height:1.25;font-weight:600;letter-spacing:-.04em;overflow-wrap:anywhere}.meta-save{width:100%;min-height:46px;border-radius:13px;background:var(--green);color:var(--on-acc);text-align:center;font-size:13px}.meta-clear{display:block;margin-top:16px;font-size:12px;color:var(--t2);padding:6px 0}.meta-error{color:var(--danger);font-size:12px}.ws-meta-controls{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.ws-edit-meta{font-size:10px;min-width:44px;padding:8px;color:var(--t2)}

.meta-wrap{flex-wrap:wrap}.task-meta-badges span{display:inline-block;overflow:visible;text-decoration:none;white-space:normal}
.meta-chips span{max-width:100%}

/* метки в карточке дня: своя строка под подписью, значок дела держится у названия, а не съезжает к середине выросшей карточки */
.evtext .task-meta-badges{display:flex;flex-wrap:wrap;gap:5px;width:auto;margin-top:8px;padding:0}
.evtext .task-meta-badges span{display:inline-block;margin-top:0;overflow:visible;font:500 10px/1.6 var(--ui);color:var(--t2);-webkit-line-clamp:unset}
.evtext .task-meta-badges .meta-priority{color:var(--green-tx)}
:is(.evcard,.dosecard):has(.task-meta-badges){align-items:flex-start}
/* .has-meta ставит js/task-meta.js вместе с метками; прежнее :has(.task-meta-badges) перед «>» заставляло браузер при любой вставке узла пересчитывать стили всего экрана (замер сборки 96) */
:is(.evcard,.dosecard).has-meta>:is(.icon-btn,.chk,.playbtn,[data-act=toggle]){align-self:center}

/* ===== метки и видео в карточке дела: дизайн GPT от 9 октября 2026 (пакет «Ритуал и метки — дизайн», вариант видео №5) ===== */
/* Two ritual actions and a stable two-row task card. Ordinary themes. */
.functional .prep-actions{display:grid;gap:10px;margin-top:4px}
.functional .prep-actions :is(.prep-skip,.prep-add){display:flex;align-items:center;justify-content:center;gap:12px;width:100%;margin:0;min-height:52px;padding:14px 16px;border:1px solid var(--line-btn);border-radius:15px;font:500 .875rem/1.45 var(--ui);color:var(--t1);text-align:center;overflow-wrap:anywhere}
.functional .prep-actions .prep-skip{background:var(--green);border-color:var(--green);color:var(--on-acc)}
.functional .prep-actions .prep-add{background:var(--surface);color:var(--t1)}
.functional .prep-actions :is(.prep-skip,.prep-add)>span{min-width:0}.functional .prep-actions svg{width:18px;height:18px;flex:none}
.functional .prep-step>.prep-go{min-height:52px;border-radius:15px;font-size:.875rem;padding:14px 16px}
.functional :is(.evcard,.dosecard).pm-card{display:grid;grid-template-columns:34px minmax(0,1fr) 88px;align-items:center;gap:6px;padding:14px;flex-wrap:unset}
.functional .pm-card>.evbadge{grid-column:1;grid-row:1;align-self:center;width:34px;height:34px;margin:0}
.functional .pm-card>.card-copy{grid-column:2;grid-row:1;display:flex;flex-direction:column;gap:4px;align-self:center;min-width:0}
.functional .pm-card .card-copy>.evtext{min-width:0;flex:none}.functional .pm-card .evtext b{font-size:.875rem;line-height:1.4}.functional .pm-card .evtext>span{font-size:.75rem;line-height:1.5;overflow-wrap:anywhere}
.functional .pm-card .card-copy>.card-tags{margin:0;padding:0;min-width:0;width:100%}
.functional .card-tags{display:block;text-align:left}
.functional .card-tag-list{display:flex;flex-wrap:wrap;align-items:flex-start;gap:4px;min-width:0;width:100%}
.functional .card-tags .card-tag{display:flex;align-items:flex-start;min-width:44px;min-height:32px;max-width:100%;padding:0;border:0;border-radius:8px;background:transparent;color:var(--t2);white-space:normal;overflow-wrap:anywhere;text-align:left}
.functional .card-tag-label{display:block;max-width:100%;padding:3px 8px;border:1px solid transparent;border-radius:8px;background:var(--fill,var(--bg2));background:color-mix(in srgb,var(--fill,var(--bg2)) 72%,transparent);font:500 .6875rem/1.5 var(--ui);color:inherit;overflow-wrap:anywhere}
.functional .pm-card .card-tag-label{display:block;margin:0;font:500 .6875rem/1.5 var(--ui);overflow:visible;-webkit-line-clamp:unset}
.functional .card-tag-toggle{display:flex;align-items:flex-start;justify-content:center;flex:none;min-width:44px;min-height:32px;padding:4px 3px 0;border-radius:8px;color:var(--t2);font:500 .6875rem/1.5 var(--ui);text-align:center}
.functional .card-tag[hidden]{display:none!important}.functional .card-tag.meta-priority .card-tag-label{background:var(--green-bg);color:var(--green-tx)}
.functional .card-tag.meta-match .card-tag-label,.functional .meta-chips span.meta-match{background:var(--green-bg);color:var(--green-tx);border:1px solid var(--green);border-color:color-mix(in srgb,var(--green) 38%,transparent);font-weight:600}
.functional .card-tags :is(button):focus-visible{outline:2px solid var(--green);outline-offset:2px}
/* Approved option 05: the video is a material attached below the task. */
.functional .pm-card>.card-controls{grid-column:3;grid-row:1;display:flex;flex-direction:row;align-items:center;gap:0;align-self:center;width:88px}
.functional .pm-card>.card-controls>button{position:relative;flex:none;display:grid;place-items:center;width:44px;min-width:44px;height:44px;min-height:44px;margin:0;padding:0;border-radius:12px}
.functional .pm-card>.card-controls>.icon-btn{border:1px solid var(--line-soft);text-align:center}
.functional .pm-card.pm-video>.card-controls>.icon-btn{border:0;background:transparent}
.functional .pm-card>.card-controls>.chk::before{left:10px;top:10px}
.functional .pm-card>.card-video-footer{grid-column:1/-1;grid-row:2;border-top:1px solid var(--line-soft);padding-top:8px;margin-top:4px;min-width:0}
.functional .pm-card>.card-video-footer>.playbtn{display:flex;align-items:center;justify-content:flex-start;gap:6px;width:100%;min-width:44px;height:auto;min-height:44px;margin:0;padding:8px 6px;border:0;border-radius:8px;background:transparent;color:var(--green-tx)}
.functional .card-video-footer>.playbtn svg{width:16px;height:16px;flex:none}.functional .card-video-label{font:500 .75rem/1.5 var(--ui);white-space:normal;overflow-wrap:anywhere}
.functional .card-video-footer .card-video-count{position:static;margin-left:auto;font:500 .625rem/1.5 var(--ui);color:var(--t2)}
@media(max-width:350px){.functional :is(.evcard,.dosecard).pm-card{gap:6px;padding:12px;grid-template-columns:30px minmax(0,1fr) 88px}.functional .pm-card>.evbadge{width:30px;height:30px}}

/* метки в строке выполненного дела: стоят под названием, вплотную, строка не раздувается (правка владельца 9 октября 2026) */
.donerow.meta-wrap{display:grid;grid-template-columns:auto auto minmax(0,1fr) max-content;align-items:center;align-content:center;row-gap:3px}
.donerow.meta-wrap>.task-meta-badges{grid-column:3/-1;grid-row:2;justify-self:start;display:flex;flex-wrap:wrap;gap:5px;width:auto;min-height:0;margin:0;padding:0 0 2px}
.donerow.meta-wrap>.task-meta-badges span{font:500 10px/1.5 var(--ui);padding:2px 8px;border-radius:7px}

.donerow.meta-wrap>em{white-space:nowrap;overflow:visible;text-overflow:clip;justify-self:end;max-width:none}


/* ---- planner.css ---- */
.week-header,.stats-header{display:flex;align-items:center;justify-content:space-between}.week-header>button,.stats-header>button{font-size:26px;min-width:40px;min-height:40px;text-align:center}.week-scroll,.stats-scroll{padding:20px!important}.week-navigation{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.week-navigation b{font-size:12px;font-weight:500;color:var(--t2)}.week-navigation button{width:34px;height:34px;border:1px solid var(--line);border-radius:50%;font-size:20px;text-align:center}.week-rail{display:flex;gap:4px;margin-bottom:18px}.week-rail button{flex:1;min-width:0;min-height:72px;text-align:center;border:1px solid var(--line);border-radius:15px;background:var(--surface)}.week-rail button.on{background:var(--green-bg);color:var(--green-tx);border-color:var(--green)}.week-rail span,.week-rail small{font-size:9px;display:block;color:var(--t2)}.week-rail b{display:block;font-size:17px;font-weight:500;margin:5px 0}.week-views{display:flex;gap:5px;margin-bottom:20px;padding:4px;background:var(--fill,var(--line));border-radius:13px}.week-views button{flex:1;min-height:36px;font-size:10px;text-align:center;border-radius:9px;color:var(--t2)}.week-views button.on{background:var(--surface);color:var(--t1)}.week-load{display:flex;gap:12px;justify-content:space-between;font-size:11px;color:var(--t2);margin:20px 0}.week-load b{font-weight:500}.week-task{display:flex;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid var(--line)}.week-time{font-size:13px;flex:none;font-variant-numeric:tabular-nums}.week-time small{display:block;font-size:9px;color:var(--t2);margin-top:5px}.week-task-body{flex:1;min-width:0}.week-task-body>b{display:block;font-size:13px;line-height:1.5;font-weight:600;overflow-wrap:anywhere}.week-task-actions{display:flex;flex-direction:column;gap:5px;flex:none}.week-task-actions button{min-height:30px;text-align:center;padding:4px 8px;border:1px solid var(--line);border-radius:9px;font-size:9px;color:var(--t2)}.week-complete{font-size:10px;color:var(--green-tx)}.week-summary{padding:18px;border:1px solid var(--line);background:var(--surface);border-radius:20px;margin:12px 0}.week-summary button{width:100%}.week-summary b{font-size:13px;display:block}.week-summary small{font-size:10px;color:var(--t2);display:block;margin-top:7px}.week-summary p,.week-muted{font-size:11px;line-height:1.7;color:var(--t2)}.week-priority h2{font-size:15px;font-weight:600;margin:25px 0 6px}.week-priority h2 small{color:var(--t2);margin-left:8px;font-size:11px}.week-empty{padding:28px 0;font-size:13px;line-height:1.8;color:var(--t2)}.week-tools{display:flex;flex-wrap:wrap;gap:8px;margin:24px 0 12px}.week-tools button,.week-undo{border:1px solid var(--line);border-radius:11px;padding:10px;font-size:11px}.week-move{padding:22px;border:1px solid var(--line);border-radius:25px;background:var(--surface)}.week-move h2{font-size:23px;font-weight:600;letter-spacing:-.04em;line-height:1.3;overflow-wrap:anywhere}.week-move label,.stats-scroll label{display:flex;flex-direction:column;gap:7px;font-size:11px;color:var(--t2);margin:16px 0}.week-move input{width:100%;min-width:0;border:1px solid var(--line-btn);border-radius:12px;padding:11px;font-size:14px;color:var(--t1);background:var(--bg)}.week-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.week-primary,.week-secondary{display:block;min-height:45px;width:100%;padding:11px;border-radius:13px;text-align:center;font-size:12px;margin-top:14px}.week-primary{background:var(--green);color:var(--on-acc)}.week-secondary{border:1px solid var(--line);color:var(--t2)}.week-preview{display:flex;flex-direction:column;gap:7px;font-size:13px;margin:20px 0}.week-conflicts{padding:15px;border:1px solid var(--line-btn);border-radius:16px;background:var(--bg);font-size:12px}.week-conflicts p{font-size:11px;color:var(--t2)}.week-move .week-check{flex-direction:row;align-items:center;gap:8px}.week-check input{width:18px;height:18px;accent-color:var(--green)}.week-error{color:var(--danger);font-size:12px}.stats-total{margin:24px 0;padding:26px 22px;border:1px solid var(--line);border-radius:26px;background:var(--surface)}.stats-total span{font-size:11px;color:var(--t2)}.stats-total strong{display:block;font-size:34px;letter-spacing:-.04em;font-weight:500;margin:10px 0}.stats-total p{font-size:11px;color:var(--t2)}.stats-numbers{display:flex;gap:15px}.stats-numbers>div{flex:1;background:var(--surface);border-radius:18px;border:1px solid var(--line);padding:18px}.stats-numbers b{font-size:22px;font-weight:500;display:block}.stats-numbers span{font-size:10px;color:var(--t2)}.stats-chart{display:flex;gap:4px;height:140px;align-items:end;padding:22px 0 10px;border-bottom:1px solid var(--line);margin-bottom:28px}.stats-day{flex:1;min-width:0;text-align:center}.stats-day i{display:block;width:100%;max-width:25px;border-radius:5px 5px 0 0;background:var(--green);margin:auto}.stats-day small{display:block;font-size:9px;color:var(--t2);min-height:16px;margin-top:6px}.stats-scroll h2{font-size:15px;font-weight:600}.stats-task{display:flex;gap:12px;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--line);font-size:12px}.stats-task b{font-weight:500;overflow-wrap:anywhere;min-width:0}.stats-task span{color:var(--t2);flex:none}
.week-timeline{position:relative;margin:22px 0;min-width:0}.week-hour{position:absolute;left:0;right:0;border-top:1px solid var(--line);height:1px}.week-hour span{position:relative;top:-8px;display:inline-block;width:46px;background:var(--bg);font-size:9px;color:var(--t2)}.week-slot{position:absolute;left:calc(48px + (100% - 48px)/var(--cols)*var(--col));width:calc((100% - 48px)/var(--cols) - 4px);border:1px solid var(--line-btn);border-radius:12px;padding:9px;background:var(--green-bg);color:var(--green-tx);overflow:hidden;text-align:left}.week-slot b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:11px;line-height:1.3;font-weight:600;overflow-wrap:anywhere}.week-slot small{display:block;font-size:9px;margin-top:5px;opacity:.8}.week-task-actions button{min-height:40px}.week-task-actions [data-week="move"]{min-height:44px}

/* «Ритм недели»: день — карточкой, пустой день — строкой с кнопкой сценария, действия недели — двумя равными кнопками */
.week-daycard{border:1px solid var(--line);border-radius:18px;background:var(--surface);padding:6px 16px 10px;margin-top:14px}
.week-daycard .week-load{margin:0;padding:12px 0 10px;border-bottom:1px solid var(--line-soft,var(--line))}
.week-daycard .week-empty{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0 6px;text-align:left}
.week-daycard .week-empty b{font:600 14px/1.3 var(--ui);color:var(--t2)}
.week-scn{flex:none;min-height:38px;padding:0 14px;border:1px solid var(--line-btn,var(--line));border-radius:99px;font:600 13px/1 var(--ui);color:var(--green-tx,var(--green));background:transparent}
.week-tools{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}.week-tools button{min-height:44px;border:1px solid var(--line-btn,var(--line));border-radius:14px;font:600 13px/1.2 var(--ui);color:var(--t1);background:var(--surface);text-align:center;padding:8px 10px}

/* «По часам»: дело можно взять долгим нажатием и переставить на другое время */
.week-slot{touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;padding:4px 10px;display:flex;align-items:center;gap:8px}
/* значок дела слева, название и время столбиком справа с общим левым краем (29.10) */
.week-slot-t{min-width:0;flex:1;display:flex;flex-direction:column;justify-content:center;gap:1px}.week-slot-ic{width:20px;height:20px;flex:none}.week-slot-ic .ti-emo{font-size:18px}.week-slot-ic img{width:100%;height:100%}
.week-slot b{display:block;flex:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:12px;line-height:1.25}.week-slot small{flex:none;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25}
.week-slot.dragging{z-index:6;box-shadow:0 14px 34px -10px rgba(0,0,0,.5);border-color:var(--green);transition:none}
.week-slot.dragging small{font-weight:700;color:var(--t1)}
.week-drop{position:absolute;left:48px;right:0;height:0;border-top:2px dashed var(--green);pointer-events:none;z-index:5}

/* у пунктира при перетаскивании — время начала, крупно, на оси часов */
.week-drop::before{content:attr(data-time);position:absolute;left:-48px;top:-11px;width:44px;padding:3px 0;border-radius:8px;background:var(--green);color:var(--on-acc);font:700 11px/1.3 var(--ui);text-align:center}


/* ---- choice-ui.css ---- */
.choice-trigger{width:100%;min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border:1px solid var(--line-btn);border-radius:13px;background:var(--surface);color:var(--t1);font:inherit;font-size:13px;text-align:left}.choice-trigger span{font-size:18px;color:var(--t2)}.choice-trigger:disabled{opacity:.5}.choice-trigger:focus-visible{outline:2px solid var(--green);outline-offset:3px}.choice-dialog{position:fixed;margin:0;max-height:min(80dvh,560px);padding:10px;border:1px solid var(--line);border-radius:22px;background:var(--surface);color:var(--t1);box-shadow:0 20px 65px #0003;overflow:auto}.choice-dialog::backdrop{background:var(--scrim);backdrop-filter:blur(3px)}.choice-heading{display:flex;justify-content:space-between;align-items:center;padding:6px 10px 12px;gap:16px;color:var(--t2);font-size:11px}.choice-heading button{border:0;background:transparent;color:var(--t2);font-size:23px;min-width:32px;min-height:32px;text-align:center}.choice-options{display:grid;gap:4px}.choice-option{position:relative;min-height:45px;border:0;border-radius:13px;padding:11px 36px 11px 13px;background:transparent;color:var(--t1);font:inherit;font-size:14px;text-align:left}.choice-option[aria-selected=true]{background:var(--green-bg);color:var(--green-tx);font-weight:600}.choice-option[aria-selected=true]::after{content:'✓';position:absolute;right:14px}.choice-option:hover,.choice-option:focus-visible{background:var(--fill,var(--green-bg));outline:1px solid var(--line-btn)}.choice-option:disabled{opacity:.4}
select[data-choice][hidden]{display:none!important}
.choice-time{padding:12px}.choice-time>div{display:flex;align-items:center;justify-content:center;gap:16px}.choice-time label{font-size:11px;color:var(--t2);display:grid;gap:8px;flex:1}.choice-time input{width:100%;min-width:0;background:var(--bg);color:var(--t1);border:1px solid var(--line);border-radius:13px;padding:14px;font-size:25px;text-align:center}.choice-confirm,.choice-today{width:100%;min-height:44px;border:0;border-radius:13px;background:var(--green);color:var(--on-acc);text-align:center;font-size:13px;margin-top:20px}.choice-error{font-size:11px;color:var(--danger)}.choice-calendar{padding:4px 8px 10px}.choice-month{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.choice-month b{font-size:14px;font-weight:500;text-transform:capitalize}.choice-month button{min-width:38px;min-height:38px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--t1);font-size:20px;text-align:center}.choice-weekdays,.choice-dates{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.choice-weekdays span{text-align:center;font-size:10px;color:var(--t2);margin-bottom:10px}.choice-dates button{aspect-ratio:1;border:0;border-radius:11px;text-align:center;background:transparent;color:var(--t1);font-size:13px}.choice-dates button.on{background:var(--green);color:var(--on-acc)}.choice-dates button.muted{color:var(--t2);opacity:.5}.choice-dates button:hover,.choice-dates button:focus-visible{outline:1px solid var(--green);background:var(--green-bg);color:var(--green-tx)}
.choice-source{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;overflow:hidden!important;pointer-events:none!important;clip-path:inset(50%);padding:0!important;border:0!important;margin:0!important}

/* окно выбора стоит над системными кнопками телефона и не выше экрана */
.choice-dialog{max-height:min(80dvh,560px,calc(100dvh - 24px - var(--safe-bottom,0px)))}


/* ---- calendar-import.css ---- */
.calendar-import-header{display:flex;justify-content:space-between;align-items:center}.calendar-import-scroll{padding:22px!important}.calendar-import-hero,.calendar-import-card,.calendar-import-source{padding:24px;border:1px solid var(--line);border-radius:26px;background:var(--surface,var(--bg));margin-bottom:20px}.calendar-import-hero{background:linear-gradient(140deg,var(--green-bg),var(--surface,var(--bg)))}.calendar-kicker{text-transform:uppercase;letter-spacing:.13em;color:var(--t2);font-size:10px}.calendar-import-scroll h2{font-size:28px;line-height:1.17;letter-spacing:-.035em;font-weight:500;margin:18px 0}.calendar-import-scroll p{font-size:12px;line-height:1.8;color:var(--t2);margin:14px 0}.calendar-import-scroll h3{font-size:20px;font-weight:500;margin:12px 0}.calendar-primary,.calendar-secondary,.calendar-text{min-height:44px;border-radius:14px;font-size:12px;padding:12px 16px;color:var(--t1)}.calendar-primary{background:var(--green);color:var(--on-acc)}.calendar-secondary{background:var(--bg);border:1px solid var(--line-btn)}.calendar-text{color:var(--green-tx);padding:8px}.calendar-import-card label{font-size:12px;display:block;margin:19px 0;color:var(--t2)}.calendar-import-card input:not([type=checkbox]){display:block;width:100%;min-width:0;border:1px solid var(--line-btn);padding:13px;border-radius:14px;background:var(--bg);color:var(--t1);font-size:13px;margin-top:8px}.calendar-import-card input:disabled{opacity:.65}.calendar-import-card .calendar-file-picker{position:relative;border:1px dashed var(--line-btn);border-radius:16px;padding:18px;text-align:center;overflow-wrap:anywhere;background:var(--green-bg);color:var(--green-tx);cursor:pointer}.calendar-file-picker input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0;width:100%;height:100%}.calendar-file-picker:focus-within{outline:2px solid var(--green)}.calendar-import-pair{display:flex;gap:12px}.calendar-import-pair>label{min-width:0;flex:1}.calendar-import-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:18px}.calendar-hint{font-size:11px!important;color:var(--t2);line-height:1.8}.calendar-import-diff{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:18px;padding:16px;gap:8px;margin:24px 0;background:var(--green-bg)}.calendar-import-diff b{display:block;font-size:28px;font-weight:500;color:var(--green-tx)}.calendar-import-diff span{font-size:10px;color:var(--t2)}.calendar-import-preview{border-top:1px solid var(--line);margin:22px 0}.calendar-import-preview article{display:flex;flex-direction:column;gap:7px;padding:13px 0;border-bottom:1px solid var(--line);font-size:12px;overflow-wrap:anywhere}.calendar-import-preview time{font-size:10px;color:var(--t2)}.calendar-import-preview b{font-weight:500}.calendar-import-card .calendar-import-check{display:flex;gap:10px;align-items:flex-start;line-height:1.7}.calendar-import-check input{accent-color:var(--green);flex:none;margin-top:4px}.calendar-import-error{padding:15px;border:1px solid var(--danger);border-radius:16px;color:var(--danger)!important;overflow-wrap:anywhere}.calendar-import-warning{border-left:2px solid var(--green);padding-left:12px}.calendar-agenda{margin:22px 20px;border-top:1px solid var(--line);padding-top:17px}.calendar-agenda.compact{margin:25px 0}.calendar-agenda header{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px;color:var(--t2);letter-spacing:.02em}.calendar-agenda header button{font-size:11px;min-height:36px;color:var(--green-tx)}.calendar-agenda-row{display:flex;gap:15px;padding:16px 0;border-bottom:1px solid var(--line)}.calendar-agenda-row time{width:67px;flex:none;font-size:11px;color:var(--green-tx);line-height:1.7}.calendar-agenda-row>div{flex:1;min-width:0}.calendar-agenda-row b{display:block;font-size:13px;font-weight:500;line-height:1.6;overflow-wrap:anywhere}.calendar-agenda-row small{display:block;font-size:10px;color:var(--t2);line-height:1.8;margin-top:4px}.calendar-agenda-row details{font-size:11px;color:var(--t2);margin-top:8px}.calendar-agenda-row details p{white-space:pre-wrap;font-size:12px;line-height:1.8;overflow-wrap:anywhere}.calendar-agenda-row summary{cursor:pointer;min-height:28px}.calendar-import-scroll button:disabled{opacity:.6;cursor:default}
.calendar-import-card .choice-trigger{font-size:13px;border-radius:14px;padding:13px;margin-top:8px}.calendar-import-card select{font:inherit}


/* ---- calendar-priority.css ---- */
/* Calendar priorities: ordinary themes and shared layout. */
.functional .pc-view{padding-top:12px;color:var(--t1)}.pc-view svg,.pc-picker svg{width:22px;height:22px;display:block;flex:none}
.functional .pc-group{margin:0 0 18px}.functional .pc-group>header{display:flex;align-items:center;gap:12px;padding:0 2px 12px}.pc-group>header>div{flex:1;min-width:0}.functional .pc-group h3{font:600 1rem/1.4 var(--ui);margin:0}.functional .pc-group>header p{font:400 .75rem/1.5 var(--ui);color:var(--t2);margin:4px 0 0}.functional .pc-group-icon{display:grid;place-items:center;width:34px;height:34px;flex:none;color:var(--t2)}.functional .pc-group-high .pc-group-icon{color:var(--green-tx)}.functional .pc-count{display:grid;place-items:center;min-width:30px;height:30px;flex:none;background:var(--bg2);border-radius:10px;font:500 .875rem/1.4 var(--ui);color:var(--t2)}
.functional .pc-group-body{display:grid;gap:10px}.functional .pc-task{padding:16px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}.functional .pc-group-high .pc-task{border-color:var(--line-btn)}.functional .pc-task-main{display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:12px}.functional .pc-task-icon{width:34px;height:34px;border-radius:11px;background:var(--bg2);display:grid;place-items:center;color:var(--t2)}.functional .pc-task-icon.pc-high{color:var(--green-tx);background:var(--green-bg)}.functional .pc-task-copy{min-width:0}.functional .pc-task-copy h3{font:500 .9375rem/1.45 var(--ui);overflow-wrap:anywhere;margin:0 0 5px}.functional .pc-task-time{font:400 .75rem/1.5 var(--ui);color:var(--t2);margin:0}.functional .pc-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.functional .pc-tags span{font:400 .6875rem/1.5 var(--ui);padding:2px 5px;border-radius:6px;color:var(--t2);background:var(--bg2);overflow-wrap:anywhere;max-width:100%}
.functional .pc-task-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line-soft)}.functional .pc-task-actions button{display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:11px;background:transparent;color:var(--t2);font:500 .75rem/1.4 var(--ui);padding:10px 8px;min-height:44px;text-align:center;overflow-wrap:anywhere}.functional .pc-task-actions button:only-child{grid-column:1/-1}.functional .pc-task-actions .pc-priority-button{background:var(--bg2);color:var(--t1)}.pc-priority-button svg{width:16px;height:16px}.functional .pc-task-actions .pc-high{color:var(--green-tx);background:var(--green-bg);border-color:transparent}.functional .pc-group-empty{font:.75rem/1.6 var(--ui);margin:0;padding:16px;border:1px dashed var(--line);border-radius:16px;color:var(--t2)}.functional .pc-completed{margin-top:24px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.functional .pc-completed summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 2px;min-height:52px;font:500 .875rem/1.4 var(--ui);color:var(--t2);list-style:none;cursor:pointer}.pc-completed summary::-webkit-details-marker{display:none}.pc-completed summary>span{display:flex;align-items:center;gap:10px}.pc-completed summary>b{font-weight:500}.pc-completed summary>b::after{content:'⌄';margin-left:12px}.pc-completed[open] summary>b::after{content:'⌃'}.pc-completed>div{display:grid;gap:10px;padding:0 0 16px}.functional .pc-task-done .pc-task-copy h3{text-decoration:line-through;color:var(--t2)}.functional .pc-task-done .pc-task-icon{background:var(--green-bg);color:var(--green-tx)}
.functional .pc-day-link{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;margin-top:20px;padding:10px 14px;text-align:center;font:500 .8125rem/1.5 var(--ui);border:1px solid var(--line-btn);border-radius:14px;background:var(--surface);color:var(--t1)}.functional .pc-empty{padding:28px 20px;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:24px}.functional .pc-empty>span{display:grid;place-items:center;color:var(--green-tx);margin-bottom:16px}.pc-empty svg{width:44px;height:44px;stroke-width:1}.functional .pc-empty h3{font:500 1.125rem/1.4 var(--ui);margin:0 0 10px}.functional .pc-empty p{font:.8125rem/1.6 var(--ui);color:var(--t2);margin:0 0 20px}.functional .pc-empty button{width:100%;min-height:48px;border-radius:13px;background:var(--green);color:var(--on-acc);padding:12px;text-align:center;font:500 .8125rem/1.4 var(--ui)}.functional .pc-empty~.pc-day-link{display:none}
.functional .pc-dialog{padding:22px;max-width:390px;max-height:calc(100dvh - 40px);overflow-y:auto;border-radius:26px}.functional .pc-dialog>#dlg-t{font:600 1.25rem/1.4 var(--ui);letter-spacing:-.03em}.functional .pc-dialog>p{font:.8125rem/1.6 var(--ui);margin:8px 0 20px;overflow-wrap:anywhere}.functional .pc-picker fieldset{border:0;padding:0;margin:0 0 18px;min-width:0}.functional .pc-picker legend{font:500 .75rem/1.5 var(--ui);color:var(--t2);margin-bottom:10px}.functional .pc-choice-row{display:flex;align-items:center;gap:10px;min-height:70px;padding:12px;margin-bottom:8px;border:1px solid var(--line);border-radius:15px;background:var(--bg)}.functional .pc-choice-row:has(input:checked){border-color:var(--green);background:var(--green-bg)}.functional .pc-picker input[type=radio]{width:18px;height:18px;flex:none;padding:0;margin:0;accent-color:var(--green)}.functional .pc-option-icon{color:var(--t2);flex:none}.functional .pc-choice-row:has(input:checked) .pc-option-icon{color:var(--green-tx)}.pc-option-copy{flex:1;min-width:0;display:grid;gap:3px}.functional .pc-option-copy b{font:500 .875rem/1.5 var(--ui);color:var(--t1)}.functional .pc-option-copy small{font:.6875rem/1.5 var(--ui);color:var(--t2)}.functional .pc-scope label{display:flex;align-items:center;gap:10px;min-height:44px;font:.75rem/1.5 var(--ui);color:var(--t1);padding:8px 2px}.functional .pc-scope-note{font:.6875rem/1.6 var(--ui);color:var(--t2);margin:0}.functional .pc-dialog .dlg-btns button{font:500 .8125rem/1.4 var(--ui);min-height:48px;border-radius:12px;padding:12px 8px;display:flex;align-items:center;justify-content:center;text-align:center}.functional .pc-extra{margin-top:18px;color:var(--t2);border-top:1px solid var(--line);font:.75rem/1.5 var(--ui)}.functional .pc-extra>summary{cursor:pointer;padding:16px 0;min-height:44px}.functional .pc-extra .week-tools{display:grid;grid-template-columns:1fr 1fr;margin:0 0 16px}.functional .pc-extra .week-tools button{min-height:44px;font:.75rem/1.4 var(--ui);text-align:center}
/* Compact calendar view switch: all four names stay on one row. */
.functional .selected-day.cal-week>.week-views{display:grid;grid-template-columns:repeat(4,minmax(max-content,1fr));gap:2px;padding:2px;border-radius:10px;background:var(--bg2)}.functional .selected-day.cal-week>.week-views button{min-height:28px;padding:4px 2px;font:600 11.5px/1.2 var(--ui);color:var(--t2);border-radius:8px;text-align:center;white-space:nowrap}.functional .selected-day.cal-week>.week-views button.on{color:var(--green-tx);font-weight:600}
.functional .selected-day.cal-week .week-move{padding:20px}.functional .selected-day.cal-week .week-move h2{font:500 1.25rem/1.4 var(--ui)}.functional .selected-day.cal-week .week-move :is(label,p){font:.8125rem/1.6 var(--ui)}.functional .selected-day.cal-week .week-move :is(input,button){font-size:.875rem;min-height:44px}.functional .selected-day.cal-week .week-move .week-check input{min-height:18px}
@media(max-width:375px){.functional .pc-task{padding:14px}.functional .pc-dialog{padding:18px}.functional .pc-choice-row{padding:10px}.functional .pc-task-main{gap:10px}}


/* ---- calendar-priority-plus.css ---- */
/* Calendar priorities: Plus material layer. */
html[data-luxe] .functional :is(.pc-task,.pc-empty,.pc-dialog){background:var(--lx-surface);box-shadow:inset 0 1px 0 var(--lx-light);border-color:var(--line)}
html[data-luxe] .functional .pc-group-high .pc-task{border-color:var(--line-btn)}
html[data-luxe] .functional .pc-group-high .pc-group-icon{color:var(--lx-metal,var(--green-tx))}
html[data-luxe] .functional .pc-empty button,html[data-luxe] .functional .pc-dialog .dlg-btns .main{background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;border:1px solid transparent;color:var(--lx-button-ink);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .pc-day-link{background:var(--surface);border-color:var(--line);color:var(--t1)}
html[data-luxe] .functional .pc-dialog .dlg-btns button:not(.main){background:var(--surface);color:var(--t1)}
html[data-luxe] .functional .selected-day.cal-week>.week-views button.on{background:var(--green-bg);color:var(--green-tx);box-shadow:inset 0 0 0 1px var(--line)}


/* ---- assistant-offer.css ---- */
/* Assistant offer: layout and ordinary themes. */
.functional .of-main{display:flex;flex-direction:column;flex:1;min-height:0;background:var(--bg)}.functional .of-body{padding:0!important;color:var(--t1);min-width:0}.of-body svg{width:20px;height:20px;display:block;flex:none}.functional .of-scene{position:relative;margin:0;background:var(--green-bg);overflow:hidden}.of-scene>img{display:block;width:100%;height:190px;object-fit:cover;object-position:50% 40%}.functional .of-scene-label{position:absolute;right:14px;top:14px;display:flex;align-items:center;gap:6px;border:1px solid #ffffff55;border-radius:99px;padding:6px 10px;background:#fffdf1d9;color:#536237;font:500 .625rem/1.5 var(--ui);backdrop-filter:blur(10px)}.of-scene-label svg{width:14px;height:14px}.functional .of-copy{padding:22px 24px 18px;text-align:center;background:var(--surface);border-radius:26px 26px 0 0;margin-top:-16px;position:relative}.functional .of-copy h1{font:600 1.625rem/1.22 var(--ui);letter-spacing:-.04em;text-wrap:balance;overflow-wrap:anywhere;margin:0 0 12px}.functional .of-copy p{font:400 .875rem/1.6 var(--ui);color:var(--t2);margin:0;text-wrap:pretty}.functional .of-hero{background:var(--surface)}
.functional .of-plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 18px 14px;align-items:stretch}.functional .of-plan{padding:14px;border:1px solid var(--line-btn);border-radius:18px;background:var(--surface);color:var(--t1);text-align:left;display:flex;flex-direction:column;gap:9px;min-width:0}.functional .of-plan strong{font:600 1.25rem/1.3 var(--ui);letter-spacing:-.03em;overflow-wrap:anywhere}.functional .of-plan-note{font:400 .6875rem/1.5 var(--ui);color:var(--t2);overflow-wrap:anywhere}.functional .of-year-equivalent{font:.5625rem/1.4 var(--ui);color:var(--t2);overflow-wrap:anywhere}
.functional .of-benefits{padding:20px 22px;background:var(--surface);border-top:1px solid var(--line-soft);margin-top:18px}.functional .of-benefits h2{font:600 1rem/1.4 var(--ui);margin:0 0 20px;letter-spacing:-.025em}.functional .of-benefit{display:flex;align-items:flex-start;gap:12px;margin-bottom:20px}.functional .of-benefit:last-child{margin-bottom:0}.functional .of-benefit>span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--green-bg);color:var(--green-tx);flex:none}.functional .of-benefit>div{flex:1;min-width:0}.functional .of-benefit h3{font:500 .875rem/1.4 var(--ui);margin:0 0 5px;overflow-wrap:anywhere}.functional .of-benefit p{font:400 .75rem/1.6 var(--ui);color:var(--t2);margin:0;overflow-wrap:anywhere}
.functional .of-footer{flex:none;padding:14px 18px max(14px,var(--safe-bottom,0px));border-top:1px solid var(--line);background:var(--surface);display:block;box-shadow:0 -8px 24px -22px #26382955}.functional .of-primary{display:flex;align-items:center;justify-content:center;width:100%;min-height:52px;padding:12px 14px;border:1px solid var(--green);border-radius:16px;background:var(--green);color:var(--on-acc);font:600 .9375rem/1.4 var(--ui);text-align:center;white-space:normal;overflow-wrap:anywhere}.functional .of-footer>p{font:.625rem/1.5 var(--ui);text-align:center;color:var(--t2);margin:7px 0 0;overflow-wrap:anywhere}.functional .of-secondary{min-height:44px;padding:10px 14px;border:1px solid var(--line-btn);border-radius:12px;display:flex;align-items:center;justify-content:center;font:.8125rem/1.5 var(--ui);color:var(--t1);background:var(--surface);text-align:center}
.functional .of-extra-actions{display:grid;grid-template-columns:1fr;padding:0 18px 8px;gap:4px}.functional .of-extra-actions button,.functional .of-legal button{min-height:44px;font:.6875rem/1.5 var(--ui);padding:10px;text-align:center;color:var(--t2);border-radius:10px}.functional .of-legal{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line);padding:8px 10px 18px;margin-top:14px}.functional .of-account{padding:14px 18px;display:grid;gap:8px;margin:0 18px;border-radius:14px;border:1px solid var(--line);background:var(--bg2)}.functional .of-account p{font:.6875rem/1.6 var(--ui);margin:0;color:var(--t2)}.functional .of-account button{font:.75rem/1.5 var(--ui);min-height:44px;text-align:center;color:var(--green-tx)}.functional .of-status{padding:16px 18px;margin:0 18px 16px;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--t2)}.functional .of-status p{font:.8125rem/1.65 var(--ui);margin:0;overflow-wrap:anywhere}.functional .of-status button{width:100%;margin-top:12px}.functional .of-error{padding:14px 18px;margin:10px 18px;font:.75rem/1.65 var(--ui);border:1px solid var(--line);border-radius:14px;color:var(--t2);background:var(--bg2);overflow-wrap:anywhere}.functional .of-error{color:var(--danger)}.functional .of-plan:disabled,.functional .of-extra-actions button:disabled{opacity:.5;cursor:default}
.functional .of-privileges .of-benefit{position:relative;gap:14px}.functional .of-privileges .of-benefit:not(:last-child)::before{content:'';position:absolute;left:17px;top:35px;bottom:-20px;width:1px;background:linear-gradient(#cbb57e,#e4d8b9)}.functional .of-privileges .of-benefit>.of-gem{position:relative;z-index:1;width:35px;height:35px;border:1px solid #c8ad6b;color:#896529;background:linear-gradient(145deg,#fff8e3,#ead7aa);box-shadow:inset 0 1px 0 #ffffffcc}.functional .of-gem svg{width:22px;height:22px;color:#896529}.functional .of-payments{padding:18px 22px;border-top:1px solid var(--line);margin-top:10px;color:var(--t2)}.functional .of-payments h2{display:flex;align-items:center;gap:8px;margin:0 0 10px;font:500 .75rem/1.5 var(--ui);color:var(--t1)}.functional .of-payments h2 svg{width:17px;height:17px;color:var(--green-tx)}.functional .of-payments p{font:.6875rem/1.65 var(--ui);margin:8px 0 0;overflow-wrap:anywhere}
@media(max-width:375px){.functional .of-copy{padding:20px 18px 16px}.functional .of-copy h1{font-size:1.5rem}.functional .of-plan{padding:12px}.functional .of-plans{gap:8px;margin-left:14px;margin-right:14px}.functional .of-footer{padding-left:14px;padding-right:14px}}

/* выбор доступа прямо на вкладке «Помощник»: без верхней строки, знак вопроса — у «Условий подписки» внизу */
.functional .of-inline .of-help{display:inline-flex;align-items:center;gap:6px}
.functional .of-inline .of-help svg{width:18px;height:18px;flex:none}





/* ---- низ экрана подписки: карточка оплаты, строка ссылок ---- */
.functional .of-payments{margin:10px 18px 0;padding:16px 18px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.functional .of-payments h2{margin:0 0 6px;font:600 .8125rem/1.4 var(--ui)}
.functional .of-payments p{margin:6px 0 0}
.functional .of-extra-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:0 4px;padding:12px 12px 0}
.functional .of-extra-actions button{min-height:40px;padding:8px 10px;color:var(--t2)}
.functional .of-legal{border-top:0;margin-top:0;padding:0 10px 22px;gap:0 4px}
.functional .of-legal button{min-height:40px;padding:8px 10px}
.functional .of-account{margin:12px 18px 0}

/* на вкладке «Помощник» нижний отступ системных кнопок уже держит панель вкладок — второй раз его не добавляем */
.functional .of-inline .of-footer{padding-bottom:14px}

/* «Зарок Макс» — шаг 130: карточка второй подписки на экране подписки и закрываемая карточка в чате помощника
   (js/max-offer.js). Цвета — переменные приложения, поэтому карточки следуют теме. Пока магазин не отдаёт zarok_max,
   этих блоков на экранах нет. */
.functional .mx-card{margin:18px 18px 4px;padding:16px 16px 14px;border:1px solid var(--line-btn,var(--line));border-radius:18px;background:var(--surface);display:flex;flex-direction:column;gap:10px}
.functional .mx-head{display:flex;align-items:center;gap:12px}
/* место под значок ранга: 44 px; пока картинок рангов нет — свой знак в рамке */
.functional .mx-rank{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--green-bg);color:var(--green-tx,var(--green));border:1px solid var(--acc-ring,var(--line))}
.functional .mx-rank svg{width:24px;height:24px}
.functional .mx-title{min-width:0}
.functional .mx-title h2{margin:0;font:700 1.0625rem/1.25 var(--ui);letter-spacing:-.02em;color:var(--t1)}
.functional .mx-price{margin:2px 0 0;font:600 .875rem/1.3 var(--ui);color:var(--t2)}
.functional .mx-list{margin:2px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.functional .mx-list li{position:relative;padding-left:20px;font:500 .9375rem/1.35 var(--ui);color:var(--t1)}
.functional .mx-list li::before{content:"";position:absolute;left:2px;top:.5em;width:8px;height:8px;border-radius:50%;background:var(--green)}
.functional .mx-btn{min-height:48px;border-radius:14px;border:1px solid var(--green-tx,var(--green));background:transparent;color:var(--green-tx,var(--green));font:700 .9375rem/1.2 var(--ui);padding:10px 14px;margin-top:4px}
.functional .mx-btn:disabled,.functional .mx-link:disabled{opacity:.55}
.functional .mx-note{margin:0;font:500 .8125rem/1.45 var(--ui);color:var(--t2)}
.functional .mx-warn{color:var(--t1)}
.functional .mx-on{margin:2px 0 0;font:700 .9375rem/1.3 var(--ui);color:var(--green-tx,var(--green))}
.functional .mx-link{align-self:flex-start;min-height:44px;padding:0 2px;font:600 .875rem/1.3 var(--ui);color:var(--green-tx,var(--green));text-decoration:underline;text-underline-offset:3px;text-align:left}
.functional .mx-wait{margin:0;font:500 .8125rem/1.4 var(--ui);color:var(--t2)}
.functional .mx-error{margin:0;font:600 .8125rem/1.4 var(--ui);color:#a3261c}
html[data-theme="dark"] .functional .mx-error,html[data-theme$="-dark"] .functional .mx-error,html[data-theme="obsidian"] .functional .mx-error,html[data-theme="cobalt"] .functional .mx-error,html[data-theme="copper"] .functional .mx-error,html[data-theme="bwdark"] .functional .mx-error{color:#ffa79c}
/* карточка в чате помощника: одна строка, кнопка, крестик */
.functional .mx-chat{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 6px;align-items:start;margin:10px 0 4px;padding:10px 6px 12px 14px;border:1px solid var(--line-btn,var(--line));border-radius:16px;background:var(--surface)}
.functional .mx-chat p{grid-column:1;grid-row:1;min-width:0;margin:0;padding-top:9px;font:500 .875rem/1.4 var(--ui);color:var(--t1)}
.functional .mx-chat-go{grid-column:1;grid-row:2;justify-self:start;min-height:40px;padding:0 14px;margin-top:4px;border-radius:12px;border:1px solid var(--green-tx,var(--green));color:var(--green-tx,var(--green));font:700 .8125rem/1.2 var(--ui);background:transparent;white-space:nowrap}
.functional .mx-chat-x{grid-column:2;grid-row:1;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font:500 1.25rem/1 var(--ui);color:var(--t2)}
.functional .mx-quiet{margin:4px 0 0}
.functional .mx-quiet button{min-height:40px;padding:0 2px;font:600 .8125rem/1.3 var(--ui);color:var(--t2);text-decoration:underline;text-underline-offset:3px}


/* ===== Экраны подтверждения — шаг 135 (js/confirm-screens.js) ===== */
/* экран «Почти готово» (шаг 140): во весь экран, ниже окон подтверждения приложения; вид — макет «Экран подтверждения» */
.cf-layer{position:absolute;inset:0;z-index:58;background:var(--bg,#fbfaf8);color:var(--t1,#1b1a17);display:flex;justify-content:center;animation:cfIn .22s ease-out both}
.cf-layer.cf-away{display:none}
/* строки, кнопки и Зарок на панели — в теневом корне js/onb2-ui.js (onb2.css), с 20 октября 2026 */
@keyframes cfIn{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.cf-layer{animation:none}}
/* карточка «Оплата через Google Play»: текст подтверждения покупки и подсветка после первого нажатия */
.functional .of-payments{outline:none;scroll-margin:16px;transition:border-color .25s ease,box-shadow .25s ease}
.functional .of-payments.hot{border-color:var(--green);box-shadow:0 0 0 5px rgba(64,99,79,.22);box-shadow:0 0 0 5px color-mix(in srgb,var(--green) 24%,transparent)}
.functional .of-confirm{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.functional .of-payments .of-confirm p{color:var(--t1);font-weight:500}
.functional .of-confirm .inlink{appearance:none;-webkit-appearance:none;border:0;background:none;padding:0;font:inherit;color:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
/* согласие на ИИ: текст подтверждения над единственной кнопкой */
.functional .ai-gate-note{margin:0 2px 10px;font:500 .8125rem/1.5 var(--ui);color:var(--t1)}

/* ===== Значки рангов подписок — шаг 136 (js/max-offer.js rank) ===== */
.functional .mx-rank.mx-rank-img{padding:0;border:0;background:none;overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,.14)}
.functional .mx-rank.mx-rank-img img{display:block;width:100%;height:100%;object-fit:cover;border-radius:inherit}
.functional .of-plan .mx-rank{width:32px;height:32px;border-radius:10px;margin:0 0 8px}

/* ===== Шаг 138ж: новая композиция карточек подписки (Revision 2, Задания моделям/Codex — iOS/paywall-labels/fresh.css): две карточки Plus рядом, Max широкой ниже, пробный доступ полной строкой, надписи внутри карточек шрифтом интерфейса ===== */
/* Revision 2: an in-card wordmark and a readable price hierarchy. */
:root{--pw-gold:#805e24}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']){--pw-gold:#e4c58c}
/* ===== Шаг 145: карточки подписки по замечаниям владельца к сборке 75 (образец — ряд тарифов с бейджем скидки и лентой «ХИТ»).
   Ряд Plus: 7 дней (если есть) · 1 месяц · 1 год; при трёх карточках ряд листается вбок, третья выглядывает. В строке заголовка срок
   и рядом бейдж скидки; надпись Plus компактная; у выбранной рамка и галочка в правом верхнем углу; у месяца лента в правом нижнем.
   Цена подбирается под ширину карточки (js/assistant-offer.js fitOne): длинная валюта уходит на вторую строку меньшим кеглем. ===== */
:root{--pw-sale:#d4283c}
.functional .of-plan::before,.functional .of-plan::after,.onb-price::before,.onb-price::after{content:none!important;clip-path:none!important}
.functional .of-choice{margin:0 0 4px}
.functional .of-choice .of-plans{display:flex;gap:10px;margin:0 0 12px;padding:2px 20px 4px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:20px;scrollbar-width:none;position:relative;align-items:stretch}
.functional .of-choice .of-plans::-webkit-scrollbar{display:none}
.functional .of-choice .of-plans>.of-plan{flex:1 1 0;min-width:0;width:auto;max-width:none;scroll-snap-align:start}
.functional .of-choice .of-plans.of-row3>.of-plan{flex:0 0 calc((100% - 10px) / 2.3)}
.functional .of-choice .of-plan{display:flex;flex-direction:column;align-items:stretch;gap:0;position:relative;overflow:hidden;min-height:150px;padding:13px 13px 14px;border:1px solid var(--line-btn);border-radius:18px;background:var(--surface);color:var(--t1);box-shadow:none;text-align:left}
.functional .of-choice .of-plan.on{border-color:var(--pw-gold);box-shadow:inset 0 0 0 1px var(--pw-gold);background:color-mix(in srgb,var(--surface) 95%,var(--pw-gold) 5%)}
.functional .of-choice .of-plan>.of-tags{position:static;display:flex;align-items:center;gap:6px;min-height:0;width:auto;max-width:none;inset:auto;margin:0 0 3px;padding:0;border:0;background:none!important;transform:none;line-height:1.15}
.functional .of-choice .of-tag,.onb-tagline .of-tag{display:inline-flex;align-items:flex-start;margin:0;padding:0;min-height:0;border:0;border-radius:0;background:none!important;background-image:none!important;box-shadow:none;-webkit-text-fill-color:currentColor;color:var(--pw-gold);font:700 15px/1.15 var(--ui);font-style:normal;letter-spacing:-.03em;text-transform:none;white-space:nowrap}
.functional .of-choice .of-tag-plus::after,.onb-tagline .of-tag-plus::after{content:'+';font:400 11px/1 var(--ui);margin:1px 0 0 1px}
.functional .of-choice .of-plan-head{display:flex;align-items:center;gap:6px;min-width:0;padding-right:20px;margin:0 0 7px}
.functional .of-choice .of-term{font:600 14px/1.3 var(--ui);letter-spacing:-.01em;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.of-save{display:inline-flex;align-items:center;flex:none;padding:2px 6px;border-radius:7px;background:var(--pw-sale);color:#fff;-webkit-text-fill-color:#fff;font:700 11px/1.25 var(--ui);font-style:normal;letter-spacing:0;white-space:nowrap}
.functional .of-choice .of-price{display:block;width:100%;min-width:0;margin:0;font:700 28px/1.1 var(--ui);letter-spacing:-.045em;white-space:nowrap;color:var(--t1)}
.of-price .of-amt,.of-price .of-cur{white-space:nowrap}
:is(.functional .of-choice,.onb-price) .of-price.of-small .of-cur{font-size:.6em;font-weight:600;letter-spacing:0}
:is(.functional .of-choice,.onb-price) .of-price.of-wrap{display:flex;flex-direction:column;align-items:flex-start}
:is(.functional .of-choice,.onb-price) .of-price.of-wrap .of-cur{order:2;font-size:.5em;font-weight:600;letter-spacing:0;line-height:1.25;margin-top:1px;opacity:.85}
:is(.functional .of-choice,.onb-price) .of-price.of-break .of-amt{white-space:normal;overflow-wrap:anywhere}
.functional .of-choice .of-plan .of-plan-note{font:400 11px/1.4 var(--ui);color:var(--t2);margin:6px 0 0}
.functional .of-choice .of-plan .of-year-equivalent{font:500 11px/1.4 var(--ui);color:var(--t2);margin:2px 0 0;align-self:auto}
.functional .of-choice .of-plan-month .of-plan-note{padding-right:34px}
.functional .of-choice .of-check{position:absolute;top:9px;right:9px;width:20px;height:20px;border:0;border-radius:50%;display:none;place-items:center;background:var(--pw-gold);color:var(--surface)}
.functional .of-choice .of-plan.on .of-check{display:grid}
.functional .of-choice .of-check svg{width:12px;height:12px;stroke-width:2.4}
.of-ribbon{position:absolute;right:-26px;bottom:16px;width:100px;height:16px;transform:rotate(-45deg);background:var(--pw-gold);color:var(--surface);-webkit-text-fill-color:var(--surface);font:700 9px/16px var(--ui);font-style:normal;letter-spacing:.04em;text-transform:none;text-align:center;white-space:nowrap;pointer-events:none}

/* онбординг 7/7: те же надписи, бейдж и лента; цена подбирается под ширину */
.onb-plans{gap:11px;padding:0}
.onb-price,.onb-price.hit{display:grid;grid-template-rows:20px auto auto;gap:7px;position:relative;overflow:hidden;text-align:left;padding:15px 14px 16px;border:1px solid var(--line-btn,var(--line));border-radius:19px;background:var(--surface);box-shadow:none;min-width:0;min-height:125px;--pw-gold:#805e24}
.onb-price.hit{border-color:var(--pw-gold);box-shadow:inset 0 0 0 1px var(--pw-gold)}
.onb-price>.onb-tagline{grid-row:1;position:static;display:flex;align-items:center;gap:6px;min-width:0;margin:0;padding:0;border:0;background:none!important;font-style:normal}
.onb-price>b.of-price,.onb-price>b{grid-row:2;display:block;min-width:0;width:100%;font:700 26px/1.15 var(--ui);letter-spacing:-.05em;white-space:nowrap;margin:0!important}
.onb-price .of-price span{display:inline;margin:0;font:inherit;color:inherit;letter-spacing:inherit}
.onb-price>span{grid-row:3;font:400 11px/1.4 var(--ui);margin:0;color:var(--t2)}
.onb-price.hit>span{padding-right:30px}
@media(max-width:340px){.functional .of-choice .of-plans{padding-left:15px;padding-right:15px;gap:9px;scroll-padding-inline:15px}.functional .of-choice .of-plans.of-row3>.of-plan{flex-basis:calc((100% - 9px) / 2.25)}.functional .of-choice .of-plan{padding-left:11px;padding-right:11px}.onb-price{padding:13px}.onb-tagline .of-tag{font-size:14px}}
html.text-big .functional .of-choice .of-tag,html.text-big .onb-tagline .of-tag{font-size:17px}html.text-big .of-save{font-size:12px}html.text-big .functional .of-choice .of-term{font-size:15px}html.text-big .functional .of-choice .of-plan .of-plan-note,html.text-big .functional .of-choice .of-plan .of-year-equivalent{font-size:12px}


/* Годовой «Макс» и семейная подписка (js/max-offer.js, js/family.js): выбор срока и тарифа, ползунок размера семьи,
   код приглашения и участники. Карточки появляются, только когда сервер включил продажу и магазин отдал планы. */
.functional .mx-period,.functional .fm-seg{display:flex;gap:6px;flex-wrap:wrap}
.functional .mx-per{min-height:40px;padding:0 14px;border-radius:12px;border:1px solid var(--line-btn,var(--line));background:transparent;color:var(--t1);font:600 .875rem/1.2 var(--ui)}
.functional .mx-per.on{border-color:var(--green-tx,var(--green));color:var(--green-tx,var(--green));background:var(--green-bg)}
.functional .mx-per:disabled{opacity:.55}
.functional .fm-size{display:flex;flex-direction:column;gap:6px;font:500 .9375rem/1.35 var(--ui);color:var(--t1)}
.functional .fm-size input[type=range]{width:100%;min-height:44px;accent-color:var(--green)}
.functional .fm-price b{color:var(--t1)}
.functional .fm-price span{font-weight:500}
.functional .fm-members{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px}
.functional .fm-members li{display:flex;align-items:center;justify-content:space-between;gap:8px;font:500 .9375rem/1.35 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.functional .fm-code{margin:0;font:700 1.25rem/1.3 var(--ui);letter-spacing:.08em;color:var(--t1)}
.functional .fm-row{display:flex;gap:14px;flex-wrap:wrap}
.functional .fm-join{display:flex;flex-direction:column;gap:8px}
.functional .fm-join label{display:flex;flex-direction:column;gap:4px;font:500 .875rem/1.3 var(--ui);color:var(--t2)}
.functional .fm-code-in{min-height:44px;padding:0 12px;border-radius:12px;border:1px solid var(--line-btn,var(--line));background:var(--bg,transparent);color:var(--t1);font:600 1rem/1.2 var(--ui);letter-spacing:.06em;text-transform:uppercase}
.functional .fm-off{font-style:normal;font:600 .75rem/1.2 var(--ui);color:var(--t2);margin-left:6px}

/* короткая скидка −30% (js/sale.js, server/sales.js): полоска с отсчётом над тарифами и зачёркнутая цена в карточке */
.sale-strip{display:flex;align-items:center;gap:10px;margin:10px 0 4px;padding:10px 12px;border-radius:14px;border:1px solid var(--line);background:var(--surface);color:var(--t1);font:500 13px/1.3 var(--ui)}
.sale-strip .sale-pct{flex:none;padding:4px 8px;border-radius:9px;background:var(--pw-sale);color:#fff;-webkit-text-fill-color:#fff;font:800 15px/1.1 var(--ui)}
.sale-strip .sale-main{display:flex;flex-direction:column;min-width:0;flex:1}
.sale-strip .sale-title{font-weight:700}
.sale-strip .sale-end{color:var(--t2);font-size:12px}
.sale-strip .sale-left{display:flex;flex-direction:column;align-items:flex-end;flex:none}
.sale-strip .sale-left small{color:var(--t2);font-size:11px}
.sale-strip .sale-left b{font:700 14px/1.2 var(--ui);font-variant-numeric:tabular-nums}
.of-price .sale-old{display:block;color:var(--t2);font-size:.62em;font-weight:500;text-decoration:line-through;line-height:1.1}


/* ---- assistant-offer-plus.css ---- */
/* Plus material layer; purchase eligibility is handled by the existing billing. */
html[data-luxe] .functional :is(.of-copy,.of-benefits,.of-footer){background:var(--lx-surface)}
html[data-luxe] .functional .of-plan{background:var(--lx-surface);box-shadow:inset 0 1px 0 var(--lx-light);border-color:var(--line)}
html[data-luxe] .functional .of-plan.on{background:linear-gradient(145deg,var(--green-bg),var(--surface));border-color:var(--lx-metal,var(--green));box-shadow:inset 0 0 0 1px var(--lx-metal,var(--green))}
html[data-luxe] .functional .of-primary{background:var(--lx-button) padding-box,var(--lx-button-edge) border-box;border:1px solid transparent;color:var(--lx-button-ink);box-shadow:inset 0 1px 0 var(--lx-light)}
html[data-luxe] .functional .of-benefit>span{background:var(--surface);border:1px solid var(--line);color:var(--lx-metal,var(--green-tx))}
html[data-luxe] .functional .of-scene-label{background:color-mix(in srgb,var(--surface) 90%,transparent);color:var(--green-tx)}

html[data-luxe] .functional .of-payments{background:var(--lx-surface);border-color:var(--line)}

/* Витрина на исходных карточках приложения: одна полоса настроек и открытые привилегии. */
.sl-layout{--sl-accent:#80652c;display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;color:var(--t1);background:var(--bg)}
.sl-layout.sl-max{--sl-accent:#9274c6}
.functional .sl-layout .sl-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 0 20px!important}
.sl-original-hero .of-scene>img{height:180px;object-fit:cover;object-position:50% 40%}
.functional .sl-original-hero .of-copy{padding:18px 20px 12px;margin-top:-16px}
.functional .sl-original-hero .of-copy h1{font-size:24px;margin-bottom:8px}
.functional .sl-original-hero .of-copy p{font-size:12px;line-height:1.5}
.sl-controlbar{display:grid;grid-template-columns:minmax(0,1fr) 1px auto;align-items:center;gap:6px;margin:8px 16px 14px;padding:3px;border:1px solid var(--line);border-radius:15px;background:var(--bg2);overflow:hidden}
.sl-control-divider{width:1px;height:22px;background:var(--line)}
.sl-controlbar .sl-switch{position:relative;isolation:isolate;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:0;padding:4px;min-width:0;border:0;border-radius:11px;background:transparent;overflow:hidden}
.sl-controlbar .sl-switch::before{content:'';position:absolute;z-index:-1;left:4px;top:4px;bottom:4px;width:calc((100% - 8px)/var(--segments));border:1px solid var(--line);box-sizing:border-box;border-radius:9px;background:var(--surface);box-shadow:0 1px 4px #10291b12;transform:translateX(calc(var(--to)*100%))}
.sl-controlbar .sl-switch[data-slide="true"]::before{animation:sl-switch-slide .22s cubic-bezier(.2,.7,.2,1) both}
@keyframes sl-switch-slide{from{transform:translateX(calc(var(--from)*100%))}to{transform:translateX(calc(var(--to)*100%))}}
.sl-switch button{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;min-width:0;min-height:36px;padding:5px 3px;border:0;border-radius:9px;background:transparent;color:var(--t2);font:600 11px/1.3 var(--ui);white-space:nowrap;cursor:pointer}
.sl-switch button[aria-checked="true"]{color:var(--t1)}
.sl-controlbar .sl-tier button[aria-checked="true"]{color:var(--sl-accent)}
/* Используем of-choice/of-plans/of-plan без замены их геометрии на вертикальные строки. */
.functional .sl-layout .sl-choice{margin:0}
.functional .sl-layout .sl-options{padding-left:16px;padding-right:16px;scroll-padding-inline:16px;scroll-behavior:smooth}
.functional .sl-layout .sl-options>.sl-option{scroll-snap-align:start}
.functional .sl-layout .sl-option .of-tags{display:flex;align-items:center;gap:6px}
.functional .sl-layout .sl-option .of-price{font-size:28px}
/* Перламутровое стекло: блики в background не перекрывают текст и касания. */
.functional .sl-layout.sl-max .sl-option{--t1:#302640;--t2:#655772;--t3:#786687;--surface:#f6f1fc;--pw-gold:#70518f;background:radial-gradient(ellipse at 8% 0%,#fffffff2 0%,#ffffff00 65%),linear-gradient(140deg,#ffffffb8 0%,#ffffff38 43%,#ffffff00 44%,#ffffff6b 100%),linear-gradient(145deg,#f4effb 0%,#e6d9f4 58%,#eee8f7 100%);color:var(--t1);border-color:#cbbbdc;box-shadow:inset 0 1px 0 #fff,inset 0 -1px 0 #ffffff99,0 4px 12px #4a315b0c}
.functional .sl-layout.sl-max .sl-option .of-price,.functional .sl-layout.sl-max .sl-option .of-amt,.functional .sl-layout.sl-max .sl-option .of-term{color:#302640;-webkit-text-fill-color:currentColor}
.functional .sl-layout.sl-max .sl-option .of-tag-max{color:#70518f;-webkit-text-fill-color:currentColor}
.functional .sl-layout.sl-max .sl-option .of-plan-note,.functional .sl-layout.sl-max .sl-option .of-cur{color:#655772;-webkit-text-fill-color:currentColor}
.functional .sl-layout.sl-max .sl-option .of-ribbon,.functional .sl-layout.sl-max .sl-option .of-check{background:linear-gradient(135deg,#80619f,#63437f);color:#fff;-webkit-text-fill-color:#fff}
.functional .sl-layout.sl-max .sl-option.on{border-color:#9272b2;box-shadow:inset 0 0 0 1px #9272b2,inset 0 2px 0 #ffffffd9,0 4px 12px #4a315b12}
.functional .sl-layout .of-benefits{margin:0;padding:14px 20px 12px}
.functional .sl-layout .of-benefits>h2{margin-top:0}
.sl-family-size{margin:0 16px 8px;padding:9px 12px 8px;border:1px solid var(--line);border-radius:13px;background:var(--surface)}
.functional .sl-layout .sl-size-range{display:block;color:var(--t1);font:600 11px/1.4 var(--ui)}
.sl-size-range>span{display:flex;justify-content:space-between;align-items:center;gap:10px}
.sl-layout .sl-size-range input[type="range"]{appearance:none;-webkit-appearance:none;display:block;width:100%;height:32px;min-height:32px;margin:0;padding:0;border:0;border-radius:0;background:linear-gradient(to right,var(--green-tx) 0 var(--size-progress),var(--line) var(--size-progress) 100%) center/100% 3px no-repeat;cursor:pointer}
.sl-size-range input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:14px;height:14px;border:0;border-radius:50%;background:var(--green-tx)}
.sl-size-range input::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:var(--green-tx)}
.sl-size-range input::-moz-range-track{background:transparent;border:0;height:3px}
.sl-size-range input:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}
.sl-family-size>small{font:500 10px/1.4 var(--ui);color:var(--t2)}
.sl-layout .sl-footer{flex:none;padding:12px 16px 14px;border-top:1px solid var(--line);background:var(--surface)}
.sl-layout .sl-primary{width:100%;min-height:48px;margin:0;border:1px solid transparent;border-radius:15px;background:var(--green-tx);color:var(--surface);font:700 14px/1.35 var(--ui);padding:10px 14px;box-shadow:none;cursor:pointer}
.functional .sl-layout.sl-max .sl-primary{background:radial-gradient(ellipse at 25% 0%,#ffffffa6,transparent 75%),linear-gradient(180deg,#e7d9f5,#cdb5e4);color:#392548;border-color:#ad8cc9;box-shadow:inset 0 1px 0 #ffffffed,inset 0 -1px 0 #ffffff59,0 3px 9px #4a315b0d}
.sl-footer .sl-charge{margin:8px 0 3px;color:var(--t1);text-align:center;font:600 11px/1.4 var(--ui);font-variant-numeric:tabular-nums}
.sl-footer .sl-renew{margin:0;color:var(--t2);text-align:center;font:400 10px/1.4 var(--ui)}
.sl-context{margin:8px 20px;color:var(--t2);font:500 11px/1.5 var(--ui)}
.sl-quiet{display:block;width:calc(100% - 32px);min-height:40px;margin:8px 16px;border:0;border-radius:10px;background:var(--bg2);color:var(--green-tx);padding:9px 12px;font:600 11px/1.4 var(--ui);cursor:pointer;text-align:center}
.sl-details{margin:10px 16px 0;border-top:1px solid var(--line);color:var(--t2);font:500 11px/1.5 var(--ui)}
.sl-details>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;cursor:pointer;list-style:none}.sl-details summary::-webkit-details-marker{display:none}
.sl-details p{font-size:11px;line-height:1.5}
/* раскрытие «Как работает подписка» — текст проявляется сверху вниз, без прыжка (22.10.2026; движение снимается ниже для «меньше движения») */
.sl-details[open]>p{animation:sl-details-in .26s cubic-bezier(.2,.7,.2,1) both}
@keyframes sl-details-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
/* та же страница без ряда тарифов (js/assistant-offer.js slState): состояние доступа, карточки Max и семьи — с полями страницы */
.functional .sl-layout .of-status{margin:8px 16px 0}
.functional .sl-layout .mx-card{margin:14px 16px}
.functional .sl-layout.sl-state .of-benefits{margin-top:16px}
.sl-layout .of-payments{margin:8px 16px 0;padding:14px;border:1px solid var(--line);border-radius:15px}.sl-layout .of-payments h2{font-size:12px}.sl-layout .of-payments p{font-size:11px;line-height:1.5}
.sl-join{margin:8px 16px}.sl-join input{width:100%;padding:10px;border:1px solid var(--line);border-radius:10px;font:500 13px var(--ui)}.sl-join>button{min-height:42px;width:100%;margin-top:6px;border:0;border-radius:10px;background:var(--green-bg);color:var(--green-tx);font:650 12px var(--ui)}.sl-join label>span{display:block;margin-bottom:6px;font:500 11px var(--ui);color:var(--t2)}
.sl-layout button:disabled{opacity:.55;cursor:default}.sl-layout button:focus-visible,.sl-layout summary:focus-visible{outline:2px solid var(--sl-accent);outline-offset:2px}
@media(max-width:374px){.sl-controlbar{margin-left:12px;margin-right:12px;gap:4px}.sl-switch button{font-size:10px}.functional .sl-original-hero .of-copy h1{font-size:22px}}
@media(prefers-reduced-motion:reduce){.sl-layout *,.sl-layout *::before{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Plus / Max слева; семейный режим — независимый переключатель справа. */
.sl-controlbar.sl-single{grid-template-columns:minmax(0,1fr)}
.sl-family-toggle{display:flex;align-items:center;justify-content:flex-end;gap:9px;min-height:44px;padding:4px 9px;border:0;border-radius:11px;background:transparent;color:var(--t1);font:600 11px/1.3 var(--ui);white-space:nowrap;cursor:pointer}
.sl-family-track{position:relative;display:block;flex:none;width:36px;height:22px;border:1px solid var(--line);border-radius:13px;background:var(--fill,var(--bg));font-style:normal}
.sl-family-track::after{content:'';position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:var(--t3);transform:translateX(calc(var(--family-to)*14px))}
.sl-family-toggle[aria-checked="true"] .sl-family-track{background:var(--green-tx);border-color:var(--green-tx)}
.sl-family-toggle[aria-checked="true"] .sl-family-track::after{background:var(--surface)}
.sl-family-toggle[data-slide="true"] .sl-family-track::after{animation:sl-family-slide .2s ease-out both}
@keyframes sl-family-slide{from{transform:translateX(calc(var(--family-from)*14px))}to{transform:translateX(calc(var(--family-to)*14px))}}
@media(max-width:374px){.sl-family-toggle{font-size:10px;padding-right:7px;gap:7px}}
@media(prefers-reduced-motion:reduce){.sl-family-track::after{animation:none!important}}

/* Сборка 95: переключатель «Plus · Max · Для семьи» читается во всех темах. Выбранный сегмент — плотная заливка акцентом
   темы (--green) с текстом --on-acc; невыбранные — основной текст (второй у ремёсел светлых не дотягивал до 4.5); рамка плашки, черта и дорожка «Для семьи» — третий текст
   (видны ≥3:1). Раскладка прежняя. Проверка: tests/offer-switch-ui.cjs.
   Светлые Glass и светлое «Резное дерево» — прежний вид переключателя (решение владельца 21.10.2026), поэтому html:not(…). */
html:not([data-theme="artisan-wood"],[data-theme="glass-neutral"],[data-theme="glass-calm"],[data-theme="glass-care"],[data-theme="glass-trust"],[data-theme="glass-nature"]) .sl-controlbar{border-color:var(--sl-edge,var(--t3))}
html:not([data-theme="artisan-wood"],[data-theme="glass-neutral"],[data-theme="glass-calm"],[data-theme="glass-care"],[data-theme="glass-trust"],[data-theme="glass-nature"]) .sl-control-divider{background:var(--sl-edge,var(--t3))}
html:not([data-theme="artisan-wood"],[data-theme="glass-neutral"],[data-theme="glass-calm"],[data-theme="glass-care"],[data-theme="glass-trust"],[data-theme="glass-nature"]) .sl-controlbar .sl-switch::before{border:0;background:var(--sl-on,var(--green));box-shadow:0 1px 3px #0000002e}
html:not([data-theme="artisan-wood"],[data-theme="glass-neutral"],[data-theme="glass-calm"],[data-theme="glass-care"],[data-theme="glass-trust"],[data-theme="glass-nature"]) .sl-controlbar .sl-switch button{color:var(--sl-off,var(--t1))}
html:not([data-theme="artisan-wood"],[data-theme="glass-neutral"],[data-theme="glass-calm"],[data-theme="glass-care"],[data-theme="glass-trust"],[data-theme="glass-nature"]) .sl-controlbar .sl-switch button[aria-checked="true"],html:not([data-theme="artisan-wood"],[data-theme="glass-neutral"],[data-theme="glass-calm"],[data-theme="glass-care"],[data-theme="glass-trust"],[data-theme="glass-nature"]) .sl-controlbar .sl-tier button[aria-checked="true"]{color:var(--sl-on-ink,var(--on-acc,#fff));font-weight:700}
html:not([data-theme="artisan-wood"],[data-theme="glass-neutral"],[data-theme="glass-calm"],[data-theme="glass-care"],[data-theme="glass-trust"],[data-theme="glass-nature"]) .sl-family-track{border-color:var(--sl-edge,var(--t3))}
html:not([data-theme="artisan-wood"],[data-theme="glass-neutral"],[data-theme="glass-calm"],[data-theme="glass-care"],[data-theme="glass-trust"],[data-theme="glass-nature"]) .sl-family-track::after{background:var(--t2)}
html:not([data-theme="artisan-wood"],[data-theme="glass-neutral"],[data-theme="glass-calm"],[data-theme="glass-care"],[data-theme="glass-trust"],[data-theme="glass-nature"]) .sl-family-toggle[aria-checked="true"] .sl-family-track{background:var(--sl-on,var(--green));border-color:var(--sl-on,var(--green))}
html:not([data-theme="artisan-wood"],[data-theme="glass-neutral"],[data-theme="glass-calm"],[data-theme="glass-care"],[data-theme="glass-trust"],[data-theme="glass-nature"]) .sl-family-toggle[aria-checked="true"] .sl-family-track::after{background:var(--sl-on-ink,var(--on-acc,#fff))}
/* «Тёмная»: акцент --green средней светлоты сливается с плашкой — заливка светлым акцентом, текст тёмный */
html[data-theme="dark"] .sl-layout{--sl-on:var(--green-tx);--sl-on-ink:var(--surface)}
/* ремёсла светлые: второй текст карточек тарифов не дотягивал до 4.5 на выбранной карточке — ближе к основному */
html[data-artisan] .functional .sl-layout .sl-option :is(.of-plan-note,.of-year-equivalent){color:color-mix(in srgb,var(--t2) 55%,var(--t1));opacity:1}
/* материалы Plus: фон выбранной карточки Max перебивался тёмным градиентом html[data-luxe] .of-plan.on — тёмный текст жемчужной карточки
   оказывался на тёмном (1.0–2.7). Выбранная карточка Max остаётся жемчужной, как невыбранная. */
html[data-luxe] .functional .sl-layout.sl-max .sl-option.on{background:radial-gradient(ellipse at 8% 0%,#fffffff2 0%,#ffffff00 65%),linear-gradient(140deg,#ffffffb8 0%,#ffffff38 43%,#ffffff00 44%,#ffffff6b 100%),linear-gradient(145deg,#f4effb 0%,#e6d9f4 58%,#eee8f7 100%)}
/* «Мемы» светлая: салатовый акцент на светлой плашке почти не отличается по светлоте — заливка тёмным акцентом текста темы */
html[data-theme="meme"] .sl-layout{--sl-on:var(--green-tx);--sl-on-ink:var(--surface)}

/* ===== Макет GPT 23.10.2026 «голос → готовый план» (Задания моделям/GPT — листочки и подключение/out/v5/subscription-layout:
   purchase-focus.css + hero-refinement.css), перенесён один в один. Кнопка подключения — своя тёмно-фиолетовая, одна для Plus, Max
   и семьи; выбранная карточка — спокойный контур и галочка; переключатель Plus / Max полупрозрачный и тише кнопки.
   Скидка «−N %» у года и лента «ХИТ» у месяца остаются (в макете они почти пропали) — цветом кнопки.
   Светлая и «Тёмная» — цвета макета; остальные темы — те же роли из своих цветов (--t1, --t2, --surface, --line). ===== */
.sl-layout{--purchase-primary:#5145cd;--purchase-ink:#ffffff;--purchase-edge:#c9c1ff;--purchase-copy:var(--t1);--purchase-muted:var(--t2);--purchase-line:var(--line-btn,var(--line));--purchase-card:var(--surface);--selection-ink:color-mix(in srgb,var(--t1) 82%,var(--surface));--selection-soft:color-mix(in srgb,var(--surface) 93%,var(--t1));--sl-accent:var(--selection-ink)}
html[data-theme="light"] .sl-layout{--selection-ink:#56645c;--selection-soft:#f5f6f2;--purchase-copy:#25352a;--purchase-muted:#5b675e;--purchase-line:#d6ddd4;--purchase-card:#fffefa}
html[data-theme="dark"] .sl-layout{--selection-ink:#d0dacc;--selection-soft:#25332b;--purchase-copy:#eef3e9;--purchase-muted:#bdc8ba;--purchase-line:#637365;--purchase-card:#1b2820}
.functional .sl-layout.sl-plus,.functional .sl-layout.sl-max{--sl-accent:var(--selection-ink);color:var(--purchase-copy);background:var(--bg)}
.functional .sl-layout .sl-options>.sl-option,
.functional .sl-layout.sl-max .sl-options>.sl-option{--t1:var(--purchase-copy);--t2:var(--purchase-muted);--t3:var(--purchase-muted);--surface:var(--purchase-card);--pw-gold:var(--selection-ink);background:var(--purchase-card);border-color:var(--purchase-line);box-shadow:none;color:var(--purchase-copy)}
.functional .sl-layout .sl-options>.sl-option.on,
.functional .sl-layout.sl-max .sl-options>.sl-option.on,
html[data-luxe] .functional .sl-layout .sl-options>.sl-option.on{background:var(--selection-soft);border-color:var(--selection-ink);box-shadow:inset 0 0 0 1px var(--selection-ink)}
.functional .sl-layout .sl-option .of-price,.functional .sl-layout .sl-option .of-amt,.functional .sl-layout .sl-option .of-term,.functional .sl-layout.sl-max .sl-option .of-price,.functional .sl-layout.sl-max .sl-option .of-amt,.functional .sl-layout.sl-max .sl-option .of-term{color:var(--purchase-copy);-webkit-text-fill-color:currentColor}
.functional .sl-layout .sl-option .of-plan-note,.functional .sl-layout .sl-option .of-cur,.functional .sl-layout.sl-max .sl-option .of-plan-note,.functional .sl-layout.sl-max .sl-option .of-cur{color:var(--purchase-muted);-webkit-text-fill-color:currentColor}
.functional .sl-layout .sl-option .of-tag,.functional .sl-layout.sl-max .sl-option .of-tag-max{color:var(--purchase-muted);-webkit-text-fill-color:currentColor;background:transparent}
.functional .sl-layout .sl-option .of-check,.functional .sl-layout.sl-max .sl-option .of-check{background:var(--selection-ink);color:var(--purchase-card);border-color:var(--selection-ink);-webkit-text-fill-color:currentColor;box-shadow:none}
/* лента «ХИТ» — тёплая золотистая, как была до макета (--pw-gold); скидка года — красная, как была (владелец 24.10.2026).
   Белый на #d4283c — 4,95:1, белый на #805e24 — 5,9:1; в тёмных темах лента светло-золотая с тёмным текстом */
.sl-layout{--hit-bg:#805e24;--hit-ink:#ffffff;--sale-bg:#d4283c;--sale-ink:#ffffff}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .sl-layout{--hit-bg:#e4c58c;--hit-ink:#2a2111}
.functional .sl-layout .sl-option .of-ribbon,.functional .sl-layout.sl-max .sl-option .of-ribbon{background:var(--hit-bg);color:var(--hit-ink);-webkit-text-fill-color:currentColor}
/* выгода года на карточке тарифа: мягкая плашка — дополняет цену и не спорит с плашкой −30% (владелец, 27.10). Свои цвета:
   --sale-ink на странице переопределён золотом для экрана скидки, и текст на красном читался плохо */
.sl-layout{--save-bg:color-mix(in srgb,#e0344a 14%,transparent);--save-line:color-mix(in srgb,#e0344a 30%,transparent);--save-ink:color-mix(in srgb,#e0344a 68%,var(--t1))}
.functional .sl-layout .sl-option .of-save,.functional .sl-layout.sl-max .sl-option .of-save{background:var(--save-bg);box-shadow:inset 0 0 0 1px var(--save-line);color:var(--save-ink);-webkit-text-fill-color:currentColor}
/* Max: прежнее розовато-перламутровое стекло карточек и выбора (до макета 23.10) с золотистой меткой «Max», галочкой и лентой;
   кнопка подключения — та же фиолетовая, что у Plus */
.functional .sl-layout.sl-max .sl-options>.sl-option,html[data-luxe] .functional .sl-layout.sl-max .sl-options>.sl-option{--t1:#302640;--t2:#655772;--t3:#786687;--surface:#f6f1fc;--hit-bg:#805e24;--hit-ink:#ffffff;background:radial-gradient(ellipse at 8% 0%,#fffffff2 0%,#ffffff00 65%),linear-gradient(140deg,#ffffffb8 0%,#ffffff38 43%,#ffffff00 44%,#ffffff6b 100%),linear-gradient(145deg,#f4effb 0%,#e6d9f4 58%,#eee8f7 100%);color:#302640;border-color:#cbbbdc;box-shadow:inset 0 1px 0 #fff,inset 0 -1px 0 #ffffff99,0 4px 12px #4a315b0c}
.functional .sl-layout.sl-max .sl-options>.sl-option.on,html[data-luxe] .functional .sl-layout.sl-max .sl-options>.sl-option.on{background:radial-gradient(ellipse at 8% 0%,#fffffff2 0%,#ffffff00 65%),linear-gradient(140deg,#ffffffb8 0%,#ffffff38 43%,#ffffff00 44%,#ffffff6b 100%),linear-gradient(145deg,#f4effb 0%,#e6d9f4 58%,#eee8f7 100%);border-color:#9272b2;box-shadow:inset 0 0 0 1px #9272b2,inset 0 2px 0 #ffffffd9,0 4px 12px #4a315b12}
.functional .sl-layout.sl-max .sl-option .of-price,.functional .sl-layout.sl-max .sl-option .of-amt,.functional .sl-layout.sl-max .sl-option .of-term{color:#302640;-webkit-text-fill-color:currentColor}
.functional .sl-layout.sl-max .sl-option .of-plan-note,.functional .sl-layout.sl-max .sl-option .of-cur,.functional .sl-layout.sl-max .sl-option .of-year-equivalent{color:#655772;-webkit-text-fill-color:currentColor}
.functional .sl-layout.sl-max .sl-option .of-tag-max{color:#805e24;-webkit-text-fill-color:currentColor;background:transparent}
.functional .sl-layout.sl-max .sl-option .of-check{background:linear-gradient(135deg,#a07a34,#805e24);color:#fff;-webkit-text-fill-color:#fff;border-color:#805e24}
/* тёмные темы (владелец 24.10.2026): у Max вместо розоватого перламутра — лёгкое тёплое бело-золотистое стекло и свечение
   выбранной карточки; текст светлый, цвета темы. В светлых темах розоватое стекло остаётся */
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout.sl-max .sl-options>.sl-option{--t1:var(--purchase-copy);--t2:var(--purchase-muted);--t3:var(--purchase-muted);--surface:var(--purchase-card);--hit-bg:#e9d3a4;--hit-ink:#2a2111;background:radial-gradient(ellipse at 10% 0%,#fff3d81f 0%,#fff3d800 62%),linear-gradient(140deg,#fff6e414 0%,#fff6e405 45%,#fff6e400 46%,#fff6e40d 100%),var(--purchase-card);color:var(--purchase-copy);border-color:#e9d3a447;box-shadow:inset 0 1px 0 #fff6e41a}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout.sl-max .sl-options>.sl-option.on{background:radial-gradient(ellipse at 10% 0%,#fff3d838 0%,#fff3d800 70%),linear-gradient(140deg,#fff6e424 0%,#fff6e408 45%,#fff6e400 46%,#fff6e414 100%),var(--purchase-card);border-color:#ecd6a8;box-shadow:inset 0 0 0 1px #ecd6a8,inset 0 1px 0 #fff6e433,0 0 18px #f0d6a02e}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout.sl-max .sl-option :is(.of-price,.of-amt,.of-term){color:var(--purchase-copy)}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout.sl-max .sl-option :is(.of-plan-note,.of-cur,.of-year-equivalent){color:var(--purchase-muted)}
/* artisan в тёмном: подпись карточки Max светлее — стекло карточки пропускает фон сцены, на нём «Оплата за месяц» была 4.46 */
html[data-artisan]:is([data-theme$='-dark']) .functional .sl-layout.sl-max .sl-option :is(.of-plan-note,.of-year-equivalent){color:color-mix(in srgb,var(--purchase-muted) 70%,var(--t1))}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout.sl-max .sl-option .of-tag-max{color:#ecd6a8}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout.sl-max .sl-option .of-check{background:linear-gradient(135deg,#f6e6c2,#e2c78f);color:#2a2111;-webkit-text-fill-color:#2a2111;border-color:#e2c78f}
.functional .sl-layout .sl-tier button[aria-checked="true"]{color:var(--purchase-copy)}
.functional .sl-layout .sl-size-range input[type="range"]{background-image:linear-gradient(to right,var(--selection-ink) 0 var(--size-progress),var(--purchase-line) var(--size-progress) 100%)}
.functional .sl-layout .sl-size-range input::-webkit-slider-thumb{background:var(--selection-ink)}
.functional .sl-layout .sl-size-range input::-moz-range-thumb{background:var(--selection-ink)}
.functional .sl-layout.sl-plus .sl-primary,.functional .sl-layout.sl-max .sl-primary,
html[data-luxe] .functional .sl-layout.sl-plus .sl-primary,html[data-luxe] .functional .sl-layout.sl-max .sl-primary{background:var(--purchase-primary);color:var(--purchase-ink);-webkit-text-fill-color:currentColor;border:1px solid transparent;box-shadow:0 3px 0 color-mix(in srgb,var(--purchase-primary) 78%,#000);min-height:52px;transition:transform .15s ease,box-shadow .15s ease;font-weight:700}
.functional .sl-layout.sl-plus .sl-primary:not(:disabled):active,.functional .sl-layout.sl-max .sl-primary:not(:disabled):active{transform:translateY(2px);box-shadow:0 1px 0 color-mix(in srgb,var(--purchase-primary) 78%,#000)}
/* тёмные темы: светлый контур, чтобы край кнопки не терялся на тёмном фоне (как «Тёмная» в макете) */
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout .sl-primary{border-color:var(--purchase-edge)}
.functional .sl-layout .sl-footer{background:var(--surface);box-shadow:0 -8px 22px -21px #21342380;padding-top:13px}
.functional .sl-layout .sl-footer .sl-renew{color:var(--purchase-muted);line-height:1.5}
.functional .sl-layout button:focus-visible{outline:3px solid var(--purchase-primary);outline-offset:3px}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout button:focus-visible{outline-color:var(--purchase-edge)}
@media(prefers-reduced-motion:reduce){.functional .sl-layout .sl-primary{transition:none!important}}
/* верхний баннер (макет GPT 24.10.2026, серия natural; subscription-banner/banner.css): заголовок в своём ряду на фрагменте той же
   светлой стены (*-wall.webp), сцена ниже заходит под него на 13,333cqi — листик и уши видны. По решению владельца поверх стены
   под заголовком — светлое матовое стекло, которое книзу плавно растворяется в сцене (без полосы). Заголовок в одну строку на 360 и 412
   (длинные переводы переносятся). Тёмные темы — то же стекло тёмным налётом, светлый заголовок, подложка карточки в цветах темы. */
.functional .sl-layout .sl-original-hero .zb-banner{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-rows:auto auto;margin:10px 14px 5px;border:0;border-radius:24px;background:#eee8d9;color:#304438;container-type:inline-size;--zb-glass:#ffffff;--zb-ink:#22352a;--zb-glass-a:62%;--zb-glass-b:34%}
.functional .sl-layout .sl-original-hero .zb-banner .zb-banner__copy{position:relative;z-index:2;margin:0;padding:18px 14px 10px;border-radius:0;box-shadow:none;text-align:center;color:var(--zb-ink);background-color:#eee8d9;background-image:var(--banner-wall);background-size:100% 100%;background-position:center top}
.functional .sl-layout .sl-original-hero .zb-banner .zb-banner__copy::before{content:'';position:absolute;z-index:-1;left:0;right:0;top:0;bottom:-13.333cqi;pointer-events:none;background:linear-gradient(to bottom,color-mix(in srgb,var(--zb-glass) var(--zb-glass-a),transparent) 0%,color-mix(in srgb,var(--zb-glass) var(--zb-glass-b),transparent) 55%,color-mix(in srgb,var(--zb-glass) 0%,transparent) 100%);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 50%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 50%,transparent 100%)}
.functional .sl-layout .sl-original-hero .zb-banner .zb-banner__title{position:relative;font-family:Manrope,var(--ui),sans-serif;font-size:clamp(17px,6.15cqi,27px);font-weight:700;line-height:1.17;letter-spacing:-.035em;max-width:none;margin:0 auto;text-wrap:balance;overflow-wrap:anywhere;color:var(--zb-ink);-webkit-text-fill-color:currentColor}
.functional .sl-layout .sl-original-hero .zb-banner .zb-banner__scene{position:relative;z-index:1;margin:-13.333cqi 0 0;min-height:0;aspect-ratio:auto;background:none;overflow:visible;pointer-events:none}
.functional .sl-layout .sl-original-hero .zb-banner .zb-banner__image{display:block;width:100%;height:auto;max-width:none;margin:0;object-fit:fill}
.zb-warm .zb-banner__copy{--banner-wall:url(img/plus-banner-warm-wall.webp)}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout .sl-original-hero .zb-banner{--zb-glass:#0e1310;--zb-ink:#f3f6ef;--zb-glass-a:80%;--zb-glass-b:52%;background:var(--surface);box-shadow:inset 0 0 0 1px var(--line)}
@media(max-width:360px){.functional .sl-layout .sl-original-hero .zb-banner{margin-inline:10px;border-radius:22px}}
/* баннер «Было / Стало» (вариант C, 25.10.2026, js/assistant-offer.js c2): только картинка целиком 1236×821, текст поверх в долях картинки, кегль в cqi сцены */
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2{background:#fdf7e6}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zb-c2__scene{position:relative;margin:0;aspect-ratio:1236/821;overflow:hidden;container-type:inline-size;pointer-events:none;background:none}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zb-c2__img{position:absolute;inset:0;width:100%;height:100%;max-width:none;margin:0;display:block;object-fit:fill}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zb-c2__dark{display:none}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-t{position:absolute;display:flex;align-items:center;overflow:hidden;transform-origin:0 50%;font-family:Manrope,var(--ui),sans-serif;color:#26352b;white-space:nowrap;line-height:1.1}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-t>span{display:block;overflow:hidden;text-overflow:ellipsis;min-width:0}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-h{font-weight:800;font-size:2.35cqi}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-r{font-weight:700;font-size:2.15cqi}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-tm{justify-content:center;font-weight:800;font-size:1.9cqi;color:#3f5c37;font-variant-numeric:tabular-nums}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-chip{position:absolute;top:7.5%;height:6.6%;display:flex;align-items:center;padding:0 2.1cqi;border-radius:99px;background:rgba(232,240,224,.88);box-shadow:0 .3cqi 1.2cqi rgba(60,80,50,.12);font:700 2.2cqi/1 Manrope,var(--ui),sans-serif;font-style:normal;color:#33452f;white-space:nowrap}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-before{left:3.5%}
.functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-after{right:3.8%;top:9.8%}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout .sl-original-hero .zb-banner.zb-c2{background:#12180f}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zb-c2__light{display:none}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zb-c2__dark{display:block}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-t{color:#e8eee6}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-tm{color:#a9c79a}
html:is([data-theme='dark'],[data-theme='bwdark'],[data-theme$='-dark'],[data-theme='obsidian'],[data-theme='cobalt'],[data-theme='copper'],[data-theme='garnet'],[data-theme='carnelian'],[data-theme='citrine'],[data-theme='jade'],[data-theme='aquamarine'],[data-theme='indigo'],[data-theme='amethyst'],[data-theme='yang']) .functional .sl-layout .sl-original-hero .zb-banner.zb-c2 .zc2-chip{background:rgba(32,44,32,.82);color:#dfe8da;box-shadow:0 .3cqi 1.2cqi rgba(0,0,0,.35)}
@supports not (font-size:1cqi){.functional .sl-layout .sl-original-hero .zb-banner .zb-banner__title{font-size:20px}.functional .sl-layout .sl-original-hero .zb-banner .zb-banner__scene{margin-top:-40px}.functional .sl-layout .sl-original-hero .zb-banner .zb-banner__copy::before{bottom:-40px}}
/* переключатель Plus / Max: полупрозрачная плашка, выбранный — лёгкое стекло и жирный текст; насыщенный цвет только у кнопки.
   Текст невыбранного чуть темнее --t2, а дорожка «Для семьи» — цветом --t2: так они читаются во всех темах (tests/offer-switch-ui.cjs) */
.functional .sl-layout .sl-controlbar{background:color-mix(in srgb,var(--surface) 46%,transparent);border-color:color-mix(in srgb,var(--line) 65%,transparent);box-shadow:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.functional .sl-layout .sl-controlbar .sl-control-divider{background:color-mix(in srgb,var(--line) 65%,transparent)}
.functional .sl-layout .sl-controlbar .sl-switch::before{background:color-mix(in srgb,var(--surface) 45%,transparent);border:1px solid color-mix(in srgb,var(--t2) 18%,transparent);box-shadow:none}
.functional .sl-layout .sl-controlbar .sl-tier button{background:transparent!important;box-shadow:none!important;color:color-mix(in srgb,var(--t2) 70%,var(--t1));-webkit-text-fill-color:currentColor}
.functional .sl-layout .sl-controlbar .sl-tier button[aria-checked="true"]{color:var(--t1);font-weight:700}
.functional .sl-layout .sl-controlbar .sl-family-toggle{background:transparent;box-shadow:none;color:var(--t1)}
.functional .sl-layout .sl-controlbar .sl-family-track{border-color:var(--t2)}
.functional .sl-layout .sl-controlbar .sl-family-track::after{background:var(--t2)}
.functional .sl-layout .sl-controlbar .sl-family-toggle[aria-checked="true"] .sl-family-track{background:var(--t2);border-color:var(--t2)}
.functional .sl-layout .sl-controlbar .sl-family-toggle[aria-checked="true"] .sl-family-track::after{background:var(--surface)}
@media(max-width:360px){.functional .sl-layout .sl-original-hero .of-hero{margin-inline:10px;border-radius:22px}.functional .sl-layout .sl-original-hero .of-copy{padding-inline:15px}}

/* скидка −30% на странице подписки (макет GPT «sale-studio», владелец 25.10.2026): плашка −30%, справа внутри неё Зарок (или рука
   «одобряю») в её же высоте — экран той же высоты, что без картинки; текст плашки картинку не встречает (место справа). Под плашкой
   месяц и год с ценой магазина, экономией и продлением. */
.sl-layout{--sale-ticket:color-mix(in srgb,var(--pw-gold) 22%,var(--purchase-card));--sale-ink:var(--pw-gold);--sale-soft:var(--selection-soft,var(--green-bg))}
.sl-sale-perch{position:relative;padding-top:12px;margin:6px 16px 0}
.sl-sale-perch .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
/* «Зарок с классом» у Топы (выбор владельца 25.10.2026): по пояс выглядывает из-за верхнего края плашки справа */
.sl-sale-band{position:relative;display:flex;align-items:center;gap:14px;padding:16px;background:linear-gradient(120deg,var(--sale-ticket),var(--sale-soft));border:1px solid var(--purchase-line);border-radius:19px;overflow:hidden}
.sl-sale-has-pet .sl-sale-band{padding-right:96px}
.sl-sale-pet{position:absolute;right:10px;bottom:0;width:84px;height:72px;display:flex;align-items:flex-end;justify-content:flex-end;pointer-events:none}
.sl-sale-pet img{display:block;max-width:100%;max-height:100%;object-fit:contain;object-position:right bottom}
.sl-sale-sticker .sl-sale-pet{right:14px;width:52px;height:66px}
/* Капа (выдра) на картинке стоит выше остальных — чуть ниже, к краю плашки (владелец 25.10.2026) */
.sl-sale-f-flow_otter .sl-sale-pet img{transform:translateY(7px)}
.sl-sale-sticker .sl-sale-pet img{transform:rotate(8deg);transform-origin:50% 100%;filter:drop-shadow(0 3px 5px rgba(40,50,30,.18))}
.sl-sale-num{font:700 43px/1 var(--ui);letter-spacing:-2px;color:var(--sale-ink);white-space:nowrap}
.sl-sale-num small{font-size:26px;letter-spacing:-1px}
.sl-sale-band p{margin:0;max-width:150px;font:400 12px/1.45 var(--ui);color:var(--purchase-copy)}
.sl-sale-band p strong{display:block;font-weight:700}
.sl-sale-row{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:0 16px}
.sl-sale-plan{position:relative;min-width:0;display:flex;flex-direction:column;align-items:flex-start;padding:13px 10px 12px;border:1px solid var(--purchase-line);border-radius:18px;background:var(--purchase-card);color:var(--purchase-copy);text-align:left;font-family:var(--ui)}
.sl-sale-plan.on{border:2px solid var(--selection-ink,var(--green));padding:12px 9px 11px;background:linear-gradient(135deg,var(--purchase-card),var(--sale-soft))}
.sl-sale-period{font-size:13px;font-weight:700;margin-bottom:12px;padding-right:22px}
.sl-sale-check{position:absolute;right:9px;top:11px;width:18px;height:18px;border:1px solid var(--purchase-line);border-radius:50%;display:grid;place-items:center}
.sl-sale-plan.on .sl-sale-check{background:var(--selection-ink,var(--green));border-color:var(--selection-ink,var(--green));color:var(--purchase-card)}
.sl-sale-check svg{width:11px;height:11px;stroke-width:2.5}
.sl-sale-old{font-size:11px;color:var(--purchase-muted);margin-bottom:4px}
.sl-sale-price{font-size:23px;font-weight:700;line-height:1.1;letter-spacing:-.8px;white-space:nowrap;max-width:100%}
.sl-sale-price .of-cur{font-size:.6em;letter-spacing:0}
.sl-sale-first{font-size:10px;color:var(--purchase-muted);margin-top:5px}
.sl-sale-saving{display:block;font-size:10px;font-weight:700;color:var(--sale-ink);margin-top:10px;line-height:1.5}
.sl-sale-renew{font-size:10px;line-height:1.5;color:var(--purchase-muted);margin-top:7px}
.sl-sale-about{margin:12px 16px 2px;font:400 12px/1.5 var(--ui);color:var(--purchase-muted);text-align:center}
.sl-sale-about summary{cursor:pointer;min-height:36px;padding:9px 0;list-style-position:inside}
.sl-sale-about p{margin:3px 0 0}
.sl-footer .sl-sale-limit{margin:0 0 10px;text-align:center;font:400 11px/1.4 var(--ui);color:var(--purchase-muted)}
.sl-footer .sl-sale-terms{margin:8px 0 0;text-align:center;font:400 10px/1.55 var(--ui);color:var(--purchase-muted)}
.sl-footer .sl-sale-terms strong{font-weight:400;color:var(--purchase-copy)}
/* крупный текст: периоды друг под другом — цена и условия важнее двух колонок (макет) */
@media (max-width:374px){.sl-sale-perch,.sl-sale-row{margin-left:12px;margin-right:12px}}
@media (max-width:339px){.sl-sale-num{font-size:38px}.sl-sale-price{font-size:21px}.sl-sale-has-pet .sl-sale-band{padding-right:68px;gap:10px}.sl-sale-pet{right:6px;width:62px;height:60px}.sl-sale-sticker .sl-sale-pet{width:44px;height:56px}}
html.text-big .sl-sale-row{grid-template-columns:1fr}
html.text-big .sl-sale-plan{display:grid;grid-template-columns:1fr 1fr;column-gap:12px}
html.text-big .sl-sale-period,html.text-big .sl-sale-renew,html.text-big .sl-sale-old{grid-column:1/-1}


/* ---- shared-lists.css ---- */
.shared-header{display:flex;justify-content:space-between;align-items:center}.shared-back{font-size:28px;min-width:44px;min-height:44px;text-align:center}.shared-scroll{padding:22px!important}.shared-scroll button:disabled{opacity:.5;cursor:default}.shared-welcome,.shared-summary,.shared-form{border:1px solid var(--line);border-radius:28px;padding:24px;background:var(--surface)}.shared-welcome{background:linear-gradient(140deg,var(--green-bg),var(--surface))}.shared-eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:10px;color:var(--t2)}.shared-scroll h2{font-size:29px;line-height:1.15;letter-spacing:-.035em;font-weight:500;margin:19px 0 15px;overflow-wrap:anywhere}.shared-scroll h3{font-size:15px;font-weight:550;line-height:1.4}.shared-welcome p{font-size:12px;line-height:1.8;color:var(--t2);margin:20px 0}.shared-form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.shared-primary,.shared-secondary,.shared-danger{padding:12px 17px;border-radius:15px;min-height:44px;font-size:12px;text-align:center}.shared-primary{background:var(--green);color:var(--on-acc)}.shared-secondary{border:1px solid var(--line-btn);background:var(--bg);color:var(--t1)}.shared-danger{border:1px solid var(--line);color:var(--danger);background:var(--bg)}.shared-text{font-size:11px;min-height:44px;padding:7px;color:var(--green-tx)}.shared-section-title,.shared-list-tools{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:22px 0 10px}.shared-list-card{width:100%;display:flex;position:relative;flex-wrap:wrap;text-align:left;justify-content:space-between;border:1px solid var(--line);border-radius:22px;padding:20px;background:var(--surface);margin-bottom:13px}.shared-list-card>div:first-child{min-width:0;flex:1}.shared-list-card h3{margin:12px 0 8px;overflow-wrap:anywhere}.shared-list-card p,.shared-role{font-size:10px;color:var(--t2)}.shared-card-go{font-size:22px;margin-left:10px;color:var(--green-tx)}.shared-bar{height:5px;border-radius:10px;width:100%;background:var(--green-bg);overflow:hidden;margin-top:18px}.shared-bar i{height:100%;display:block;background:var(--green);border-radius:inherit;transition:width .2s}.shared-score{display:flex;align-items:baseline;gap:10px;margin-top:26px}.shared-score strong{font-size:52px;font-weight:500;line-height:1;color:var(--green-tx)}.shared-score span{font-size:12px;color:var(--t2)}.shared-tabs{display:flex;gap:5px;margin-top:22px;padding:4px;border:1px solid var(--line);border-radius:16px}.shared-tabs button{flex:1;padding:10px;font-size:11px;border-radius:12px;text-align:center;min-height:40px;color:var(--t2)}.shared-tabs button.on{background:var(--green-bg);color:var(--green-tx)}.shared-item{display:flex;gap:12px;padding:18px 0;border-bottom:1px solid var(--line);align-items:flex-start}.shared-item>div{min-width:0;flex:1}.shared-item h3{font-size:14px;margin:3px 0;overflow-wrap:anywhere}.shared-item p{font-size:11px;line-height:1.7;color:var(--t2);white-space:pre-wrap;overflow-wrap:anywhere}.shared-item.done h3{text-decoration:line-through;color:var(--t2)}.shared-tick{width:44px;height:44px;flex:none;border:1px solid var(--line-btn);border-radius:14px;text-align:center;color:var(--green-tx);background:var(--surface)}.shared-tick[aria-pressed=true]{background:var(--green-bg)}.shared-item-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.shared-item-meta span{font-size:9px;color:var(--t2);border:1px solid var(--line);padding:4px 7px;border-radius:8px}.shared-item-meta .important{background:var(--green-bg);color:var(--green-tx)}.shared-empty{text-align:center;padding:30px 12px;color:var(--t2)}.shared-empty>span{font-size:32px;color:var(--green-tx)}.shared-empty p,.shared-muted{font-size:11px;line-height:1.8;color:var(--t2)}.shared-form label{display:flex;flex-direction:column;gap:7px;font-size:11px;color:var(--t2);margin:16px 0}.shared-form input,.shared-form textarea,.shared-form select{min-width:0;width:100%;padding:12px;border:1px solid var(--line-btn);border-radius:13px;font:inherit;font-size:14px;background:var(--bg);color:var(--t1)}.shared-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.shared-pair input{font-size:12px;padding:10px}.shared-member{display:flex;gap:11px;flex-wrap:wrap;padding:17px 0;border-bottom:1px solid var(--line);align-items:center}.shared-avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--green-bg);color:var(--green-tx);font-size:14px}.shared-member>div:nth-child(2){flex:1;min-width:0}.shared-member b{display:block;font-size:12px;overflow-wrap:anywhere}.shared-member small{display:block;font-size:10px;color:var(--t2);margin-top:5px}.shared-member-actions{display:flex;flex-wrap:wrap;gap:6px;width:100%;padding-left:42px}.shared-form .shared-subtitle{margin-top:27px}.shared-management{display:flex;flex-direction:column;gap:10px;margin-top:24px}.shared-invite{padding:16px;border:1px solid var(--line-btn);border-radius:17px;margin-top:16px;background:var(--green-bg)}.shared-invite b,.shared-invite small{display:block;font-size:11px}.shared-invite code{display:block;font-size:11px;line-height:1.6;overflow-wrap:anywhere;margin:13px 0;user-select:text}.shared-invite small{color:var(--t2)}.shared-invite button{margin-top:12px}.shared-error,.shared-conflict{border:1px solid var(--line-btn);padding:16px;border-radius:17px;background:var(--surface);font-size:12px;line-height:1.7;margin-bottom:16px;overflow-wrap:anywhere}.shared-error button{display:block}.shared-form .shared-check{flex-direction:row;align-items:flex-start;gap:9px}.shared-check input{width:18px;height:18px;accent-color:var(--green);padding:0;flex:none}.shared-footer-note{margin-top:25px}.shared-form :focus-visible,.shared-scroll button:focus-visible{outline:2px solid var(--green);outline-offset:3px}@media(max-width:350px){.shared-scroll{padding:14px!important}.shared-welcome,.shared-summary,.shared-form{padding:19px}.shared-scroll h2{font-size:25px}.shared-pair{grid-template-columns:1fr}.shared-form-actions>*{flex:1}.shared-member-actions{padding-left:0}}
.shared-item-title{padding:0;min-height:28px;text-align:left;font:inherit;overflow-wrap:anywhere}.shared-detail-head{padding:23px;border:1px solid var(--line);border-radius:26px;background:var(--surface)}.shared-detail-head>p{font-size:13px;line-height:1.8;color:var(--t2);white-space:pre-wrap;overflow-wrap:anywhere}.shared-detail-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:20px}.shared-discussion,.shared-attachments{margin-top:24px}.shared-comment{border:1px solid var(--line);border-radius:20px;padding:17px;margin-bottom:12px;background:var(--surface)}.shared-comment>div:first-child{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.shared-comment b{font-size:12px}.shared-comment small{font-size:10px;color:var(--t2)}.shared-comment p{font-size:13px;line-height:1.8;margin-top:10px;white-space:pre-wrap;overflow-wrap:anywhere}.shared-comment-actions{display:flex;justify-content:flex-end;gap:8px}.shared-comment-form{padding:17px;margin-top:16px;border-radius:21px}.shared-comment-form label{margin-top:0}.shared-file{display:flex;gap:10px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.shared-file>div{flex:1;min-width:0}.shared-file b{font-size:12px;display:block;overflow-wrap:anywhere}.shared-file small{font-size:10px;color:var(--t2);display:block;margin-top:6px}.shared-file-icon{display:grid;place-items:center;width:38px;height:43px;flex:none;border:1px solid var(--line-btn);border-radius:12px;color:var(--green-tx);background:var(--green-bg);font-size:9px}.shared-file-add{position:relative;display:block;text-align:center;font-size:12px;margin:17px 0 8px;border:1px dashed var(--line-btn);border-radius:16px;padding:18px;color:var(--green-tx);cursor:pointer}.shared-file-add input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}.shared-file .shared-text{padding:5px;font-size:10px}.shared-file-add:focus-within{outline:2px solid var(--green);outline-offset:2px}
.shared-calendar-hero{position:relative;padding:25px;border:1px solid var(--line);border-radius:28px;background:var(--surface);overflow:hidden}.shared-calendar-hero h2{max-width:290px;font-size:29px;line-height:1.16;letter-spacing:-.04em;margin:19px 0 16px}.shared-calendar-hero>p,.shared-calendar-help p,.shared-calendar-issued p{font-size:12px;line-height:1.8;color:var(--t2)}.shared-calendar-icon{position:absolute;right:20px;top:16px;font-size:50px;color:var(--green-tx);opacity:.3}.shared-calendar-policy{display:flex;align-items:center;gap:12px;padding:22px 0}.shared-calendar-policy>div{flex:1;min-width:0}.shared-calendar-policy b{font-size:12px}.shared-calendar-policy>button{flex:none}.shared-calendar-preview{margin:18px 0;padding:16px;border-radius:18px;background:var(--green-bg);color:var(--green-tx)}.shared-calendar-preview>div{display:flex;justify-content:space-between;gap:12px;font-size:11px}.shared-calendar-preview>p{display:flex;gap:14px;font-size:11px;margin:12px 0;line-height:1.6}.shared-calendar-preview time{flex:none;min-width:40px}.shared-calendar-preview p span{overflow-wrap:anywhere}.shared-calendar-preview small{font-size:10px;line-height:1.8}.shared-calendar-issued{padding:20px;border:1px solid var(--green);border-radius:23px;margin:22px 0;background:var(--green-bg)}.shared-calendar-issued>b{font-size:17px;color:var(--green-tx)}.shared-calendar-issued p{margin:12px 0}.shared-calendar-issued input{width:100%;min-width:0;font-size:11px;padding:13px;background:var(--bg);color:var(--t1);border:1px solid var(--line-btn);border-radius:13px}.shared-calendar-link{display:flex;gap:12px;align-items:center;padding:17px 0;border-bottom:1px solid var(--line)}.shared-calendar-link>div{flex:1;min-width:0}.shared-calendar-link b{display:block;font-size:12px;overflow-wrap:anywhere}.shared-calendar-link small{display:block;font-size:10px;color:var(--t2);line-height:1.7;margin-top:4px}.shared-calendar-links,.shared-calendar-help{margin:26px 0}.shared-calendar-help{border-top:1px solid var(--line);padding-top:22px}.shared-calendar-help h3{font-size:13px}.shared-calendar-help p{margin-top:14px}.shared-list-tools{flex-wrap:wrap}@media(max-width:350px){.shared-calendar-hero{padding:20px}.shared-calendar-hero h2{font-size:25px}}

/* файлы к делам выключены: раздел скрыт */
.shared-attachments[hidden]{display:none!important}

/* ===== «Дела вместе» в стиле приложения (правка владельца 9 октября 2026): дела карточками, действия кнопками, ничего «висящего» ===== */
.shared-scroll{padding:16px!important}
.shared-header .shared-text{min-height:40px;padding:0 14px;border:1px solid var(--line-btn,var(--line));border-radius:99px;font:600 13px/1 var(--ui);color:var(--t1);background:var(--surface)}
.shared-header-tools{display:flex;align-items:center;gap:8px}
.shared-back{width:44px;height:44px;border:1px solid var(--line);border-radius:14px;background:var(--surface);font-size:22px}
.shared-summary{border-radius:22px;padding:20px}.shared-scroll h2{font-size:24px;font-weight:650;margin:10px 0 6px}
.shared-eyebrow{font:600 11px/1.3 var(--ui);letter-spacing:.09em}.shared-score{margin-top:14px}.shared-score strong{font-size:40px;font-weight:650}.shared-score span{font-size:13px}.shared-bar{margin-top:14px}
.shared-tabs{margin-top:14px;border-radius:14px;background:var(--bg2)}.shared-tabs button{min-height:40px;font:600 13px/1 var(--ui);border-radius:11px}
.shared-list-tools{display:flex;gap:8px;margin:14px 0 14px;flex-wrap:nowrap;align-items:stretch}
.shared-list-tools .shared-tool-add{flex:1;min-height:46px;font:650 14px/1 var(--ui);border-radius:14px}
.shared-list-tools .shared-tool{min-height:46px;padding:0 14px;font:600 13px/1 var(--ui);border-radius:14px;background:var(--surface)}
.shared-list-tools .shared-tool-icon{width:46px;padding:0;font-size:18px;flex:none}
.shared-list-tools .shared-muted{flex:1;align-self:center;font-size:13px}
.shared-item{display:flex;align-items:center;gap:12px;padding:14px 12px 14px 14px;margin:0 0 10px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}
.shared-item>div{flex:1;min-width:0;display:grid;gap:6px}.shared-item h3{margin:0}.shared-item-title{font:650 15px/1.3 var(--ui);color:var(--t1);min-height:0}
.shared-item>div>p{margin:0;font:500 13px/1.45 var(--ui);color:var(--t2);overflow-wrap:anywhere}
.shared-item.done .shared-item-title{color:var(--t3);text-decoration:line-through}
.shared-tick{flex:none;width:30px;height:30px;border:1.5px solid var(--mark,var(--line-btn));border-radius:10px;background:var(--surface);color:var(--on-acc);font-size:15px;display:grid;place-items:center;min-height:0;padding:0}
.shared-item.done .shared-tick{background:var(--green);border-color:var(--green)}
.shared-item-meta{display:flex;flex-wrap:wrap;gap:6px}.shared-item-meta span{font:600 11.5px/1.5 var(--ui);padding:3px 9px;border-radius:8px;background:var(--bg2);color:var(--t2)}.shared-item-meta .important{background:var(--green-bg);color:var(--green-tx,var(--green))}
.shared-chip-btn{justify-self:start;min-height:32px;padding:0 12px;border:1px solid var(--line);border-radius:99px;font:600 12px/1 var(--ui);color:var(--t2);background:transparent}
.shared-more{flex:none;width:44px;height:44px;border:1px solid var(--line);border-radius:14px;background:var(--surface);font-size:20px;line-height:1;color:var(--t2);min-height:0;padding:0}
.shared-empty{padding:26px 16px;border:1px dashed var(--line);border-radius:18px;text-align:center}.shared-empty h3{margin:6px 0 4px}.shared-empty p{font-size:13px;color:var(--t2);margin:0}
.shared-muted{font-size:13px;line-height:1.5}
.shared-member{padding:14px;border:1px solid var(--line);border-radius:18px;background:var(--surface);margin-bottom:10px;flex-wrap:wrap}
.shared-member b{font-size:15px}.shared-member small{font-size:12.5px}
.shared-member-actions{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.shared-member-actions .shared-text,.shared-management button{min-height:38px;padding:0 13px;border:1px solid var(--line);border-radius:99px;font:600 12.5px/1 var(--ui);color:var(--t1);background:transparent}
.shared-management{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.shared-management .shared-danger{color:var(--danger);border-color:var(--danger-line,var(--line))}
.shared-primary,.shared-secondary,.shared-danger{font-size:14px;border-radius:14px;min-height:46px}
.shared-form{border-radius:22px;padding:18px}.shared-form label{font-size:13px}.shared-form input,.shared-form select,.shared-form textarea{font-size:15px}
.shared-list-card{border-radius:18px;padding:16px}.shared-list-card h3{font-size:16px;margin:6px 0 4px}.shared-list-card p,.shared-role{font-size:12.5px}
.shared-welcome{border-radius:22px}.shared-welcome p{font-size:14px;line-height:1.55;margin:12px 0 4px}

.shared-more{display:grid;place-items:center}
.shared-scroll>.mode-switch{margin-bottom:14px}

/* ===== «Дела вместе — понятный сценарий»: дизайн GPT от 9 октября 2026, классы .sh-* ===== */
/* Scope: the shared module, gate and activity only. */
.functional .shared-header.sh-header{display:block;padding:12px 20px 18px;background:var(--bg);border-bottom:1px solid var(--line-soft)}
.functional .sh-backline{min-height:44px;display:flex;align-items:center;margin-bottom:4px}.functional .sh-header .sh-back{display:flex;align-items:center;justify-content:flex-start;gap:6px;width:auto;min-height:44px;padding:0 4px;margin:0;border:0;border-radius:8px;background:transparent;color:var(--t2);font:400 .75rem/1.5 var(--ui)}.sh-back svg{width:18px;height:18px;flex:none}
.functional .shared-header.sh-header .sh-heading h1{font:600 1.5rem/1.25 var(--ui);letter-spacing:-.04em;margin:0;color:var(--t1);overflow-wrap:anywhere}.functional .sh-header .sub{display:block;margin-top:6px;font:400 .8125rem/1.5 var(--ui);color:var(--t2);overflow-wrap:anywhere}
.functional .sh-scroll{padding:18px!important}.functional .sh-scroll :is(.shared-primary,.shared-secondary,.shared-danger){display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 14px;margin:0;font:500 .875rem/1.45 var(--ui);border-radius:13px;white-space:normal;overflow-wrap:anywhere;text-align:center}
.functional .sh-scroll .shared-primary{background:var(--green);color:var(--on-acc)}.functional .sh-scroll .shared-secondary{background:var(--surface);border:1px solid var(--line-btn);color:var(--t1)}.functional .sh-scroll .shared-danger{border:1px solid var(--line);background:var(--surface);color:var(--danger)}
.functional .sh-scroll :is(h2,h3,p){margin-top:0}.functional .sh-scroll h2{font:600 1.0625rem/1.4 var(--ui);letter-spacing:-.025em;margin-bottom:8px}.functional .sh-scroll h3{font:500 1rem/1.4 var(--ui)}.functional .sh-scroll p{font:400 .8125rem/1.65 var(--ui);color:var(--t2);overflow-wrap:anywhere}
.sh-scroll svg{display:block;width:20px;height:20px;flex:none}.functional .sh-full{width:100%}.functional .sh-scroll button:disabled{opacity:.45}
.functional .sh-intro{padding:22px;border:1px solid var(--line);border-radius:24px;background:var(--surface)}.functional .sh-intro h2{font-size:1.3125rem;line-height:1.3;margin:16px 0 10px;max-width:280px}.functional .sh-intro p{margin:0}
.functional .sh-symbol{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--green-bg);color:var(--green-tx);flex:none}.functional .sh-home-actions{display:grid;gap:10px;margin:16px 0 24px}
.functional .sh-scroll .shared-section-title{margin:0 0 14px;gap:12px}.functional .sh-scroll .shared-section-title :is(h2,h3){margin:0;flex:1;min-width:0}.functional .sh-icon-button{width:44px;height:44px;flex:none;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;color:var(--t2);padding:0}
.functional .sh-list-card{display:flex;align-items:center;flex-wrap:nowrap;width:100%;gap:12px;padding:16px;border-radius:18px;text-align:left;margin-bottom:12px;background:var(--surface);border:1px solid var(--line)}.functional .sh-list-icon{flex:none;color:var(--green-tx)}.functional .sh-list-text{display:grid;gap:5px;flex:1;min-width:0}.functional .sh-list-text b{font:500 1rem/1.4 var(--ui);overflow-wrap:anywhere}.functional .sh-list-text small{font:400 .75rem/1.5 var(--ui);color:var(--t2)}.sh-list-card i{font-style:normal;flex:none;color:var(--t2)}.functional .sh-empty-list{padding:18px;border:1px dashed var(--line);border-radius:18px;margin-bottom:18px}.sh-empty-list p{margin:0}
.functional .sh-home-extra{border-top:1px solid var(--line);padding-top:18px;margin-top:24px}.functional .sh-link-row{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:12px 0;color:var(--t1);border:0;background:transparent;text-align:left;font:500 .875rem/1.5 var(--ui)}.sh-link-row>span:nth-child(2){flex:1;min-width:0;display:grid;gap:3px}.sh-link-row b{font-weight:500}.sh-link-row small{font:400 .75rem/1.5 var(--ui);color:var(--t2)}.sh-link-row i{margin-left:auto;flex:none;color:var(--t2);font-style:normal}
.functional .sh-list-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;border:1px solid var(--line);background:var(--bg2);padding:4px;border-radius:14px;margin-bottom:18px}.functional .sh-list-tabs button{min-height:44px;text-align:center;display:flex;align-items:center;justify-content:center;padding:8px;font:500 .8125rem/1.4 var(--ui);color:var(--t2);border:0;border-radius:10px;background:transparent}.functional .sh-list-tabs button.on{color:var(--t1);background:var(--surface);box-shadow:0 1px 4px #0000000a}
.functional .sh-progress{padding:4px 0 18px}.sh-progress>div:first-child{display:flex;justify-content:space-between;gap:12px;font:.8125rem/1.5 var(--ui);color:var(--t2)}.sh-progress b{font-weight:500;color:var(--t1)}.sh-progress .shared-bar{margin-top:10px;height:4px;background:var(--line)}.functional .sh-add-row{display:grid;margin-bottom:16px}.functional .sh-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 18px;padding:4px;gap:4px;background:var(--bg2);border:0;border-radius:12px}.functional .sh-filters button{display:flex;align-items:center;justify-content:center;min-height:44px;padding:8px 5px;line-height:1.4;font-size:.75rem;text-align:center;color:var(--t2);border:0;background:transparent}.functional .sh-filters button.on{background:var(--surface);color:var(--t1)}
.functional .sh-empty{padding:28px 20px;background:var(--surface);border:1px solid var(--line);border-radius:22px;display:flex;flex-direction:column;align-items:center;text-align:center}.functional .sh-empty-art{display:grid;place-items:center;width:52px;height:52px;color:var(--green-tx);margin-bottom:16px}.sh-empty-art svg{width:42px;height:42px;stroke-width:1}.functional .sh-empty h3{font:500 1.125rem/1.4 var(--ui);margin:0 0 8px}.functional .sh-empty p{margin:0 0 20px}.functional .sh-empty button{width:100%}
.functional .sh-task{padding:14px 12px;border-radius:18px;gap:8px;align-items:center;background:var(--surface);border:1px solid var(--line);margin-bottom:12px}.functional .sh-task .shared-tick{width:44px;height:44px;flex:none;min-height:44px;border:0;border-radius:10px;background:transparent;position:relative;color:transparent;font-size:0;display:grid;place-items:center}.functional .sh-task .shared-tick::before{content:'';width:24px;height:24px;border:1.5px solid var(--mark);border-radius:8px;position:absolute;left:10px;top:10px}.functional .sh-task .shared-tick[aria-pressed=true]::before{content:'✓';background:var(--green);border-color:var(--green);color:var(--on-acc);font:500 14px/22px var(--ui)}
.functional .sh-task-copy{display:flex!important;flex-direction:column;gap:6px;min-width:0}.functional .sh-task-copy h3{margin:0}.functional .sh-task .shared-item-title{display:block;width:100%;min-height:0;padding:0;text-align:left;background:transparent;border:0;border-radius:0;color:var(--t1);font:500 .875rem/1.45 var(--ui)}.functional .sh-task-copy>p{font:.75rem/1.5 var(--ui);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.functional .sh-task .shared-chip-btn{align-self:flex-start;justify-self:auto;min-height:32px;padding:4px 0;border:0;background:transparent;color:var(--green-tx);font:500 .75rem/1.5 var(--ui)}.functional .sh-task .shared-more{display:grid;place-items:center;flex:none;min-width:44px;min-height:44px;width:44px;height:44px;border:0;background:transparent;color:var(--t2)}.functional .sh-task .shared-item-meta{margin:0;gap:4px}.functional .sh-task .shared-item-meta span{font:.625rem/1.5 var(--ui);padding:2px 6px;border:0}
.functional .sh-member-list{display:grid;gap:12px;margin-bottom:18px}.functional .sh-member{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:12px;padding:16px;margin:0;border:1px solid var(--line);border-radius:18px;background:var(--surface);align-items:center}.sh-member-copy{min-width:0}.functional .sh-member b{font:500 .9375rem/1.45 var(--ui);overflow-wrap:anywhere}.functional .sh-member small{font:.75rem/1.5 var(--ui);margin-top:4px;color:var(--t2)}.functional .sh-you{display:inline-block;font:400 .625rem/1.5 var(--ui);padding:2px 5px;border-radius:5px;background:var(--green-bg);color:var(--green-tx);vertical-align:middle;margin-left:4px}.functional .sh-member-name{grid-column:2/-1;justify-self:start;min-height:44px;padding:4px 0;font:500 .75rem/1.5 var(--ui);color:var(--green-tx);background:transparent;border:0}
.functional .sh-member-menu{grid-column:3;grid-row:1}.functional .sh-member-menu>summary{display:grid;place-items:center;list-style:none;width:44px;height:44px;font-size:22px;color:var(--t2);cursor:pointer;border-radius:10px}.sh-member-menu>summary::-webkit-details-marker{display:none}.functional .sh-member:has(.sh-member-menu[open]){display:flex;flex-wrap:wrap}.functional .sh-member:has(.sh-member-menu[open]) .sh-member-copy{flex:1}.functional .sh-member-menu[open]{flex-basis:100%;width:100%}.functional .sh-member-menu[open]>summary{margin-left:auto}.functional .sh-member-menu-body{display:grid;gap:8px;padding-top:8px}.functional .sh-member-menu-body button{width:100%;min-height:44px;font-size:.75rem}
.functional .sh-role-help{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:18px 0}.functional .sh-role-help>summary,.functional .sh-danger-zone>summary{min-height:48px;cursor:pointer;font:500 .8125rem/1.5 var(--ui);padding:14px 4px;color:var(--t2)}.sh-role-help dl{margin:0;padding:0 4px 16px}.sh-role-help dt{font:500 .8125rem/1.5 var(--ui);color:var(--t1);margin:12px 0 3px}.sh-role-help dd{font:400 .75rem/1.6 var(--ui);color:var(--t2);margin:0}.functional .sh-invite-action{display:grid;margin:20px 0 12px}.functional .sh-leave-action{display:grid;border-top:1px solid var(--line);padding-top:18px}
.functional .sh-scroll .shared-form{padding:20px;border-radius:22px;background:var(--surface);border:1px solid var(--line)}.functional .sh-form-intro{margin:0 0 20px!important}.functional .sh-scroll .shared-form label{font:.8125rem/1.5 var(--ui);color:var(--t2);margin:16px 0;gap:7px}.functional .sh-scroll .shared-form :is(input,textarea,select,.choice-trigger){font:400 .875rem/1.5 var(--ui);min-height:48px;width:100%;min-width:0;border:1px solid var(--line-btn);border-radius:12px;background:var(--bg);color:var(--t1);padding:12px}.functional .sh-scroll .shared-form textarea{min-height:100px;resize:vertical}.functional .sh-scroll .shared-form label small{font:.6875rem/1.5 var(--ui)}.functional .sh-form-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:24px}.functional .sh-scroll .shared-form>.shared-danger{margin-top:18px}.functional .sh-scroll .shared-check input{width:20px;min-height:20px;height:20px;flex:none;padding:0;margin-top:2px}
.functional .sh-role-options{margin:0 0 20px;padding:0;border:0}.sh-role-options legend{font:500 .8125rem/1.5 var(--ui);color:var(--t2);margin-bottom:12px}.functional .sh-invite-form .sh-role-option{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--bg);margin:0 0 10px;cursor:pointer}.functional .sh-invite-form .sh-role-option:has(input:checked){border-color:var(--green);background:var(--green-bg)}.functional .sh-invite-form .sh-role-option input{width:20px;height:20px;min-height:20px;flex:none;margin:0;padding:0;accent-color:var(--green)}.sh-role-option>span{display:grid;gap:4px;min-width:0;flex:1}.sh-role-option b{font:500 .875rem/1.5 var(--ui);color:var(--t1)}.sh-role-option small{font:400 .75rem/1.5 var(--ui);color:var(--t2)}
.functional .sh-issued{padding:18px;margin:20px 0;background:var(--green-bg);border:1px solid var(--line);border-radius:18px}.sh-issued-label{font:.75rem/1.5 var(--ui);color:var(--green-tx)}.functional .sh-issued code{font:500 .875rem/1.6 var(--ui);letter-spacing:.06em;overflow-wrap:anywhere;margin:12px 0 8px}.functional .sh-issued small{font:.6875rem/1.6 var(--ui);margin-bottom:16px}.functional .sh-issued button{margin-top:8px}
.functional .sh-settings-card{padding:20px;background:var(--surface);border:1px solid var(--line);border-radius:20px;margin-bottom:16px}.functional .sh-settings-card p{margin-bottom:18px}.functional .sh-danger-zone{margin-top:24px;border-top:1px solid var(--line);padding:0 4px}.sh-danger-zone p{margin:6px 0 16px}
.functional .sh-gate{padding:24px 20px;background:var(--surface);border:1px solid var(--line);border-radius:24px}.sh-plan-label{font:.6875rem/1.5 var(--ui);color:var(--green-tx);letter-spacing:.08em;text-transform:uppercase}.functional .sh-gate>h2{font:500 1.375rem/1.3 var(--ui);margin:16px 0 12px}.functional .sh-gate>p{margin-bottom:24px}.sh-gate-step{display:flex;gap:12px;padding:20px 0;border-top:1px solid var(--line)}.sh-step-n{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--green-bg);color:var(--green-tx);font:.8125rem/1.5 var(--ui)}.sh-gate-step>div{min-width:0;flex:1}.functional .sh-gate-step h3{font:500 .9375rem/1.5 var(--ui);margin:0 0 6px}.sh-gate-step p{margin:0 0 16px}
.functional .sh-scroll .shared-detail-head{padding:20px;border-radius:22px}.functional .sh-scroll .shared-detail-head h2{font-size:1.125rem}.functional .sh-scroll .shared-comment{padding:16px;border-radius:18px}.functional .sh-scroll .shared-comment :is(p,b,small){overflow-wrap:anywhere}.functional .sh-scroll .notice-hero{padding:20px;border-radius:22px}.functional .sh-scroll .notice-hero h2{font-size:1.375rem;margin:8px 0 12px}.functional .sh-scroll .notice-tools{display:flex;gap:8px}.functional .sh-scroll .notice-tools button{min-height:44px;padding:8px;display:flex;align-items:center;justify-content:center;font:.75rem/1.5 var(--ui)}.functional .sh-scroll .notice-filters{grid-template-columns:1fr 1fr}.functional .sh-scroll .notice-filters select{font-size:.8125rem}.functional .sh-scroll .notice-empty p,.functional .sh-scroll .notice-footer{font-size:.75rem}
.functional .sh-scroll [hidden]{display:none!important}.functional .sh-scroll summary:focus-visible{outline:2px solid var(--green);outline-offset:-3px;border-radius:12px}
/* These controls override the generic shared-secondary/form rules. */
.functional .sh-scroll :is(.sh-list-tabs,.sh-filters) button{background:transparent;border:0;box-shadow:none;color:var(--t2);font-weight:400}
.functional .sh-scroll :is(.sh-list-tabs,.sh-filters) button.on{background:var(--surface);box-shadow:0 1px 5px #0000000d;color:var(--green-tx);font-weight:600}
.functional .sh-scroll .sh-invite-form .sh-role-option{flex-direction:row;gap:12px;margin:0 0 10px;text-align:left}
.functional .sh-scroll .sh-invite-form .sh-role-option input{width:20px;height:20px;min-height:20px;padding:0;margin:0;flex:none;border-radius:50%;background:transparent}
.functional .sh-scroll .shared-form .shared-check input{width:20px;height:20px;min-height:20px;padding:0;margin:2px 0 0;flex:none}
.functional .sh-member-name{padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.functional .sh-scroll .sh-invite-form>.shared-muted{margin:16px 0}
/* Reserve room for the longest label; changing the filter must not reflow it. */
.functional .sh-scroll{scrollbar-gutter:stable}
.functional .sh-scroll .sh-filters{grid-template-columns:minmax(max-content,1fr) minmax(max-content,.65fr) max-content}
.functional .sh-scroll .sh-filters button{min-height:44px;padding:8px;white-space:nowrap;overflow-wrap:normal;font:600 .75rem/1.4 var(--ui)}
@media(max-width:375px){.functional .sh-scroll{padding:14px!important}.functional .sh-form-actions{grid-template-columns:1fr}.functional .sh-member{gap:10px;padding:14px}.functional .sh-scroll .shared-pair{grid-template-columns:1fr}}

/* строка «Подключить чат Telegram»: подпись под названием */
.sh-tg-row span small{display:block;margin-top:2px;font-size:11px;line-height:1.4;font-weight:400;color:var(--t3)}

/* секретные дела: блок в форме раскрывается, когда отмечено «Секретное»; поле «когда» — по выбранному способу */
.sh-secret{display:grid;gap:10px}.sh-secret-box{display:none;gap:10px}
.sh-secret:has([data-shared-field="secret"]:checked) .sh-secret-box{display:grid}
.sh-secret .sh-open-time,.sh-secret .sh-open-after{display:none}
.sh-secret:has([data-shared-field="openMode"] option[value="time"]:checked) .sh-open-time{display:block}
.sh-secret:has([data-shared-field="openMode"] option[value="after"]:checked) .sh-open-after{display:block}
.sh-task-locked{align-items:center;border-style:dashed}.sh-task-locked .sh-lock{flex:none;width:36px;height:36px;display:grid;place-items:center;border-radius:11px;background:var(--bg2);font-size:16px}
.sh-task-locked h3{margin:0;font-size:15px}.sh-task-locked p{margin:2px 0 0;font-size:12px;color:var(--t2)}
.sh-secret-chip{color:var(--green-tx)}
/* общие дела в плане дня (js/shared-day.js, владелец 29.10): та же карточка, что у своих дел, только без свайпа */
.tl-shared{position:relative;min-width:0;border-radius:16px;cursor:pointer}
.tl-shared>.evcard,.tl-shared>.donerow{margin:0}
/* «Дела вместе», список: дело — карточкой «Дня»; прежняя рамка строки снимается (шапка — .sh-head) */
.sh-mobile .sh-scroll article.shared-item.sh-card-item,.functional .sh-mobile .sh-scroll article.shared-item.sh-card-item,html[data-luxe] .functional .sh-mobile .sh-scroll article.shared-item.sh-card-item{display:block;padding:0;margin:0 0 10px;border:0;border-radius:16px;background:none;box-shadow:none;backdrop-filter:none;cursor:pointer}
.sh-card-item>.sh-card-face{display:block}
.sh-mobile .sh-scroll .sh-progress.sh-head,.functional .sh-mobile .sh-scroll .sh-progress.sh-head{display:flex;align-items:center;gap:14px;padding:16px;margin:0 0 12px;border:1px solid var(--line);border-radius:22px;background:linear-gradient(140deg,color-mix(in srgb,var(--green) 12%,var(--surface)),var(--surface))}
.sh-head .sh-head-ic{flex:none;width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:var(--surface);color:var(--green-tx);box-shadow:0 2px 8px #0000000d}
.sh-head .sh-head-ic svg{width:26px;height:26px}
.sh-mobile .sh-scroll .sh-progress.sh-head>div.sh-head-copy{display:block;flex:1;min-width:0;font:inherit}
.sh-mobile .sh-scroll .sh-head h2{margin:0;font:700 19px/1.25 var(--ui);color:var(--t1);overflow-wrap:anywhere}
.sh-mobile .sh-scroll .sh-head p{margin:3px 0 9px;font:500 13px/1.4 var(--ui);color:var(--t3)}
.sh-mobile .sh-scroll .sh-head .shared-bar{height:6px;margin:0;border-radius:3px;background:color-mix(in srgb,var(--t3) 18%,transparent);overflow:hidden}
.sh-mobile .sh-scroll .sh-head .shared-bar i{display:block;height:100%;border-radius:3px;background:var(--green)}
.sh-head .sh-head-people{display:flex;flex:none;align-self:flex-start;padding-left:8px}
.sh-head .sh-head-people span{width:30px;height:30px;margin-left:-8px;border-radius:50%;border:2px solid var(--surface);display:grid;place-items:center;font:700 12px var(--ui);color:#fff}
/* детали общего дела: наш экран деталей, вкладки «Дело / Обсуждение» */
.sh-detail-mode .sh-detail-card{margin:0 0 12px}
.sh-detail-mode .sh-detail-desc{margin:0 0 12px}
.sh-detail-mode .sh-detail-viewer{margin:0 0 12px;font:500 13px/1.5 var(--ui);color:var(--t2)}
/* обсуждение как в мессенджере: сообщения прижаты к низу, поле ввода — у нижнего края экрана */
.sh-chat-mode #sh-detail-panel{display:flex;flex-direction:column}
.sh-chat{margin-top:auto;display:flex;flex-direction:column;gap:8px;padding:4px 0 6px}
.sh-chat .sh-chat-day{align-self:center;margin:6px 0 2px;font:600 11.5px/1.3 var(--ui);color:var(--t3)}
.sh-chat .sh-chat-empty{align-self:center;max-width:280px;margin:0 auto 6px;text-align:center;font:500 13px/1.5 var(--ui);color:var(--t3)}
.sh-chat .sh-msg{align-self:flex-start;max-width:82%;padding:9px 13px 7px;border:1px solid var(--line);border-radius:16px 16px 16px 6px;background:var(--surface);color:var(--t1)}
.sh-chat .sh-msg.me{align-self:flex-end;border-color:transparent;border-radius:16px 16px 6px 16px;background:color-mix(in srgb,var(--green) 13%,var(--surface))}
.sh-chat .sh-msg>b{display:block;margin:0 0 2px;font:600 11.5px/1.3 var(--ui);color:var(--t3)}
.sh-chat .sh-msg>p{margin:0;font:400 15px/1.42 var(--ui);white-space:pre-wrap;overflow-wrap:anywhere}
.sh-chat .sh-msg>footer{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:4px 12px;margin-top:3px}
.sh-chat .sh-msg time{font:500 11px/1.3 var(--ui);color:var(--t3)}
/* меню сообщения (долгое нажатие, правая кнопка): белая карточка у пузыря, остальное обсуждение притемнено */
.sh-chat .sh-msg{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:relative;transition:transform .12s ease-out}
.sh-chat .sh-msg:focus-visible{outline:2px solid var(--green-tx);outline-offset:2px}
.sh-chat .sh-msg.is-menu{z-index:41;transform:scale(1.02)}
.sh-mm-dim{position:fixed;inset:0;z-index:40;background:rgba(20,24,22,.32);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.sh-mm{position:fixed;z-index:42;width:232px;padding:6px;border-radius:16px;background:var(--surface);box-shadow:0 12px 36px -8px rgba(0,0,0,.35),0 0 0 1px var(--line);animation:sh-mm-in .14s ease-out}
.sh-mm .sh-mm-head{margin:6px 10px 4px;font:600 12.5px/1.4 var(--ui);color:var(--t3)}
.sh-mobile .sh-mm .sh-mm-row{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:0 12px;border:0;border-radius:10px;background:none;font:500 15px/1.2 var(--ui);color:var(--t1);text-align:left;cursor:pointer}
.sh-mobile .sh-mm .sh-mm-row:hover,.sh-mobile .sh-mm .sh-mm-row:focus-visible{background:var(--bg);outline:none}
.sh-mm .sh-mm-row svg{flex:none;width:20px;height:20px;color:var(--t2)}
.sh-mobile .sh-mm .sh-mm-row.is-danger,.sh-mm .sh-mm-row.is-danger svg{color:var(--danger)}
@keyframes sh-mm-in{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.sh-mm{animation:none}.sh-chat .sh-msg{transition:none}.sh-chat .sh-msg.is-menu{transform:none}}
.sh-mobile .sh-chat-bar{flex:none;margin:0;padding:6px 16px 10px;border:0;background:var(--bg)}
.sh-mobile .sh-chat-bar .sh-chat-row{display:flex;align-items:flex-end;gap:8px;padding:5px 5px 5px 16px;border:1px solid var(--line);border-radius:24px;background:var(--surface);box-shadow:0 4px 16px #0000000f}
.sh-mobile .sh-chat-bar .sh-chat-row textarea{flex:1;min-width:0;min-height:40px;max-height:132px;margin:0;padding:9px 0;border:0;border-radius:0;background:none;box-shadow:none;outline:none;resize:none;font:400 16px/1.4 var(--ui);color:var(--t1)}
.sh-mobile .sh-chat-bar .sh-chat-send{flex:none;width:40px;height:40px;min-height:40px;padding:0;border:0;border-radius:50%;display:grid;place-items:center;background:var(--green);color:var(--on-acc,#fff);cursor:pointer}
.sh-mobile .sh-chat-bar .sh-chat-send svg{width:20px;height:20px}
.sh-mobile .sh-chat-bar .sh-chat-edit{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 6px 6px 16px;font:600 12px/1.3 var(--ui);color:var(--green-tx)}
.sh-mobile .sh-chat-bar .sh-chat-edit-x{width:32px;min-height:32px;padding:0;border:0;background:none;font-size:20px;line-height:1;color:var(--t2)}
.sh-mobile .sh-chat-bar .shared-conflict{margin:0 0 6px}
.sh-mobile .sh-chat-note p{margin:0;padding:10px 0;text-align:center;font:500 13px/1.5 var(--ui);color:var(--t3)}
/* лист «Действия с делом» общего дела: выбор часа личного напоминания (js/sheets.js sharedMenuSheet) */
.sh-hours{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 12px}
.sh-hours button{min-height:44px;padding:0;text-align:center;border:1px solid var(--line);border-radius:12px;background:var(--surface);font:600 15px/1 var(--ui);color:var(--t1);cursor:pointer}
.sh-hours button[aria-pressed=true]{border-color:var(--green);background:var(--green-bg);color:var(--green-tx)}
/* наблюдатель без Plus/Max у владельца: пункт закрыт, пометка «· Plus» и объяснение под ним (js/shared-lists.js shViewerLocked) */
.sh-role-option.sh-role-locked{cursor:default}.sh-role-option.sh-role-locked input{opacity:.5}
.sh-plus-mark{font-style:normal;font-weight:600;color:var(--green-tx)}.sh-role-option small.sh-role-note{color:var(--t1)}
/* «Дела вместе» по образцу «Сценариев дня» (владелец, 23.10): сегмент вкладок fh-tabs со свайпом (главная: «Мои списки / Приглашения»,
   «Пригласить участника»: «Друзья / По нику / Код»), карточки списков sc-card (js/templates.js), роль — короткий переключатель */
.sh-mobile>.fh-tabs{margin-top:12px}.sh-mobile .sh-seg3{grid-template-columns:1fr 1fr 1fr}.sh-mobile.sh-has-seg .sh-scroll{padding-top:0!important}
.functional .sh-mobile .sh-seg button{min-height:38px;border:0;border-radius:10px;background:transparent;box-shadow:none;color:var(--t2);font:600 12px/1.3 var(--ui)}
.functional .sh-mobile .sh-seg button[aria-selected=true]{background:var(--surface);box-shadow:0 2px 7px #1c352a0b;color:var(--green-tx)}
.sh-mobile .sh-card .sc-choose{padding:14px 13px}.sh-mobile .sh-card .sc-art svg{width:24px;height:24px}.sh-mobile .sh-card .notice-badge{align-self:flex-start}
.functional .sh-mobile .sh-home-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:2px 0 10px}.functional .sh-mobile .sh-home-actions button{margin:0;min-height:44px}
.functional .sh-mobile .sh-role-seg{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0 0 6px}
.functional .sh-mobile .sh-role-seg .sh-role-option{margin:0!important;padding:10px 12px;align-items:center}
.functional .sh-mobile .sh-role-line{font:400 11px/1.5 var(--ui);color:var(--t2);margin:0 0 14px}
.functional .sh-mobile :is(.sh-form,.sh-invite-form) .sf-list{border:0;border-radius:0;background:none;padding:0;margin:0}
.functional .sh-mobile .sh-list-tabs.sh-seg{display:grid;grid-template-columns:1fr 1fr;gap:3px;padding:3px;margin:0 0 10px;background:var(--fill,var(--surface));border:1px solid var(--line);border-radius:14px}
.functional .sh-mobile .sh-role-seg .sh-role-option{justify-content:center;align-items:center;min-height:44px;padding:8px 10px;position:relative}
.functional .sh-mobile .sh-role-seg .sh-role-option input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.functional .sh-mobile .sh-role-seg .sh-role-option span{flex:none}.functional .sh-mobile .sh-role-seg .sh-role-option b{white-space:nowrap;font:600 12px/1.3 var(--ui);text-align:center}
.functional .sh-mobile .sh-role-seg .sh-role-option:has(input:focus-visible){outline:2px solid var(--green-tx);outline-offset:2px}
.functional .sh-mobile .sh-scroll .sh-list-tabs.sh-seg button:not([aria-selected=true]){background:transparent;border:0;box-shadow:none}
/* значок дела в форме общего дела (29.10.2026): плитка слева от названия, как в окне дел; под ней — та же панель выбора (composer.css .ti-*) */
.sh-ti-row{display:flex;align-items:flex-end;gap:10px}.sh-ti-row>label{flex:1;min-width:0}.sh-ti-row>.sh-ti-tile{margin:0 0 2px}
.sh-ti-dock{height:min(360px,52vh);border:1px solid var(--line);border-radius:18px;overflow:hidden;margin:6px 0 4px}.sh-ti-dock .ti-panel{height:100%}


/* ---- shared-notices.css ---- */
.notice-hero{padding:26px;border:1px solid var(--line);border-radius:28px;background:var(--surface)}.notice-hero h2{font-size:31px;line-height:1.16;letter-spacing:-.045em;margin:20px 0 16px}.notice-hero p{font-size:12px;line-height:1.8;color:var(--t2)}.notice-hero>div{display:flex;align-items:baseline;gap:12px;margin-top:22px}.notice-hero strong{font-size:48px;line-height:1;color:var(--green-tx);font-weight:500}.notice-hero>div>span{font-size:11px;color:var(--t2)}.notice-tools{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin:17px 0}.notice-filters{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:17px 0 22px}.notice-filters label{min-width:0;display:flex;flex-direction:column;gap:8px;font-size:10px;color:var(--t2)}.notice-filters select{width:100%;padding:12px;border-radius:13px;border:1px solid var(--line-btn);background:var(--surface);color:var(--t1)}.notice-card{border:1px solid var(--line);border-radius:22px;padding:17px;margin-bottom:12px;background:var(--surface)}.notice-card.read{background:var(--bg)}.notice-card-top{display:flex;align-items:center;gap:10px;font-size:9px;color:var(--t2)}.notice-card-top>span{color:var(--green-tx)}.notice-card-top time{margin-left:auto}.notice-card-top i{width:6px;height:6px;flex:none;border-radius:50%;background:var(--green)}.notice-open{display:block;width:100%;text-align:left;padding:15px 0 7px}.notice-open b{display:block;font-size:14px;line-height:1.5}.notice-open p{font-size:13px;line-height:1.65;margin:7px 0;overflow-wrap:anywhere}.notice-open small{display:block;font-size:10px;line-height:1.6;color:var(--t2);overflow-wrap:anywhere}.notice-open>span{display:block;margin-top:12px;font-size:11px;color:var(--green-tx)}.notice-card>.shared-text{font-size:10px;padding:8px 0;min-height:36px}.notice-empty{text-align:center;padding:28px 20px;color:var(--t2)}.notice-empty>span{font-size:34px;color:var(--green-tx)}.notice-empty h3{font-size:17px;margin:15px 0}.notice-empty p{font-size:12px;line-height:1.8}.notice-footer{margin:24px 0}.notice-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;font-size:10px;border-radius:8px;background:var(--green-bg);color:var(--green-tx)}.notice-badge[hidden]{display:none}.shared-header-tools{display:flex;gap:8px;align-items:center}.shared-header-tools>[data-notice]{font-size:11px;padding:9px}.shared-header-tools>.shared-back{flex:none}#notice-settings .shared-check input{min-height:18px;margin-top:2px}@media(max-width:350px){.notice-hero{padding:21px}.notice-hero h2{font-size:27px}.notice-filters{grid-template-columns:1fr}.shared-header-tools{gap:4px}}


/* ---- section-design.css ---- */
/* Scoped presentation for profile sections. Keep separate from existing sheets. */
.functional .sx-section,.functional .sx-picker{display:grid;gap:18px;color:var(--t1);min-width:0}.sx-section *, .sx-picker *{box-sizing:border-box}.sx-section button,.sx-picker button{font:inherit}.sx-icon{width:22px;height:22px;flex-shrink:0;vertical-align:middle}.sx-kicker{font-size:10px;font-weight:600;letter-spacing:.11em;color:var(--t3);display:block}.sx-hero{text-align:center;padding:8px 7px 2px}.sx-hero h2{font-size:25px;line-height:1.24;font-weight:750;letter-spacing:-.6px;margin:12px auto 9px;max-width:340px;color:var(--t1)}.sx-hero p,.sx-lead{font-size:13px;line-height:1.65;color:var(--t2);margin:0}.sx-hero p{max-width:330px;margin:auto}.sx-illustration{height:104px;width:145px;position:relative;margin:0 auto 17px;display:grid;place-items:center}.sx-illustration>i{position:absolute;inset:13px 7px 0;border-radius:50%;background:var(--green-bg);opacity:.7}.sx-illustration>span{position:relative;width:70px;height:70px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);border-radius:24px;transform:rotate(-7deg);color:var(--green-tx);box-shadow:0 9px 20px #233c2410}.sx-illustration>span .sx-icon{width:35px;height:35px;transform:rotate(7deg)}.sx-illustration>b{position:absolute;right:8px;bottom:5px;width:38px;height:38px;border-radius:14px;display:grid;place-items:center;background:var(--green-bg);color:var(--green-tx);border:3px solid var(--surface)}.sx-card,.sx-example{padding:18px;border:1px solid var(--line);border-radius:22px;background:var(--surface);min-width:0}.sx-card h3,.sx-example h3{font-size:16px;font-weight:700;line-height:1.4;margin:0 0 12px}.sx-example{background:var(--bg2)}.sx-example>.sx-kicker{font-size:9px;margin-bottom:15px}.sx-example p{font-size:12px;line-height:1.65;color:var(--t3);margin:13px 0 0}.sx-period{display:grid;grid-template-columns:1fr auto;gap:7px 12px;padding:16px 18px;border-radius:20px;border:1px solid var(--line);background:var(--green-bg)}.sx-period>span{grid-column:1/-1;font-size:11px;color:var(--green-tx)}.sx-period>b{font-size:16px;font-weight:650}.sx-period i{font-style:normal;color:var(--t3);padding:0 4px}.sx-period small{font-size:11px;align-self:center;color:var(--t2)}.sx-meal-row{display:flex;align-items:center;gap:13px;min-width:0;padding:7px 0}.sx-meal-row time{font-size:13px;font-weight:650;color:var(--green-tx);flex-shrink:0}.sx-meal-row>span{flex:1;min-width:0}.sx-meal-row b{font-size:15px;display:block;overflow-wrap:anywhere}.sx-meal-row small{font-size:11px;color:var(--t3);display:block;margin-top:3px}.sx-meal-row>.sx-icon{color:var(--t3)}.sx-section>.btn,.sx-picker-actions>.btn{width:100%;min-height:50px;border-radius:16px;display:flex;align-items:center;justify-content:center;gap:8px;margin:0;font-size:14px;font-weight:650;padding:12px 16px}.sx-section .sx-primary{background:var(--green)!important;border:0;color:var(--on-acc,#fff)!important;box-shadow:none!important}.sx-link{display:flex;align-items:center;justify-content:space-between;gap:10px;border:0;background:none;color:var(--green-tx);font-size:13px;min-height:44px;text-align:left;padding:8px 3px;width:100%}.sx-link .sx-icon{width:18px}.sx-fold{border:1px solid var(--line);border-radius:18px;background:var(--surface);overflow:hidden}.sx-fold>summary,.sx-special>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:13px;font-weight:600;padding:15px}.sx-fold>summary::-webkit-details-marker,.sx-special>summary::-webkit-details-marker,.sx-choice>summary::-webkit-details-marker{display:none}.sx-fold>summary .sx-icon,.sx-special>summary .sx-icon{width:16px;height:16px;color:var(--t3)}.sx-fold[open]>summary .sx-icon,.sx-choice[open]>summary>.sx-icon{transform:rotate(180deg)}.sx-fold>div{padding:0 15px 15px;font-size:12px;color:var(--t2);line-height:1.75}.sx-fold p{margin:7px 0}.sx-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:65px;width:100%;border:0;border-bottom:1px solid var(--line);padding:12px 0;background:none;color:var(--t1);text-align:left}.sx-toggle>span{min-width:0;flex:1}.sx-toggle b{font-size:14px;line-height:1.4;display:block}.sx-toggle small{font-size:11px;line-height:1.5;color:var(--t3);display:block;margin-top:5px}.sx-toggle>i{width:42px;height:26px;min-width:42px;border-radius:20px;background:var(--line-btn);position:relative}.sx-toggle>i:after{content:'';width:20px;height:20px;position:absolute;top:3px;left:3px;background:var(--surface);border-radius:50%;box-shadow:0 1px 3px #0002}.sx-toggle[aria-checked=true]>i{background:var(--green)}.sx-toggle[aria-checked=true]>i:after{left:19px}.sx-section>.sx-toggle{border:1px solid var(--line);padding:15px;background:var(--surface);border-radius:20px}.sx-segment{display:flex;padding:4px;border-radius:14px;background:var(--bg2);gap:4px;margin:14px 0}.sx-segment button{flex:1;min-width:0;min-height:39px;border:0;background:none;border-radius:11px;color:var(--t2);font-size:12px}.sx-segment button[aria-pressed=true]{background:var(--surface);color:var(--green-tx);font-weight:700;box-shadow:0 2px 7px #233c2410}.sx-message{display:flex;gap:10px;padding:15px;border-radius:17px;background:var(--green-bg);margin:12px 0 16px;color:var(--green-tx)}.sx-message>span .sx-icon{width:20px;height:20px}.sx-message>div{min-width:0}.sx-message small{font-size:8px;letter-spacing:.1em;display:block;margin-bottom:7px}.sx-message b{font-size:14px;display:block}.sx-message p{font-size:12px;line-height:1.65;margin:5px 0 0}.sx-time-label{display:flex;align-items:center;gap:12px;justify-content:space-between}.sx-time-label>span{min-width:0;flex:1}.sx-time-label b{font-size:13px;display:block}.sx-time-label small{display:block;font-size:10px;line-height:1.5;color:var(--t3);margin-top:4px}.sx-time-label .input{width:105px;min-width:90px;min-height:43px;border-radius:13px;padding:8px}.sx-notice{display:flex;gap:12px;background:var(--yellow-bg);border:1px solid var(--yellow-bd);border-radius:18px;padding:16px;color:var(--yellow)}.sx-notice b{font-size:14px}.sx-notice p{font-size:12px;line-height:1.6;margin:6px 0 12px}.sx-chat{padding:18px;background:var(--bg2);border:1px solid var(--line);border-radius:22px;display:grid;gap:12px}.sx-bubble{padding:13px 15px;font-size:13px;line-height:1.55;max-width:90%;border-radius:17px}.sx-out{justify-self:end;background:var(--green-bg);color:var(--green-tx);border-bottom-right-radius:5px}.sx-in{justify-self:start;background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:5px}.sx-in b{font-size:13px}.sx-in p{margin:5px 0 9px}.sx-in>span{display:block;text-align:center;font-size:11px;font-weight:600;background:var(--bg2);padding:7px;border-radius:9px}.sx-chat>small{font-size:10px;line-height:1.5;color:var(--t3)}.sx-steps{display:grid;gap:15px}.sx-steps article{display:flex;align-items:center;gap:12px}.sx-steps i{font-style:normal;font-weight:600;font-size:12px;width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:var(--green-bg);color:var(--green-tx);flex-shrink:0}.sx-steps b{font-size:13px;display:block}.sx-steps small{font-size:11px;color:var(--t3);display:block;margin-top:3px}.sx-plus-note{font-size:11px;font-weight:600;color:var(--green-tx);padding:12px 15px;background:var(--green-bg);border-radius:15px}.sx-plus-note span{font-weight:400;display:block;color:var(--t2);margin-top:4px}.sx-example-track{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--t3)}.sx-example-track i{height:4px;flex:1;background:var(--line-btn);border-radius:3px}.sx-example-track i:before{content:'';display:block;width:20%;height:100%;border-radius:3px;background:var(--green)}
.sx-card-heading,.sx-picker-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.sx-card-heading h3{margin:0}.sx-card-heading>span,.sx-picker-heading>span{font-size:10px;color:var(--t3);white-space:nowrap}.sx-card-heading{margin-bottom:14px}.sx-source-mini{display:flex;gap:10px;align-items:center;margin:14px 0}.sx-source-mini>.sx-icon{color:var(--green-tx);width:20px;height:20px}.sx-source-mini>span{min-width:0}.sx-source-mini b{display:block;font-size:13px;overflow-wrap:anywhere}.sx-source-mini small{display:block;font-size:10px;color:var(--t3);overflow-wrap:anywhere;margin-top:3px}.sx-card>.btn{width:100%;min-height:46px;border-radius:14px;font-size:13px;margin-top:12px;box-shadow:none}.sx-card .cal-option{display:flex;flex-direction:row-reverse;align-items:center;gap:14px;padding:14px 0;min-height:58px}.sx-card .cal-option>span{flex:1;font-size:13px;line-height:1.5}.sx-card .cal-option input{appearance:none;-webkit-appearance:none;width:42px;height:26px;flex-shrink:0;border:0;border-radius:20px;background:var(--line-btn);position:relative;margin:0;cursor:pointer}.sx-card .cal-option input:before{content:'';position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:var(--surface);box-shadow:0 1px 3px #0002}.sx-card .cal-option input:checked{background:var(--green)}.sx-card .cal-option input:checked:before{left:19px}.sx-choice{margin:14px 0;border:1px solid var(--line);border-radius:15px;overflow:hidden}.sx-choice>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;cursor:pointer}.sx-choice small{display:block;font-size:10px;color:var(--t3);margin-bottom:4px}.sx-choice b{font-size:13px;overflow-wrap:anywhere;display:block}.sx-choice>div{padding:5px 10px 10px;border-top:1px solid var(--line)}.sx-choice button{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:12px 7px;min-height:45px;text-align:left;background:none;color:var(--t1);border:0;border-radius:10px;font-size:12px}.sx-choice button[aria-pressed=true]{background:var(--green-bg);color:var(--green-tx)}.sx-choice em{font-size:10px;font-style:normal;white-space:nowrap}.sx-choice>div>p{font-size:12px;line-height:1.6;padding:5px;color:var(--t3)}.sx-picker-heading>b{font-size:18px}.sx-search{display:flex;align-items:center;gap:9px;min-height:48px;border:1px solid var(--line);border-radius:15px;background:var(--bg2);padding:0 13px;color:var(--t3)}.sx-search input{min-width:0;width:100%;font:inherit;font-size:13px;background:none;border:0;color:var(--t1);outline:0;padding:12px 0}.sx-account{border:1px solid var(--line);border-radius:20px;background:var(--surface);padding:15px;margin:0 0 12px}.sx-account h3{font-size:11px;font-weight:600;color:var(--t3);overflow-wrap:anywhere;line-height:1.5;margin:0 0 9px}.sx-calendar-row{display:flex;align-items:center;gap:10px;min-height:67px;padding:12px 0;width:100%;background:none;color:var(--t1);text-align:left;border:0;border-bottom:1px solid var(--line-soft);font:inherit}.sx-calendar-row>i{width:33px;height:37px;flex-shrink:0;display:grid;place-items:center;background:var(--bg2);border-radius:11px;color:var(--t3)}.sx-calendar-row[aria-pressed=true]>i{background:var(--green-bg);color:var(--green-tx)}.sx-calendar-row>span{flex:1;min-width:0}.sx-calendar-row b{font-size:13px;font-weight:600;line-height:1.4;display:block;overflow-wrap:anywhere}.sx-calendar-row small{font-size:10px;color:var(--t3);line-height:1.5;display:block;margin-top:4px}.sx-calendar-row>em{font-size:9px;font-style:normal;line-height:1;padding:7px 9px;border-radius:20px;white-space:nowrap;background:var(--bg2);color:var(--t3);flex-shrink:0}.sx-calendar-row[aria-pressed=true]>em{background:var(--green-bg);color:var(--green-tx);font-weight:650}.sx-special{margin-top:6px}.sx-special>summary{font-size:11px;padding:10px 0;color:var(--t3)}.sx-picker-actions{display:grid;grid-template-columns:1fr;gap:9px}.sx-picker [hidden]{display:none!important}.sx-no-results{font-size:13px;line-height:1.6;color:var(--t3);padding:16px}.sx-import .calendar-primary{display:flex;align-items:center;justify-content:center;gap:8px;min-height:50px;box-shadow:none}.functional #quitscroll .sx-quits+.addrow{width:100%;background:var(--green);color:var(--on-acc,#fff);border:0;min-height:50px;border-radius:16px;margin-top:18px;font-weight:600}.sx-quits{padding-top:12px}.sx-section .sx-icon{pointer-events:none}@media(max-width:360px){.sx-hero h2{font-size:23px}.sx-card,.sx-example{padding:15px}.sx-period{padding:14px}.sx-period b{font-size:14px}.sx-toggle{gap:10px}.sx-account{padding:12px}.sx-calendar-row{gap:8px}.sx-calendar-row b{font-size:12px}.sx-calendar-row>i{width:28px}.sx-calendar-row>em{padding:6px;font-size:8px}.sx-time-label .input{width:88px;min-width:88px}.sx-hero p,.sx-lead{font-size:12px}}
.functional .sheet:has(.sx-picker)>.sheet-foot{display:none}.sx-picker-actions{position:sticky;bottom:0;background:var(--surface);padding:12px 0 0;margin-top:3px;z-index:2}
.sx-clear{justify-self:end;font:inherit;font-size:11px;min-height:40px;padding:7px 10px;color:var(--green-tx);border:1px solid var(--line);border-radius:12px;background:var(--surface);margin-top:-9px}

/* правки владельца, 10 октября 2026 */
/* подписи обращения — по центру своих половин */
.functional .sx-segment button{display:flex;align-items:center;justify-content:center;text-align:center;padding:0 8px;line-height:1.2}
/* «Подключить Telegram» — голубая, как сам Telegram, во всех темах и палитрах */
.functional .sx-section .btn.sx-primary.sx-tg{background:#1b87c5!important;background-image:none!important;border:0!important;color:#fff!important;box-shadow:0 6px 16px #1b87c52e!important}
.functional .sx-section .btn.sx-primary.sx-tg:active{background:#1777ae!important}
/* «Готово» рядом с главным действием страницы — спокойная, без заливки */
.functional .sheet-foot .btn.sx-done{background:transparent;background-image:none;border:1px solid var(--line);color:var(--t1);box-shadow:none;font-weight:600}

.functional .sx-segment button[aria-pressed=true]{box-shadow:0 2px 7px #233c2410,inset 0 0 0 1px var(--line)}
.functional .sx-tone-note{margin:-4px 0 14px;text-align:center}

/* выбор календарей устройства — правки владельца с телефона, 10 октября 2026 (сборка 62) */
/* шапка: название, счёт и «Очистить» одной строкой */
.functional .sx-picker-heading{justify-content:flex-start;gap:10px;min-height:40px}
.functional .sx-picker-heading>b{font-size:17px;letter-spacing:-.2px}
.functional .sx-picker-heading>span{margin-right:auto}
.functional .sx-picker .sx-clear{justify-self:auto;margin:0;min-height:36px;padding:6px 12px;font-size:12px;font-weight:600;border-radius:999px;white-space:nowrap}
/* поле поиска — одна рамка, без второй вокруг самого поля */
.functional .sx-search input,.functional .sx-search input:focus,.functional .sx-search input:focus-visible{border:0!important;outline:0!important;box-shadow:none!important;background:transparent!important}
.functional .sx-search:focus-within{border-color:var(--green,#3e6653);box-shadow:0 0 0 2px var(--green-bg,#e6efe8)}
.functional .sx-picker-note{margin:-6px 2px 0;font-size:11.5px;line-height:1.5;color:var(--t3)}
/* нижние кнопки: во всю ширину шторки, одним рядом, в цвет шторки и выше системных кнопок телефона */
.functional .sx-picker-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:8px;margin:0 -20px -18px;padding:12px 16px calc(14px + var(--safe-bottom,0px));border-top:1px solid var(--line);background:var(--surface)}
.functional .sx-picker-actions .btn{min-height:48px;margin:0;width:100%}
html[data-luxe] .functional .sx-picker-actions{background:var(--bg);border-color:var(--line-soft,var(--line))}
/* открыта клавиатура (поле поиска в фокусе): кнопки не висят посреди экрана, а стоят в конце списка */
.functional .sx-picker:has([data-sx-search]:focus) .sx-picker-actions{position:static}
/* липкая панель встаёт на край видимой области без учёта нижнего отступа шторки — опускаем на этот отступ, чтобы под ней не просвечивал список */
.functional .sx-picker-actions{bottom:-18px}

/* блок раздела и то, что идёт за ним, не стоят впритык (владелец, 10 октября 2026) */
.functional .sx-section+*{margin-top:18px}

/* перечень подключённых Telegram на странице «Telegram» (js/auth.js) */
.sx-linked{display:grid;gap:10px}.sx-linked .sx-kicker{margin-bottom:2px}
.sx-linked-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;padding:12px 14px;border:1px solid var(--line,rgba(127,127,127,.22));border-radius:16px}
.sx-linked-row>span{min-width:0}.sx-linked-row b{display:block;font-size:14px;overflow-wrap:anywhere}.sx-linked-row small{display:block;font-size:11px;color:var(--t3);margin-top:3px}
.sx-linked-row button{flex-shrink:0;min-height:40px;padding:0 14px;border-radius:12px;border:1px solid var(--line,rgba(127,127,127,.3));background:transparent;color:var(--t1)}

/* карточка «У вас уже есть Зарок?» на «Дне» внутри Telegram (js/screens.js, tgHaveCard) */
.tg-have{margin:0 16px 14px;padding:16px;border:1px solid var(--line,rgba(127,127,127,.22));border-radius:20px;background:var(--surface,transparent)}.tg-have .demo-caption{margin:8px 0 0}.tg-have .btn{margin-top:12px;width:100%;min-height:46px}
#dayscroll .tg-have{margin:0 16px 14px!important;width:auto!important}
.tg-have .tg-home-row{display:flex;gap:8px;margin-top:12px}.tg-have .tg-home-row .btn{margin-top:0;flex:1 1 0;width:auto;min-width:0}.sx-tgwin .tgwin-home{margin-top:12px}
.sx-linked-note{margin:2px 2px 0;font-size:12px;line-height:1.45;color:var(--t3)}
/* Пустые состояния — компактно (владелец, 17.10.2026): маленький значок слева, текст справа, без крупной картинки.
   Один вид для заставок разделов профиля (.sx-hero), пустых списков и лент; переключатели и кнопки видны сразу. */
.functional .sx-hero{display:grid;grid-template-columns:40px minmax(0,1fr);column-gap:12px;align-items:start;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.functional .sx-hero .sx-illustration{grid-row:1/span 3;width:40px;height:40px;margin:0}
.functional .sx-hero .sx-illustration>i,.functional .sx-hero .sx-illustration>b{display:none}
.functional .sx-hero .sx-illustration>span{width:40px;height:40px;border-radius:13px;transform:none;box-shadow:none;background:var(--green-bg);border-color:transparent}
.functional .sx-hero .sx-illustration>span .sx-icon{width:21px;height:21px;transform:none}
.functional .sx-hero .sx-kicker{display:block;margin:1px 0 0;text-align:left}
.functional .sx-hero h2{font-size:16px;line-height:1.3;letter-spacing:-.2px;margin:2px 0 3px;max-width:none}
.functional .sx-hero p{font-size:12.5px;line-height:1.5;max-width:none;margin:0}
.functional :is(.pc-empty,.fa-empty,.sh-empty,.notice-empty){display:grid;grid-template-columns:36px minmax(0,1fr);column-gap:12px;align-items:start;text-align:left;padding:14px 16px}
.functional :is(.pc-empty,.fa-empty,.notice-empty)>span,.functional .sh-empty .sh-empty-art{grid-row:1/span 2;width:36px;height:36px;margin:0;display:grid;place-items:center;border-radius:12px;background:var(--green-bg);color:var(--green-tx);font-size:18px;line-height:1}
.functional :is(.pc-empty,.fa-empty,.sh-empty,.notice-empty) svg{width:20px;height:20px;stroke-width:1.5}
.functional :is(.pc-empty,.sh-empty,.notice-empty) h3,.functional .fa-empty h4{font:600 15px/1.35 var(--ui);margin:1px 0 3px}
.functional :is(.pc-empty,.fa-empty,.sh-empty,.notice-empty) p{font-size:12.5px;line-height:1.5;margin:0}
.functional :is(.pc-empty,.sh-empty) button{grid-column:1/-1;margin-top:12px;width:100%}
.functional .fa-empty{margin-top:14px}
.functional :is(.dayempty,.empty).zerostate{padding:16px 18px 12px}
.functional .zerostate-art,html[data-luxe] .functional .zerostate-art{width:52px;height:42px;margin:0 0 8px}
.functional .zerostate h2{font-size:1.0625rem}
html[data-luxe] .functional .zerostate h2{font-size:1.1875rem}
.functional .zerostate .scn-start{margin-top:12px}
.functional .zerostate::after{margin-top:12px}
html[data-luxe] .functional :is(.dayempty.zerostate,.empty.zerostate){padding:18px 18px 14px}


/* ---- section-design-plus.css ---- */
/* Plus gets its own material layer. Ordinary themes do not match these selectors. */
html:is([data-theme=porcelain],[data-theme=obsidian],[data-theme=cobalt],[data-theme=copper],[data-theme=jade],[data-theme=aquamarine]) .functional :is(.sx-card,.sx-example,.sx-account,.sx-fold,.sx-section>.sx-toggle){background:linear-gradient(145deg,color-mix(in srgb,var(--surface) 92%,var(--green) 8%),var(--surface));border-color:color-mix(in srgb,var(--line) 83%,var(--green) 17%);box-shadow:inset 0 1px 0 color-mix(in srgb,var(--t1) 5%,transparent),0 8px 24px color-mix(in srgb,var(--bg) 30%,transparent)}
html:is([data-theme=porcelain],[data-theme=obsidian],[data-theme=cobalt],[data-theme=copper],[data-theme=jade],[data-theme=aquamarine]) .functional .sx-illustration>span{background:linear-gradient(145deg,var(--green-bg),var(--surface));border-color:color-mix(in srgb,var(--green) 28%,var(--line));box-shadow:0 10px 25px color-mix(in srgb,var(--green) 12%,transparent),inset 0 1px 0 color-mix(in srgb,var(--t1) 14%,transparent)}
html:is([data-theme=porcelain],[data-theme=obsidian],[data-theme=cobalt],[data-theme=copper],[data-theme=jade],[data-theme=aquamarine]) .functional .sx-kicker{color:var(--lx-gold,var(--green-tx))}
html:is([data-theme=porcelain],[data-theme=obsidian],[data-theme=cobalt],[data-theme=copper],[data-theme=jade],[data-theme=aquamarine]) .functional .sx-period{background:linear-gradient(130deg,var(--green-bg),var(--surface));border-color:color-mix(in srgb,var(--green) 24%,var(--line))}
html:is([data-theme=porcelain],[data-theme=obsidian],[data-theme=cobalt],[data-theme=copper],[data-theme=jade],[data-theme=aquamarine]) .functional .sx-plus-note{border:1px solid color-mix(in srgb,var(--green) 22%,var(--line));background:linear-gradient(130deg,var(--green-bg),var(--surface))}


/* ---- sounds.css ---- */
/* Раздел «Звуки» (js/sounds.js): карточки настроек в стиле профиля (section-design.css), без системных списков */
.snd{gap:14px}
.snd-card{display:grid;gap:12px;padding:16px}
.snd-dim .snd-choice{opacity:.62}
.snd-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}
.snd-head>span{min-width:0;flex:1}
.snd-head b{display:block;font-size:15px;line-height:1.4;font-weight:700}
.snd-head small{display:block;font-size:11px;line-height:1.5;color:var(--t3);margin-top:3px}
.snd-play{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;min-height:36px;padding:0 13px 0 10px;border-radius:18px;border:1px solid var(--line);background:var(--bg2);color:var(--green-tx);font:600 12px/1 var(--ui,inherit);cursor:pointer}
.snd-play svg{width:16px;height:16px}
.snd-play.on{background:var(--green-bg);border-color:transparent}
.snd-play:focus-visible,.snd-choice button:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.snd .snd-choice{margin:0}
.snd .snd-choice>summary .sx-icon{width:16px;height:16px;color:var(--t3);transition:transform .2s}
.snd .snd-choice>div{max-height:460px;overflow:auto;overscroll-behavior:contain}
.snd-note{font-size:12px!important;color:var(--t3)!important}
.snd-quiet h3,.snd-vol-card h3{margin-bottom:4px}
.snd-times{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.snd-times label{display:grid;gap:6px;font-size:11px;color:var(--t3);min-width:0}
.snd-times .input{width:100%;min-height:44px;border-radius:13px;text-align:center;font-size:15px;font-weight:600;cursor:pointer}
.snd-quiet>.sx-lead,.snd-vol-card>.sx-lead{margin-top:10px;font-size:12px}
.snd-vol{display:flex;align-items:center;gap:12px;min-height:44px;font-size:13px}
.snd-vol input{flex:1;min-width:0;accent-color:var(--green);height:28px}
.snd-foot{text-align:center;font-size:12px!important;color:var(--t3)!important;padding:0 8px}
@media (prefers-reduced-motion:reduce){.snd .snd-choice>summary .sx-icon{transition:none}}
@media (max-width:360px){.snd-card{padding:14px}.snd-play span{display:none}.snd-play{padding:0 10px}}


/* ---- neural.css ---- */
.neural-page{display:grid;gap:18px;color:var(--t1)}.neural-count{margin-left:8px;margin-right:auto;font:600 12px/1.2 var(--ui);color:var(--t2);font-variant-numeric:tabular-nums;white-space:nowrap}.neural-full{margin:0;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg2);color:var(--t1);font-size:13px;line-height:1.45}.neural-page *{box-sizing:border-box}.neural-intro{text-align:center;padding:8px 0 3px}.neural-intro>span{font-size:9px;letter-spacing:.12em;color:var(--t3)}.neural-intro h2{font-size:25px;line-height:1.22;margin:12px 0 10px;letter-spacing:-.6px}.neural-intro p,.neural-muted{font-size:12px;line-height:1.7;color:var(--t2);margin:0}.neural-tabs{display:flex;gap:3px;padding:4px;background:var(--bg2);border:1px solid var(--line);border-radius:15px}.neural-tabs button{flex:1;min-width:0;font:inherit;font-size:11px;padding:11px 4px;border:0;border-radius:11px;background:none;color:var(--t2);text-align:center}.neural-tabs [aria-pressed=true]{background:var(--surface);color:var(--green-tx);font-weight:650;box-shadow:0 2px 6px #233a2410}.neural-clients{border:1px solid var(--line);background:var(--surface);border-radius:22px;padding:4px 15px}.neural-clients>button{display:flex;align-items:center;gap:12px;width:100%;padding:16px 0;background:none;border:0;border-bottom:1px solid var(--line);text-align:left;min-height:80px}.neural-clients>button:last-child{border:0}.neural-clients i{width:42px;height:42px;flex-shrink:0;display:grid;place-items:center;font-size:13px;font-style:normal;font-weight:750;border-radius:15px;background:var(--green-bg);color:var(--green-tx)}.neural-clients span{flex:1;min-width:0}.neural-clients b{font-size:14px;display:block}.neural-clients small{font-size:11px;line-height:1.65;display:block;color:var(--t3);margin-top:4px}.neural-clients em{font-size:23px;color:var(--t3);font-style:normal}.neural-endpoint,.neural-status,.neural-consent,.neural-connection,.neural-proposal,.neural-guide,.neural-empty{padding:18px;border:1px solid var(--line);background:var(--surface);border-radius:21px}.neural-endpoint{background:var(--green-bg)}.neural-endpoint small{display:block;font-size:9px;letter-spacing:.1em;color:var(--green-tx);margin-bottom:10px}.neural-endpoint code,.neural-command code{display:block;white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;line-height:1.7;color:var(--t1)}.neural-endpoint button,.neural-guide>button{font:inherit;font-size:11px;color:var(--green-tx);min-height:35px;background:none;border:0;padding:8px 0}.neural-status b{font-size:13px}.neural-status p,.neural-guide p,.neural-consent p,.neural-proposal>p,.neural-empty p{font-size:12px;line-height:1.75;color:var(--t2);margin:8px 0 0}.neural-status{background:var(--bg2)}.neural-guide h3,.neural-consent h3,.neural-connection h3,.neural-proposal h3,.neural-section-heading h3{font-size:16px;line-height:1.4;margin:5px 0 10px}.neural-command{padding:12px;background:var(--bg2);border:1px solid var(--line);border-radius:13px;margin-top:14px}#neural-code{display:grid;gap:10px}#neural-code label{font-size:12px;font-weight:600;color:var(--t2)}#neural-code input{display:block;width:100%;font:inherit;font-size:14px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--t1);margin-top:8px}#neural-code button,.neural-primary{font:inherit;font-size:13px;font-weight:650;padding:13px 15px;width:100%;border:0;border-radius:14px;background:var(--green);color:var(--on-acc,#fff);min-height:47px;text-align:center}.neural-consent>span,.neural-proposal>span{display:block;font-size:9px;letter-spacing:.1em;color:var(--t3);margin-bottom:12px}.neural-consent ul{padding-left:20px;font-size:12px;line-height:1.8;color:var(--t2)}.neural-consent>.neural-primary{margin-top:15px}.neural-text{display:block;font:inherit;font-size:12px;text-align:center;color:var(--t3);min-height:43px;border:0;width:100%;background:none;margin-top:6px}.neural-note{padding:16px;border:1px solid var(--line);border-radius:17px;background:var(--surface);font-size:12px;line-height:1.75}.neural-note summary{font-size:12px;font-weight:600;cursor:pointer;color:var(--t1)}.neural-note p{color:var(--t2);margin:10px 0 0}.neural-note small{display:block;color:var(--t3);font-size:10px}.neural-alert{padding:16px;border:1px solid var(--yellow-bd);background:var(--yellow-bg);border-radius:17px;color:var(--yellow);font-size:12px;line-height:1.7}.neural-alert button{display:block;border:0;min-height:35px;background:none;font:inherit;text-decoration:underline}.neural-chips{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.neural-chips span{padding:6px 9px;font-size:9px;background:var(--green-bg);color:var(--green-tx);border-radius:11px}.neural-revoke{font:inherit;font-size:12px;padding:9px 12px;border:1px solid var(--line);border-radius:11px;background:var(--bg2);color:var(--t2);min-height:40px}.neural-section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.neural-section-heading h3{margin:0}.neural-section-heading button{font-size:11px;min-height:36px;color:var(--green-tx)}.neural-proposal ol{padding-left:18px;display:grid;gap:13px;margin:17px 0}.neural-proposal li{font-size:12px;line-height:1.6}.neural-proposal li b,.neural-proposal li span,.neural-proposal li small{display:block;overflow-wrap:anywhere}.neural-proposal li span{color:var(--t2);margin-top:3px}.neural-proposal li small{font-size:10px;color:var(--t3)}.neural-empty{text-align:center;padding:26px 20px}.neural-empty b{font-size:16px}.neural-page button:disabled{opacity:.45;cursor:default}@media(max-width:360px){.neural-tabs button{font-size:10px}.neural-clients{padding:3px 12px}.neural-clients i{width:35px;height:38px;border-radius:12px}.neural-intro h2{font-size:23px}}
html:is([data-theme=obsidian],[data-theme=porcelain],[data-theme=cobalt],[data-theme=copper]) .neural-page :is(.neural-clients,.neural-consent,.neural-connection,.neural-proposal,.neural-empty){background:linear-gradient(145deg,color-mix(in srgb,var(--surface) 94%,var(--green) 6%),var(--surface));border-color:color-mix(in srgb,var(--line) 85%,var(--green) 15%)}

.neural-undo-list{display:grid;gap:8px;margin:16px 0}.neural-undo-list label{display:flex;align-items:center;gap:12px;border:1px solid var(--line);padding:12px;border-radius:16px;cursor:pointer}.neural-undo-list input{width:20px;height:20px;flex:0 0 20px;accent-color:var(--green)}.neural-undo-list span{min-width:0;overflow-wrap:anywhere}.neural-undo-list b,.neural-undo-list small{display:block}.neural-undo-list small{margin-top:5px;color:var(--t3);font-size:12px;line-height:1.5}

/* доработки при переносе, 10 октября 2026 */
/* знаки сервисов на плитках: OpenAI — белый на чёрном, Claude — на оранжевом, Gemini — цветная звезда на светлом */
.functional .neural-ava{position:relative;flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:14px;font-style:normal;background:var(--bg2);color:var(--t2);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--t1) 8%,transparent)}
.functional .neural-ava svg{width:24px;height:24px}
.functional .neural-ava.openai{background:#0d0d0d;color:#fff}
.functional .neural-ava.claude{background:#d97757;color:#fff}.functional .neural-ava.claude svg{width:26px;height:26px}
.functional .neural-ava.gemini{background:#fff}
.neural-ava.grok{background:#000;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}
html[data-theme=dark] .functional .neural-ava.openai,html[data-theme=bwdark] .functional .neural-ava.openai,html[data-luxe=dark] .functional .neural-ava.openai{box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}
.functional .neural-way{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.functional .neural-way b{font-size:13px}.functional .neural-way p{margin-top:4px}
.functional .neural-who{display:flex;align-items:center;gap:12px;margin:0 0 10px}.functional .neural-who h3{margin:0}
.functional .neural-who.small{gap:9px;margin-bottom:12px}.functional .neural-who.small .neural-ava{width:28px;height:28px;border-radius:9px}.functional .neural-who.small .neural-ava svg{width:16px;height:16px}.functional .neural-who.small .neural-ava u{display:none}
.functional .neural-who.small>span{font-size:9px;letter-spacing:.1em;color:var(--t3);text-transform:uppercase}
.functional .neural-guide .neural-who{margin-top:12px}
.functional .neural-warn{display:block;margin-top:10px;font-size:11px;line-height:1.55;color:var(--t3)}

.functional .neural-undo-actions{display:grid;gap:6px;margin-top:14px}.functional .neural-undo-actions .neural-text{justify-self:center}

/* команду и адрес можно выделить пальцем и скопировать кнопкой */
.functional .neural-command code,.functional .neural-endpoint code{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default;overflow-wrap:anywhere}
.functional .neural-command{display:grid;gap:10px}
/* шаги подключения (ChatGPT) и мелкая оговорка под ними; на телефоне — адрес и две кнопки в ряд */
.functional .neural-steps{margin:8px 0 0;padding-left:20px;display:grid;gap:6px;font:400 .8125rem/1.45 var(--ui);color:var(--t1)}.functional .neural-steps li{padding-left:2px}
.functional .neural-way .neural-fine{margin-top:8px;font:400 .75rem/1.4 var(--ui);color:var(--t2)}
.functional .neural-phone{grid-template-columns:1fr 1fr;margin-top:10px}.functional .neural-phone code{grid-column:1 / -1}.functional .neural-phone button{justify-self:stretch}
@media(max-width:340px){.functional .neural-phone{grid-template-columns:1fr}}
.functional .neural-command button{justify-self:start;min-height:40px;padding:0 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--t1);font:600 .8125rem/1.2 var(--ui)}
/* шаг 137, Н-1: отметка «новое» у подключения, сделанного на странице подключения */
.neural-page .neural-new{border-color:var(--yellow-bd);background:var(--yellow-bg)}.neural-page .neural-new b,.neural-page .neural-new p{color:var(--yellow)}
.neural-page .neural-badge{margin-left:auto;padding:4px 9px;font:600 10px/1.2 var(--ui);border-radius:11px;border:1px solid var(--yellow-bd);background:var(--yellow-bg);color:var(--yellow);white-space:nowrap}


/* ---- composer.css ---- */
/* ============================================================
   composer.css — общий редактор дел (js/composer.js)
   Цвета только из палитры темы (--bg, --surface, --line, --t1…--t3,
   --acc-2/3, --on-acc, --green-tx, --danger): так редактор следует
   всем 24 темам — светлым, тёмным, Plus-материалам, «Ханами»/«Цукими»
   и «Мемам». Радиус и отступы — как у соседних листов (.functional
   .sheet: 24px), безопасные поля — --safe-top / --safe-bottom.
   Круглой кнопки «+» нет: редактор открывают кнопки внизу плана.
   ============================================================ */
.zc-dialog{position:fixed;inset:auto 0 0;margin:0 auto;padding:0;width:min(100%,560px);max-width:100%;max-height:min(92dvh,860px);
  border:1px solid var(--line);border-bottom:0;border-radius:24px 24px 0 0;background:var(--bg);color:var(--t1);
  box-shadow:0 -8px 32px #16231c18;overflow:hidden;font:inherit}
.zc-dialog::backdrop{background:rgba(20,30,24,.42)}
.zc-dialog[open]{display:flex;flex-direction:column}
.zc-dialog.zc-full{inset:0;width:min(100%,760px);max-height:100dvh;height:100dvh;border-radius:0;border:0;padding-top:var(--safe-top,0px)}
.zc-dialog *{box-sizing:border-box}
.zc-dialog button,.zc-dialog input,.zc-dialog textarea,.zc-dialog select{font:inherit;letter-spacing:inherit}
.zc-dialog button{cursor:pointer;color:inherit}
.zc-dialog button:disabled{opacity:.5;cursor:wait}
.zc-dialog svg,.zc-inline-asset svg{width:20px;height:20px;flex-shrink:0}
.zc-dialog :focus-visible{outline:2px solid var(--acc-2);outline-offset:2px}
.zc-dialog [hidden]{display:none!important}

.zc-grip{width:36px;height:4px;border-radius:9px;background:var(--mark);margin:10px auto 0;flex-shrink:0}
.zc-top{display:flex;align-items:center;gap:8px;padding:12px 16px 10px;flex-shrink:0}
.zc-top-title{margin:0;flex:1;min-width:0;font-weight:700;font-size:18px;line-height:1.3}
.zc-top-copy{flex:1;min-width:0}
.zc-eyebrow{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--green-tx);margin-bottom:2px}
.zc-icon{width:44px;height:44px;display:grid;place-items:center;background:transparent;border:1px solid var(--line);border-radius:12px;flex-shrink:0;color:var(--t2)}
.zc-top .zc-icon{background:var(--surface)}
.zc-main{padding:0 16px 16px;overflow-y:auto;overscroll-behavior:contain;min-height:0;flex:1}

.zc-offer{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;justify-content:space-between;padding:10px 12px;margin:2px 0 10px;border:1px solid var(--line);border-radius:14px;background:var(--surface);font-size:13px;line-height:1.45;color:var(--t2)}
.zc-offer b{color:var(--t1);overflow-wrap:anywhere}
.zc-offer-btns{display:flex;gap:6px;margin-left:auto}
.zc-accent{background:var(--acc-2)!important;border-color:var(--acc-2)!important;color:var(--on-acc)!important;font-weight:700}

.zc-mode{display:flex;gap:4px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none}
.zc-mode button{min-height:40px;padding:8px 12px;border:1px solid transparent;background:transparent;border-radius:12px;font-size:13px;white-space:nowrap;color:var(--t2)}
.zc-mode button[aria-pressed=true]{border-color:var(--line);background:var(--surface);color:var(--green-tx);font-weight:700}
.zc-kind{font-size:12px;color:var(--t3);padding:2px 0 6px}

.zc-title{display:block;width:100%;padding:8px 0 4px;border:0;background:transparent;resize:none;min-height:56px;max-height:220px;font-weight:600;font-size:21px;line-height:1.35;color:var(--t1);overflow:auto;overflow-wrap:anywhere}
.zc-title::placeholder,.zc-note::placeholder{color:var(--t3);font-weight:500}
.zc-note{display:block;border:0;background:transparent;resize:none;width:100%;color:var(--t2);font-size:14px;line-height:1.6;padding:6px 0;min-height:46px}
.zc-title:focus-visible,.zc-note:focus-visible{outline:0;box-shadow:0 1px 0 var(--acc-ring)}
.zc-full .zc-note{min-height:180px}
.zc-full .zc-title{max-height:35dvh}

.zc-summary{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 0 12px;min-height:44px}
.zc-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);color:var(--t1);border-radius:10px;padding:6px 10px;min-height:34px;font-size:12px;line-height:1.25;max-width:100%;overflow-wrap:anywhere}
.zc-chip svg{width:15px;height:15px}
.zc-chip.zc-tag{background:var(--fill-2);border-color:transparent;color:var(--t2)}
.zc-chip.zc-high{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}

.zc-toolrow{display:flex;gap:2px;padding:6px 0;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);align-items:center}
.zc-tool{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;background:transparent;color:var(--t2)!important;border-radius:12px;position:relative;flex-shrink:0}
.zc-tool[aria-expanded=true]{background:var(--surface);color:var(--green-tx)!important;box-shadow:inset 0 0 0 1px var(--line)}
.zc-toolrow .zc-more{margin-left:auto}

.zc-panel{margin-top:12px;border:1px solid var(--line);border-radius:18px;padding:14px;background:var(--surface)}
.zc-panel-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.zc-panel-head h3{margin:0;font-size:15px;font-weight:700;flex:1}
.zc-panel-head .zc-icon{width:40px;height:40px;border:0}
.zc-panel .zc-icon svg{width:17px;height:17px}
.zc-h4{margin:0;font-size:14px}
.zc-gap{margin-top:12px}
.zc-row-end{display:flex;justify-content:space-between;gap:8px;margin-top:12px}
.zc-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.zc-field{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:12px;color:var(--t2);font-weight:600}
.zc-field input,.zc-field select,.zc-field textarea,.zc-search{min-width:0;width:100%;min-height:44px;border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:10px 12px;color:var(--t1);font-size:14px;line-height:1.4}
.zc-field textarea{resize:vertical;min-height:80px}
.zc-subtle{font-size:12px;color:var(--t3);line-height:1.5;margin:10px 0 0}
.zc-top-gap0{margin-top:0}
.zc-quick{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:12px}
.zc-quick button{border:1px solid var(--line);background:var(--bg);color:var(--t1);border-radius:12px;padding:8px 4px;min-height:48px;font-size:13px;text-align:center;line-height:1.3}
.zc-quick button[aria-pressed=true]{border-color:var(--acc-2);box-shadow:inset 0 0 0 1px var(--acc-2);font-weight:700}
.zc-quick small{display:block;font-size:11px;color:var(--t3);margin-top:2px}
.zc-quick.zc-sun{grid-template-columns:repeat(auto-fit,minmax(112px,1fr));margin:10px 0 0}
.zc-sun-hint{margin:6px 2px 0}
.zc-option-list{display:grid;gap:6px}
.zc-option{display:flex;align-items:center;text-align:left;gap:10px;min-height:48px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--t1);padding:8px 12px;font-size:14px}
.zc-option[aria-pressed=true]{border-color:var(--acc-2);box-shadow:inset 0 0 0 1px var(--acc-2);font-weight:700}
.zc-option .zc-tick{margin-left:auto;color:var(--green-tx)}
.zc-folder-name{flex:1;min-width:0;overflow-wrap:anywhere}
.zc-priority-mark{display:inline-flex;width:28px;height:28px;align-items:center;justify-content:center;border-radius:8px;background:var(--surface);color:var(--t2)}
.zc-pm-high{color:var(--danger)}
.zc-wrapping{display:flex;flex-wrap:wrap;gap:6px}
.zc-tag-option{min-height:36px;border:1px solid var(--line);padding:6px 10px;border-radius:10px;background:var(--bg);color:var(--t1);font-size:13px;max-width:100%;overflow-wrap:anywhere}
.zc-tag-option[aria-pressed=true]{border-color:var(--acc-2);box-shadow:inset 0 0 0 1px var(--acc-2);color:var(--green-tx);font-weight:700}
.zc-line-input{display:flex;gap:8px;margin-top:12px}
.zc-line-input input{flex:1;min-width:0}
.zc-small-btn{min-height:44px;padding:8px 12px;border:1px solid var(--line);background:var(--bg);color:var(--t1);border-radius:12px;font-size:13px;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}
.zc-small-btn svg{width:16px;height:16px}
.zc-text-btn{min-height:44px;border:0;background:transparent;padding:6px 4px;color:var(--green-tx)!important;font-size:13px;font-weight:600;line-height:1.4}
.zc-extra-menu{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.zc-extra-menu button{border:1px solid var(--line);background:var(--bg);color:var(--t1);border-radius:12px;padding:10px 12px;min-height:48px;display:flex;align-items:center;gap:8px;font-size:13px;text-align:left}
.zc-more-settings{margin-top:12px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.zc-more-settings>summary{list-style:none;display:flex;gap:8px;align-items:center;min-height:48px;padding:10px 14px;font-size:13px;font-weight:600;cursor:pointer;color:var(--t2)}
.zc-more-settings>summary::-webkit-details-marker{display:none}
.zc-more-settings>summary:after{content:'+';margin-left:auto;font-size:18px;font-weight:400}
.zc-more-settings[open]>summary:after{content:'−'}
.zc-more-settings>div{padding:2px 14px 14px}
.zc-week{display:flex;gap:4px;margin-top:10px}
.zc-week button{flex:1;min-width:0;min-height:40px;border:1px solid var(--line);background:var(--bg);color:var(--t1);padding:6px 0;border-radius:10px;font-size:12px}
.zc-week button[aria-pressed=true]{color:var(--on-acc);background:var(--acc-2);border-color:var(--acc-2);font-weight:700}

.zc-footer{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:12px 16px calc(14px + var(--safe-bottom,0px));border-top:1px solid var(--line);background:var(--bg);flex-shrink:0}
.zc-footer-copy{font-size:12px;line-height:1.4;color:var(--t3);min-width:0}
.zc-save{flex-shrink:0;border:1px solid var(--acc-2);background:var(--acc-2);color:var(--on-acc)!important;display:flex;align-items:center;justify-content:center;gap:8px;border-radius:14px;padding:12px 18px;min-height:48px;font-size:14px;font-weight:700}
.zc-save svg{width:18px;height:18px}
.zc-error{font-size:13px;line-height:1.5;color:var(--danger);background:var(--danger-bg);border-radius:12px;padding:10px 12px;margin-top:10px}
.zc-images{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0 0}
.zc-image{position:relative;min-width:0;aspect-ratio:1;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--fill-2)}
.zc-image img{width:100%;height:100%;object-fit:cover;display:block}
.zc-image .zc-detail-missing{margin:0;height:100%;padding:6px;font-size:10px;display:grid;place-items:center;text-align:center}
.zc-remove-image{position:absolute;right:2px;top:2px;display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:50%;background:rgba(20,30,24,.72);color:#fff!important}
.zc-remove-image svg{width:14px;height:14px}
.zc-image-add{display:grid;align-content:center;justify-items:center;gap:4px;border:1px dashed var(--mark);border-radius:12px;aspect-ratio:1;background:transparent;color:var(--t2);font-size:11px}
.zc-upload{display:flex;align-items:center;gap:10px;padding:14px;border:1px dashed var(--mark);border-radius:12px;cursor:pointer;background:var(--bg);color:var(--t1);font-size:14px}
.zc-upload small{display:block;color:var(--t3);font-size:12px;margin-top:2px}
.zc-check-row{display:flex;align-items:center;gap:10px;min-height:44px;padding:4px 0;border-bottom:1px solid var(--line-soft);font-size:14px;color:var(--t1)}
.zc-check-row input{accent-color:var(--acc-2);width:20px;height:20px;flex-shrink:0}
.zc-check-row span{flex:1;overflow-wrap:anywhere}
.zc-check-row:has(input:checked) span{text-decoration:line-through;color:var(--t3)}
.zc-template-list{display:grid;gap:6px;margin-top:10px}
.zc-template{display:flex;gap:6px;align-items:center;padding:8px 8px 8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
.zc-template .zc-inline-detail{display:flex;gap:10px;align-items:center;flex:1;min-width:0;min-height:44px}
.zc-template .zc-inline-detail>span:first-child{display:grid;place-items:center;flex-shrink:0;width:34px;height:34px;background:var(--surface);border-radius:10px;color:var(--green-tx)}
.zc-template b{font-size:13px;display:block;overflow-wrap:anywhere}
.zc-template small{display:block;font-size:12px;color:var(--t3);line-height:1.4;margin-top:2px}
.zc-template-copy{flex:1;min-width:0}
.zc-template .zc-icon{width:40px;height:40px;border:0}
.zc-settings-row{display:flex;gap:6px;align-items:center;min-height:48px;border-bottom:1px solid var(--line-soft);font-size:14px}
.zc-settings-row label{display:flex;gap:10px;align-items:center;flex:1;min-width:0;min-height:44px}
.zc-settings-row input{accent-color:var(--acc-2);width:20px;height:20px}
.zc-order{width:40px;height:40px;border:1px solid var(--line);background:var(--bg);color:var(--t1);border-radius:10px;font-size:14px}
.zc-detail-title{font-size:22px;font-weight:700;line-height:1.3;overflow-wrap:anywhere;margin:6px 0 4px}
.zc-detail-note{font-size:14px;white-space:pre-wrap;color:var(--t2);line-height:1.6;overflow-wrap:anywhere;margin:4px 0 0}
.zc-detail-image{display:block;width:100%;max-height:440px;object-fit:contain;margin:12px auto 0;border-radius:14px;border:1px solid var(--line);background:var(--surface)}
.zc-detail-missing{padding:16px;background:var(--fill-2);border-radius:12px;font-size:13px;color:var(--t2);margin:12px 0 0}
.zc-view-checklist{margin:12px 0}
.zc-inline-detail{display:block;width:100%;text-align:left;border:0;background:transparent;font:inherit;color:inherit;padding:0;cursor:pointer;overflow-wrap:anywhere}

/* значки в карточке плана: изображения, чек-лист, список */
.zc-inline-asset{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:6px 0 0;padding:4px 8px;min-height:28px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--t2);font:inherit;font-size:12px;line-height:1.2;cursor:pointer;max-width:100%}
.zc-inline-asset span{display:inline-flex;align-items:center;gap:4px;min-width:0;overflow-wrap:anywhere}
.zc-inline-asset svg{width:14px;height:14px}

/* фильтр списков над планом */
/* Ряд фильтров списков (17 октября 2026): начинается на поле страницы, как «Утро и подготовка» и шкала дел (16px),
   прокрутка уходит до правого края экрана; при прокрутке первый фильтр встаёт на то же поле. */
.zc-list-filter{--zc-gutter:16px;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:4px 0 12px;padding:2px var(--zc-gutter);scroll-padding-inline:var(--zc-gutter);box-sizing:border-box;width:100%}
/* поле — как у шкалы дел (functional.css, luxe.css): 16px, на узких экранах 12px, в палитрах Plus 18px (12px до 350px) */
@media(max-width:360px){.functional .zc-list-filter{--zc-gutter:12px}}
html[data-luxe] .functional .zc-list-filter{--zc-gutter:18px}
@media(max-width:350px){html[data-luxe] .functional .zc-list-filter{--zc-gutter:12px}}
.zc-list-filter::-webkit-scrollbar{display:none}
.zc-list-filter button{display:flex;align-items:center;gap:6px;flex-shrink:0;font:inherit;font-size:13px;background:var(--surface);color:var(--t2);border:1px solid var(--line);border-radius:12px;padding:6px 12px;min-height:40px;cursor:pointer}
.zc-list-filter button[aria-pressed=true]{background:var(--acc-2);color:var(--on-acc);border-color:var(--acc-2);font-weight:700}
.zc-list-filter small{font-size:11px;opacity:.8}

@media(min-width:650px){.zc-dialog:not(.zc-full){inset:auto 18px 18px;border:1px solid var(--line);border-radius:24px}}
@media(max-width:360px){.zc-main,.zc-top,.zc-footer{padding-left:14px;padding-right:14px}.zc-tool{width:40px}.zc-title{font-size:19px}.zc-panel{padding:12px}.zc-fields{gap:8px}}
html.text-big .zc-dialog .zc-title{font-size:24px}
html.text-big .zc-dialog .zc-note,html.text-big .zc-dialog .zc-field input,html.text-big .zc-dialog .zc-option{font-size:16px}
/* общий вид полей приложения рисует рамку при фокусе; у названия и заметки — только тонкая линия снизу */
.app .zc-dialog textarea.zc-title,.app .zc-dialog textarea.zc-note{border:0;outline:0;box-shadow:none;background:transparent;padding-left:0;padding-right:0;border-radius:0}
.app .zc-dialog textarea.zc-title:focus,.app .zc-dialog textarea.zc-note:focus{border:0;outline:0;box-shadow:0 1px 0 var(--acc-ring)}
.zc-dialog .zc-quick button{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;overflow-wrap:anywhere}
.zc-footer .zc-del{margin-left:auto;color:var(--danger)}
.zc-footer .zc-del+.zc-save{margin-left:0}
/* «Ханами» / «Цукими»: в окне нового дела те же лепестки у заголовка, что были у прежнего листа события (anime-theme.css, .sheet-h::after) */
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .zc-top{position:relative}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .zc-top::after{content:"";position:absolute;right:120px;top:2px;width:31px;height:34px;background:var(--anime-decor-sheet,none) center/contain no-repeat;pointer-events:none;opacity:var(--anime-decor-dim);filter:var(--anime-decor-night)}
/* 21.10: лепестки целиком в строке заголовка (top 2 + 34 = 36 px) — шапка не ниже 38 px даже с клавиатурой (.zc-keyboard/.zc-short),
   поэтому строка даты и длительности под шапкой не попадает под картинку ни на какой ширине и при крупном тексте */
/* Compact composer. The toolbar and input share the sheet surface.
   Measured viewport geometry is provided by composer-viewport.js. */
.zc-dialog{box-sizing:border-box;margin:0;max-width:none;background:var(--bg);padding:0}
.zc-dialog.zc-full{inset:auto 0 0;margin:0;padding:0;border:1px solid var(--line);border-bottom:0;border-radius:20px 20px 0 0}
.zc-inset-probe{position:absolute;visibility:hidden;pointer-events:none;width:0;height:0;box-sizing:content-box;padding-top:var(--safe-top,0px);padding-bottom:var(--safe-bottom,0px);padding-left:max(env(safe-area-inset-left,0px),var(--safe-area-inset-left,0px));padding-right:max(env(safe-area-inset-right,0px),var(--safe-area-inset-right,0px))}
.zc-editor .zc-grip{width:28px;height:3px;margin-top:8px}
.zc-top{padding:2px 12px;gap:2px}
.zc-top:focus{outline:0}
.zc-top .zc-icon{width:40px;height:40px;background:transparent;border:0;border-radius:10px;color:var(--t2)}
.zc-top .zc-icon svg{width:18px;height:18px}
.zc-top .zc-icon:hover{background:var(--surface)}
.zc-top-title{font-size:14px;line-height:1.35;font-weight:600;overflow-wrap:anywhere;color:var(--t2)}
.zc-editor .zc-main{flex:0 1 auto;padding:0 12px;min-height:0;scroll-padding:8px;scrollbar-width:thin}
.zc-editor .zc-main:has(>.zc-panel),.zc-editor .zc-main:has(>.zc-offer),.zc-editor .zc-main:has(>.zc-gap),.zc-editor .zc-main:has(>.zc-image-strip),.zc-editor .zc-main:has(>.zc-error){padding-bottom:8px}
.zc-editor .zc-panel{margin:4px 0 0;border-radius:14px;padding:12px}
.zc-panel>.zc-more-settings{border:0;margin:0;background:transparent}
.zc-panel>.zc-more-settings>summary{display:none}
.zc-panel>.zc-more-settings>div{padding:0}
.zc-compose-dock{display:flex;flex-direction:column;align-items:stretch;gap:0;padding:0 12px calc(10px + var(--zc-bottom-safe,0px));border:0;background:var(--bg);flex:none;min-height:0}
.zc-compose-dock .zc-summary{padding:0 2px;min-height:0;gap:2px 8px;align-items:center}
.zc-compose-dock .zc-chip{min-height:28px;padding:4px 0;border:0;border-radius:5px;background:transparent;font-size:11px;line-height:1.3;color:var(--t2)}
.zc-compose-dock .zc-chip svg{display:none}
.zc-compose-dock .zc-chip.zc-high{color:var(--danger)}
.zc-compose-dock .zc-chip:hover{color:var(--green-tx);text-decoration:underline}
.zc-compose-dock .zc-toolrow{display:flex;align-items:center;gap:2px;border:0;padding:0;flex:none}
.zc-compose-dock .zc-tool{display:grid;place-items:center;width:40px;height:40px;min-width:40px;min-height:40px;margin:0;padding:0;border-radius:10px;color:var(--t2)!important}
.zc-compose-dock .zc-tool svg{width:18px;height:18px}
.zc-compose-dock .zc-tool[data-active=true]{color:var(--green-tx)!important}
.zc-compose-dock .zc-tool[aria-expanded=true]{background:var(--surface);box-shadow:none;color:var(--green-tx)!important}
.zc-compose-dock .zc-more{margin-left:auto}
.zc-writing{display:grid;grid-template-columns:minmax(0,1fr) 40px;gap:6px 10px;align-items:start;padding:6px 2px 0;border:0;border-radius:0;background:transparent;min-height:0}
.zc-input-fields{min-width:0;min-height:0}
.zc-dialog .zc-title{font:500 16px/1.45 var(--ui);letter-spacing:0;min-height:27px;max-height:96px;padding:2px 0;scrollbar-width:thin;overflow-y:auto;resize:none}
.zc-dialog .zc-note{min-height:36px;max-height:120px;font:400 13px/1.5 var(--ui);padding:5px 0 0;overflow-y:auto;resize:none}
.zc-note-toggle{display:block;min-height:32px;max-width:100%;padding:3px 0 0;border:0;background:transparent;color:var(--t2)!important;font:400 12px/1.4 var(--ui)!important;text-align:left;overflow-wrap:anywhere}
.zc-compose-dock .zc-save{position:relative;display:grid;place-items:center;width:40px;height:40px;min-height:40px;min-width:40px;flex:none;align-self:start;border-radius:13px;padding:0;background:var(--acc-2);border:0;color:var(--on-acc)!important}
.zc-compose-dock .zc-save svg{width:20px;height:20px}
.zc-save-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.zc-footer-meta{display:flex;gap:8px;align-items:center;padding:0 2px;flex:none}
.zc-footer-meta:empty{display:none}
.zc-footer-copy{font:400 11px/1.4 var(--ui);color:var(--t2);padding-top:6px}
.zc-footer-meta .zc-del{margin-left:auto;width:36px;height:36px;border:0;background:transparent;color:var(--danger)}
.zc-full.zc-editor .zc-main{max-height:30%;flex:0 1 auto}
.zc-full.zc-panel-open .zc-main{max-height:45%}
.zc-full .zc-compose-dock{flex:1;min-height:0}
.zc-full .zc-writing{flex:1;grid-template-rows:auto minmax(0,1fr);overflow:hidden;row-gap:10px}
.zc-full .zc-input-fields{display:contents}
.zc-full .zc-writing .zc-title{grid-column:1;grid-row:1;min-width:0;align-self:start;max-height:min(120px,calc(var(--zc-available,600px) * .22));font-size:18px}
.zc-full .zc-writing .zc-save{grid-column:2;grid-row:1;align-self:start}
.zc-full .zc-writing .zc-note{grid-column:1/-1;grid-row:2;min-height:0;height:100%!important;max-height:100%;padding-top:0;align-self:stretch}
.zc-keyboard .zc-grip{display:none}
.zc-keyboard .zc-top{padding-top:2px;padding-bottom:0}
.zc-keyboard .zc-summary,.zc-keyboard .zc-footer-copy{display:none}
.zc-keyboard .zc-compose-dock{padding-bottom:6px}
.zc-editor.zc-keyboard:not(.zc-panel-open) .zc-main{display:none}
.zc-keyboard.zc-panel-open .zc-main{flex:0 1 auto;max-height:38%}
.zc-keyboard .zc-title{max-height:72px}
.zc-short.zc-keyboard .zc-top .zc-icon{width:36px;height:36px}
.zc-short.zc-keyboard .zc-note-toggle{display:none}
.zc-short.zc-full .zc-title{min-height:24px;max-height:42px}
html.text-big .zc-editor .zc-title{font-size:20px;line-height:1.4}
html.text-big .zc-editor .zc-note,html.text-big .zc-editor .zc-note-toggle{font-size:16px!important;line-height:1.5}
html.text-big .zc-editor .zc-chip{font-size:14px}
.zc-editor .zc-title::placeholder,.zc-editor .zc-note::placeholder{color:var(--t2)}
@media(prefers-reduced-motion:reduce){.zc-dialog{scroll-behavior:auto}}

/* ===== Редактор дел по образцам владельца (15 октября 2026) =====
   Компактный лист в стиле наших листов (.sheet): поверхность --surface, радиус 24, тень листа.
   Порядок снизу вверх: панель значков с кнопкой сохранения — у клавиатуры (или у низа экрана с safe-area),
   над ней поле ввода, выше выбранное строкой. Выборы — маленькие меню над своей кнопкой (как .cal-menu). */
.zc-dialog{background:var(--surface);border:0;border-radius:24px 24px 0 0;box-shadow:0 -10px 40px -12px rgba(0,0,0,.35)}
.zc-dialog::backdrop{background:var(--scrim)}
.zc-editor .zc-grip{width:38px;height:4px;border-radius:99px;background:var(--line-btn);margin:9px auto 2px}
.zc-editor .zc-top{padding:4px 12px 2px 20px}
.zc-editor .zc-top-title{font:700 17px/1.3 var(--ui);letter-spacing:-.01em;color:var(--t1)}
.zc-editor .zc-top .zc-icon{width:40px;height:40px;border:0;background:transparent;color:var(--t2)}
.zc-editor .zc-main{padding:0 16px;background:var(--surface)}
.zc-editor .zc-panel{border:1px solid var(--line);border-radius:16px;background:var(--bg2,var(--bg));padding:14px}
.zc-compose-dock{background:var(--surface);padding:0 12px calc(6px + var(--zc-bottom-safe,0px))}
.zc-compose-dock .zc-summary{padding:2px 8px 0;font-family:var(--ui)}
.zc-compose-dock .zc-chip{font:600 12px/1.3 var(--ui)}
.zc-editor .zc-footer-meta{padding:0 8px}
.zc-editor .zc-writing{display:block;padding:6px 8px 4px}
.zc-editor .zc-input-fields{display:block}
.app .zc-dialog.zc-editor textarea.zc-title{width:100%;font:500 16px/1.45 var(--ui);color:var(--t1);min-height:44px;max-height:112px;padding:10px 0}
.app .zc-dialog.zc-editor textarea.zc-note{width:100%;font:400 14px/1.5 var(--ui);color:var(--t2);min-height:32px;max-height:160px;padding:4px 0 6px}
/* описание в малом окне: видно, что это поле — тонкая линия сразу под текстом (высота по тексту), при фокусе линия акцентная */
.app .zc-dialog.zc-editor:not(.zc-full) textarea.zc-note{border-bottom:1px solid var(--line);box-shadow:none;margin:0 0 2px}
.app .zc-dialog.zc-editor:not(.zc-full) textarea.zc-note:focus{border-bottom-color:var(--acc-ring,var(--green));box-shadow:0 1px 0 var(--acc-ring,var(--green))}
.app .zc-dialog.zc-editor textarea.zc-note::placeholder{color:var(--t3);opacity:1}
.zc-editor .zc-note-toggle{font:500 13px/1.4 var(--ui)!important;color:var(--t3)!important;min-height:30px;padding:0}
/* панель у клавиатуры: значки без подписей и без точек, «Ещё», справа круглая кнопка сохранения */
.zc-compose-dock .zc-toolrow{display:flex;align-items:center;gap:2px;min-height:52px;padding:4px 0 2px;border:0;margin:0}
.zc-tool-gap{flex:1 1 auto;min-width:4px}
.zc-compose-dock .zc-more{margin-left:0}
.zc-compose-dock .zc-tool{display:grid;place-items:center;width:44px;height:44px;min-width:44px;border:0;border-radius:12px;background:transparent;color:var(--t2)!important;padding:0}
.zc-compose-dock .zc-tool svg{width:22px;height:22px}
.zc-compose-dock .zc-tool[data-active=true]{color:var(--green-tx)!important}
.zc-compose-dock .zc-tool[aria-expanded=true]{background:var(--fill-2,var(--bg2));color:var(--t1)!important;box-shadow:none}
.zc-compose-dock .zc-save{position:relative;display:grid;place-items:center;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:var(--green);color:var(--on-acc)!important;flex:none;align-self:center;box-shadow:0 4px 12px -4px rgba(0,0,0,.3)}
.zc-compose-dock .zc-save svg{width:22px;height:22px}
/* маленькое всплывающее меню: как меню вида календаря (.cal-menu) — поверхность, тонкая рамка, радиус 18, мягкая тень */
.zc-pop-layer{position:fixed;inset:0;z-index:5;pointer-events:none}
.zc-pop-back{position:fixed;inset:0;border:0;background:transparent;padding:0;margin:0;pointer-events:auto;cursor:default}
.zc-pop{position:fixed;z-index:6;pointer-events:auto;min-width:200px;max-width:min(300px,calc(100vw - 16px));overflow-y:auto;overscroll-behavior:contain;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:6px;box-shadow:0 18px 50px -12px rgba(0,0,0,.35);font-family:var(--ui)}
.zc-pop button{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:0 12px;border:0;border-radius:12px;background:transparent;font:500 15px/1.25 var(--ui);color:var(--t1);text-align:left}
.zc-pop button>span{flex:1;min-width:0;overflow-wrap:anywhere}
.zc-pop button>small{flex:none;font:500 12px var(--mono);color:var(--t3)}
.zc-pop button svg{width:20px;height:20px;flex:none;color:var(--t2)}
.zc-pop button.on,.zc-pop button.on svg{color:var(--green-tx)}
.zc-pop button:active,.zc-pop button:hover{background:var(--bg2,var(--bg))}
.zc-pop .zc-pop-tick{display:grid;place-items:center;flex:none;font-style:normal}
.zc-pop .zc-pop-tick svg{width:18px;height:18px;color:var(--green-tx)}
.zc-pop .zc-pm-high svg{color:var(--danger)}
.zc-pop .zc-pm-low svg{color:var(--t3)}
.zc-pop .zc-pm-high,.zc-pop .zc-pm-normal,.zc-pop .zc-pm-low{flex:none!important;display:grid;place-items:center}
.zc-pop .zc-pop-hash{flex:none!important;width:20px;text-align:center;font:600 16px var(--ui);color:var(--t3)}
.zc-pop button.on .zc-pop-hash{color:var(--green-tx)}
.zc-pop hr{border:0;border-top:1px solid var(--line);margin:4px 8px}
.zc-pop .zc-pop-danger,.zc-pop .zc-pop-danger svg{color:var(--danger)}
.zc-pop-scroll{max-height:220px;overflow-y:auto;overscroll-behavior:contain}
.zc-pop-input{display:flex;gap:6px;align-items:center;padding:4px 4px 2px}
.zc-pop-input .zc-search{flex:1;min-width:0;min-height:40px;padding:8px 10px;font:500 15px var(--ui);border:1px solid var(--line-btn);border-radius:12px;background:var(--input-bg,var(--surface));color:var(--t1)}
.zc-pop .zc-pop-input .zc-pop-add{flex:none;width:40px;min-height:40px;padding:0;justify-content:center;border:1px solid var(--line-btn)}
/* полноэкранный режим: сверху «назад», выбор списка, важность, «Ещё», сохранить; строка «Дата и напоминание»; текст на всё место; внизу панель */
.zc-dialog.zc-full{border:0;border-radius:20px 20px 0 0;box-shadow:none;background:var(--surface)}
.zc-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.zc-full .zc-compose-dock{flex:1;min-height:0;display:flex;flex-direction:column;padding:0 12px calc(4px + var(--zc-bottom-safe,0px))}
.zc-full .zc-writing{display:flex;flex-direction:column;align-items:stretch;flex:1;min-height:0;overflow:hidden;padding:8px 4px 0}
.zc-full .zc-input-fields{display:flex;flex-direction:column;flex:1;min-height:0}
.app .zc-dialog.zc-full textarea.zc-title{flex:none;align-self:stretch;width:100%;font:700 20px/1.35 var(--ui);max-height:min(120px,calc(var(--zc-available,600px) * .22));min-height:40px;padding:6px 0}
.app .zc-dialog.zc-full textarea.zc-note{flex:1;align-self:stretch;width:100%;min-height:0;height:auto!important;max-height:none;font:400 16px/1.55 var(--ui);color:var(--t1);padding:6px 0}
.zc-full.zc-editor .zc-main{max-height:40%;flex:0 1 auto;padding:0 16px}
/* клавиатура открыта: второстепенное прячется, панель значков остаётся последней строкой над клавиатурой */
.zc-keyboard .zc-compose-dock{padding-bottom:2px}
.zc-image-note{margin:6px 0 0}
html.text-big .zc-pop button{font-size:17px;min-height:48px}
html.text-big .app .zc-dialog.zc-editor textarea.zc-title{font-size:19px}
@media(min-width:650px){.zc-dialog.zc-editor:not(.zc-full){border-radius:24px;border:1px solid var(--line)}}
.zc-dialog .zc-tool.zc-more svg{stroke-width:3.2}

/* ---------- папки на экране «День» (js/folders.js): ряд под итогом дня и окно «Папки» ---------- */
.fbar{align-items:center}
.fbar-svg{width:16px;height:16px;flex:none}
.zc-list-filter .fbar-toggle{padding:6px 11px;color:var(--t2)}
.zc-list-filter .fbar-toggle[aria-pressed=true]{background:var(--surface);color:var(--acc-2);border-color:var(--acc-2);font-weight:inherit}
.zc-list-filter .fbar-toggle[aria-pressed=true] .fbar-svg{fill:currentColor;fill-opacity:.16}
.fbar-off{margin-bottom:8px}
.zc-list-filter .fbar-chip{max-width:min(62vw,240px)}
.fbar-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fbar-ic{color:var(--fc,currentColor)}
.zc-list-filter .fbar-chip[aria-pressed=true] .fbar-ic{color:inherit}
.zc-list-filter .fbar-tune{padding:6px 11px;color:var(--t2)}
.fbar-tune .fbar-svg{width:18px;height:18px}
.fbar-empty{margin:-6px 16px 12px;color:var(--t2);font-size:13px;line-height:1.4}
html[data-luxe] .fbar-empty{margin-left:18px;margin-right:18px}
/* ряд листается сам по себе: свой жест прокрутки по горизонтали (родитель #dayscroll разрешает только pan-y, и без этого
   ряд не ехал, а жест забирало листание дней), прокрутка не перетекает на страницу; долгое касание — меню, не выделение */
.zc-list-filter.fbar{touch-action:pan-x pan-y;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.fbar button{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
/* меню долгого касания папки */
.fbar-menu{position:fixed;z-index:60;min-width:200px;max-width:calc(100vw - 16px);padding:6px;border-radius:14px;background:var(--surface);border:1px solid var(--line);box-shadow:0 10px 28px -12px rgba(0,0,0,.45);display:grid;gap:2px}
.fbar-menu button{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 12px;border:0;border-radius:10px;background:none;color:var(--t1,inherit);font:inherit;font-size:14px;text-align:left;cursor:pointer}
.fbar-menu button:hover,.fbar-menu button:focus-visible{background:var(--bg2,rgba(127,127,127,.12))}
.fbar-menu .fbar-svg{width:18px;height:18px;color:var(--t2)}
/* переключатели папок в боковой панели «Дня» */
.fbar-sw .fbar-svg{width:18px;height:18px}
.fbar-sw .dr-body{min-width:0;flex:1}
.fbar-sw .dr-body b{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.3}
.fbar-knob{flex:none;position:relative;width:38px;height:22px;border-radius:11px;background:var(--line);transition:background .15s}
.fbar-knob::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--surface,#fff);box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s}
.fbar-sw[aria-checked=true] .fbar-knob{background:var(--acc-2)}
.fbar-sw[aria-checked=true] .fbar-knob::after{transform:translateX(16px)}
/* вопрос помощника «Добавить в папку?» под планом */
.pb-folder{margin-top:12px}
.pb-folder .pb-h{margin-bottom:8px}
.pb-fchips{display:flex;flex-wrap:wrap;gap:6px}
.pb-fchip{display:flex;align-items:center;gap:6px;min-height:36px;padding:6px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--t2);font:inherit;font-size:13px;cursor:pointer;max-width:100%}
.pb-fchip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pb-fchip[aria-pressed=true]{background:var(--acc-2);border-color:var(--acc-2);color:var(--on-acc);font-weight:700}
.pb-fchip[aria-pressed=true] .fbar-ic{color:inherit}
.pb-ftip{display:flex;align-items:center;gap:10px;margin-top:10px;padding:10px 12px;border-radius:14px;background:var(--bg2,rgba(127,127,127,.1));color:var(--t2);font-size:13px;line-height:1.4}
.pb-ftip-ic{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--surface);color:var(--acc-2)}
.pb-ftip-ic .fbar-svg{width:20px;height:20px;fill:currentColor;fill-opacity:.16}
@media (prefers-reduced-motion:reduce){.fbar-knob,.fbar-knob::after{transition:none}}

.fm-dialog{position:fixed;inset:auto 0 0;margin:0 auto;padding:0 0 var(--safe-bottom,0px);width:min(100%,560px);max-width:100%;max-height:min(88dvh,820px);
  border:0;border-radius:24px 24px 0 0;background:var(--surface);color:var(--t1);box-shadow:0 -10px 40px -12px rgba(0,0,0,.35);overflow:auto;font:inherit;font-family:var(--ui)}
.fm-dialog::backdrop{background:var(--scrim,rgba(20,30,24,.42))}
.fm-dialog *{box-sizing:border-box}
@media(min-width:650px){.fm-dialog{inset:auto 18px 18px;border:1px solid var(--line);border-radius:24px}}
.fm-grip{width:38px;height:4px;border-radius:99px;background:var(--line-btn,var(--line));margin:9px auto 2px}
.fm-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 10px 2px 20px}
.fm-top h2{font-size:19px;line-height:1.25;margin:0;font-weight:700;outline:none}
.fm-main{padding:6px 16px 20px}
.fm-icon{width:40px;height:40px;display:inline-grid;place-items:center;border:0;background:transparent;color:var(--t2);border-radius:12px;cursor:pointer;flex:none;padding:0}
.fm-icon:disabled{opacity:.3;cursor:default}
.fm-icon svg,.fm-ic svg,.fm-new svg,.fm-icons svg{width:20px;height:20px}
.fm-switch{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;margin:4px 0 14px;cursor:pointer}
.fm-switch-copy{flex:1;min-width:0;display:grid;gap:3px}
.fm-switch-copy b{font-size:15px;line-height:1.3}
.fm-switch-copy small{color:var(--t2);font-size:12.5px;line-height:1.35}
.fm-switch input{width:22px;height:22px;flex:none;margin:0;accent-color:var(--acc-2)}
.fm-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.fm-row{display:flex;align-items:center;gap:8px;padding:4px 2px 4px 12px;border:1px solid var(--line);border-radius:14px;background:var(--surface);min-height:52px}
.fm-row.is-edit{display:block;padding:12px}
.fm-ic{color:var(--fc,var(--t2));display:grid;place-items:center;flex:none}
.fm-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;font-size:15px}
.fm-acts{display:flex;flex:none}
.fm-del{color:var(--danger)}
@media(max-width:380px){.fm-icon{width:36px}.fm-main{padding-left:12px;padding-right:12px}}
.fm-new{display:flex;align-items:center;gap:8px;width:100%;margin-top:10px;padding:12px 14px;border:1px dashed var(--dash,var(--line));border-radius:14px;background:transparent;color:var(--acc-2);font:inherit;font-weight:600;cursor:pointer;min-height:48px}
.fm-new:disabled{opacity:.5;cursor:default}
.fm-hint{color:var(--t2);font-size:12.5px;line-height:1.4;margin:12px 2px 0}
.fm-edit{display:grid;gap:8px;margin-top:10px}
.fm-row .fm-edit{margin-top:0}
.fm-field{display:grid;gap:4px;font-size:13px;color:var(--t2)}
.fm-field input{font:inherit;font-size:16px;color:var(--t1);background:var(--input-bg,var(--surface));border:1px solid var(--line);border-radius:12px;padding:10px 12px;min-height:44px;width:100%}
.fm-error{color:var(--danger);font-size:13px;margin:0}
.fm-pick-label{font-size:13px;color:var(--t2);margin-top:4px}
.fm-icons,.fm-colors{display:flex;flex-wrap:wrap;gap:6px}
.fm-icons button{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--fc,var(--t2));cursor:pointer;padding:0}
.fm-icons button[aria-checked=true]{border-color:var(--acc-2);box-shadow:inset 0 0 0 1px var(--acc-2);background:var(--fill)}
.fm-colors button{width:34px;height:34px;border-radius:50%;border:3px solid var(--surface);background:var(--fc);box-shadow:0 0 0 1px var(--line);cursor:pointer;padding:0}
.fm-colors button[aria-checked=true]{box-shadow:0 0 0 2px var(--acc-2)}
.fm-colors .fm-nocolor{background:linear-gradient(135deg,transparent 46%,var(--mute) 46%,var(--mute) 54%,transparent 54%),var(--surface)}
.fm-edit-btns{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:6px}
.fm-btn{font:inherit;font-weight:600;min-height:44px;padding:10px 16px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--t1);cursor:pointer}
.fm-btn.fm-main{background:var(--acc-2);border-color:var(--acc-2);color:var(--on-acc)}
.fm-btn.fm-danger{background:var(--danger);border-color:var(--danger);color:#fff}
.fm-confirm{padding:6px 2px 0}
.fm-confirm b{display:block;font-size:17px;line-height:1.3;overflow-wrap:anywhere}
.fm-confirm p{color:var(--t2);font-size:14px;line-height:1.45;margin:8px 0 6px}
html.text-big .fm-name,html.text-big .fm-switch-copy b{font-size:17px}

.zc-dialog.zc-editor{background:var(--surface);border-radius:24px 24px 0 0}
.zc-editor .zc-top{padding:4px 16px 8px;gap:10px}.zc-editor .zc-top-title{font-size:15px;color:var(--t1)}.zc-editor .zc-top .zc-icon{width:44px;height:44px}
.zc-editor .zc-compose-dock{padding:0 16px calc(12px + var(--zc-bottom-safe,0px));background:var(--surface)}
.zc-compose-dock .zc-writing{display:block;grid-template-columns:none;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--bg);margin:10px 0}
.zc-entry-label{display:block;font:500 11px/1.4 var(--ui);color:var(--t2);margin-bottom:7px}
.zc-dialog .zc-title{width:100%;min-height:44px;padding:4px 0;border:0;background:none;font:600 17px/1.5 var(--ui);color:var(--t1);outline:none;box-sizing:border-box}
.zc-dialog .zc-note{width:100%;min-height:64px;border:0;border-top:1px solid var(--line);padding:10px 0 0;margin-top:8px;background:none;font:400 13px/1.6 var(--ui);color:var(--t1);box-sizing:border-box}
.zc-dialog .zc-note-toggle{min-height:44px;padding:7px 0;font-size:12px!important;color:var(--green-tx)!important}
.zc-compose-dock .zc-summary{gap:5px}.zc-compose-dock .zc-chip{background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:7px 9px;min-height:34px;font-size:11px}
.zc-compose-dock .zc-toolrow{display:flex;flex-wrap:wrap;gap:5px;align-items:center;padding:0}
.zc-tools-primary{display:flex;gap:3px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}.zc-tools-primary::-webkit-scrollbar{display:none}
.zc-compose-dock .zc-tool{width:44px;min-width:44px;height:44px;min-height:44px;border-radius:12px;background:var(--bg);border:1px solid var(--line)}
.zc-tool-caption{display:none}.zc-compose-dock .zc-more{margin:0;flex:none}.zc-tool-gap{display:none!important}
.zc-compose-dock .zc-save{display:flex;justify-content:center;align-items:center;gap:8px;width:100%;min-height:44px;height:44px;border-radius:12px;order:5;margin-top:4px;background:var(--green);color:var(--on-acc)!important}
.zc-compose-dock .zc-save-label{position:static;clip:auto;width:auto;height:auto;margin:0;overflow:visible;font:600 13px/1.4 var(--ui)}
.zc-editor.zc-configuring{height:min(680px,var(--zc-available,80dvh))!important}.zc-configuring .zc-compose-dock{display:none!important}.zc-editor.zc-configuring .zc-main{flex:1;max-height:none;overflow:auto;padding:0 14px calc(14px + var(--zc-bottom-safe,0px))}.zc-configuring .zc-panel{border:0;background:transparent;padding:0;margin:0}
.zc-config-intro{display:flex;gap:10px;align-items:flex-start;margin:10px 0}.zc-config-intro p{flex:1;font:400 11px/1.6 var(--ui);margin:0;color:var(--t2)}.zc-config-count{padding:4px 7px;border-radius:7px;background:var(--green-bg);color:var(--green-tx);font:600 11px var(--ui);white-space:nowrap}
.zc-config-preview{display:flex;gap:6px;padding:10px;border:1px solid var(--line);border-radius:13px;background:var(--bg);margin:0 0 12px;min-height:52px}.zc-config-preview>span{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--surface);color:var(--green-tx)}.zc-config-preview svg{width:18px;height:18px}
.zc-settings-list{display:grid;gap:7px}.zc-settings-row{display:flex;align-items:center;gap:5px;padding:5px 6px;min-height:58px;border:1px solid var(--line);border-radius:13px;background:var(--bg)}.zc-settings-row.is-pinned{background:var(--surface)}
.zc-settings-row label{display:flex;align-items:center;gap:7px;min-width:0;flex:1;min-height:44px;position:relative;cursor:pointer}.zc-settings-row input{position:absolute;width:1px;height:1px;opacity:0}.zc-settings-row label:focus-within{outline:2px solid var(--green-tx);outline-offset:2px;border-radius:8px}
.zc-settings-symbol{display:grid;place-items:center;width:26px;height:30px;flex:none;color:var(--green-tx)}.zc-settings-symbol svg{width:19px;height:19px}.zc-settings-name{font:500 12px/1.4 var(--ui);color:var(--t1);overflow-wrap:anywhere}.zc-settings-status{margin-left:auto;width:20px;flex:none;color:var(--green-tx);font-size:16px;text-align:center}
.zc-order-pair{display:flex;gap:4px;flex:none}.zc-order-pair .zc-order{display:grid;place-items:center;min-width:44px;width:44px;height:44px;min-height:44px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--green-tx)}.zc-order svg{width:18px;height:18px}.zc-order:disabled{opacity:.25;cursor:default}
.zc-config-actions{display:grid;gap:8px;margin-top:13px}.zc-config-actions button{min-height:44px;padding:10px;border-radius:11px;font:500 12px/1.4 var(--ui)}.zc-config-done{background:var(--green);color:var(--on-acc)}.zc-config-actions .zc-text-btn{border:1px solid var(--line);background:var(--bg);color:var(--t2)}
.zc-dialog button:focus-visible,.zc-dialog textarea:focus-visible{outline:2px solid var(--green-tx);outline-offset:2px}
.app .zc-dialog.zc-editor textarea.zc-title{font:600 17px/1.5 var(--ui);min-height:44px;padding:4px 0;color:var(--t1)}
.app .zc-dialog.zc-editor textarea.zc-note{min-height:64px;padding:10px 0 0;margin-top:8px;color:var(--t1);border-top:1px solid var(--line)}
.zc-full .zc-writing{display:flex;flex-direction:column;overflow:auto;flex:1}.zc-full .zc-input-fields{display:flex;flex-direction:column;flex:1;min-height:0}
.app .zc-dialog.zc-editor.zc-full textarea.zc-note{flex:1;height:auto!important;min-height:160px;max-height:none}
.zc-dialog.zc-date-open .zc-main{max-height:min(390px,50dvh);flex:0 1 auto;overflow:auto;padding:0 14px 8px}
.zc-date-open .zc-panel{background:var(--surface);padding:12px;border:1px solid var(--line);border-radius:16px}
.zc-date-open .zc-panel-head h3:focus{outline:none}
/* окно «Дата и время» — макет GPT «Новое дело — дата и повтор» (28.10.2026): один открытый раздел под кнопками */
.zc-date-compact{display:grid;gap:9px}
.zc-date-quick{display:flex;gap:6px}.zc-date-quick>button{flex:1;min-width:0;min-height:44px;padding:6px 3px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--t1);font:550 12px/1.25 var(--ui);white-space:nowrap;display:flex;align-items:center;justify-content:center;gap:5px}
.zc-date-quick>button[aria-pressed=true]{border-color:var(--green-tx);background:var(--green-bg);color:var(--green-tx)}
.zc-date-quick svg{width:15px;height:15px;flex:none}.zc-date-other>span{min-width:0;overflow:hidden;text-overflow:ellipsis}.zc-date-quick small{display:block;font:400 10px/1.2 var(--ui);margin-top:1px}
.zc-date-seg{display:flex;gap:3px;padding:3px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
.zc-date-seg>button{flex:1;min-width:0;min-height:38px;padding:7px 5px;border:0;border-radius:9px;background:none;color:var(--t2);font:500 12px/1.3 var(--ui)}
.zc-date-seg>button[aria-pressed=true]{background:var(--surface);color:var(--green-tx);font-weight:650;box-shadow:0 2px 7px rgba(37,55,29,.06)}
.zc-date-triggers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.zc-date-trigger{display:flex;align-items:center;gap:8px;min-width:0;min-height:48px;padding:8px 9px;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--t1);text-align:left}
.zc-date-trigger>svg{width:18px;height:18px;flex:none;color:var(--green-tx)}.zc-date-trigger>span{flex:1;min-width:0}
.zc-date-trigger b{display:block;font:600 11px/1.3 var(--ui)}.zc-date-trigger small{display:block;margin-top:2px;font:400 10px/1.3 var(--ui);color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zc-date-trigger[aria-expanded=true]{border-color:var(--green-tx);background:var(--green-bg)}
.zc-date-chev{width:7px;height:7px;flex:none;border-right:1.6px solid var(--t3);border-bottom:1.6px solid var(--t3);transform:rotate(45deg);margin:0 4px 3px 0;transition:transform .2s}
.zc-date-trigger[aria-expanded=true] .zc-date-chev{transform:rotate(225deg);margin-bottom:-3px}
.zc-date-section{padding:12px;border:1px solid var(--line);border-radius:16px;background:var(--bg)}.zc-date-section[data-date-section=time]{padding:7px 12px 9px}
.zc-date-title{margin-bottom:9px;font:650 12px/1.3 var(--ui);color:var(--t1)}
.zc-date-mins>button{min-height:40px}
.zc-date-modes{display:flex;gap:5px;margin-top:9px}.zc-date-modes>button{flex:1;min-width:0;min-height:38px;padding:8px 4px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--t1);font:500 11px/1.3 var(--ui)}
.zc-date-modes>button[aria-pressed=true]{border-color:var(--green-tx);background:var(--green-bg);color:var(--green-tx)}
.zc-date-hint{margin:8px 0 0;font-size:11px}.zc-date-err{margin:0;font:500 12px/1.4 var(--ui);color:#a34425}
.zc-calendar-body>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px}.zc-calendar-body b{font:500 13px/1.4 var(--ui)}.zc-calendar-nav{width:36px;height:36px;border:0;border-radius:9px;background:none;color:var(--green-tx);font-size:22px}
.zc-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.zc-weekday{text-align:center;font:400 10px/1.5 var(--ui);color:var(--t2);padding:2px}.zc-calendar-day{height:32px;min-height:32px;padding:2px;background:none;border:0;border-radius:9px;color:var(--t1);font:500 12px/1 var(--ui);text-align:center}.zc-calendar-day.is-muted{opacity:.35}.zc-calendar-day[aria-pressed=true]{background:var(--green);color:var(--on-acc)}
/* колесо: три строки по 32 px; центральные цифры — поле ввода поверх колеса */
.zc-clock-pair{display:flex;justify-content:center;align-items:flex-start;gap:14px}
.zc-wheel-column{width:68px;min-width:0;text-align:center}.zc-wheel-column>span{display:block;font:400 10px/1.4 var(--ui);color:var(--t2)}
.zc-wheel-frame{position:relative;margin-top:2px;height:96px;border-radius:12px;background:linear-gradient(to bottom,transparent 31px,var(--line) 31px,var(--line) 32px,var(--surface) 32px,var(--surface) 63px,var(--line) 63px,var(--line) 64px,transparent 64px)}
.zc-clock-wheel{height:96px;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain;scrollbar-width:none;padding:32px 0;box-sizing:border-box;touch-action:pan-y}.zc-clock-wheel::-webkit-scrollbar{display:none}
.zc-clock-wheel .zc-wheel-value{display:block;width:100%;height:32px;min-height:32px;padding:0;border:0;background:none;color:var(--t2);font:600 20px/32px var(--ui);text-align:center;scroll-snap-align:center;opacity:.4;font-variant-numeric:tabular-nums}
.zc-clock-wheel .zc-wheel-value[aria-selected=true]{color:var(--green-tx);opacity:1}
.zc-dialog .zc-clock-input{position:absolute;top:32px;left:0;width:100%;height:32px;margin:0;padding:0 2px;border:0;border-radius:5px;background:var(--surface);color:var(--green-tx);font:650 21px/32px var(--ui);text-align:center;font-variant-numeric:tabular-nums;touch-action:none;user-select:text;-webkit-user-select:text;caret-color:var(--green-tx)}
.zc-dialog .zc-clock-input:focus{outline:2px solid var(--green-tx);outline-offset:0;background:var(--green-bg)}
.zc-clock-colon{padding-top:24px;font:600 20px var(--ui);color:var(--t2)}
.zc-use-time{width:100%;min-height:36px;margin-top:7px;padding:5px;border:1px solid var(--green-tx);border-radius:10px;background:var(--green-bg);color:var(--green-tx);font:500 12px/1.3 var(--ui)}
.zc-date-duration .zc-field{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:9px;margin-top:9px}.zc-date-duration .zc-field>span{font:400 12px/1.5 var(--ui);color:var(--t2)}.zc-date-duration input{width:80px!important;min-height:40px!important;font-size:16px!important;padding:6px!important}
.zc-date-footer{margin-top:10px}.zc-dialog .zc-date-done{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:10px;border:1px solid var(--acc-2);border-radius:14px;background:var(--acc-2);color:var(--on-acc);font:600 15px/1.3 var(--ui)}
@media (prefers-reduced-motion:no-preference){.zc-date-section{animation:zc-date-in .14s ease-out}@keyframes zc-date-in{from{opacity:.5;transform:translateY(3px)}to{opacity:1;transform:none}}}
.zc-date-summary{display:flex;gap:7px;align-items:center}.zc-compose-dock .zc-date-summary svg{display:block;width:14px;height:14px}
.zc-dialog:not(.zc-editor) .zc-view-checklist{display:grid;gap:7px;margin:12px 0}.zc-dialog:not(.zc-editor) .zc-check-row{display:flex;align-items:center;gap:10px;min-height:48px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--bg);font:500 13px/1.5 var(--ui);color:var(--t1)}.zc-check-row input{width:20px;height:20px;accent-color:var(--green);flex:none}.zc-check-row:has(input:checked)>span{text-decoration:line-through;color:var(--t2)}
.zc-dialog:not(.zc-editor) .zc-footer button{min-height:44px;padding:10px 14px;border-radius:12px;font:500 12px/1.4 var(--ui)}
[data-zc-task-title]{cursor:pointer}[data-zc-task-title]:focus-visible{outline:2px solid var(--green-tx);outline-offset:3px;border-radius:5px}
/* сборка 93: клавиатура открыта — подпись скрыта, карточка ввода сжимается, «Добавить дело» остаётся прямо над клавиатурой */
.zc-editor.zc-keyboard .zc-compose-dock{padding-bottom:2px}
.zc-editor.zc-keyboard:not(.zc-full) .zc-compose-dock{flex:0 1 auto;min-height:0}.zc-editor.zc-keyboard:not(.zc-full) .zc-compose-dock .zc-writing{flex:0 1 auto;min-height:0;overflow:auto;padding:8px 14px;margin:6px 0}
.zc-editor.zc-keyboard .zc-entry-label{display:none}
/* сборка 97: микрофон у названия и у заметки (js/composer-voice.js). Идёт запись — кнопка залита, кольцо дышит громкостью голоса (--lv 0…1) */
.zc-voice-card b{display:block;color:var(--t1);margin-bottom:2px}
/* микрофон в ряду кнопок окна дела (js/composer-voice.js, владелец 27.10): во время записи — залит цветом темы, кольцо дышит громкостью */
.zc-dialog .zc-mic{position:relative}
.zc-dialog .zc-mic svg{width:21px;height:21px}
.zc-dialog .zc-mic.zc-mic-on{background:var(--green);color:var(--on-acc)!important}
.zc-dialog .zc-mic.zc-mic-on svg{width:16px;height:16px}
.zc-dialog .zc-mic.zc-mic-on::before{content:'';position:absolute;inset:-3px;border-radius:12px;border:2px solid var(--green);opacity:.45;transform:scale(calc(1 + var(--lv,0) * .2));transition:transform .08s linear;pointer-events:none}
@media(prefers-reduced-motion:reduce){.zc-dialog .zc-mic.zc-mic-on::before{transition:none;transform:none}}
/* напоминание (колокольчик, 22 октября 2026): кнопка на панели — общий .zc-tool; чип «За 15 минут» со значком, как у даты;
   в меню — строка начала дела («Изменить» ведёт к дате и времени), время сигнала справа, просьба включить уведомления */
.zc-remind-chip{display:flex;gap:7px;align-items:center}.zc-compose-dock .zc-remind-chip svg{display:block;width:14px;height:14px}
.zc-pop .zc-pop-start>span{font-weight:600}
.zc-pop .zc-pop-start>small{font:500 12px/1.3 var(--ui);color:var(--green-tx)}
.zc-pop-note{padding:0 4px 4px}
.zc-pop-note p{margin:6px 8px 8px;font:400 13px/1.45 var(--ui);color:var(--t2)}
.zc-pop .zc-pop-cta{justify-content:center;background:var(--green);color:var(--on-acc);font-weight:600}
.zc-pop .zc-pop-cta:active,.zc-pop .zc-pop-cta:hover{background:var(--green);color:var(--on-acc)}
.zc-pop .zc-pop-cta>span{flex:none}
.zc-pop-err{margin:2px 8px 4px;font:500 12px/1.4 var(--ui);color:var(--danger)}
.zc-pop-input input[type=number]{-moz-appearance:textfield;appearance:textfield}
.zc-pop-input input[type=number]::-webkit-inner-spin-button,.zc-pop-input input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}

/* «Ссылка или видео» — компактная карточка вложения, один в один макет GPT video-compact.html (папка GPT, v5) (22 октября 2026).
   Токены макета: --soft → --fill-2 (или --bg2), --text → --t1, --muted → --t2, --accent → --green / --green-tx, --on → --on-acc.
   Та же карточка в окне приёма пищи (.ml-attach) и в деталях дела */
.zc-attachment{position:relative;margin-top:12px}
.zc-compose-dock>.zc-attachment{margin-bottom:18px}
/* меню у нижнего края окна раскрывается над карточкой (в макете под ней хватает места) */
.zc-attachment .zc-la-menu.up{top:auto;bottom:62px}
.zc-attachment .zc-la-row{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:15px;background:var(--surface);min-height:70px}
.zc-attachment .zc-la-play{width:44px;height:44px;display:grid;place-items:center;background:var(--fill-2,var(--bg2));border:0;border-radius:12px;color:var(--green-tx);flex:none;padding:0}
.zc-attachment .zc-la-play svg,.zc-attachment .zc-la-icon svg{width:22px;height:22px}
.zc-attachment .zc-la-copy{flex:1;min-width:0;text-align:left}
.zc-attachment .zc-la-copy b{display:block;font:700 14px/1.5 var(--ui);color:var(--t1)}
.zc-attachment .zc-la-copy small{display:block;color:var(--t2);font:400 11px/1.5 var(--ui);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zc-attachment .zc-la-icon{width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:12px;background:none;color:var(--t1);padding:0;flex:none}
.zc-attachment .zc-la-menu{position:absolute;top:62px;right:0;width:205px;background:var(--surface);border:1px solid var(--line);padding:5px;border-radius:14px;box-shadow:0 10px 28px #16321c20;z-index:4}
.zc-attachment .zc-la-menu button{display:block;width:100%;padding:12px;border:0;border-radius:9px;background:none;text-align:left;font:400 13px/1.5 var(--ui);min-height:44px;color:var(--t1)}
.zc-attachment .zc-la-menu button:hover{background:var(--fill-2,var(--bg2))}
.zc-attachment .zc-la-menu .zc-la-remove{color:var(--t2)}
.zc-attachment .zc-la-entry{border:1px solid var(--line);padding:12px;border-radius:15px;background:var(--fill-2,var(--bg2))}
.zc-attachment .zc-la-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.zc-attachment .zc-la-head label{font:700 13px/1.5 var(--ui);color:var(--t1)}
.zc-attachment .zc-la-head .zc-la-icon{width:32px;height:32px}
.zc-attachment .zc-la-head .zc-la-icon svg{width:18px;height:18px}
.zc-attachment .zc-la-urlrow{display:flex;gap:7px}
.zc-attachment .zc-la-urlrow input{width:100%;min-width:0;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--t1);padding:11px;font:400 13px/1.5 var(--ui)}
.zc-attachment .zc-la-ok{width:44px;flex:none;border:0;border-radius:10px;background:var(--green);color:var(--on-acc);display:grid;place-items:center;padding:0}
.zc-attachment .zc-la-ok svg{width:20px;height:20px}
.zc-attachment .zc-la-err{color:var(--t1);font:400 12px/1.5 var(--ui);margin:8px 0 0}
.zc-attachment .zc-la-player{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--surface)}
.zc-attachment .zc-la-ptop{display:flex;justify-content:space-between;align-items:center;padding:4px 8px 4px 14px;font:700 13px/1.5 var(--ui);color:var(--t1)}
.zc-attachment .zc-la-box{aspect-ratio:16/9;background:#17251e}
.zc-attachment .zc-la-box iframe{display:block;width:100%;height:100%;border:0}
.zc-attachment .zc-la-pfoot{padding:8px 12px;display:flex;justify-content:space-between;align-items:center;gap:10px;font:400 11px/1.5 var(--ui);color:var(--t2)}
.zc-attachment .zc-la-site{color:var(--green-tx);font:700 11px/1.5 var(--ui);padding:7px 0;white-space:nowrap;background:none;border:0;min-height:36px}
.zc-attachment .zc-la-add{display:flex;align-items:center;gap:7px;background:none;border:0;color:var(--t2);font:400 13px/1.5 var(--ui);min-height:44px;padding:8px 2px}
.zc-attachment .zc-la-add svg{width:18px;height:18px}
.zc-attachment .zc-la-note{min-height:40px;padding:6px 2px 0}
.zc-attachment .zc-la-toast{position:fixed;left:18px;right:18px;top:66px;z-index:10;display:flex;align-items:center;justify-content:space-between;background:var(--t1);color:var(--surface);padding:12px 14px;border-radius:13px;font:400 12px/1.5 var(--ui);box-shadow:0 10px 30px #0002}
.zc-attachment .zc-la-toast button{color:inherit;background:none;border:0;font-weight:700;min-height:36px}
.zc-detail-link{margin-top:12px}
/* детали дела на весь экран (27.10): плашка «Дня» сверху, строки даты и напоминания под ней, описание отдельной карточкой */
.zc-dialog.zc-details{inset:0;margin:0 auto;width:min(100%,760px);height:100dvh;max-height:100dvh;border:0;border-radius:0;padding-top:var(--safe-top,0px);background:var(--bg)}
.zc-details .zc-details-main{padding:16px 16px 20px;display:flex;flex-direction:column;gap:12px}
.zc-detail-card .strip{font-size:12.5px;padding:11px 14px;text-align:left}
.zc-detail-card .zc-strip{background:var(--surface);color:var(--t2)}
.zc-detail-card .zc-strip .lk{width:16px;height:16px;flex:none;display:flex;align-items:center;justify-content:center}
.zc-detail-card .zc-strip .lk svg{width:16px;height:16px}
.zc-detail-card .zc-strip b{flex:1;min-width:0;font-weight:600;color:var(--t1)}
.zc-detail-card .zc-strip-side{font-weight:500;color:var(--t2)}
.zc-detail-card .zc-strip-remind{border:0;border-top:1px solid var(--line-soft);cursor:pointer;min-height:44px}
.zc-detail-card .zc-strip-remind.on{background:var(--green-bg);color:var(--green-tx)}
.zc-detail-card .zc-strip-remind.on b{color:var(--green-tx)}
.zc-detail-card .zc-strip-chev{font-style:normal;font-size:18px;line-height:1;color:var(--t3);transition:transform .15s}
.zc-detail-card .zc-strip-remind[aria-expanded="true"] .zc-strip-chev{transform:rotate(90deg)}
.zc-strip-pick{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px 12px;background:var(--surface);border-top:1px solid var(--line-soft)}
.zc-strip-pick .zc-chip{cursor:pointer;min-height:36px}
.zc-strip-pick .zc-chip.on{border-color:var(--green);color:var(--green-tx);font-weight:700}
.zc-detail-desc{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 16px}
.zc-detail-desc .zc-detail-note{color:var(--t1);font-size:15px;user-select:text;-webkit-user-select:text}
.zc-details .zc-view-checklist,.zc-details .zc-detail-image{margin-top:0}
.zc-details-foot .zc-save{flex:1}
@media (prefers-reduced-motion:reduce){.zc-detail-card .zc-strip-chev{transition:none}}
.zc-detail-card .att-group>.donerow{border-bottom-left-radius:6px;border-bottom-right-radius:6px;margin:0}
.zc-detail-desc [data-zc="detail-note-edit"]{cursor:text}
.zc-detail-desc textarea.zc-detail-note{display:block;width:100%;min-height:120px;max-height:45dvh;border:1px solid var(--green);border-radius:12px;padding:10px 12px;background:var(--bg);color:var(--t1);font:400 16px/1.55 var(--ui);resize:vertical;outline:0;margin-top:6px}
.zc-details-foot .zc-detail-cancel{min-height:48px;padding:12px 18px;border:1px solid var(--line);border-radius:14px;background:var(--surface);font-weight:600}
.zc-detail-card .donerow .icon-btn{margin-left:auto;flex:none}
/* значок дела (27.10.2026, js/taskicon.js): плитка слева от названия и панель выбора */
.zc-writing.zc-has-ti{display:flex;align-items:flex-start;gap:10px}.zc-writing.zc-has-ti>.zc-input-fields{flex:1;min-width:0}
.zc-full .zc-writing.zc-has-ti{flex-direction:row;align-items:stretch}.zc-full .zc-writing.zc-has-ti>.zc-ti-tile{align-self:flex-start}
.zc-ti-tile{flex:none;width:44px;height:44px;margin-top:2px;border-radius:12px;border:1.5px dashed var(--line,#d9ddd5);background:transparent;color:var(--t3,#8a9087);display:grid;place-items:center;padding:0;cursor:pointer}
.zc-ti-tile svg{width:20px;height:20px}.zc-ti-tile.has{border:0;background:var(--s2,rgba(127,127,127,.1));color:var(--green,#3f6b52)}
.zc-ti-tile .ti{width:30px;height:30px}.zc-ti-tile .ti svg{width:24px;height:24px}
.ti{display:inline-grid;place-items:center;flex:none;vertical-align:middle}.ti img{width:100%;height:100%;object-fit:contain;display:block}.ti-emo{font-size:22px;line-height:1}
/* панель значка дела на месте клавиатуры (владелец 28.10.2026, как смайлики в Telegram): поиск сверху, разделы с прокруткой, вкладки внизу */
.zc-ti-dock{flex:none;display:flex;flex-direction:column;min-height:0;border-top:1px solid var(--line);background:var(--bg);padding-bottom:var(--zc-bottom-safe,0px)}
.zc-ti-open .zc-main{display:none}.zc-ti-open .zc-summary:empty{display:none}
.ti-panel{flex:1;min-height:0;display:flex;flex-direction:column}
.ti-top{display:flex;align-items:center;gap:6px;padding:8px 12px 4px}.ti-top .ti-search{flex:1;margin:0;min-height:36px;padding:6px 12px;border-radius:18px;font-size:16px}
.ti-clear{flex:none;width:36px;height:36px;border:0;border-radius:18px;background:var(--s2,rgba(127,127,127,.12));color:var(--t2,#5c6359);display:grid;place-items:center;padding:0;cursor:pointer}.ti-clear svg{width:18px;height:18px}
.ti-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 10px 8px;scrollbar-width:none}.ti-body::-webkit-scrollbar{display:none}
.ti-tabs{flex:none;display:flex;justify-content:center;gap:4px;padding:6px 12px 8px}
.ti-tab{border:0;border-radius:16px;padding:7px 14px;background:none;color:var(--t2,#5c6359);font:600 13px/1.2 var(--ui,system-ui);cursor:pointer}.ti-tab[aria-selected=true]{background:var(--s2,rgba(127,127,127,.14));color:var(--t1,#1f2a22)}
.zc-ti-tile{position:relative}.zc-ti-kb{position:absolute;right:-4px;bottom:-4px;width:20px;height:20px;border-radius:50%;background:var(--surface,#fff);box-shadow:0 0 0 1px var(--line);display:grid;place-items:center;color:var(--t2,#5c6359)}.zc-ti-kb svg{width:13px;height:13px}
.zc-ti-open .zc-ti-tile{border-style:solid;border-color:var(--green,#3f6b52)}
/* поиск в фокусе: клавиатура открыта — найденное одной строкой над ней, шапка окна прячется */
.zc-ti-searching .ti-tabs,.zc-ti-searching .zc-grip{display:none}

.zc-ti-searching .ti-found{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:1px}.zc-ti-searching .ti-found .ti-cell{width:auto;min-width:0;min-height:44px}
.ti-sh{display:flex;align-items:center;gap:6px;margin:10px 2px 6px;font:700 11px/1.2 var(--ui,system-ui);letter-spacing:.06em;text-transform:uppercase;color:var(--t3,#8a9087)}
.ti-sh.ti-pack{text-transform:none;letter-spacing:0;font-size:14px;color:var(--t1,#1f2a22)}.ti-sh.ti-pack b{flex:1}.ti-lock-h svg{width:14px;height:14px}
.ti-get{border:0;border-radius:16px;padding:6px 14px;font:600 13px/1.2 var(--ui,system-ui);color:#fff;background:linear-gradient(90deg,var(--green,#3f6b52),color-mix(in srgb,var(--green,#3f6b52) 55%,#fff));cursor:pointer}
.ti-get.ti-busy{background:var(--s2,rgba(127,127,127,.12));color:var(--t2,#5c6359)}
.ti-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px}
.ti-cell{position:relative;aspect-ratio:1;min-width:0;border:0;background:none;border-radius:10px;display:grid;place-items:center;padding:0;color:var(--green,#3f6b52);cursor:pointer;overflow:hidden}
.ti-cell svg{width:22px;height:22px}.ti-cell img{width:90%;height:90%;object-fit:contain}.ti-cell .ti-emo{font-size:22px}
.ti-cell.on{background:color-mix(in srgb,var(--green,#3f6b52) 16%,transparent)}
.ti-cell .ti-lock{position:absolute;right:1px;bottom:1px;width:14px;height:14px;border-radius:50%;background:var(--surface,#fff);display:grid;place-items:center}.ti-cell .ti-lock svg{width:10px;height:10px}
.ti-ghost{background:var(--s2,rgba(127,127,127,.12));border-radius:50%;transform:scale(.8);font:600 11px/1 var(--ui,system-ui);color:var(--t2,#5c6359)}
.ti-none{margin:14px 2px;color:var(--t3,#8a9087);font-size:14px}
/* дата и время (владелец 27.10.2026): пока открыта панель даты в обычном окне — только она, без названия, кнопок и «Добавить дело» */
.zc-dialog.zc-date-open:not(.zc-full) .zc-compose-dock{display:none}
.zc-dialog.zc-date-open:not(.zc-full) .zc-main{max-height:min(560px,78dvh)}

/* Details share the visible viewport with IME; never inherit the compact editor hidden body rule. */
.zc-dialog.zc-details{padding-top:0}.zc-details.zc-keyboard .zc-details-main{display:flex;flex:1;min-height:0;max-height:none;overflow:auto}.zc-details .zc-details-foot{flex:none;position:relative}.zc-detail-menu{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:10px}.zc-detail-menu-row{display:block;width:100%;min-height:46px;border:0;border-bottom:1px solid var(--line);padding:11px 12px;text-align:left;background:none;color:var(--t1);font:500 14px/1.4 var(--ui)}.zc-detail-menu-row:last-child{border:0}.zc-detail-menu p{margin:6px 8px 12px}.zc-details .zc-detail-desc textarea{resize:none;min-height:112px;max-height:45dvh}

/* Contextual task actions are a sheet over details, never an expanding row in the page. */
.zc-detail-overlay{position:absolute;inset:0;z-index:80;display:flex;flex-direction:column;justify-content:flex-end;isolation:isolate}.zc-detail-mask{position:absolute;inset:0;border:0;border-radius:0;background:rgba(20,30,24,.3);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:-1}.zc-detail-popup{display:flex;flex-direction:column;flex:none;min-height:0;max-height:calc(100% - 18px);border-radius:26px 26px 0 0;background:var(--surface);color:var(--t1);box-shadow:0 -12px 40px rgba(15,25,18,.12);overflow:hidden;outline:none}.zc-menu-grip{min-height:28px;display:grid;place-items:center;touch-action:none;cursor:grab;flex:none}.zc-menu-grip i{width:36px;height:4px;border-radius:4px;background:var(--line)}.zc-menu-head{padding:8px 20px 17px;border-bottom:1px solid var(--line);flex:none}.zc-menu-head h3{font:650 23px/1.2 var(--ui);margin:0}.zc-menu-head p{font:400 13px/1.4 var(--ui);color:var(--t2);margin:6px 0 0}.zc-menu-body{padding:16px 18px;overflow:auto;min-height:0;overscroll-behavior:contain}.zc-menu-body .zc-detail-menu-row{border:1px solid var(--line);background:var(--surface);border-radius:16px;margin:0 0 9px;padding:14px 16px;min-height:60px}.zc-menu-body .zc-detail-menu-row:last-child{margin-bottom:0;border:1px solid var(--line)}.zc-detail-menu-row b{display:block;font:600 15px/1.35 var(--ui)}.zc-detail-menu-row span{display:block;font:400 12px/1.45 var(--ui);color:var(--t2);margin-top:4px}.zc-detail-menu-row.danger{background:color-mix(in srgb,var(--danger) 5%,var(--surface));color:var(--danger)}.zc-menu-foot{padding:12px 18px calc(14px + var(--zc-bottom-safe,0px));border-top:1px solid var(--line);flex:none}.zc-menu-foot button{width:100%;min-height:48px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--t1);font:600 14px/1.4 var(--ui)}@media(prefers-reduced-motion:no-preference){.zc-detail-popup{animation:zc-detail-sheet-in .18s ease-out}@keyframes zc-detail-sheet-in{from{opacity:.6;transform:translateY(18px)}to{opacity:1;transform:none}}}@media(prefers-reduced-motion:reduce){.zc-detail-popup{transition:none!important;animation:none!important}}

/* Single bottom composer: icon toggle, text, quick parameters, microphone and add action. */
.zc-editor .zc-writing.zc-message-row{display:flex!important;flex-direction:row!important;align-items:flex-end!important;gap:5px;padding:7px!important;margin:0!important;border:1px solid var(--line)!important;border-radius:23px!important;background:var(--bg)!important;box-shadow:none!important;flex:none!important;overflow:visible!important;min-height:58px}.zc-editor .zc-message-field{display:flex;flex-direction:column;min-width:0;flex:1;gap:0}.zc-editor .zc-message-field .zc-entry-label{position:absolute!important;clip:rect(0,0,0,0)!important;width:1px;height:1px;overflow:hidden;margin:-1px;padding:0}.app .zc-dialog.zc-editor:not(.zc-full) .zc-message-field textarea.zc-title{font:500 16px/1.4 var(--ui)!important;min-height:28px!important;max-height:90px!important;height:auto;width:100%;border:0!important;border-radius:0!important;padding:5px 2px!important;margin:0!important;background:transparent!important;box-shadow:none!important;resize:none}.app .zc-dialog.zc-editor:not(.zc-full) .zc-message-field textarea.zc-note{font:400 16px/1.4 var(--ui)!important;min-height:28px!important;max-height:100px!important;height:auto!important;width:100%;border:0!important;border-radius:0!important;padding:3px 2px!important;margin:0!important;background:transparent!important;box-shadow:none!important;resize:none;color:var(--t2)}.zc-editor .zc-message-field .zc-note-toggle{padding:0 2px!important;margin:0!important;min-height:25px;text-align:left;border:0;background:none;font:400 12px/1.35 var(--ui);color:var(--t3)}.zc-editor .zc-ti-tile{align-self:flex-end;margin:0!important;width:36px!important;height:40px!important;min-width:36px;border:0!important;border-radius:14px;background:none!important;color:var(--t2);padding:7px!important;flex:none}.zc-editor .zc-ti-tile .ti{width:26px;height:26px}.zc-editor .zc-message-actions{display:flex!important;align-items:center;gap:3px;margin:0!important;padding:0!important;border:0!important;background:none!important;flex:none;overflow:visible!important}.zc-editor .zc-message-actions .zc-tool{width:34px!important;min-width:34px!important;height:40px!important;min-height:40px!important;padding:7px!important;border:0!important;background:none!important;border-radius:12px!important;margin:0!important}.zc-editor .zc-message-actions .zc-tool-caption{display:none}.zc-editor .zc-message-actions .zc-save{width:40px!important;min-width:40px!important;height:40px!important;min-height:40px!important;padding:9px!important;border-radius:50%!important;flex:none;display:grid;place-items:center;margin:0!important}.zc-editor .zc-message-actions .zc-save-label{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important}.zc-editor .zc-compose-dock{padding:6px 10px calc(8px + var(--zc-bottom-safe,0px))!important;flex:none!important;min-height:0!important;background:var(--surface)}.zc-editor.zc-ti-open .zc-compose-dock{padding-bottom:6px!important}.zc-editor.zc-ti-open .zc-ti-dock{flex:0 1 auto;min-height:0;overflow:hidden}.zc-editor.zc-ti-wait .zc-ti-dock{height:0!important;padding:0!important;border:0!important;visibility:hidden}.zc-editor .ti-top{padding:6px 10px;gap:6px}.zc-editor .ti-search{font-size:16px;min-height:36px;height:36px;border-radius:18px;padding:6px 12px}.zc-editor .ti-cell{min-width:0;min-height:40px;touch-action:manipulation}.zc-editor .zc-footer-copy{font-size:10px}.zc-editor .zc-footer-meta{padding:0 4px}.zc-editor .zc-summary:empty{display:none}.zc-editor .zc-message-row:focus-within{border-color:var(--green)!important}@media(max-width:350px){.zc-editor .zc-message-row{gap:2px;padding:5px!important}.zc-editor .zc-message-actions{gap:0}.zc-editor .zc-message-actions .zc-tool{width:30px!important;min-width:30px!important;padding:5px!important}.zc-editor .zc-ti-tile{width:32px!important;min-width:32px}.zc-editor .zc-message-actions .zc-save{width:36px!important;min-width:36px!important}}
/* Touch areas remain 44px; the text field takes the remaining width. */
.zc-editor .zc-ti-tile,.zc-editor .zc-message-actions .zc-tool,.zc-editor .zc-message-actions .zc-save{width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important}.zc-editor .zc-message-actions{gap:0}.zc-editor .ti-cell{min-height:44px}
/* Pack rail and catalogue: horizontal navigation, one vertical list, two-row previews. */
.zc-editor .zc-ti-dock{background:radial-gradient(ellipse at 10% 0%,color-mix(in srgb,var(--green) 10%,transparent),transparent 70%),linear-gradient(140deg,var(--surface),color-mix(in srgb,var(--surface) 94%,var(--green)));border-radius:22px 22px 0 0}.ti-panel .ti-pack-rail{justify-content:flex-start;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;padding:5px 10px;gap:5px;scroll-snap-type:x proximity;flex:none}.ti-pack-rail .ti-tab{height:44px;width:44px;min-width:44px;flex:none;display:grid;place-items:center;padding:7px;border-radius:50%;font-size:24px;scroll-snap-align:nearest}.ti-pack-rail img{width:30px;height:30px;object-fit:contain}.ti-pack-rail [aria-pressed=true]{background:color-mix(in srgb,var(--green) 15%,transparent)}.ti-panel .ti-body{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;position:relative;scroll-padding-top:8px}.ti-body .ti-grid{grid-template-columns:repeat(8,minmax(0,1fr));gap:1px}.ti-body .ti-cell{min-height:44px;padding:4px}.ti-cell .ti-emo{font-size:28px}.ti-pack-section{margin:12px 0 20px}.ti-sh.ti-pack{display:flex;align-items:center;gap:6px;padding:8px 0;min-height:44px}.ti-pack b{flex:1;font-size:13px}.ti-pack .ti-get{min-height:36px;padding:6px 12px;border:0;border-radius:20px;white-space:nowrap;font-size:12px}.ti-pack .ti-premium{background:linear-gradient(110deg,#7179d1,#a960bc);color:white}.ti-cell.ti-more{border-radius:20px;color:var(--t2);font:bold 14px var(--ui);background:color-mix(in srgb,var(--t2) 12%,transparent)}.ti-cell img{max-width:100%;max-height:38px;object-fit:contain}.zc-ti-searching .ti-pack-rail{display:none}
/* Bugfix: compact input uses one trailing slot: microphone or send, never both. */
.zc-editor .zc-message-field{display:flex!important;flex-direction:column;min-width:0;flex:1}.zc-editor .zc-message-field .zc-title{width:100%;min-width:0}.zc-message-actions[data-has-text=false]:has(.zc-mic) .zc-save,.zc-message-actions:has(.zc-mic-on) .zc-save{display:none!important}.zc-message-actions[data-has-text=true]:not(:has(.zc-mic-on)) .zc-mic{display:none!important}.zc-editor .zc-note-toggle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;min-height:28px}.zc-editor .zc-ti-tile{position:relative;overflow:visible}.zc-ti-mode{position:absolute;right:-2px;bottom:0;display:grid;place-items:center;width:18px;height:16px;border-radius:5px;background:var(--surface);box-shadow:0 0 0 1px var(--line)}.zc-ti-mode svg{width:13px!important;height:13px!important}.zc-editor .zc-top,.zc-editor.zc-keyboard .zc-top{min-height:54px;padding:5px 12px;flex:none}.zc-pop button.zc-dictate{display:flex;align-items:center;gap:10px}
/* Full editor has its own layout; do not inherit the compact bubble's flex caps. */
.zc-dialog.zc-full.zc-editor .zc-compose-dock{flex:1!important;min-height:0!important;display:flex!important;flex-direction:column;overflow:hidden}.zc-dialog.zc-full.zc-editor .zc-writing{display:grid!important;grid-template-columns:44px minmax(0,1fr);grid-template-rows:auto minmax(60px,1fr) 48px;gap:10px 8px;flex:1!important;min-height:0;overflow:hidden;align-items:stretch!important}.zc-dialog.zc-full.zc-editor .zc-input-fields{display:contents!important}.zc-dialog.zc-full.zc-editor .zc-ti-tile{grid-column:1;grid-row:1;align-self:start}.zc-dialog.zc-full.zc-editor .zc-title{grid-column:2;grid-row:1;width:100%;min-height:28px;max-height:100px;height:auto;font-size:20px!important;align-self:start}.zc-dialog.zc-full.zc-editor .zc-note{grid-column:1/-1;grid-row:2;width:100%!important;min-height:0!important;max-height:none!important;height:100%!important;align-self:stretch;overflow:auto;padding:12px!important;border-top:1px solid var(--line)!important;line-height:1.5!important}.zc-dialog.zc-full.zc-editor .zc-message-actions{grid-column:1/-1;grid-row:3;justify-content:flex-end;align-self:end}.zc-dialog.zc-full.zc-editor .zc-message-actions .zc-mic{display:grid!important}.zc-dialog.zc-full.zc-editor .zc-message-actions .zc-save{display:grid!important}.zc-dialog.zc-full.zc-editor .zc-main{flex:0 1 auto;max-height:30%;padding-bottom:0}.zc-dialog.zc-full.zc-editor.zc-keyboard:not(.zc-panel-open) .zc-main{display:none}.zc-dialog.zc-full.zc-editor.zc-ti-open .zc-compose-dock{flex:1 1 180px!important}.zc-dialog.zc-full.zc-editor.zc-ti-open .zc-writing{grid-template-rows:auto minmax(30px,1fr) 44px}

/* The icon panel replaces the IME: a compact input above one continuous surface.
   The full editor expands the catalogue, not an empty note field. */
.zc-editor.zc-ti-open .zc-ti-dock{flex:none;box-sizing:border-box;overflow:hidden}
.zc-editor .ti-panel{height:100%;min-height:0;overflow:hidden;background:transparent}
.zc-editor .ti-body{padding-bottom:calc(8px + var(--ti-tail,0px));box-sizing:border-box;touch-action:pan-y}
.zc-editor .ti-top{flex:none;background:transparent}
.zc-editor .ti-pack-rail{touch-action:pan-x}
.zc-editor.zc-ti-searching .ti-body{flex:1;max-height:none;overflow-x:hidden;overflow-y:auto}
.zc-dialog.zc-full.zc-editor.zc-ti-open .zc-compose-dock{flex:none!important}
.zc-dialog.zc-full.zc-editor.zc-ti-open .zc-writing{display:flex!important;flex-direction:row!important;align-items:flex-end!important;gap:5px!important;flex:none!important;min-height:58px;overflow:visible}
.zc-dialog.zc-full.zc-editor.zc-ti-open .zc-message-field{display:flex!important;flex:1;min-width:0}
.zc-dialog.zc-full.zc-editor.zc-ti-open .zc-title{font:500 16px/1.4 var(--ui)!important;min-height:28px!important;max-height:72px!important;padding:5px 2px!important;margin:0!important;background:transparent;border:0!important;resize:none}
.zc-dialog.zc-full.zc-editor.zc-ti-open .zc-note{height:auto!important;max-height:72px!important;min-height:28px!important;padding:3px 2px!important;border:0!important;font:400 16px/1.4 var(--ui)!important}
.zc-dialog.zc-full.zc-editor.zc-ti-open .zc-message-actions{align-self:flex-end}
.zc-dialog.zc-full.zc-editor.zc-ti-open .zc-message-actions .zc-mic{display:none!important}
.zc-dialog.zc-full.zc-editor.zc-ti-open .zc-ti-dock{flex:1!important;min-height:0}
.zc-editor.zc-ti-wait .zc-ti-dock{flex:0 0 0px!important}

/* как в Telegram (владелец 29.10.2026): обычный редактор без белой подложки и шапки «Новое дело / ×» — строка ввода
   и панель значков «висят» над затемнением; шапка остаётся для фокуса и чтения с экрана, но не видна. «Назад» и касание
   вне окна закрывают. Значок дела — по центру строки. Полный экран и детали — как были. */
.zc-dialog.zc-editor:not(.zc-full){background:transparent!important;box-shadow:none!important;border:0!important}
.zc-dialog.zc-editor:not(.zc-full)>.zc-grip,.zc-dialog.zc-editor:not(.zc-full) .zc-grip{display:none}
.zc-dialog.zc-editor:not(.zc-full) .zc-top{position:absolute!important;width:1px!important;height:1px!important;min-height:0!important;padding:0!important;margin:0!important;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);border:0!important;white-space:nowrap}
.zc-editor .zc-message-row .zc-ti-tile{align-self:center!important}
.zc-dialog.zc-editor:not(.zc-full) .zc-compose-dock{background:transparent!important}
/* найденное при поиске — один ряд с прокруткой вбок, как в Telegram */
.zc-ti-searching .ti-found{display:flex!important;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;gap:2px}
.zc-ti-searching .ti-found .ti-cell{flex:0 0 48px;width:48px;min-height:48px}
.zc-ti-searching .ti-body{overflow-y:hidden!important}


/* ---- taskicon-offer.css ---- */
/* Original eight-slide artwork and motion, scoped from the owner reference. */
.ti-offer-story{position:absolute;left:0;right:0;bottom:0;top:150px;background:#fff;border-radius:22px 22px 0 0;overflow:hidden;display:flex;flex-direction:column;--g:linear-gradient(135deg,#3f6b52,#8fc4a0);--c:#3f6b52}
.ti-offer-story .tio-track{flex:1;display:flex;transition:transform .5s cubic-bezier(.3,.8,.25,1);touch-action:pan-y;cursor:grab;min-height:0}
.ti-offer-story .tio-track.drag{transition:none;cursor:grabbing}
.ti-offer-story .tio-page{flex:0 0 100%;display:flex;flex-direction:column;min-width:0;user-select:none}
.ti-offer-story .hero2{position:relative;height:318px;flex:none;background:var(--g);overflow:hidden}
.ti-offer-story .hero2:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 55%,#ffffff40,transparent 60%);pointer-events:none}
.ti-offer-story .tio-page h3{margin:18px 18px 6px;font-size:21px;text-align:center;color:#2d2f2c}
.ti-offer-story .tio-page .d{margin:0 26px;text-align:center;color:#6b7268;font-size:14.5px;line-height:1.4}
.ti-offer-story .x{position:absolute;right:12px;top:12px;width:30px;height:30px;border-radius:50%;background:#ffffff40;color:#fff;display:grid;place-items:center;font-size:18px;z-index:3}
.ti-offer-story .tio-foot{flex:none;padding:10px 16px 16px;display:flex;flex-direction:column;align-items:center;gap:12px}
.ti-offer-story .dots2{display:flex;gap:5px}
.ti-offer-story .cta2{width:100%;background:var(--g);color:#fff;border-radius:24px;padding:14px 0;font-weight:700;font-size:15.5px;text-align:center}
/* 1 стикеры */
.ti-offer-story .stk{position:absolute;inset:0}
.ti-offer-story .stk .big{position:absolute;left:50%;top:50%;width:170px;height:170px;margin:-85px 0 0 -85px;object-fit:contain;z-index:2;filter:drop-shadow(0 8px 18px #0003)}
.ti-offer-story .stk .big.pop{animation:tioStory_pop .6s cubic-bezier(.3,1.6,.5,1)}
@keyframes tioStory_pop{0%{transform:scale(.4) rotate(-12deg);opacity:0}100%{transform:none;opacity:1}}
.ti-offer-story .stk .fl{position:absolute;width:86px;height:86px;object-fit:contain;opacity:.45;filter:blur(.6px)}
.ti-offer-story .act .stk .fl{animation:tioStory_drift 6s ease-in-out infinite alternate}
.ti-offer-story .stk .f1{left:6px;top:14px}.ti-offer-story .stk .f2{right:4px;top:40px;animation-delay:-2s!important}.ti-offer-story .stk .f3{left:18px;bottom:6px;animation-delay:-4s!important}.ti-offer-story .stk .f4{right:26px;bottom:-10px;width:110px;height:110px;animation-delay:-1s!important}
@keyframes tioStory_drift{0%{transform:translate(0,0) rotate(-6deg)}100%{transform:translate(10px,-14px) rotate(8deg)}}
/* рамка телефона */
.ti-offer-story .dev{position:absolute;left:50%;top:34px;width:206px;height:420px;margin-left:-103px;border:7px solid #1d1f22;border-radius:30px;background:#fff;overflow:hidden;box-shadow:0 10px 30px #0003}
.ti-offer-story .dev:before{content:"";position:absolute;top:6px;left:50%;width:9px;height:9px;margin-left:-4px;border-radius:50%;background:#1d1f22;z-index:2}
.ti-offer-story .act .dev{animation:tioStory_rise .7s cubic-bezier(.25,.9,.3,1)}
@keyframes tioStory_rise{0%{transform:translateY(90px);opacity:0}100%{transform:none;opacity:1}}
.ti-offer-story .dev .shot{width:100%;display:block}
.ti-offer-story .act .dev .shot.scroll{animation:tioStory_scr 9s ease-in-out .8s infinite alternate}
@keyframes tioStory_scr{0%,15%{transform:translateY(0)}85%,100%{transform:translateY(-38%)}}
/* 2 смайлики: мини-список дел */
.ti-offer-story .tl{padding:24px 10px 0;display:flex;flex-direction:column;gap:7px}
.ti-offer-story .tl div{display:flex;align-items:center;gap:7px;background:#f4f4f1;border-radius:11px;padding:5px 7px;font-size:11.5px;color:#2d2f2c}
.ti-offer-story .tl img{width:30px;height:30px;object-fit:contain;flex:none}
.ti-offer-story .tl div.hot img{animation:tioStory_wig 1.6s ease-in-out infinite}
.ti-offer-story .tl div.hot{outline:2px solid var(--c)}
@keyframes tioStory_wig{0%,100%{transform:scale(1)}30%{transform:scale(1.25) rotate(-8deg)}60%{transform:scale(1.1) rotate(6deg)}}
.ti-offer-story .tl .bub{position:absolute;right:-4px;top:150px;background:#fff;border-radius:18px;box-shadow:0 6px 20px #0003;padding:5px 7px;display:flex;gap:3px}
.ti-offer-story .act .tl .bub{animation:tioStory_bub .5s 1s both cubic-bezier(.3,1.5,.5,1)}
.ti-offer-story .tl .bub img{width:26px;height:26px}
@keyframes tioStory_bub{0%{transform:scale(0);opacity:0}100%{transform:none;opacity:1}}
/* 3 значки приложения */
.ti-offer-story .ico{position:absolute;width:96px;height:96px;border-radius:24px;background:#fff;display:grid;place-items:center;box-shadow:0 8px 24px #0002;opacity:0}
.ti-offer-story .ico img{width:76px;height:76px;border-radius:18px}
.ti-offer-story .act .ico{animation:tioStory_icoin .6s cubic-bezier(.3,1.5,.5,1) both}
.ti-offer-story .ico.i1{left:50%;margin-left:-48px;top:42px}.ti-offer-story .ico.i2{left:28px;top:168px;animation-delay:.25s!important}.ti-offer-story .ico.i3{right:28px;top:168px;animation-delay:.5s!important}
@keyframes tioStory_icoin{0%{transform:scale(.3);opacity:0}100%{transform:none;opacity:1}}
.ti-offer-story .star{position:absolute;color:#fff;font-size:12px;opacity:.2}
.ti-offer-story .act .star{animation:tioStory_tw 1.8s ease-in-out infinite}
@keyframes tioStory_tw{0%,100%{opacity:.15;transform:scale(.7)}50%{opacity:.95;transform:scale(1.2)}}
/* 6 темы: два телефона по краям */
.ti-offer-story .dev.tilt{width:178px;height:360px;top:58px;margin:0}
.ti-offer-story .dev.tl1{left:-58px;transform:rotate(-8deg)}.ti-offer-story .dev.tr1{left:auto;right:-58px;transform:rotate(8deg)}
.ti-offer-story .act .dev.tl1{animation:tioStory_inl .7s cubic-bezier(.25,.9,.3,1)}.ti-offer-story .act .dev.tr1{animation:tioStory_inr .7s cubic-bezier(.25,.9,.3,1)}
@keyframes tioStory_inl{0%{transform:translateX(-80px) rotate(-8deg)}100%{transform:rotate(-8deg)}}
@keyframes tioStory_inr{0%{transform:translateX(80px) rotate(8deg)}100%{transform:rotate(8deg)}}
.ti-offer-story .dev .fade{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top;transition:opacity .8s}
/* 8 лимиты */
.ti-offer-story .tio-page.list{padding:18px 16px 0;overflow:hidden}
.ti-offer-story .tio-page.list h3{display:flex;align-items:center;justify-content:center;gap:8px;margin:4px 0 14px}
.ti-offer-story .badge{display:inline-grid;place-items:center;min-width:30px;height:26px;padding:0 5px;border-radius:7px;background:var(--g);color:#fff;font-size:13px}
.ti-offer-story .lim2{margin-bottom:12px}.ti-offer-story .lim2 b{font-size:14.5px;color:#2d2f2c}.ti-offer-story .lim2 p{margin:1px 0 5px;color:#6b7268;font-size:12.5px}
.ti-offer-story .bars2{display:flex;border-radius:9px;overflow:hidden;font-size:13px}.ti-offer-story .bars2 span{flex:1;display:flex;justify-content:space-between;padding:8px 10px}
.ti-offer-story .bars2 .fr{background:#f0f1ee;color:#4a4f48}.ti-offer-story .bars2 .pl{background:var(--g);color:#fff}.ti-offer-story .bars2 em{font-style:normal;font-weight:700}
/* управление под телефоном */
.ti-offer-story .ctl{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.ti-offer-story .ctl button{border:1px solid var(--line);background:#fff;border-radius:16px;padding:6px 11px;font:13px system-ui;cursor:pointer}
.ti-offer-story .ctl button.on{background:#1f2a22;color:#fff;border-color:#1f2a22}
.ti-offer-story .wide{flex:1 1 380px;max-width:400px}
@media (prefers-reduced-motion:reduce){.ti-offer-story .tio-track{transition:none}.ti-offer-story .act *{animation:none!important}}
.ti-offer-story .hero2:after{z-index:0}.ti-offer-story .hero2>*{z-index:1}.ti-offer-story .stk{z-index:1}
.ti-offer-story .tio-page.list{box-sizing:border-box}
.ti-offer-story .tl .bub{top:118px;right:6px}
/* Native dialog geometry and usable controls; the eight scenes above retain the reference layout. */
.ti-offer.ti-offer-story{position:fixed;inset:auto 0 0;margin:0 auto;padding:0;width:100%;max-width:100%;height:min(580px,var(--tio-height,calc(100dvh - 16px)));max-height:var(--tio-height,calc(100dvh - 16px));border:0;border-radius:24px 24px 0 0;overflow:hidden;display:flex;flex-direction:column;background:var(--surface,#fff);color:var(--t,#2d2f2c);--c:var(--green,#3f6b52);--g:linear-gradient(135deg,var(--green,#3f6b52),color-mix(in srgb,var(--green,#3f6b52) 55%,#b6dbc0))}.ti-offer-story::backdrop{background:#13201980;backdrop-filter:blur(5px)}
.ti-offer-story .tio-track{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;touch-action:auto;transition:none;min-height:0;width:100%;flex:1}.ti-offer-story .tio-track::-webkit-scrollbar{display:none}.ti-offer-story .tio-page{scroll-snap-align:start;scroll-snap-stop:always;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:none;min-height:0;background:var(--surface,#fff)}.ti-offer-story .hero2{height:min(318px,calc(var(--tio-height,720px)*.48));min-height:170px}.ti-offer-story .tio-page h3{color:var(--t,#2d2f2c)}.ti-offer-story .tio-page .d{color:var(--t2,#6b7268);padding-bottom:14px}.ti-offer-story .x{position:absolute;inset:10px 10px auto auto;width:44px;height:44px;border:0;border-radius:50%;font:26px/1 system-ui;z-index:5;margin:0;padding:0;background:#ffffff66;color:#fff;display:grid;place-items:center}
.ti-offer-story .tio-foot{padding:0 16px calc(10px + env(safe-area-inset-bottom,0px));gap:3px;background:var(--surface,#fff)}.ti-offer-story .dots2{width:100%;gap:0;justify-content:center;min-height:36px}.ti-offer-story .dots2 button{width:36px;height:36px;border:0;background:none;padding:0;display:grid;place-items:center;touch-action:manipulation}.ti-offer-story .dots2 button:after{content:'';width:6px;height:6px;border-radius:3px;background:#d5d7d2;transition:transform .3s,background .3s}.ti-offer-story .dots2 button.on:after{transform:scaleX(2.333);background:var(--c)}.ti-offer-story .tio-buy{width:100%;margin:0;border:0;background:var(--g);border-radius:24px;padding:12px 8px;font:700 15.5px/1.25 var(--ui,system-ui);text-align:center;color:#fff;min-height:50px;box-shadow:none}.ti-offer-story .tio-buy small{display:block;font:400 11px/1.3 var(--ui,system-ui);margin-top:4px;opacity:.9}.ti-offer-story .tio-page.list{overflow-y:auto;padding-bottom:8px}.ti-offer-story .lim2 b{color:var(--t,#2d2f2c)}.ti-offer-story .lim2 p{color:var(--t2,#6b7268)}.ti-offer-story .bars2 span{gap:8px}.ti-offer-story .bars2 em{text-align:right}.ti-offer-story .bars2 .fr{background:color-mix(in srgb,var(--t2,#6b7268) 10%,var(--surface,#fff));color:var(--t,#2d2f2c)}.ti-offer-story .bars2 .pl{background:var(--g);color:#fff}.ti-offer-story .tl .bub{top:118px;right:6px}.ti-offer-story button:focus-visible{outline:2px solid var(--c);outline-offset:2px}
.ti-offer-story.tio-light .x{background:color-mix(in srgb,var(--t,#2d2f2c) 8%,transparent);color:var(--t,#2d2f2c)}.ti-offer-story:focus{outline:none}
/* на всю ширину телефона, картинка забирает всё свободное место — пустоты под текстом нет (владелец 29.10.2026) */
.ti-offer-story .tio-page{display:flex;flex-direction:column}.ti-offer-story .tio-page>.hero2{flex:1 1 auto;height:auto;min-height:240px}
@media(min-width:600px){.ti-offer.ti-offer-story{width:min(100%,520px)}}
@media(prefers-reduced-motion:reduce){.ti-offer-story .tio-track{scroll-behavior:auto!important}.ti-offer-story *{animation:none!important;transition:none!important}}


/* ---- anime-theme.css ---- */
/* Аниме-тема «Сакура и ночное небо». Основа — дизайн-пакет «Зарок — Anime» (anime-theme.css), ниже отдельным блоком —
   привязка к приложению. Собирается скриптом Переводы/en/68/step60 — правки вносить там (anime-app.css) и пересобирать.
   Все правила — под html[data-theme=anime] и html[data-theme=anime-dark]; исключение — плитка выбора темы на экране
   «Оформление» (она видна в любой теме) и именованные keyframes. Шрифт — Manrope приложения (ZarokUI). */
html[data-theme="anime"],html[data-theme="anime"] .app.functional{--bg:#F8F4FA;--bg2:#F0EAF5;--surface:#FFFCFA;--t1:#251E35;--t2:#51455F;--t3:#70617A;--green:#A93455;--green-bg:#F7E4EB;--green-tx:#8E2949;--on-acc:#FFFFFF;--line:#D5CADA;--line-btn:#B9AABD;--mark:#97849D;--t4:#70617A;--page:#F0EAF5;--ui:ZarokUI,'Manrope',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;--mono:ZarokUI,'Manrope',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;--input-bg:#FFFCFA;--fill:#F0EAF5;--fill-2:#E1F1E9;--line-soft:#D5CADA;--hair:#D5CADA;--mute:#70617A;--dash:#97849D;--on-t1:#FFFCFA;--acc-1:#A93455;--acc-2:#A93455;--acc-3:#A93455;--acc-edge:#A93455;--acc-ring:#4850A3;--yellow:#5C4C9D;--yellow-bg:#ECE8FA;--yellow-bd:#D5CADA;--danger:#A13D37;--danger-bg:#FBE9E3;--danger-bd:#D5CADA;--me-1:#F0EAF5;--me-2:#F7E4EB;--tab-1:#F7E4EB;--tab-2:#F0EAF5;--anime-done:#2E6C56;--anime-done-bg:#E1F1E9;--anime-missed:#A13D37;--anime-missed-bg:#FBE9E3;--anime-postponed:#5C4C9D;--anime-postponed-bg:#ECE8FA;--anime-sky:#4850A3;--anime-art:url("img/anime/bg-day.webp");--scrim:rgba(16,16,34,.55);--hl:rgba(255,255,255,.35);color-scheme:light;}
html[data-theme="anime-dark"],html[data-theme="anime-dark"] .app.functional{--bg:#181D35;--bg2:#1E2540;--surface:#252B46;--t1:#F4F0FA;--t2:#D0CEE0;--t3:#AAA9C4;--green:#F8B7CF;--green-bg:#493145;--green-tx:#FFD5E3;--on-acc:#261928;--line:#4A536D;--line-btn:#727891;--mark:#939AB4;--t4:#AAA9C4;--page:#1E2540;--ui:ZarokUI,'Manrope',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;--mono:ZarokUI,'Manrope',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;--input-bg:#252B46;--fill:#1E2540;--fill-2:#244538;--line-soft:#4A536D;--hair:#4A536D;--mute:#AAA9C4;--dash:#939AB4;--on-t1:#252B46;--acc-1:#F8B7CF;--acc-2:#F8B7CF;--acc-3:#F8B7CF;--acc-edge:#F8B7CF;--acc-ring:#B6CAFF;--yellow:#C9C0FF;--yellow-bg:#3C3657;--yellow-bd:#4A536D;--danger:#FFBCB3;--danger-bg:#523337;--danger-bd:#4A536D;--me-1:#1E2540;--me-2:#493145;--tab-1:#493145;--tab-2:#1E2540;--anime-done:#9FDDC0;--anime-done-bg:#244538;--anime-missed:#FFBCB3;--anime-missed-bg:#523337;--anime-postponed:#C9C0FF;--anime-postponed-bg:#3C3657;--anime-sky:#B6CAFF;--anime-art:url("img/anime/bg-night.webp");--scrim:rgba(16,16,34,.55);--hl:rgba(255,255,255,.35);color-scheme:dark;}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional{font-family:var(--ui);color:var(--t1);font-size:14px;line-height:1.55}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(button,input,textarea,select){font-family:var(--ui)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.hdr-date,.plain-hdr h1,.cal-title,.sheet-h h2){font-family:var(--ui);font-weight:700;letter-spacing:-.035em;text-transform:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.hdr-date,.plain-hdr h1){font-size:28px;line-height:1.2}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.evtext b,.card-h h3){font:700 15px/1.4 var(--ui);color:var(--t1)!important}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.evtext span,.hint,.hdr-sub,.sub){font:400 13px/1.55 var(--ui);color:var(--t2)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.tl-time b,.mono,.cell-n,.hdr-prog span,.daydone-score){font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .tl-time b{font-size:12px;color:var(--t2)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.evcard,.dosecard,.card,.course,.fold,.prog,.todaycard,.daydone){background:var(--surface)!important;border:1px solid var(--line)!important;border-radius:18px;box-shadow:0 3px 0 var(--bg2)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.evcard,.dosecard){position:relative;isolation:isolate}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .evbadge{background:var(--green-bg)!important;color:var(--green-tx)!important;border-color:transparent!important;border-radius:11px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .evcard:has(.chk.on){background:var(--anime-done-bg)!important;border-color:var(--anime-done)!important}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.donerow,.banner.done){background:var(--anime-done-bg);color:var(--anime-done);border-color:var(--anime-done)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .donerow b{color:var(--anime-done);opacity:1}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.banner.missed,.evcard.missed){color:var(--anime-missed);background:var(--anime-missed-bg)!important;border-color:var(--anime-missed)!important;border-style:dashed!important}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.banner.postponed,.evcard.postponed){background:var(--anime-postponed-bg)!important;border-color:var(--anime-postponed)!important;color:var(--anime-postponed)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .chk::before{border:1.75px solid var(--mark);border-radius:7px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .chk.on::before{background:var(--anime-done);border-color:var(--anime-done);color:var(--surface);animation:anime-complete 320ms cubic-bezier(.2,.7,.3,1)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.btn,.navbtn,.icon-btn,.segadd){border-radius:13px;border-color:var(--line-btn)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .btn{font:600 13px/1.45 var(--ui);min-height:46px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.btn.green,.btn.primary,.today-btn,.segadd){background:var(--green);color:var(--on-acc);border:1px solid var(--green);box-shadow:0 3px 0 color-mix(in srgb,var(--green) 65%,var(--t1));text-shadow:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(input,textarea,select){background:var(--input-bg);color:var(--t1);border-color:var(--line-btn);border-radius:12px;font-size:14px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(input,textarea)::placeholder{color:var(--t3);opacity:1}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(button,input,textarea,select,summary):focus-visible{outline:2px solid var(--acc-ring);outline-offset:3px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.switch,.sx-toggle i){background:var(--mark)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.switchrow[aria-checked="true"] .switch,.sx-toggle[aria-checked="true"] i){background:var(--green)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.switch::after,.sx-toggle i::after){background:var(--on-acc)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.pchip,.tagchip,.chip){background:var(--bg2);border:1px solid var(--line);color:var(--t2);font-size:12px;border-radius:8px;max-width:100%;overflow-wrap:anywhere;white-space:normal}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .pchip.today-btn{background:var(--green);color:var(--on-acc)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.grid .cell,.week .cell){background:var(--surface)!important;border-color:var(--line)!important;border-radius:12px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .cell-n{color:var(--t2)!important}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .cell.sel{background:var(--green-bg)!important;box-shadow:inset 0 0 0 1.5px var(--green)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .cell-n.today{background:var(--green);color:var(--on-acc)!important}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .cell.past{background:var(--bg2)!important}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.dow,.cell-dw){color:var(--t3)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .tabbar{background:var(--surface);border-top:1px solid var(--line);box-shadow:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .tab.on{color:var(--green-tx)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .tab.on .tab-ico{background:var(--green-bg);border-radius:10px;box-shadow:0 2px 0 var(--line)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .tab-lb{font:600 10px/1.2 var(--ui)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .sheet{background:var(--surface);border:1px solid var(--line);border-radius:26px 26px 0 0;box-shadow:0 -14px 50px #080c2226}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.sheet-h,.sheet-foot){background:var(--surface);border-color:var(--line)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .sheet-h h2{font-size:22px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .handle{background:var(--line-btn)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.progress-ring-track,.donut-empty){stroke:var(--line)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .progress-ring-line{stroke:var(--green)!important;filter:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.track,.lx-meter){background:var(--line)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.track i,.lx-meter i,.daydone-line){background:var(--green);filter:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .done-line::after{animation:none;content:none}
/* сообщение внизу экрана — плашка темы: цвет акцента (малина «Ханами», розовый «Цукими») со «ступенькой», как у кнопок темы (задание владельца 14 октября 2026) */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .toast{background:var(--green);color:var(--on-acc);border:1px solid var(--green);border-radius:14px;font:600 13px/1.5 var(--ui);box-shadow:0 3px 0 color-mix(in srgb,var(--green) 65%,var(--t1))}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .toast button{color:var(--on-acc)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .hdr{background:var(--surface);position:relative;border-bottom:1px solid var(--line)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .hdr::after{content:"";position:absolute;right:5px;top:auto;bottom:5px;width:9px;height:9px;background:var(--green);clip-path:polygon(50% 0,62% 37%,100% 50%,62% 62%,50% 100%,37% 62%,0 50%,37% 37%);opacity:.45;pointer-events:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:0 4px 0 var(--bg2)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero-copy{position:relative;z-index:1;background:var(--surface);border-radius:12px;padding:10px;max-width:68%}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero::before{content:"";position:absolute;inset:0;background-image:var(--anime-art);background-size:cover;background-position:center 65%;opacity:.6;pointer-events:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero::after{content:"";position:absolute;right:8px;bottom:8px;width:35px;height:20px;background:repeating-linear-gradient(-40deg,transparent 0 5px,var(--line-btn) 5px 6px);opacity:.5;pointer-events:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero h2{font:700 22px/1.2 var(--ui);color:var(--t1);letter-spacing:-.025em}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-eyebrow{font-size:10px;color:var(--t2);letter-spacing:.08em}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-score{font-variant-numeric:tabular-nums;color:var(--green-tx)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero-foot{position:relative;z-index:1}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-pet{position:absolute;right:5px;bottom:30px;width:100px;z-index:1}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .ic{stroke-width:1.75}
@keyframes anime-complete{0%{transform:scale(.82)}65%{transform:scale(1.08)}100%{transform:scale(1)}}
@media(prefers-reduced-motion:reduce){html:is([data-theme="anime"],[data-theme="anime-dark"]) .chk.on::before{animation:none}html:is([data-theme="anime"],[data-theme="anime-dark"]) *{scroll-behavior:auto;transition:none!important}}
html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big :is(.evtext b,.card-h h3){font-size:18px}html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big :is(.evtext span,.hint,.sub){font-size:16px}html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big :is(.btn,input,textarea,select){font-size:16px}html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big .tl-time b{font-size:14px}html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big :is(.hdr-date,.plain-hdr h1){font-size:32px}

html:is([data-theme="anime"],[data-theme="anime-dark"]) :is(.lx-score strong,.lx-theme-score){background:none;-webkit-text-fill-color:var(--green-tx);color:var(--green-tx);letter-spacing:-.04em}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-score{letter-spacing:0}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-score>span{letter-spacing:0}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .chk.on::before{background-image:none;box-shadow:none;filter:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .tagchip{background-image:none;box-shadow:none;text-transform:none;letter-spacing:0}

/* Scene light, ground contact and one-shot reaction. No new app markup. */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero::before{opacity:.85;background-position:center 67%}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero::after{right:12px;bottom:26px;width:94px;height:16px;border-radius:50%;background:radial-gradient(ellipse,#30233838,transparent 70%);opacity:.65}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-pet{filter:drop-shadow(0 4px 2px #5e384328);transform-origin:50% 85%}
html[data-theme="anime-dark"] .lx-pet{filter:brightness(.88) saturate(.85) drop-shadow(0 0 4px #b6caff45)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero.is-done{border-color:var(--green);background:var(--surface)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero.is-done .lx-hero-copy{max-width:55%}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero.is-done .lx-pet{width:130px;bottom:25px;right:2px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero.is-done::after{width:112px;right:6px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-react .lx-pet{animation:anime-nod 360ms ease-out}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-react .lx-hero-foot::after{content:"";position:absolute;right:12px;bottom:65px;width:30px;height:30px;background:var(--green);clip-path:polygon(50% 0,60% 35%,95% 45%,60% 55%,50% 90%,40% 55%,5% 45%,40% 35%);animation:anime-spark 360ms ease-out forwards;pointer-events:none}
@keyframes anime-nod{0%{transform:rotate(0) translateY(0)}45%{transform:rotate(-4deg) translateY(-3px)}100%{transform:rotate(0) translateY(0)}}
@keyframes anime-spark{0%{opacity:0;transform:scale(.5)}40%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(.75) translateY(-6px)}}
@media(prefers-reduced-motion:reduce){html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-react .lx-pet{animation:none}html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-react .lx-hero-foot::after{content:none;animation:none}}

html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero{padding-bottom:34px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero-foot{position:absolute;left:16px;right:16px;bottom:14px;margin:0}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-react .lx-hero-foot::before{content:"";position:absolute;right:66px;bottom:94px;width:14px;height:14px;background:var(--anime-sky);clip-path:polygon(50% 0,60% 37%,100% 50%,60% 63%,50% 100%,40% 63%,0 50%,40% 37%);animation:anime-spark 360ms ease-out forwards;pointer-events:none}
@media(prefers-reduced-motion:reduce){html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-react .lx-hero-foot::before{content:none;animation:none}}

/* ---------- привязка к приложению (сборка 71) ---------- */

/* Глянцевые переменные коллекций (luxe.css) у аниме-темы плоские: разметка блока дня общая с коллекциями,
   а блеска, градиентных цифр и металла в этом стиле нет. */
html:is([data-theme="anime"],[data-theme="anime-dark"]),html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional{--lx-stage:linear-gradient(var(--surface),var(--surface));--lx-edge:linear-gradient(var(--line),var(--line));--lx-light:transparent;--lx-shadow:transparent;--lx-surface:linear-gradient(var(--surface),var(--surface));--lx-numeral:linear-gradient(var(--green-tx),var(--green-tx));--lx-progress:linear-gradient(var(--green),var(--green));--lx-track:var(--line);--lx-button:linear-gradient(var(--green),var(--green));--lx-button-edge:linear-gradient(var(--green),var(--green));--lx-button-ink:var(--on-acc);--lx-metal:var(--green-tx);--lx-nav:var(--surface);}

/* Слоты декора. Вырезанные картинки (облака, лепестки) появятся позже: достаточно назначить
   --anime-decor-hdr (шапка дня) и --anime-decor-hero (блок дня). Без картинок слоты пусты и места не занимают. */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .hdr{isolation:isolate}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .hdr::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--anime-decor-hdr) right top/auto 100% no-repeat}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-decor{position:absolute;inset:0;z-index:0;pointer-events:none;background:var(--anime-decor-hero) right top/auto 100% no-repeat}

/* Плитка выбора темы на экране «Оформление»: видна в любой теме, поэтому привязана к самой плитке, а не к теме. */
:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night):is([data-lx-material="anime"],[data-lx-material="anime-auto"]){--bg:#F8F4FA;--bg2:#F0EAF5;--surface:#FFFCFA;--t1:#251E35;--t2:#51455F;--t3:#5A4C64;--line:#D5CADA;--green:#A93455;--green-tx:#8E2949;--green-bg:#F7E4EB;--on-acc:#FFFFFF;--lx-track:#D5CADA;--lx-progress:linear-gradient(#A93455,#A93455);--lx-numeral:linear-gradient(#8E2949,#8E2949);--lx-metal:#8E2949;--anime-tile-art:url("img/anime/tile-day.webp")}
:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night)[data-lx-material="anime-dark"]{--bg:#181D35;--bg2:#1E2540;--surface:#252B46;--t1:#F4F0FA;--t2:#D0CEE0;--t3:#AAA9C4;--line:#4A536D;--green:#F8B7CF;--green-tx:#FFD5E3;--green-bg:#493145;--on-acc:#261928;--lx-track:#4A536D;--lx-progress:linear-gradient(#F8B7CF,#F8B7CF);--lx-numeral:linear-gradient(#FFD5E3,#FFD5E3);--lx-metal:#FFD5E3;--anime-tile-art:url("img/anime/tile-night.webp")}

/* Блок дня: разметка общая с коллекциями, размеры — по макету темы (компактная карточка, счёт в одну строку). */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .lx-hero{margin:14px 16px 16px;padding:14px 14px 38px;min-height:156px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero-copy{max-width:calc(100% - 112px);padding:10px 12px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero.is-done .lx-hero-copy{max-width:calc(100% - 136px)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero h2{margin:4px 0 0;max-width:none;text-wrap:wrap}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-score{display:flex;align-items:baseline;gap:6px;margin:8px 0 0}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .lx-score strong{font:700 30px/1 var(--ui)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .lx-score>span{font:600 14px/1.2 var(--ui);color:var(--t2)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-next{font:400 12px/1.5 var(--ui);color:var(--t2);margin:6px 0 0;overflow-wrap:anywhere}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero .lx-pet{height:auto;max-width:none;object-fit:contain}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .lx-hero .lx-meter{height:6px;background:var(--line);box-shadow:none;border-radius:6px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .lx-hero .lx-meter i{box-shadow:none;border-radius:6px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-continue{position:relative;z-index:1}
html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big .lx-hero h2{font-size:24px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .lx-hero h2{font:700 19px/1.25 var(--ui);overflow-wrap:break-word}
html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big .app.functional .lx-hero h2{font-size:21px}
/* пустой день: в подвале блока стоит кнопка «Добавить дело» — подвал идёт обычным потоком под текстом, а не поверх него */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .lx-hero:has(.lx-continue){padding-bottom:14px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero:has(.lx-continue) .lx-hero-foot{position:relative;left:auto;right:auto;bottom:auto;margin:12px 0 0;max-width:calc(100% - 112px)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero:has(.lx-continue) .lx-meter{display:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-continue{background:var(--green);color:var(--on-acc);border:1px solid var(--green);border-radius:13px;box-shadow:0 3px 0 color-mix(in srgb,var(--green) 65%,var(--t1));font:600 13px/1.45 var(--ui);min-height:44px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero-copy{max-width:calc(100% - 98px);padding:10px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .lx-hero h2{font-size:18px;hyphens:auto;-webkit-hyphens:auto}
html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big .app.functional .lx-hero h2{font-size:20px}

/* ---------- декор частями (картинки серии 2, img/anime/decor-*.webp) ----------
   Правила: декор не лежит под текстом и не ловит нажатия; на экране не больше пяти декоративных картинок;
   движется только слой облаков в шапке дня (один элемент, transform); в ночной теме — ночные элементы и приглушение.
   Часть суток ставит приложение: html[data-anime-part] = morning | day | evening | night (js/app.js). */
html[data-theme="anime"]{--anime-cloud-a:url("img/anime/decor-cloud-day-1.webp");--anime-cloud-b:url("img/anime/decor-cloud-day-2.webp");--anime-fx:url("img/anime/decor-petals.webp");--anime-decor-dim:1}
/* вечером и ночью в светлой теме — закатное облако; ночное облако и звёзды — только в теме «Аниме · ночь» */
html[data-theme="anime"]:is([data-anime-part="evening"],[data-anime-part="night"]){--anime-cloud-a:url("img/anime/decor-cloud-evening-1.webp");--anime-cloud-b:url("img/anime/decor-cloud-evening-1.webp")}
html[data-theme="anime-dark"]{--anime-cloud-a:url("img/anime/decor-cloud-night-1.webp");--anime-cloud-b:url("img/anime/decor-stars.webp");--anime-fx:url("img/anime/decor-stars.webp");--anime-decor-dim:.72}

/* шапка дня: одно небольшое облако в строке даты, посередине — в стороне от даты, кнопок дней и счётчика.
   Тонкое облако у верхней кромки убрано: край экрана срезал его, и оно читалось как обрезок. */
/* облако из шапки убрано (правка владельца 12 октября): облака лежат фоном списка дел, см. блок «единая шапка дня» ниже */

/* блок дня: лепестки (ночью звёзды, в закрытом дне конфетти) над картинкой справа вверху и трава по нижней кромке.
   Слой лежит под текстовой плашкой, Зароком и полосой прогресса. */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-decor{background:var(--anime-fx) right 8px top 6px/104px auto no-repeat}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero.is-done .anime-decor{background:url("img/anime/decor-confetti.webp") right 10px top 4px/118px auto no-repeat}
/* трава — низкая кромка (20 px) под полосой прогресса; в ночной теме приглушена только она, звёзды и конфетти — как есть */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-decor::after{content:"";position:absolute;left:0;right:0;bottom:0;height:20px;background:url("img/anime/decor-grass.webp") left bottom/82px auto repeat-x}
html[data-theme="anime-dark"] .anime-decor::after{filter:brightness(.62) saturate(.8)}
/* полоса прогресса стоит над травой, а не на ней */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .lx-hero:not(:has(.lx-continue)){padding-bottom:48px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero:not(:has(.lx-continue)) .lx-hero-foot{bottom:26px}

/* пустой день: лепестки (ночью звёзды) в правом верхнем углу блока «Свободный день», в стороне от текста */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .dayempty.zerostate-day{position:relative}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .dayempty.zerostate-day::after{content:"";position:absolute;right:6px;top:2px;width:76px;height:66px;background:var(--anime-fx) center/contain no-repeat;opacity:.8;pointer-events:none}

/* «Оформление»: ветка сакуры в правом углу шапки окна */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .sheet:has(.look-tabs) .sheet-h{position:relative}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .sheet:has(.look-tabs) .sheet-h::after{content:"";position:absolute;right:0;top:4px;width:128px;height:50px;background:url("img/anime/decor-branch.webp") right center/contain no-repeat;opacity:var(--anime-decor-dim);pointer-events:none}

/* прогресс: искры у кольца */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .chart-donut.progress-ring{position:relative}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .chart-donut.progress-ring::after{content:"";position:absolute;right:-8px;top:-8px;width:36px;height:30px;background:url("img/anime/decor-sparkles.webp") center/contain no-repeat;pointer-events:none}

/* достижения: стикер-росток у примечания */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .ach-note::before{content:"";display:inline-block;width:16px;height:16px;margin-right:5px;vertical-align:-3px;background:url("img/anime/decor-sticker-sprout.webp") center/contain no-repeat}

/* Аниме-Зарок в блоке дня: рисунок с прозрачным фоном, стоит в траве */
/* рамка одна на все позы и состояния дня: рисунок вписывается целиком и стоит на нижнем крае — Зарок не «вырастает» */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero .lx-pet.anime-zarok,html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero.is-done .lx-pet.anime-zarok{width:104px;height:118px;object-fit:contain;object-position:center bottom;bottom:10px;right:6px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero .lx-pet.anime-zarok{filter:drop-shadow(0 3px 2px #5e384322)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero:has(.anime-zarok) .lx-hero-copy,html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero.is-done:has(.anime-zarok) .lx-hero-copy{max-width:calc(100% - 114px)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero:has(.anime-zarok):not(:has(.lx-continue)) .lx-hero-foot{right:118px}
html[data-theme="anime-dark"] .lx-hero .lx-pet.anime-zarok{filter:brightness(.86) saturate(.9) drop-shadow(0 0 4px #b6caff38)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero:has(.anime-zarok)::after{content:none}

/* подсказки обучения: кольцо и затемнение — в цветах темы */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .tour.full{background:var(--scrim)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .tour-ring{box-shadow:0 0 0 2px var(--surface),0 0 0 6px color-mix(in srgb,var(--green) 55%,transparent),0 0 0 200vmax var(--scrim)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .tour-card{border:1px solid var(--line);box-shadow:0 4px 0 var(--bg2)}

/* ---------- единая шапка дня (правка владельца 12 октября 2026) ----------
   Шапка экрана «День» и блок «Ваш день» — один блок-герой: картинка на всю ширину, слева на плашке день недели и дата,
   справа кнопки дней, ниже плашка с фразой, счётом и ближайшим делом, справа Зарок на траве, под ними полоса прогресса.
   Разметку собирает animeHead (js/screens.js): блок дня лежит внутри шапки, кнопки и поле даты — прежние узлы.
   Текст стоит только на плашках. */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .hdr.day-hdr.anime-day{position:relative;isolation:isolate;overflow:hidden;padding:12px 14px 0;margin:0;background:var(--surface);border-bottom:1px solid var(--line);border-radius:0;box-shadow:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day::before{content:"";position:absolute;inset:0;z-index:-2;pointer-events:none;background:var(--anime-art) center 62%/cover no-repeat;opacity:.92;animation:none;transform:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day::after{content:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .hdr-row{position:relative;z-index:1;gap:7px;align-items:flex-start}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .hdr-main{flex:0 1 auto;min-width:0;margin-right:auto;background:var(--surface);border-radius:12px;padding:7px 12px 8px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .hdr-date{font-size:22px;line-height:1.15;overflow-wrap:anywhere}
html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big .app.functional .anime-day .hdr-date{font-size:24px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .hdr-sub{margin-top:2px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .navbtn{background:var(--surface)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day :is(.metrics,.day-tools,.hdr-prog){position:relative;z-index:1;background:var(--surface);border-radius:12px;margin-top:8px;padding:6px 10px}
/* блок дня внутри шапки: без своей рамки и своего фона */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero{margin:8px 0 0;padding:0 0 46px;min-height:124px;border:0;border-radius:0;background:none;box-shadow:none;overflow:visible}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero:has(.lx-continue){padding-bottom:30px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .lx-hero::before{content:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .lx-eyebrow{display:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero h2{margin-top:0}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .anime-decor{left:-14px;right:-14px;top:-70px;bottom:0}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .lx-hero .lx-pet.anime-zarok,html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .lx-hero.is-done .lx-pet.anime-zarok{right:-2px;bottom:10px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .lx-hero:not(:has(.lx-continue)) .lx-hero-foot{left:0;right:112px;bottom:26px}
/* закрытый день: та же рамка Зарока и та же линия пола; конфетти левее и выше него */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .lx-hero.is-done .anime-decor{background-position:right 96px top 4px;background-size:92px auto}

/* облака — фоном списка дел: за карточками, видны в промежутках, у правого края и под списком; не движутся.
   Ночная тема: ночное облако и звёзды. Колонка времени слева остаётся чистой. */
html:is([data-theme="anime"],[data-theme="anime-dark"]) #dayscroll{background-image:var(--anime-cloud-a),var(--anime-cloud-b),var(--anime-cloud-a);background-repeat:no-repeat;background-position:right -28px top 40%,right 64px top 71%,right 22px bottom 20px;background-size:150px auto,120px auto,116px auto;background-attachment:local}

/* лепесток, пролетающий при отметке дела: один раз, 600 мс */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-react .anime-decor::before{content:"";position:absolute;right:128px;top:84px;width:22px;height:15px;background:url("img/anime/decor-petal.webp") center/contain no-repeat;animation:anime-petal 600ms ease-out forwards;pointer-events:none}
@keyframes anime-petal{0%{opacity:0;transform:translate(0,0) rotate(0)}20%{opacity:1}100%{opacity:0;transform:translate(-74px,48px) rotate(-85deg)}}
@media(prefers-reduced-motion:reduce){html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-react .anime-decor::before{content:none;animation:none}}

/* искры у счёта, когда день закрыт */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .lx-hero.is-done .lx-score::after{content:"";flex:none;align-self:center;width:24px;height:20px;margin-left:2px;background:url("img/anime/decor-sparkles.webp") center/contain no-repeat}

/* пустой список: стикер-росток в левом верхнем углу блока «Свободный день» */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .dayempty.zerostate-day::before{content:"";position:absolute;left:10px;top:4px;width:34px;height:34px;background:url("img/anime/decor-sticker-sprout.webp") center/contain no-repeat;pointer-events:none}

/* календарь: цветок сакуры в шапке, между названием месяца и кнопкой «следующий» */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .cal-hdr.cal-top{position:relative}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .cal-hdr.cal-top::before{content:"";position:absolute;right:66px;top:14px;width:22px;height:21px;background:url("img/anime/decor-flower.webp") center/contain no-repeat;opacity:var(--anime-decor-dim);pointer-events:none}

/* ближайшее дело в блоке — не больше двух строк: блок не должен занимать больше 45 % экрана на 320 px и с крупным шрифтом */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .lx-next{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big .anime-day .lx-next{-webkit-line-clamp:1}

/* ---------- шапка дня при прокрутке (js/materials.js, DAY_HEAD → html[data-day-head]) ----------
   Без атрибута блок уезжает со списком. 'pin-all' — блок закреплён у верхнего края, список идёт под ним.
   'pin-strip' — блок уезжает, а полоска .day-strip (день недели, дата, стрелки) остаётся: она лежит под блоком и
   открывается, когда блок ушёл вверх. */
html:is([data-theme="anime"],[data-theme="anime-dark"])[data-day-head="pin-all"] .app.functional .hdr.day-hdr.anime-day{position:sticky;top:0;z-index:6}
html:is([data-theme="anime"],[data-theme="anime-dark"])[data-day-head="pin-strip"] .app.functional .hdr.day-hdr.anime-day{z-index:5}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .day-strip{position:sticky;top:0;z-index:7;display:flex;align-items:center;gap:7px;height:46px;margin-bottom:-46px;padding:0 14px;background:var(--surface);border-bottom:1px solid var(--line);box-shadow:0 2px 6px #2a1f3a1f}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .day-strip b{font:700 15px/1.2 var(--ui);color:var(--t1);white-space:nowrap}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .day-strip .day-strip-date{font:400 13px/1.2 var(--ui);color:var(--t2);margin-right:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;padding:8px 4px}
/* полоска скрыта, пока блок дня на экране: включает её приложение (класс on), когда блок ушёл вверх */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .day-strip{visibility:hidden;pointer-events:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .day-strip.on{visibility:visible;pointer-events:auto}
html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big .day-strip b{font-size:16px}
html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big .day-strip .day-strip-date{font-size:14px}
@media(max-width:350px){html:is([data-theme="anime"],[data-theme="anime-dark"]) .day-strip{padding:0 10px;gap:5px}html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .day-strip .navbtn{width:40px}}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .day-strip .navbtn{width:40px;height:40px;min-height:0;font-size:18px;flex:none;background:var(--surface)}
/* компоновки Plus: у их прокрутки есть поля (luxe.css, .flow-scroll) — полоска выходит на всю ширину и встаёт к самому верху */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .flow-scroll>.day-strip{top:-16px;margin:0 -14px -46px}
@media(max-width:350px){html:is([data-theme="anime"],[data-theme="anime-dark"]) .flow-scroll>.day-strip{top:-10px;margin:0 -10px -46px}}
/* отметка выполненного дела — круглая печать с галочкой в правом верхнем углу строки (js/materials.js, ANIME_STAMP).
   Это сама кнопка отметки: внутри строки её нет, название стоит сразу после времени. Зона нажатия 44 × 44; над строкой
   она выступает только на высоту самой печати (5 px), чтобы не перехватывать нажатия по заголовку «Выполнено». */
html[data-anime-stamp="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .donerow{position:relative}
html[data-anime-stamp="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .donerow .chk.on{position:absolute;right:0;top:-13px;width:44px;height:52px;z-index:1;clip-path:inset(8px 0 0 0)}
html[data-anime-stamp="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .donerow .chk.on:focus-visible{clip-path:none}
html[data-anime-stamp="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .donerow .chk.on::before{inset:8px 11px auto 11px;width:22px;height:22px;border-radius:50%;border:2px solid var(--anime-done);background:var(--surface);color:var(--anime-done);font-size:12px;transform:rotate(-12deg)}
/* под печать в углу строки выполненного дела оставлено место: название и длительность под неё не заходят */
html[data-anime-stamp="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .donerow{padding-right:46px}
/* слоты декора на других экранах темы (js/materials.js, ANIME_DECOR; адреса картинок — переменные --anime-decor-*, их ставит
   js/app.js): по одному небольшому элементу в свободном углу, не под текстом, нажатий не перехватывает */
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]){--anime-decor-night:none}
html[data-anime-decor="1"][data-theme="anime-dark"]{--anime-decor-night:brightness(.82) saturate(.85)}
/* календарь: ветка сакуры в углу шапки месяца (прежний цветок у названия уступает ей место) */
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .cal-title-box{position:relative}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .cal-title-box::after{content:"";position:absolute;right:-6px;top:-10px;width:54px;height:54px;background:var(--anime-decor-cal,none) center/contain no-repeat;pointer-events:none;z-index:0;opacity:var(--anime-decor-dim);filter:var(--anime-decor-night)}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .cal-hdr.cal-top::before{content:none}
/* прогресс: фонарик у кольца, в углу над ним (искры уступают ему место) */
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .chart-donut.progress-ring::before{content:"";position:absolute;right:-20px;top:-14px;width:28px;height:42px;background:var(--anime-decor-progress,none) center/contain no-repeat;pointer-events:none;opacity:var(--anime-decor-dim);filter:var(--anime-decor-night)}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .chart-donut.progress-ring::after{content:none}
/* пустой день: бутоны в левом верхнем углу (на месте наклейки-ростка) */
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .dayempty.zerostate-day::before{left:10px;top:4px;width:40px;height:60px;background:var(--anime-decor-empty,none) center/contain no-repeat;opacity:var(--anime-decor-dim);filter:var(--anime-decor-night)}
/* окно дела: лепестки в углу шапки окна, левее кнопки закрытия */
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) #overlay .sheet:has([data-act="ev-save"]) .sheet-h{position:relative}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) #overlay .sheet:has([data-act="ev-save"]) .sheet-h::after{content:"";position:absolute;right:54px;top:8px;width:42px;height:46px;background:var(--anime-decor-sheet,none) center/contain no-repeat;pointer-events:none;opacity:var(--anime-decor-dim);filter:var(--anime-decor-night)}
/* экран Plus: веер в углу картинки */
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .of-hero{position:relative}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .of-hero::after{content:"";position:absolute;right:10px;bottom:26px;width:54px;height:36px;background:var(--anime-decor-plus,none) center/contain no-repeat;pointer-events:none}
/* баннер «Было / Стало»: справа внизу панель плана с текстом — декор в левый нижний угол, на кучу записок */
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .of-hero.zb-c2::after{right:auto;left:10px;bottom:8px;z-index:3}
@media(max-width:380px){html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .cal-title-box::after{width:36px;height:36px;right:-6px;top:-4px}}
@media(max-width:350px){
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .cal-title-box::after{content:none}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .dayempty.zerostate-day::before{width:30px;height:46px}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) #overlay .sheet:has([data-act="ev-save"]) .sheet-h::after{width:32px;height:36px}
html[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .of-hero::after{width:42px;height:28px}
}
html.text-big[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) .cal-title-box::after{content:none}
html.text-big[data-anime-decor="1"]:is([data-theme="anime"],[data-theme="anime-dark"]) #overlay .sheet:has([data-act="ev-save"]) .sheet-h::after{width:32px;height:36px}

/* ---------- шапка дня «Ханами» (шаг 127; владелец на сборке 73: «в японском дизайне вообще нету Зарков» и «„Утро собрано“
   стыкуется на две линии… „1 из 1“ попробуй в уголок») ----------
   1. В компоновках «Единый день» и «План отдельно» общий стиль этих компоновок прятал Зарока и растягивал заголовок на
      25 px под счёт в полэкрана. В теме шапка одна на все компоновки: Зарок на месте, плашка как в обычной компоновке.
   2. Реплика и счёт — на одной линии: реплика слева (жирно, как раньше), счёт мелко справа (сетка в две колонки). Кегль
      подгоняет js/screens.js, animeFit: ступенями вниз до 13 px, пока реплика стоит в одну строку; не уложилась и на 13 — две
      строки, а счёт остаётся справа на линии последней строки (17 октября: на телефоне с крупным шрифтом счёт уходил под
      реплику). Текст не обрезается: без nowrap и overflow на одной строке.
   3. Плашка занимает всю свободную ширину слева от Зарока; плашка даты компактнее. */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero-copy{position:relative;width:calc(100% - 114px);max-width:calc(100% - 114px);padding:9px 12px 10px;box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px;align-items:last baseline}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero-copy>:not(h2):not(.lx-score){grid-column:1/-1}
/* очень узко (320 px, крупный шрифт): рядом со счётом реплика не уложилась и в две строки — счёт под ней справа (js/screens.js) */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero-copy.score-own{grid-template-columns:minmax(0,1fr)}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero h2{font:700 19px/1.25 var(--ui);letter-spacing:-.01em;margin:0;min-height:0;max-width:none;padding:0;overflow-wrap:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* до подгонки (страница соседнего дня при листании, первый кадр) реплика уже компактная, без скачка в размере (сборка 76, замечание владельца) */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero h2:not([data-fit-lines]){font-size:17px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-score{position:static;display:flex;margin:0;gap:1px;align-items:baseline;justify-content:flex-end;justify-self:end;white-space:nowrap}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-score strong{font:700 15px/1.25 var(--ui);letter-spacing:0}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-score>span{font:600 12px/1.25 var(--ui);color:var(--t2);letter-spacing:0}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero.is-done .lx-score::after{width:15px;height:13px;margin-left:3px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-next{margin-top:4px}
/* плашка даты */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .hdr-main{padding:5px 11px 6px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .hdr-date{font:700 19px/1.15 var(--ui);letter-spacing:-.01em;text-transform:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]).text-big .app.functional .anime-day .hdr-date{font-size:21px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .hdr-sub{margin-top:1px;font-size:12.5px;line-height:1.25}
/* компоновки «Единый день» и «План отдельно»: та же шапка темы, что в обычной компоновке */
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary{margin:8px 0 0;padding:0 0 46px;min-height:124px;background:none!important}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary:has(.lx-continue){padding-bottom:30px}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary .lx-pet{display:block}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary h2{font:700 19px/1.25 var(--ui);letter-spacing:-.01em;min-height:0;max-width:none}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary .lx-score{position:static;margin:0;gap:1px}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary .lx-score strong{font:700 15px/1.25 var(--ui);letter-spacing:0}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary .lx-score>span{font:600 12px/1.25 var(--ui);letter-spacing:0}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary .lx-hero-foot{margin:0}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary .lx-meter{height:6px}
html.text-big.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary .lx-score{position:static;margin:0}

/* ---------- плашка реплики и линия выполнения — один блок (шаг 127б; владелец: «плашка сильно далеко от линии… объединить её
   с линией выполнения — чтобы это был один блок») ----------
   Линия стоит на прежнем месте; плашка опущена к ней вплотную и теряет нижнее скругление, линия становится нижней кромкой
   плашки (во всю её ширину, со скруглением плашки). Плашка даты остаётся сверху. В пустом дне линии нет — плашка целая,
   под ней кнопка «Добавить дело», как раньше. */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero{display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:26px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero:has(.lx-continue){padding-bottom:30px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero:not(:has(.lx-continue)) .lx-hero-copy{border-radius:12px 12px 0 0}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero:not(:has(.lx-continue)) .lx-hero-foot{position:relative;left:auto;right:auto;bottom:auto;width:calc(100% - 114px);max-width:calc(100% - 114px);margin:0;padding:0;box-sizing:border-box}
/* линия лежит внутри нижнего скругления плашки: верхняя половина полосы — та же поверхность, что у плашки, нижние 6 px — сама линия */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero:not(:has(.lx-continue)) .lx-hero-copy{padding-bottom:4px}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero:not(:has(.lx-continue)) .lx-meter{display:block;height:12px;margin:0;border-radius:0 0 12px 12px;overflow:hidden;background:linear-gradient(var(--surface) 0 6px,color-mix(in srgb,var(--t1) 14%,var(--surface)) 6px 100%);box-shadow:none;filter:none}
html:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero:not(:has(.lx-continue)) .lx-meter i{height:6px;margin-top:6px;border-radius:0;min-width:0}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary{padding-bottom:26px}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary:has(.lx-continue){padding-bottom:30px}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary:not(:has(.lx-continue)) .lx-hero-foot{margin:0}
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .flow-summary:not(:has(.lx-continue)) .lx-meter{height:12px}
/* шаг 133г: «Единый день» и «План отдельно» — строка дела без боковых и верхней линий, как у материалов (остаётся разделитель снизу):
   значок дела стоял вплотную к левой линии рамки строки, а у выбранной строки эта линия шла сквозь значок внутри рамки выбора */
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .flow-journal :is(.evcard,.dosecard,.mealcard){border-left:0!important;border-right:0!important;border-top:0!important}
/* шаг 133д: кнопка «⋮» в строке дела тех же 44px, что у материалов (было 32px из luxe.css) — галочка и кружок выбора стоят там же, где во всех темах */
html.day-flow-concept:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .flow-journal .pm-card>.card-controls>button{width:44px;min-width:44px}


/* ---- meme-theme.css ---- */
/* Мемная тема. Основа — дизайн-пакет «Зарок — Meme» (meme-theme.css), ниже отдельным блоком — привязка к приложению.
   Собирается скриптами Переводы/en/68/step70 и step72 — правки вносить там (step70/meme-app.css) и пересобирать.
   Все правила — под html[data-theme=meme] и html[data-theme=meme-dark]; исключение — плитка выбора темы на экране
   «Оформление» (она видна в любой теме) и именованные keyframes. Шрифт — Manrope приложения (ZarokUI). */
html[data-theme="meme"],html[data-theme="meme"] .app.functional{--bg:#F7F6ED;--bg2:#ECEFDD;--surface:#FFFEF8;--t1:#1D2020;--t2:#41483B;--t3:#626D57;--line:#59624F;--green:#CEED4A;--green-bg:#EFF7CD;--green-tx:#3D5314;--on-acc:#1D2020;--on-t1:#FFFEF8;--shadow:#1D2020;--sticker:#F7BDD6;--page:#F7F6ED;--ui:ZarokUI,'Manrope',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;--mono:ZarokUI,'Manrope',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;--input-bg:#FFFEF8;--line-btn:#59624F;--line-soft:#ECEFDD;--hair:#59624F;--fill:#ECEFDD;--fill-2:#EFF7CD;--mark:#59624F;--mute:#626D57;--t4:#626D57;--danger:#8F3329;--danger-bg:#FBE6DC;--danger-bd:#59624F;--yellow:#3D5314;--yellow-bg:#EFF7CD;--yellow-bd:#59624F;--acc-1:#CEED4A;--acc-2:#CEED4A;--acc-3:#CEED4A;--acc-edge:#1D2020;--acc-ring:#3D5314;--me-1:#ECEFDD;--me-2:#EFF7CD;--tab-1:#EFF7CD;--tab-2:#ECEFDD;--hl:transparent;--scrim:rgba(12,18,12,.5);color-scheme:light}
html[data-theme="meme-dark"],html[data-theme="meme-dark"] .app.functional{--bg:#171B1A;--bg2:#202721;--surface:#242B28;--t1:#F5F7EC;--t2:#DAE0D4;--t3:#B3BDB1;--line:#98A58F;--green:#DBF45D;--green-bg:#3A4721;--green-tx:#E2F99B;--on-acc:#1D2020;--on-t1:#1D2020;--shadow:#080A08;--sticker:#F7BDD6;--page:#171B1A;--ui:ZarokUI,'Manrope',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;--mono:ZarokUI,'Manrope',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;--input-bg:#242B28;--line-btn:#98A58F;--line-soft:#202721;--hair:#98A58F;--fill:#202721;--fill-2:#3A4721;--mark:#98A58F;--mute:#B3BDB1;--t4:#B3BDB1;--danger:#FFC4AE;--danger-bg:#49332B;--danger-bd:#98A58F;--yellow:#E2F99B;--yellow-bg:#3A4721;--yellow-bd:#98A58F;--acc-1:#DBF45D;--acc-2:#DBF45D;--acc-3:#DBF45D;--acc-edge:#F5F7EC;--acc-ring:#E2F99B;--me-1:#202721;--me-2:#3A4721;--tab-1:#3A4721;--tab-2:#202721;--hl:transparent;--scrim:rgba(12,18,12,.5);color-scheme:dark}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional{font-family:var(--ui);color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.hdr,.cal-hdr,.plain-hdr){border-bottom:2px solid var(--line);background:var(--surface)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.hdr-date,.plain-hdr h1,.cal-title){font-family:var(--ui);font-weight:700;letter-spacing:-.04em;text-transform:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.hdr-sub,.sub,.hint){color:var(--t2);line-height:1.6}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.evcard,.dosecard,.card,.course,.fold,.prog,.dayboard,.todaycard,.scn){border:1.75px solid var(--line)!important;border-radius:14px;background:var(--surface)!important;box-shadow:3px 3px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.evtext b,.card-h h3){color:var(--t1)!important;font-weight:700;font-size:15px;line-height:1.45}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .evtext span{color:var(--t2);line-height:1.6}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.tl-time b,.mono,.cell-n,.hdr-prog span){font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--t2)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .evbadge{background:var(--green-bg)!important;color:var(--green-tx)!important;border:1px solid var(--line)!important;border-radius:10px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.btn,.navbtn,.icon-btn,.segadd){border-radius:11px;border-color:var(--line);font-family:var(--ui)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .btn{min-height:46px;font-weight:700}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.btn.green,.btn.primary,.segadd,.today-btn){background:var(--green);background-image:none;border:1.75px solid var(--shadow);color:var(--on-acc);box-shadow:3px 3px 0 var(--shadow);text-shadow:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.btn.green,.btn.primary):active{box-shadow:1px 1px 0 var(--shadow);transform:translate(1px,1px)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(input,textarea,select){background:var(--surface);border-color:var(--line);border-radius:10px;color:var(--t1);font-family:var(--ui)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(input,textarea)::placeholder{color:var(--t3);opacity:1}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(button,input,textarea,select,summary):focus-visible{outline:3px solid var(--green-tx);outline-offset:3px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.tagchip,.chip,.pchip){border:1px solid var(--line);background:var(--bg2);background-image:none;box-shadow:none;color:var(--t2);border-radius:7px;font-size:12px;letter-spacing:0;text-transform:none;max-width:100%}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .chk.on::before{background:var(--green);background-image:none;color:var(--on-acc);border:1.5px solid var(--shadow);box-shadow:2px 2px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .donerow{background:var(--green-bg);border:1.75px solid var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .donerow b{color:var(--green-tx)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .grid .cell{background:var(--surface)!important;border:1px solid var(--line)!important;border-radius:9px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .cell-n{color:var(--t1)!important}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .cell.sel{background:var(--green-bg)!important;box-shadow:inset 0 0 0 1.5px var(--green-tx)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .cell-n.today{background:var(--green);color:var(--on-acc)!important}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.switchrow[aria-checked=true] .switch,.sx-toggle[aria-checked=true] i){background:var(--green-tx)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .tabbar{background:var(--surface);border-top:2px solid var(--line)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .tab.on .tab-ico{background:var(--green);color:var(--on-acc);border:1px solid var(--shadow);border-radius:9px;box-shadow:2px 2px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .tab.on{color:var(--green-tx)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .sheet{background:var(--surface);border:2px solid var(--line);border-radius:24px 24px 0 0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .sheet-h h2{font-weight:700;text-transform:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.sheet-h,.sheet-foot){background:var(--surface);border-color:var(--line)}
/* сообщение внизу экрана — плашка темы: лайм, тёмный контур, жёсткая тень; текст и кнопка тёмные (задание владельца 14 октября 2026) */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .toast{background:var(--green);color:var(--on-acc);border:1.75px solid var(--shadow);box-shadow:3px 3px 0 var(--shadow);border-radius:12px;font-weight:700}
html[data-theme="meme-dark"] .app.functional .toast{border-color:var(--meme-outline,#F0F0F0)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .toast button{color:var(--on-acc)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .progress-ring-line{stroke:var(--green-tx)!important}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.track i,.sbar i,.daydone-line){background:var(--green-tx);filter:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .done-line::after{content:none;animation:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .ic{stroke-width:1.8}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-stage{margin:16px;border:2px solid var(--line);border-radius:18px;box-shadow:4px 4px 0 var(--shadow);background:var(--green-bg);padding:16px 16px 12px;position:relative;isolation:isolate;overflow:hidden;color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-eyebrow{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.09em;color:var(--green-tx);padding:5px 7px;border:1px solid var(--line);background:var(--surface);border-radius:5px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-stage-row{display:flex;align-items:center;gap:8px;min-height:136px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-copy{flex:1;min-width:0;position:relative;z-index:1}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-copy h2{font:700 21px/1.18 var(--ui);letter-spacing:-.7px;margin:12px 0;overflow-wrap:anywhere}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-footnote{display:block;font-size:11px;line-height:1.6;color:var(--t2)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-character{position:relative;width:100px;flex:0 0 100px;align-self:stretch;display:flex;align-items:center;justify-content:center;padding-top:22px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-character img{width:100%;height:auto;filter:drop-shadow(0 4px 0 #19230b30);transform-origin:50% 75%}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-badge{position:absolute;top:6px;right:0;white-space:nowrap;z-index:2;background:var(--sticker);color:#321C2C;border:1.5px solid #321C2C;border-radius:5px;padding:5px 7px;font:700 10px/1 var(--ui);transform:rotate(5deg);box-shadow:2px 2px 0 #321C2C}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-stage.hype .meme-badge{background:var(--green);color:var(--on-acc);transform:rotate(-6deg)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-stage.proud .meme-badge{background:#FFD991;color:#422700}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-stage.disappointed{background:var(--bg2)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-stage.angryFunny .meme-badge{border-style:dashed;transform:rotate(-3deg)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-stage.shocked .meme-badge{transform:rotate(-9deg)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-pop .meme-character img{animation:meme-boing 360ms cubic-bezier(.2,.8,.2,1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-pop .meme-badge{animation:meme-stamp 320ms ease-out}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-pop.hype::after{content:"✦";position:absolute;right:120px;top:18px;font-size:30px;color:var(--green-tx);animation:meme-stamp 360ms ease-out;pointer-events:none}
@keyframes meme-boing{0%{transform:scale(.9) rotate(-3deg)}55%{transform:scale(1.08) rotate(3deg)}100%{transform:none}}
@keyframes meme-stamp{0%{opacity:0;scale:.75}65%{opacity:1;scale:1.07}100%{opacity:1;scale:1}}
@media(max-width:350px){html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-stage{margin:12px;padding:13px}html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-copy h2{font-size:19px}html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-character{width:88px;flex-basis:88px}}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .meme-copy h2{font-size:24px}html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .meme-footnote{font-size:14px}
@media(prefers-reduced-motion:reduce){html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.meme-pop .meme-character img,.meme-pop .meme-badge,.meme-pop.hype::after){animation:none}html:is([data-theme="meme"],[data-theme="meme-dark"]) *{transition:none!important;scroll-behavior:auto}}

html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.srow-ic,.tab-assistant .tab-ico){color:var(--green-tx)}

/* ---------- привязка к приложению (сборка 72) ---------- */

/* Плитка выбора темы на экране «Оформление»: видна в любой теме, поэтому привязана к самой плитке, а не к теме.
   Картинок у плитки нет — только цвета темы. */
:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night)[data-lx-material="meme"]{--bg:#F7F6ED;--bg2:#ECEFDD;--surface:#FFFEF8;--t1:#1D2020;--t2:#41483B;--t3:#626D57;--line:#59624F;--green:#CEED4A;--green-tx:#3D5314;--green-bg:#EFF7CD;--on-acc:#1D2020;--lx-track:#D9DEC8;--lx-progress:linear-gradient(#3D5314,#3D5314);--lx-numeral:linear-gradient(#1D2020,#1D2020);--lx-metal:#3D5314;--meme-tile-shadow:#1D2020}
:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night)[data-lx-material="meme-dark"]{--bg:#171B1A;--bg2:#202721;--surface:#242B28;--t1:#F5F7EC;--t2:#DAE0D4;--t3:#B3BDB1;--line:#98A58F;--green:#DBF45D;--green-tx:#E2F99B;--green-bg:#3A4721;--on-acc:#1D2020;--lx-track:#4A5549;--lx-progress:linear-gradient(#E2F99B,#E2F99B);--lx-numeral:linear-gradient(#F5F7EC,#F5F7EC);--lx-metal:#E2F99B;--meme-tile-shadow:#080A08}

/* блок Зарока стоит первым в прокрутке дня: в компоновке с лёгкой шапкой отступ сверху меньше */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-stage{margin-top:10px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-character img{max-height:118px;object-fit:contain}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .meme-copy h2{font-size:22px}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .meme-footnote{font-size:14px}

/* движение — только по желанию системы: при «уменьшить движение» рисунок и стикер стоят на месте */
@media(prefers-reduced-motion:reduce){html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-pop :is(.meme-character img,.meme-badge){animation:none}html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-pop.hype::after{content:none;animation:none}html:is([data-theme="meme"],[data-theme="meme-dark"]) *{scroll-behavior:auto;transition:none!important}}

/* подсказки обучения — в цветах темы */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .tour-ring{box-shadow:0 0 0 2px var(--surface),0 0 0 6px var(--green),0 0 0 200vmax rgba(16,18,16,.55)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .tour-card{border:2px solid var(--line);box-shadow:3px 3px 0 var(--shadow)}

/* Курсы: блок сценариев — не карточка. В пакете рамка, фон и тень стояли на всём блоке .scn, и его рамка проходила
   поверх заголовка «Сценарии под ваш день» и плашек. Рамку получают сами плашки сценариев. */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .scn{border:0!important;background:none!important;box-shadow:none;border-radius:0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .scn-card{border:1.75px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:3px 3px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .scn-rail{padding-bottom:12px}

/* ---------- шапка дня при прокрутке (js/materials.js, DAY_HEAD → html[data-day-head]) ----------
   Без атрибута блок уезжает со списком. 'pin-all' — блок закреплён у верхнего края, список идёт под ним.
   'pin-strip' — блок уезжает, а полоска .day-strip (день недели, дата, стрелки) остаётся: она лежит под блоком и
   открывается, когда блок ушёл вверх. */
html:is([data-theme="meme"],[data-theme="meme-dark"])[data-day-head="pin-all"] .app.functional .hdr.day-hdr.meme-day{position:sticky;top:0;z-index:6}
html:is([data-theme="meme"],[data-theme="meme-dark"])[data-day-head="pin-strip"] .app.functional .hdr.day-hdr.meme-day{z-index:5}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .day-strip{position:sticky;top:0;z-index:7;display:flex;align-items:center;gap:7px;height:46px;margin-bottom:-46px;padding:0 14px;background:var(--surface);border-bottom:2px solid var(--line);box-shadow:0 3px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .day-strip b{font:700 15px/1.2 var(--ui);color:var(--t1);white-space:nowrap}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .day-strip .day-strip-date{font:400 13px/1.2 var(--ui);color:var(--t2);margin-right:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;padding:8px 4px}
/* полоска скрыта, пока блок дня на экране: включает её приложение (класс on), когда блок ушёл вверх */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .day-strip{visibility:hidden;pointer-events:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .day-strip.on{visibility:visible;pointer-events:auto}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .day-strip b{font-size:16px}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .day-strip .day-strip-date{font-size:14px}
@media(max-width:350px){html:is([data-theme="meme"],[data-theme="meme-dark"]) .day-strip{padding:0 10px;gap:5px}html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .day-strip .navbtn{width:40px}}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .day-strip .navbtn{width:40px;height:40px;min-height:0;font-size:18px;flex:none;background:var(--surface)}

/* ---------- спокойные акценты, только светлые «Мемы» (GPT, правка владельца 23 октября 2026) ----------
   Ссылка «Ваш прогресс», подписи и поиск «Друзей», значки шагов сценариев и стрелка «↗» — тёмный оливковый;
   неактивный значок «ИИ Зарок» — глубокий лайм #6F8F14 (3.7:1 на поверхности). Папки и ночные «Мемы» — как были
   (решение владельца). --green, фон, шапки и картинки не меняются. Блок стоит до «единого блока дня»:
   step72/apply-step72.cjs пересобирает исходник с этого комментария. */
html[data-theme="meme"],html[data-theme="meme"] .app.functional{--meme-ui-ink:#455B2E;--meme-ui-icon:#53683D;--meme-ui-soft:#E5EAD7;--meme-ui-button:#DCE5C5;--meme-ui-on-button:#354724;--meme-ui-border:#8B9975;--meme-ui-ai:#6F8F14}
html[data-theme="meme"] .app.functional :is(.pr-tile-more,.fr-text:not(.danger):not([data-danger])){color:var(--meme-ui-ink);opacity:1}
html[data-theme="meme"] .app.functional .fr-empty>svg{color:var(--meme-ui-icon);opacity:1}
html[data-theme="meme"] .app.functional .fr-search button{background:var(--meme-ui-button);background-image:none;color:var(--meme-ui-on-button);border:1px solid var(--meme-ui-border)}
html[data-theme="meme"] .app.functional .tab-assistant:not(.on) .tab-ico{color:var(--meme-ui-ai);filter:none;text-shadow:none}
html[data-theme="meme"] .app.functional :is(.scn-ic,.demo-ic,.template-step-icon){color:var(--meme-ui-icon);background:var(--meme-ui-soft);border-color:transparent;box-shadow:none}
html[data-theme="meme"] .app.functional :is(.sc-strip,.template-step-strip,.template-check,.sc-art){color:var(--meme-ui-icon)}
/* значки шагов в карточках сценариев: оливковый значок на мягкой плашке, 5:1 (tests/steps-icon-ui.cjs — не ниже 3:1) */
html[data-theme="meme"] .app.functional .scn-steps{color:var(--meme-ui-icon)}
html[data-theme="meme"] .app.functional .scn-steps>i{background:var(--meme-ui-soft)}
html[data-theme="meme"] .app.functional .scn-card>small span{color:var(--meme-ui-ink)}

/* ---------- 3D-кнопки, чипы и галочки «Мемов» (правка владельца 23 октября 2026, по сборке 99) ----------
   Один вид для светлой и ночной темы. Главное действие и выбранное — салатовая заливка, обводка и смещённая жёсткая тень,
   как «+ Событие»; невыбранное — плоское, с рамкой. Нижняя панель: подложка выбранной кнопки (.nav-fluid, эффект
   «капсула», js/nav-fx.js) — та же 3D-плашка; панель таймера (js/focus.js) использует те же классы. Цвета папок не меняются. */
html[data-theme="meme"],html[data-theme="meme"] .app.functional{--m3-edge:var(--shadow)}
html[data-theme="meme-dark"],html[data-theme="meme-dark"] .app.functional{--m3-edge:var(--meme-outline,#F0F0F0)}
/* главное действие: «Начать», «Сохранить» и другие .focus-primary */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .focus-primary{background:var(--green);background-image:none;color:var(--on-acc);border:1.75px solid var(--m3-edge);border-radius:11px;box-shadow:3px 3px 0 var(--shadow);font-weight:700;text-shadow:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .focus-primary:active{box-shadow:1px 1px 0 var(--shadow);transform:translate(2px,2px)}
/* выбранные чипы и сегменты: длительность, сигнал, «Таймер / Моё внимание», «Сетка / Список», вкладки Профиля, выбранная папка */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional :is(.fh-root [data-focus="preset"].on,.fh-signal-option:has(input:checked),.fh-tabs button[aria-selected=true],[data-act="cal-view"].on,[data-act="pr-hub-tab"][aria-selected=true],.fbar-chip[aria-pressed=true],.pb-fchip[aria-pressed=true]){background:var(--green);background-image:none;color:var(--on-acc);border:1.75px solid var(--m3-edge);box-shadow:2px 2px 0 var(--shadow);font-weight:700}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional :is(.fh-tabs button[aria-selected=true],[data-act="pr-hub-tab"][aria-selected=true]) :is(svg,i,b,span){color:inherit}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .fh-signal-option:has(input:checked) :is(svg,em,small,b){color:inherit}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .fh-signal-option:has(input:checked)>i{border-color:var(--on-acc);background:radial-gradient(circle,var(--on-acc) 0 35%,transparent 40%)}
/* невыбранные: плоские, с рамкой */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional :is(.fh-root [data-focus="preset"]:not(.on),.fh-signal-option:not(:has(input:checked)),.fh-root .choice-trigger,.fh-time-button,.fh-root input:not([type=checkbox]):not([type=radio])){background:var(--surface);border:1.75px solid var(--line);border-radius:11px;box-shadow:none;color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .fh-tabs{background:var(--bg2);border:1.75px solid var(--line);border-radius:13px;padding:4px;gap:5px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .fh-tabs button[aria-selected=true]{border-radius:10px}
/* карточки таймера — как остальные карточки темы */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .fh-root :is(.focus-hero,.fa-fold){background:var(--surface);border:1.75px solid var(--line);border-radius:14px;box-shadow:3px 3px 0 var(--shadow)}
/* галочки и «⋮» в карточках дел: один вид на «Дне» и в Календаре */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .chk:not(.on)::before{border:1.75px solid var(--line);background:var(--surface);border-radius:8px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .chk.on::before{border-width:1.75px;border-radius:8px;font-weight:800}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .card-controls .icon-btn{background:var(--surface);border:1.75px solid var(--line);border-radius:11px;color:var(--t1);box-shadow:none}
/* нижняя панель и панель таймера: выбранная кнопка — 3D-плашка (заливка на самой кнопке, чтобы подпись читалась
   и для проверок контраста), остальные плоские; плавающая подложка эффекта «капсула» в «Мемах» скрыта */
html[data-nav-fx]:is([data-theme="meme"],[data-theme="meme-dark"]) #app.functional .tabbar>.nav-fluid{display:none}
html[data-nav-fx]:is([data-theme="meme"],[data-theme="meme-dark"]) #app.functional .tabbar .tab{border:1.75px solid transparent;border-radius:14px}
html[data-nav-fx]:is([data-theme="meme"],[data-theme="meme-dark"]) #app.functional .tabbar .tab.on{background:var(--green);color:var(--on-acc);border-color:var(--m3-edge);box-shadow:3px 3px 0 var(--shadow)}
html[data-nav-fx]:is([data-theme="meme"],[data-theme="meme-dark"]) #app.functional .tabbar .tab.on .tab-ico{background:none;border-color:transparent;box-shadow:none;color:inherit}

/* ---------- профиль: 2D-Зарок на краю карточки со счётчиками (владелец, 24.10.2026; макет ChatGPT profile-guests.html) ----------
   Разметка — js/meme-theme.js profileScene. Опора — верхний край карточки со счётчиками (34 px над низом сцены):
   низ позы опущен на долю ниже опоры (--a), лапы свисают на полосу над плитками (отступ сверху у карточки).
   Ширина позы — не больше 164 px по высоте (позы с опорой выше 0,9 — 144, --mh из разметки) и 55 % ширины; гость рядом — до 122 px и 30 %, зазор 16 px.
   Гость слева — оба зеркально (смотрят друг на друга). Движение — только transform, один раз; «уменьшить движение» — без него. */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-hero .pr-home-scene.meme-prof-scene{container-type:inline-size;z-index:2;
  --mp-room:calc(100cqw - 28px);--mp-base:34px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-prof-scene>*{--mp-w:min(calc(var(--mh,164px) * var(--r)),calc(var(--mp-room) * .55));--mp-h:calc(var(--mp-w) / var(--r));
  --mp-gw:0px;--mp-gap:0px;--mp-tot:calc(var(--mp-w) + var(--mp-gap) + var(--mp-gw));--mp-x:calc(50% - var(--mp-tot) / 2)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-prof-scene>:is([data-guest],.pk-beside){--mp-gw:min(calc(122px * var(--gr)),calc(var(--mp-room) * .30));--mp-gap:16px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>img.meme-prof{position:absolute;z-index:2;display:block;left:var(--mp-x);bottom:calc(var(--mp-base) - var(--mp-h) * (1 - var(--a)));
  width:var(--mp-w);height:var(--mp-h);max-width:none;object-fit:fill;filter:none;transform-origin:50% 80%}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>[data-side="l"]:is(img.meme-prof,.meme-prof-shadow){left:calc(var(--mp-x) + var(--mp-gw) + var(--mp-gap))}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>img.meme-prof[data-side="l"][data-guest]{scale:-1 1}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-prof-shadow{position:absolute;z-index:1;left:var(--mp-x);bottom:calc(var(--mp-base) - 2px);width:var(--mp-w);height:4px;pointer-events:none;
  background:radial-gradient(closest-side,var(--green),transparent);opacity:.18}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-peek.pk-beside{position:absolute;z-index:2;overflow:visible;top:auto;right:auto;
  left:calc(var(--mp-x) + var(--mp-w) + var(--mp-gap));bottom:var(--mp-base);width:var(--mp-gw);height:calc(var(--mp-gw) / var(--gr))}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-peek.pk-beside[data-side="l"]{left:var(--mp-x)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-peek.pk-beside img{left:0;top:0;width:100%;height:100%;transform:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-peek.pk-beside[data-side="l"] img{scale:-1 1}
/* облачко ?, !, … — отдельный слой над силуэтом (64 × 30 px), не зеркалится; при госте слева — с другой стороны */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-prof-bubble{position:absolute;z-index:3;width:64px;height:30px;display:grid;place-items:center;pointer-events:none;isolation:isolate;
  left:max(8px,min(calc(100% - 72px),calc(var(--mp-x) + var(--mp-w) - 20px)));bottom:calc(var(--mp-base) + var(--mp-h) * var(--a) + 6px);color:#51301f;font:700 16px/1 var(--ui);white-space:nowrap;letter-spacing:1px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-prof-bubble[data-side="l"][data-guest]{left:max(8px,calc(var(--mp-x) + var(--mp-gw) + var(--mp-gap) - 44px))}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-prof-bubble.many{font-size:11px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-prof-bubble svg{position:absolute;inset:0;width:100%;height:100%;fill:#fffdf1;stroke:#51301f;stroke-width:2.1;stroke-linejoin:round;z-index:-1}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-prof-bubble b{padding-bottom:5px;font:inherit}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>.meme-prof-bubble.mp-in{animation:meme-prof-guest .4s ease-out var(--mp-delay,0s) both}
html.plain:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-prof-bubble{display:none}
/* полоса для лап над плитками счётчиков: текст плиток ниже свисающих лап */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-hero .pr-home-scene.meme-prof-scene+.pr-home-counters{padding-top:32px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>img.meme-prof.mp-in{animation:meme-prof-react .55s ease-out var(--mp-delay,0s) both}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>img.meme-prof.mp-in.mp-jump{animation:meme-prof-jump .72s cubic-bezier(.3,.05,.35,1) var(--mp-delay,0s) both}
@keyframes meme-prof-react{0%,100%{transform:translateY(0) rotate(0)}40%{transform:translateY(-4px) rotate(-2deg)}}
@keyframes meme-prof-jump{0%,100%{transform:translateY(0)}42%{transform:translateY(-18px)}}
@keyframes meme-prof-guest{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>*,html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-home-scene.meme-prof-scene>* img{animation:none!important}}

/* ---------- единый блок дня (правка владельца 12 октября 2026) ----------
   Шапка экрана «День», счёт дня и блок Зарока — один блок вверху: слева день недели и дата, справа стрелки дней,
   ниже реплика Зарока, счёт и подпись, справа Зарок со стикером, внизу полоса прогресса. Табло «Ваш день» под блоком
   в мемной теме не рисуется. Разметку собирает memeHead (js/screens.js); кнопки и поле даты — прежние узлы. */
html[data-theme="meme"]{--meme-stage-bg:var(--green-bg)}
html[data-theme="meme-dark"]{--meme-stage-bg:var(--surface)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .hdr.day-hdr.meme-day{--meme-hdr-pb:14px;position:relative;padding:12px 14px var(--meme-hdr-pb);margin:0 0 6px;min-height:0;background:var(--meme-stage-bg);border-bottom:2px solid var(--line);border-radius:0;box-shadow:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-day .hdr-row{gap:7px;align-items:flex-start}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .hdr-date{font-size:22px;line-height:1.15;overflow-wrap:anywhere}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .navbtn{background:var(--surface)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-day :is(.metrics,.day-tools,.hdr-prog){margin-top:8px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage{margin:10px 0 0;padding:0;border:0;border-radius:0;box-shadow:none;background:none;overflow:visible}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-day .meme-stage.has-scene{background:var(--meme-scene) center/cover no-repeat;border-radius:14px;padding:10px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-day .meme-stage-row{min-height:108px;align-items:flex-end}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-day .meme-copy h2{margin:0 0 6px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-score{display:flex;align-items:baseline;gap:6px;margin:0 0 4px;font-variant-numeric:tabular-nums}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-score strong{font:700 26px/1 var(--ui);color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-score span{font:600 13px/1.2 var(--ui);color:var(--t2)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-meter{height:8px;margin-top:10px;border:1.5px solid var(--line);border-radius:8px;background:var(--surface);overflow:hidden}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-meter i{display:block;height:100%;background:var(--green-tx)}
html[data-theme="meme-dark"] .meme-meter{background:var(--bg)}
html[data-theme="meme-dark"] .meme-meter i{background:var(--green)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-day .meme-character{padding-top:26px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-character .meme-guest{position:absolute;left:-44px;bottom:0;width:52px;max-height:64px;z-index:1}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .meme-day .meme-copy h2{font-size:20px;-webkit-line-clamp:3}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .meme-day .meme-footnote{display:none}
@media(max-width:350px){html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .hdr.day-hdr.meme-day{--meme-hdr-pb:12px;padding:10px 12px var(--meme-hdr-pb)}html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage{margin:8px 0 0;padding:0}}

/* ---------- «Мемы · ночь»: три палитры (правка владельца 12 октября 2026) ----------
   Чистый глубокий фон, поверхности на шаг светлее с ясной границей, главный акцент — лайм (только акценты и прогресс,
   без больших заливок), второй акцент — на стикерах; контуры светлые; три уровня текста с контрастом не ниже 4.5.
   Какая палитра стоит, решает константа MEME_NIGHT в js/materials.js: приложение ставит html[data-meme-night]. */
/* 1 — Чернила и фиолет */
html[data-theme="meme-dark"][data-meme-night="1"],html[data-theme="meme-dark"][data-meme-night="1"] .app.functional{--bg:#0F1115;--bg2:#151920;--surface:#1B2029;--t1:#F4F6FA;--t2:#C9CFDA;--t3:#9AA3B2;--line:#4B5565;--green:#D4F04A;--green-bg:#242B38;--green-tx:#DDF56B;--on-acc:#14180A;--on-t1:#0F1115;--shadow:#06070A;--sticker:#B9A5FF;--page:#0F1115;--input-bg:#1B2029;--line-btn:#4B5565;--line-soft:#262C37;--hair:#4B5565;--fill:#151920;--fill-2:#242B38;--mark:#4B5565;--mute:#9AA3B2;--t4:#9AA3B2;--danger:#FFB4A2;--danger-bg:#3B2424;--danger-bd:#4B5565;--yellow:#B9A5FF;--yellow-bg:#242B38;--yellow-bd:#4B5565;--acc-1:#D4F04A;--acc-2:#D4F04A;--acc-3:#D4F04A;--acc-edge:#E9ECF2;--acc-ring:#B9A5FF;--me-1:#151920;--me-2:#242B38;--tab-1:#242B38;--tab-2:#151920;--hl:transparent;--scrim:rgba(4,5,8,.6);--meme-outline:#E9ECF2;--meme-second:#B9A5FF;color-scheme:dark}
html[data-meme-night="1"] :is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night)[data-lx-material="meme-dark"]{--bg:#0F1115;--bg2:#151920;--surface:#1B2029;--t1:#F4F6FA;--t2:#C9CFDA;--t3:#9AA3B2;--line:#4B5565;--green:#D4F04A;--green-tx:#DDF56B;--green-bg:#242B38;--on-acc:#14180A;--lx-track:#262C37;--lx-progress:linear-gradient(#D4F04A,#D4F04A);--lx-numeral:linear-gradient(#F4F6FA,#F4F6FA);--lx-metal:#DDF56B;--meme-tile-shadow:#06070A}
/* 2 — Графит и коралл */
html[data-theme="meme-dark"][data-meme-night="2"],html[data-theme="meme-dark"][data-meme-night="2"] .app.functional{--bg:#111111;--bg2:#181818;--surface:#1E1E1E;--t1:#F5F5F5;--t2:#CFCFCF;--t3:#A3A3A3;--line:#505050;--green:#C8F031;--green-bg:#2B2B27;--green-tx:#D6F55C;--on-acc:#14180A;--on-t1:#111111;--shadow:#000000;--sticker:#FF8F78;--page:#111111;--input-bg:#1E1E1E;--line-btn:#505050;--line-soft:#2A2A2A;--hair:#505050;--fill:#181818;--fill-2:#2B2B27;--mark:#505050;--mute:#A3A3A3;--t4:#A3A3A3;--danger:#FFB4A2;--danger-bg:#3B2424;--danger-bd:#505050;--yellow:#FF8F78;--yellow-bg:#2B2B27;--yellow-bd:#505050;--acc-1:#C8F031;--acc-2:#C8F031;--acc-3:#C8F031;--acc-edge:#F0F0F0;--acc-ring:#FF8F78;--me-1:#181818;--me-2:#2B2B27;--tab-1:#2B2B27;--tab-2:#181818;--hl:transparent;--scrim:rgba(4,5,8,.6);--meme-outline:#F0F0F0;--meme-second:#FF8F78;color-scheme:dark}
html[data-meme-night="2"] :is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night)[data-lx-material="meme-dark"]{--bg:#111111;--bg2:#181818;--surface:#1E1E1E;--t1:#F5F5F5;--t2:#CFCFCF;--t3:#A3A3A3;--line:#505050;--green:#C8F031;--green-tx:#D6F55C;--green-bg:#2B2B27;--on-acc:#14180A;--lx-track:#2A2A2A;--lx-progress:linear-gradient(#C8F031,#C8F031);--lx-numeral:linear-gradient(#F5F5F5,#F5F5F5);--lx-metal:#D6F55C;--meme-tile-shadow:#000000}
/* 3 — Индиго и сирень */
html[data-theme="meme-dark"][data-meme-night="3"],html[data-theme="meme-dark"][data-meme-night="3"] .app.functional{--bg:#0D0E1A;--bg2:#141629;--surface:#1A1D34;--t1:#F3F2FF;--t2:#CAC9E8;--t3:#A09FC6;--line:#4A5080;--green:#D8F55A;--green-bg:#252A52;--green-tx:#E1F877;--on-acc:#14180A;--on-t1:#0D0E1A;--shadow:#05050D;--sticker:#C7ABFF;--page:#0D0E1A;--input-bg:#1A1D34;--line-btn:#4A5080;--line-soft:#23274A;--hair:#4A5080;--fill:#141629;--fill-2:#252A52;--mark:#4A5080;--mute:#A09FC6;--t4:#A09FC6;--danger:#FFB4A2;--danger-bg:#3B2424;--danger-bd:#4A5080;--yellow:#C7ABFF;--yellow-bg:#252A52;--yellow-bd:#4A5080;--acc-1:#D8F55A;--acc-2:#D8F55A;--acc-3:#D8F55A;--acc-edge:#EDEBFF;--acc-ring:#C7ABFF;--me-1:#141629;--me-2:#252A52;--tab-1:#252A52;--tab-2:#141629;--hl:transparent;--scrim:rgba(4,5,8,.6);--meme-outline:#EDEBFF;--meme-second:#C7ABFF;color-scheme:dark}
html[data-meme-night="3"] :is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night)[data-lx-material="meme-dark"]{--bg:#0D0E1A;--bg2:#141629;--surface:#1A1D34;--t1:#F3F2FF;--t2:#CAC9E8;--t3:#A09FC6;--line:#4A5080;--green:#D8F55A;--green-tx:#E1F877;--green-bg:#252A52;--on-acc:#14180A;--lx-track:#23274A;--lx-progress:linear-gradient(#D8F55A,#D8F55A);--lx-numeral:linear-gradient(#F3F2FF,#F3F2FF);--lx-metal:#E1F877;--meme-tile-shadow:#05050D}
html[data-theme="meme-dark"] .meme-badge{color:#16131F;border-color:var(--meme-outline,#F0F0F0);box-shadow:2px 2px 0 var(--shadow)}
html[data-theme="meme-dark"] .meme-stage.hype .meme-badge{color:var(--on-acc)}
html[data-theme="meme-dark"] .meme-stage.proud .meme-badge{background:#FFD991;color:#422700}
html[data-theme="meme-dark"] :is(.donerow,.banner.done){background:var(--green-bg);border-color:var(--line)}
html[data-theme="meme-dark"] .chk.on::before{border-color:var(--meme-outline,#F0F0F0)}
html[data-theme="meme-dark"] :is(.btn.green,.btn.primary,.segadd,.today-btn){border-color:var(--meme-outline,#F0F0F0)}
html[data-theme="meme-dark"] .tab.on .tab-ico{border-color:var(--meme-outline,#F0F0F0)}
/* дополнительные места фигурки Зарока (js/meme-theme.js: MEME_PEEK, MEME_EMPTY — выключены, пока нет рисунков) */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-stage .meme-peek{position:absolute;right:10px;top:-34px;width:64px;height:auto;z-index:2;pointer-events:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .zerostate-day .meme-empty-fig{display:block;width:72px;height:auto;margin:0 auto 8px}
/* фигурка Зарока — не наклейка (слово владельца, 12 октября 2026): без жёсткой тени под рисунком */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-character img{filter:none}
/* Шапка дня, пересборка (владелец, 12 октября 2026): текст идёт плотно сверху вниз — дата, реплика, счёт, полоса; пустого
   промежутка между датой и репликой нет; фигурка справа по высоте текстовой колонки, плашка-слово у фигурки, как реплика. */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage{margin:6px 0 0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage-row{min-height:0;align-items:flex-start;gap:10px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy{display:flex;flex-direction:column;gap:6px;align-self:stretch;justify-content:flex-start}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy h2{margin:0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-score{margin:0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-footnote{margin:0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-character{width:96px;flex:0 0 96px;align-self:center;padding-top:16px;margin-top:-4px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-character img{max-height:104px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-badge{top:0;right:-2px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-meter{margin-top:10px}
@media(max-width:350px){html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-character{width:84px;flex-basis:84px}html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-character img{max-height:92px}}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .app.functional .meme-day .meme-character{align-self:flex-start}
/* слово над Зароком — надписью, без плашки (владелец, 12 октября 2026: «слова надписью выглядят довольно-таки хорошо»):
   без фона, рамки и тени; жирный шрифт темы; светлая тема — тёмная краска со светлой обводкой, ночная — светлая краска с тёмной. */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage .meme-badge{background:none;border:0;border-radius:0;box-shadow:none;padding:0;white-space:normal;max-width:100px;text-align:right;overflow-wrap:anywhere;font:900 15px/1.05 var(--ui);letter-spacing:.01em;color:#321C2C;text-shadow:1.5px 0 0 #fff,-1.5px 0 0 #fff,0 1.5px 0 #fff,0 -1.5px 0 #fff,1px 1px 0 #fff,-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff}
html[data-theme="meme-dark"] .app.functional .meme-day .meme-stage .meme-badge{color:#D6F56A;text-shadow:1.5px 0 0 #14161C,-1.5px 0 0 #14161C,0 1.5px 0 #14161C,0 -1.5px 0 #14161C,1px 1px 0 #14161C,-1px -1px 0 #14161C,1px -1px 0 #14161C,-1px 1px 0 #14161C}
/* длинное слово переносится на вторую строку и не заходит на реплику; на узком экране кегль меньше */
@media(max-width:350px){html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage .meme-badge{font-size:13px;max-width:86px}}
/* Шапка дня — макет, выбранный владельцем (черновик ChatGPT, 13 октября 2026), доведён до приложения: день недели и дата —
   заголовок; реплика отдельной строкой на всю левую колонку; ниже в одной строке счёт и подпись в две строки через тонкую
   вертикальную черту; полоса снизу; фигурка справа со словом-надписью. Высота не закреплена: длинная реплика (до трёх строк)
   раздвигает блок. Подпись и на узком экране, и с крупным шрифтом помещается рядом со счётом в две строки. */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .hdr-date{font:800 24px/1.15 var(--ui);letter-spacing:-.04em}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .hdr-sub{display:block;margin-top:3px;font:500 12px/1.4 var(--ui);color:var(--t2)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage{margin:8px 0 0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage-row{min-height:0;align-items:center;gap:12px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;align-self:center}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy h2{grid-column:1 / -1;margin:0;font:600 18px/1.25 var(--ui);letter-spacing:-.025em;-webkit-line-clamp:3;overflow-wrap:anywhere}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-score{grid-column:1;display:flex;align-items:baseline;gap:4px;margin:0;white-space:nowrap}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-score strong{font:800 34px/1.1 var(--ui);letter-spacing:-.03em;color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-score span{font:600 14px/1.1 var(--ui);color:var(--t2)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-footnote{grid-column:2;display:block;margin:0;padding-left:10px;border-left:1px solid var(--line);max-width:10.5em;font:500 11.5px/1.5 var(--ui);letter-spacing:0;white-space:normal;text-wrap:balance;color:var(--t2)}
/* пустой день: счёта нет — подпись идёт строкой под репликой, без черты */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy h2 + .meme-footnote{grid-column:1 / -1;padding-left:0;border-left:0;max-width:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-character{align-self:center;width:100px;flex:0 0 100px;margin:0;padding-top:20px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-character img{max-height:96px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-meter{height:7px;margin-top:8px}
@media(max-width:350px){html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .hdr-date{font-size:22px}html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-character{width:84px;flex-basis:84px}html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy h2{font-size:17px}html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy{gap:8px 10px}html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-footnote{font-size:11px}}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .app.functional .meme-day .meme-copy h2{font-size:19px}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .app.functional .meme-day .meme-copy{gap:6px 10px}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .app.functional .meme-day .meme-footnote{display:block;font-size:12.5px;line-height:1.4}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .app.functional .meme-day .meme-character{align-self:center}
/* реплика шапки: кегль подгоняет js/meme-theme.js (fitHead) — одна строка, в крайнем случае две; трёх не бывает */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy h2{-webkit-line-clamp:2;text-wrap:balance;min-width:0;white-space:normal!important;font-size:clamp(15px,4.5vw,20px)!important;line-height:1.2!important;overflow-wrap:break-word}
html:is([data-theme="meme"],[data-theme="meme-dark"]).text-big .app.functional .meme-day .meme-copy h2{-webkit-line-clamp:2;font-size:clamp(16px,4.8vw,21px)!important}
/* реплика «строка едет» (MEME_HEAD_TEXT = 'run'): одна строка, края мягко растворяются, текст не заходит под фигурку */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy h2.is-run{overflow:hidden;margin-left:-14px;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 14px,#000 calc(100% - 16px),transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 14px,#000 calc(100% - 16px),transparent 100%)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy h2.is-run .meme-run{display:inline-block;padding:0 16px 0 14px;will-change:transform}
/* стикер-акцент у слова над Зароком (js/meme-theme.js, accentOf): маленькая картинка в строке слова, не больше одной на экран */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage .meme-badge .meme-accent{display:inline-block;width:auto;height:1.5em;max-height:none;margin:0 3px 0 0;vertical-align:-.36em;filter:none;animation:none}
/* Гость дня выглядывает (шаг 110): слой внутри ряда кнопок добавления и блока с аватаром, абсолютный — высоту и положение
   блоков не меняет. behind — из-за верхней кромки правой кнопки (низ обрезан по кромке); edge — из-за края экрана;
   stick — фигурка на углу ряда. Текст карточек и кнопок не закрывает: видимая часть живёт в полосе между последней
   строкой списка и подписью кнопки. Нажатий не перехватывает; без декора скрыт. */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .day-actions{position:relative;--pk-g:16px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek{position:absolute;z-index:2;display:block;overflow:hidden;pointer-events:none;margin:0;padding:0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek img{position:absolute;display:block;width:auto;max-width:none;pointer-events:none;user-select:none}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-behind{right:calc(var(--pk-g) + 6px);bottom:calc(100% - 16px);width:96px;height:44px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-behind img{left:50%;top:0;height:92px;transform:translateX(-50%)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-behind.pk-in img{animation:meme-peek-up .26s cubic-bezier(.2,.9,.3,1.25) both}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-edge{right:0;bottom:calc(100% - 46px);width:calc(var(--pk-g) + 14px);height:74px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-edge img{left:3px;top:2px;height:72px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-edge.pk-in img{animation:meme-peek-left .26s cubic-bezier(.2,.9,.3,1.25) both}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-edge[data-side="l"]{right:auto;left:0;bottom:2px;width:calc(var(--pk-g) + 16px);height:74px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-edge[data-side="l"] img{left:auto;right:3px;transform:scaleX(-1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-edge[data-side="l"].pk-in img{animation-name:meme-peek-right}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-stick{right:calc(var(--pk-g) - 5px);bottom:calc(100% - 24px);width:60px;height:50px;overflow:visible}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.pk-stick img{right:0;bottom:0;height:50px;transform:rotate(6deg);transform-origin:50% 100%;filter:drop-shadow(0 2px 1.5px rgba(30,40,10,.22))}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.pk-stick.pk-in img{animation:meme-peek-stick .26s cubic-bezier(.2,.9,.3,1.25) both}
/* вкладка «Профиль»: гость выглядывает из-за аватара либо сидит на его краю; Зарока рядом нет */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .me-hero{position:relative}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .me-hero>.prof-ava.big{position:relative;z-index:1}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-profile{overflow:visible;z-index:0;top:-8px;left:calc(50% + 10px);width:76px;height:86px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-profile[data-side="l"]{left:auto;right:calc(50% + 10px)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-profile.pk-behind img{right:0;top:0;height:86px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-profile.pk-behind[data-side="l"] img{right:auto;left:0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-profile.pk-behind.pk-in img{animation:meme-peek-out .26s cubic-bezier(.2,.9,.3,1.25) both}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-profile.pk-behind[data-side="l"].pk-in img{animation-name:meme-peek-out-l}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-profile.pk-stick{z-index:2;top:-20px;left:calc(50% + 14px);width:60px;height:50px}
@keyframes meme-peek-up{from{transform:translate(-50%,46px)}to{transform:translate(-50%,0)}}
@keyframes meme-peek-left{from{transform:translateX(34px)}to{transform:none}}
@keyframes meme-peek-right{from{transform:translateX(-34px) scaleX(-1)}to{transform:scaleX(-1)}}
@keyframes meme-peek-stick{from{opacity:0;transform:translateY(-10px) rotate(-4deg)}to{opacity:1;transform:rotate(6deg)}}
@keyframes meme-peek-out{from{transform:translate(-34px,26px)}to{transform:none}}
@keyframes meme-peek-out-l{from{transform:translate(34px,26px)}to{transform:none}}
@media(max-width:360px){html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .day-actions{--pk-g:12px}}
@media(max-width:350px){
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-behind{width:84px;height:40px;right:calc(var(--pk-g) + 5px)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-behind img{height:80px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-edge{width:calc(var(--pk-g) + 10px);height:66px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-edge[data-side="l"]{width:calc(var(--pk-g) + 12px)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-edge img{height:64px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.at-day.pk-stick{width:52px;height:44px}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek.pk-stick img{height:44px}
}
@media(prefers-reduced-motion:reduce){html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek img{animation:none!important}}
html.plain:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-peek{display:none}
/* широкая форма (два Зарока показывают друг на друга): колонка фигурки шире, рисунок не мельчает и на реплику не заходит */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage[data-wide] .meme-character{width:132px;flex:0 0 132px}
@media(max-width:350px){html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage[data-wide] .meme-character{width:108px;flex-basis:108px}}

/* ===== длинные подписи — шаг 118 =====
   Блок общий для всех тем, к «Мемам» не относится. Он стоит в конце этого файла, потому что файл подключается в index.html
   последним из стилей, а правила блока должны идти после остальных (строки вкладок из functional.css, плашка пустого дня
   «Ханами» из anime-theme.css). Отдельный файл потребовал бы правок списков сервера, сборки и sw.js.
   Исходник блока — Переводы/en/68/step118/long-captions.css; измеритель — js/long-captions.js. */
/* Зарок: длинные подписи. Подключить последним из стилей.
   Основа — работа ChatGPT (D:\Зарок — подписи (GPT)\результат\long-captions.css): раскладка строки и однострочное окно подписи.
   Изменено по словам владельца (шаг 118):
   — движение только справа налево и редко: экран открыли — через 1,5 с один проход (влево до конца, гаснет и появляется в начале),
     через 40 с ещё один, дальше подпись стоит; нажатие показывает проход ещё раз (правило шага 127). Расписание ведёт
     js/long-captions.js (здесь нет ключевых кадров и нет ограничения в три прохода);
   — пустой день «Ханами»: бегущей строки нет, заголовок и подпись помещаются целиком за счёт размеров.
   Без измерителя, при «уменьшить движение» и при html.plain подпись показана целиком, с переносом под названием. */
/* Только редактор вкладок, ссылки на скрытые разделы и выбор вкладок при старте. */
:is(.te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])),
    .srow[data-act="tab"][data-tab]) > .srow-body,
.onb-goal[data-act="onb-tab"] > .og-t { min-width:0; }
:is(.te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])),
    .srow[data-act="tab"][data-tab]) > .srow-body > em,
.onb-goal[data-act="onb-tab"] > .og-t > em {
  display:block; -webkit-line-clamp:unset; -webkit-box-orient:initial;
  font-style:normal; font-size:11.5px; line-height:14px;
  color:var(--t2); margin-top:3px; overflow:visible;
  overflow-wrap:anywhere; white-space:normal;
}
/* Без движения: подпись идёт под верхним рядом на всю ширину. */
.te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])) {
  display:grid; grid-template-columns:34px minmax(0,1fr) repeat(3,34px);
  grid-auto-flow:column; column-gap:8px; row-gap:2px;
  align-items:center; min-height:60px; padding:4px 0;
}
.te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])) > .srow-ic {
  grid-column:1; grid-row:1; width:34px; height:34px;
}
.te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])) > .srow-body { display:contents; }
.te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])) > .srow-body > b {
  grid-column:2; grid-row:1; min-width:0; line-height:1.15;
}
.te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])) > .srow-body > em {
  grid-column:1 / -1; grid-row:2; margin:0;
}
.te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])) > .te-btn { grid-row:1; }
.te-list > .te-row.fixed > .srow-body > b,
.te-list > .te-row:has(> .te-btn.add) > .srow-body > b { grid-column:2 / 5; }
.te-list > .te-row:has(> .te-btn.add) > .te-btn.add { grid-column:5; }
html.text-big :is(.te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])),
 .srow[data-act="tab"][data-tab]) > .srow-body > b { font-size:15.5px; }
html.text-big :is(.te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])),
 .srow[data-act="tab"][data-tab]) > .srow-body > em,
html.text-big .onb-goal[data-act="onb-tab"] > .og-t > em { font-size:12.5px; }
/* Измеритель включает однострочное окно (data-lc-ready="1"); длинная подпись — data-lc-overflow="1". */
@media (prefers-reduced-motion:no-preference) {
 html:not(.plain) .te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])):has(> .srow-body > em[data-lc-ready="1"]) {
   display:flex; gap:8px; padding:8px 0;
 }
 html:not(.plain) .te-list > .te-row:has(> .srow-body > em[data-lc-ready="1"]) > .srow-body {
   display:block; flex:1; min-width:0;
 }
 html:not(.plain) .te-list > .te-row:has(> .srow-body > em[data-lc-ready="1"]) > .srow-ic { width:36px; height:36px; }
 html:not(.plain) :is(
   .te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])) > .srow-body > em,
   .srow[data-act="tab"][data-tab] > .srow-body > em,
   .onb-goal[data-act="onb-tab"] > .og-t > em
 )[data-lc-ready="1"] {
   display:block; width:100%; min-width:0; white-space:nowrap;
   overflow:hidden; overflow-wrap:normal; text-indent:0; margin-top:4px;
 }
 /* в покое мягкий край справа; пока подпись едет (data-lc-moving), край мягкий с обеих сторон */
 html:not(.plain) :is(
   .te-list > .te-row:is(.fixed, :has(> [data-act^="tabs-"])) > .srow-body > em,
   .srow[data-act="tab"][data-tab] > .srow-body > em,
   .onb-goal[data-act="onb-tab"] > .og-t > em
 )[data-lc-ready="1"][data-lc-overflow="1"] {
   -webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 6px),transparent);
   mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 6px),transparent);
 }
}
/* При отключении движения и декора пометки измерителя не должны скрывать текст. */
html.plain :is(.te-list > .te-row:is(.fixed,:has(> [data-act^="tabs-"])),.srow[data-act="tab"],.onb-goal[data-act="onb-tab"]) em {
  animation:none; text-indent:0; mask-image:none; -webkit-mask-image:none;
}
@media (prefers-reduced-motion:reduce) {
 :is(.te-list > .te-row:is(.fixed,:has(> [data-act^="tabs-"])),.srow[data-act="tab"],.onb-goal[data-act="onb-tab"]) em[data-lc-ready] {
   animation:none; text-indent:0; mask-image:none; -webkit-mask-image:none;
 }
}
/* Пустой день «Ханами»: без движения. Подпись занимает всю ширину плашки (место под Зарока плашка уже оставила сама)
   и стоит в две строки целиком; с крупным шрифтом заголовок чуть меньше, чтобы плашка не росла. */
html:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .lx-hero:has(.lx-continue) .lx-hero-copy > .lx-next {
  display:block; -webkit-line-clamp:unset; -webkit-box-orient:initial; max-width:100%;
  font-size:12px; line-height:16px; white-space:normal; overflow:visible; overflow-wrap:break-word; margin-top:6px;
}
html.text-big:is([data-theme="anime"],[data-theme="anime-dark"]) .anime-day .lx-hero:has(.lx-continue) .lx-hero-copy > .lx-next { font-size:12.5px; line-height:15px; }
html.text-big:is([data-theme="anime"],[data-theme="anime-dark"]) .app.functional .anime-day .lx-hero:has(.lx-continue) .lx-hero-copy > h2 { font-size:18.5px; }

/* Опора (сборка 77; уточнено 19 октября 2026 по снимку владельца с f105): видимый низ фигурки касается линии — верхнего края полосы
   прогресса, а в день без дел (полосы нет) — верхнего края тёмной нижней черты шапки. Запас прозрачных строк внизу файла
   (forms.pad: доля высоты до последней строки с альфой > 160, tools/sticker-v6-pads.py, --zb-pad) снимается сдвигом на свою
   долю высоты. --meme-sink — насколько фигурка уходит за линию (0: касается). Срез у фигур «по пояс» ложится на линию. */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage-row{align-items:flex-end;min-height:116px}
/* Реплика, счёт и подпись стоят внизу, прямо над полосой прогресса (просьба владельца 17 октября 2026); дата и кнопки остаются сверху. */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-copy{align-self:flex-end}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-character{align-self:flex-end;align-items:flex-end;padding-top:16px;margin-top:0;margin-bottom:calc(0px - var(--meme-meter-gap,8px) - var(--meme-sink,0px));z-index:0}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage[data-bare] .meme-character{margin-bottom:calc(0px - var(--meme-hdr-pb,14px) - var(--meme-sink,0px))}
/* прежняя посадка для списка владельца (MEME_OLD_LINE, js/meme-theme.js, 19.10.2026): как в сборке 77 — за полосу на --zb-sink (pets.css) */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage[data-oldline] .meme-character{margin-bottom:calc(-8px - var(--zb-sink,2px))}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-character img.meme-zarok{translate:0 calc(var(--zb-pad,0) * 100%)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-meter{position:relative;z-index:1;margin-top:var(--meme-meter-gap,8px)}
/* Будущий день (17 октября 2026): реакции ещё нет. Зарок размыт в крупные мягкие пятна, как будто загружается; края мягко тают.
   Подпись маленькой плашкой поверх. Медленное мерцание только при разрешённом движении и с включённым декором. */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage.meme-future .meme-character{flex-direction:column;align-items:center;justify-content:flex-end;margin-bottom:0;overflow:visible}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage.meme-future .meme-character img.meme-zarok{filter:blur(6px) saturate(.75);opacity:.95;translate:none;animation:meme-soon 3.6s ease-in-out infinite alternate}
/* подпись — маленькая строка под фигуркой, фигурку не закрывает */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage.meme-future .meme-soon{order:2;position:relative;z-index:2;display:block;margin:4px 0 0;max-width:112px;color:var(--t2);font:600 10.5px/1.25 var(--ui);text-align:center;white-space:normal;overflow-wrap:anywhere;text-wrap:balance}
html.text-big:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage.meme-future .meme-soon{font-size:12px}
/* слово-реакция будущего дня остаётся в разметке (пара «слово + реплика» не разрывается), но не видно: его место у подписи */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .meme-stage.meme-future .meme-badge{display:none!important}
@keyframes meme-soon{from{opacity:.72}to{opacity:1}}
@media(prefers-reduced-motion:reduce){html:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage.meme-future .meme-character img.meme-zarok{animation:none}}
html.plain:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .meme-day .meme-stage.meme-future .meme-character img.meme-zarok{animation:none}
/* «Единый день» и «План отдельно» в «Мемах» (24.10.2026, как шаг 133г у «Ханами»): строка дела без боковых и верхней линий
   карточки — значок стоял вплотную к левой рамке, у выбранной строки линия шла сквозь значок внутри рамки выбора (tests/tasklist-ui.cjs);
   кнопка «⋮» тех же 44px, что у материалов, — галочка и кружок выбора стоят там же, где во всех темах */
html.day-flow-concept:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .flow-journal :is(.evcard,.dosecard,.mealcard){border-left:0!important;border-right:0!important;border-top:0!important}
html.day-flow-concept:is([data-theme="meme"],[data-theme="meme-dark"]) .app.functional .flow-journal .pm-card>.card-controls>button{width:44px;min-width:44px}

/* «Сохраним ваш план» и компактный просмотр награды (макет ChatGPT registration-rewards, 24.10.2026) — мемный стиль:
   салатовая заливка, тёмная обводка и смещённая тень, как «＋ Событие» в Календаре; окно — карточка с той же тенью */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .functional .acc-unified :is(.acc-main,.acc-alt),html:is([data-theme="meme"],[data-theme="meme-dark"]) .rwi-primary{background:var(--green);background-image:none;border:1.75px solid var(--m3-edge,var(--shadow));color:var(--on-acc);box-shadow:3px 3px 0 var(--shadow);text-shadow:none;font-weight:700}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .functional .acc-unified .acc-alt{background:var(--surface);color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) :is(.functional .acc-unified :is(.acc-main,.acc-alt),.rwi-primary):active{box-shadow:1px 1px 0 var(--shadow);transform:translate(2px,2px)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .rwi{border:2px solid var(--line);box-shadow:4px 4px 0 var(--shadow)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .rwi :is(.rwi-x,.shc-btn.rwi-share){border:1.5px solid var(--m3-edge,var(--shadow));box-shadow:2px 2px 0 var(--shadow);background:var(--green-bg)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .rwi-ov-stats{border:1.5px solid var(--line);box-shadow:2px 2px 0 var(--shadow)}
/* вкладка «Облики» в «Мемах» (владелец, 24.10.2026): облики видны, применить нельзя — в теме только мемный Зарок */
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-skin-lock{margin:0 0 10px;font:600 12px/1.4 var(--ui);color:var(--t1)}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-skin-grid.is-locked .pr-skin-tile{cursor:default;opacity:1}
html:is([data-theme="meme"],[data-theme="meme-dark"]) .pr-skin-grid.is-locked .pr-skin-tile img{opacity:.45;filter:grayscale(.7)}


/* ---- glass-theme.css ---- */
/* Тема Glass — пять палитр, у каждой светлое и тёмное стекло (пакет ChatGPT out/v5/glass-theme, сборка 93).
   Ключи тем: glass-<палитра> и glass-<палитра>-dark (регистрация — js/materials.js); пара glass-<палитра>-auto
   переключает их сама. Признак html[data-glass=light|dark] ставит js/app.js applyTheme — по нему материал;
   палитра — по data-theme. Все правила экрана — только под этими признаками; исключение — плитки выбора темы
   (data-lx-material). Цвета перенесены из palettes.css пакета (каскад прототипа сведён в один набор на ключ):
   у палитр, кроме нейтральной, --fill и --bg2 — тон самой палитры, а не синие значения ранней версии.
   Шрифт — системный (-apple-system, Segoe UI, system-ui): файлов шрифтов тема не добавляет.
   Движение — js/glass-motion.js (растворение при выполнении — через js/snap.js). */
html[data-theme="glass-neutral"],html[data-theme="glass-neutral"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="glass-neutral"]{--bg:#f5f5f5;--bg2:#ededed;--surface:#fff;--fill:#eee;--t1:#202020;--t2:#5b5b5b;--t3:var(--t2);--green-tx:#383838;--green-bg:#e8e8e8;--line:#d0d0d0aa;--line-btn:#ffffffc9;--glass-face:linear-gradient(140deg,#ffffffb0,#ffffff5c);--glass-button:linear-gradient(145deg,#ffffffd9,#ffffff73 55%,#eeeeeeb8);--glass-selected:linear-gradient(145deg,#ffffffeb,#d8d8d899);--glass-edge:#ffffffdd;--glass-inner:#ffffffdf;--glass-shadow:0 8px 28px #0000000a,inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff55;--glass-scene:linear-gradient(145deg,#ffffff,#f4f4f4 52%,#e7e7e7);color-scheme:light}
html[data-theme="glass-neutral-dark"],html[data-theme="glass-neutral-dark"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="glass-neutral-dark"]{--bg:#111;--bg2:#222;--surface:#252525;--fill:#303030;--t1:#fafafa;--t2:#c3c3c3;--t3:var(--t2);--green-tx:#f0f0f0;--green-bg:#383838;--line:#ffffff33;--line-btn:#d9e8ff54;--glass-face:linear-gradient(135deg,#ffffff20,#ffffff08);--glass-button:linear-gradient(145deg,#ffffff27,#ffffff0c 55%,#ffffff1c);--glass-selected:linear-gradient(145deg,#ffffff45,#ffffff1c);--glass-edge:#ffffff3d;--glass-inner:#ffffff38;--glass-shadow:0 12px 28px #00000030,inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff0a;--glass-scene:radial-gradient(ellipse at 90% 15%,#56565666,transparent 60%),linear-gradient(145deg,#181818,#080808 60%,#222);color-scheme:dark}
html[data-theme="glass-calm"],html[data-theme="glass-calm"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="glass-calm"]{--bg:#eaf0f2;--bg2:color-mix(in srgb,#eaf0f2 55%,#dbe8ed);--surface:#f7fafb;--fill:#dbe8ed;--t1:#24353e;--t2:#4f656d;--t3:var(--t2);--green-tx:#3d657a;--green-bg:#dbe8ed;--line:#ffffffa8;--line-btn:#ffffffc9;--glass-face:linear-gradient(135deg,#ffffff8f,#ffffff38);--glass-button:linear-gradient(150deg,#ffffffb3,#ffffff54 55%,#e8efffa1);--glass-selected:linear-gradient(145deg,#bcd2dc9c,#f3f8fbc2);--glass-edge:#ffffffcf;--glass-inner:#ffffffad;--glass-shadow:0 8px 28px #3353820d,inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff38;--glass-scene:radial-gradient(ellipse at 0% 15%,#b5cedd8c,transparent 65%),linear-gradient(150deg,#f4f8fa,#dde8ed 55%,#e9eef0);color-scheme:light}
html[data-theme="glass-calm-dark"],html[data-theme="glass-calm-dark"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="glass-calm-dark"]{--bg:#182126;--bg2:color-mix(in srgb,#182126 55%,#304650);--surface:#28353c;--fill:#304650;--t1:#edf5f7;--t2:#bdcfd6;--t3:var(--t2);--green-tx:#bddce8;--green-bg:#304650;--line:#ffffff33;--line-btn:#d9e8ff54;--glass-face:linear-gradient(135deg,#d5e7ee20,#a5bbc508);--glass-button:linear-gradient(145deg,#d7e7ef2c,#b1c8d010);--glass-selected:linear-gradient(145deg,#bbd9e63b,#a3b8c01a);--glass-edge:#ffffff3d;--glass-inner:#ffffff33;--glass-shadow:0 12px 28px #00000030,inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff0a;--glass-scene:radial-gradient(ellipse at 10% 5%,#526b785c,transparent 65%),linear-gradient(150deg,#1e2c33,#141f24 60%,#26343a);color-scheme:dark}
html[data-theme="glass-care"],html[data-theme="glass-care"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="glass-care"]{--bg:#f7ecec;--bg2:color-mix(in srgb,#f7ecec 55%,#f0dce2);--surface:#fff9f8;--fill:#f0dce2;--t1:#483237;--t2:#785b62;--t3:var(--t2);--green-tx:#955669;--green-bg:#f0dce2;--line:#ffffffa8;--line-btn:#ffffffc9;--glass-face:linear-gradient(135deg,#ffffff8f,#ffffff38);--glass-button:linear-gradient(150deg,#ffffffb3,#ffffff54 55%,#e8efffa1);--glass-selected:linear-gradient(145deg,#efcbd6b8,#fff6f6ba);--glass-edge:#ffffffcf;--glass-inner:#ffffffad;--glass-shadow:0 8px 28px #3353820d,inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff38;--glass-scene:radial-gradient(ellipse at 95% 15%,#edc9d477,transparent 55%),radial-gradient(ellipse at 0% 85%,#f1dbcd88,transparent 60%),linear-gradient(150deg,#fff9f6,#f2e4e7);color-scheme:light}
html[data-theme="glass-care-dark"],html[data-theme="glass-care-dark"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="glass-care-dark"]{--bg:#251e22;--bg2:color-mix(in srgb,#251e22 55%,#513843);--surface:#3b2d34;--fill:#513843;--t1:#fff1f5;--t2:#dfc1cc;--t3:var(--t2);--green-tx:#f1bace;--green-bg:#513843;--line:#ffffff33;--line-btn:#d9e8ff54;--glass-face:linear-gradient(135deg,#f3d0dd21,#e0acbf08);--glass-button:linear-gradient(145deg,#f7d4e32d,#cda8b510);--glass-selected:linear-gradient(145deg,#e6abc448,#caa9b21a);--glass-edge:#ffffff3d;--glass-inner:#ffffff33;--glass-shadow:0 12px 28px #00000030,inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff0a;--glass-scene:radial-gradient(ellipse at 85% 15%,#95657755,transparent 60%),linear-gradient(150deg,#35252f,#201a20 60%,#3c2b2d);color-scheme:dark}
html[data-theme="glass-trust"],html[data-theme="glass-trust"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="glass-trust"]{--bg:#e8eef8;--bg2:color-mix(in srgb,#e8eef8 55%,#d7e5f7);--surface:#f7faff;--fill:#d7e5f7;--t1:#1f3552;--t2:#4a617e;--t3:var(--t2);--green-tx:#345f9f;--green-bg:#d7e5f7;--line:#ffffffa8;--line-btn:#ffffffc9;--glass-face:linear-gradient(135deg,#ffffff8f,#ffffff38);--glass-button:linear-gradient(150deg,#ffffffb3,#ffffff54 55%,#e8efffa1);--glass-selected:linear-gradient(145deg,#a9c6e9aa,#eef6ffcc);--glass-edge:#ffffffcf;--glass-inner:#ffffffad;--glass-shadow:0 8px 28px #3353820d,inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff38;--glass-scene:radial-gradient(ellipse at 0% 15%,#a6c7ed88,transparent 60%),linear-gradient(150deg,#f4f8ff,#d9e5f4 60%,#ebf0f8);color-scheme:light}
html[data-theme="glass-trust-dark"],html[data-theme="glass-trust-dark"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="glass-trust-dark"]{--bg:#142033;--bg2:color-mix(in srgb,#142033 55%,#2b4564);--surface:#253750;--fill:#2b4564;--t1:#f1f6ff;--t2:#bed0e6;--t3:var(--t2);--green-tx:#b2d4ff;--green-bg:#2b4564;--line:#ffffff33;--line-btn:#d9e8ff54;--glass-face:linear-gradient(135deg,#bdd8ff23,#a2bde008);--glass-button:linear-gradient(145deg,#c6e0ff30,#9ab7df10);--glass-selected:linear-gradient(145deg,#8cbbf64a,#94b1d820);--glass-edge:#ffffff3d;--glass-inner:#ffffff33;--glass-shadow:0 12px 28px #00000030,inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff0a;--glass-scene:radial-gradient(ellipse at 0% 5%,#4979ad55,transparent 65%),linear-gradient(150deg,#1b304b,#111d2d 60%,#243951);color-scheme:dark}
html[data-theme="glass-nature"],html[data-theme="glass-nature"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="glass-nature"]{--bg:#edf2ea;--bg2:color-mix(in srgb,#edf2ea 55%,#dce9d9);--surface:#fbfdf8;--fill:#dce9d9;--t1:#2d3e31;--t2:#546656;--t3:var(--t2);--green-tx:#496d51;--green-bg:#dce9d9;--line:#ffffffa8;--line-btn:#ffffffc9;--glass-face:linear-gradient(135deg,#ffffff8f,#ffffff38);--glass-button:linear-gradient(150deg,#ffffffb3,#ffffff54 55%,#e8efffa1);--glass-selected:linear-gradient(145deg,#c6dac1ac,#f6fbf2bf);--glass-edge:#ffffffcf;--glass-inner:#ffffffad;--glass-shadow:0 8px 28px #3353820d,inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff38;--glass-scene:radial-gradient(ellipse at 0% 15%,#c0d6b78c,transparent 60%),radial-gradient(ellipse at 95% 90%,#e0d7bd77,transparent 60%),linear-gradient(150deg,#f7faf1,#e1eadc);color-scheme:light}
html[data-theme="glass-nature-dark"],html[data-theme="glass-nature-dark"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="glass-nature-dark"]{--bg:#1a251e;--bg2:color-mix(in srgb,#1a251e 55%,#384f38);--surface:#2a3a2d;--fill:#384f38;--t1:#f0f7eb;--t2:#c0d1b9;--t3:var(--t2);--green-tx:#c0dfb4;--green-bg:#384f38;--line:#ffffff33;--line-btn:#d9e8ff54;--glass-face:linear-gradient(135deg,#d4e7c421,#a2bf9a08);--glass-button:linear-gradient(145deg,#e0efd130,#afc6a410);--glass-selected:linear-gradient(145deg,#b2d1a545,#b9c8a71c);--glass-edge:#ffffff3d;--glass-inner:#ffffff33;--glass-shadow:0 12px 28px #00000030,inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff0a;--glass-scene:radial-gradient(ellipse at 5% 5%,#627d4f55,transparent 60%),linear-gradient(150deg,#2b3828,#17231c 60%,#303a2a);color-scheme:dark}

/* --- общие поля, которых нет в палитрах пакета: от цветов самой палитры (иначе брались бы зелёные значения светлой темы) --- */
html[data-theme^="glass-"],html[data-theme^="glass-"] .app.functional,[data-lx-material^="glass-"]{
  --ui:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--font:var(--ui);
  --t4:var(--t2);--mute:var(--t2);--green:var(--green-tx);--on-acc:#fff;--on-t1:var(--bg);
  --line-soft:color-mix(in srgb,var(--t2) 14%,transparent);--hair:color-mix(in srgb,var(--t2) 22%,transparent);--dash:color-mix(in srgb,var(--t2) 38%,transparent);
  --fill-2:color-mix(in srgb,var(--fill) 55%,var(--surface));--mark:color-mix(in srgb,var(--t2) 55%,var(--bg));
  --acc-1:color-mix(in srgb,var(--green-tx) 86%,#fff);--acc-2:var(--green-tx);--acc-3:color-mix(in srgb,var(--green-tx) 86%,#000);--acc-edge:var(--green-tx);--acc-ring:color-mix(in srgb,var(--green-tx) 60%,transparent);
  --input-bg:color-mix(in srgb,var(--surface) 72%,transparent);--me-1:var(--green-bg);--me-2:color-mix(in srgb,var(--green-bg) 82%,var(--green-tx));--tab-1:var(--green-bg);--tab-2:var(--green-bg);
  --hl:rgba(255,255,255,.55);--scrim:rgba(18,22,28,.3);
  --glass-ease:cubic-bezier(.22,.7,.18,1);--lx-numeral:linear-gradient(var(--t1),var(--t1));
}
html[data-theme^="glass-"][data-theme$="-dark"],html[data-theme^="glass-"][data-theme$="-dark"] .app.functional,[data-lx-material^="glass-"][data-lx-material$="-dark"]{
  --on-acc:var(--bg);--hl:rgba(255,255,255,.08);--scrim:rgba(0,0,0,.58);
  --acc-1:color-mix(in srgb,var(--green-tx) 90%,#fff);--acc-3:color-mix(in srgb,var(--green-tx) 80%,#000);
  --yellow:#e2c27f;--yellow-bg:#29231a;--yellow-bd:#453a22;--danger:#e38b77;--danger-bg:#2b1a16;--danger-bd:#55302a;
  --ph-filter:brightness(.52) saturate(.72) contrast(1.04);
  --ph-veil:linear-gradient(to bottom,color-mix(in srgb,var(--bg) 90%,transparent) 0%,color-mix(in srgb,var(--bg) 50%,transparent) 40%,color-mix(in srgb,var(--bg) 6%,transparent) 70%,color-mix(in srgb,var(--bg) 30%,transparent) 100%);
}
html[data-theme^="glass-"]{--page:var(--bg)}

/* --- материал (glass.css пакета; селекторы прототипа переведены на настоящие классы приложения) --- */
html[data-glass] .app.functional{font-family:var(--ui);background:var(--glass-scene);color:var(--t1)}
html[data-glass] .functional :is(button,input,select,textarea){font-family:var(--ui)}
html[data-glass] .functional :is(.screen,.scroll,.pr-home,.pr-home-hero,.pr-home-content,.achv-page,.achv-profile,.hdr,.cal-hdr,.plain-hdr,.timeline,.day-actions){background:transparent}
html[data-glass] .functional :is(.hdr,.cal-hdr,.plain-hdr){border-bottom-color:var(--glass-edge)}
html[data-glass] .functional .pr-home-hero:after{border-color:var(--glass-edge);opacity:.36}
/* поверхности: стекло — полупрозрачный градиент, тонкая светлая граница, внутренний блик, мягкая тень и размытие фона за ними */
html[data-glass] .functional :is(.ps-card,.sgroup,.pr-photo-card,.pr-home-tabs,.pr-home-counters,.achv-cover,.pr-skin-tile>span,.wv-panel,.wv-preview-wrap,.wv-detail-surface,.pr-theme-card,
  .evcard,.dosecard,.card,.course,.fold,.prog,.dboard,.quitcard,.donerow,.kind-auto){
  background:var(--glass-face)!important;border:1px solid var(--glass-edge)!important;box-shadow:var(--glass-shadow)!important;
  -webkit-backdrop-filter:blur(24px) saturate(150%);backdrop-filter:blur(24px) saturate(150%);
}
html[data-glass] .functional .pr-photo-card{background:radial-gradient(ellipse at 20% 15%,rgba(var(--pr-photo-a,110,151,220),.22),transparent 70%),var(--glass-face)!important}
html[data-glass] .functional :is(.pr-home-counters>button,.pr-home-counters>.pr-metric-balance){background:var(--glass-button);border-color:var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-inner)}
/* кнопки — отдельный материал; опасные действия сохраняют свой цвет */
html[data-glass] .functional :is(.pr-home-gear,.pf-back,.btn:not(.danger),.navbtn,.fbar-toggle,.pr-edit-buttons button,.wv-action,.wv-detail-primary,.wv-detail-secondary,.pr-photo-remove,.rv-profile-open){
  background:var(--glass-button)!important;color:var(--green-tx)!important;border:1px solid var(--glass-edge)!important;box-shadow:var(--glass-shadow)!important;
  -webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%);border-radius:14px;text-shadow:none;
}
/* кнопка-папка в ряду чипов «Дня»: ряд прокручивается вбок и обрезает внешнюю тень прямоугольником — у неё только внутренний блик */
html[data-glass] .functional .zc-list-filter .fbar-toggle{box-shadow:inset 0 1px 0 var(--glass-inner),inset 0 -1px 0 #ffffff14!important}
html[data-glass] .functional .btn:disabled{opacity:.55}
html[data-glass] .functional :is(.pr-home-tabs button[aria-selected=true],.pr-plan-switch button[aria-selected=true],.wg-plan-tabs:before,.look-seg button.on,.lx-switch-row button.on,.viewseg button.on,.seg button.on){background:var(--glass-selected)!important;border-color:var(--glass-edge);box-shadow:var(--glass-shadow);color:var(--t1)}
html[data-glass] .functional :is(.pr-plan-switch,.wg-plan-tabs,.look-seg,.lx-switch-row,.viewseg){background:var(--glass-face);border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-inner);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}
html[data-glass] .functional :is(.pr-home-identity .prof-ava,.pr-person-icon,.srow-ic,.ps-action-icon){background:var(--glass-button)!important;border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-inner);color:var(--green-tx)}
html[data-glass] .functional .pr-home-identity b{font-size:25px;line-height:1.18;letter-spacing:-.8px;font-weight:650}
html[data-glass] .functional .pr-home-identity small{font-size:12px;font-weight:500;letter-spacing:-.15px;color:var(--t2)}
html[data-glass] .functional :is(.pr-person-row b,.srow-body b,.ps-action b){font-weight:600;letter-spacing:-.25px}
html[data-glass] .functional :is(.pr-home-counters b,.pr-home-counters b>span,.dboard-ring b,.hdr-prog span){font-variant-numeric:tabular-nums;letter-spacing:-.5px}
html[data-glass] .functional :is(.wv-meta,.pr-skin-tile>span>b,.wv-name){background:var(--glass-button)!important;color:var(--t1);border-color:var(--glass-edge);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
/* подпись под образцом виджета на стеклянной плашке — со скруглёнными углами, как карточка над ней (владелец, 21.10) */
html[data-glass] .functional .wv-name{border-radius:12px;padding:0 8px}
html[data-glass] .functional .pr-skin-tile[aria-checked=true]>span{border-color:var(--green-tx)!important;box-shadow:inset 0 0 0 1px var(--green-tx),var(--glass-shadow)!important}
html[data-glass] .functional .pr-skin-tile i{background:var(--green-tx);color:var(--bg);border-color:var(--glass-edge)}
/* верх страниц и нижняя панель: стекло с более сильным размытием; панель вкладок — плавающая плашка над краем экрана */
html[data-glass] .functional :is(.pf-head,.sheet-head){background:var(--glass-face);border-color:var(--glass-edge);-webkit-backdrop-filter:blur(26px) saturate(160%);backdrop-filter:blur(26px) saturate(160%)}
html[data-glass] .functional .tabbar{margin:0 10px calc(10px + var(--safe-bottom));padding:6px 6px 6px;border:1px solid var(--glass-edge);border-radius:24px;background:var(--glass-face);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:blur(26px) saturate(160%);backdrop-filter:blur(26px) saturate(160%)}
/* панель «парит» (владелец, 20 октября 2026, сборка 94): экран уходит под панель до самого низа — вокруг и под скруглёнными
   углами виден сам экран, без полосы-подложки и края над панелью. Панель остаётся в потоке (js/app.js pagePlace и
   js/companion.js place берут её место), но отрицательным отступом сверху ложится поверх экрана: 70 px панель + 10 px зазор
   + системная полоса. Последний список экрана получает этот же запас снизу — последняя строка выходит над панелью;
   экран без такого списка (чат с полем ввода, выбор подписки) поднимает своё содержимое над панелью целиком.
   Клавиатура, экраны-формы и панель выбора дел (.selbar) — без панели вкладок, запас не нужен. */
/* только телефон: на планшете и в окне компьютера (tablet.css, desk.css) панель стоит в сетке — там своя раскладка */
@media (max-width:599.98px){
html[data-glass]:not(.desk) .functional{--gl-tb:calc(80px + var(--safe-bottom))}
html[data-glass]:not(.desk) .functional #root > .tabbar{position:relative;z-index:6;margin-top:calc(-1 * var(--gl-tb))}
html[data-glass]:not(.desk):not(.kb-open):not(.form-screen) .functional #root:has(> .tabbar) > .screen{padding-bottom:var(--gl-tb)}
html[data-glass]:not(.desk):not(.kb-open):not(.form-screen) .functional #root:has(> .tabbar) > .screen:has(> .scroll:last-child){padding-bottom:0}
html[data-glass]:not(.desk):not(.kb-open):not(.form-screen) .functional #root:has(> .tabbar) > .screen > .scroll:last-child{padding-bottom:calc(var(--gl-tb) + 20px)!important;scroll-padding-bottom:var(--gl-tb)}
}
/* страница настроек под парящей панелью: панель — над страницей (пока сверху нет шторки с затемнением), запас --pf-float
   задаёт js/app.js pagePlace; последний список страницы листается под стекло, подвал без списка поднимается над панелью */
html[data-glass] .functional #overlay .pf-page{padding-bottom:var(--pf-float,0px)}
html[data-glass] .functional #overlay .pf-page:has(> .sheet-body:last-child){padding-bottom:0}
html[data-glass] .functional #overlay .pf-page > .sheet-body:last-child{padding-bottom:calc(16px + var(--pf-float,0px))}
html[data-glass] .functional #overlay .pf-under:has(> .pf-under-body:last-child){padding-bottom:0}
html[data-glass] .functional #overlay .pf-under > .pf-under-body:last-child{padding-bottom:calc(16px + var(--pf-float,0px))}
html[data-glass] .functional .tab.on .tab-ico{background:var(--glass-selected);box-shadow:inset 0 1px 0 var(--glass-inner)}
/* окна и боковая панель: плотная сцена палитры под стеклянными карточками — текст читается при любом содержимом под окном */
html[data-glass] .functional :is(.sheet,.day-drawer){background:var(--glass-scene);border-top:1px solid var(--glass-edge)}
html[data-glass] .functional .sheet.pf-page{border-top:0}
/* окно «Да / Нет» лежит на затемнении: стекло на плотной подложке, иначе текст тонет в затемнённом экране */
html[data-glass] .functional .dlg{background:var(--glass-face),var(--surface)!important;border:1px solid var(--glass-edge)!important;box-shadow:var(--glass-shadow)!important}
/* карточка при смахивании: под ней панель действий — стеклу нужна плотная подложка */
html[data-glass] .functional :is(.tl-swipe.to-left,.tl-swipe.to-right) .evcard{background:var(--glass-face),var(--surface)!important}
/* строка «Выполнено» в пути (js/snap.js): непрозрачна, соседи под ней не просвечивают */
html[data-glass] .functional .donerow.snap-moving{background:var(--glass-face),var(--surface)!important}
html[data-glass] .functional :is(.pr-home-tabs button,.pr-plan-switch button,.pr-skin-tile>span){transition:background-color .18s ease,box-shadow .18s ease,transform .18s ease}
html[data-glass] .functional button:active{transform:scale(.98)}
html[data-glass] .functional :is(button,input,textarea,select):focus-visible{outline:2px solid var(--green-tx);outline-offset:3px}
/* поля ввода; у окна добавления дела (zc-*) и поиска боковой панели своё поле внутри стеклянной плашки */
html[data-glass] .functional :is(input:not([type=checkbox]):not([type=radio]):not([type=range]),textarea,.input):not([class^="zc-"]):not([class*=" zc-"]):not(.dr-search-input){background:var(--glass-face);border:1px solid var(--glass-edge);color:var(--t1)}
html[data-glass] .functional :is(input,textarea)::placeholder{color:var(--t2);opacity:.8}
html[data-glass] .functional .pr-home-panel{padding-top:12px}
html[data-glass] .functional .switch{background:color-mix(in srgb,var(--t2) 35%,transparent)}
html[data-glass] .functional [aria-checked=true]>.switch{background:var(--green-tx)}
html[data-glass] .functional :is(.achv-tabs,.achv-cover-glass,.ach.achv:not(.in-page)){background:var(--glass-face);border-color:var(--glass-edge);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:blur(24px) saturate(150%);backdrop-filter:blur(24px) saturate(150%)}
html[data-glass] .functional :is(.achv-back,.achv-skin,.achv-claim){background:var(--glass-button);border-color:var(--glass-edge);color:var(--green-tx);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
html[data-glass] .functional .achv-tab.on{background:var(--glass-selected)!important;border-color:var(--glass-edge)!important;box-shadow:var(--glass-shadow)!important}
html[data-glass] .functional .achv-page{background:var(--glass-scene)}
/* карточка награды на затемнении (сборка 95): стекло на плотной подложке, как окно «Да / Нет» */
html[data-glass] .functional .achv-detail .achv-screen-body{background:var(--glass-face),var(--surface);border-color:var(--glass-edge);box-shadow:var(--glass-shadow)}

/* контраст (решение владельца 20.10, страница «Glass — контраст, сравнение»): в тёмных палитрах под стеклом кнопок и выбранных
   сегментов — подложка цвета фона палитры; светлое пятно сцены иначе осветляло кнопку ниже 4.5 */
html[data-theme="glass-calm-dark"] .functional :is(.pr-home-gear,.pf-back,.btn:not(.danger),.navbtn,.fbar-toggle,.pr-edit-buttons button,.wv-action,.wv-detail-primary,.wv-detail-secondary,.pr-photo-remove,.rv-profile-open){background:var(--glass-button),color-mix(in srgb,var(--bg) 35%,transparent)!important}
html[data-theme="glass-calm-dark"] .functional :is(.pr-home-tabs button[aria-selected=true],.pr-plan-switch button[aria-selected=true],.look-seg button.on,.lx-switch-row button.on,.viewseg button.on,.seg button.on){background:var(--glass-selected),color-mix(in srgb,var(--bg) 35%,transparent)!important}
html[data-theme="glass-care-dark"] .functional :is(.pr-home-gear,.pf-back,.btn:not(.danger),.navbtn,.fbar-toggle,.pr-edit-buttons button,.wv-action,.wv-detail-primary,.wv-detail-secondary,.pr-photo-remove,.rv-profile-open){background:var(--glass-button),color-mix(in srgb,var(--bg) 35%,transparent)!important}
html[data-theme="glass-care-dark"] .functional :is(.pr-home-tabs button[aria-selected=true],.pr-plan-switch button[aria-selected=true],.look-seg button.on,.lx-switch-row button.on,.viewseg button.on,.seg button.on){background:var(--glass-selected),color-mix(in srgb,var(--bg) 35%,transparent)!important}
html[data-theme="glass-trust-dark"] .functional :is(.pr-home-gear,.pf-back,.btn:not(.danger),.navbtn,.fbar-toggle,.pr-edit-buttons button,.wv-action,.wv-detail-primary,.wv-detail-secondary,.pr-photo-remove,.rv-profile-open){background:var(--glass-button),color-mix(in srgb,var(--bg) 50%,transparent)!important}
html[data-theme="glass-trust-dark"] .functional :is(.pr-home-tabs button[aria-selected=true],.pr-plan-switch button[aria-selected=true],.look-seg button.on,.lx-switch-row button.on,.viewseg button.on,.seg button.on){background:var(--glass-selected),color-mix(in srgb,var(--bg) 50%,transparent)!important}
html[data-theme="glass-nature-dark"] .functional :is(.pr-home-gear,.pf-back,.btn:not(.danger),.navbtn,.fbar-toggle,.pr-edit-buttons button,.wv-action,.wv-detail-primary,.wv-detail-secondary,.pr-photo-remove,.rv-profile-open){background:var(--glass-button),color-mix(in srgb,var(--bg) 50%,transparent)!important}
html[data-theme="glass-nature-dark"] .functional :is(.pr-home-tabs button[aria-selected=true],.pr-plan-switch button[aria-selected=true],.look-seg button.on,.lx-switch-row button.on,.viewseg button.on,.seg button.on){background:var(--glass-selected),color-mix(in srgb,var(--bg) 50%,transparent)!important}

:is(.lx-theme-cell,.pr-theme-offer)[data-lx-material^="glass-"] :is(.lx-theme-cta,.lx-pick-btn,.ad-watch){background:var(--glass-button);color:var(--green-tx);border:1px solid var(--glass-edge);box-shadow:var(--glass-shadow);font-family:var(--ui)}
:is(.lx-theme-cell,.pr-theme-offer)[data-lx-material^="glass-"] :is(.theme-time,.theme-price){background:var(--glass-button);color:var(--t1);border-color:var(--glass-edge)}
:is(.pr-theme-sample[data-lx-material^="glass-"],.pr-theme-night[data-lx-material^="glass-"]>.pr-theme-sample){background:var(--glass-scene)!important;color:var(--t1)!important;font-family:var(--ui)}
:is(.pr-theme-sample[data-lx-material^="glass-"],.pr-theme-night[data-lx-material^="glass-"]>.pr-theme-sample) i{background:var(--glass-face);border:1px solid var(--glass-edge);box-shadow:var(--glass-shadow);opacity:1}
:is(.pr-theme-sample[data-lx-material^="glass-"],.pr-theme-night[data-lx-material^="glass-"]>.pr-theme-sample) i:first-child{background:var(--green-tx);border:0;box-shadow:none}
:is(.pr-theme-sample[data-lx-material^="glass-"],.pr-theme-night[data-lx-material^="glass-"]>.pr-theme-sample)>b{background:var(--glass-button);color:var(--t1);border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-inner)}

/* --- плавность (motion.css пакета): цвета, рамки и тени кнопок 260–320 мс; смена раздела — проявление 340 мс со сдвигом 5 px;
   смена материала — затухание прежнего фона 480 мс (.glass-veil, js/glass-motion.js) --- */
html[data-glass] .functional :is(.pr-home-tabs button,.pr-plan-switch button,.pr-home-gear,.pr-skin-tile>span,.ps-card,.pf-back,.tabbar,.tab,.btn,.navbtn,.look-seg button,.lx-switch-row button){transition:color .26s ease,border-color .26s ease,box-shadow .32s ease,background-color .32s ease,transform .18s ease}
html[data-glass] #root>.screen.anim{animation:glass-screen-in .34s var(--glass-ease) both}
/* панель вкладки профиля: вместо проявления на каждой перерисовке (prHomeEnter, functional.css) — только при смене вкладки
   (js/glass-motion.js enter из js/app.js): фоновое обновление счётчиков и синхронизация экран не «перезапускают» */
html[data-glass] .functional .pr-home-panel{animation:none}
@keyframes glass-screen-in{from{opacity:.45;transform:translateY(5px)}to{opacity:1;transform:none}}
.glass-veil{position:fixed;inset:0;z-index:-1;pointer-events:none;background-size:cover}
/* жидкое растворение: один холст в пределах видимого списка (js/glass-motion.js liquid) */
.glass-dust{position:absolute;z-index:37;pointer-events:none;contain:strict}

/* --- доступность и запасные режимы --- */
/* без размытия фона (старый WebView) и в режиме «Глянец … выключен» — плотные подложки вместо прозрачного стекла */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  html[data-glass] .functional :is(.ps-card,.sgroup,.pr-home-tabs,.pr-skin-tile>span,.evcard,.dosecard,.card,.course,.fold,.prog,.dboard,.quitcard,.donerow,.tabbar,.pf-head,.dlg){background:var(--surface)!important}
}
html.plain[data-glass] .app.functional{--glass-face:linear-gradient(var(--surface),var(--surface));--glass-button:linear-gradient(var(--surface),var(--surface));--glass-scene:linear-gradient(var(--bg),var(--bg))}
html.plain[data-glass] .functional *{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
@media(prefers-reduced-transparency:reduce){
  html[data-glass] .app.functional{--glass-face:linear-gradient(var(--surface),var(--surface));--glass-button:linear-gradient(var(--surface),var(--surface))}
  html[data-glass] .functional *{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
}
@media(prefers-reduced-motion:reduce){
  html[data-glass] .functional *,html[data-glass] .functional *::before{transition:none!important;animation:none!important}
  html[data-glass] #root>.screen.anim{animation:none!important}
  html[data-glass] .functional button:active{transform:none}
  .glass-dust,.glass-veil{display:none}
}

/* --- нижняя панель: «Линза» — прозрачная подложка со светом под стеклом (пакет ChatGPT out/v5/nav-lab, сборка 96;
   слой .nav-fluid и жест — js/nav-fx.js, общие правила — functional.css) --- */
html[data-glass][data-nav-fx=lens] #app.functional .tabbar>.nav-fluid{border-radius:25px;background:linear-gradient(145deg,color-mix(in srgb,var(--t1) 27%,transparent),color-mix(in srgb,var(--t1) 7%,transparent));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 7px 18px #00000012}

/* --- «Единый день» и «План отдельно» в Glass (Plus; сборка 97, владелец 22.10: «в этих бульбашках (стекле)… совместить
   „Сегодня, 22 октября“ с плашечкой»). Разметка — js/screens.js dayScreen (flow): шапка .flow-date, табло дня .dboard.flow-board,
   план. Общие правила компоновок — конец luxe.css (html.day-flow-concept); здесь стекло поверх них: фон экрана — сцена палитры,
   поверхность — то же стекло, что у табло дня в «Карточках» (размытие 24 px, светлая кромка, блик, тень, радиус 20 px).
   Внутри одной поверхности: дата одной строкой и кнопки дней, под ними кольцо со счётом и фраза; в «Едином дне» там же папки
   и план строками с тонкими разделителями (без своих плашек и без своего размытия). «План отдельно» — шапка-бульбашка
   (дата + табло) и план отдельным стеклом ниже. Слой распада (.snap-layer.snap-flow) стекла не получает. --- */
html[data-glass].day-flow-concept[data-screen-tab="day"] .functional .screen{background:transparent}
html[data-glass].day-flow-concept .functional .flow-scroll{padding-top:12px}
html[data-glass].day-flow-concept .functional .flow-journal:not(.snap-layer){border:1px solid var(--glass-edge);border-radius:20px;background:var(--glass-face);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:blur(24px) saturate(150%);backdrop-filter:blur(24px) saturate(150%)}
html[data-glass].day-flow-split .functional .flow-overview{margin-bottom:12px}
/* дата одной строкой: «Сегодня, 22 октября»; длинный день недели переносит дату целиком; «вчера», «через 3 дня» — строкой ниже */
html[data-glass].day-flow-concept .functional .flow-date{padding:14px 14px 0 20px}
html[data-glass].day-flow-concept .functional .flow-date .hdr-row{align-items:flex-start;gap:8px}
/* поле даты (label.date-jump) раскладывается в строку заголовка (display:contents): дата переносится целиком, «вчера» встаёт
   с начала строки; невидимое поле выбора даты покрывает весь заголовок дня */
html[data-glass].day-flow-concept .functional .flow-date .hdr-main{position:relative;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:6px;padding-top:9px;min-width:0;border-radius:8px}
html[data-glass].day-flow-concept .functional .flow-date .hdr-main:focus-within{outline:2px solid var(--green-tx);outline-offset:3px}
html[data-glass].day-flow-concept .functional .flow-date .hdr-date{font:700 19px/1.25 var(--ui);letter-spacing:-.3px;text-transform:none;color:var(--t1)}
html[data-glass].day-flow-concept .functional .flow-date .hdr-date:after{content:','}
html[data-glass].day-flow-concept .functional .flow-date .hdr-sub{display:contents;font:600 19px/1.25 var(--ui);letter-spacing:-.3px;color:var(--t2);white-space:nowrap}
html[data-glass].day-flow-concept .functional .flow-date .hdr-rel{flex-basis:100%;margin-top:2px;font:500 12px/1.35 var(--ui);letter-spacing:0;color:var(--t2);white-space:normal}
html[data-glass].day-flow-concept .functional .flow-date .navbtn{width:40px;height:40px;min-width:40px;border-radius:12px;font-size:20px;box-shadow:inset 0 1px 0 var(--glass-inner),0 2px 10px #0000000d!important}
/* утро: счёт утра — полосой в шапке (табло дня появляется у плана) */
html[data-glass].day-flow-concept .functional .flow-date .hdr-prog{display:flex;margin:14px 6px 18px 0}
/* табло дня лежит в той же бульбашке, без своей плашки */
html[data-glass].day-flow-concept .functional .flow-board{margin:0;padding:12px 20px 18px;gap:16px;border:0!important;border-radius:0;background:none!important;box-shadow:none!important;-webkit-backdrop-filter:none;backdrop-filter:none}
html[data-glass].day-flow-concept .functional .flow-board .dboard-ring .bg{stroke:color-mix(in srgb,var(--t2) 14%,transparent)}
/* папки и план — по краю текста поверхности */
html[data-glass].day-flow-concept .functional .flow-journal .zc-list-filter{--zc-gutter:20px}
html[data-glass].day-flow-split .functional .flow-plan>.zc-list-filter:first-child{margin-top:14px}
html[data-glass].day-flow-split .functional .flow-plan .zc-list-filter+.flow-plan-heading{padding-top:4px}
html[data-glass].day-flow-concept .functional .flow-plan-heading{margin:0 20px;border-bottom-color:color-mix(in srgb,var(--t2) 16%,transparent);font-size:13px;color:var(--t1)}
html[data-glass].day-flow-concept .functional .flow-plan-heading small{font-size:11px;color:var(--t2)}
html[data-glass].day-flow-concept .functional .flow-journal .timeline{padding:0 20px}
html[data-glass].day-flow-concept .functional .flow-journal .tl-time i{background:color-mix(in srgb,var(--t2) 20%,transparent)}
html[data-glass].day-flow-concept .functional .flow-journal .tl-time b{color:var(--t2)}
/* строки плана и «Выполнено»: без своей плашки и размытия — тонкий разделитель; строка в пути — плотная, соседи не просвечивают */
html[data-glass].day-flow-concept .functional .flow-journal :is(.evcard,.dosecard,.mealcard){border:0!important;border-bottom:1px solid var(--line-soft)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;-webkit-backdrop-filter:none;backdrop-filter:none}
html[data-glass].day-flow-concept .functional .flow-journal .done-sec{margin:0 20px;border:0;background:none;box-shadow:none}
html[data-glass].day-flow-concept .functional .flow-journal .done-h{color:var(--t2)}
html[data-glass].day-flow-concept .functional .flow-journal :is(.fold,.donerow):not(.snap-moving){border:0!important;border-bottom:1px solid var(--line-soft)!important;border-radius:0!important;background:none!important;box-shadow:none!important;-webkit-backdrop-filter:none;backdrop-filter:none}
html[data-glass].day-flow-concept .functional .flow-journal .donerow.snap-moving{border:0!important;border-radius:0!important;box-shadow:none!important;-webkit-backdrop-filter:none;backdrop-filter:none}
/* кнопки внутри стекла — без второго размытия (стекло уже под ними) */
html[data-glass].day-flow-concept .functional .flow-journal :is(.navbtn,.btn,.fbar-toggle,.icon-btn,.zc-list-filter button){-webkit-backdrop-filter:none;backdrop-filter:none}
html[data-glass].day-flow-concept .functional .flow-add summary{margin:0 20px;color:var(--t2)}
html[data-glass].day-flow-concept .functional .flow-journal .day-actions{padding:8px 20px 20px}
@media(max-width:350px){
  html[data-glass].day-flow-concept .functional .flow-date{padding:12px 10px 0 16px}
  html[data-glass].day-flow-concept .functional .flow-date :is(.hdr-date,.hdr-sub){font-size:17px}
  html[data-glass].day-flow-concept .functional .flow-board{padding:10px 16px 16px;gap:12px}
  html[data-glass].day-flow-concept .functional :is(.flow-plan-heading,.flow-add summary,.flow-journal .done-sec){margin-left:16px;margin-right:16px}
  html[data-glass].day-flow-concept .functional .flow-journal .timeline{padding:0 16px}
  html[data-glass].day-flow-concept .functional .flow-journal .zc-list-filter{--zc-gutter:16px}
}
/* без размытия фона (старый WebView) — плотная подложка, как у карточек */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  html[data-glass].day-flow-concept .functional .flow-journal:not(.snap-layer){background:var(--surface)}
}
/* страница темы «Главный экран» в Glass: схема под плитками — тем же стеклом, что сам экран выбранной компоновки;
   галочка выбранной плитки стоит в строке с названием */
html[data-glass] .functional .pr-theme-sub .lay-tile b{flex-wrap:nowrap;align-items:flex-start}
html[data-glass] .functional .pr-theme-sub .lay-tile b svg{margin-top:1px}
html[data-glass] .functional .pr-layout-demo{padding:0;background:none;border:0}
html[data-glass] .functional .pr-layout-demo :is(.pr-demo-date,.pr-demo-plan>div){border:1px solid var(--glass-edge);background:var(--glass-face);box-shadow:var(--glass-shadow);border-radius:20px}
html[data-glass] .functional .pr-layout-demo.unified,html[data-glass] .functional .pr-layout-demo.split :is(.pr-demo-date,.pr-demo-plan){border:1px solid var(--glass-edge);background:var(--glass-face);box-shadow:var(--glass-shadow);border-radius:20px}
html[data-glass] .functional .pr-layout-demo:is(.unified,.split) :is(.pr-demo-plan,.pr-demo-plan>div){gap:0}
html[data-glass] .functional .pr-layout-demo:is(.unified,.split) .pr-demo-plan>div{margin:0 16px;padding:12px 0;border:0;border-top:1px solid var(--line-soft);border-radius:0;background:none;box-shadow:none}
html[data-glass] .functional .pr-layout-demo.unified .pr-demo-date{margin:0;padding:16px;border:0;background:none;box-shadow:none}
html[data-glass] .functional .pr-layout-demo.split .pr-demo-date{margin-bottom:10px}
html[data-glass] .functional .pr-layout-demo.split .pr-demo-plan{padding:2px 0}
html[data-glass] .functional .pr-layout-demo.split .pr-demo-plan>div:first-child{border-top:0}
/* надпись «Зарок Plus» на картинке помощника — акцентом темы, а не оливковым базовой (23.10.2026) */
html[data-glass] .functional .of-scene-label{background:color-mix(in srgb,var(--surface) 90%,transparent);color:var(--green-tx)}


/* ---- artisan-theme.css ---- */
/* Темы-ремёсла — четыре материала, у каждого светлое утро и ночь (пакет ChatGPT out/v5/artisan-themes, сборка 94):
   «Резное дерево» (wood), «Лесная сказка» (storybook), «Ремесло сакуры» (sakura), «Путь к горе» (ronin).
   Ключи тем: artisan-<материал> и artisan-<материал>-dark (регистрация — js/materials.js); пара artisan-<материал>-auto
   переключает их сама. Признаки html[data-artisan=<материал>][data-artisan-light=light|night] ставит js/app.js applyTheme —
   по ним материал; цвета — по data-theme. Все правила экрана — только под этими признаками; исключение — плитки выбора темы
   (data-lx-material). Цвета — themes.css и lighting.css пакета (ночь — отдельные токены, не фильтр поверх экрана);
   раскладка сцены — assembled.css; фактуры и детали — img/artisan/*.svg (в установке, несколько килобайт).
   Сцена дня и профиля: фон и Зарок — переменные --at-scene и --at-actor у <html> (js/artisan.js: докачка, кеш, подмена
   после декодирования). Шрифты — приложения; заголовки «Сакуры» и «Пути к горе» — Georgia (системный), файлов не добавляется.
   Выполнение дела — js/material-motion.js через js/snap.js. */

/* --- цвета: восемь сочетаний --- */
/* 24.10.2026 (сборка 100, tests/contrast-ui.cjs): второй текст и акцент доведены до 4.5:1 тем же оттенком — «Дерево» ночью --t2 светлее
   (и лёгкая вуаль поверх волокон карточек: светлая прожилка под мелким заголовком), «Сказка», «Сакура», «Путь к горе» днём --t2 и --green-tx
   темнее, «Сакура» ночью --t2 светлее. «Дерево» днём не менялось (#5a462b — выбор владельца). Те же цвета — js/materials.js ARTISAN. */
html[data-theme="artisan-wood"],html[data-theme="artisan-wood"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="artisan-wood"]{--bg:#eee2cb;--bg2:#e2d0ac;--surface:#f5e8cc;--fill:#e4d1ad;--t1:#493321;--t2:#5a462b;--green-tx:#7a4b24;--green-bg:#ead2a4;--edge:#b9925f;--line:#c2935866;--material:linear-gradient(145deg,#fff0d4,#e9d0a7);--button:linear-gradient(#edcc99,#c6975c);--button-ink:#49301a;--relief:inset 0 2px 0 #fff9,inset 0 -3px 0 #a77a3f33,0 4px 9px #5c3d1626;--at-page:var(--grain),linear-gradient(#eee7d4,#e2d5b9);--at-surf:var(--grain),var(--material);--at-track:linear-gradient(#e2b56f,#a8682f);--at-pv:url("img/artisan/pv-wood-light.webp");color-scheme:light}
html[data-theme="artisan-wood-dark"],html[data-theme="artisan-wood-dark"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="artisan-wood-dark"]{--bg:#211a14;--bg2:#35271b;--surface:#3e2d20;--fill:#302317;--t1:#f3e7cf;--t2:#d6c6b1;--green-tx:#e2b878;--green-bg:#5a4128;--edge:#79603c;--line:#685f4a;--material:linear-gradient(145deg,#4f3925,#302319);--button:linear-gradient(#71502e,#49321e);--button-ink:#f1e2c0;--relief:inset 0 1px 0 #d9cb9a29,inset 0 -3px 0 #0005,0 4px 10px #0004;--at-page:var(--grain),linear-gradient(#292015,#19140f);--at-surf:linear-gradient(#3e2d2033,#3e2d2033),var(--grain),var(--material);--at-track:linear-gradient(#ecc9a3,#c08a5c);--at-pv:url("img/artisan/pv-wood-night.webp");color-scheme:dark}
html[data-theme="artisan-storybook"],html[data-theme="artisan-storybook"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="artisan-storybook"]{--bg:#e6ead4;--bg2:#d9e0bc;--surface:#fff2d5;--fill:#f2e2b7;--t1:#44341d;--t2:#69583c;--green-tx:#456636;--green-bg:#dce8bb;--edge:#cfac70;--line:#d7bc8399;--material:linear-gradient(145deg,#fff7de,#f1e5c1);--button:linear-gradient(#eac994,#c99759);--button-ink:#50351d;--relief:inset 0 2px 0 #fffbeaa1,inset 0 -4px 0 #d7bf8a73,0 5px 9px #29451e20;--at-page:radial-gradient(ellipse at 0 0,#aac69588,transparent 70%),linear-gradient(#e8ecd9,#d5ddbb);--at-surf:var(--paper),var(--material);--at-track:linear-gradient(#b7ce77,#698b3f);--at-pv:url("img/artisan/pv-storybook-light.webp");color-scheme:light}
html[data-theme="artisan-storybook-dark"],html[data-theme="artisan-storybook-dark"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="artisan-storybook-dark"]{--bg:#151e1a;--bg2:#202b23;--surface:#2e3027;--fill:#25291f;--t1:#f3e7cf;--t2:#bfb39b;--green-tx:#bacf8b;--green-bg:#3c5033;--edge:#635d46;--line:#685f4a;--material:linear-gradient(145deg,#343b2d,#242b23);--button:linear-gradient(#62553c,#423c2c);--button-ink:#f0dfbb;--relief:inset 0 1px 0 #d9cb9a29,inset 0 -3px 0 #0005,0 4px 10px #0004;--at-page:var(--paper),linear-gradient(#17251e,#101a16);--at-surf:var(--paper),var(--material);--at-track:linear-gradient(#bcc99b,#7c9b6a);--at-pv:url("img/artisan/pv-storybook-night.webp");color-scheme:dark}
html[data-theme="artisan-sakura"],html[data-theme="artisan-sakura"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="artisan-sakura"]{--bg:#ecded6;--bg2:#e0cbbf;--surface:#fff0db;--fill:#f0ddc5;--t1:#513a37;--t2:#644e47;--green-tx:#8b444d;--green-bg:#f0d8d3;--edge:#bd927c;--line:#ceb29899;--material:linear-gradient(135deg,#fff2dd,#f1dfc6);--button:linear-gradient(#a45c63,#793b4a);--button-ink:#fff0da;--relief:inset 0 1px 0 #fff8e9,inset 0 -3px 0 #ccb39160,0 5px 12px #5b263026;--at-page:radial-gradient(ellipse at 100% 0,#e8bac877,transparent 60%),linear-gradient(#f2e5dc,#e2cec3);--at-surf:var(--paper),var(--material);--at-track:linear-gradient(#d98a9b,#a24f59);--at-pv:url("img/artisan/pv-sakura-light.webp");--title:Georgia,"Times New Roman",serif;color-scheme:light}
html[data-theme="artisan-sakura-dark"],html[data-theme="artisan-sakura-dark"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="artisan-sakura-dark"]{--bg:#221c2b;--bg2:#34283e;--surface:#3a2b40;--fill:#2e2435;--t1:#f5e2e7;--t2:#d3bfcc;--green-tx:#e6b2c6;--green-bg:#654258;--edge:#765469;--line:#685f4a;--material:linear-gradient(145deg,#443047,#2d2437);--button:linear-gradient(#78495e,#503349);--button-ink:#f0dfbb;--relief:inset 0 1px 0 #d9cb9a29,inset 0 -3px 0 #0005,0 4px 10px #0004;--at-page:var(--paper),linear-gradient(#291e32,#191623);--at-surf:var(--paper),var(--material);--at-track:linear-gradient(#e8b9ce,#ad799b);--at-pv:url("img/artisan/pv-sakura-night.webp");--title:Georgia,"Times New Roman",serif;color-scheme:dark}
html[data-theme="artisan-ronin"],html[data-theme="artisan-ronin"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="artisan-ronin"]{--bg:#e5e7e2;--bg2:#d4d9d5;--surface:#f8edda;--fill:#dfd5c2;--t1:#353c3c;--t2:#525955;--green-tx:#944233;--green-bg:#ead1b0;--edge:#b4a58c;--line:#b79c7399;--material:linear-gradient(145deg,#faf2e0,#e5d9c1);--button:linear-gradient(#a75b3c,#713c2b);--button-ink:#fff0d0;--relief:inset 0 1px 0 #fff7e0,inset 0 -3px 0 #b2936355,0 5px 12px #0004;--at-page:var(--paper),linear-gradient(#edf0e9,#d7ddd6);--at-surf:var(--paper),var(--material);--at-track:linear-gradient(#c8705a,#9e4636);--at-pv:url("img/artisan/pv-ronin-light.webp");--title:Georgia,"Times New Roman",serif;color-scheme:light}
html[data-theme="artisan-ronin-dark"],html[data-theme="artisan-ronin-dark"] .app.functional,:is(.lx-theme-tile,.lx-theme-cell,.lx-pair-night,.pr-theme-sample,.pr-theme-offer)[data-lx-material="artisan-ronin-dark"]{--bg:#141d29;--bg2:#232e3b;--surface:#2d3641;--fill:#242d38;--t1:#f0e3cd;--t2:#b9b6b0;--green-tx:#e4b58a;--green-bg:#5d4938;--edge:#64626a;--line:#685f4a;--material:linear-gradient(145deg,#343b45,#222b35);--button:linear-gradient(#764936,#503428);--button-ink:#f0dfbb;--relief:inset 0 1px 0 #d9cb9a29,inset 0 -3px 0 #0005,0 4px 10px #0004;--at-page:var(--paper),linear-gradient(#1e2a3b,#101924);--at-surf:var(--paper),var(--material);--at-track:linear-gradient(#ecc9a3,#c08a5c);--at-pv:url("img/artisan/pv-ronin-night.webp");--title:Georgia,"Times New Roman",serif;color-scheme:dark}

/* «Резное дерево»: акцент — орех и мёд, а не зелень пакета (владелец, 23.10.2026: зелёные значки, переключатели и выбор поверх
   дерева — не в цвет темы). Меняются --green-tx / --green-bg двух строк выше и те же значения в js/materials.js (ARTISAN,
   ARTISAN_INK) — плитки тем и виджеты телефона берут акцент оттуда (tests/artisan.cjs сверяет). */
/* --- общие поля: от цветов самого сочетания (иначе брались бы зелёные значения светлой темы) --- */
html[data-theme^="artisan-"],html[data-theme^="artisan-"] .app.functional,[data-lx-material^="artisan-"]{
  --title:var(--ui);--grain:url("img/artisan/wood-grain.svg") 0 0/360px 120px;--paper:url("img/artisan/paper.svg") 0 0/150px 150px;
  --board:linear-gradient(#97623b,#633d25);--board-plate:linear-gradient(#ffe5b6,#d9ac70);--nav-ink:#fff0d6;--nav-selected-ink:#382313;
  --t3:var(--t2);--t4:var(--t2);--mute:var(--t2);--green:var(--green-tx);--on-acc:#fff8ec;--on-t1:var(--bg);
  --line-soft:color-mix(in srgb,var(--t2) 16%,transparent);--hair:color-mix(in srgb,var(--t2) 24%,transparent);--dash:color-mix(in srgb,var(--t2) 40%,transparent);
  --fill-2:color-mix(in srgb,var(--fill) 60%,var(--surface));--mark:color-mix(in srgb,var(--edge) 70%,var(--t2));
  --acc-1:color-mix(in srgb,var(--green-tx) 86%,#fff);--acc-2:var(--green-tx);--acc-3:color-mix(in srgb,var(--green-tx) 86%,#000);--acc-edge:var(--green-tx);--acc-ring:color-mix(in srgb,var(--green-tx) 55%,transparent);
  --input-bg:var(--surface);--me-1:var(--green-bg);--me-2:color-mix(in srgb,var(--green-bg) 82%,var(--green-tx));--tab-1:var(--green-bg);--tab-2:var(--green-bg);
  --hl:rgba(255,255,255,.5);--scrim:rgba(30,20,10,.32);--lx-numeral:linear-gradient(var(--t1),var(--t1));
  --at-ink:var(--green-tx);
}
html[data-theme^="artisan-"][data-theme$="-dark"],html[data-theme^="artisan-"][data-theme$="-dark"] .app.functional,[data-lx-material^="artisan-"][data-lx-material$="-dark"]{
  --on-acc:var(--bg);--hl:rgba(255,255,255,.08);--scrim:rgba(0,0,0,.58);--board:linear-gradient(#3f3830,#292622);--board-plate:var(--button);--nav-ink:#efe2c6;--nav-selected-ink:var(--button-ink);
  --yellow:#e2c27f;--yellow-bg:#29231a;--yellow-bd:#453a22;--danger:#e38b77;--danger-bg:#2b1a16;--danger-bd:#55302a;
  --ph-filter:brightness(.55) saturate(.75) contrast(1.04);
}
html[data-theme="artisan-sakura"],html[data-theme="artisan-sakura"] .app.functional,[data-lx-material="artisan-sakura"]{--board:linear-gradient(#6c4144,#432d37);--board-plate:linear-gradient(#ffe7c4,#e9c39a);--nav-ink:#f9e3c5;--nav-selected-ink:#793b4a}
html[data-theme="artisan-ronin"],html[data-theme="artisan-ronin"] .app.functional,[data-lx-material="artisan-ronin"]{--board:linear-gradient(#493b30,#292c30);--board-plate:linear-gradient(#f2dcaf,#d9b98a);--nav-ink:#efdfc0;--nav-selected-ink:#7d392c}
/* --at-ink — цвет значков, галочек и ссылок-раскрытий поверх материала (23.10.2026). У «Лесной сказки» зелёный остаётся цветом
   леса в тексте и прогрессе, а значки и галочки на дощечках — цветом дерева её кнопок */
html[data-theme="artisan-storybook"],html[data-theme="artisan-storybook"] .app.functional{--at-ink:#7c5428}
html[data-theme="artisan-storybook-dark"],html[data-theme="artisan-storybook-dark"] .app.functional{--at-ink:#e0c08a}
html[data-theme^="artisan-"]{--page:var(--bg)}
/* спокойная отделка (пакет ChatGPT quiet-ui, владелец 22.10.2026): материал остаётся узнаваемым, давления меньше. Свои токены
   поверхности у каждого материала (--m-*): дерево — резные волокна (carved-grain.svg), сказка — мультяшная древесина без
   повторяющегося сучка-«глаза» (storybook-wood.svg), сакура и путь к горе — бумага. Ими отделаны карточки, кнопки шапки дня
   и нижняя панель. Ночь — свои значения, не фильтр поверх. */
html[data-artisan=wood]{--m-tex:url("img/artisan/carved-grain.svg") center top/440px 220px;--m-top:#eddbba;--m-bot:#ddc49e;--m-edge:#bba17d;--m-hl:#fff8e5b0;--m-cut:#76533432;--m-shadow:#463d311a}
html[data-artisan=wood][data-artisan-light=night]{--m-top:#3e3429;--m-bot:#332b23;--m-edge:#685442;--m-hl:#e9c99822;--m-cut:#08060466;--m-shadow:#00000033}
html[data-artisan=storybook]{--m-tex:url("img/artisan/storybook-wood.svg") center/400px 180px;--m-top:#f2e3bb;--m-bot:#e5d09e;--m-edge:#c2aa78;--m-hl:#fff9deb8;--m-cut:#9a713a32;--m-shadow:#3442351a;
  --sb-0:url("img/artisan/storybook-walk.svg");--sb-1:url("img/artisan/storybook-quiet.svg");--sb-2:url("img/artisan/storybook-read.svg");--sb-3:url("img/artisan/storybook-idea.svg")}
html[data-artisan=storybook][data-artisan-light=night]{--m-top:#3a3e2c;--m-bot:#303525;--m-edge:#646d4c;--m-hl:#e2edbc25;--m-cut:#0b160c66;--m-shadow:#00000033}
html[data-artisan=sakura]{--m-tex:url("img/artisan/paper.svg") 0 0/150px 150px;--m-top:#faf2ee;--m-bot:#f0e5e1;--m-edge:#e1cfd0;--m-hl:#ffffffa0;--m-cut:#87566018;--m-shadow:#62424e14}
html[data-artisan=sakura][data-artisan-light=night]{--m-top:#352f37;--m-bot:#29242c;--m-edge:#4b3e48;--m-hl:#ffffff14;--m-cut:#00000040;--m-shadow:#00000033}
html[data-artisan=ronin]{--m-tex:url("img/artisan/paper.svg") 0 0/150px 150px;--m-top:#f2f2ec;--m-bot:#e5e8e5;--m-edge:#cdd7d0;--m-hl:#ffffffa0;--m-cut:#35413f18;--m-shadow:#35413f14}
html[data-artisan=ronin][data-artisan-light=night]{--m-top:#2d373c;--m-bot:#222b31;--m-edge:#3e4e53;--m-hl:#ffffff12;--m-cut:#00000040;--m-shadow:#00000033}
/* «Лесная сказка»: дощечки кнопок и значков — без сучка-«глаза» общей фактуры wood-grain.svg; «Дерево» — резные волокна */
html[data-theme^="artisan-storybook"],html[data-theme^="artisan-storybook"] .app.functional,[data-lx-material^="artisan-storybook"]{--grain:url("img/artisan/storybook-wood.svg") 0 0/400px 180px}
html[data-theme^="artisan-wood"],html[data-theme^="artisan-wood"] .app.functional,[data-lx-material^="artisan-wood"]{--grain:url("img/artisan/carved-grain.svg") 0 0/440px 220px}

/* --- материал: фон, карточки, кнопки (themes.css пакета; селекторы макета .demo-*, .at-*, .pr-* — на настоящих узлах) --- */
html[data-artisan] .app.functional{background:var(--at-page);color:var(--t1)}
html[data-artisan] .functional :is(.screen,.scroll,.pr-home,.pr-home-hero,.pr-home-content,.pr-home-tabs-bar,.achv-page,.achv-profile,.hdr,.cal-hdr,.plain-hdr,.timeline,.day-actions){background:transparent}
html[data-artisan] .functional :is(.hdr,.cal-hdr,.plain-hdr){border-bottom-color:var(--line)}
html[data-artisan] .functional .pr-home-hero:after{display:none}
html[data-artisan] .functional :is(.ps-card,.sgroup,.pr-photo-card,.pr-home-counters>button,.pr-home-counters>.pr-metric-balance,.achv-cover,.pr-skin-tile>span,.wv-panel,.wv-preview-wrap,.wv-detail-surface,
  .evcard,.dosecard,.card,.course,.fold,.prog,.dboard,.quitcard,.donerow,.kind-auto,.daydone,.lx-hero:not(.artisan-hero)){
  background:var(--at-surf)!important;border:1px solid var(--edge)!important;box-shadow:var(--relief)!important;color:var(--t1);-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
html[data-artisan=wood] .functional :is(.evcard,.ps-card,.sgroup,.dosecard,.course,.quitcard){border-width:1.5px!important}
/* карточки по материалам (quiet-ui): дерево — светлая доска с резными волокнами и тонким местным рельефом; сказка — мягкая
   дощечка, у карточки дела один из четырёх тихих рисунков (data-grain — по ключу дела, js/artisan.js grain: при отметке и
   перестановке рисунок остаётся за своим делом); сакура — бумага с мягким светом; путь к горе — прежние бумажные градиенты
   и округлые карточки (без квадратного редизайна) */
html[data-artisan=wood] .functional :is(.evcard,.dosecard,.ps-card,.sgroup,.course,.quitcard){background:var(--m-tex),linear-gradient(140deg,var(--m-top),var(--m-bot))!important;border:1px solid var(--m-edge)!important;border-radius:17px 21px 18px 16px;box-shadow:inset 0 2px 1px var(--m-hl),inset 0 -2px 1px var(--m-cut),0 3px 6px var(--m-shadow)!important}
html[data-artisan=storybook] .functional :is(.evcard,.dosecard,.ps-card,.sgroup,.course,.quitcard){background:var(--m-tex),linear-gradient(145deg,var(--m-top),var(--m-bot))!important;border:1.5px solid var(--m-edge)!important;border-radius:25px 31px 27px 21px;box-shadow:inset 0 3px 0 var(--m-hl),inset 0 -3px 0 var(--m-cut),0 3px 7px var(--m-shadow)!important}
html[data-artisan=storybook] .functional .evcard[data-grain]{background:var(--sb-grain) center/100% 100% no-repeat,linear-gradient(145deg,var(--m-top),var(--m-bot))!important}
html[data-artisan=storybook] .functional .evcard[data-grain="0"]{--sb-grain:var(--sb-0);border-radius:25px 30px 24px 22px}
html[data-artisan=storybook] .functional .evcard[data-grain="1"]{--sb-grain:var(--sb-1);border-radius:30px 23px 28px 22px}
html[data-artisan=storybook] .functional .evcard[data-grain="2"]{--sb-grain:var(--sb-2);border-radius:23px 29px 22px 28px}
html[data-artisan=storybook] .functional .evcard[data-grain="3"]{--sb-grain:var(--sb-3);border-radius:28px 22px 29px 24px}
html[data-artisan=sakura] .functional :is(.evcard,.dosecard,.ps-card,.sgroup){background:linear-gradient(145deg,#ffffff25,transparent 65%),var(--paper),var(--material)!important;border:1px solid color-mix(in srgb,var(--edge) 60%,transparent)!important;border-radius:18px 23px 18px 23px;box-shadow:inset 0 1px 1px #ffffff30,0 4px 10px #62424e0d!important}
html[data-artisan=ronin] .functional :is(.evcard,.dosecard,.ps-card,.sgroup){background:var(--paper),var(--material)!important;border-radius:18px;box-shadow:inset 0 1px 0 #fff7e088,0 3px 9px #35413f14!important}
html[data-artisan=ronin][data-artisan-light=night] .functional :is(.evcard,.dosecard,.ps-card,.sgroup){box-shadow:inset 0 1px 0 #ffffff12,0 3px 9px #0002!important}
html[data-artisan] .functional .pr-home-counters{background:transparent;border:0;box-shadow:none}
html[data-artisan] .functional .pr-home-counters b{color:var(--green-tx)}
/* кнопки — вырезанное дерево или лак; опасные действия сохраняют свой цвет */
html[data-artisan] .functional :is(.pr-home-gear,.pf-back,.btn:not(.danger),.navbtn,.fbar-toggle,.pr-edit-buttons button,.wv-action,.wv-detail-primary,.wv-detail-secondary,.pr-photo-remove,.rv-profile-open,.lx-continue,.at-retry){
  background:var(--grain),var(--button)!important;color:var(--button-ink)!important;border:1px solid var(--edge)!important;box-shadow:var(--relief)!important;-webkit-backdrop-filter:none;backdrop-filter:none;text-shadow:none}
/* кнопка-папка в ряду чипов «Дня»: ряд прокручивается вбок и обрезает всё за своей рамкой — внешняя тень кнопки ложилась
   тёмным прямоугольником, толстый нижний кант темнил низ. Плашка того же материала, рельеф только внутри рамки, углы как у чипов */
html[data-artisan] .functional .zc-list-filter .fbar-toggle{box-shadow:inset 0 1px 0 #fff5,inset 0 -1.5px 0 color-mix(in srgb,var(--edge) 55%,transparent)!important;border-radius:12px}
html[data-artisan][data-artisan-light=night] .functional .zc-list-filter .fbar-toggle{box-shadow:inset 0 1px 0 #ffffff1f,inset 0 -1.5px 0 #0003!important}
html[data-artisan] .functional .lx-continue>span{color:inherit}
html[data-artisan] .functional .btn:disabled{opacity:.55}
html[data-artisan] .functional :is(.pr-person-icon,.srow-ic,.ps-action-icon){background:var(--button)!important;color:var(--button-ink)!important;border:1px solid var(--edge);box-shadow:inset 0 1px 0 #fff3}
/* карточка дела: значок — деревянная плашка, название — цветом текста материала, галочка — углублённое поле */
html[data-artisan] .functional .evcard .evbadge{background:var(--grain),var(--button)!important;color:var(--button-ink)!important;border:1px solid var(--edge)!important;box-shadow:var(--relief)}
html[data-artisan] .functional .evcard .evtext b{color:var(--t1)!important}
html[data-artisan] .functional .evcard :is(.evtext>span,.evtext em,.evtext small){color:var(--t2)}
html[data-artisan] .functional .evcard .icon-btn{background:transparent;border:1px solid color-mix(in srgb,var(--edge) 60%,transparent);color:var(--t2);box-shadow:none}
html[data-artisan] .functional .chk::before{border:1.5px solid var(--edge);border-radius:8px;background:linear-gradient(#0000000d,#ffffff1a);box-shadow:inset 0 2px 3px #0002}
html[data-artisan] .functional .chk.on::before{background:color-mix(in srgb,var(--at-ink) 16%,var(--surface));color:var(--at-ink);border-color:var(--at-ink);box-shadow:none}
html[data-artisan] .functional :is(.tl-time b,.done-t,.donerow em){color:var(--t2)}
html[data-artisan] .functional .donerow b{color:var(--t1)}
html[data-artisan] .functional .done-h{color:var(--t2)}
html[data-artisan] .functional :is(.hdr-date,.cal-title,.sheet-head h2,.pf-head h2){font-family:var(--title)}
/* верх страниц, окна, боковая панель; кнопка страницы темы внизу (на месте панели вкладок) — тем же материалом, что верх страницы */
html[data-artisan] .functional :is(.pf-head,.sheet-head,.pr-theme-save){background:var(--at-surf);border-color:var(--edge);color:var(--t1)}
html[data-artisan] .functional :is(.sheet,.day-drawer){background:var(--at-page);border-top:1px solid var(--edge)}
html[data-artisan] .functional .sheet.pf-page{border-top:0}
html[data-artisan] .functional .dlg{background:var(--at-surf)!important;border:1px solid var(--edge)!important;box-shadow:var(--relief),0 18px 40px #0004!important;color:var(--t1)}
html[data-artisan] .functional :is(.tl-swipe.to-left,.tl-swipe.to-right) .evcard,html[data-artisan] .functional .donerow.snap-moving{background:var(--at-surf),var(--surface)!important}
/* поля ввода и переключатели */
html[data-artisan] .functional :is(input:not([type=checkbox]):not([type=radio]):not([type=range]),textarea,.input):not([class^="zc-"]):not([class*=" zc-"]):not(.dr-search-input){background:var(--surface);border:1px solid var(--edge);color:var(--t1);box-shadow:inset 0 2px 3px #0000000f}
html[data-artisan] .functional :is(input,textarea)::placeholder{color:var(--t2);opacity:.85}
html[data-artisan] .functional :is(button,input,textarea,select):focus-visible{outline:2px solid var(--green-tx);outline-offset:3px}
html[data-artisan] .functional .switch{background:color-mix(in srgb,var(--t2) 38%,transparent)}
html[data-artisan] .functional [aria-checked=true]>.switch{background:var(--grain),var(--button);box-shadow:inset 0 0 0 1px var(--edge)}
/* все элементы в цвет материала (владелец, 23.10.2026): включённые переключатели — дощечкой кнопок «Сохранить», выбранный
   вариант — поднятой дощечкой, как выбранное в сегментах; квадраты-значки — той же плашкой, что значки строк (.srow-ic);
   значки, галочки и ссылки-раскрытия — --at-ink */
html[data-artisan] .functional :is(.sx-toggle[aria-checked=true]>i,.fbar-sw[aria-checked=true] .fbar-knob,.pt-toggle input:checked){background:var(--grain),var(--button);box-shadow:inset 0 0 0 1px var(--edge)}
/* ночью тёмная дощечка почти сливается с выключенным — включённое светится цветом --at-ink (мёд, лак) */
html[data-artisan][data-artisan-light=night] .functional :is([aria-checked=true]>.switch,.sx-toggle[aria-checked=true]>i,.fbar-sw[aria-checked=true] .fbar-knob,.pt-toggle input:checked){background:var(--at-ink);box-shadow:none}
html[data-artisan] .functional :is(.ps-symbol,.sx-hero .sx-illustration>span,.scn-steps>i,.tmock-tab.on .tmock-ic){background:var(--button)!important;color:var(--button-ink)!important;border:1px solid var(--edge);box-shadow:inset 0 1px 0 #fff3}
html[data-artisan] .functional :is(.sx-illustration>span,.scn-steps){color:var(--button-ink)}
html[data-artisan] .functional :is(.sx-choice button[aria-pressed=true],.sx-segment button[aria-pressed=true],.neural-tabs [aria-pressed=true],.sky-segments .sky-opt.on,.cal-viewbtn.on){background:var(--at-surf)!important;color:var(--t1)!important;box-shadow:var(--relief)!important;border-color:var(--edge)}
html[data-artisan] .functional :is(.sx-choice button[aria-pressed=true] em,.sky-set .sky-opt.on b,.sky-set .sky-opt i){color:var(--at-ink)}
html[data-artisan] .functional :is(.tab-assistant:not(.on) .tab-ico,.dr-ic,.pr-explain>summary,.pr-task-progress>summary,.pr-profile-more>summary,.sx-link,.pr-tile-more,.pt-back,.sky-city-change,.snd-play,.cal-top .cal-viewbtn,.fz-cost){color:var(--at-ink)}
html[data-artisan] .functional :is(.addrow,.te-btn.add,.sky-widget-add){background:var(--grain),var(--button)!important;color:var(--button-ink)!important;border:1px solid var(--edge)!important;box-shadow:var(--relief)}
html[data-artisan] .functional .of-scene-label{background:color-mix(in srgb,var(--surface) 90%,transparent);color:var(--at-ink)}
/* полосы вкладок и сегменты: углублённая подложка, выбранное — поднятая дощечка */
html[data-artisan] .functional .pr-home-tabs{background:var(--grain),var(--board);border:1px solid var(--edge);border-radius:17px;box-shadow:inset 0 2px 0 #e7bc8177,inset 0 -4px 0 #29160e99,0 5px 10px #22120933;-webkit-backdrop-filter:none;backdrop-filter:none}
html[data-artisan] .functional .pr-home-tabs button{color:var(--nav-ink)}
html[data-artisan] .functional .pr-home-tabs button[aria-selected=true]{background:var(--grain),var(--board-plate)!important;color:var(--nav-selected-ink)!important;border-color:#e8c99b;box-shadow:inset 0 1px 0 #fff6dc,0 2px 3px #20130e66}
html[data-artisan] .functional :is(.pr-plan-switch,.wg-plan-tabs,.look-seg,.lx-switch-row,.viewseg,.seg){background:var(--bg2);border:1px solid var(--edge);box-shadow:inset 0 2px 3px #0000001a;-webkit-backdrop-filter:none;backdrop-filter:none}
html[data-artisan] .functional :is(.pr-plan-switch button,.look-seg button,.lx-switch-row button,.viewseg button,.seg button){color:var(--t2)}
html[data-artisan] .functional :is(.pr-plan-switch button[aria-selected=true],.look-seg button.on,.lx-switch-row button.on,.viewseg button.on,.seg button.on){background:var(--at-surf)!important;color:var(--t1)!important;box-shadow:var(--relief)!important;border-color:var(--edge)}
/* профиль: имя и приветствие поверх сцены, без общей плашки */
html[data-artisan] .functional .pr-home-identity b{font-family:var(--title);letter-spacing:-.4px}
html[data-artisan] .functional .pr-home-identity>.prof-ava{background:var(--at-surf);border-color:var(--edge);color:var(--t1);box-shadow:var(--relief)}
html[data-artisan] .functional :is(.pr-skin-tile>span>b,.wv-name,.wv-meta){color:var(--t1)}
html[data-artisan] .functional .wv-meta{background:var(--at-surf);border:1px solid var(--edge);-webkit-backdrop-filter:none;backdrop-filter:none}
html[data-artisan] .functional .pr-skin-tile[aria-checked=true]>span{border-color:var(--at-ink)!important;box-shadow:inset 0 0 0 1px var(--at-ink),var(--relief)!important}
html[data-artisan] .functional .pr-skin-tile i{background:var(--at-ink)}
html[data-artisan] .functional .pr-review{color:var(--t2)}
/* листочки на ленте и в профиле (дерево) и ветки сакуры: декор, не перехватывает нажатия и уходит вместе с «Фоновыми изображениями и декором» */
html[data-artisan=wood]:not(.plain) .functional :is(#dayscroll>.timeline,.pr-home-content){background-image:url("img/artisan/forest-leaves.svg");background-size:100% auto;background-position:center top;background-repeat:repeat-y}
html[data-artisan=sakura]:not(.plain) .functional :is(#dayscroll>.timeline,.pr-home-content){background-image:linear-gradient(color-mix(in srgb,var(--bg) 78%,transparent),color-mix(in srgb,var(--bg) 78%,transparent)),url("img/artisan/sakura-ink.svg");background-size:100% auto;background-position:center top;background-repeat:repeat-y}

/* --- сцена дня: фон и Зарок отдельными слоями (assembled.css); дата и листание поверх, блок дня — карточкой на нижнем крае --- */
html[data-artisan] .app.functional .hdr.day-hdr.artisan-day{position:relative;padding:0;margin:0;background:transparent;border:0;box-shadow:none}
html[data-artisan=wood]{--actor-x:50%;--actor-seat:76%;--actor-size:45%;--at-row:0}
html[data-artisan=storybook]{--actor-x:50%;--actor-seat:77%;--actor-size:43%;--at-row:1}
html[data-artisan=sakura]{--actor-x:43%;--actor-seat:78%;--actor-size:43%;--at-row:2}
html[data-artisan=ronin]{--actor-x:52%;--actor-seat:79%;--actor-size:43%;--at-row:3}
html[data-artisan] .at-scene{position:relative;display:block;width:100%;aspect-ratio:1.5;isolation:isolate;overflow:visible;pointer-events:none}
/* верх сцены без светлой полосы (quiet-ui): прежняя маска начиналась с прозрачного — над картиной проступал светлый фон
   страницы; теперь картина начинается сразу и на телефоне уходит под строку состояния (ниже, «сцена под строкой состояния») */
html[data-artisan] .at-scene::before,html[data-artisan] .at-veil{content:"";position:absolute;inset:0;z-index:0;background:var(--at-scene,var(--at-page)) center/cover no-repeat;
  -webkit-mask-image:linear-gradient(to bottom,#000 0,#000 74%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0,#000 74%,transparent 100%)}
html[data-artisan] .at-veil{display:block;font-style:normal}
html[data-artisan] .at-scene::after{content:"";position:absolute;inset:auto 0 -2px;height:45px;z-index:3;pointer-events:none}
html[data-artisan]:is([data-artisan=wood],[data-artisan=storybook]) .at-scene::after{height:75px;background:url("img/artisan/nav-growth.svg") center bottom/100% 100% no-repeat;opacity:.85}
/* «Сакура»: объёмная ветка с затенёнными лепестками (sakura-depth.svg) у правого края сцены — перед картиной, но позади
   Зарока (слой 1, Зарок — 2) и под блоком дня; нажатий не перехватывает; ночью тише. Статично, без анимации */
html[data-artisan=sakura] .at-scene::after{inset:auto 0 24px auto;width:min(52%,215px);height:auto;aspect-ratio:300/110;z-index:1;background:url("img/artisan/sakura-depth.svg") right bottom/100% 100% no-repeat;opacity:.95;filter:drop-shadow(0 4px 3px #75485226)}
html[data-artisan][data-artisan-light=night] .at-scene::after{filter:brightness(.65)}
html[data-artisan=sakura][data-artisan-light=night] .at-scene::after{filter:brightness(.72) saturate(.7) drop-shadow(0 5px 3px #0005)}
html[data-artisan] .at-actor,html[data-artisan] .at-actor-was{position:absolute;left:var(--actor-x);top:var(--actor-seat);width:var(--actor-size);aspect-ratio:1;transform:translate(-50%,-80%);z-index:2;
  background:var(--at-actor) no-repeat;background-size:400% 400%;background-position:calc(var(--at-col,0) * 100% / 3) calc(var(--at-row,0) * 100% / 3);filter:drop-shadow(0 2px 1px #20301e33)}
html[data-artisan][data-artisan-light=night] :is(.at-actor,.at-actor-was){filter:brightness(.72) saturate(.82) drop-shadow(0 2px 1px #0005)}
html[data-artisan]:not([data-artisan-actor=ready]) .at-actor{display:none}
html[data-artisan] .at-fallback{position:absolute;left:var(--actor-x);top:var(--actor-seat);width:calc(var(--actor-size) * .82);height:auto;transform:translate(-50%,-88%);z-index:2;object-fit:contain}
html[data-artisan][data-artisan-actor=ready] .at-fallback{display:none}
/* атлас выбранной формы качается (js/artisan.js, признак wait; владелец 23.10): на сцене пусто, на выбранной карточке облика вместо галочки — значок загрузки */
html[data-artisan][data-artisan-actor=wait] .at-fallback{visibility:hidden}
html[data-artisan][data-artisan-actor=wait] .pr-skin-tile[aria-checked=true]>span>i>svg{visibility:hidden}
html[data-artisan][data-artisan-actor=wait] .pr-skin-tile[aria-checked=true]>span>i::before{content:"";position:absolute;inset:4px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:at-wait-spin .8s linear infinite}
@keyframes at-wait-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){html[data-artisan][data-artisan-actor=wait] .pr-skin-tile[aria-checked=true]>span>i::before{animation-duration:2.4s}}
html[data-artisan] .at-shade{position:absolute;left:var(--actor-x);top:var(--actor-seat);width:21%;height:5px;z-index:1;background:#15170c3b;border-radius:50%;transform:translate(-50%,-50%);filter:blur(2px)}
/* дата и листание — поверх неба сцены */
html[data-artisan] .artisan-day.has-scene>.hdr-row{position:absolute;top:12px;left:13px;right:13px;z-index:4;align-items:flex-start;gap:7px}
/* плашка даты, пока картинка материала не готова (и без сцены): спокойная бумажная подложка без тяжёлой рамки */
html[data-artisan] .artisan-day .hdr-main{flex:0 1 auto;min-width:0;margin-right:auto;padding:8px 12px;border:1px solid color-mix(in srgb,var(--edge) 55%,transparent);border-radius:13px;background:var(--paper),var(--material);box-shadow:0 2px 6px #2a1c1814;color:var(--t1)}
html[data-artisan] .app.functional .artisan-day .hdr-date{font:700 21px/1.2 var(--title);letter-spacing:-.4px;color:var(--t1)}
html[data-artisan] .app.functional .artisan-day .hdr-sub{font-size:11.5px;color:var(--t2);margin-top:1px}
html[data-artisan] .app.functional .artisan-day .navbtn{width:40px;height:40px;min-height:0;border-radius:13px;flex:none}
/* кнопки листания над сценой и в полоске — тихие плашки материала: без насыщенной заливки, бликов и внешней тени */
html[data-artisan] .app.functional :is(.artisan-day,.day-strip) .navbtn{background:var(--m-tex),linear-gradient(145deg,var(--m-top),var(--m-bot))!important;color:var(--t1)!important;border:1px solid var(--m-edge)!important;box-shadow:inset 0 1px 1px var(--m-hl),inset 0 -2px 1px var(--m-cut)!important}
/* плашка «Сегодня» — картинка своего материала (quiet-ui; js/artisan.js signSync ставит html[data-artisan-sign], когда
   файл декодирован): отдельный слой позади настоящего текста шапки (дата, язык и переход к дате — прежние узлы). Пропорции
   картинки естественные (aspect-ratio), края — щепки, волокна бумаги, отогнутый угол, тень — нарисованы в ней и ничем не
   обрезаются; прямоугольной заливки, рамки и старого полигона нет. Ночью темнеет только картинка, текст светлый. */
html[data-artisan=wood]{--at-sign:url("img/artisan/today-carved.webp");--at-sign-ar:768/270;--at-sign-ink:#493321}
html[data-artisan=storybook]{--at-sign:url("img/artisan/today-storybook.webp");--at-sign-ar:768/281;--at-sign-ink:#45331d}
html[data-artisan=sakura]{--at-sign:url("img/artisan/today-sakura.webp");--at-sign-ar:768/282;--at-sign-ink:#59434b}
html[data-artisan=ronin]{--at-sign:url("img/artisan/today-ronin.webp");--at-sign-ar:768/285;--at-sign-ink:#384342}
html[data-artisan][data-artisan-light=night]{--at-sign-ink:#f4e7cf}
html:is([data-artisan=sakura],[data-artisan=ronin])[data-artisan-light=night]{--at-sign-ink:#f4e7ec}
html[data-artisan][data-artisan-sign] .app.functional .artisan-day .hdr-main{position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:center;box-sizing:border-box;min-width:166px;aspect-ratio:var(--at-sign-ar);margin-top:-3px;padding:3px 21px 6px;align-items:center;text-align:center;border:0;border-radius:0;background:none;box-shadow:none;clip-path:none;filter:none;overflow:visible}
html[data-artisan][data-artisan-sign] .app.functional .artisan-day .hdr-main::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--at-sign) center/100% 100% no-repeat;filter:drop-shadow(0 3px 2px #40261526)}
html[data-artisan][data-artisan-sign][data-artisan-light=night] .app.functional .artisan-day .hdr-main::before{filter:brightness(.48) saturate(.65) drop-shadow(0 3px 2px #0005)}
html:is([data-artisan=sakura],[data-artisan=ronin])[data-artisan-sign][data-artisan-light=night] .app.functional .artisan-day .hdr-main::before{filter:brightness(.42) saturate(.65) drop-shadow(0 3px 2px #0005)}
html[data-artisan][data-artisan-sign] .app.functional .artisan-day .hdr-main :is(.hdr-date,.hdr-sub){color:var(--at-sign-ink)}
html[data-artisan][data-artisan-sign] .app.functional .artisan-day .hdr-main .hdr-sub{opacity:.82}
/* листок «Сказки» — слева, отогнутый угол «Сакуры» — справа: тексту место в чистой середине */
/* размер — как у прежней плашки (владелец 23.10.2026: высота около 60 px, картинка в своих пропорциях); прозрачный край
   картинки — над рядом (margin-top), видимый верх доски и кнопки листания стоят там же, где прежняя плашка */
html[data-artisan][data-artisan-sign] .app.functional .artisan-day .hdr-main .hdr-date{font-size:19px;line-height:1.15}
html[data-artisan][data-artisan-sign] .app.functional .artisan-day .hdr-main .hdr-sub{font-size:11px}
html[data-artisan=storybook][data-artisan-sign] .app.functional .artisan-day .hdr-main{padding-left:25px;padding-right:17px}
html[data-artisan=sakura][data-artisan-sign] .app.functional .artisan-day .hdr-main{padding-left:17px;padding-right:25px}
@media(max-width:360px){html[data-artisan][data-artisan-sign] .app.functional .artisan-day .hdr-main{min-width:156px;padding-inline:19px}}
/* строка неба (восход, луна) и таймер под сценой */
html[data-artisan] .artisan-day>:is(.sky-line,.day-tools,.metrics){position:relative;z-index:3;margin:6px 13px 0}
/* блок дня — карточка материала на нижнем крае сцены (.at-challenge макета) */
html[data-artisan] .app.functional .artisan-day .lx-hero.artisan-hero{position:relative;z-index:3;margin:8px 13px 14px;padding:13px 16px 12px;min-height:0;overflow:visible;border:1px solid var(--edge);border-radius:19px;background:var(--at-surf);box-shadow:var(--relief);color:var(--t1)}
html[data-artisan] .app.functional .artisan-day.has-scene>.hdr-row+.lx-hero.artisan-hero{margin-top:-27px}
/* блок дня по материалам (quiet-ui): дерево — доска с резными волокнами и резной лозой по нижнему краю; сказка — мягкая
   дощечка с веточкой у правого нижнего угла; сакура — бумага; путь к горе — прежняя округлая бумажная карточка */
html[data-artisan=wood] .app.functional .artisan-day .lx-hero.artisan-hero{background:url("img/artisan/carved-vine.svg") center bottom/100% 19px no-repeat,var(--m-tex),linear-gradient(140deg,var(--m-top),var(--m-bot));border-color:var(--m-edge);border-radius:17px 21px 18px 16px;box-shadow:inset 0 2px 1px var(--m-hl),inset 0 -2px 1px var(--m-cut),0 3px 6px var(--m-shadow);padding-bottom:20px}
html[data-artisan=storybook] .app.functional .artisan-day .lx-hero.artisan-hero{background:var(--m-tex),linear-gradient(145deg,var(--m-top),var(--m-bot));border:1.5px solid var(--m-edge);border-radius:25px 31px 27px 21px;box-shadow:inset 0 3px 0 var(--m-hl),inset 0 -3px 0 var(--m-cut),0 3px 7px var(--m-shadow)}
html[data-artisan=storybook]:not(.plain) .app.functional .artisan-day .lx-hero.artisan-hero::after{content:"";position:absolute;right:6px;bottom:-7px;width:58px;height:28px;background:url("img/artisan/storybook-sprigs.svg") center/100% 100% no-repeat;pointer-events:none}
html[data-artisan=storybook][data-artisan-light=night] .app.functional .artisan-day .lx-hero.artisan-hero::after{filter:brightness(.7) saturate(.65)}
html[data-artisan=sakura] .app.functional .artisan-day .lx-hero.artisan-hero{background:linear-gradient(145deg,#ffffff25,transparent 65%),var(--paper),var(--material);border-color:color-mix(in srgb,var(--edge) 60%,transparent);border-radius:18px 23px 18px 23px;box-shadow:inset 0 1px 1px #ffffff30,0 4px 10px #62424e0d}
html[data-artisan=ronin] .app.functional .artisan-day .lx-hero.artisan-hero{border-radius:19px;box-shadow:inset 0 1px 0 #fff7e088,0 3px 9px #35413f14}
html[data-artisan=ronin][data-artisan-light=night] .app.functional .artisan-day .lx-hero.artisan-hero{box-shadow:inset 0 1px 0 #ffffff12,0 3px 9px #0002}
html[data-artisan] .app.functional .artisan-hero::before{content:none}
html[data-artisan] .app.functional .artisan-hero .lx-hero-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;align-items:baseline;pointer-events:auto}
html[data-artisan] .app.functional .artisan-hero .lx-hero-copy>:not(h2):not(.lx-score){grid-column:1/-1}
html[data-artisan] .app.functional .artisan-hero .lx-eyebrow{font:700 10.5px/1.3 var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--t2)}
html[data-artisan] .app.functional .artisan-hero h2{font:700 16px/1.35 var(--title);letter-spacing:-.1px;margin:3px 0 0;max-width:none;color:var(--t1)}
html[data-artisan] .app.functional .artisan-hero .lx-score{display:flex;gap:2px;letter-spacing:0;justify-self:end;white-space:nowrap}
html[data-artisan] .app.functional .artisan-hero .lx-score strong{font:700 16px/1.3 var(--ui);background:none;-webkit-text-fill-color:currentColor;color:var(--green-tx)}
html[data-artisan] .app.functional .artisan-hero .lx-score>span{font:600 12px/1.3 var(--ui);letter-spacing:0;color:var(--t2)}
html[data-artisan] .app.functional .artisan-hero .lx-next{font-size:11.5px;margin:4px 0 0;max-width:100%;color:var(--t2)}
html[data-artisan] .app.functional .artisan-hero .lx-hero-foot{margin-top:9px}
html[data-artisan] .app.functional .artisan-hero .lx-meter{height:7px;border-radius:8px;background:var(--bg2);box-shadow:inset 0 2px 3px #0003}
html[data-artisan] .app.functional .artisan-hero .lx-meter>i{background:var(--at-track);box-shadow:none}
html[data-artisan] .app.functional .artisan-hero .lx-continue{margin-top:10px;min-height:40px;border-radius:12px}
/* без сцены («Фоновые изображения и декор» выключены): обычный Зарок в блоке, дата — над ним */
html[data-artisan] .app.functional .artisan-day:not(.has-scene)>.hdr-row{padding:12px 13px 0}
/* полоска с датой при прокрутке (js/materials.js DAY_HEAD = pin-strip) — как у «Ханами» */
html[data-artisan] .day-strip{position:sticky;top:0;z-index:7;display:flex;align-items:center;gap:7px;height:46px;margin-bottom:-46px;padding:0 14px;background:var(--at-surf);border-bottom:1px solid var(--edge);visibility:hidden;pointer-events:none}
html[data-artisan] .day-strip.on{visibility:visible;pointer-events:auto}
html[data-artisan] .day-strip b{font:700 15px/1.2 var(--title);color:var(--t1);white-space:nowrap}
html[data-artisan] .day-strip .day-strip-date{font:400 13px/1.2 var(--ui);color:var(--t2);margin-right:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;padding:8px 4px}
html[data-artisan] .app.functional .day-strip .navbtn{width:40px;height:40px;min-height:0;font-size:18px;flex:none}
/* сцена под строкой состояния (quiet-ui, владелец 22.10.2026): на телефоне светлой полосы над картиной больше нет — «День» с
   открытой сценой начинается от самого верха экрана, картина заходит под системные часы и значки, дата и листание
   стоят сразу под строкой (+5 px). Значки строки — светлые, пока под ними сцена (js/artisan.js topDark → js/app.js barPaint →
   AppInstallPlugin.bars statusDark), лёгкая тень сверху держит их читаемыми. Полоска с датой при прокрутке встаёт под строку. */
@media (max-width:599.98px){
html[data-artisan]:not(.plain):not(.desk) .app.functional:has(> #root > .screen:first-child > #dayscroll:first-child > .artisan-day.has-scene){padding-top:0}
html[data-artisan]:not(.plain):not(.desk) .app.functional #dayscroll > .artisan-day.has-scene > .hdr-row{top:calc(5px + var(--safe-top))}
html[data-artisan]:not(.plain):not(.desk) .app.functional #dayscroll > .artisan-day.has-scene::before{content:"";position:absolute;left:0;right:0;top:0;height:calc(var(--safe-top) * 1.6);z-index:3;pointer-events:none;background:linear-gradient(#00000038,transparent)}
html[data-artisan]:not(.plain):not(.desk) .app.functional #dayscroll:has(> .artisan-day.has-scene) > .day-strip{box-sizing:border-box;height:calc(46px + var(--safe-top));margin-bottom:calc(-46px - var(--safe-top));padding-top:var(--safe-top)}
}
@media(max-width:360px){html[data-artisan] .artisan-day.has-scene>.hdr-row{left:10px;right:10px}html[data-artisan] .app.functional .artisan-day .hdr-date{font-size:19px}html[data-artisan] .app.functional .artisan-day .lx-hero.artisan-hero{margin-inline:10px}}
html.text-big[data-artisan] .app.functional .artisan-hero .lx-hero-copy{grid-template-columns:minmax(0,1fr)}
html.text-big[data-artisan] .app.functional .artisan-hero .lx-score{justify-self:start}

/* --- сцена профиля: имя и шестерёнка поверх неба, без плашки; сцена проявляется из фона --- */
html[data-artisan] .functional .pr-home-hero:has(.at-scene){position:relative;padding-top:14px;overflow:visible}
html[data-artisan] .functional .pr-home-hero:has(.at-scene)>.pr-home-top{position:absolute;inset:12px 12px auto;z-index:4;padding:9px 10px;border:0;border-radius:0;background:none;box-shadow:none}
/* правка владельца (23.10.2026): сцена до самых краёв экрана — поля шапки 14–18 px, сцена шире на 18 с каждой стороны (лишнее срежет overflow-x шапки) */
html[data-artisan] .functional .pr-home-scene:has(.at-scene){height:auto!important;margin:-14px -18px -38px;overflow:visible;position:relative;background:none}
html[data-artisan] .functional .pr-home-scene:has(.at-scene)>img{display:none}
html[data-artisan] .at-scene.at-scene-profile{aspect-ratio:1.18}
html[data-artisan] .at-scene.at-scene-profile::before,html[data-artisan] .at-scene-profile .at-veil{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#0003 55px,#000 120px,#000 75%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#0003 55px,#000 120px,#000 75%,transparent 100%)}
html[data-artisan] .functional .pr-home-hero:has(.at-scene) .pr-home-counters{position:relative;z-index:3}
html[data-artisan] .functional .pr-home-hero:has(.at-scene) .pr-home-identity :is(b,small){color:var(--t1);text-shadow:0 1px 2px color-mix(in srgb,var(--bg) 70%,transparent)}

/* --- нижняя панель (спокойная отделка quiet-ui, владелец 22.10.2026): сплошное непрозрачное основание своего материала во всю
   ширину до самого низа экрана вместе с полосой жестов — из ленты ничего не просвечивает ни под панелью, ни по бокам, ни снизу.
   Насыщенной тёмной доски, рамки, бликов и тяжёлой тени больше нет: дерево — светлая доска с резными волокнами и резной лозой
   по верхнему краю, сказка — своя дощечка (storybook-nav.svg, не фактура карточки) с веточками по углам, сакура и путь к
   горе — бумага цвета фона. Выбранная вкладка — значок, подпись и спокойное углубление; точек под вкладками нет.
   Цвет основания читает нижняя системная полоса (js/app.js barSample — background-color). --- */
html[data-artisan] .functional .tabbar{--nav-ink:var(--t2);--nav-selected-ink:var(--t1);position:relative;isolation:isolate;background:var(--m-tex),linear-gradient(var(--m-top),var(--m-bot)) var(--m-bot)!important;border:0;border-top:1px solid var(--m-edge);border-radius:0;margin:0;box-sizing:border-box;box-shadow:inset 0 1px 0 var(--m-hl),0 -6px 18px var(--m-shadow);-webkit-backdrop-filter:none;backdrop-filter:none}
html[data-artisan=wood] .functional .tabbar{background:url("img/artisan/carved-vine.svg") center 0/100% 14px no-repeat,var(--m-tex),linear-gradient(var(--m-top),var(--m-bot)) var(--m-bot)!important}
html[data-artisan=storybook] .functional .tabbar{background:url("img/artisan/storybook-nav.svg") center/100% 100% no-repeat,linear-gradient(var(--m-top),var(--m-bot)) var(--m-bot)!important;border-top-width:1.5px}
html:is([data-artisan=sakura],[data-artisan=ronin]) .functional .tabbar{background:var(--m-tex),linear-gradient(var(--m-bot),var(--m-bot)) var(--m-bot)!important}
html.plain[data-artisan] .functional .tabbar{background:linear-gradient(var(--m-top),var(--m-bot)) var(--m-bot)!important}
html:is([data-artisan=sakura],[data-artisan=ronin]) .functional .tabbar{padding:9px 10px calc(9px + var(--safe-bottom))}
html[data-artisan] .functional .tab{color:var(--nav-ink);border:1px solid transparent;border-radius:13px;min-height:48px;justify-content:center}
html[data-artisan] .functional .tab.on{background:var(--m-cut);color:var(--nav-selected-ink);border-color:transparent;box-shadow:inset 0 1px 3px var(--m-cut),0 1px 0 var(--m-hl)}
html[data-artisan] .functional :is(.tab.on .tab-ico,.tab:active .tab-ico){background:none}
html[data-artisan] .functional .tab::after{content:none;display:none}
/* дерево и сказка: панель лежит поверх ленты (как парящая панель Glass), последний список получает запас снизу и выходит
   над ней целиком; у сказки веточки выходят за верхний край у углов (декор, нажатий не перехватывает) */
html:is([data-artisan=wood],[data-artisan=storybook]) .functional .tabbar{overflow:visible;height:calc(82px + var(--safe-bottom));padding:14px 13px calc(16px + var(--safe-bottom));align-items:stretch}
html:is([data-artisan=wood],[data-artisan=storybook]) .functional .tab{position:relative;z-index:1;border-radius:13px 15px 12px 14px}
html[data-artisan=storybook]:not(.plain) .functional .tabbar::before{content:"";position:absolute;inset:-20px -2px auto;height:43px;z-index:0;pointer-events:none;background:url("img/artisan/storybook-sprigs.svg") center/100% 100% no-repeat}
html[data-artisan=storybook][data-artisan-light=night] .functional .tabbar::before{filter:brightness(.7) saturate(.65)}
html[data-artisan=storybook] .functional .tab.on{border-radius:19px 15px 20px 15px}
@media (max-width:599.98px){
html:is([data-artisan=wood],[data-artisan=storybook]):not(.desk) .functional{--at-tb:calc(82px + var(--safe-bottom))}
html:is([data-artisan=wood],[data-artisan=storybook]):not(.desk) .functional #root > .tabbar{z-index:6;margin-top:calc(-1 * var(--at-tb))}
html:is([data-artisan=wood],[data-artisan=storybook]):not(.desk):not(.kb-open):not(.form-screen) .functional #root:has(> .tabbar) > .screen{padding-bottom:var(--at-tb)}
html:is([data-artisan=wood],[data-artisan=storybook]):not(.desk):not(.kb-open):not(.form-screen) .functional #root:has(> .tabbar) > .screen:has(> .scroll:last-child){padding-bottom:0}
html:is([data-artisan=wood],[data-artisan=storybook]):not(.desk):not(.kb-open):not(.form-screen) .functional #root:has(> .tabbar) > .screen > .scroll:last-child{margin-bottom:0;padding-bottom:calc(var(--at-tb) + 30px)!important;scroll-padding-bottom:calc(var(--at-tb) + 30px)}
}
/* страница настроек под доской: запас --pf-float (вся высота основания) задаёт js/app.js pagePlace (как у Glass); последняя строка
   встаёт над основанием с тем же зазором, что и в ленте (листва и тень над основанием её не касаются) */
html:is([data-artisan=wood],[data-artisan=storybook]) .functional #overlay .pf-page{padding-bottom:var(--pf-float,0px)}
html:is([data-artisan=wood],[data-artisan=storybook]) .functional #overlay .pf-page:has(> .sheet-body:last-child){padding-bottom:0}
html:is([data-artisan=wood],[data-artisan=storybook]) .functional #overlay .pf-page > .sheet-body:last-child{padding-bottom:calc(30px + var(--pf-float,0px))}
html:is([data-artisan=wood],[data-artisan=storybook]) .functional #overlay .pf-under:has(> .pf-under-body:last-child){padding-bottom:0}
html:is([data-artisan=wood],[data-artisan=storybook]) .functional #overlay .pf-under > .pf-under-body:last-child{padding-bottom:calc(30px + var(--pf-float,0px))}

:is(.lx-theme-cell,.pr-theme-offer)[data-lx-material^="artisan-"] :is(.lx-theme-cta,.lx-pick-btn,.ad-watch){background:var(--grain),var(--button);color:var(--button-ink);border:1px solid var(--edge);box-shadow:var(--relief)}
:is(.lx-theme-cell,.pr-theme-offer)[data-lx-material^="artisan-"] :is(.theme-time,.theme-price){background:var(--paper),var(--material);color:var(--t1);border-color:var(--edge)}
:is(.pr-theme-sample[data-lx-material^="artisan-"],.pr-theme-night[data-lx-material^="artisan-"]>.pr-theme-sample){background:var(--at-pv) center/cover no-repeat!important;color:var(--t1)!important}
:is(.pr-theme-sample[data-lx-material^="artisan-"],.pr-theme-night[data-lx-material^="artisan-"]>.pr-theme-sample) i{display:none}
:is(.pr-theme-sample[data-lx-material^="artisan-"],.pr-theme-night[data-lx-material^="artisan-"]>.pr-theme-sample)>b{background:var(--paper),var(--material);color:var(--t1);border:1px solid var(--edge);box-shadow:var(--relief);font-family:var(--title)}
:is(.pr-theme-sample[data-lx-material^="artisan-"],.pr-theme-night[data-lx-material^="artisan-"]>.pr-theme-sample)>em{background:var(--paper),var(--material);color:var(--green-tx);border-color:var(--edge)}
/* Профиль → «Темы» (сборка 95, владелец 21.10): кнопка «Открыть» / «Продлить» — резная плашка своего материала с плотным фоном
   (правило pets.css .lx-theme-cell … .lx-theme-cta перебивало её прозрачным --lx-button); цена — на бумаге; под названием и кнопкой —
   мягкий градиент снизу карточки, чтобы текст читался на любой картинке (контраст — tests/theme-cards-ui.cjs) */
.pr-theme-card .pr-theme-offer.lx-theme-cell[data-lx-material^="artisan-"] .ad-offer-col .ad-watch.lx-theme-cta{background:var(--grain),var(--button);color:var(--button-ink);border:1px solid var(--edge);box-shadow:var(--relief),0 3px 10px #0000002e;font-weight:700}
.pr-theme-card .pr-theme-offer.lx-theme-cell[data-lx-material^="artisan-"] :is(.theme-time,.theme-price){background:var(--paper),var(--surface);color:var(--t1);border:1px solid var(--edge);box-shadow:0 2px 6px #00000026}
.pr-theme-card:has(.ad-offer) :is(.pr-theme-sample[data-lx-material^="artisan-"],.pr-theme-night[data-lx-material^="artisan-"]>.pr-theme-sample)::after{content:"";position:absolute;left:0;right:0;bottom:0;height:60%;background:linear-gradient(to bottom,transparent,color-mix(in srgb,var(--surface) 70%,transparent) 45%,color-mix(in srgb,var(--surface) 94%,transparent));pointer-events:none}
.pr-theme-card:has(.ad-offer) :is(.pr-theme-sample[data-lx-material^="artisan-"],.pr-theme-night[data-lx-material^="artisan-"]>.pr-theme-sample)>b{z-index:1;right:98px;font-weight:700}
/* состояние докачки на листе темы (js/artisan.js statusHtml) */
.at-pack{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 4px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--fill-2,var(--fill));color:var(--t1);font:500 13px/1.45 var(--ui)}
.at-pack>span{flex:1;min-width:150px}
.at-pack .at-retry{min-height:36px;padding:6px 14px}

/* --- выполнение дела: один холст частиц (js/material-motion.js) --- */
.at-dust{position:absolute;z-index:37;pointer-events:none;contain:strict}

/* --- доступность и запасные режимы --- */
html.plain[data-artisan] .app.functional{--grain:none;--paper:none;--m-tex:none}
@media(prefers-reduced-motion:reduce){
  html[data-artisan] .functional *,html[data-artisan] .functional *::before{transition:none!important;animation:none!important}
  html[data-artisan] #root>.screen.anim{animation:none!important}
}

/* --- нижняя панель: «Туман» в материалах (пакет ChatGPT out/v5/nav-lab, сборка 96; слой и жест — js/nav-fx.js, общие
   правила — functional.css). Дерево — тёплый янтарный блик по волокнам, сказка — мягкий лесной свет, сакура — розоватый
   блик, путь к горе — приглушённое золото; при удержании выбранный значок слегка вдавливается. Опилок нет: они — для
   выполнения дела (js/material-motion.js), не для смены раздела. --- */
html[data-artisan][data-nav-fx] #app.functional .tabbar .tab:not(.on){color:var(--nav-ink)}
/* панель теперь светлая днём (quiet-ui): свет выбранного раздела — тихое углубление тона материала, подпись — цветом текста */
html[data-artisan][data-nav-fx=fog] #app.functional .tabbar{--nav-active-ink:var(--t1);--nav-fog-color:#b98d5c}
html[data-artisan=wood][data-nav-fx=fog] #app.functional .tabbar>.nav-fluid{background:radial-gradient(closest-side ellipse at 50% 50%,#a0744440 0%,#a0744420 50%,transparent 100%)}
html[data-artisan=wood][data-nav-fx=fog] #app.functional .tabbar>.nav-fluid::after{content:"";position:absolute;inset:10px 7px;background:repeating-linear-gradient(4deg,transparent 0 6px,#7653341a 7px,transparent 8px 12px);-webkit-mask-image:radial-gradient(closest-side ellipse,#000 0%,transparent 100%);mask-image:radial-gradient(closest-side ellipse,#000 0%,transparent 100%)}
html[data-artisan=storybook][data-nav-fx=fog] #app.functional .tabbar{--nav-fog-color:#a9bf7c}
html[data-artisan=storybook][data-nav-fx=fog] #app.functional .tabbar>.nav-fluid{background:radial-gradient(closest-side ellipse,#94ad6a40,transparent 100%)}
html[data-artisan=sakura][data-nav-fx=fog] #app.functional .tabbar{--nav-fog-color:#d7a3ad}
html[data-artisan=sakura][data-nav-fx=fog] #app.functional .tabbar>.nav-fluid{background:radial-gradient(closest-side ellipse,#c98d9a38,transparent 100%)}
html[data-artisan=ronin][data-nav-fx=fog] #app.functional .tabbar{--nav-fog-color:#9fb0a8}
html[data-artisan=ronin][data-nav-fx=fog] #app.functional .tabbar>.nav-fluid{background:radial-gradient(closest-side ellipse,#7f948a38,transparent 100%)}
/* ночью основание тёмное — свет снова тёплый и светлый */
html[data-artisan][data-artisan-light=night][data-nav-fx=fog] #app.functional .tabbar>.nav-fluid{background:radial-gradient(closest-side ellipse,#e9d2a62e,transparent 100%)}
html[data-artisan][data-artisan-light=night][data-nav-fx=fog] #app.functional .tabbar>.nav-fluid::after{content:none}
html[data-artisan][data-nav-fx=fog] #app.functional .tabbar .tab-ico{transition:transform .12s ease}
html[data-artisan][data-nav-fx=fog] #app.functional .tabbar.is-pressing .tab.on .tab-ico{transform:translateY(1px)}
@media(prefers-reduced-motion:reduce){html[data-artisan][data-nav-fx=fog] #app.functional .tabbar.is-pressing .tab.on .tab-ico{transform:none}}


/* ---- tablet.css ---- */
/* ============================================================
   tablet.css — планшеты, раскрытые складные, широкие окна (сборка 85)

   Подключается последним из стилей (после тем). Всё здесь — только для окна
   шире 600 px и только для рабочего вида (.app.functional): телефон, знакомство
   и «С возвращением» остаются как были. Классы окна считаются по ширине окна,
   а не устройства: так раскладка работает и в разделённом экране, и при
   складывании и раскрытии (это просто смена размера, состояние не теряется).

   S (от 600 px): вместо карточки 430 px — окно целиком, колонка содержимого до
   720 px по центру с полями; нижняя панель — по центру; шторки — по центру
   шириной до 640 px; окна подтверждения шире; сетки — больше колонок; шрифт и
   кнопки панели чуть крупнее.

   M (от 1000 px по ширине и 560 по высоте — то же условие, что в js/tablet.js):
   «День» в две колонки — дела слева, месяц и неделя справа (вторую колонку
   рисует js/tablet.js); шторка встаёт панелью справа на всю высоту, а список
   отъезжает влево и остаётся виден: дело или настройка открываются рядом.

   Складные: поза «книжка» (сгиб вертикально, horizontal-viewport-segments: 2) —
   содержимое в левой половине, шторка и вторая колонка в правой, на сгибе ничего.
   Поза «стол» (сгиб горизонтально) — шторка занимает нижнюю половину.
   Цвета только из переменных тем: светлые, тёмные, материалы Plus и простой вид
   работают сами.
   ============================================================ */

/* ---------- S: окно от 600 px ---------- */
@media (min-width: 600px) {
  #app.functional {
    --tb-gutter: clamp(16px, 4vw, 40px);
    --tb-col: 720px;
    width: 100vw; height: 100dvh; max-width: none;
    border-radius: 0; box-shadow: none;
    padding-top: var(--safe-top);
    background: var(--bg);
  }
  /* rem-размеры (большая часть новых стилей) — на шаг крупнее */
  html:has(> body > #app.functional) { font-size: 17px; }

  /* колонка содержимого */
  #app.functional #root > .screen {
    width: 100%; max-width: min(var(--tb-col), calc(100% - 2 * var(--tb-gutter)));
    margin-left: auto; margin-right: auto;
  }
  /* страница соседнего дня при листании — там же, где колонка */
  #app.functional #root > .screen.day-pane {
    left: 0; right: 0; margin-left: auto; margin-right: auto;
    max-width: min(var(--tb-col), calc(100% - 2 * var(--tb-gutter)));
  }

  /* нижняя панель: во всю ширину, вкладки — группой по центру; кнопки чуть крупнее */
  #app.functional .tabbar,
  #app.functional .selbar {
    padding-left: max(12px, calc((100% - 620px) / 2));
    padding-right: max(12px, calc((100% - 620px) / 2));
  }
  #app.functional .tab-ico { width: 46px; height: 32px; border-radius: 12px; }
  #app.functional .tab-ico svg { width: 23px; height: 23px; }
  #app.functional .tab-lb { font-size: 11px; }
  #app.functional .navbtn { min-width: 44px; min-height: 44px; }

  /* шторки — по центру, шириной до 640 px */
  #app.functional #overlay > .sheet {
    left: 0; right: 0; margin-left: auto; margin-right: auto;
    max-width: min(640px, calc(100% - 2 * var(--tb-gutter)));
  }
  /* окна подтверждения и выбор даты */
  #app.functional .dlg { max-width: 400px; }
  #app.functional .pick { max-width: 480px; border-radius: 22px 22px 0 0; }
  #app.functional .toast { max-width: min(80%, 480px); }

  /* сетки: больше колонок */
  #app.functional .bg-grid,#app.functional .appicon-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #app.functional .lx-theme-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #app.functional .wg-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #app.functional .cal-year { grid-template-columns: repeat(4, 1fr); }
  #app.functional .screen .zork-forms { grid-template-columns: repeat(7, minmax(0, 1fr)); }
}

/* шире 900 px — витрина виджетов на самом экране (не в шторке) в четыре колонки */
@media (min-width: 900px) {
  #app.functional .screen .wg-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ---------- M: широкое окно ---------- */
@media (min-width: 1000px) and (min-height: 560px) {
  #app.functional {
    --tb-dock: clamp(400px, 38vw, 520px);
    --tb-aside: 340px;
    --tb-gap: 28px;
    --tb-c1: min(680px, calc(100vw - var(--tb-aside) - var(--tb-gap) - 2 * var(--tb-gutter)));
  }

  /* «День» в две колонки: дела слева, месяц и неделя справа */
  #app.functional #root:has(> .tb-aside) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) var(--tb-c1) var(--tb-gap) var(--tb-aside) minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr) auto;
  }
  #app.functional #root:has(> .tb-aside) > .screen {
    grid-column: 2; grid-row: 1; max-width: none; width: auto; margin: 0; min-width: 0;
  }
  #app.functional #root:has(> .tb-aside) > .screen.day-pane {
    left: calc((100% - var(--tb-c1) - var(--tb-gap) - var(--tb-aside)) / 2); right: auto; width: var(--tb-c1); margin: 0;
  }
  #app.functional #root:has(> .tb-aside) > .tb-aside { grid-column: 4; grid-row: 1; display: flex; }
  #app.functional #root:has(> .tb-aside) > :is(.tabbar, .selbar) { grid-column: 1 / -1; grid-row: 2; }

  /* шторка — панелью справа на всю высоту; список отъезжает влево и остаётся виден */
  #app.functional #overlay > .sheet {
    top: 0; bottom: 0; left: auto; right: 0; margin: 0;
    width: var(--tb-dock); max-width: none; max-height: none;
    border-radius: 24px 0 0 24px;
    padding-top: var(--safe-top);
    box-shadow: -14px 0 50px -18px rgba(0, 0, 0, .35);
    transform: translateX(100%);
  }
  #app.functional #overlay > .sheet.in { transform: none; }
  #app.functional #overlay > .sheet > .handle { visibility: hidden; height: 0; margin: 8px auto 0; }
  #app.functional #root { transition: padding-right .25s cubic-bezier(.2, .8, .3, 1); }
  #app.functional:has(#overlay > .sheet.in) #root { padding-right: var(--tb-dock); }
  #app.functional:has(#overlay > .sheet.in) #root:has(> .tb-aside) { grid-template-columns: minmax(0, 1fr) minmax(0, 680px) 0 0 minmax(0, 1fr); }
  #app.functional:has(#overlay > .sheet.in) #root > .tb-aside { display: none; }
  /* под панелью список остаётся читаемым: лёгкое затемнение без размытия */
  #app.functional #overlay > .scrim { background: color-mix(in srgb, var(--scrim, rgba(0, 0, 0, .3)) 55%, transparent); -webkit-backdrop-filter: none; backdrop-filter: none; }

  /* «Профиль» на широком окне: колонка шире, группы настроек в две колонки; открытая настройка — панелью справа,
     тогда список снова в одну колонку и остаётся виден слева */
  #app.functional #root > .screen:has(> #profscroll.tab-plain) { --tb-col: 980px; }
  #app.functional:not(:has(#overlay > .sheet.in)) #profscroll.tab-plain > .list { display: block; column-count: 2; column-gap: 16px; }
  #app.functional:not(:has(#overlay > .sheet.in)) #profscroll.tab-plain > .list > * { break-inside: avoid; margin-top: 0; margin-bottom: 12px; }
}

/* вторая колонка «Дня»: месяц и неделя */
.tb-aside {
  display: none; flex-direction: column; gap: 10px; min-height: 0; overflow-y: auto;
  padding: 18px 2px 18px; scrollbar-width: none;
}
.tb-mon-h { display: flex; align-items: center; gap: 6px; }
.tb-mon-h b { flex: 1; text-align: center; font: 800 18px/1.2 var(--ui); letter-spacing: -.02em; color: var(--t1); }
.tb-nav {
  width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center;
  font: 600 22px/1 var(--ui); color: var(--t2); text-align: center;
}
.tb-nav:hover, .tb-d:hover, .tb-wd:hover { background: var(--fill-2, rgba(0, 0, 0, .05)); }
.tb-dow, .tb-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.tb-dow span { text-align: center; font: 600 10.5px var(--mono); color: var(--t3); padding: 4px 0; }
.tb-d {
  position: relative; aspect-ratio: 1; border-radius: 12px; display: grid; place-items: center;
  font: 650 13.5px var(--ui); color: var(--t1); text-align: center;
}
.tb-d.past { color: var(--t3); }
.tb-d.now span { min-width: 28px; height: 28px; padding: 0 4px; border-radius: 99px; display: grid; place-items: center; background: var(--t1); color: var(--on-t1, #fff); }
.tb-d.sel { background: var(--surface); box-shadow: inset 0 0 0 1.5px var(--acc-2, var(--t1)); }
.tb-d em { position: absolute; left: 50%; bottom: 5px; width: 5px; height: 5px; margin-left: -2.5px; border-radius: 99px; }
.tb-h { margin: 12px 0 2px; font: 700 13px var(--ui); color: var(--t2); letter-spacing: .01em; }
.tb-week { display: flex; flex-direction: column; gap: 4px; }
.tb-wd {
  display: flex; align-items: center; gap: 12px; min-height: 46px; padding: 6px 12px;
  border-radius: 14px; background: var(--surface); border: 1px solid var(--line); text-align: left;
}
.tb-wd.sel { border-color: var(--acc-2, var(--t1)); box-shadow: inset 0 0 0 1px var(--acc-2, var(--t1)); }
.tb-wd-n { flex: none; width: 34px; display: flex; flex-direction: column; align-items: center; line-height: 1.1; }
.tb-wd-n small { font: 600 10px var(--mono); color: var(--t3); text-transform: uppercase; }
.tb-wd-n b { font: 750 17px var(--ui); color: var(--t1); }
.tb-wd.now .tb-wd-n b { color: var(--acc-2, var(--t1)); }
.tb-wd-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.tb-wd-t i { font: 500 12.5px/1.35 var(--ui); font-style: normal; color: var(--t2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tb-wd em { flex: none; font: 600 11.5px var(--mono); font-style: normal; color: var(--t3); }
:is(.tb-d, .tb-wd, .tb-nav):focus-visible { outline: 2px solid var(--acc-2, var(--t1)); outline-offset: 2px; }

/* ---------- складные: поза «книжка» (сгиб вертикально) ---------- */
@media (horizontal-viewport-segments: 2) {
  /* #app#app — сильнее правил широкого окна выше: на сгибе раскладку задают половины окна */
  #app#app.functional {
    --tb-s0: env(viewport-segment-width 0 0, 50vw);
    --tb-s1: env(viewport-segment-width 1 0, 50vw);
    --tb-hinge: calc(env(viewport-segment-left 1 0, 50vw) - env(viewport-segment-right 0 0, 50vw));
  }
  #app#app.functional #root {
    display: grid; grid-template-columns: var(--tb-s0) var(--tb-s1); column-gap: var(--tb-hinge);
    grid-template-rows: minmax(0, 1fr) auto; justify-content: start; padding-right: 0 !important;
  }
  #app#app.functional #root > .screen { grid-column: 1; grid-row: 1; max-width: none; width: auto; margin: 0; min-width: 0; }
  #app#app.functional #root > .screen.day-pane { left: 0; right: auto; width: var(--tb-s0); margin: 0; }
  #app#app.functional #root > .tb-aside { grid-column: 2; grid-row: 1 / -1; display: flex; padding-left: max(20px, calc((100% - 420px) / 2)); padding-right: max(20px, calc((100% - 420px) / 2)); }
  #app#app.functional #root > :is(.tabbar, .selbar) { grid-column: 1; grid-row: 2; }
  #app#app.functional #overlay > .sheet {
    top: 0; bottom: 0; right: 0; left: env(viewport-segment-left 1 0, 50vw); margin: 0;
    width: auto; max-width: none; max-height: none; border-radius: 0;
    padding-top: var(--safe-top); transform: translateX(100%);
  }
  #app#app.functional #overlay > .sheet.in { transform: none; }
}

/* ---------- складные: поза «стол» (сгиб горизонтально) — шторка в нижней половине ---------- */
@media (vertical-viewport-segments: 2) {
  #app.functional #overlay > .sheet {
    top: env(viewport-segment-top 0 1, 50vh); bottom: 0; max-height: none; border-radius: 24px 24px 0 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  #app.functional #root { transition: none; }
}


/* ---- desk.css ---- */
/* ============================================================
   desk.css — веб-панель для компьютера: zarok.app/panel (этап «а», 19 октября 2026)

   Всё здесь — под html.desk-entry (адрес /panel, не приложение из магазина, не Telegram; ставит js/desk.js):
     html.desk-gate — экран входа (нет аккаунта), при любой ширине окна;
     html.desk      — боковое меню и шапка: вошли, окно от 1024 px, рабочий вид (не знакомство);
     html.desk-mini — меню свёрнуто до значков;
     html.desk-folding — меню сворачивается или разворачивается (подписи погашены, js/desk.js fold);
     html[data-desk-glass="video" | "zarok"] — вид панели «Яркое стекло» / «Стекло в цветах Зарока» (без атрибута — мягкое).
   Содержимое — нынешние экраны приложения в планшетном виде (tablet.css), только место им даёт окно минус меню.
   Цвета — только переменные тем: светлые, тёмные и материалы Plus работают сами.
   Подключается после tablet.css.
   ============================================================ */

#desk-nav, #desk-top { display: none; }

/* ---------- рамка ----------
   Меню и шапка стоят внутри #app (перед #root): переменные тем и материалов заданы на .app.functional,
   и меню с шапкой красятся вместе с остальным. #app — сетка: меню слева на всю высоту, шапка сверху, #root справа. */
html.desk { --dk-nav: 264px; --dk-top: 64px; }
html.desk.desk-mini { --dk-nav: 76px; }
html.desk body { overflow: hidden; }
html.desk #app.functional {
  display: grid; grid-template-columns: var(--dk-nav) minmax(0, 1fr); grid-template-rows: var(--dk-top) minmax(0, 1fr);
  width: 100vw; height: 100dvh; max-width: none; border-radius: 0; box-shadow: none; padding-top: 0; background: var(--bg);
  /* колонка «Дня» и шторка-панель справа считаются от места справа от меню, а не от всего окна */
  --tb-c1: min(680px, calc(100vw - var(--dk-nav) - var(--tb-aside, 340px) - var(--tb-gap, 28px) - 2 * var(--tb-gutter, 40px)));
  --tb-dock: clamp(380px, 32vw, 500px);
}
html.desk #app.functional > #root { grid-column: 2; grid-row: 2; min-width: 0; min-height: 0; }
/* меню заменяет нижнюю панель вкладок и боковую панель «Дня» */
html.desk #app.functional #root > .tabbar,
html.desk #app.functional .day-edge,
html.desk #app.functional .drawer-wrap,
html.desk #app.functional .drawer-back { display: none !important; }
html.desk #app.functional .scroll { margin-bottom: 0; }

/* ---------- боковое меню ---------- */
html.desk #desk-nav {
  grid-column: 1; grid-row: 1 / 3; display: flex; flex-direction: column; gap: 6px; min-height: 0;
  padding: 14px 12px 12px; background: var(--surface); border-right: 1px solid var(--line);
  overflow: hidden; font-family: var(--ui); color: var(--t1);
}
.dn-head { display: flex; align-items: center; gap: 8px; padding: 2px 4px 10px; }
.dn-brand { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; color: var(--t1); text-decoration: none; }
.dn-brand img { flex: none; border-radius: 9px; }
.dn-brand .dn-t { font: 800 21px/1 var(--ui); letter-spacing: -.03em; }
.dn-fold {
  flex: none; width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; color: var(--t3);
}
.dn-fold svg, .dn-ic svg { width: 20px; height: 20px; display: block; }
.dn-fold:hover { background: var(--fill-2); color: var(--t1); }

.dn-add, .dn-find, .dn-item {
  display: flex; align-items: center; gap: 12px; width: 100%; min-height: 38px; padding: 7px 12px;
  border-radius: 12px; font: 600 14px/1.2 var(--ui); color: var(--t2); text-align: left; white-space: nowrap;
}
.dn-add {
  min-height: 44px; color: var(--on-acc); font-weight: 700;
  background: linear-gradient(180deg, var(--acc-1), var(--acc-2)); box-shadow: inset 0 -2px 0 var(--acc-3);
}
.dn-add:hover { filter: brightness(1.05); }
.dn-find { background: var(--input-bg, var(--bg)); border: 1px solid var(--line); color: var(--t3); font-weight: 500; }
.dn-find:hover { border-color: var(--line-btn); color: var(--t2); }
.dn-find kbd {
  margin-left: auto; min-width: 22px; padding: 1px 6px; border-radius: 6px; border: 1px solid var(--line);
  font: 600 11px/1.5 var(--mono); color: var(--t3); text-align: center;
}
.dn-ic { flex: none; width: 22px; display: grid; place-items: center; }
.dn-ic .ic { width: 20px; height: 20px; }
.dn-t { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.dn-nav { flex: 1 1 auto; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 1px; margin: 6px -4px 0; padding: 0 4px; }
.dn-h { padding: 12px 12px 5px; font: 700 11px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--t3); }
.dn-item:hover { background: var(--fill-2); color: var(--t1); }
.dn-item.on { background: var(--tab-1, var(--fill-2)); color: var(--t1); box-shadow: inset 3px 0 0 var(--acc-2); }
.dn-item.on .dn-ic { color: var(--acc-2); }
.dn-foot { flex: none; padding-top: 8px; border-top: 1px solid var(--line); display: flex; flex-direction: column; gap: 2px; }
.dn-acct { min-height: 52px; }
.dn-acct .dn-t { display: flex; flex-direction: column; gap: 2px; }
.dn-acct b { font: 700 13.5px/1.2 var(--ui); color: var(--t1); }
.dn-acct small { font: 500 12px/1.2 var(--ui); color: var(--t3); overflow: hidden; text-overflow: ellipsis; }
.dn-avatar {
  width: 32px; height: 32px; border-radius: 99px; background: var(--green-bg, var(--fill)); color: var(--green-tx, var(--t1));
  font: 800 14px/32px var(--ui); text-align: center;
}
.dn-avatar svg { width: 18px; height: 18px; margin: 7px auto; }
:is(.dn-add, .dn-find, .dn-item, .dn-fold, .dn-brand):focus-visible { outline: 2px solid var(--acc-ring, var(--acc-2)); outline-offset: 2px; }

/* свёрнутое меню: только значки, подписи — во всплывающей подсказке и для чтецов экрана */
html.desk-mini #desk-nav { padding-left: 10px; padding-right: 10px; align-items: center; }
html.desk-mini .dn-t, html.desk-mini .dn-h, html.desk-mini .dn-find kbd { display: none; }
html.desk-mini .dn-head { flex-direction: column; padding: 0 0 8px; }
html.desk-mini .dn-brand { flex: none; }
html.desk-mini :is(.dn-add, .dn-find, .dn-item) { width: 48px; justify-content: center; padding: 8px 0; }
html.desk-mini .dn-nav { align-items: center; width: 100%; margin: 10px 0 0; padding: 0; }
html.desk-mini .dn-foot { width: 100%; align-items: center; }

/* ---------- шапка ---------- */
html.desk #desk-top {
  grid-column: 2; grid-row: 1; display: flex; align-items: center; gap: 16px; min-width: 0;
  padding: 0 28px; background: var(--bg); border-bottom: 1px solid var(--line); font-family: var(--ui);
}
.dt-l { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; }
.dt-title { margin: 0; font: 800 22px/1.2 var(--ui); letter-spacing: -.02em; color: var(--t1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dt-title::first-letter { text-transform: uppercase; }
.dt-beta {
  flex: none; padding: 3px 9px; border-radius: 99px; border: 1px solid var(--hair, var(--line));
  background: var(--green-bg, var(--fill-2)); color: var(--green-tx, var(--t2)); font: 700 11px/1.4 var(--mono); letter-spacing: .04em;
}
.dt-r { flex: none; display: flex; align-items: center; gap: 12px; }
.dt-sync { display: inline-flex; align-items: center; gap: 8px; font: 500 13px var(--ui); color: var(--t3); }
.dt-sync i { width: 7px; height: 7px; border-radius: 99px; background: var(--t4); }
.dt-sync.is-ok i { background: var(--green); }
.dt-sync.is-wait i { background: var(--yellow); }
.dt-sync.is-err i, .dt-sync.is-big i { background: var(--danger); }

/* ---------- экран входа ---------- */
html.desk-gate body { display: block; height: 100dvh; background: var(--bg); }
html.desk-gate #app {
  width: 100vw; height: 100dvh; max-width: none; border-radius: 0; box-shadow: none; padding-top: var(--safe-top); background: var(--bg);
}
html.desk-gate #root > .dg-screen { overflow-y: auto; }
.dg {
  min-height: 100%; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 440px); align-items: center; gap: clamp(32px, 6vw, 96px);
  max-width: 1080px; margin: 0 auto; padding: 48px clamp(20px, 5vw, 64px); font-family: var(--ui); color: var(--t1);
}
.dg-brand { display: flex; align-items: center; gap: 12px; margin-bottom: 28px; }
.dg-brand img { border-radius: 12px; }
.dg-brand b { font: 800 26px/1 var(--ui); letter-spacing: -.03em; }
.dg-copy h1 { margin: 0 0 18px; font: 800 clamp(34px, 4.4vw, 54px)/1.06 var(--ui); letter-spacing: -.035em; text-wrap: balance; }
.dg-copy p { margin: 0; max-width: 460px; font: 500 16px/1.6 var(--ui); color: var(--t2); }
.dg-card {
  background: var(--surface); border: 1px solid var(--line); border-radius: 28px; padding: 32px;
  box-shadow: 0 30px 70px -40px rgba(0, 0, 0, .35);
}
.dg-card h2 { margin: 0 0 8px; font: 800 26px/1.15 var(--ui); letter-spacing: -.02em; }
.dg-note { margin: 0 0 22px; font: 500 14px/1.5 var(--ui); color: var(--t2); }
.dg-google { min-height: 44px; display: flex; align-items: center; justify-content: center; }
.dg-google.busy { opacity: .55; pointer-events: none; }
.dg-wait { font: 500 13.5px/1.4 var(--ui); color: var(--t3); text-align: center; }
.dg-or { display: flex; align-items: center; gap: 12px; margin: 16px 0; font: 500 12.5px var(--ui); color: var(--t3); }
.dg-or::before, .dg-or::after { content: ''; flex: 1; height: 1px; background: var(--line); }
.dg-mail {
  width: 100%; min-height: 46px; display: flex; align-items: center; justify-content: center; gap: 10px;
  border-radius: 99px; border: 1px solid var(--line-btn); background: var(--surface); color: var(--t1); font: 700 14.5px var(--ui);
}
.dg-mail svg { width: 19px; height: 19px; }
.dg-mail:hover { background: var(--fill-2); }
.dg-mail:focus-visible { outline: 2px solid var(--acc-ring, var(--acc-2)); outline-offset: 2px; }
.dg-err { min-height: 0; margin: 12px 0 0; font: 600 13px/1.45 var(--ui); color: var(--danger); }
.dg-err:empty { display: none; }
.dg-terms { margin: 20px 0 0; font: 500 12.5px/1.55 var(--ui); color: var(--t3); }
.dg-terms a { color: var(--t2); }
/* шторка входа по почте поверх экрана входа — по центру, не во всю ширину окна */
html.desk-gate #overlay > .sheet { left: 0; right: 0; margin: 0 auto; max-width: 520px; }
@media (max-width: 860px) {
  .dg { grid-template-columns: minmax(0, 1fr); align-content: start; gap: 28px; padding-top: 36px; }
  .dg-card { padding: 24px 20px; border-radius: 22px; }
}

/* ============================================================
   Плавность и стекло (решение владельца 19 октября 2026, страница «Веб-панель — плавность, было и стало»).
   Двигаются только transform и opacity; box-shadow не анимируется (тень в ::after, меняется её прозрачность).
   Сворачивание меню: подложка меню (#desk-rail) едет через transform, содержимое меню обрезается clip-path,
   колонка сетки переключается один раз (js/desk.js fold). «Уменьшить движение» — functional.css гасит всё внутри
   .functional; здесь дополнительно сняты сдвиги и масштаб.
   ============================================================ */
html.desk {
  --dk-spring: cubic-bezier(.34, 1.36, .64, 1);
  --dk-out: cubic-bezier(.2, .8, .2, 1);
  --dk-hover: 220ms; --dk-press: 90ms; --dk-switch: 200ms; --dk-fold: 240ms;
}

/* подложка меню: фон и край рисует она, меню поверх неё прозрачное. Ширина всегда полная (264 px),
   в свёрнутом виде подложка сдвинута влево: сворачивание — переезд через transform, без пересчёта раскладки */
#desk-rail { display: none; }
html.desk #app.functional { position: relative; }
html.desk #desk-rail {
  display: block; position: absolute; left: 0; top: 0; bottom: 0; width: 264px; z-index: 0; pointer-events: none;
  background: var(--surface); border-right: 1px solid var(--line);
  transform: translateX(calc(var(--dk-nav) - 264px));
}
html.desk #desk-nav { position: relative; z-index: 1; background: transparent; border-right: 0; }
html.desk #desk-top { position: relative; z-index: 1; }
html.desk #app.functional > #root { position: relative; z-index: 0; }
html.desk.desk-folding #desk-nav :is(.dn-t, .dn-h) { opacity: 0; }
@media (prefers-reduced-motion: no-preference) {
  html.desk #desk-nav :is(.dn-t, .dn-h) { transition: opacity 140ms var(--dk-out); }
}

/* ---------- бегунок: подложка выбранного пункта переезжает к новому ---------- */
html.desk .dn-nav { position: relative; }
.dn-ind { display: none; }
html.desk .dn-ind {
  display: block; position: absolute; top: 0; left: 0; z-index: 0; pointer-events: none; border-radius: 12px;
  background: var(--tab-1, var(--fill-2)); box-shadow: inset 3px 0 0 var(--acc-2);
  transition: transform 320ms var(--dk-spring), width 200ms var(--dk-out), height 200ms var(--dk-out);
}
html.desk .dn-ind[hidden], html.desk .dn-ind:not([style]) { display: none; }
html.desk .dn-ind.still { transition: none; }
html.desk .dn-nav .dn-item { position: relative; z-index: 1; }
html.desk .dn-nav .dn-item.on, html.desk .dn-nav .dn-item.on:hover { background: transparent; box-shadow: none; }

/* ---------- подъём карточек при наведении (только мышь) ---------- */
html.desk #root :is(.evcard, .prep-card, .rit-card, .scn-card, .dk-lift) {
  position: relative; transition: transform var(--dk-hover) var(--dk-spring), background-color .15s;
}
html.desk #root :is(.evcard, .prep-card, .rit-card, .scn-card, .dk-lift)::after {
  content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: -1;
  box-shadow: 0 18px 34px -18px rgba(0, 0, 0, .35), 0 4px 10px -6px rgba(0, 0, 0, .14);
  opacity: 0; transition: opacity var(--dk-hover) var(--dk-out);
}
@media (hover: hover) {
  html.desk #root :is(.evcard, .prep-card, .rit-card, .scn-card, .dk-lift):hover::after { opacity: 1; }
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  /* строки «Дня» стоят плотным списком — им хватает 2 px, отдельным карточкам 5 px */
  html.desk #root .evcard:hover { transform: translateY(-2px); }
  html.desk #root :is(.prep-card, .rit-card, .scn-card, .dk-lift):hover { transform: translateY(-5px); }
}

/* ---------- отклик нажатия ---------- */
html.desk #desk-nav :is(.dn-add, .dn-find, .dn-item, .dn-fold) {
  transition: background-color .16s, color .16s, transform var(--dk-hover) var(--dk-spring);
}
@media (prefers-reduced-motion: no-preference) {
  html.desk :is(#desk-nav, #desk-top, #root) :is(.dn-add, .dn-find, .dn-item, .dn-fold, .dt-look-btn, .btn, .evcard, .prep-card, .rit-card, .scn-card):active {
    transform: scale(.98); transition: transform var(--dk-press) var(--dk-out);
  }
  html.desk #root :is(.prep-card, .rit-card, .scn-card):hover:active { transform: translateY(-3px) scale(.98); }
}

/* ---------- мягкая смена раздела: появляется новый экран (класс .anim ставит js/app.js только при смене вкладки) ---------- */
@keyframes dk-screen-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes dk-fade-in { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: no-preference) {
  html.desk #root > .screen.anim { animation: dk-screen-in var(--dk-switch) var(--dk-out) both; }
  html.desk .dt-title { animation: dk-fade-in var(--dk-switch) var(--dk-out); }
}

/* ---------- кольцо фокуса с клавиатуры (outline: видно и в режиме высокой контрастности) ---------- */
html.desk #root :is(button, [role="button"], a):focus-visible { outline: 2px solid var(--acc-ring, var(--acc-2)); outline-offset: 2px; }
@media (prefers-reduced-motion: no-preference) {
  html.desk #root :is(.prep-card, .rit-card, .scn-card):focus-visible { transform: translateY(-2px); }
}

/* ---------- счёт чисел (js/desk.js count): ширина цифр одна, строка не прыгает ---------- */
html.desk #root :is(.pr-stat b, .clrow span, .stats-numbers b) { font-variant-numeric: tabular-nums; }

/* ---------- «Вид панели» в шапке ---------- */
.dt-look { position: relative; }
.dt-look-btn { width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; color: var(--t3); }
.dt-look-btn svg { width: 20px; height: 20px; display: block; }
.dt-look-btn:hover, .dt-look-btn[aria-expanded="true"] { background: var(--fill-2); color: var(--t1); }
.dt-look-btn:focus-visible, .dt-look-menu button:focus-visible { outline: 2px solid var(--acc-ring, var(--acc-2)); outline-offset: 2px; }
.dt-look-menu {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 30; min-width: 268px; padding: 6px;
  border-radius: 16px; border: 1px solid var(--line); background: var(--surface); color: var(--t1);
  box-shadow: 0 22px 50px -24px rgba(0, 0, 0, .45); font-family: var(--ui);
}
.dt-look-menu[hidden] { display: none; }
.dt-look-menu b { display: block; padding: 8px 10px 6px; font: 700 11px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--t3); }
.dt-look-menu button {
  display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 10px; border-radius: 10px;
  font: 600 14px/1.2 var(--ui); color: var(--t1); text-align: left; white-space: nowrap;
}
.dt-look-menu button:hover { background: var(--fill-2); }
.dt-look-menu button i { flex: none; width: 22px; height: 22px; border-radius: 7px; border: 1px solid var(--line); background: var(--surface); }
.dt-look-menu button[data-look="video"] i { background: linear-gradient(135deg, #3730a3, #6d28d9 40%, #a21caf 70%, #be185d); }
.dt-look-menu button[data-look="zarok"] i { background: linear-gradient(135deg, #10251c, #1f4a37 40%, #2f6a4e 70%, #4c7552); }
.dt-look-menu button[aria-checked="true"]::after { content: ''; margin-left: auto; width: 8px; height: 8px; border-radius: 99px; background: var(--acc-2); }

/* ---------- стекло ----------
   По умолчанию мягкое: полупрозрачные меню и шапка над едва заметными неподвижными пятнами цвета темы.
   «Как в видео» и «В цветах Зарока» (html[data-desk-glass]; выбор в шапке, хранится у зрителя rd.desk.glass) —
   яркий градиент и матовое стекло. Пятна неподвижны: иначе размытие под каждой карточкой пересчитывалось бы каждый кадр.
   Размытие: 28 px — только меню и шапка, 14 px — отдельные карточки, строки длинных списков — без размытия. */
html.desk #app.functional {
  background:
    radial-gradient(520px 380px at 8% 6%, color-mix(in srgb, var(--acc-1) 9%, transparent), transparent 70%),
    radial-gradient(560px 420px at 96% 92%, color-mix(in srgb, var(--acc-1) 6%, transparent), transparent 70%),
    var(--bg);
}
html.desk #desk-top { background: color-mix(in srgb, var(--bg) 78%, transparent); }
html.desk #desk-rail { background: color-mix(in srgb, var(--surface) 76%, transparent); }
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  html.desk :is(#desk-rail, #desk-top) { -webkit-backdrop-filter: blur(20px) saturate(1.3); backdrop-filter: blur(20px) saturate(1.3); }
}

html.desk[data-desk-glass] #app.functional {
  --t1: #fff; --t2: rgba(255, 255, 255, .94); --t3: rgba(255, 255, 255, .9); --t4: rgba(255, 255, 255, .76);
  --line: rgba(255, 255, 255, .24); --line-soft: rgba(255, 255, 255, .14); --line-btn: rgba(255, 255, 255, .45); --hair: rgba(255, 255, 255, .24);
  --surface: rgba(255, 255, 255, .12); --bg2: rgba(255, 255, 255, .1); --fill: rgba(255, 255, 255, .2); --fill-2: rgba(255, 255, 255, .13);
  --tab-1: rgba(255, 255, 255, .2); --tab-2: rgba(255, 255, 255, .26); --input-bg: rgba(255, 255, 255, .1);
  --green-bg: rgba(255, 255, 255, .2); --green-tx: #fff; --hl: rgba(255, 255, 255, .5);
  --acc-1: #fff; --acc-2: rgba(255, 255, 255, .86); --acc-3: rgba(255, 255, 255, .55); --on-acc: var(--gx-dark); --on-t1: var(--gx-dark);
  --bg: transparent; --mute: rgba(255, 255, 255, .8);
  color: #fff; background: var(--gx-blobs), var(--gx-bg);
}
html.desk[data-desk-glass="video"] #app.functional {
  --gx-bg: linear-gradient(135deg, #3730a3 0%, #6d28d9 36%, #a21caf 66%, #be185d 100%);
  --gx-blobs: radial-gradient(30% 36% at 16% 20%, rgba(8, 145, 178, .5), transparent 70%), radial-gradient(28% 34% at 84% 26%, rgba(219, 39, 119, .4), transparent 70%),
    radial-gradient(34% 38% at 58% 86%, rgba(180, 83, 9, .38), transparent 70%);
  --gx-dark: #2e1065; --gx-tint: rgba(30, 14, 84, .26); --acc-ring: #fde68a;
}
html.desk[data-desk-glass="zarok"] #app.functional {
  --gx-bg: linear-gradient(135deg, #10251c 0%, #1f4a37 36%, #2f6a4e 68%, #4c7552 100%);
  --gx-blobs: radial-gradient(30% 36% at 16% 20%, rgba(80, 160, 110, .4), transparent 70%), radial-gradient(28% 34% at 84% 26%, rgba(150, 130, 60, .36), transparent 70%),
    radial-gradient(34% 38% at 58% 86%, rgba(60, 130, 100, .45), transparent 70%);
  --gx-dark: #14302a; --gx-tint: rgba(6, 26, 18, .24); --acc-ring: #e3d38a;
}
/* меню и шапка — матовое стекло с лёгкой тёмной вуалью: белые подписи держат контраст и над светлыми пятнами */
html.desk[data-desk-glass] #desk-rail { background: linear-gradient(rgba(255, 255, 255, .05), rgba(255, 255, 255, .05)), var(--gx-tint); border-right-color: rgba(255, 255, 255, .2); }
html.desk[data-desk-glass] #desk-top { background: linear-gradient(rgba(255, 255, 255, .04), rgba(255, 255, 255, .04)), var(--gx-tint); border-bottom-color: rgba(255, 255, 255, .2); }
html.desk[data-desk-glass] #root > .screen, html.desk[data-desk-glass] #root :is(.scroll, .plain-hdr) { background: transparent; }
html.desk[data-desk-glass] :is(#desk-nav, #desk-top, #root) { text-shadow: 0 1px 2px rgba(0, 0, 0, .18); }
html.desk[data-desk-glass] .dn-add { background: rgba(255, 255, 255, .94); color: var(--gx-dark); box-shadow: 0 8px 20px -10px rgba(0, 0, 0, .5); text-shadow: none; }
html.desk[data-desk-glass] .dn-ind { background: rgba(255, 255, 255, .15); box-shadow: inset 3px 0 0 #fff, inset 0 1px 0 rgba(255, 255, 255, .4); }
html.desk[data-desk-glass] .dn-item.on .dn-ic { color: #fff; }
html.desk[data-desk-glass] .dt-look-menu { background: color-mix(in srgb, var(--gx-dark) 95%, transparent); }
/* отдельные карточки — стекло с каймой и бликом; строки длинных списков — только полупрозрачный фон */
html.desk[data-desk-glass] #root :is(.dboard, .prep-card, .rit-card, .scn-card, .course, .ach, .sx-hero, .sx-example, .stats-total, .stats-numbers > div, .demo) {
  background: rgba(255, 255, 255, .13); border: 1px solid rgba(255, 255, 255, .32);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), 0 12px 32px -16px rgba(0, 0, 0, .45);
}
html.desk[data-desk-glass] #root .evcard { background: rgba(255, 255, 255, .12) !important; border-color: rgba(255, 255, 255, .26) !important; }
html.desk[data-desk-glass] #root .btn { background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .4); color: #fff; }
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  html.desk[data-desk-glass] :is(#desk-rail, #desk-top) { -webkit-backdrop-filter: blur(28px) saturate(1.5); backdrop-filter: blur(28px) saturate(1.5); }
  html.desk[data-desk-glass] #root :is(.dboard, .prep-card, .rit-card, .scn-card, .course, .ach, .sx-hero, .sx-example, .stats-total, .stats-numbers > div, .demo) {
    -webkit-backdrop-filter: blur(14px) saturate(1.5); backdrop-filter: blur(14px) saturate(1.5);
  }
  html.desk[data-desk-glass] .dt-look-menu { -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); }
}
/* без размытия — плотный тёмный фон под белым текстом */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  html.desk[data-desk-glass] :is(#desk-rail, #desk-top, .dt-look-menu) { background: rgba(20, 12, 50, .55); }
  html.desk[data-desk-glass="zarok"] :is(#desk-rail, #desk-top, .dt-look-menu) { background: rgba(8, 24, 17, .6); }
  html.desk[data-desk-glass] #root :is(.dboard, .prep-card, .rit-card, .scn-card, .course, .ach, .sx-hero, .sx-example, .stats-total, .stats-numbers > div, .demo) { background: rgba(20, 12, 50, .38); }
}
/* «Уменьшить прозрачность» в системе — плотные поверхности без стекла */
@media (prefers-reduced-transparency: reduce) {
  html.desk :is(#desk-rail, #desk-top, .dt-look-menu) { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
  html.desk #desk-rail { background: var(--surface); }
  html.desk #desk-top { background: var(--bg); }
  html.desk[data-desk-glass] #root * { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
  html.desk[data-desk-glass="video"] :is(#desk-rail, #desk-top, .dt-look-menu) { background: #2a1b5e; }
  html.desk[data-desk-glass="zarok"] :is(#desk-rail, #desk-top, .dt-look-menu) { background: #12291f; }
}

/* ---------- «Уменьшить движение»: ничего не сдвигается и не масштабируется ---------- */
@media (prefers-reduced-motion: reduce) {
  html.desk #desk-nav *, html.desk .dn-ind { transition: none !important; }
  html.desk :is(#desk-nav, #desk-top, #root) :is(.dn-add, .dn-find, .dn-item, .dn-fold, .dt-look-btn, .btn, .evcard, .prep-card, .rit-card, .scn-card, .dk-lift),
  html.desk :is(#desk-nav, #desk-top, #root) :is(.dn-add, .dn-find, .dn-item, .dn-fold, .dt-look-btn, .btn, .evcard, .prep-card, .rit-card, .scn-card, .dk-lift):is(:hover, :active, :focus-visible) { transform: none !important; }
}

