@font-face{font-family:'Made';src:url('fonts/WixMadeforDisplay.ttf') format('truetype');font-weight:400 800;font-style:normal;font-display:block;}
@font-face{font-family:'Onest';src:url('fonts/Onest.ttf') format('truetype');font-weight:100 900;font-style:normal;font-display:block;}
@font-face{font-family:'Geist';src:url('fonts/Geist.ttf') format('truetype');font-weight:100 900;font-style:normal;font-display:block;}

/* ---------- ТЕМЫ ---------- */
html[data-theme="light"]{
  --bg:#F5F4F1;
  --ink:#17171A;
  --ink-85:rgba(23,23,26,.85);
  --ink-60:rgba(23,23,26,.60);
  --ink-45:rgba(23,23,26,.45);
  --ink-38:rgba(23,23,26,.38);
  --ink-34:rgba(23,23,26,.34);
  --line:rgba(23,23,26,.08);
  --line-2:rgba(23,23,26,.10);
  --line-strong:rgba(23,23,26,.16);
  --card:#FFFFFF;
  --hero:#17171A;
  --hero-ink:#FFFFFF;
  --hero-70:rgba(255,255,255,.70);
  --hero-60:rgba(255,255,255,.60);
  --hero-45:rgba(255,255,255,.45);
  --hero-40:rgba(255,255,255,.40);
  --hero-30:rgba(255,255,255,.30);
  --hero-18:rgba(255,255,255,.18);
  --hero-12:rgba(255,255,255,.12);
  --hero-10:rgba(255,255,255,.10);
  --hero-85:rgba(255,255,255,.85);
  --hero-35:rgba(255,255,255,.35);
  --chip:#FFFFFF;
  --chip-ink:#17171A;
  --solid:#17171A;
  --on-solid:#FFFFFF;
  --hero-ring:transparent;
  --shadow:0 1px 2px rgba(23,23,26,.04);
  --win:#12A06A;
  --win-soft:rgba(18,160,106,.12);
  --on-win:#FFFFFF;
}
html[data-theme="dark"]{
  --bg:#0E0E10;
  --ink:#F3EFE9;
  --ink-85:rgba(243,239,233,.86);
  --ink-60:rgba(243,239,233,.64);
  --ink-45:rgba(243,239,233,.50);
  --ink-38:rgba(243,239,233,.44);
  --ink-34:rgba(243,239,233,.40);
  --line:rgba(243,239,233,.09);
  --line-2:rgba(243,239,233,.12);
  --line-strong:rgba(243,239,233,.20);
  --card:#191920;
  --hero:#25252E;
  --hero-ink:#F7F3ED;
  --hero-70:rgba(247,243,237,.72);
  --hero-60:rgba(247,243,237,.62);
  --hero-45:rgba(247,243,237,.50);
  --hero-40:rgba(247,243,237,.46);
  --hero-30:rgba(247,243,237,.34);
  --hero-18:rgba(247,243,237,.20);
  --hero-12:rgba(247,243,237,.14);
  --hero-10:rgba(247,243,237,.12);
  --hero-85:rgba(247,243,237,.85);
  --hero-35:rgba(247,243,237,.38);
  --chip:#F3EFE9;
  --chip-ink:#17171A;
  --solid:#2E2E38;
  --on-solid:#F3EFE9;
  --hero-ring:rgba(255,255,255,.06);
  --shadow:none;
  --win:#3ED197;
  --win-soft:rgba(62,209,151,.14);
  --on-win:#0E0E10;
}
html{--accent:#FF6B2C;--on-accent:#fff;--bad:#E5484D;--on-bad:#fff;}

/* ---------- БАЗА ---------- */
*{margin:0;padding:0;box-sizing:border-box;-webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;}
html,body{width:100%;height:100%;overflow:hidden;}
body{font-family:'Onest',sans-serif;color:var(--ink);background:var(--bg);
     display:flex;flex-direction:column;max-width:430px;margin:0 auto;
     transition:background .25s ease,color .25s ease;}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;}
/* 16px — иначе мобильный Safari зуммирует экран при фокусе на поле */
input,textarea,select{font-family:'Onest',sans-serif;font-size:16px;color:inherit;
  background:none;border:none;outline:none;-webkit-text-size-adjust:100%;}
svg.i{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;}
svg.i.sw3{stroke-width:3;}
svg.i.sw2{stroke-width:2;}
.hide{display:none !important;}

.cap{font-size:10.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;}

/* ---------- ШАПКА ---------- */
.top{display:flex;align-items:center;justify-content:space-between;gap:10px;
     padding:24px 20px 0;flex:none;}
.top .cap{color:var(--ink-45);}
.top .acts{display:flex;align-items:center;gap:9px;flex:none;}
.rbtn{width:38px;height:38px;border-radius:50%;border:1.4px solid var(--line-strong);
      background:var(--card);color:var(--ink);
      display:flex;align-items:center;justify-content:center;flex:none;
      transition:background .2s ease,border-color .2s ease;}
.rbtn:active{transform:scale(.94);}

/* ---------- ЭКРАНЫ ---------- */
.screens{flex:1;min-height:0;position:relative;}
.screen{position:absolute;inset:0;display:none;flex-direction:column;
        padding:20px 20px 4px;overflow-y:auto;overflow-x:hidden;
        -webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
.screen::-webkit-scrollbar{display:none;}
.screen.on{display:flex;}

/* ---------- ГЕРОЙ ---------- */
.hero{position:relative;background:var(--hero);border-radius:28px;padding:22px 22px 20px;
      color:var(--hero-ink);flex:none;box-shadow:inset 0 0 0 1px var(--hero-ring);
      transition:background .25s ease;}
.hero .cap{color:var(--hero-45);}
.hero h1{font-family:'Made',sans-serif;font-size:42px;font-weight:800;letter-spacing:-.04em;
         line-height:1;margin-top:10px;}
.hero h1 i{color:var(--accent);font-style:normal;}
.hero .sub{margin-top:10px;font-size:13px;color:var(--hero-70);line-height:1.4;}
.sticker{position:absolute;right:16px;top:-12px;transform:rotate(-8deg);background:var(--accent);
         color:var(--on-accent);border-radius:13px;padding:9px 12px;text-align:center;z-index:2;}
.sticker b{display:block;font-family:'Made',sans-serif;font-size:17px;font-weight:800;line-height:1;}
.sticker span{font-size:8.5px;font-weight:600;letter-spacing:.08em;opacity:.9;}
.sep{height:1px;background:var(--hero-12);margin:18px 0 4px;}
.gcap{margin:24px 2px 12px;color:var(--ink-45);flex:none;}

/* ---------- ПОЛОСА НЕДЕЛЬ ---------- */
.weeks{display:flex;gap:4px;margin-top:20px;align-items:flex-end;}
.weeks i{flex:1;height:8px;border-radius:4px;background:var(--hero-18);}
.weeks i.on{background:var(--accent);}
.weeks i.now{background:var(--hero-ink);}
.weeks.big{gap:5px;height:44px;margin-top:22px;}
.weeks.big i{border-radius:6px;height:18px;transition:height .3s ease;}
.weeks.big i.on{height:34px;}
.weeks.big i.now{height:44px;background:var(--hero-ink);
  box-shadow:0 0 0 3px var(--hero-18);}
.wlab{display:flex;justify-content:space-between;margin-top:9px;
      font-size:9.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--hero-40);}
.wcap{margin-top:8px;font-size:10.5px;font-weight:500;color:var(--hero-60);}

/* ---------- ГЛАВНЫЙ: ДЕНЬ ВПЕРЁД, ШКАЛА НЕДЕЛЬ ВНИЗ ---------- */
.hlead{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
       margin-top:10px;margin-bottom:2px;}
/* 27px против прежних 42px: заголовок обязан вести к делам, а не заслонять их.
   Разница с текстом дела (14.5px) всё равно почти двойная — иерархия цела. */
.hlead .hday{font-family:'Made',sans-serif;font-size:27px;font-weight:800;
             letter-spacing:-.035em;line-height:1.05;margin:0;flex:1;min-width:0;}
.hlead .hday i{color:var(--accent);font-style:normal;}
.hlead .hnum{flex:none;font-family:'Geist',monospace;font-size:12px;font-weight:700;
             letter-spacing:.02em;color:var(--hero-45);}
.wprog{margin-top:4px;}
/* Живая шкала недель: тринадцать делений в одну линию. Целые недели залиты
   зелёным, текущая подсвечена и заполняется по ходу — видно не только «сколько
   было», но и «как идёт сейчас». */
