/* v13 воронка /start — дизайн-токены макета TASK-416 (светлая тема sand/sage/clay).
   Namespace .ffn, страница standalone (без общего header/menu). */
.ffn{
  --sand:#f5f3ee;--ink:#2c2a26;--mut:#8a857c;--sage:#6f8f7a;--clay:#c0796a;--bd:#e7e3da;--amb:#c9a24b;
  --cbg:var(--sand);--cpanel:#fff;--cfg:var(--ink);--cmut:var(--mut);--cbd:var(--bd);
  --cacc:var(--sage);--csoft:#eef3ef;--r:16px;
  margin:0 auto;max-width:412px;min-height:100vh;min-height:100dvh;
  overflow-x:hidden;
  background:var(--cbg);color:var(--cfg);
  font-family:system-ui,-apple-system,sans-serif;line-height:1.5;
  -webkit-font-smoothing:antialiased;
  /* iOS safe-area: учитываем челку/статус-бар сверху и home-indicator снизу (viewport-fit=cover) */
  padding:calc(18px + env(safe-area-inset-top,0px)) 20px calc(40px + env(safe-area-inset-bottom,0px));
}
html:has(.ffn){background:var(--cbg, #f5f3ee);overflow-x:hidden}
body.ffn{box-sizing:border-box}
.ffn *{box-sizing:border-box}

.ffn .ffn-step[hidden]{display:none}
/* [hidden] обязан работать и на flex/grid-строках (иначе видны пустые .devrow и т.п.) */
.ffn [hidden]{display:none!important}

.ffn .backl{display:inline-block;border:none;background:none;padding:0;margin:0 0 10px;
  font:inherit;font-size:12px;font-weight:800;color:var(--cmut);cursor:pointer}
.ffn .prog{font-size:10.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;
  color:var(--cacc);margin:0 0 8px}
.ffn .fh{font-size:23px;font-weight:900;letter-spacing:-.02em;line-height:1.2;margin:0 0 8px}
.ffn .fs{font-size:13.5px;color:var(--cmut);margin:0 0 16px}
.ffn .cap{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;
  color:var(--cmut);margin:0 0 8px}
.ffn .card{background:var(--cpanel);border:1px solid var(--cbd);border-radius:var(--r);
  padding:16px;margin:0 0 12px}
.ffn .growl{font-size:11px;color:var(--cmut);margin:6px 0 0}

/* опции-строки */
.ffn .opt{display:flex;align-items:center;gap:11px;border:1px solid var(--cbd);background:var(--cpanel);
  border-radius:14px;padding:12px 14px;margin:0 0 8px;cursor:pointer;text-decoration:none;color:inherit}
.ffn .opt .ic{flex:none;width:34px;height:34px;border-radius:10px;background:var(--csoft);
  display:flex;align-items:center;justify-content:center;font-size:16px}
.ffn .opt .t{flex:1;min-width:0;line-height:1.35}
.ffn .opt .t b{display:block;font-size:13.5px}
.ffn .opt .t span{font-size:11px;color:var(--cmut)}
.ffn .opt .mk{flex:none;width:20px;height:20px;border-radius:50%;border:2px solid var(--cbd)}
.ffn .opt.on{border-color:var(--cacc);background:var(--csoft)}
.ffn .opt.on .mk{border-color:var(--cacc);background:var(--cacc);
  box-shadow:inset 0 0 0 3.5px var(--cpanel)}
.ffn .opt .st{flex:none;font-size:12px;font-weight:800;color:var(--cmut)}
.ffn .opt .tag{flex:none;font-size:9.5px;font-weight:900;color:var(--cacc);border:1px solid var(--cacc);
  border-radius:99px;padding:2px 8px;text-transform:uppercase;letter-spacing:.04em}

/* кнопки */
.ffn .btn{display:block;width:100%;text-align:center;background:var(--cacc);color:#fff;
  font:inherit;font-weight:800;font-size:14px;padding:13px;border-radius:14px;border:none;
  cursor:pointer;margin:14px 0 0;text-decoration:none}
.ffn .btn:disabled{opacity:.5;cursor:default}
.ffn .btnghost{display:block;width:100%;text-align:center;border:1px solid var(--cbd);
  background:var(--cpanel);color:var(--cmut);font:inherit;font-weight:800;font-size:13.5px;
  padding:12px;border-radius:14px;cursor:pointer;margin:10px 0 0;text-decoration:none}

/* пример-строка (легкий вход, уговор) */
.ffn .exn{display:flex;gap:10px;align-items:flex-start}
.ffn .exn .no{flex:none;width:26px;height:26px;border-radius:50%;background:var(--csoft);
  color:var(--cacc);display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:900}
.ffn .exn p{margin:0;font-size:12.5px;line-height:1.5;color:var(--cmut)}
.ffn .exn p b{color:var(--cfg)}

/* экран сбора */
.ffn .ldrow{display:flex;align-items:center;gap:10px;padding:9px 0}
.ffn .ldrow .mk2{flex:none;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:12px;font-weight:900;background:var(--csoft);color:var(--cacc)}
.ffn .ldrow .t2{flex:1;min-width:0;font-size:13px;line-height:1.35}
.ffn .ldrow .t2 b{font-weight:800}
.ffn .ldrow .t2 span{display:block;font-size:11px;color:var(--cmut)}
.ffn .ldrow.off{opacity:.45}
.ffn .ldb{height:7px;border-radius:99px;background:var(--csoft);overflow:hidden;margin:6px 0 2px}
.ffn .ldb i{display:block;height:100%;border-radius:99px;background:var(--cacc);
  animation:ffld 2.4s ease-in-out infinite}
@keyframes ffld{0%{width:12%}65%{width:84%}100%{width:12%}}
.ffn .pulse{animation:ffpulse 1.6s ease-in-out infinite}
@keyframes ffpulse{0%,100%{opacity:1}50%{opacity:.45}}

.ffn .devrow{display:flex;align-items:center;gap:11px;padding:8px 0}
.ffn .devrow .ic{flex:none;width:34px;height:34px;border-radius:10px;background:var(--csoft);
  display:flex;align-items:center;justify-content:center;font-size:16px}
.ffn .devrow .t{flex:1;min-width:0;line-height:1.35}
.ffn .devrow .t b{display:block;font-size:13.5px}
/* только прямые дети: спаны ВНУТРИ <b> (лейбл · значение) остаются inline */
.ffn .devrow .t > span{display:block;font-size:11px;color:var(--cmut)}
.ffn .devrow.dim{opacity:.45;transition:opacity .5s ease}
.ffn .devrow.dim.live{opacity:1}
.ffn .pv{font-variant-numeric:tabular-nums}
a.devrow{text-decoration:none;color:inherit;cursor:pointer}
.ffn .devrow .ch{flex:none;color:var(--cmut);font-size:15px}
.ffn .devrow .st{flex:none;font-size:11px;font-weight:800;color:var(--cmut)}
.ffn .devrow .st.on{color:var(--cacc)}
.ffn .zbar{flex:none;width:34px;height:12px;border-radius:7px;background:var(--cacc)}
.ffn .zbar.hot{background:var(--clay)}
.ffn .opt.dim{opacity:.4;cursor:default}
.ffn .btndanger{display:block;width:100%;text-align:center;background:var(--clay);color:#fff;
  font:inherit;font-weight:800;font-size:14px;padding:13px;border-radius:14px;border:none;
  cursor:pointer;margin:14px 0 0}
.ffn .btndanger:disabled{opacity:.45;cursor:default}
.ffn .pvs{display:block;font-size:11px;color:var(--cmut)}
.ffn .recs{display:block;margin-top:2px;min-height:22px}
.ffn .rc{display:inline-block;background:var(--csoft);color:var(--cacc);font-weight:800;
  font-size:11px;padding:2px 8px;border-radius:99px;margin:3px 5px 0 0;
  opacity:0;transform:scale(.6);transition:opacity .35s ease,transform .35s ease}
.ffn .rc.show{opacity:1;transform:scale(1)}

/* свободный ввод цели */
.ffn .freetxt{border:1.5px dashed var(--cbd);background:var(--cpanel);border-radius:14px;
  padding:12px;margin:0 0 8px}
.ffn .freetxt textarea{width:100%;border:none;background:none;resize:vertical;font:inherit;
  font-size:13px;color:var(--cfg);outline:none;min-height:54px}
.ffn .freetxt textarea::placeholder{color:var(--cmut);font-style:italic}

/* поля уточнения (.finp — НЕ .fin: тот занят финальным заголовком лендинга .ld .fin) */
.ffn .finp{flex:none;width:118px;border:1px solid var(--cbd);border-radius:10px;background:var(--cpanel);
  font:inherit;font-size:13px;padding:8px 10px;color:var(--cfg);outline:none}
.ffn .finp:focus{border-color:var(--cacc)}

/* целевое время — пара селектов ч/мин (п2, заход 5) */
.ffn .tsel{flex:none;display:flex;gap:6px}
.ffn .fsel{width:82px;border:1px solid var(--cbd);border-radius:10px;background:var(--cpanel);
  font:inherit;font-size:13px;padding:8px 6px;color:var(--cfg);outline:none;appearance:auto}
.ffn .fsel:focus{border-color:var(--cacc)}

/* «свой объем» — степпер часов, виден только у выбранного варианта (п1, заход 5) */
.ffn .vstep{display:none;margin-top:8px;align-items:center;gap:10px}
.ffn .opt.on .vstep{display:flex}
.ffn .vbtn{flex:none;width:36px;height:36px;border-radius:10px;border:1px solid var(--cbd);
  background:var(--cpanel);font:inherit;font-size:19px;font-weight:800;color:var(--cfg);
  cursor:pointer;line-height:1}
.ffn .vbtn:active{background:var(--csoft);border-color:var(--cacc)}
.ffn .vval{font-size:14px;font-weight:800;min-width:96px;text-align:center;color:var(--cfg)}

/* ── страница плановой тренировки /plan/day/N (заход 5 п4) ── */
.ffn .pd-meta{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 4px}
.ffn .pd-meta .chip{font-style:normal;background:var(--csoft);border:1px solid var(--cbd);
  border-radius:8px;padding:4px 9px;font-size:11.5px;font-weight:800;color:var(--cfg)}
.ffn .pd-block .pdb-cap{margin-top:0;display:flex;align-items:center;gap:6px}
.ffn .pd-block .pdb-ic{font-size:14px}
.ffn .pd-block .pdb-dur{font-weight:800;color:var(--cmut);text-transform:none;letter-spacing:0}
.ffn .pd-step{display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  padding:9px 0;border-top:1px solid var(--cbd)}
.ffn .pd-step:first-child{border-top:none;padding-top:2px}
.ffn .pd-step .tx{font-size:13.5px;line-height:1.45;min-width:0}
.ffn .pd-step .ch{flex:none;font-size:11.5px;font-weight:800;color:var(--cacc);text-align:right;
  max-width:38%}
.ffn .pd-feel{background:var(--csoft)}
.ffn .pd-feel-txt,.ffn .pd-plain-txt{margin:0;font-size:13.5px;line-height:1.55}
.ffn .pd-plain-txt{white-space:pre-wrap}

/* ── нижний таббар «дома» (заход 5 п3): фиксирован, safe-area iOS, активный таб акцентом ── */
.ffn .tabbar{position:fixed;bottom:0;left:0;right:0;margin:0 auto;max-width:412px;
  display:flex;background:var(--cpanel);border-top:1px solid var(--cbd);z-index:50;
  padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));box-sizing:border-box}
