/* X5 ПРОКАЧАЙ ТЕЛО - стили Mini App.
   Один файл, без сборки и препроцессоров. В эталоне привычек CSS лежал инлайном в index.html
   и там уже завелись дубли - здесь он вынесен нормально.
   Тема: три состояния - светлая, системная тёмная, явно выбранная тёмная. */

:root{
  --accent:#E63946; --accent-d:#C42E3B; --accent-l:rgba(230,57,70,.12);
  --bg:#F5F1EA; --card:#FFFFFF; --ink:#0A0A0A; --muted:#8C8780;
  --line:rgba(10,10,10,.10); --fill:rgba(10,10,10,.05);
  --ok:#2FBF71; --warn:#F5A623; --bad:#E63946;
  --radius:14px; --radius-lg:20px;
  --safe-top:env(safe-area-inset-top,0px); --safe-bot:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0E0E10; --card:#1B1B1E; --ink:#F5F3EF; --muted:#8E8A84;
  --line:rgba(255,255,255,.10); --fill:rgba(255,255,255,.06); --accent-l:rgba(230,57,70,.2);
}}
:root[data-theme="dark"]{
  --bg:#0E0E10; --card:#1B1B1E; --ink:#F5F3EF; --muted:#8E8A84;
  --line:rgba(255,255,255,.10); --fill:rgba(255,255,255,.06); --accent-l:rgba(230,57,70,.2);
}
/* цветовые схемы акцента, работают в обеих темах */
:root[data-scheme="emerald"]{--accent:#34C759;--accent-d:#248A3D;--accent-l:rgba(52,199,89,.16)}
:root[data-scheme="ocean"]{--accent:#2AABEE;--accent-d:#1E8FCC;--accent-l:rgba(42,171,238,.16)}
:root[data-scheme="teal"]{--accent:#00BFA5;--accent-d:#019E8A;--accent-l:rgba(0,191,165,.16)}
:root[data-scheme="amber"]{--accent:#F5A623;--accent-d:#D98C10;--accent-l:rgba(245,166,35,.16)}
:root[data-scheme="fuchsia"]{--accent:#FF375F;--accent-d:#D62A4E;--accent-l:rgba(255,55,95,.16)}
:root[data-scheme="indigo"]{--accent:#7B7CFF;--accent-d:#5F60E6;--accent-l:rgba(123,124,255,.18)}
:root[data-scheme="graphite"]{--accent:#B9B2A6;--accent-d:#8C8780;--accent-l:rgba(185,178,166,.18)}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text",Inter,"Segoe UI",Roboto,sans-serif;
  background:var(--bg);color:var(--ink);font-size:15px;line-height:1.4;-webkit-font-smoothing:antialiased}
.wrap{max-width:640px;margin:0 auto;padding:calc(var(--safe-top) + 14px) 16px calc(var(--safe-bot) + 32px)}
.screen{display:none}.screen.active{display:block}
.hidden{display:none !important}
.muted{color:var(--muted)}.center{text-align:center}.right{text-align:right}
.nowrap{white-space:nowrap}

/* ---------- типографика ---------- */
.h1{font-size:30px;font-weight:800;letter-spacing:-.5px;margin:2px 0}
.h2{font-size:22px;font-weight:800;letter-spacing:-.3px;margin:2px 0}
.brand{color:var(--accent)}
.sub{color:var(--muted);font-size:14px;margin-bottom:18px}
.lbl{font-weight:700;font-size:13px;color:var(--muted);text-transform:uppercase;
  letter-spacing:.4px;margin:16px 2px 8px}

/* ---------- карточки ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:16px;margin-bottom:12px;box-shadow:0 1px 2px rgba(0,0,0,.03),0 8px 24px rgba(0,0,0,.05)}
.card.tight{padding:12px 16px}
.stat{display:flex;gap:10px;align-items:baseline}
.stat b{font-size:34px;font-weight:800;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.stat .u{color:var(--muted);font-size:14px}
.pill{display:inline-block;background:var(--accent-l);color:var(--accent);font-weight:700;
  font-size:12px;padding:5px 12px;border-radius:20px;white-space:nowrap}
.pill.ok{background:rgba(47,191,113,.14);color:var(--ok)}
.pill.warn{background:rgba(245,166,35,.16);color:var(--warn)}
.pill.grey{background:var(--fill);color:var(--muted)}
.kv{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:14px}
.kv:first-child{border-top:none}
.kv b{font-variant-numeric:tabular-nums}

/* ---------- кнопки и поля ---------- */
.btn{display:block;width:100%;background:var(--accent);color:#fff;border:none;border-radius:14px;
  padding:15px;font-size:16px;font-weight:700;font-family:inherit;cursor:pointer;transition:.15s;margin-top:4px}
.btn:active{transform:scale(.99)}
.btn:disabled{opacity:.45;cursor:default}
.btn:hover:not(:disabled){background:var(--accent-d)}
.btn.sec{background:var(--fill);color:var(--ink)}
.btn.sec:hover:not(:disabled){background:var(--line)}
.btn.sm{padding:10px 14px;font-size:14px;width:auto}
input.txt{width:100%;border:1px solid var(--line);background:var(--card);border-radius:12px;
  padding:13px 14px;font-size:16px;font-family:inherit;color:var(--ink);outline:none;margin-bottom:10px}
input.txt:focus{border-color:var(--accent)}
/* 16px обязательны: на iOS Safari поле с меньшим шрифтом зумит вьюпорт при фокусе */
textarea{width:100%;border:none;background:var(--fill);border-radius:12px;padding:12px;font-size:16px;
  color:var(--ink);outline:none;resize:none;font-family:inherit;min-height:64px}
textarea::placeholder,input::placeholder{color:var(--muted)}
label.row{display:flex;align-items:center;gap:10px;padding:12px 0;cursor:pointer;font-weight:600}
.tgl{flex:none;width:44px;height:27px;border-radius:20px;background:var(--fill);position:relative;transition:.2s}
.tgl::after{content:"";position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:.2s}
.tgl.on{background:var(--ok)}.tgl.on::after{transform:translateX(17px)}
.chk{cursor:pointer;user-select:none;align-items:flex-start}
.cbox{flex:none;width:24px;height:24px;border-radius:7px;border:2px solid var(--line);margin-top:1px;
  display:flex;align-items:center;justify-content:center;transition:background .15s,border-color .15s}
.chk.on .cbox{background:var(--ok);border-color:var(--ok)}
.chk.on .cbox::after{content:"✓";color:#fff;font-size:14px;font-weight:800}
.chk:hover .cbox{border-color:var(--accent)}
/* сегмент: пол, режим */
.seg{display:flex;gap:8px}
.seg button{flex:1;background:var(--fill);border:2px solid transparent;color:var(--ink);
  font-family:inherit;font-weight:600;font-size:15px;padding:14px 8px;border-radius:12px;
  cursor:pointer;transition:.15s}
.seg button.on{background:var(--accent-l);border-color:var(--accent);color:var(--accent)}

/* ---------- вкладки ---------- */
.tabs{display:flex;gap:6px;background:var(--fill);border-radius:14px;padding:4px;
  margin:0 0 16px;position:sticky;top:calc(var(--safe-top) + 6px);z-index:5;isolation:isolate}
/* прилипшая панель прозрачная - без непрозрачной подложки контент просвечивает сквозь неё.
   ::before выходит за края на паддинги .wrap, чтобы не было щелей слева и справа */
.tabs::before{content:"";position:absolute;inset:calc(-1 * (var(--safe-top) + 20px)) -16px -6px;
  background:var(--bg);z-index:-1}
.tab{flex:1;text-align:center;padding:9px 4px;border-radius:11px;font-weight:600;font-size:14px;
  color:var(--muted);cursor:pointer;transition:.15s}
.tab.on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.tab:hover{color:var(--ink)}

/* ---------- шапка дня ---------- */
.day-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.day-nav button{background:none;border:none;color:var(--accent);font-size:24px;width:36px;height:36px;cursor:pointer}
/* только первая буква: text-transform:capitalize делал бы «Суббота, 12 Сентября» */
.date-sub{text-align:center;font-size:14px;color:var(--muted);margin:0 0 10px}
.date-sub::first-letter{text-transform:uppercase}
.weekstrip{display:flex;gap:4px;margin-bottom:16px}
.wd-cell{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;padding:6px 0;
  border:none;background:transparent;cursor:pointer;border-radius:12px}
.wd-lbl{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.wd-num{width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:15px;
  font-weight:700;color:var(--ink);border-radius:11px;font-variant-numeric:tabular-nums;transition:.15s}
.wd-cell.today .wd-num{color:var(--accent)}
.wd-cell.sel .wd-num{background:var(--accent);color:#fff}
.wd-cell.off{opacity:.32;pointer-events:none}
.wd-cell:hover .wd-num{background:var(--accent-l)}
.wd-cell.sel:hover .wd-num{background:var(--accent)}
.wd-dp{font-size:9px;color:var(--muted);letter-spacing:.2px}
.wd-cell.sel .wd-dp{color:var(--accent)}

/* ---------- упражнения дня ---------- */
.ex{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-top:1px solid var(--line)}
.ex:first-child{border-top:none}
.check{flex:none;width:32px;height:32px;border-radius:50%;border:2px solid var(--line);
  display:flex;align-items:center;justify-content:center;font-size:16px;color:#fff;
  background:transparent;cursor:pointer;transition:.15s;margin-top:2px}
.check.on{background:var(--ok);border-color:var(--ok)}
.check:hover{border-color:var(--accent)}
.ex .body{flex:1;min-width:0}
.ex .name{font-weight:700;font-size:16px;display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.ex .norm{font-weight:600;font-size:14px;color:var(--accent);font-variant-numeric:tabular-nums}
.ex .factrow{display:flex;align-items:center;gap:8px;margin-top:8px}
.ex .num{width:96px;border:1px solid var(--line);background:var(--card);border-radius:10px;
  padding:9px 10px;font-size:16px;font-family:inherit;color:var(--ink);outline:none;
  text-align:center;font-variant-numeric:tabular-nums;-moz-appearance:textfield}
.ex .num::-webkit-outer-spin-button,.ex .num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.ex .num:focus{border-color:var(--accent)}
.ex .unit{font-size:13px;color:var(--muted)}
.ex .hint{font-size:12px;color:var(--muted);margin-left:auto;text-align:right}

/* полоска прогресса */
.bar{height:8px;border-radius:6px;background:var(--fill);overflow:hidden;margin-top:8px}
.bar i{display:block;height:100%;background:var(--accent);border-radius:6px;transition:width .3s}
.bar.ok i{background:var(--ok)}
.bar.big{height:12px}

/* ---------- уровни ---------- */
.lvl{border:2px solid var(--line);background:var(--card);border-radius:16px;padding:14px;
  margin-bottom:10px;cursor:pointer;transition:.15s}
.lvl.on{border-color:var(--accent);background:var(--accent-l)}
.lvl .t{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.lvl .t b{font-size:17px;font-weight:800}
.lvl .t span{font-size:13px;color:var(--muted);white-space:nowrap}
.lvl .d{font-size:14px;color:var(--muted);margin-top:4px}
.lvl.on .d{color:var(--ink)}
.free-grid{display:flex;gap:8px;margin-top:10px}
.free-grid .f{flex:1}
.free-grid label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}
.free-grid input{width:100%;border:1px solid var(--line);background:var(--card);border-radius:10px;
  padding:10px 6px;font-size:16px;font-family:inherit;color:var(--ink);outline:none;
  text-align:center;font-variant-numeric:tabular-nums;-moz-appearance:textfield}
.free-grid input::-webkit-outer-spin-button,.free-grid input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.free-grid input:focus{border-color:var(--accent)}
.fc{display:grid;grid-template-columns:1fr auto auto;gap:6px 10px;font-size:14px;align-items:baseline}
.fc .hd{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.fc b{font-variant-numeric:tabular-nums}

/* ---------- рейтинг ---------- */
.rrow{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.rrow:first-child{border-top:none}
.rrow .pl{font-weight:800;font-size:17px;width:34px;color:var(--accent);font-variant-numeric:tabular-nums}
.rrow .nm{flex:1;min-width:0}
.rrow .nm b{font-weight:600;display:block}
.rrow .nm .meta{font-size:12px;color:var(--muted)}
.rrow .pt{font-weight:800;font-variant-numeric:tabular-nums}
.rrow.me{background:var(--accent-l);border-radius:12px;padding:12px;margin:4px -12px;
  border-top-color:transparent;box-shadow:inset 0 0 0 1px var(--accent)}
.rrow.me + .rrow{border-top-color:transparent}
.rrow.me .nm b,.rrow.me .pt{color:var(--accent)}
.rrow .you{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:8px;
  background:var(--accent);color:#fff;font-size:12px;font-weight:700;vertical-align:middle}
.rrow.out{opacity:.55}
.rrow .vbtn{flex:none}

/* ---------- 30 дней потока ---------- */
.grid30{display:grid;grid-template-columns:repeat(10,1fr);gap:5px;margin-top:12px}
.g30{aspect-ratio:1;border-radius:8px;background:var(--fill);display:flex;align-items:center;
  justify-content:center;font-size:11px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.g30.full{background:var(--ok);color:#fff}
.g30.part{background:var(--warn);color:#fff}
.g30.skip{background:var(--bad);color:#fff}
.g30.today{box-shadow:inset 0 0 0 2px var(--ink)}
.legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px;font-size:12px;color:var(--muted)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:middle}

/* ---------- баннеры ---------- */
.banner{border-radius:14px;padding:12px 14px;margin-bottom:12px;font-size:14px;font-weight:600;
  background:var(--accent-l);color:var(--accent);border:1px solid var(--accent)}
.banner.grey{background:var(--fill);color:var(--muted);border-color:var(--line);font-weight:500}
.banner.ok{background:rgba(47,191,113,.12);color:var(--ok);border-color:var(--ok)}
.banner .btn{margin-top:10px}

/* ---------- сворачиваемые блоки ---------- */
.fold-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:700;
  font-size:16px;cursor:pointer;user-select:none;padding:2px 0}
.fold-head > span{display:inline-flex;align-items:center;gap:8px}
.fold-head .chev{color:var(--muted);font-size:18px;transition:transform .2s;line-height:1}
.fold.collapsed .chev{transform:rotate(-90deg)}
.fold.collapsed .fold-body{display:none}
.fold .fold-body{margin-top:12px}

/* ---------- прочее ---------- */
.rules p{margin:0 0 8px;font-size:14px;line-height:1.45}
.rules p:last-child{margin-bottom:0}
.ref-link{background:var(--fill);border-radius:12px;padding:12px;font-size:13px;
  word-break:break-all;color:var(--muted)}
.theme-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.theme-opt{background:var(--fill);border:2px solid transparent;color:var(--ink);font-family:inherit;
  font-weight:600;font-size:14px;padding:16px 8px;border-radius:12px;transition:.15s;cursor:pointer}
.theme-opt.active{background:var(--accent-l);border-color:var(--accent);color:var(--accent)}
.scheme-label{font-size:13px;color:var(--muted);margin:16px 0 8px}
.scheme-grid{display:flex;flex-wrap:wrap;gap:8px}
.scheme-opt{display:flex;align-items:center;gap:8px;padding:8px 12px 8px 8px;border-radius:20px;
  background:var(--fill);border:1.5px solid transparent;font-family:inherit;font-size:13px;
  font-weight:600;color:var(--ink);transition:.15s;cursor:pointer}
.scheme-opt.active{border-color:var(--accent);background:var(--accent-l)}
.scheme-dot{width:18px;height:18px;border-radius:50%;flex:none;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.scheme-name{white-space:nowrap}
.toast{position:fixed;left:50%;bottom:calc(var(--safe-bot) + 20px);transform:translateX(-50%);
  background:var(--ink);color:var(--bg);padding:11px 18px;border-radius:22px;font-weight:600;
  font-size:14px;opacity:0;transition:.25s;pointer-events:none;z-index:9;max-width:88%;text-align:center}
.toast.show{opacity:1}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;
  justify-content:center;z-index:20;padding:12px}
.fb-card{background:var(--card);border-radius:20px;padding:20px;width:100%;max-width:560px;
  box-shadow:0 -4px 40px rgba(0,0,0,.35);animation:up .25s ease}
@keyframes up{from{transform:translateY(30px);opacity:.6}to{transform:none;opacity:1}}
.fb-head{font-weight:800;font-size:18px;margin-bottom:10px}
.fb-pts{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.fb-pts b{font-size:28px;font-weight:800}
.fb-text{white-space:pre-line;font-size:15px;line-height:1.5;max-height:50vh;overflow-y:auto;margin-bottom:16px}
.test-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.test-row .btn{width:auto;padding:10px 14px;margin:0}

/* клавиатура: видимый фокус. В Telegram не нужен, но приложение открывают и с десктопа */
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}
.tab:focus-visible,.lvl:focus-visible,.wd-cell:focus-visible{outline-offset:0}