.wscale{display:flex;gap:3px;align-items:stretch;height:14px;}
.wscale i{flex:1;border-radius:3px;background:var(--hero-12);position:relative;overflow:hidden;
          transition:background .3s ease;}
.wscale i.on{background:var(--win);}
.wscale i.now{background:var(--hero-18);box-shadow:inset 0 0 0 1.4px var(--accent);}
.wscale i.now u{position:absolute;left:0;top:0;bottom:0;display:block;background:var(--accent);
                border-radius:3px;transition:width .35s ease;}
.wfoot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;
       font-size:11.5px;font-weight:500;color:var(--hero-60);}
.wfoot .wf-l b{font-family:'Made',sans-serif;font-size:14px;font-weight:800;
               color:var(--hero-ink);letter-spacing:-.02em;}
.wfoot .wf-r{color:var(--hero-45);text-align:right;}

/* ---------- ЗАДАЧИ В ГЕРОЕ ---------- */
.task{display:flex;align-items:center;gap:12px;padding:11px 0;}
.task .box{width:21px;height:21px;border-radius:7px;border:1.6px solid var(--hero-30);flex:none;
           display:flex;align-items:center;justify-content:center;color:transparent;
           transition:background .18s ease,border-color .18s ease,transform .18s ease;}
.task.done .box{background:var(--accent);border-color:var(--accent);color:var(--on-accent);}
.task .box:active{transform:scale(.9);}
.task p{flex:1;font-size:14.5px;font-weight:500;text-align:left;}
.task.done p{color:var(--hero-60);text-decoration:line-through;}
.task .fl{color:var(--accent);display:flex;}

/* Бронь в списке дня. Тимур 11.08 04:00: «хотел бы, чтобы текст брони
   подсвечивался особым цветом, чтобы я понимал, что это приоритетная задача».
   Отличаем ровно двумя вещами — акцентным цветом слова и своим значком
   правила; обычные дела остаются как были. */
.task .bic{color:var(--accent);display:flex;flex:none;margin-right:-4px;}
.task.brtask p{color:var(--accent);font-weight:600;}
.task.brtask.done p{color:var(--hero-60);font-weight:500;}
.task.brtask.done .bic{color:var(--hero-45);}

/* Карандаш вместо кнопки «Готово» (Тимур 11.08 04:00 — она дублировала
   квадратик слева). Правка идёт прямо в строке: поле встаёт на место
   названия, справа галочка «сохранить». */
.task .pen{color:var(--hero-45);flex:none;display:flex;padding:4px;margin:-4px;
           transition:color .16s ease,transform .16s ease;}
.task .pen:active{transform:scale(.88);color:var(--hero-ink);}
.task.done .pen{opacity:.45;}
.task .edt{flex:1;min-width:0;background:var(--hero-10);border:1.4px solid var(--hero-30);
           border-radius:10px;padding:6px 10px;font-family:inherit;font-size:14.5px;
           font-weight:500;color:var(--hero-ink);outline:none;}
.task .edt:focus{border-color:var(--accent);}
.task .edtok{flex:none;display:flex;align-items:center;justify-content:center;
             width:28px;height:28px;border-radius:9px;background:var(--accent);
             color:var(--on-accent);}
.task .edtok:active{transform:scale(.9);}
.task.editing .pen{display:none;}

/* ---------- КОЛЬЦА БРОНЕЙ ---------- */
/* колонок ровно столько, сколько броней (до пяти); дальше — два ряда поровну */
.rings{display:grid;grid-template-columns:repeat(var(--rc,5),1fr);gap:14px 6px;flex:none;}
.ring{display:flex;flex-direction:column;align-items:center;gap:7px;min-width:0;}
.ring .rw{position:relative;width:100%;max-width:62px;}
.ring svg.rg{display:block;width:100%;height:auto;}
.ring .trk{fill:none;stroke:var(--line-2);stroke-width:6;}
.ring .val{fill:none;stroke:var(--accent);stroke-width:6;stroke-linecap:round;
           transition:stroke-dashoffset .5s ease;}
.ring .val.full{stroke:var(--win);}
.ring .val.zero{stroke:transparent;}
.ring .ico{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
           color:var(--ink-60);}
.ring.done .ico{color:var(--win);}
.ring .nm{font-size:10px;font-weight:600;color:var(--ink-60);text-align:center;line-height:1.15;
          display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
          min-height:23px;overflow-wrap:anywhere;}
.ring .num{font-family:'Made',sans-serif;font-size:11.5px;font-weight:800;color:var(--ink);
           margin-top:-4px;}
.ring.zero .num{color:var(--ink-34);}
.ring.done .num{color:var(--win);}

/* ---------- ПЛИТКИ ---------- */
.tile{background:var(--card);border-radius:20px;padding:15px 16px 16px;box-shadow:var(--shadow);flex:none;}
.tile.pad{padding:18px 18px 16px;}
.note{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;line-height:1.4;
      color:var(--ink-60);}
.note .ic{color:var(--accent);flex:none;display:flex;margin-top:1px;}

/* ---------- ПЛАНЁРКА: НАГРУЗКА + КАЛЕНДАРЬ ----------
   Экран не прокручивается целиком: сверху приклеен календарь, снизу — строка
   ввода. Прокручивается только список дней внутри своей рамки, поэтому
   неделя остаётся перед глазами и когда вылезла клавиатура. */
.screen.wk{overflow:hidden;padding-bottom:0;}
.wkfix{display:flex;flex-direction:column;flex:1;min-height:0;}
/* Тёмная карточка кончается там, где кончаются дни: раньше она тянулась до
   строки ввода, и под воскресеньем висела треть экрана пустой заливки —
   экран читался как недогрузившийся. */
.calwrap{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;
         -webkit-overflow-scrolling:touch;overscroll-behavior:contain;
         margin-top:-28px;padding-top:28px;}
.calwrap::-webkit-scrollbar{display:none;}
.calwrap .cal{background:var(--hero);border-radius:0 0 28px 28px;
              padding:0 18px 14px;}
.calwrap .wkhint{margin:12px 18px 0;width:auto;background:var(--card);
                 color:var(--ink-60);}
#s-week .hero{padding:18px 18px 12px;border-radius:28px 28px 0 0;
              position:relative;z-index:1;}
/* «Предыдущая неделя» — самое длинное из слов, при 25px оно встаёт в строку
   рядом со стрелками и не переносится посреди слова */