.ffn .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
  text-decoration:none;color:var(--cmut);font-size:10px;font-weight:800;padding:4px 0;border-radius:10px}
.ffn .tabbar a .tic{display:flex;line-height:1}
.ffn .tabbar a .tic svg{width:23px;height:23px;display:block}
.ffn .tabbar a.on{color:var(--cacc);background:var(--csoft)}
/* контент не прячется под таббар (html:has уже используется выше — поддержка есть) */
body.ffn:has(.tabbar){padding-bottom:calc(78px + env(safe-area-inset-bottom,0px))}
body.ffn:has(.ffn-step){padding-top:calc(18px + env(safe-area-inset-top,0px))}

/* ── эго-экран /ego (v13 p1, те же токены) ── */
.ffn .hero{display:flex;align-items:flex-start;justify-content:space-between}
.ffn .hero .n{font-size:78px;font-weight:900;letter-spacing:-.045em;line-height:.95}
.ffn .hero .n small{font-size:40px;font-weight:900} /* дробная часть мельче (макет) */
.ffn .whatis{display:inline-flex;align-items:center;gap:5px;margin:8px 0 0;cursor:pointer;
  border:1px solid var(--cbd);border-radius:99px;background:var(--cpanel);
  color:var(--cmut);font-size:11.5px;font-weight:800;padding:5px 11px;text-decoration:none}