#s-week .hero h1{font-size:25px;line-height:1.06;}
.wkhead{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.wkhead h1{flex:1;min-width:0;}
/* числа показанной семёрки — мелко и серо под словом */
.wkdates{margin-top:6px;font-size:11.5px;font-weight:500;color:var(--hero-45);}
.wknav{display:flex;align-items:center;gap:6px;flex:none;margin-top:8px;}
.wkb{width:30px;height:30px;border-radius:999px;background:var(--hero-10);color:var(--hero-70);
     display:inline-flex;align-items:center;justify-content:center;flex:none;
     transition:background .18s ease,color .18s ease,transform .12s ease;}
.wkb:active{transform:scale(.9);}
.wkb.now{width:auto;padding:0 12px;background:var(--accent);color:var(--on-accent);
         font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;}
.wkhint{display:block;width:100%;margin-top:10px;padding:9px 12px;border-radius:999px;
        background:var(--hero-10);color:var(--hero-70);font-size:11.5px;font-weight:600;
        text-align:left;}
.wkhint b{color:var(--accent);font-weight:700;}
/* Полоса недели. Оранжевый тут значит ОДНО: день прошёл и вышел целым.
   Раньше он значил «в этом дне есть бронь» — и среда-воскресенье горели
   оранжевым в понедельник утром, когда ещё ничего не было прожито. Цвет
   врал про будущее, Тимур это и поймал 10.08. */
.load{display:flex;gap:6px;align-items:flex-end;margin-top:13px;height:42px;}
.load .lc{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;justify-content:flex-end;}
.load .lb{width:100%;border-radius:5px;background:var(--hero-18);min-height:4px;}
.load .lc.whole .lb{background:var(--accent);}          /* прожит и вышел целым */
.load .lc.past .lb{background:var(--hero-12);}          /* прожит, осталось незакрытое */
.load .lc.now .lb{background:var(--hero-35);box-shadow:inset 0 0 0 1.4px var(--accent);}
.load .lc.now .ld{color:var(--accent);}
.load .ld{font-size:8.5px;font-weight:700;letter-spacing:.06em;color:var(--hero-40);}
.cal{margin-top:0;}
.day{display:flex;gap:9px;align-items:flex-start;padding:6px 0;border-top:1px solid var(--hero-12);}
.day.tap{background:var(--hero-10);border-radius:10px;}
/* пустое место строки дня — живая цель для пальца, а не просто пробел */
.chips .add{font-size:10.5px;font-weight:600;padding:4px 9px;border-radius:999px;
            border:1.2px dashed var(--hero-30);color:var(--hero-45);background:none;
            display:inline-flex;align-items:center;gap:4px;}
.day .d{width:26px;flex:none;text-align:center;}
.day .d b{font-family:'Made',sans-serif;font-size:13.5px;font-weight:800;display:block;line-height:1.05;}
.day .d span{font-size:8px;font-weight:700;letter-spacing:.08em;color:var(--hero-40);}
.chips{display:flex;flex-wrap:wrap;gap:4px;flex:1;padding-top:2px;}
.ch{font-size:10.5px;font-weight:600;padding:4px 8px;border-radius:999px;
    background:var(--hero-10);color:var(--hero-70);display:inline-flex;align-items:center;gap:4px;
    white-space:nowrap;}
.ch.br{background:var(--chip);color:var(--chip-ink);}
.ch.br svg{color:var(--accent);}
/* Состояния занятия брони. Потухло — время прошло, но это ЕЩЁ НЕ ПРОПУСК:
   его можно двинуть вперёд по неделе, и оно снова живое. Поэтому гасим мягко,
   не перечёркиваем и не красим тревожным. Пропуск (неделя закрыта) — тоже без
   красного: списков провалов в этом приложении нет. */
.ch.br.bs-dim{opacity:.5;}
.ch.br.bs-missed{opacity:.38;}
.tr.bs-dim,.tr.bs-missed{opacity:.5;}

/* СДЕЛАННОЕ В НЕДЕЛЕ. Тимур 11.08 03:55: закрыл все дела дня — в недельном
   календаре они выглядели ровно как несделанные. Гасим плашку и ставим
   галочку слева от названия. Зачёркивание он отверг сам: «когда много задач и
   все перечёркнуты, боюсь это уродско будет выглядеть». Живые остаются
   контрастными — иначе неделя превращается в кашу одинаково серых строк. */
.ch.done{background:var(--hero-06,rgba(255,255,255,.05));color:var(--hero-35);}
.ch.br.done,.ch.br.bs-done{background:var(--hero-12);color:var(--hero-40);opacity:1;}
.ch.br.done svg,.ch.br.bs-done svg{color:var(--hero-40);}
.ch .dn{color:var(--win);flex:none;margin-right:-1px;}
.ch.br.done .dn,.ch.br.bs-done .dn{color:var(--win);}

/* Распорядок брони: строка на каждый раз — дни и час */
.slrow{display:flex;align-items:center;gap:8px;margin-bottom:9px;}
.sln{font-family:'Made',sans-serif;font-size:12px;font-weight:800;color:var(--ink-45);
     width:12px;flex:none;}
.sldays{display:flex;gap:4px;flex:1;min-width:0;}
.sldays button{flex:1;min-width:0;height:34px;border-radius:11px;background:var(--line-2);
               color:var(--ink-60);font-size:12px;font-weight:700;
               transition:background .14s ease,color .14s ease;}
.sldays button.on{background:var(--accent);color:var(--on-accent);}
.sldays button:active{transform:scale(.92);}
.sltime{width:82px;flex:none;height:34px;border-radius:11px;background:var(--line-2);
        border:0;color:var(--ink-85);font-size:13px;font-weight:600;text-align:center;
        font-family:inherit;}
.ch.new{background:var(--accent);color:var(--on-accent);box-shadow:0 0 0 3.5px rgba(255,107,44,.3);
        animation:pop .35s ease;}
.ch.new svg{color:var(--on-accent);}
.ch.trip{background:transparent;border:1.2px dashed var(--hero-30);color:var(--hero-45);}
@keyframes pop{from{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}

/* ---------- ПЕРЕТАСКИВАНИЕ ДЕЛА ПАЛЬЦЕМ ----------
   Взятое дело оставляет на своём месте дырку (taken), а не исчезает: иначе
   строка схлопывается и всё содержимое прыгает прямо под пальцем.
   Летящая копия (dragfly) висит поверх на fixed и не ловит события — под
   пальцем должен оказываться день, а не сама карточка.
   Подсвечена ровно одна строка — та, куда упадёт. Семь подсвеченных строк
   это ёлка: глазу нечего выбирать, если светится всё. */
.ch.taken{opacity:.3;}
/* Одной тени мало: на тёмной теме тень на почти чёрном фоне не видна вовсе,
   и карточка в руке читалась как та же самая плоская плашка. Поднятость даёт
   светлый ободок и фон на ступень ярче — он работает в обеих темах. */
.dragfly{position:fixed;z-index:120;margin:0;pointer-events:none;
         background:var(--hero-30);
         box-shadow:0 14px 30px rgba(0,0,0,.5),0 0 0 1.4px var(--hero-45);
         will-change:transform;}
.dragfly.up{transition:transform .16s cubic-bezier(.2,.7,.3,1);}
.dragfly.land{transition:transform .19s cubic-bezier(.2,.7,.3,1),box-shadow .19s ease-out;
              box-shadow:0 0 0 rgba(0,0,0,0);}
/* пока дело в руке — строки читаются как полки, но очень тихо */
body.dnd{user-select:none;-webkit-user-select:none;}
body.dnd .cal .day{border-top-color:var(--hero-18);}
body.dnd .cal .ch{cursor:grabbing;}
body.dnd .chips .add{opacity:0;}
.day.zone{background:var(--hero-10);border-radius:10px;
          box-shadow:inset 2px 0 0 var(--accent);}
.day.zone .d b{color:var(--accent);}

/* ---------- НИЖНЯЯ СТРОКА ПЛАНЁРКИ ----------
   Ответ бота не растит ленту: одна строка над полем, гаснет сама. Ленты
   переписки на этом экране больше нет — она в чате бота. */
.wkbar{flex:none;padding:10px 0 12px;background:var(--bg);}
.wkbar .inp{margin-top:0;padding-bottom:0;}
.tip{margin:0 4px 9px;font-size:12.5px;font-weight:500;line-height:1.35;
     color:var(--ink-60);animation:rise .25s ease;}
.tip b{color:var(--ink);font-weight:700;}
.tip.warm{color:var(--accent);}
.mic.rec.on{background:var(--bad);animation:pulse 1s ease-in-out infinite;}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}

/* ---------- ЧАТ (осталось для пузырей знакомства) ---------- */
.chatwrap{margin-top:13px;display:flex;flex-direction:column;flex:1;min-height:0;}
.chat{display:flex;flex-direction:column;gap:9px;}
.bub{max-width:84%;padding:11px 14px 12px;border-radius:19px;font-size:13.3px;line-height:1.4;
     animation:rise .3s ease;}
.bub.a{background:var(--card);border-bottom-left-radius:6px;color:var(--ink-85);}
.bub.u{background:var(--solid);color:var(--on-solid);margin-left:auto;border-bottom-right-radius:6px;
       display:flex;align-items:flex-start;gap:8px;}
.bub.u .m{color:var(--accent);flex:none;margin-top:1px;}
.bub b{font-weight:700;}
@keyframes rise{from{transform:translateY(6px);opacity:0}to{transform:none;opacity:1}}
.inp{display:flex;align-items:center;gap:10px;margin-top:12px;padding-bottom:12px;}
.inp .f{flex:1;height:48px;border-radius:100px;background:var(--card);display:flex;align-items:center;
        padding:0 20px;font-size:16px;font-weight:500;color:var(--ink);}
.inp .f::placeholder{color:var(--ink-38);}
.mic{width:48px;height:48px;border-radius:50%;background:var(--accent);color:var(--on-accent);flex:none;
     display:flex;align-items:center;justify-content:center;}
.mic:active{transform:scale(.93);}

/* Микрофон не дался. Раньше на любую причину было одно «Микрофон не дали»,
   и человек за рулём оставался ни с чем. Теперь причина честная, а рядом —
   выход: надиктовать боту в чат, он и так понимает голос. */
#mic-err{margin:0 4px 9px;padding:12px 13px;border-radius:16px;
         background:var(--card);animation:rise .25s ease;}
#mic-err .t{font-size:14px;font-weight:700;color:var(--ink);line-height:1.3;}
#mic-err .s{margin-top:4px;font-size:12.5px;font-weight:500;line-height:1.4;color:var(--ink-60);}
#mic-err .s .why{display:block;margin-top:5px;font-size:11px;color:var(--ink-60);
                 opacity:.7;word-break:break-word;}
#mic-err .go{margin-top:11px;width:100%;min-height:42px;padding:11px 14px;border-radius:12px;
             background:var(--accent);color:var(--on-accent);font-size:14px;font-weight:700;
             line-height:1.2;}
#mic-err .go:active{transform:scale(.98);}

/* ---------- ДЕНЬ ---------- */
#s-day .hero h1{font-size:28px;}
.dprog{display:flex;gap:5px;margin-top:15px;}
.dprog i{flex:1;height:7px;border-radius:4px;background:var(--hero-18);
         transition:background .25s ease;}
.dprog i.on{background:var(--accent);}
.foot{margin-top:14px;font-size:11.5px;color:var(--hero-45);display:flex;gap:8px;align-items:center;}
/* быстрое добавление дела на сегодня — на месте бывшего «Днём не пишу» */
.qadd{margin-top:12px;}
.qa-btn{display:flex;align-items:center;gap:9px;width:100%;padding:11px 12px;
        border-radius:14px;border:1.3px dashed var(--hero-30);color:var(--hero-60);
        font-size:13px;font-weight:600;text-align:left;}
.qa-btn:active{transform:scale(.985);background:var(--hero-10);}
.qa-edit{display:flex;align-items:center;gap:9px;}
.qa-edit .f{flex:1;height:44px;border-radius:100px;background:var(--hero-10);
            padding:0 16px;font-size:16px;font-weight:500;color:var(--hero-ink);}
.qa-edit .f::placeholder{color:var(--hero-40);}
.qa-ok{width:44px;height:44px;border-radius:50%;background:var(--accent);
       color:var(--on-accent);flex:none;display:flex;align-items:center;justify-content:center;}
.qa-ok:active{transform:scale(.93);}
.tline{position:relative;padding-left:64px;flex:none;}
.tline::before{content:'';position:absolute;left:53px;top:8px;bottom:8px;width:2px;
               background:var(--line-2);border-radius:2px;}
.tr{position:relative;display:flex;align-items:center;gap:12px;padding:9px 16px;
    background:var(--card);border-radius:18px;margin-bottom:7px;box-shadow:var(--shadow);}
.tr .tm{position:absolute;left:-64px;width:40px;text-align:right;
        font-family:'Made',sans-serif;font-size:12.5px;font-weight:800;color:var(--ink-38);}
.tr .dot{position:absolute;left:-16px;width:12px;height:12px;border-radius:50%;
         background:var(--bg);box-shadow:inset 0 0 0 2.6px var(--line-strong);}
.tr.br .dot{box-shadow:inset 0 0 0 4px var(--accent);}
.tr p{flex:1;font-size:14px;font-weight:500;}
.tr .lk{display:flex;color:var(--accent);flex:none;}
.tr .fill{height:6px;border-radius:3px;background:var(--line-2);width:44px;flex:none;overflow:hidden;}
.tr .fill u{display:block;height:100%;background:var(--ink-34);border-radius:3px;}
.tr.br .fill u{background:var(--accent);}
.tnow{position:relative;display:flex;align-items:center;gap:10px;margin:3px 0 10px;}
.tnow .tm{position:absolute;left:-64px;width:40px;text-align:right;
          font-family:'Made',sans-serif;font-size:12.5px;font-weight:800;color:var(--accent);}
.tnow .dot{position:absolute;left:-16px;width:12px;height:12px;border-radius:50%;
           background:var(--accent);box-shadow:0 0 0 4px rgba(255,107,44,.22);}
.tnow .ln{flex:1;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--accent),transparent);}
.eve{margin-top:auto;padding-bottom:14px;}
.eve .tile p{font-size:13.5px;line-height:1.42;color:var(--ink-85);}
.who{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
     color:var(--ink-34);margin-bottom:8px;}
.acts2{display:flex;gap:8px;margin-top:10px;}
.acts2 button{flex:1;border-radius:100px;padding:14px 0;text-align:center;font-size:13.5px;font-weight:700;}
.acts2 .o{background:var(--accent);color:var(--on-accent);}
.acts2 .g{background:var(--solid);color:var(--on-solid);}
.acts2 button:active{transform:scale(.97);}
.said{display:flex;align-items:center;gap:9px;margin-top:12px;font-size:13px;
      color:var(--ink-60);animation:rise .3s ease;}
.said .ic{color:var(--accent);display:flex;}
.said b{color:var(--ink);font-weight:700;}

/* ---------- ИНБОКС ---------- */
#s-inbox .hero h1{font-size:30px;line-height:1.05;}
#s-inbox .hero .cap{display:flex;align-items:center;gap:8px;}
.no{font-family:'Geist',monospace;font-size:11px;font-weight:700;letter-spacing:0;
    color:var(--accent);}
.btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;}
.btns button{width:calc(50% - 4px);border-radius:100px;padding:13px 0;text-align:center;
             font-size:12.5px;font-weight:700;background:var(--hero-10);color:var(--hero-ink);}
.btns button.o{background:var(--accent);color:var(--on-accent);}
.btns button.new{background:var(--chip);color:var(--chip-ink);box-shadow:0 0 0 3px rgba(255,107,44,.55);}
.btns button:active{transform:scale(.96);}

/* ---------- ГАЛОЧКА «СДЕЛАНО» ----------
   Мысль можно не раскладывать по дням, а просто закрыть: сделал — тапнул.
   Кружок рисуем маленьким (26px в списке), чтобы он не спорил с текстом, но
   пальцу отдаём 44×44 невидимым запасом вокруг — иначе по нему не попасть, а
   раздувать сам кружок в плотной строке некуда.
   Свайп-удалению галочка не мешает: сдвиг строки начинается только с
   уверенного движения вбок, а простой тап до него не доходит. */
.ibhead{display:flex;align-items:flex-start;gap:14px;}
.ibhead h1{flex:1;min-width:0;}
.ibchk{position:relative;flex:none;display:flex;align-items:center;justify-content:center;
       width:26px;height:26px;border-radius:50%;background:transparent;color:var(--ink-34);
       box-shadow:inset 0 0 0 1.7px var(--line-strong);
       transition:background .16s ease,box-shadow .16s ease,color .16s ease,
                  transform .16s cubic-bezier(.2,.6,.2,1);}
.ibchk::after{content:'';position:absolute;left:-9px;right:-9px;top:-9px;bottom:-9px;}
/* Галочка не всплывает, а ПРОРИСОВЫВАЕТСЯ штрихом — рука человека, а не
   выскочивший значок. stroke-dasharray наследуется внутрь <use>, поэтому
   работает и на общем спрайте. visibility гасит круглый колпачок линии,
   который иначе виден точкой на непрорисованной галочке. */
.ibchk .i{visibility:hidden;stroke-width:3;stroke-dasharray:24;stroke-dashoffset:24;
          transition:stroke-dashoffset .18s ease .04s;}
.ibchk:active{transform:scale(.88);}
.ibchk.big{width:44px;height:44px;margin-top:8px;color:var(--hero-45);
           box-shadow:inset 0 0 0 1.8px var(--hero-18);}
.ibchk.big::after{left:0;right:0;top:0;bottom:0;}
/* «Сделал» — зелёный, не оранжевый: оранжевым в этом окне помечено то, что
   требует внимания (горячие записи, кнопки действия). Готовое не окликает. */
.ibchk.on{background:var(--win);color:var(--on-win);box-shadow:inset 0 0 0 1.7px var(--win);}
.ibchk.big.on{box-shadow:inset 0 0 0 1.8px var(--win);}
.ibchk.on .i{visibility:visible;stroke-dashoffset:0;}
.it.leaving p{color:var(--ink-34);text-decoration:line-through;
              text-decoration-color:var(--ink-34);}
.ibhead.leaving h1{color:var(--hero-45);text-decoration:line-through;
                   text-decoration-color:var(--hero-45);}

.it{background:var(--card);border-radius:18px;padding:14px 16px;margin-bottom:8px;box-shadow:var(--shadow);}
.it .r{display:flex;align-items:center;gap:11px;}
.it .n{font-family:'Geist',monospace;font-size:11.5px;font-weight:700;color:var(--ink-34);
       width:20px;flex:none;}
.it p{flex:1;font-size:14px;font-weight:500;}
.it .age{display:flex;align-items:center;gap:5px;flex:none;}
.it .age i{width:5px;height:5px;border-radius:50%;background:var(--line-strong);display:block;}
.it .age i.hot{background:var(--accent);}
.it .ago{font-size:11px;font-weight:600;color:var(--ink-34);}
.it.old{box-shadow:inset 0 0 0 1.4px rgba(255,107,44,.5);}
.it.old .ago{color:var(--accent);}
.it.old .n{color:var(--accent);}
.alive{display:flex;align-items:center;gap:9px;margin-top:11px;padding-top:11px;
       border-top:1px solid var(--line);font-size:12.5px;color:var(--ink-60);}