.ffn .stat{text-align:right}
.ffn .stat .chip{display:inline-block;background:var(--csoft);border:1px solid var(--cacc);
  color:var(--cacc);font-size:12.5px;font-weight:900;border-radius:99px;padding:5px 12px}
.ffn .stat .dlt{font-size:13px;font-weight:900;color:var(--cacc);margin:8px 0 0}
.ffn .stat .dlt.up{color:var(--sage)}
.ffn .stat .dlt.down{color:var(--clay)}
.ffn .stat .dls{font-size:10.5px;color:var(--cmut);font-weight:700}
/* путь к цели (лента) и серия недель — макет p1 */
.ffn .path{margin:6px -20px 0;padding:4px 20px 2px;overflow-x:auto;scrollbar-width:none}
.ffn .path::-webkit-scrollbar{display:none}
.ffn .pathin{display:flex;align-items:stretch;min-width:max-content;padding:2px 0 4px;justify-content:safe center}
.ffn .seg{flex:none;width:20px;height:3px;border-radius:99px;margin-top:17px;background:var(--cbd)}
.ffn .seg.on{background:var(--cacc)}
.ffn .seg.dash{background:repeating-linear-gradient(90deg,var(--cbd) 0 5px,transparent 5px 9px)}
.ffn .pcard{flex:none;width:96px;background:var(--cpanel);border:1px solid var(--cbd);
  border-radius:14px;padding:9px 10px}
.ffn .pcard .dot{width:11px;height:11px;border-radius:50%;border:2.5px solid var(--cbd);
  background:var(--cpanel);margin:0 0 6px}
.ffn .pcard.passed .dot,.ffn .pcard.now .dot{background:var(--cacc);border-color:var(--cacc)}
.ffn .pcard.now{border:2px solid var(--cacc);padding:8px 9px}
.ffn .pcard .fv{display:flex;flex-direction:column;gap:1px;min-height:26px;
  font-size:9px;color:var(--cmut);font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;margin:0 0 3px}
.ffn .pcard .fv .d{color:var(--cfg);font-weight:900;letter-spacing:.02em}
.ffn .pcard .rv{font-size:16px;font-weight:900;margin:0}
.ffn .pcard .pv{font-size:10px;color:var(--cmut);margin:2px 0 0}
.ffn .pcard.goal{border-style:dashed}
.ffn .pcard .fl{color:var(--cacc);font-weight:900}
.ffn .wbars{display:flex;align-items:flex-end;gap:6px;height:64px;margin:14px 0 0}
.ffn .wbars i{flex:1;min-height:8%;border-radius:4px 4px 0 0;
  background:var(--cacc);opacity:.4}