.alive .ic{color:var(--accent);display:flex;}
.alive .yn{margin-left:auto;font-size:12px;font-weight:700;color:var(--accent);display:flex;gap:8px;}
.alive .yn button{color:var(--accent);font-weight:700;}
.empty{text-align:center;color:var(--ink-45);font-size:13px;padding:22px 0 4px;}
.add{display:flex;align-items:center;gap:10px;margin-top:auto;padding-bottom:14px;}
.add .f{flex:1;height:50px;border-radius:100px;background:var(--card);display:flex;align-items:center;
        padding:0 20px;font-size:16px;font-weight:500;color:var(--ink);}
.add .f::placeholder{color:var(--ink-38);}
.add .mic{width:50px;height:50px;}

/* выбор конкретного дня */
.sheet{position:fixed;inset:0;z-index:40;display:none;}
.sheet.on{display:block;}
.sheet .veil{position:absolute;inset:0;background:rgba(0,0,0,.44);animation:fade .2s ease;}
.sheet .body{position:absolute;left:0;right:0;bottom:0;background:var(--bg);
             border-radius:28px 28px 0 0;padding:22px 20px 26px;max-width:430px;margin:0 auto;
             animation:up .26s ease;}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}
.sheet h3{font-family:'Made',sans-serif;font-size:21px;font-weight:800;letter-spacing:-.03em;}
.sheet .q{font-size:12.5px;color:var(--ink-60);margin-top:6px;font-weight:500;}
.dlist{margin-top:16px;display:flex;flex-direction:column;gap:7px;}
.dlist button{display:flex;align-items:center;gap:12px;background:var(--card);border-radius:16px;
              padding:13px 16px;text-align:left;box-shadow:var(--shadow);}
.dlist button .dd{font-family:'Made',sans-serif;font-weight:800;font-size:14px;width:34px;flex:none;}
.dlist button .nn{flex:1;font-size:13.5px;font-weight:500;color:var(--ink-85);}
.dlist button .tt{font-size:11.5px;font-weight:600;color:var(--ink-38);}
.dlist button:active{transform:scale(.985);}
.sheet .cancel{width:100%;margin-top:12px;padding:14px 0;border-radius:100px;
               background:var(--solid);color:var(--on-solid);font-weight:700;font-size:13.5px;}
/* «Убрать дело» без рамки: три кнопки подряд — оранжевая, красная в рамке и
   серая — читались как светофор и спорили с главным действием. Опасное
   действие должно быть тихим и не конкурировать с обычным. */
.sheet .cancel.danger{background:none;color:var(--bad);box-shadow:none;
                      margin-top:4px;padding:12px 0;font-size:13px;}

/* ---------- ИТОГ НЕДЕЛИ ---------- */
#s-sum .hero{padding:22px 22px 20px;}
#s-sum .hero h1{font-size:40px;line-height:1.02;}
.bignum{display:flex;align-items:center;gap:14px;margin-top:16px;}
.bignum b{font-family:'Made',sans-serif;font-size:76px;font-weight:800;line-height:.86;
          letter-spacing:-.05em;color:var(--accent);}
.bignum span{font-size:12.5px;font-weight:600;line-height:1.25;color:var(--hero-60);
             text-transform:lowercase;}

/* донат «на что ушла неделя» */
.dwrap{display:flex;align-items:center;gap:18px;}
.donut{width:112px;flex:none;position:relative;}
.donut svg{display:block;width:100%;height:auto;}
.donut .dc{position:absolute;inset:0;display:flex;flex-direction:column;
           align-items:center;justify-content:center;gap:1px;}
.donut .dc b{font-family:'Made',sans-serif;font-size:26px;font-weight:800;letter-spacing:-.04em;
             line-height:1;color:var(--ink);}
.donut .dc span{font-size:9.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
                color:var(--ink-38);}
.dleg{flex:1;display:flex;flex-direction:column;gap:14px;min-width:0;}
.dleg .lr{display:flex;align-items:center;gap:9px;}
.dleg .lr i{width:9px;height:9px;border-radius:3px;flex:none;}
.dleg .lr .nm{flex:1;font-size:12.5px;font-weight:500;color:var(--ink-60);}
.dleg .lr b{font-family:'Made',sans-serif;font-size:14px;font-weight:800;color:var(--ink);}
.dleg .bar{height:4px;border-radius:2px;background:var(--line-2);margin-top:7px;overflow:hidden;}
.dleg .bar u{display:block;height:100%;border-radius:2px;}

/* доли недели полосой (главный экран) */
.split{display:flex;height:14px;border-radius:7px;gap:3px;}
.split u{display:block;height:100%;border-radius:7px;}
.slab{display:flex;gap:15px;margin-top:13px;flex-wrap:wrap;}
.slab div{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;color:var(--ink-60);}
.slab i{width:8px;height:8px;border-radius:3px;flex:none;}
.slab b{font-family:'Made',sans-serif;font-size:12.5px;font-weight:800;color:var(--ink);}

/* динамика самооценки */
.spark{width:100%;}
.spark svg{display:block;width:100%;height:auto;}
.sparklab{display:flex;gap:5px;margin-top:7px;margin-bottom:13px;}
.sparklab span{flex:1;text-align:center;font-size:9.5px;font-weight:600;color:var(--ink-34);}
.sparklab span.on{color:var(--accent);}

/* отпустили / перенесли */
.wins{display:flex;gap:9px;margin-bottom:9px;}
.wcard{flex:1;background:var(--card);border-radius:20px;padding:15px 16px 16px;
       box-shadow:var(--shadow);}
.wcard .wtop{display:flex;align-items:center;justify-content:space-between;}
.wcard .wtop .ic{display:flex;}
.wcard .wtop b{font-family:'Made',sans-serif;font-size:26px;font-weight:800;line-height:1;
               letter-spacing:-.04em;}
.wcard .wnm{font-size:13px;font-weight:700;margin-top:9px;}
.wcard .wsub{font-size:11px;font-weight:500;color:var(--ink-45);margin-top:3px;line-height:1.3;}
.win-1{box-shadow:var(--shadow),inset 0 0 0 1.4px var(--win-soft);}
.win-1 .wtop .ic,.win-1 .wtop b,.win-1 .wnm{color:var(--win);}
.win-2 .wtop .ic,.win-2 .wtop b{color:var(--accent);}

.ask{margin-top:6px;padding-bottom:20px;flex:none;}
.ask .gcap{margin:24px 2px 12px;}
.scale{display:flex;gap:4px;}
.scale button{flex:1;height:46px;border-radius:14px;background:var(--line-2);display:flex;
              align-items:center;justify-content:center;font-family:'Made',sans-serif;font-size:13px;
              font-weight:800;color:var(--ink-38);transition:background .16s ease,color .16s ease;}
.scale button.on{background:var(--accent);color:var(--on-accent);transform:scale(1.06);}
.lab{display:flex;justify-content:space-between;margin-top:8px;font-size:10.5px;
     font-weight:600;color:var(--ink-38);}

/* ---------- ТАБ-БАР ---------- */
.tabs{display:flex;align-items:center;justify-content:space-between;
      padding:14px 26px 26px;border-top:1px solid var(--line);background:var(--bg);flex:none;
      transition:background .25s ease;}
.tabs .t{display:flex;flex-direction:column;align-items:center;gap:5px;
         color:var(--ink-34);font-size:9.5px;font-weight:600;letter-spacing:.01em;}
.tabs .t.on{color:var(--accent);}

/* ---------- ПОДГОНКА ПОД 390x844 ---------- */
#s-home .hero{padding:24px 22px 24px;}
#s-home .weeks.big{height:56px;margin-top:26px;}
#s-home .weeks.big i{height:24px;}
#s-home .weeks.big i.on{height:44px;}
#s-home .weeks.big i.now{height:56px;}
#s-home .sep{margin:22px 0 6px;}
#s-home .task{padding:13px 0;}
#s-home .gcap{margin:30px 2px 15px;}
#s-home .ring .rw{max-width:66px;}

#s-day .hero{padding:20px 22px 17px;}
#s-day .task{padding:9px 0;}
#s-day .foot{margin-top:12px;}
#s-day .gcap{margin:20px 2px 12px;}
#s-day .eve{padding-bottom:12px;}

/* ---------- ПУСТЫЕ СОСТОЯНИЯ ---------- */
.hempty{font-size:13.5px;line-height:1.45;color:var(--hero-60);padding:6px 0 2px;}
.hmore{font-size:12px;font-weight:500;color:var(--hero-45);padding:6px 0 0;}
.tempty{font-size:12.5px;color:var(--ink-45);padding:4px 0 2px;}
.ch.ghost{background:transparent;border:1.2px dashed var(--hero-18);color:var(--hero-40);}
.day.now .d b{color:var(--accent);}

/* ---------- ПРОФИЛЬ ---------- */
.prow{display:flex;align-items:center;gap:12px;background:var(--card);border-radius:18px;
      padding:14px 16px;margin-bottom:8px;box-shadow:var(--shadow);}
.prow .pt{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
          color:var(--ink-38);width:104px;flex:none;line-height:1.25;}
.prow .pv{flex:1;font-size:13.5px;font-weight:500;color:var(--ink-85);line-height:1.35;}
.prow .pe{color:var(--ink-34);display:flex;flex:none;}
.prow:active{transform:scale(.99);}
/* строка «только смотреть»: открытые вопросы про жизнь правятся в чате */
.prow.ro{opacity:.92;}
.prow.ro:active{transform:none;}
.pbtn{width:100%;margin-top:14px;padding:14px 0;border-radius:100px;background:var(--accent);
      color:var(--on-accent);font-weight:700;font-size:13.5px;}
.pbtn:active{transform:scale(.98);}
#s-prof .hero .sub{margin-top:12px;}
/* Кнопка «добавить бронь» упиралась прямо в следующий блок — Тимур заметил
   это лично (11.08 03:46). Отступ отделяет брони от всего остального. */
#prof-brons{flex:none;margin-bottom:24px;}

/* ---------- «ОБО МНЕ»: СВЁРНУТАЯ АНКЕТА ----------
   Полтора десятка ответов на виду превращали профиль в простыню, из-за
   которой не было видно броней. Теперь это одна строка, раскрывается тапом.
   Раскрытость нигде не хранится: открыл окно — снова свёрнуто. */
.acc{flex:none;border-top:1px solid var(--line);padding-top:24px;}
.acc-hd{width:100%;display:flex;align-items:center;gap:10px;text-align:left;
        background:var(--card);border-radius:18px;padding:15px 16px;box-shadow:var(--shadow);}
.acc-hd:active{transform:scale(.99);}
.acc-t{font-size:14px;font-weight:600;color:var(--ink);flex:none;}
.acc-n{flex:1;min-width:0;font-size:12px;font-weight:500;color:var(--ink-38);}
.acc-ch{flex:none;color:var(--ink-34);transition:transform .22s ease;}
.acc.open .acc-ch{transform:rotate(180deg);}
.acc-bd{overflow:hidden;max-height:0;transition:max-height .22s ease;}
.acc-bd.shut{display:none;}
.acc-bd>div{padding-top:10px;}

/* ---------- ОНБОРДИНГ ---------- */
body.onb-open .top,body.onb-open .screens,body.onb-open .tabs{visibility:hidden;}
.onb{position:fixed;inset:0;z-index:60;background:var(--bg);display:flex;flex-direction:column;
     max-width:430px;margin:0 auto;padding:26px 20px 22px;}
.obar{height:4px;border-radius:3px;background:var(--line-2);overflow:hidden;flex:none;}
.obar u{display:block;height:100%;background:var(--accent);border-radius:3px;width:14%;
        transition:width .3s ease;}
.onb-body{flex:1;min-height:0;overflow-y:auto;padding-top:26px;}
.onb-body::-webkit-scrollbar{display:none;}
.onb-head{display:flex;align-items:center;justify-content:space-between;}
.onb-head .cap{color:var(--accent);}
.ostep{font-family:'Geist',monospace;font-size:11px;font-weight:700;color:var(--ink-34);}
.onb h1{font-family:'Made',sans-serif;font-size:32px;font-weight:800;letter-spacing:-.035em;
        line-height:1.06;margin-top:14px;}
.onb h1 i{color:var(--accent);font-style:normal;}
.onb-sub{margin-top:12px;font-size:13.5px;line-height:1.45;color:var(--ink-60);}
.onb-ctl{margin-top:26px;padding-bottom:10px;}

.brow{display:flex;align-items:center;gap:11px;background:var(--card);border-radius:18px;
      padding:11px 12px 11px 14px;margin-bottom:8px;box-shadow:var(--shadow);}
.brow .bic{color:var(--accent);display:flex;flex:none;}
.brow .btxt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.brow .btxt b{font-size:14px;font-weight:600;display:flex;align-items:center;gap:6px;min-width:0;}
.brow .btxt b span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.brow .btxt b .pen{flex:none;color:var(--ink-34);}
.brow .btxt i{font-size:11px;font-weight:500;color:var(--ink-34);font-style:normal;}
.brow .bdel{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;
            justify-content:center;color:var(--ink-34);flex:none;margin-left:2px;}
.brow .bdel:active{transform:scale(.9);color:var(--accent);}
.brow.tapable:active{transform:scale(.99);}
.bnote{display:flex;gap:9px;align-items:flex-start;font-size:12px;line-height:1.4;
       color:var(--ink-45);margin-bottom:12px;}
.bnote .ic{color:var(--accent);display:flex;flex:none;margin-top:1px;}
/* экраны-подводки: показываем, что будет дальше, иначе экран пустой */
.ipre{display:flex;gap:9px;flex-wrap:wrap;margin:2px 0 18px;}
.ipc{display:flex;flex-direction:column;align-items:center;gap:7px;
     width:62px;}
.ipc b{width:48px;height:48px;border-radius:16px;background:var(--card);
       box-shadow:var(--shadow);display:flex;align-items:center;
       justify-content:center;color:var(--accent);}
.ipc i{font-style:normal;font-size:11px;font-weight:600;color:var(--ink-45);
       text-align:center;line-height:1.2;}
.isteps{list-style:none;counter-reset:s;margin:2px 0 18px;display:flex;
        flex-direction:column;gap:9px;}
.isteps li{counter-increment:s;display:flex;align-items:flex-start;gap:11px;
           background:var(--card);border-radius:16px;padding:13px 15px;
           box-shadow:var(--shadow);font-size:13px;font-weight:500;
           line-height:1.35;color:var(--ink-85);}
.isteps li::before{content:counter(s);flex:none;width:22px;height:22px;
                   border-radius:8px;background:var(--accent);color:#fff;
                   font-size:12px;font-weight:800;display:flex;
                   align-items:center;justify-content:center;margin-top:-1px;}
.badd{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;
      padding:14px 0;border-radius:100px;background:var(--card);color:var(--accent);
      font-size:13.5px;font-weight:700;box-shadow:var(--shadow);margin-top:2px;}
.badd:active{transform:scale(.98);}
.badd.off{color:var(--ink-34);box-shadow:none;background:var(--line-2);}
.bhint{font-size:11.5px;color:var(--ink-34);text-align:center;margin-top:9px;line-height:1.4;}
.bempty{text-align:center;color:var(--ink-45);font-size:13px;padding:14px 0 18px;line-height:1.45;}

/* лист правки брони */
.sheet.high{z-index:80;}
.sheet .body>.gcap{margin:18px 0 10px;}
.bcnt{display:flex;align-items:center;justify-content:space-between;background:var(--card);
      border-radius:18px;padding:11px 12px 11px 16px;margin-top:9px;box-shadow:var(--shadow);}
.bcl{font-size:13.5px;font-weight:600;}
.igrid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;}
.igrid button{aspect-ratio:1;border-radius:16px;background:var(--card);color:var(--ink-60);
              display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);
              transition:background .14s ease,color .14s ease;}
.igrid button.on{background:var(--accent);color:var(--on-accent);}
.igrid button:active{transform:scale(.94);}
.pbtn.danger{background:var(--card);color:var(--accent);box-shadow:var(--shadow);}
.stp{display:flex;align-items:center;gap:10px;flex:none;}
.stp button{width:30px;height:30px;border-radius:50%;background:var(--line-2);
            display:flex;align-items:center;justify-content:center;font-size:17px;
            font-weight:700;color:var(--ink-60);line-height:1;}
.stp button:active{transform:scale(.9);}
.stp b{font-family:'Made',sans-serif;font-size:16px;font-weight:800;width:16px;text-align:center;}

.ochips{display:flex;flex-wrap:wrap;gap:8px;}
.och{border-radius:100px;padding:13px 18px;font-size:13.5px;font-weight:600;
     background:var(--card);color:var(--ink-85);box-shadow:var(--shadow);
     transition:background .16s ease,color .16s ease;}