.ffn .wbars i.cur{opacity:1}
/* fchart — форма-график (ИСТОРИЯ → СЕГОДНЯ → ПРОГНОЗ) */
.fchart{display:flex;flex-direction:column;gap:0}
.fchart-zones{display:flex;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);margin:0 0 6px}
.fchart-zones .z-past{flex:6;text-align:left}
.fchart-zones .z-now{flex:1.35;text-align:center;color:var(--sage)}
.fchart-zones .z-fc{flex:3;text-align:right;color:var(--clay)}
.fchart-bars{display:flex;align-items:flex-end;gap:5px;height:104px;padding-top:22px;position:relative}
.fchart-bars .b-sep{width:1px;align-self:stretch;background:var(--bd);margin:0 3px;flex-shrink:0}
.fchart-bars .b-hist{flex:1;background:var(--cacc);opacity:.4;border-radius:5px 5px 0 0}
.fchart-bars .b-now{flex:1.35;background:var(--sage);border-radius:6px 6px 0 0;position:relative;box-shadow:0 2px 8px rgba(111,143,122,.35)}
.fchart-bars .b-now .b-label{position:absolute;top:-19px;left:50%;transform:translateX(-50%);font-size:13px;font-weight:900;color:var(--ink);white-space:nowrap}
.fchart-bars .b-fc{flex:1;background:repeating-linear-gradient(135deg,rgba(192,121,106,.18),rgba(192,121,106,.18) 4px,rgba(192,121,106,.07) 4px,rgba(192,121,106,.07) 8px);border:1px solid var(--clay);border-bottom:none;border-radius:5px 5px 0 0;position:relative}
.fchart-bars .b-fc .b-label{position:absolute;top:-19px;left:50%;transform:translateX(-50%);font-size:12px;font-weight:900;color:var(--clay);white-space:nowrap}
.fchart.lowdata .b-hist-placeholder{flex:6;align-self:stretch;display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(135deg,var(--csoft,#f4f2ec),var(--csoft,#f4f2ec) 6px,var(--sand,#faf9f5) 6px,var(--sand,#faf9f5) 12px);border-radius:6px;color:var(--mut);font-size:11px;font-weight:700;text-align:center;line-height:1.35;padding:0 6px}
.fchart-axis{display:flex;gap:5px;margin:8px 0 0;font-size:9.5px;color:var(--mut);text-align:center}
.fchart-axis .ax-past{flex:6}
.fchart-axis .ax-sep{width:1px;margin:0 3px;flex-shrink:0}
.fchart-axis .ax-now{flex:1.35;color:var(--sage);font-weight:800}
.fchart-axis .ax-fc{flex:3;color:var(--clay)}
.fchart-note{margin:10px 0 0;font-size:11.5px;color:var(--mut);line-height:1.4}
.ffn .coachline{font-size:14.5px;line-height:1.45;margin:14px 0 0}
.ffn .coachline span{color:var(--cmut)}
.ffn .staterow{display:flex;gap:8px;margin:14px 0 0;align-items:stretch}
.ffn .stbox{flex:1;background:var(--cpanel);border:1px solid var(--cbd);border-radius:12px;
  padding:9px 10px;line-height:1.3;text-decoration:none;color:inherit}
/* v3: плитки ряда — колонки равной высоты; ссылка «что это значит» уходит вниз,
   на один уровень с «Неделя N» соседней карточки прогресса (апрув Ильи) */
.ffn .staterow .stbox{display:flex;flex-direction:column;min-width:0}
.ffn .staterow .stbox > .stlink{margin-top:auto}
/* v3: фокус недели — широкая строка на всю ширину под рядом, текст целиком (не колонкой) */
.ffn .stfocus{display:block;background:var(--cpanel);border:1px solid var(--cbd);border-radius:12px;
  padding:10px 11px;margin:8px 0 0;line-height:1.35;text-decoration:none;color:inherit}
.ffn .stfocus > span{display:block;font-size:9px;color:var(--cmut);font-weight:800;
  text-transform:uppercase;letter-spacing:.05em;margin:0 0 4px}
.ffn .stfocus > b{font-size:13.5px;font-weight:700;line-height:1.4}
.ffn .stfocus > .stlink{margin-top:6px}
.ffn .stbox span{display:block;font-size:9px;color:var(--cmut);font-weight:800;
  text-transform:uppercase;letter-spacing:.05em;margin:0 0 3px}
.ffn .stbox b{font-size:12px}
.ffn .stbox .stlink{display:block;font-style:normal;font-size:10px;font-weight:800;
  color:var(--cacc);margin-top:3px}
.ffn .stprog .stpct{display:block;font-size:17px;font-weight:900;letter-spacing:-.02em;line-height:1.1;margin:2px 0 0}
.ffn .stprog .sthrs{display:block;font-size:10px;color:var(--cmut);font-weight:700;margin-top:2px}
.ffn .stprog .stbar{display:block;height:4px;border-radius:99px;background:var(--csoft);margin-top:7px;overflow:hidden}
.ffn .stprog .stfill{display:block;height:100%;background:var(--cacc);border-radius:99px;width:0}
.ffn .stprog .stwk{margin-top:4px;font-style:normal}
.ffn .stbox .stval-row{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;
  color:inherit;text-transform:none;letter-spacing:normal;font-weight:inherit;margin:0}
.ffn .stval{display:block;font-style:normal;font-size:11px;font-weight:700;color:var(--ink);line-height:1.35;margin-top:4px;white-space:normal}
.ffn .stval-tsb{color:var(--cmut)}
.ffn .stbox #ego-state.lvl-over{color:var(--clay)}
.ffn .stbox #ego-state.lvl-light{color:var(--amb)}
.ffn .stbox #ego-state.lvl-norm{color:var(--sage)}
.ffn .stbox b#ego-state{font-size:14px;font-weight:900;line-height:1.2}
.ffn .nextcard{display:flex;align-items:center;justify-content:space-between;gap:8px;
  background:var(--csoft);border:1px solid var(--cbd);border-radius:14px;
  padding:12px 14px;margin:14px 0 0;cursor:pointer;text-decoration:none;color:inherit}
.ffn .nextcard .t{font-size:13.5px;font-weight:800}
.ffn .nextcard .t span{display:block;font-size:11px;color:var(--cmut);font-weight:700}
.ffn .nextcard .go{color:var(--cacc);font-size:12.5px;font-weight:800;white-space:nowrap}
.ffn .lastw{display:block;background:var(--cpanel);border:1px solid var(--cbd);border-radius:14px;
  padding:12px 14px;margin:0;cursor:pointer;text-decoration:none;color:inherit}
.ffn .lastw[hidden]{display:none}
.ffn .lastw .top{display:flex;align-items:baseline;justify-content:space-between;gap:8px;
  font-size:13.5px;font-weight:800}
.ffn .lastw .top #ego-last-when{color:var(--cacc);font-size:12.5px;white-space:nowrap}
.ffn .lastw .contrib{flex:none;text-align:right;white-space:nowrap}
.ffn .lastw .contrib b{display:block;font-size:15px;font-weight:900;line-height:1}
.ffn .lastw .contrib s{display:block;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--cmut);text-decoration:none;margin-top:2px}
.ffn .lastw .contrib.up b{color:var(--cacc)} .ffn .lastw .contrib.down b{color:#e08a7a}
.ffn .wrow .wd.up{color:var(--cacc)} .ffn .wrow .wd.down{color:#e08a7a}
.ffn .wrow .wd.na{color:var(--cmut);font-weight:600}
.ffn .chips{display:flex;flex-wrap:wrap;gap:6px;margin:9px 0 0}
.ffn .chips i{font-style:normal;background:var(--csoft);border:1px solid var(--cbd);border-radius:8px;
  padding:3px 8px;font-size:11.5px;font-weight:700;color:var(--cfg);white-space:nowrap}
.ffn .wrow{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--cbd);
  cursor:pointer;font-size:13px;text-decoration:none;color:inherit}
.ffn .wrow:last-child{border-bottom:none}
.ffn .wrow .ic{flex:none;width:30px;height:30px;border-radius:9px;background:var(--csoft);
  display:flex;align-items:center;justify-content:center;font-size:14px}
.ffn .wrow .t{flex:1;line-height:1.3}
.ffn .wrow .t b{display:block;font-size:13px}
.ffn .wrow .t span{font-size:11px;color:var(--cmut)}
.ffn .wrow .wd{flex:none;font-size:11.5px;font-weight:900;color:var(--cacc)}
.ffn .wrow .ch{color:var(--cmut);font-size:15px}
.ffn .wrow.hist{display:none}
.ffn .wrow.dtotal{font-weight:900;border-top:1px solid var(--cbd)}
.ffn .wrow.dtotal .t b{font-size:12px;color:var(--cmut)}
.ffn .wmore{display:block;text-align:center;padding:12px 0 9px;border-top:1px solid var(--cbd);
  color:var(--cacc);font-size:12.5px;font-weight:800;cursor:pointer}
.ffn .wmore[hidden]{display:none}

/* ── v13 план недели /plan (TASK-416 p3) ── */
.ffn .pday{display:flex;align-items:flex-start;gap:12px;padding:11px 12px;margin:0 -4px;
  border-bottom:1px solid var(--cbd);border-radius:12px}
.ffn .pday:last-child{border-bottom:none}
.ffn .pday .dw{flex:none;width:30px;font-size:11px;font-weight:900;color:var(--cmut);
  letter-spacing:.04em;padding-top:2px}
.ffn .pday .t{flex:1;min-width:0;line-height:1.35}
.ffn .pday .t b{display:block;font-size:13.5px}
.ffn .pday .t > span{display:block;font-size:11px;color:var(--cmut)}
.ffn .pday .mk3{flex:none;font-size:14px;font-weight:900;color:var(--cacc)}
.ffn .pday .mk3:empty{display:none}
.ffn .pday.rest .t b{color:var(--cmut);font-weight:700}
.ffn .pday.on{border:1px solid var(--cacc);background:var(--csoft);margin:0 -4px}
.ffn .pday[role=button],.ffn .pday[role=link]{cursor:pointer;-webkit-tap-highlight-color:transparent}
.ffn .pday[role=button]:hover,.ffn .pday[role=link]:hover{background:var(--csoft)}
.ffn .pday .pchev{flex:none;font-size:15px;font-weight:900;color:var(--cmut);
  line-height:1;padding-top:1px}
.ffn .pdet{padding:2px 12px 12px 54px}
.ffn .pdet .pdet-d{margin:0 0 8px;font-size:12.5px;line-height:1.5;color:var(--cmut);
  white-space:pre-line}
.ffn .pdet .pdet-m{margin:0;font-size:11.5px;font-weight:800;color:var(--cacc)}
.ffn .mobars{display:flex;gap:8px;align-items:flex-end}
.ffn .mocol{flex:1;text-align:center}
.ffn .mocol i{display:block;background:var(--cbd);border-radius:8px 8px 4px 4px;margin:0 6px}
.ffn .mocol.on i{background:var(--cacc)}
.ffn .mocol .lb{display:block;font-size:9.5px;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:var(--cmut);margin-top:6px}
.ffn .mocol b{display:block;font-size:12.5px}
.ffn .mocol .sm{display:block;font-size:9.5px;color:var(--cmut);font-weight:800;
  text-transform:uppercase;min-height:12px}
.ffn .excard .exh{margin:0 0 8px;font-size:14px;font-weight:800}
.ffn .excard .exd{margin:0 0 8px;font-size:12.5px;line-height:1.5;color:var(--cmut);
  white-space:pre-line}
.ffn .excard .exm{margin:0;font-size:11.5px;font-weight:800;color:var(--cacc)}

/* ── v13 страница «Форма — что это» /form (TASK-416 p4) ── */
.ffn .mini{margin:12px 0 2px}
.ffn .grow{display:flex;gap:4px;align-items:flex-end;height:44px;margin:8px 0 0}
.ffn .grow i{flex:1;border-radius:3px 3px 0 0;background:var(--cacc)}
.ffn .grow i.dn{background:var(--clay);opacity:.6}
.ffn .growx{display:flex;gap:4px;margin:4px 0 0}
.ffn .growx > span{flex:1;text-align:center;font-size:8.5px;color:var(--cmut);font-weight:700;line-height:1.4}
.ffn .growx > span b{display:block;font-size:10.5px;color:var(--cfg)}
.ffn .lvl{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--cbd);
  font-size:13px}
.ffn .lvl:last-of-type{border-bottom:none}
.ffn .lvl .r{flex:none;width:64px;font-weight:900;color:var(--cmut);font-size:12px}
.ffn .lvl .b{flex:none;width:8px;height:8px;border-radius:50%;background:var(--cbd)}
.ffn .lvl.me .b{background:var(--cacc);box-shadow:0 0 0 3px var(--csoft)}
.ffn .lvl .t{flex:1;line-height:1.35}
.ffn .lvl.me{background:var(--csoft);border-radius:10px;padding:8px 10px;margin:0 -10px;border-bottom:none}
.ffn .lvl.me .t b{color:var(--cacc)}

/* ── v13 поделиться /share (TASK-416 p6) ── */
.ffn .shc{background:linear-gradient(155deg,#25402f,#15171a 72%);border-radius:20px;
  padding:18px 18px 14px;color:#f2efe8;margin:0 0 4px}
.ffn .shc .top{display:flex;justify-content:space-between;font-size:10px;font-weight:800;
  letter-spacing:.08em;opacity:.75;text-transform:uppercase}
.ffn .shc .big{font-size:21px;font-weight:900;margin:13px 0 2px;letter-spacing:-.01em}
.ffn .shc .chips{margin-top:8px}
.ffn .shc .chips i{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16);color:#f2efe8}
.ffn .shc .frm{display:flex;align-items:baseline;gap:9px;margin:14px 0 0}
.ffn .shc .frm .nn{font-size:42px;font-weight:900;letter-spacing:-.04em;line-height:1}
.ffn .shc .frm .dd{color:#8fbf9e;font-weight:900;font-size:13.5px}
.ffn .shc .frm .dd small{display:block;font-weight:700;font-size:10px;opacity:.7}
.ffn .shc .ft{display:flex;justify-content:space-between;font-size:10.5px;opacity:.6;
  margin:10px 0 0;font-weight:700}
.ffn .shc.nobg{background:repeating-conic-gradient(#e7e3da 0% 25%, #fff 0% 50%) 50%/22px 22px;
  color:var(--ink)}
.ffn .shc.nobg .chips i{background:rgba(44,42,38,.06);border-color:rgba(44,42,38,.15);color:var(--ink)}
.ffn .shc.nobg .frm .dd{color:var(--sage)}
.ffn .shtog{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0}
.ffn .shtog i{font-style:normal;border:1px solid var(--cbd);border-radius:99px;padding:4px 10px;
  font-size:11.5px;font-weight:700;color:var(--cmut);background:var(--cpanel);cursor:pointer}
.ffn .shtog i.on{border-color:var(--cacc);color:var(--cacc);background:var(--csoft)}

/* ── лендинг v13 (тон A) ── */
.ffn .ld .lnav{display:flex;justify-content:space-between;align-items:center;margin:0 0 14px}
.ffn .ld .logo{font-weight:800;letter-spacing:-.02em;font-size:19px}
.ffn .ld .logo b{color:var(--cacc)}
.ffn .ld .lnav span{color:var(--cmut);font-size:13px;font-weight:700;cursor:pointer}
.ffn .ld .eye{color:var(--cacc);font-size:12px;font-weight:800;text-transform:uppercase;
  letter-spacing:.07em;margin:0 0 8px}
.ffn .ld h1{font-size:27px;line-height:1.15;letter-spacing:-.02em;font-weight:800;margin:0 0 12px}
.ffn .ld h1 .hl{color:var(--cacc)}
.ffn .ld .sub{color:var(--cmut);font-size:15px;margin:0 0 16px}
.ffn .ld .reass{text-align:center;color:var(--cmut);font-size:12px;margin:8px 0 0}
.ffn .ld .row{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--cbd)}
.ffn .ld .row:last-child{border-bottom:none}
.ffn .ld .dot{flex:none;width:11px;height:11px;border-radius:50%;margin-top:5px;background:var(--cacc)}
.ffn .ld .dot.now{background:var(--cmut)}
.ffn .ld .dot.bad{background:var(--clay)}
.ffn .ld .when{font-size:11.5px;color:var(--cmut);font-weight:800;margin:0 0 2px}
.ffn .ld .feel{font-size:13.5px;margin:0}
.ffn .ld .feel.good{color:var(--cacc);font-weight:700}
.ffn .ld .feel.warn{color:var(--clay)}
.ffn .ld .step{display:flex;gap:11px;margin:0 0 11px;align-items:flex-start}
.ffn .ld .step:last-child{margin:0}
.ffn .ld .step .n{flex:none;width:23px;height:23px;border-radius:50%;background:var(--cacc);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900}
.ffn .ld .step .t b{font-size:13.5px}
.ffn .ld .step .t span{color:var(--cmut);font-size:12.5px;display:block}
.ffn .ld .wc b{font-size:13.5px;display:block;margin:0 0 3px}
.ffn .ld .wc span{color:var(--cmut);font-size:12.5px}
.ffn .ld .fr{display:flex;gap:10px;padding:8px 0;align-items:flex-start;font-size:13.5px;font-weight:700}
.ffn .ld .fr small{display:block;color:var(--cmut);font-size:12px;font-weight:400;margin-top:2px}
.ffn .ld .fr .m{flex:none;width:22px;height:22px;border-radius:50%;background:var(--csoft);
  color:var(--cacc);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900}
.ffn .ld .fr .m.pay{color:var(--clay)}
.ffn .ld .fin{text-align:center;font-size:16px;font-weight:800;margin:22px 0 0}
/* email-модалка входа */
.ffn .modal-back{position:fixed;inset:0;background:rgba(44,42,38,.45);display:flex;
  align-items:flex-end;justify-content:center;z-index:50}
.ffn .modal-back[hidden]{display:none}
.ffn .modal{width:100%;max-width:412px;background:var(--cpanel);border-radius:22px 22px 0 0;
  padding:20px 20px 28px}
.ffn .modal .fh{font-size:19px}
.ffn .modal input[type=email]{width:100%;border:1px solid var(--cbd);border-radius:12px;
  background:var(--cpanel);font:inherit;font-size:15px;padding:12px 14px;color:var(--cfg);
  outline:none;margin:8px 0 0}
.ffn .modal input[type=email]:focus{border-color:var(--cacc)}
.ffn .modal .err{color:var(--clay);font-size:12px;margin:6px 0 0;min-height:16px}

/* ── v13 страница тренировки /workout/{id} (TASK-416 p2 / TASK-419) ── */
.ffn .wk-back{display:inline-block;font-size:12px;font-weight:800;color:var(--cmut);
  text-decoration:none;margin:0 0 10px}
.ffn .wk-h{font-size:21px;font-weight:900;letter-spacing:-.02em;line-height:1.2;margin:0 0 6px}
.ffn .wk-sub{font-size:13px;color:var(--cmut);margin:0}
.ffn .wk-sub2{font-size:12px;color:var(--cmut);margin:2px 0 14px}
.ffn .wk-fx{display:flex;justify-content:space-between;align-items:center;
  background:var(--csoft);border-radius:12px;padding:10px 14px;margin:0 0 12px;
  font-size:12.5px;font-weight:700}
.ffn .wk-fx .d{color:var(--cacc);font-weight:900}
.ffn .wk-mapw{border-radius:12px;overflow:hidden;position:relative}
.ffn #wk-map{height:260px;width:100%;background:var(--csoft)}
.ffn .wk-chart{margin:0}
.ffn .wk-chart svg{width:100%;height:auto;display:block}
.ffn .chartl{display:flex;justify-content:space-between;font-size:10px;color:var(--cmut);margin-top:4px}
.ffn .mnote{font-size:11px;color:var(--cmut);margin:8px 0 0;line-height:1.45}
.ffn .sp{display:flex;align-items:center;gap:10px;margin:0 0 7px}
.ffn .sp .k{flex:none;width:26px;font-size:11px;font-weight:800;color:var(--cmut)}
.ffn .sp .bar{flex:1;height:12px;background:var(--csoft);border-radius:7px;overflow:hidden}
.ffn .sp .bar i{display:block;height:100%;background:var(--cacc);border-radius:7px}
.ffn .sp .bar i.hot{background:var(--clay)}
.ffn .sp .v{flex:none;min-width:44px;text-align:right;font-size:12px;font-weight:800;
  font-variant-numeric:tabular-nums}
.ffn .card.an p{font-size:13.5px;margin:0 0 10px;line-height:1.55}
.ffn .card.an p:last-child{margin:0}
.ffn .lgl{display:inline-block;width:16px;height:4px;border-radius:99px;vertical-align:middle;margin-right:4px}
.ffn .lgl.easy{background:var(--cacc)}
.ffn .lgl.work{background:var(--clay)}
/* leaflet поверх нашего масштаба шрифтов */
.ffn .leaflet-container{font:inherit;font-size:11px}

/* TASK-432 /state — scope под #state, иначе .staterow/.stbox затирают верстку /ego (центрирование) */
.ffn #state .staterow { display: flex; gap: 20px; padding: 8px 0; }
.ffn #state .stbox { display: flex; flex-direction: column; align-items: center; }
.ffn #state .stbox .big { font-size: 30px; font-weight: 900; font-variant-numeric: tabular-nums; }
.ffn #state .stbox .big small { font-size: 18px; font-weight: 900; } /* дробная часть формы мельче, как на /ego */
.ffn .lgd { font-size: 12px; color: var(--cmut); margin: 4px 0 2px; display: flex; gap: 12px; }

/* offline banner */
.ff-offline-banner {
    display: block;
    width: 100%;
    padding: 6px 16px;
    background: #F2C94C;
    color: #1a1a1a;
    font-size: 13px;
    text-align: center;
    font-weight: 500;
    letter-spacing: 0.01em;
}
.ff-offline-banner[hidden] {
    display: none !important;
}
body.ffn > :not(nav.tabbar){transition:opacity .2s ease}
body.ffn.ff-navout > :not(nav.tabbar){opacity:0}
@media (prefers-reduced-motion:reduce){body.ffn,body.ffn > :not(nav.tabbar){transition:none}}

/* TASK-484: share-card «Week in numbers» bottom-sheet */
.ffn #sc-overlay{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;justify-content:flex-end;background:rgba(44,42,38,.38)}
.ffn #sc-overlay[hidden]{display:none}
.ffn .sc-sheet{background:var(--cpanel);border-radius:var(--r) var(--r) 0 0;width:100%;max-width:412px;margin:0 auto;box-sizing:border-box;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px))}
.ffn .sc-handle{width:36px;height:4px;border-radius:99px;background:var(--cbd);margin:10px auto 0}
.ffn .sc-head{display:flex;align-items:flex-start;justify-content:space-between;padding:14px 16px 2px}
.ffn .sc-title{font-size:17px;font-weight:900;letter-spacing:-.02em;color:var(--cfg);line-height:1.2}
.ffn .sc-sub{font-size:12px;color:var(--cmut);padding:2px 16px 0}
.ffn .sc-close-btn{width:26px;height:26px;border-radius:50%;background:var(--cbg);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;color:var(--cmut)}
.ffn .sc-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:14px 16px 8px;box-sizing:border-box}
.ffn .sc-cell{background:var(--cbg);border-radius:12px;padding:11px 13px;box-sizing:border-box}
.ffn .sc-cell-label{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--cmut);margin-bottom:4px}
.ffn .sc-cell-val{font-size:24px;font-weight:900;letter-spacing:-.03em;line-height:1;color:var(--cfg)}
.ffn .sc-cell-val.pos{color:var(--cacc)}
.ffn .sc-cell-val.neg{color:var(--clay)}
.ffn .sc-cell-unit{font-size:12px;font-weight:600;color:var(--cmut);margin-left:2px}
.ffn .sc-cell-delta{font-size:10.5px;font-weight:800;margin-top:3px;color:var(--cmut)}
.ffn .sc-cell-delta.pos{color:var(--cacc)}
.ffn .sc-cell-delta.neg{color:var(--clay)}
.ffn .sc-spark-wrap{padding:2px 16px 10px;box-sizing:border-box}
.ffn .sc-spark-label{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--cmut);margin-bottom:6px}
.ffn .sc-sparkline{display:flex;align-items:flex-end;gap:4px;height:36px}
.ffn .sc-sparkline .sc-bar{flex:1;border-radius:3px 3px 0 0;min-height:4px;background:var(--csoft)}
.ffn .sc-sparkline .sc-bar.on{background:var(--cacc)}
.ffn .sc-sparkline .sc-bar.neg{background:var(--clay)}
.ffn .sc-info-hint{margin:8px 16px 14px;padding:10px 12px;background:var(--csoft);border-radius:10px;font-size:12px;color:var(--cacc);font-weight:600;box-sizing:border-box;display:none}
.ffn .sc-goal-wrap{padding:0 16px 12px;box-sizing:border-box}
.ffn .sc-goal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}
.ffn .sc-goal-label{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--cmut)}
.ffn .sc-goal-pct{font-size:13.5px;font-weight:900;color:var(--cfg)}
.ffn #sc-share{margin:14px 16px 8px;width:calc(100% - 32px);display:block}
.ffn #sc-dismiss{margin:0 16px 16px;width:calc(100% - 32px);display:block}
.ffn .sc-no-goal #sc-goal-cell,.ffn .sc-no-goal .sc-goal-wrap{display:none}
.ffn .sc-low-form #sc-form-cell,.ffn .sc-low-form #sc-spark{display:none}
.ffn .sc-low-form .sc-info-hint{display:block}
@keyframes sc-pulse{0%,100%{opacity:1}50%{opacity:.45}}
.ffn .sc-skel{border-radius:7px;background:var(--cbd);animation:sc-pulse 1.5s ease-in-out infinite}