.och.on{background:var(--accent);color:var(--on-accent);}
.och:active{transform:scale(.96);}
.ochips.small .och{padding:11px 0;width:calc(14.28% - 7px);text-align:center;font-size:12.5px;}

.otext{width:100%;background:var(--card);border-radius:18px;padding:15px 16px;
       font-size:16px;font-weight:500;line-height:1.4;box-shadow:var(--shadow);resize:none;}
.otext::placeholder{color:var(--ink-34);}

.onb-foot{display:flex;align-items:center;gap:10px;flex:none;padding-top:14px;}
.oback{width:52px;height:52px;border-radius:50%;background:var(--card);color:var(--ink-60);
       display:flex;align-items:center;justify-content:center;flex:none;box-shadow:var(--shadow);}
.oback:active{transform:scale(.94);}
.onext{flex:1;height:52px;border-radius:100px;background:var(--accent);color:var(--on-accent);
       font-size:14.5px;font-weight:700;}
.onext:active{transform:scale(.98);}

.sfield{margin-top:14px;}
.sfield .f{width:100%;height:50px;border-radius:100px;background:var(--card);
           padding:0 20px;font-size:16px;font-weight:500;box-shadow:var(--shadow);}

/* полоса «отдать боту» — появляется, только когда боту правда есть что забрать */
.handoff{display:flex;align-items:center;gap:11px;flex:none;
         padding:11px 20px;margin:0 14px 8px;border-radius:16px;
         background:var(--accent);color:var(--on-accent);}
.handoff.hide{display:none;}
.handoff .hx{display:flex;opacity:.85;}
.handoff .ht{display:flex;flex-direction:column;line-height:1.25;min-width:0;flex:1;}
.handoff .ht b{font-size:13.5px;font-weight:700;letter-spacing:-.01em;}
.handoff .ht i{font-style:normal;font-size:11px;opacity:.75;}
.handoff button{flex:none;padding:8px 15px;border-radius:11px;font-size:12.5px;
                font-weight:700;background:var(--on-accent);color:var(--accent);
                transition:transform .12s ease;}
.handoff button:active{transform:scale(.94);}

/* ---------- ТУПИК: открыто не через кнопку «Планировщик» ---------- */
/* полоса «не сохранилось»: поверх знакомства, но нажатия пропускает сквозь */
/* ---------- СВАЙП: УБРАТЬ ДЕЛО ПАЛЬЦЕМ ----------
   Кнопка лежит под карточкой и открывается сдвигом. Сам сдвиг ничего не
   удаляет — удаляет только отдельное нажатие на крестик: случайное движение
   пальцем по списку не должно стоить человеку дела. */
.srow{position:relative;overflow:hidden;}
.srow>.sdel{position:absolute;right:0;top:2px;bottom:2px;width:66px;display:flex;
            align-items:center;justify-content:center;background:var(--bad);
            color:var(--on-bad);border-radius:12px;opacity:0;transition:opacity .18s ease;}
.srow.card>.sdel{border-radius:0 18px 18px 0;top:0;bottom:0;}
.srow.open>.sdel{opacity:1;}
.srow>.sdel:active{filter:brightness(.92);}
.srow>.task{position:relative;z-index:1;background:var(--hero);
            transition:transform .22s cubic-bezier(.2,.7,.3,1);}
.srow.drag>.task{transition:none;}
.srow.open>.task{transform:translateX(-66px);}
/* инбокс: карточка со своим фоном и скруглением, поэтому радиус уезжает на обёртку */
.srow.card{border-radius:18px;box-shadow:var(--shadow);margin-bottom:8px;
           transition:height .22s cubic-bezier(.2,.6,.2,1),opacity .18s ease,
                      margin-bottom .22s cubic-bezier(.2,.6,.2,1);}
/* Отмеченная строка складывается по высоте, а не исчезает рывком: соседи
   съезжают вверх плавно, и глаз видит, КУДА делась запись. Схлопывается
   обёртка целиком — у неё и отступ, и тень, иначе на месте строки остался бы
   пустой зазор с тенью. */
.srow.card.gone{height:0 !important;opacity:0;margin-bottom:0;overflow:hidden;
                pointer-events:none;}
.srow.card>.it{margin-bottom:0;box-shadow:none;
               transition:transform .22s cubic-bezier(.2,.7,.3,1);position:relative;z-index:1;}
.srow.card.drag>.it{transition:none;}
.srow.card.open>.it{transform:translateX(-66px);}

/* ---------- ПОЯС СМЕНИЛСЯ ---------- */
.tzbar{flex:none;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
       margin:0 20px 12px;padding:13px 15px;border-radius:18px;background:var(--card);
       box-shadow:var(--shadow);}
.tzbar.hide{display:none;}
.tzbar .tzi{color:var(--accent);display:flex;flex:none;}
.tzbar .tzt{flex:1;min-width:150px;font-size:13px;font-weight:600;line-height:1.35;color:var(--ink);}
.tzbar .tzb{display:flex;align-items:center;gap:8px;flex:none;}
.tzbar button{border-radius:999px;padding:8px 14px;font-size:12.5px;font-weight:700;
              background:var(--accent);color:var(--on-accent);}
.tzbar button.ghost{background:none;color:var(--ink-60);padding:8px 6px;}
.tzbar button:active{transform:scale(.96);}

/* ---------- «ВЕРНУТЬ» ПОСЛЕ УДАЛЕНИЯ ---------- */
.undobar{position:fixed;left:50%;transform:translateX(-50%);bottom:92px;z-index:80;
         width:calc(100% - 40px);max-width:390px;display:flex;align-items:center;
         justify-content:space-between;gap:12px;padding:12px 16px;border-radius:16px;
         background:var(--hero);color:var(--hero-ink);box-shadow:0 8px 24px rgba(0,0,0,.22);
         animation:up .2s ease;overflow:hidden;}
.undobar.hide{display:none;}
/* Полоска-таймер: плашка пропадает сама через три секунды, и человек должен
   видеть, сколько их осталось, а не гадать. Двигается scaleX — рисовать
   заново каждый кадр браузеру не приходится. */
.undobar .bar{position:absolute;left:0;bottom:0;height:2px;width:100%;
              background:var(--hero-18);transform-origin:left;
              animation:drain 3s linear forwards;}
@keyframes drain{from{transform:scaleX(1)}to{transform:scaleX(0)}}
.undobar .ut{font-size:13px;font-weight:600;line-height:1.3;}
.undobar button{flex:none;border-radius:999px;padding:7px 15px;font-size:12.5px;
                font-weight:700;background:var(--accent);color:var(--on-accent);}
.undobar button:active{transform:scale(.96);}

.syncbar{position:fixed;top:0;left:0;right:0;z-index:90;display:flex;
         align-items:center;justify-content:center;gap:10px;pointer-events:none;
         padding:9px 14px;background:var(--accent);color:var(--on-accent);
         font-size:12.5px;font-weight:700;line-height:1.35;text-align:center;
         box-shadow:0 4px 16px rgba(0,0,0,.16);}
.syncbar.hide{display:none;}
.syncbar button{pointer-events:auto;flex:none;border:0;cursor:pointer;
                background:rgba(255,255,255,.22);color:inherit;font:inherit;
                border-radius:100px;padding:5px 12px;}

.nosync{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;
        background:rgba(0,0,0,.5);animation:fade .2s ease;}
.nosync.hide{display:none;}
.nosync .body{width:100%;max-width:430px;margin:0 auto;background:var(--bg);
              border-radius:28px 28px 0 0;padding:26px 22px 26px;animation:up .26s ease;}
.nosync .ns-ic{width:60px;height:60px;border-radius:20px;display:flex;
               align-items:center;justify-content:center;background:var(--accent);
               color:var(--on-accent);margin-bottom:16px;}
.nosync h3{font-family:'Made',sans-serif;font-size:23px;font-weight:800;
           letter-spacing:-.03em;line-height:1.1;}
.nosync p{margin-top:10px;font-size:13.5px;line-height:1.5;color:var(--ink-60);font-weight:500;}
.nosync p b{color:var(--ink);font-weight:700;}
.nosync .ns-hint{display:flex;align-items:center;justify-content:center;gap:10px;
                 margin-top:18px;padding:13px 16px;border-radius:16px;background:var(--card);
                 box-shadow:var(--shadow);font-size:12.5px;font-weight:600;color:var(--ink-85);}
.nosync .ns-arrow{color:var(--accent);animation:nsdown 1.4s ease-in-out infinite;}
@keyframes nsdown{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
.nosync .pbtn{width:100%;margin-top:18px;}
.nosync .cancel{width:100%;margin-top:10px;padding:14px 0;border-radius:100px;
                background:transparent;color:var(--ink-45);font-weight:600;font-size:13px;}

/* индикатор «правки не доехали до бота» — маленький, но заметный */
.conn{display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:50%;color:#fff;background:#FF6B2C;
  animation:connp 1.6s ease-in-out infinite}
.conn.hide{display:none}
@keyframes connp{0%,100%{opacity:1}50%{opacity:.45}}

/* ---------- ПЕРЕНОС ДЕЛА / БРОНИ ---------- */
/* подпись «какая именно неделя перед глазами» и день на главном */
#home-when{color:var(--hero-70);font-weight:700;}
.dcap{color:var(--hero-45);margin:14px 0 8px;}
/* дела и брони в календаре нажимаются — показываем это пальцу */
.cal .ch{cursor:pointer;}
.cal .ch:active{transform:scale(.94);}
.mvdays{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:4px;}
.mvdays button{display:flex;flex-direction:column;align-items:center;gap:2px;
  background:var(--card);border-radius:14px;padding:9px 0 8px;border:1.5px solid transparent;}
.mvdays button .dd{font-family:'Made',sans-serif;font-weight:800;font-size:15px;}
.mvdays button .nn{font-size:9.5px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-38);}
.mvdays button.on{border-color:var(--accent);background:rgba(255,107,44,.10);}
.mvdays button.on .dd,.mvdays button.on .nn{color:var(--accent);}
.mvdays button:active{transform:scale(.94);}
/* ---------- БАРАБАНЫ ВРЕМЕНИ ----------
   Два колеса рядом, как в айфоне: крутятся пальцем с инерцией (обычная
   прокрутка браузера), встают ровно на значение (scroll-snap), тап по
   соседнему числу тоже его выбирает. Долгий тап по минутам переключает шаг
   5 → 1, чтобы добить 07:47 точно. */
.tpick{margin-top:6px;}
.wheels{position:relative;display:flex;align-items:stretch;justify-content:center;
        gap:26px;height:132px;overflow:hidden;}
.wheels.off{opacity:.35;pointer-events:none;}
.wheels .band{position:absolute;left:0;right:0;top:50%;height:38px;margin-top:-19px;
              border-radius:12px;background:var(--line-2);pointer-events:none;}
.wheel{flex:0 0 108px;height:100%;overflow-y:auto;overflow-x:hidden;
       scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch;
       overscroll-behavior:contain;position:relative;z-index:1;
       scrollbar-width:none;text-align:center;}
.wheel::-webkit-scrollbar{display:none;}
.wheel .wv{height:38px;line-height:38px;scroll-snap-align:center;
           font-family:'Geist',monospace;font-size:22px;font-weight:700;
           color:var(--ink-34);transition:color .15s ease,transform .15s ease;}
.wheel .wv.on{color:var(--ink);transform:scale(1.06);}
.wheel .pad{height:47px;}
.wsep{align-self:center;font-family:'Geist',monospace;font-size:20px;font-weight:700;
      color:var(--ink-38);z-index:1;}
.tprow{display:flex;align-items:center;justify-content:space-between;gap:10px;
       margin-top:4px;padding:0 2px;}
.tpnow{font-family:'Geist',monospace;font-size:13px;font-weight:700;color:var(--ink);}
/* переключатель шага — именно кнопка. Голым оранжевым текстом в углу он
   читался как предупреждение об ошибке, а не как «нажми меня» */
.tpstep{font-size:11px;font-weight:600;color:var(--ink-38);padding:5px 11px;
        border-radius:999px;box-shadow:inset 0 0 0 1.2px var(--line-2);}
.tpstep.on{color:var(--accent);box-shadow:inset 0 0 0 1.2px var(--accent);}
.tpstep:active{transform:scale(.95);}
/* быстрые кнопки времени: типовой час ставится одним тапом, барабан крутить
   вообще не надо */
.quick{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px;}
.quick button{border-radius:999px;padding:9px 13px;font-size:12.5px;font-weight:600;
              background:var(--card);color:var(--ink-85);box-shadow:var(--shadow);}
.quick button.on{background:var(--accent);color:var(--on-accent);}
.quick button:active{transform:scale(.95);}
/* лист создания: календарь сверху обязан остаться виден */
.sheet.nsh .body{max-height:64vh;overflow-y:auto;}
.grip{width:38px;height:4px;border-radius:2px;background:var(--line-strong);
      margin:0 auto 12px;}
.nsdays{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;}
.nsdays button{display:flex;flex-direction:column;align-items:center;gap:2px;
               padding:8px 0;border-radius:13px;background:var(--card);
               box-shadow:var(--shadow);}
.nsdays button .dd{font-family:'Made',sans-serif;font-weight:800;font-size:15px;}
.nsdays button .nn{font-size:9.5px;font-weight:700;letter-spacing:.08em;
                   text-transform:uppercase;color:var(--ink-38);}
.nsdays button.on{background:var(--accent);}
.nsdays button.on .dd,.nsdays button.on .nn{color:var(--on-accent);}
.nsdays button:active{transform:scale(.94);}
.nswhen{margin-top:11px;font-family:'Made',sans-serif;font-size:17px;font-weight:800;
        letter-spacing:-.02em;}
.nsh .sfield{margin-top:10px;}
/* лист переноса тоже подрос от барабанов — не даём ему съесть весь экран */
.sheet.high .body{max-height:82vh;overflow-y:auto;}

.mvtime{display:flex;align-items:center;gap:8px;margin-top:4px;}
.mvtime .f{flex:1;}
.mvclr{flex:none;padding:12px 14px;border-radius:100px;background:var(--card);
  font-size:12.5px;font-weight:600;color:var(--ink-60);}
.mvclr:active{transform:scale(.96);}

/* ---------- КОМУ АНИМАЦИЯ МЕШАЕТ ----------
   В системе можно попросить «поменьше движения» — тогда строка не складывается
   плавно, а просто уходит, и полоска-таймер не ползёт. Смысл сохраняется,
   движение убирается. */
@media (prefers-reduced-motion: reduce) {
  .srow.card{transition:none;}
  .ibchk,.ibchk .i{transition:none;}
  .undobar .bar{animation:none;}
}

/* ---------- КАЛЕНДАРЬ АЙФОНА ----------
   Дела дублируются в отдельный календарь «Планировщик». Свой Apple ID человек
   вписывает сам: мы его не спрашиваем и обратно целиком не показываем.
   Всё держим внутри #prof-cal — имена вроде .sw или .eye слишком общие, чтобы
   пускать их гулять по всему листу. */
#prof-cal .crow{display:flex;align-items:center;gap:12px;cursor:pointer;}
#prof-cal .ct{flex:1;font-size:14px;font-weight:600;letter-spacing:-.01em;line-height:1.3;}
#prof-cal .cs{display:block;margin-top:2px;font-size:11.5px;font-weight:500;color:var(--ink-45);}
#prof-cal .sw{position:relative;flex:none;width:46px;height:28px;}
#prof-cal .sw input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;}
#prof-cal .sw i{position:absolute;inset:0;border-radius:100px;background:var(--ink-34);
      transition:background .18s ease;pointer-events:none;}
#prof-cal .sw i:after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;
      border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.18);
      transition:transform .18s ease;}
#prof-cal .sw input:checked + i{background:var(--accent);}
#prof-cal .sw input:checked + i:after{transform:translateX(18px);}
#prof-cal .pwf{position:relative;}
#prof-cal .pwf .f{padding-right:54px;}
#prof-cal .pwf .eye{position:absolute;right:7px;top:7px;width:36px;height:36px;border-radius:50%;
      display:flex;align-items:center;justify-content:center;color:var(--ink-45);}
#prof-cal .pwf .eye:active{transform:scale(.94);}
#prof-cal .csay{margin-top:13px;font-size:12.5px;line-height:1.45;color:var(--ink-60);}
#prof-cal .csay:empty{display:none;}
#prof-cal .csay.good{color:var(--accent);font-weight:600;}
#prof-cal .csay.bad{color:var(--bad);font-weight:600;}
#prof-cal .chint{margin-top:13px;font-size:11.5px;line-height:1.55;color:var(--ink-45);}
#prof-cal .chint b{font-weight:600;color:var(--ink-60);}
/* поля внутри карточки уже лежат на своей подложке — вторая тень выглядит
   грязно, а первый отступ тут лишний: над ним переключатель */
#prof-cal .sfield .f{box-shadow:none;background:var(--bg);}
