/* Donya Training — стили приложения. Порядок блоков сохранён из монолита. */

:root {
  --acc: #E8520A; --acc-d: #C43E00; --acc-bg: #FFF1EB;
  --ok: #16A34A; --ok-bg: #DCFCE7;
  --warn: #D97706; --warn-bg: #FEF3C7;
  --red: #DC2626; --red-bg: #FEE2E2;
  --blue: #2563EB; --blue-bg: #EFF6FF;
  --purple: #7C3AED; --purple-bg: #F5F3FF;
  --text: #111827; --muted: #6B7280;
  --bg: #F3F4F6; --card: #FFFFFF; --border: #E5E7EB;
  --r: 14px; --hdr: #1A1D23;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:15px;min-height:100vh}

/* HEADER */
.hdr{background:var(--hdr);color:#fff;padding:12px 16px 8px;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px rgba(0,0,0,.4)}
.hdr-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.hdr h1{font-size:16px;font-weight:700}
.hdr-badges{display:flex;gap:6px;align-items:center}
.badge{font-size:11px;font-weight:800;padding:3px 9px;border-radius:20px}
.badge-week{background:var(--acc);color:#fff}
.badge-green{background:#14532D;color:#86EFAC}
.badge-yellow{background:#78350F;color:#FCD34D}
.badge-red{background:#7F1D1D;color:#FCA5A5}
.hdr-sub{font-size:11.5px;opacity:.6;margin-top:3px}

/* TABS */
.tabs{display:flex;background:var(--hdr);border-bottom:2px solid #2D3139;position:sticky;top:52px;z-index:99}
.tab{flex:1;padding:10px 2px;border:none;background:none;font-size:12.5px;font-weight:600;color:rgba(255,255,255,.4);cursor:pointer;border-bottom:2.5px solid transparent;margin-bottom:-2px;transition:color .15s}
.tab.active{color:var(--acc);border-bottom-color:var(--acc)}

/* CONTENT */
.content{padding:12px;max-width:560px;margin:0 auto}
.page{display:none}
.page.active{display:block}

/* ZONE ALERT */
.zone-alert{border-radius:10px;padding:10px 14px;margin-bottom:10px;font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px}
.zone-alert.green{background:var(--ok-bg);color:#14532D}
.zone-alert.yellow{background:var(--warn-bg);color:#78350F}
.zone-alert.red{background:var(--red-bg);color:#7F1D1D}
.zone-alert.none{background:var(--bg);color:var(--muted);font-weight:400}

/* DATE NAV */
.date-nav{display:flex;align-items:center;background:var(--card);border-radius:var(--r);border:1.5px solid var(--border);margin-bottom:10px;overflow:hidden}
.dn-btn{width:50px;height:56px;border:none;background:none;font-size:24px;color:var(--acc);cursor:pointer;flex-shrink:0;transition:background .15s}
.dn-btn:active{background:var(--acc-bg)}
.dn-center{flex:1;text-align:center;padding:8px 4px;cursor:pointer}
.dn-date{font-size:15px;font-weight:700}
.dn-sub{font-size:11.5px;color:var(--muted);margin-top:2px}
.dn-today-tag{display:inline-block;font-size:10px;color:var(--acc);font-weight:800;background:var(--acc-bg);padding:1px 7px;border-radius:20px;margin-top:3px}

/* SWAP PANEL */
.swap-panel{display:none;margin-top:10px;background:var(--bg);border-radius:9px;padding:10px}
.swap-panel.open{display:block}
.swap-ttl{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;margin-bottom:7px}
.swap-opt{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:#fff;border-radius:7px;margin-bottom:5px;border:1.5px solid var(--border);cursor:pointer;font-size:13.5px;gap:8px}
.swap-opt:active{background:var(--acc-bg)}
.swap-pick{font-size:12px;color:var(--acc);font-weight:700;white-space:nowrap}
.swap-reset .swap-pick{color:var(--muted)}
.swap-custom-row{display:flex;gap:6px;margin-top:6px}
.swap-inp{flex:1;padding:8px 10px;border:1.5px solid var(--border);border-radius:8px;font-size:13.5px;font-family:inherit;color:var(--text)}
.swap-inp:focus{outline:none;border-color:var(--acc)}
.swap-go{padding:8px 12px;background:var(--acc);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit}
.ex-nm.swapped{color:var(--acc)}
.swap-pattern{font-size:10px;color:var(--purple);font-weight:700;margin-top:2px;line-height:1.3}

/* PAST DAY MODE */
.past-banner{border-radius:10px;padding:9px 13px;margin-bottom:10px;font-size:13px;font-weight:600;background:#EFF6FF;color:#1E3A8A;border:1.5px solid #BFDBFE;display:flex;align-items:center;gap:8px}
.plan-ref{font-size:11px;color:var(--blue);margin-top:3px;font-weight:600}
.dev-chip{font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;background:var(--warn-bg);color:var(--warn);margin-top:4px;display:inline-block}
.dev-chip.over{background:var(--red-bg);color:var(--red)}
.dev-chip.under{background:var(--ok-bg);color:var(--ok)}
.fact-label{font-size:10px;font-weight:700;text-transform:uppercase;color:var(--blue);letter-spacing:.5px;margin-bottom:3px}

/* EXTRA EXERCISES */
.add-extra-btn{width:100%;padding:12px;border-radius:var(--r);border:2px dashed var(--border);background:transparent;font-size:14px;font-weight:700;color:var(--muted);cursor:pointer;font-family:inherit;margin-bottom:8px;transition:all .15s}
.add-extra-btn:active,.add-extra-btn:hover{border-color:var(--acc);color:var(--acc);background:var(--acc-bg)}
.extra-form{background:var(--card);border-radius:var(--r);border:2px solid var(--warn);padding:13px;margin-bottom:10px}
.extra-form-title{font-size:13px;font-weight:700;color:var(--warn);margin-bottom:10px}
.extra-card{background:var(--card);border-radius:var(--r);border:2px solid var(--warn);margin-bottom:8px;overflow:hidden}
.extra-card.done{border-color:#86EFAC}
.extra-hdr{display:flex;align-items:center;gap:10px;padding:10px 13px;cursor:pointer}
.extra-hdr:active{background:var(--bg)}
.extra-tag{font-size:10px;font-weight:700;background:var(--warn-bg);color:var(--warn);padding:2px 7px;border-radius:20px;white-space:nowrap}
.extra-del{background:none;border:none;font-size:18px;cursor:pointer;color:var(--muted);line-height:1;padding:0;margin-left:auto;flex-shrink:0}
.extra-del:active{color:var(--red)}
.extra-body{padding:0 13px 12px}
.extra-summary{font-size:11.5px;color:var(--muted);margin-top:1px}

/* DAY TYPE BADGE */
.day-type-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.day-type-badge{font-size:13px;font-weight:700;padding:6px 14px;border-radius:10px}
.day-type-badge.gym{background:var(--acc-bg);color:var(--acc);border:1.5px solid var(--acc)}
.day-type-badge.home{background:var(--purple-bg);color:var(--purple);border:1.5px solid var(--purple)}
.day-type-badge.rest{background:var(--bg);color:var(--muted);border:1.5px solid var(--border)}
.week-label{font-size:12px;color:var(--muted);font-weight:600}

/* SECTION LABEL */
.sec-lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);margin:12px 0 7px}

/* EXERCISE CARD */
.ex-card{background:var(--card);border-radius:var(--r);border:1.5px solid var(--border);margin-bottom:8px;overflow:hidden;transition:border-color .2s}
.ex-card.done{border-color:#86EFAC;background:color-mix(in srgb,var(--ok-bg) 34%,var(--card))}
.ex-card.warmup-card{border-left:3px solid var(--blue)}
.ex-card.rehab-card{border-left:3px solid var(--ok)}
.ex-card.test-card{border-left:3px solid var(--warn)}
.ex-hdr{display:flex;align-items:center;gap:10px;padding:11px 13px;cursor:pointer;user-select:none}
.ex-hdr:active{background:var(--bg)}
.chk{width:25px;height:25px;border-radius:50%;border:2px solid var(--border);background:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s;font-size:12px;cursor:pointer}
.ex-card.done .chk{background:var(--ok);border-color:var(--ok);color:#fff}
.ex-meta{flex:1;min-width:0}
.ex-status{display:inline-flex;align-items:center;gap:4px;width:max-content;margin-top:4px;padding:3px 7px;border-radius:999px;background:var(--bg);color:var(--muted);font-size:10.5px;font-weight:750;line-height:1.1}
.ex-status.done{background:var(--ok-bg);color:var(--ok)}
.ex-status.skipped{background:var(--red-bg);color:var(--red)}
.ex-blk{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-bottom:2px}
.ex-nm{font-size:14px;font-weight:700;line-height:1.3}
.ex-plan{font-size:11.5px;padding:4px 9px;border-radius:12px;font-weight:700;white-space:normal;flex-shrink:0;max-width:44%;text-align:center;line-height:1.25}
.ex-plan.fact{background:var(--ok-bg);color:var(--ok)}
.plan-sub{font-size:10px;color:var(--muted);margin-top:3px;font-weight:600;line-height:1.3}
.ex-plan.gym{background:var(--acc-bg);color:var(--acc)}
.ex-plan.home{background:var(--purple-bg);color:var(--purple)}
.ex-plan.warmup{background:var(--blue-bg);color:var(--blue)}
.ex-plan.rehab{background:var(--ok-bg);color:var(--ok)}

/* CARD BODY */
.ex-body{display:none;padding:0 13px 13px;border-top:1.5px solid var(--border)}
.ex-body.open{display:block}
.chips{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}
.chip{font-size:12px;color:var(--muted);background:var(--bg);padding:3px 8px;border-radius:7px}
.cue{font-size:13px;background:var(--warn-bg);color:#92400E;border-left:3px solid var(--warn);padding:7px 10px;border-radius:0 7px 7px 0;margin-top:9px;line-height:1.5}
.cue.danger{background:var(--red-bg);color:#7F1D1D;border-color:var(--red)}
.cue.info{background:var(--blue-bg);color:#1E3A8A;border-color:var(--blue)}

/* SETS COUNTER */
.sets-row{display:flex;align-items:center;margin-top:11px;background:var(--bg);border-radius:10px;border:1.5px solid var(--border);overflow:hidden}
.sets-lbl{flex:1;padding:0 12px;font-size:13px;font-weight:700;color:var(--muted)}
.sets-num{font-size:21px;font-weight:800;min-width:40px;text-align:center}
.sets-unit{font-size:11px;color:var(--muted);font-weight:600;margin-left:1px}
.sets-btn{width:44px;height:44px;border:none;background:none;font-size:22px;font-weight:700;color:var(--acc);cursor:pointer;flex-shrink:0;transition:background .15s}
.sets-btn:active{background:var(--acc-bg)}
.sets-btn.minus{color:var(--muted)}
.sets-btn:disabled{opacity:.3;cursor:default}

/* LOG INPUTS */
.log-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}
.fld label{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:5px}
.fld input,.fld select,.fld textarea{width:100%;padding:9px 10px;border:1.5px solid var(--border);border-radius:9px;font-size:14px;background:#fff;color:var(--text);-webkit-appearance:none;font-family:inherit}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--acc)}
.last-val{font-size:11px;color:var(--acc);margin-top:3px;font-weight:600}
.fld.full{grid-column:1/-1}
.fld textarea{resize:none;height:54px}

/* PLAN vs FACT + PER-SET ROWS */
.fact-block{margin-top:11px;background:var(--bg);border:1.5px solid var(--border);border-radius:11px;padding:10px}
.pf-plan{font-size:12.5px;font-weight:700;color:var(--blue);background:var(--blue-bg);border-radius:8px;padding:6px 9px;display:inline-block}
.last-hint{font-size:11.5px;color:var(--muted);margin-top:7px;font-weight:600;line-height:1.4}
.ex-stats{margin-top:8px;padding:8px 9px;border-radius:9px;background:#fff;border:1px solid var(--border);font-size:11.5px;color:var(--muted);line-height:1.5}
.ex-stats-title{font-weight:800;color:var(--text);margin-bottom:2px}
.ex-stats-empty{font-weight:600}
.fact-lbl{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--acc);margin:9px 0 5px}
.set-head{display:grid;grid-template-columns:26px 1fr 12px 1fr 34px;gap:5px;align-items:center;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);padding:0 2px 3px}
.set-head span{text-align:center}
.set-row{display:grid;grid-template-columns:26px 1fr 12px 1fr 34px;gap:5px;align-items:center;margin-bottom:6px}
.set-idx{font-size:13px;font-weight:800;color:var(--muted);text-align:center}
.set-in{width:100%;padding:9px 8px;border:1.5px solid var(--border);border-radius:9px;font-size:15px;background:#fff;color:var(--text);text-align:center;font-family:inherit;-webkit-appearance:none}
.set-in:focus{outline:none;border-color:var(--acc)}
.set-x{text-align:center;color:var(--muted);font-weight:700}
.set-del{width:34px;height:38px;border:none;background:none;font-size:20px;color:var(--muted);cursor:pointer;border-radius:8px}
.set-del:active{background:var(--red-bg);color:var(--red)}
.set-del:disabled{opacity:.25;cursor:default}
.add-set{width:100%;margin-top:4px;padding:9px;border:1.5px dashed var(--acc);background:var(--acc-bg);color:var(--acc);border-radius:9px;font-size:13.5px;font-weight:700;cursor:pointer;font-family:inherit}
.add-set:active{opacity:.7}

/* SKIP / REORDER / SUPERSET */
.ex-card.skipped{opacity:1;border-color:var(--red);background:color-mix(in srgb,var(--red-bg) 38%,var(--card))}
.ex-card.skipped .ex-nm{text-decoration:line-through;color:var(--muted)}
.ex-card.skipped .chk{background:var(--red);border-color:var(--red);color:#fff}
.chk.skip{background:var(--red);border-color:var(--red);color:#fff}
.ord-col{display:flex;flex-direction:column;gap:2px;margin-right:6px;flex-shrink:0}
.ord-btn{width:26px;height:20px;border:1.5px solid var(--border);background:#fff;border-radius:6px;font-size:12px;line-height:1;color:var(--muted);cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}
.ord-btn:active{background:var(--acc-bg);color:var(--acc)}
.ord-btn:disabled{opacity:.3;cursor:default}
.btn-skip{background:var(--bg);border:1.5px solid var(--red);color:var(--red)}
.ex-card.skipped .btn-skip{background:var(--red);color:#fff}
.ss-badge{display:inline-block;font-size:10px;font-weight:800;color:var(--purple);background:var(--purple-bg);border-radius:20px;padding:1px 7px;margin-left:6px;vertical-align:middle}
.ex-card.ss-linked{margin-bottom:2px;border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:1px dashed var(--purple)}
.ss-connector{font-size:10.5px;font-weight:700;color:var(--purple);background:var(--purple-bg);text-align:center;padding:2px 0;margin:0 0 8px;border-radius:0 0 8px 8px;border:1.5px solid var(--purple);border-top:none}
.btn-ss{background:var(--bg);border:1.5px solid var(--purple);color:var(--purple)}
.btn-ss.on{background:var(--purple);color:#fff}
.swap-hint{font-size:11px;color:var(--muted);font-weight:600;margin-left:6px}

/* COLLAPSIBLE WELLBEING (workout tab) */
.wb-title{cursor:pointer;display:flex;align-items:center;justify-content:space-between}
.wb-caret{font-size:11px;color:var(--muted);transition:transform .15s}
.wb-caret.open{transform:rotate(180deg)}

/* MON HISTORY clickable */
.mon-history-card{cursor:pointer;transition:border-color .15s}
.mon-history-card:active{border-color:var(--acc)}

.ex-actions{display:flex;gap:8px;margin-top:11px}
.btn{padding:10px 14px;border-radius:9px;border:none;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;transition:opacity .15s}
.btn:active{opacity:.75}
.btn-done{background:var(--acc);color:#fff;flex:1}
.ex-card.done .btn-done{background:var(--ok)}

/* SESSION COMMENT */
.sess-note{background:var(--card);border-radius:var(--r);border:1.5px solid var(--border);padding:11px 13px;margin-bottom:10px}
.sess-note label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:6px}
.sess-note textarea{width:100%;padding:8px 10px;border:1.5px solid var(--border);border-radius:9px;font-size:14px;resize:none;height:70px;font-family:inherit;color:var(--text)}
.sess-note textarea:focus{outline:none;border-color:var(--acc)}

/* PAIN CHECK */
.pain-card{background:var(--card);border-radius:var(--r);border:1.5px solid var(--border);padding:11px 13px;margin-bottom:10px}
.pain-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin-bottom:9px}
.pain-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.pain-row:last-child{margin-bottom:0}
.pain-lbl{font-size:13px;font-weight:600;min-width:120px}
.pain-btns{display:flex;gap:4px}
.pb{width:30px;height:27px;border-radius:6px;border:1.5px solid var(--border);background:#fff;font-size:12px;font-weight:700;cursor:pointer;color:var(--muted);transition:all .15s}
.pb.s0,.pb.s1,.pb.s2{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
.pb.s3,.pb.s4{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}
.pb.s5{background:var(--red-bg);border-color:var(--red);color:var(--red)}
.pb.sleep-quality.s1{background:var(--red-bg);border-color:var(--red);color:var(--red)}
.pb.sleep-quality.s2,.pb.sleep-quality.s3{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}
.pb.sleep-quality.s4,.pb.sleep-quality.s5{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
.sleep-scale-hint{font-size:11px;color:var(--muted);line-height:1.4;margin:-4px 0 9px}

/* SAVE BAR */
.save-bar{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1.5px solid var(--border);padding:10px 16px;display:flex;align-items:center;gap:10px;z-index:200;max-width:560px;margin:0 auto}
.sb-left{flex:1}
.sb-title{font-size:14px;font-weight:700}
.sb-hint{font-size:12px;color:var(--muted);margin-top:1px}
.btn-save{background:var(--acc);color:#fff;padding:11px 18px;font-size:14px;white-space:nowrap}

/* MONITORING */
.mon-card{background:var(--card);border-radius:var(--r);border:1.5px solid var(--border);padding:13px;margin-bottom:10px}
.mon-card h3{font-size:14px;font-weight:700;margin-bottom:12px}
.mon-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.mon-row:last-child{margin-bottom:0}
.mon-lbl{font-size:13px;font-weight:600;min-width:130px}
.zone-display{border-radius:10px;padding:12px 14px;text-align:center;font-size:15px;font-weight:800;margin-top:10px}
.zone-display.green{background:var(--ok-bg);color:var(--ok)}
.zone-display.yellow{background:var(--warn-bg);color:var(--warn)}
.zone-display.red{background:var(--red-bg);color:var(--red)}
.zone-display.none{background:var(--bg);color:var(--muted)}
.zone-rule{font-size:12px;font-weight:500;margin-top:4px;opacity:.85}
.sleep-input{width:70px;padding:8px 10px;border:1.5px solid var(--border);border-radius:9px;font-size:15px;font-family:inherit;text-align:center}
.sleep-input:focus{outline:none;border-color:var(--acc)}

/* HISTORY */
.filter-row{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.f-btn{padding:6px 12px;border-radius:20px;border:1.5px solid var(--border);background:#fff;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--muted);transition:all .15s}
.f-btn.active{background:var(--acc-bg);border-color:var(--acc);color:var(--acc)}
.sess-card{background:var(--card);border-radius:var(--r);border:1.5px solid var(--border);margin-bottom:9px;overflow:hidden}
.sess-card.zone-red{border-left:4px solid var(--red)}
.sess-card.zone-yellow{border-left:4px solid var(--warn)}
.sess-card.zone-green{border-left:4px solid var(--ok)}
.sess-card.zone-none{border-left:4px solid var(--border)}
.s-tag.none{background:var(--bg);color:var(--muted)}
.sess-hdr{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;cursor:pointer;gap:10px}
.sess-hdr:active{background:var(--bg)}
.sess-dt{font-size:14.5px;font-weight:700}
.sess-sub{font-size:12px;color:var(--muted);margin-top:2px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.s-tag{font-size:11px;font-weight:700;padding:2px 7px;border-radius:20px}
.s-tag.gym{background:var(--acc-bg);color:var(--acc)}
.s-tag.home{background:var(--purple-bg);color:var(--purple)}
.s-tag.green{background:var(--ok-bg);color:var(--ok)}
.s-tag.yellow{background:var(--warn-bg);color:var(--warn)}
.s-tag.red{background:var(--red-bg);color:var(--red)}
.sess-pct{font-size:13px;font-weight:700;padding:4px 9px;border-radius:20px;background:var(--bg);color:var(--muted);white-space:nowrap}
.sess-body{display:none;padding:0 13px 13px}
.sess-body.open{display:block}
.s-ex{padding:7px 0;border-top:1px solid var(--border);font-size:13.5px}
.s-ex-nm{font-weight:600}
.s-ex-data{color:var(--muted);font-size:12.5px;margin-top:2px;line-height:1.5}
.sess-cmt{margin-top:10px}
.sess-cmt label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:6px}
.sess-cmt textarea{width:100%;padding:8px 10px;border:1.5px solid var(--border);border-radius:9px;font-size:13px;resize:none;height:78px;font-family:inherit;color:var(--text);background:var(--bg)}
.sess-cmt textarea:focus{outline:none;border-color:var(--acc);background:#fff}
.cmt-preview{font-size:13px;color:var(--muted);line-height:1.55;font-style:italic;background:var(--bg);border-radius:8px;padding:8px 10px;white-space:pre-wrap;margin-top:6px}
.cmt-edit-btn{font-size:12px;color:var(--acc);background:none;border:none;cursor:pointer;font-weight:600;padding:4px 0;font-family:inherit}
.cmt-save-btn{margin-top:6px;padding:7px 13px;background:var(--acc-bg);color:var(--acc);border:1.5px solid var(--acc);border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit}

/* RULES */
.rules-card{background:var(--card);border-radius:var(--r);border:1.5px solid var(--border);overflow:hidden;margin-bottom:10px}
.rules-ttl{padding:10px 14px;font-size:13.5px;font-weight:700;background:var(--bg);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px}
.rule{padding:9px 14px;border-bottom:1px solid var(--border)}
.rule:last-child{border-bottom:none}
.rule-sit{font-size:12px;color:var(--muted);margin-bottom:3px;line-height:1.4}
.rule-act{font-size:13.5px;font-weight:700}
.rule.g .rule-act{color:var(--ok)}
.rule.b .rule-act{color:var(--blue)}
.rule.w .rule-act{color:var(--warn)}
.rule.r .rule-act{color:var(--red)}
.flag-check{display:flex;align-items:flex-start;gap:8px;padding:7px 9px;margin-top:6px;border:1px solid var(--border);border-radius:9px;background:var(--bg);font-size:12px;line-height:1.35;color:var(--text);cursor:pointer}
.flag-check input{margin-top:2px;accent-color:var(--acc)}
.zone-reasons{font-size:11.5px;line-height:1.45;margin-top:5px;font-weight:500;opacity:.9}
.zone-card-note{margin:8px 0 0;padding:7px 9px;border-radius:8px;font-size:12px;font-weight:700;line-height:1.4}
.zone-card-note.yellow{background:var(--warn-bg);color:#78350F}
.zone-card-note.red{background:var(--red-bg);color:#7F1D1D}
.zone-card-note.green{background:var(--ok-bg);color:#14532D}
.ex-card.rir-zero{border-color:var(--red);background:#FFF7F7}
.ex-plan.rir-zero{background:var(--red-bg);color:var(--red)}
.rir-zero-note{margin-top:7px;padding:7px 9px;border-radius:8px;background:var(--red-bg);color:#7F1D1D;font-size:12px;font-weight:800;line-height:1.4}
.optional-blocked{opacity:.72;border-color:var(--warn)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.cycle-note{display:none;margin:-2px 0 10px;padding:8px 10px;border-radius:9px;background:var(--blue-bg);color:#1E3A8A;font-size:12px;line-height:1.45}

.empty-state{text-align:center;padding:44px 20px;color:var(--muted)}
.empty-icon{font-size:48px;margin-bottom:10px}
.empty-title{font-weight:700;font-size:15px;color:var(--text);margin-bottom:4px}
.empty-hint{font-size:13px;line-height:1.5;max-width:34ch;margin:0 auto}

/* Категория нагрузки и суперсеты */
.cat-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:6px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;vertical-align:middle}
.cat-badge.main{background:var(--acc-bg);color:var(--acc-d)}
.cat-badge.accessory{background:rgba(120,124,110,.14);color:var(--muted)}
.cat-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:9px}
.cat-lbl{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.cat-opt{min-height:34px;padding:6px 11px;border-radius:9px;border:1.5px solid var(--border);background:var(--card,#fff);color:var(--muted);font-size:12px;font-weight:700;cursor:pointer}
.cat-opt.on{border-color:var(--acc);background:var(--acc-bg);color:var(--acc-d)}
.ss-panel{margin-top:9px;padding:9px;border:1.5px dashed var(--border);border-radius:11px}
.ss-panel-row{display:flex;gap:6px;flex-wrap:wrap}
.ss-panel-row .btn{flex:1;min-width:140px}
.btn-ss-off{background:var(--bg);border:1.5px solid var(--border);color:var(--muted)}
.ss-pick{width:100%;margin-top:6px;min-height:38px;padding:7px 8px;border:1.5px solid var(--border);border-radius:9px;font-size:12.5px;background:var(--card,#fff);color:var(--text)}

/* Алкоголь за предыдущие сутки */
.mon-row.alc{align-items:center}
.alc-btns{display:flex;gap:6px;flex-wrap:wrap}
.alc-btn{min-height:34px;padding:6px 12px;border-radius:9px;border:1.5px solid var(--border);background:var(--card,#fff);color:var(--muted);font-size:12px;font-weight:700;cursor:pointer}
.alc-btn.on{border-color:var(--acc);background:var(--acc-bg);color:var(--acc-d)}
.alc-btn.on.heavy{border-color:var(--warn);background:var(--warn-bg);color:var(--warn)}

.sess-time{color:var(--muted);font-weight:650}
.sess-moved{color:#1E3A8A;font-weight:650}

/* Жизненный цикл тренировки: просмотр → старт → завершение */
.wl-box{margin:0 0 12px;padding:12px 14px;border-radius:14px;border:1.5px solid var(--border);background:var(--card,#fff)}
.wl-box.planned{border-style:dashed}
.wl-box.active{border-color:var(--acc);background:var(--acc-bg)}
.wl-box.finished{background:var(--ok-bg,#ECFDF5);border-color:var(--ok,#059669)}
.wl-text{font-size:13px;line-height:1.45;margin-bottom:9px;color:var(--text)}
.wl-box.finished .wl-text{margin-bottom:4px}
.wl-hint{font-size:11.5px;color:var(--muted);line-height:1.45}
.wl-actions{display:flex;gap:8px;flex-wrap:wrap}
.btn-start{width:100%;min-height:48px;font-size:15px;background:var(--acc);color:var(--on-acc)}
.btn-finish{flex:1;min-height:46px;background:var(--ok);color:var(--on-acc)}
html[data-theme="light"] .btn-finish{color:#fff}
.btn-cancel-wl{min-height:46px;padding:0 14px;background:var(--bg);border:1.5px solid var(--border);color:var(--muted)}
/* До старта отметки недоступны, программа только для просмотра */
body.workout-locked .chk,
body.workout-locked .btn-done,
body.workout-locked .btn-skip{opacity:.45;pointer-events:none}
body.workout-locked .add-extra-btn{opacity:.55}

/* Упражнение, снятое правилом (например, по шейному отделу) */
.ex-card.rule-blocked{opacity:.72}
.ex-card.rule-blocked .ex-nm{text-decoration:line-through}

/* ── iOS 26 design system ── */
/* ─── iOS-inspired design system: semantic tokens, glass surfaces, safe areas ─── */
:root,
html[data-theme="light"]{
  --acc:#F05A13; --acc-d:#C74408; --acc-bg:rgba(240,90,19,.11);
  --ok:#1E9B50; --ok-bg:rgba(30,155,80,.12);
  --warn:#C97800; --warn-bg:rgba(201,120,0,.13);
  --red:#D92D3A; --red-bg:rgba(217,45,58,.12);
  --blue:#2877D8; --blue-bg:rgba(40,119,216,.11);
  --purple:#7857D9; --purple-bg:rgba(120,87,217,.11);
  --text:#151519; --muted:#6E6E78; --muted-2:#8D8D98;
  --bg:#F2F2F7; --card:rgba(255,255,255,.76); --card-solid:#FFFFFF;
  --border:rgba(60,60,67,.14); --border-strong:rgba(60,60,67,.22);
  --hdr:rgba(246,246,250,.72); --glass:rgba(255,255,255,.62);
  --shadow:0 14px 38px rgba(28,30,38,.09),0 2px 8px rgba(28,30,38,.04);
  --shadow-soft:0 8px 24px rgba(28,30,38,.07);
  --field:rgba(255,255,255,.88); --tab:rgba(250,250,253,.74);
  --r:20px; --r-sm:14px;
}
html[data-theme="dark"]{
  --acc:#FF6A24; --acc-d:#FF8A51; --acc-bg:rgba(255,106,36,.16);
  --ok:#39C86B; --ok-bg:rgba(57,200,107,.14);
  --warn:#F2A12A; --warn-bg:rgba(242,161,42,.15);
  --red:#FF5662; --red-bg:rgba(255,86,98,.14);
  --blue:#62A8FF; --blue-bg:rgba(98,168,255,.14);
  --purple:#A78BFA; --purple-bg:rgba(167,139,250,.14);
  --text:#F5F5F7; --muted:#A5A5AF; --muted-2:#7E7E88;
  --bg:#090A0E; --card:rgba(28,29,35,.73); --card-solid:#1C1D23;
  --border:rgba(235,235,245,.12); --border-strong:rgba(235,235,245,.20);
  --hdr:rgba(14,15,20,.72); --glass:rgba(35,36,43,.62);
  --shadow:0 18px 48px rgba(0,0,0,.32),0 2px 10px rgba(0,0,0,.18);
  --shadow-soft:0 10px 28px rgba(0,0,0,.24);
  --field:rgba(44,45,53,.86); --tab:rgba(27,28,34,.74);
}
html{background:var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:auto}
body{
  background:var(--bg);
  color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Helvetica Neue",Arial,sans-serif;
  font-size:15px;line-height:1.35;min-height:100dvh;padding-bottom:calc(94px + env(safe-area-inset-bottom));
  transition:background-color .28s ease,color .28s ease;
}
body::before{content:none}
button,input,select,textarea{font:inherit;color:inherit}
button{touch-action:manipulation}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--acc) 42%,transparent);outline-offset:2px}

.hdr{
  position:sticky;top:0;z-index:120;padding:calc(9px + env(safe-area-inset-top)) 14px 10px;
  color:var(--text);background:var(--hdr);border-bottom:1px solid var(--border);
  box-shadow:0 1px 0 rgba(255,255,255,.08);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);
}
.hdr-top{max-width:620px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px}
.brand-lockup{display:flex;align-items:center;gap:10px;min-width:0}
.app-mark{width:38px;height:38px;border-radius:12px;flex:0 0 auto}
.hdr-copy{min-width:0}.hdr h1{font-size:16px;line-height:1.2;font-weight:750;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hdr-sub{font-size:11.5px;color:var(--muted);opacity:1;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hdr-actions{display:flex;align-items:center;gap:7px;flex:0 0 auto}.hdr-badges{gap:5px}.badge{font-size:10.5px;padding:4px 8px;border-radius:999px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.badge-week{background:var(--acc);color:var(--on-acc)}.badge-green{background:var(--ok-bg);color:var(--ok)}.badge-yellow{background:var(--warn-bg);color:var(--warn)}.badge-red{background:var(--red-bg);color:var(--red)}.badge-none{background:rgba(120,120,128,.12);color:var(--muted)}
.theme-toggle{width:40px;height:40px;border:1px solid var(--border);border-radius:14px;background:var(--glass);display:grid;place-items:center;color:var(--text);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);cursor:pointer}
.theme-toggle svg{width:19px;height:19px;stroke:currentColor}.theme-toggle:active{transform:scale(.94)}
.pwa-status{max-width:620px;margin:6px auto -2px;font-size:10.5px;color:var(--muted);display:none}.pwa-status.show{display:block}.pwa-status.offline{color:var(--warn)}

.tabs{
  position:fixed;top:auto;height:auto;left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));bottom:calc(8px + env(safe-area-inset-bottom));z-index:300;
  max-width:600px;margin:0 auto;padding:6px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;
  background:var(--tab);border:1px solid var(--border-strong);border-radius:24px;box-shadow:0 16px 44px rgba(0,0,0,.18);
  -webkit-backdrop-filter:saturate(190%) blur(26px);backdrop-filter:saturate(190%) blur(26px);
}
.tab{min-width:0;min-height:52px;padding:5px 2px;border:0;border-radius:18px;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:9.5px;font-weight:650;line-height:1;border-bottom:0;margin:0;transition:background .2s ease,color .2s ease,transform .16s ease}
.tab svg{width:21px;height:21px;stroke:currentColor;stroke-width:1.9;fill:none}.tab.active{color:var(--acc);background:var(--acc-bg);border:0}.tab:active{transform:scale(.93)}

.content{padding:14px 12px calc(166px + env(safe-area-inset-bottom));max-width:620px;margin:0 auto}
.page.active{display:block;animation:pageIn .24s cubic-bezier(.2,.7,.2,1)}
@keyframes pageIn{from{opacity:.25;transform:translateY(5px)}to{opacity:1;transform:none}}

/* Glass component family */
.date-nav,.pain-card,.sess-note,.mon-card,.sess-card,.rules-card,.wk-card,.ex-card,.extra-card,.extra-form,.overview-hero,.cycle-week,.cycle-day{
  background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:saturate(150%) blur(18px);backdrop-filter:saturate(150%) blur(18px);
}
.date-nav,.pain-card,.sess-note,.mon-card,.sess-card,.rules-card,.wk-card,.ex-card,.extra-card,.extra-form{border-radius:var(--r)}
.date-nav{overflow:hidden;margin-bottom:12px}.dn-btn{width:52px;height:58px;min-width:44px;font-size:0;color:var(--acc)}
.dn-btn::before{font-size:29px;line-height:1}.dn-btn:first-child::before{content:"‹"}.dn-btn:last-child::before{content:"›"}.dn-btn:active{background:var(--acc-bg)}
.dn-date{font-size:16px;letter-spacing:-.15px}.dn-sub{color:var(--muted)}.dn-today-tag{background:var(--acc-bg);color:var(--acc);padding:2px 8px}
.zone-alert,.past-banner,.cycle-note{border-radius:15px;padding:10px 12px;border:1px solid transparent;box-shadow:none}.zone-alert.none{background:rgba(120,120,128,.09);color:var(--muted)}
.day-type-badge{border-radius:999px}.sec-lbl{margin:16px 2px 8px;color:var(--muted);letter-spacing:.65px}
.ex-card{overflow:hidden;margin-bottom:10px}.ex-card.done{border-color:color-mix(in srgb,var(--ok) 42%,var(--border))}.ex-card.skipped{border-color:color-mix(in srgb,var(--red) 48%,var(--border))}
.ex-hdr{padding:12px;min-height:72px}.ex-hdr:active,.sess-hdr:active,.extra-hdr:active{background:rgba(120,120,128,.08)}
.ex-nm{font-size:14.5px;letter-spacing:-.1px}.ex-blk{color:var(--muted)}.ex-plan{border-radius:999px;padding:6px 9px;max-width:46%}.chk{width:29px;height:29px;background:var(--field);border-color:var(--border-strong)}
.ord-btn{width:28px;height:22px;background:var(--field);border-color:var(--border)}
.ex-body{border-top-color:var(--border);padding:0 12px 13px}.chips{gap:6px}.chip{background:rgba(120,120,128,.10);color:var(--muted);border-radius:999px;padding:4px 9px}.cue{border-radius:12px;margin-top:10px;padding:9px 10px}
.fact-block,.sets-row{background:rgba(120,120,128,.075);border-color:var(--border);border-radius:15px}.pf-plan{border-radius:999px}.ex-stats{background:var(--field);border-color:var(--border);border-radius:12px}
.set-in,.fld input,.fld select,.fld textarea,.sess-note textarea,.sess-cmt textarea,.sleep-input,.swap-inp,.swap-db,#ef-group,#ef-name-sel,#day-ovr{
  background:var(--field)!important;color:var(--text)!important;border-color:var(--border)!important;border-radius:12px!important;font-size:16px!important;min-height:44px;
}
textarea{line-height:1.35}.set-in{text-align:center;padding:8px 6px}.set-del{min-height:40px}.add-set{min-height:44px;border-radius:12px;background:var(--acc-bg)}
.btn{min-height:44px;border-radius:13px;padding:10px 14px}.btn-save,.btn-done{background:linear-gradient(135deg,var(--acc),#FF7D3D);box-shadow:0 7px 18px rgba(240,90,19,.22)}
.add-extra-btn{min-height:48px;border-radius:18px;border-color:var(--border-strong);background:rgba(120,120,128,.05)}
.pain-card,.sess-note,.mon-card{padding:13px}.pain-title{font-size:11px}.mon-row{min-height:42px}.pain-btns{overflow-x:auto;overscroll-behavior-x:contain;padding:2px 0 4px;scrollbar-width:none}.pain-btns::-webkit-scrollbar{display:none}.pb{min-width:34px;width:34px;height:34px;border-radius:10px;background:var(--field);border-color:var(--border);font-size:12px}
.flag-check{min-height:44px;background:rgba(120,120,128,.07);border-color:var(--border);border-radius:13px;padding:10px}.flag-check input{width:18px;height:18px}
.filter-row{gap:7px;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.f-btn{min-height:38px;white-space:nowrap;background:var(--card);border-color:var(--border);color:var(--muted)}.f-btn.active{background:var(--acc-bg);border-color:color-mix(in srgb,var(--acc) 55%,transparent);color:var(--acc)}
.rules-ttl{background:rgba(120,120,128,.07);border-color:var(--border)}.rule{border-color:var(--border)}
.empty-state{padding:38px 20px}.empty-icon{filter:saturate(.85)}

.save-bar{
  left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));bottom:calc(76px + env(safe-area-inset-bottom));z-index:260;
  max-width:600px;margin:0 auto;padding:9px 10px 9px 14px;border:1px solid var(--border-strong);border-radius:20px;background:var(--tab);box-shadow:0 14px 40px rgba(0,0,0,.17);
  -webkit-backdrop-filter:saturate(190%) blur(24px);backdrop-filter:saturate(190%) blur(24px);
}
.sb-title{font-size:13.5px}.sb-hint{font-size:11px}.save-bar .btn-save{min-height:44px}

/* Current-cycle overview */
.overview-hero{border-radius:24px;padding:18px;margin-bottom:13px;position:relative;overflow:hidden}
.overview-hero::after{content:"";position:absolute;width:190px;height:190px;border-radius:50%;right:-70px;top:-100px;background:radial-gradient(circle,rgba(255,125,61,.30),transparent 68%);pointer-events:none}
.overview-kicker{font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.7px;color:var(--acc);margin-bottom:5px}.overview-title{font-size:25px;font-weight:800;letter-spacing:-.6px;line-height:1.08}.overview-sub{font-size:13px;color:var(--muted);margin-top:6px;max-width:420px}
.overview-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:14px}.overview-stat{padding:10px;border-radius:15px;background:rgba(120,120,128,.075);border:1px solid var(--border)}.overview-stat b{display:block;font-size:18px;line-height:1.1}.overview-stat span{font-size:10.5px;color:var(--muted)}
.cycle-week{border-radius:23px;padding:13px;margin-bottom:12px;content-visibility:auto;contain-intrinsic-size:820px}.cycle-week.current{border-color:color-mix(in srgb,var(--acc) 48%,var(--border));box-shadow:0 13px 34px rgba(240,90,19,.10)}
.cycle-week-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:2px 2px 11px}.cycle-week-title{font-size:17px;font-weight:760;letter-spacing:-.25px}.cycle-week-dates{font-size:11.5px;color:var(--muted);margin-top:2px}.cycle-progress{font-size:11px;font-weight:750;color:var(--acc);background:var(--acc-bg);border-radius:999px;padding:5px 8px;white-space:nowrap}
.cycle-days{display:grid;gap:9px}.cycle-day{border-radius:17px;padding:11px;box-shadow:none}.cycle-day.today{border-color:var(--acc)}.cycle-day.done{border-color:color-mix(in srgb,var(--ok) 42%,var(--border))}
.cycle-day-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}.cycle-day-name{font-size:14px;font-weight:750}.cycle-day-date{font-size:11px;color:var(--muted);margin-top:1px}.cycle-day-status{font-size:10px;font-weight:750;border-radius:999px;padding:4px 7px;background:rgba(120,120,128,.09);color:var(--muted);white-space:nowrap}.cycle-day.done .cycle-day-status{background:var(--ok-bg);color:var(--ok)}
.cycle-ex-list{display:grid;gap:0}.cycle-ex{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:7px 0;border-top:1px solid var(--border)}.cycle-ex:first-child{border-top:0}.cycle-ex-name{font-size:12.5px;font-weight:620;line-height:1.3}.cycle-ex-block{font-size:9.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.45px;margin-bottom:1px}.cycle-ex-target{text-align:right;font-size:11px;font-weight:720;color:var(--acc);line-height:1.35;max-width:145px}.cycle-open{width:100%;min-height:42px;margin-top:8px;border:0;border-radius:13px;background:var(--acc-bg);color:var(--acc);font-size:12.5px;font-weight:750;cursor:pointer}

body.keyboard-open .tabs,body.keyboard-open .save-bar{opacity:0;pointer-events:none;transform:translateY(120%)}
.tabs,.save-bar{transition:opacity .2s ease,transform .25s cubic-bezier(.2,.7,.2,1)}

@media (max-width:430px){
  .hdr{padding-left:11px;padding-right:11px}.app-mark{width:35px;height:35px}.hdr h1{font-size:14.5px}.badge{padding:4px 6px}.content{padding-left:10px;padding-right:10px}
  .ex-plan{font-size:10.5px;max-width:43%}.ex-hdr{gap:7px}.ord-col{margin-right:1px}.cycle-ex-target{max-width:128px}.overview-title{font-size:23px}
}
@media (max-width:370px){.hdr-badges{display:none}.tab{font-size:8.5px}.tab svg{width:20px;height:20px}.overview-stats{grid-template-columns:1fr}.mon-row{align-items:flex-start;flex-direction:column}.mon-lbl{min-width:0}}
@media (min-width:700px){.cycle-days{grid-template-columns:1fr 1fr}.content{padding-top:18px}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media (prefers-reduced-transparency:reduce){.hdr,.tabs,.save-bar,.date-nav,.pain-card,.sess-note,.mon-card,.sess-card,.rules-card,.wk-card,.ex-card,.extra-card,.extra-form,.overview-hero,.cycle-week,.cycle-day{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background:var(--card-solid)!important}}
@media (prefers-contrast:more){:root{--border:rgba(60,60,67,.32);--border-strong:rgba(60,60,67,.48)}html[data-theme="dark"]{--border:rgba(235,235,245,.28);--border-strong:rgba(235,235,245,.44)}}

/* ── grunge design system ── */
/* ─── Donya Training grunge redesign: clean iOS structure + restrained athletic texture ─── */
:root,
html[data-theme="light"]{
  /* Сиреневая палитра. Контраст текста на фоне карточки — не ниже AA. */
  --acc:#6D28D9;--acc-d:#5B21B6;--acc-bg:rgba(109,40,217,.10);--on-acc:#FFFFFF;
  --ok:#15803D;--ok-bg:rgba(21,128,61,.11);
  --warn:#B45309;--warn-bg:rgba(180,83,9,.12);
  --red:#DC2626;--red-bg:rgba(220,38,38,.11);
  --blue:#1D4ED8;--blue-bg:rgba(29,78,216,.10);
  --purple:#7C3AED;--purple-bg:rgba(124,58,237,.11);
  --text:#181528;--muted:#5F5B72;--muted-2:#837E96;
  --bg:#F4F2F9;--card:rgba(255,255,255,.94);--card-solid:#FFFFFF;
  --border:rgba(37,28,66,.13);--border-strong:rgba(37,28,66,.24);
  --hdr:rgba(249,248,253,.94);--glass:rgba(255,255,255,.86);
  --field:#FFFFFF;--tab:rgba(249,248,253,.96);
  --shadow:0 14px 36px rgba(43,29,84,.10),0 2px 6px rgba(43,29,84,.05);
  --shadow-soft:0 8px 22px rgba(43,29,84,.07);
}
html[data-theme="dark"]{
  --acc:#A78BFA;--acc-d:#C4B5FD;--acc-bg:rgba(167,139,250,.16);--on-acc:#1A1030;
  --ok:#4ADE80;--ok-bg:rgba(74,222,128,.14);
  --warn:#FBBF24;--warn-bg:rgba(251,191,36,.14);
  --red:#FB7185;--red-bg:rgba(251,113,133,.15);
  --blue:#7DA6FF;--blue-bg:rgba(125,166,255,.14);
  --purple:#C4B5FD;--purple-bg:rgba(196,181,253,.14);
  --text:#F2F0FA;--muted:#A6A1BC;--muted-2:#7C7795;
  --bg:#100D1A;--card:rgba(30,26,45,.92);--card-solid:#1E1A2D;
  --border:rgba(226,222,242,.14);--border-strong:rgba(226,222,242,.26);
  --hdr:rgba(17,14,27,.94);--glass:rgba(32,28,48,.88);
  --field:#241F36;--tab:rgba(20,17,32,.96);
  --shadow:0 18px 44px rgba(0,0,0,.46),0 2px 8px rgba(0,0,0,.28);
  --shadow-soft:0 10px 26px rgba(0,0,0,.34);
}
html,body{background:var(--bg)}
body{background:var(--bg)}
body::before{content:none}
.hdr,.content{position:relative}
.tabs,.save-bar{position:fixed}
.hdr{
  overflow:hidden;border-bottom-color:var(--border-strong);
  box-shadow:0 8px 30px rgba(0,0,0,.08);
}
.hdr::before{content:none}
.hdr-top,.pwa-status{position:relative;z-index:1}
.app-mark{width:44px;height:44px;border-radius:13px;border:1px solid var(--border-strong)}
.hdr h1{font-size:16px;font-weight:900;letter-spacing:.015em;text-transform:uppercase}
.hdr-sub{font-weight:650}
.badge-week{background:var(--acc);color:var(--on-acc)}
.theme-toggle{border-radius:12px}
.tabs{border-radius:19px;padding:5px;border-color:var(--border-strong)}
.tab{border-radius:14px;font-weight:760;text-transform:uppercase;letter-spacing:.02em}
.tab.active{background:var(--acc);color:var(--on-acc)}
.content{z-index:1}
.date-nav,.pain-card,.sess-note,.mon-card,.sess-card,.rules-card,.wk-card,.ex-card,.extra-card,.extra-form,.cycle-week,.cycle-day{
  border-color:var(--border);box-shadow:var(--shadow-soft);
}
.ex-card,.cycle-day,.sess-card{position:relative;overflow:hidden}
.ex-card::after,.cycle-day::after{content:none}
.ex-nm,.cycle-day-name,.cycle-week-title,.rules-ttl{font-weight:800}
.ex-plan.gym,.day-type-badge.gym,.f-btn.active,.cycle-progress,.cycle-open{background:var(--acc-bg);color:var(--acc);border-color:color-mix(in srgb,var(--acc) 44%,var(--border))}
.btn-save,.btn-done,.swap-go,.add-set{background:var(--acc)!important;color:var(--on-acc)!important;box-shadow:none!important}
.btn-save:active,.btn-done:active,.swap-go:active{filter:brightness(.92)}
.chk{border-radius:8px}
.ex-card.done .chk{background:var(--acc);border-color:var(--acc);color:var(--on-acc)}
.pb.s0,.pb.s1,.pb.s2{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
.swap-opt,#page-history>div[style*="background:#fff"]{background:var(--card)!important;color:var(--text)!important;border-color:var(--border)!important}

/* Summary / tonnage */
.overview-hero{
  padding:18px;border-radius:20px;border:1px solid var(--border);
  background:var(--card);box-shadow:var(--shadow-soft);isolation:isolate;
}
.overview-hero::before{content:none}
.overview-hero::after{content:none}
.overview-brand-row{display:flex;align-items:center;justify-content:space-between;gap:10px;position:relative;z-index:1}
.overview-kicker{color:var(--acc);font-size:10px;font-weight:900;letter-spacing:.13em}
.overview-period{font-size:10px;font-weight:800;padding:5px 8px;border:1px solid var(--border);border-radius:999px;background:var(--glass);color:var(--muted);white-space:nowrap}
.overview-title{font-family:"Arial Black","SF Pro Display",system-ui,sans-serif;font-size:28px;font-weight:950;letter-spacing:-.045em;text-transform:uppercase;margin-top:7px;position:relative;z-index:1}
.overview-sub{max-width:470px;position:relative;z-index:1}
.overview-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:16px;position:relative;z-index:1}
.overview-stat{min-width:0;min-height:105px;padding:12px;border-radius:16px;background:color-mix(in srgb,var(--card-solid) 78%,transparent);border:1px solid var(--border);box-shadow:0 8px 22px rgba(0,0,0,.05)}
html[data-theme="dark"] .overview-stat{background:rgba(255,255,255,.04)}
.overview-stat.tonnage{grid-column:1/-1;min-height:126px;border-color:color-mix(in srgb,var(--acc) 34%,var(--border));background:var(--acc-bg)}
.metric-label{display:block;font-size:10px!important;font-weight:850;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)!important}
.overview-stat b{font-family:"Arial Black","SF Pro Display",system-ui,sans-serif;font-size:25px;letter-spacing:-.04em;margin-top:11px;color:var(--text)}
.overview-stat.tonnage b{font-size:42px;line-height:1}.overview-stat b small{font-family:inherit;font-size:.36em;color:var(--acc);letter-spacing:0}
.metric-foot{display:block!important;margin-top:8px;font-size:10.5px!important;line-height:1.35;color:var(--muted)!important}
.metric-foot.up{color:var(--ok)!important}.metric-foot.down{color:var(--warn)!important}
.metric-progress{height:6px;margin-top:10px;border-radius:999px;background:rgba(120,124,110,.16);overflow:hidden}
.metric-progress i{display:block;height:100%;border-radius:inherit;background:var(--acc)}
.tonnage-note{position:relative;z-index:1;margin-top:11px;padding-top:10px;border-top:1px solid var(--border);font-size:10px;line-height:1.45;color:var(--muted)}
.cycle-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin:22px 2px 11px}
.cycle-section-kicker{font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.14em;color:var(--acc)}
.cycle-section-head h3{margin:3px 0 0;font-family:"Arial Black","SF Pro Display",system-ui,sans-serif;font-size:21px;line-height:1;text-transform:uppercase;letter-spacing:-.025em}
.cycle-section-head>span{font-size:10px;font-weight:850;color:var(--muted);letter-spacing:.08em}
.cycle-week.current{border-color:color-mix(in srgb,var(--acc) 46%,var(--border))}
.cycle-week-title{font-family:"Arial Black","SF Pro Display",system-ui,sans-serif;text-transform:uppercase;font-size:16px}
.cycle-day.today{border-color:var(--acc);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--acc) 30%,transparent),var(--shadow-soft)}
.cycle-day-status{font-weight:850}.cycle-day.today .cycle-day-status{background:var(--acc);color:var(--on-acc)}
.cycle-ex-target{color:var(--acc)}

@media(max-width:430px){
  .app-mark{width:40px;height:40px}.hdr h1{font-size:14px}.overview-title{font-size:25px}
  .overview-stat.tonnage b{font-size:37px}.overview-stat{padding:10px}.metric-label{font-size:9px!important}
}
@media(max-width:365px){
  .overview-stats{grid-template-columns:1fr 1fr}.overview-stat.tonnage{grid-column:1/-1}.overview-stat:last-child{grid-column:1/-1}
  .overview-brand-row{align-items:flex-start;flex-direction:column;gap:5px}.overview-stat b{font-size:23px}
}
@media(prefers-reduced-transparency:reduce){.overview-hero,.overview-stat{background:var(--card-solid)!important}}
.cycle-day-fact{margin:-1px 0 7px;padding:6px 8px;border-radius:9px;background:var(--acc-bg);color:var(--acc);font-size:10.5px;font-weight:800}
.cycle-day-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:-1px 0 9px}
.cycle-day-summary>div{min-width:0;padding:8px 7px;border-radius:11px;background:rgba(120,124,110,.075);border:1px solid var(--border);text-align:center}
.cycle-day-summary b{display:block;font-family:"Arial Black","SF Pro Display",system-ui,sans-serif;font-size:15px;line-height:1.05;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cycle-day-summary small{display:block;margin-top:4px;font-size:8.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.cycle-day-summary .pct b,.cycle-day-summary .tonnage b{color:var(--acc)}
.cycle-day-bw{margin:-3px 0 8px;font-size:9.5px;font-weight:750;color:var(--muted)}
.cycle-day-bw strong{color:var(--acc)}
.cycle-day-time{margin:-3px 0 8px;font-size:10.5px;font-weight:700;color:var(--muted)}
.cycle-day-transfer{margin:0 0 8px;padding:6px 9px;border-radius:9px;font-size:11px;font-weight:650;line-height:1.4;background:var(--blue-bg,#EFF6FF);color:#1E3A8A;border:1px solid #BFDBFE}
.cycle-ex.actual .cycle-ex-target{max-width:185px;color:var(--text);font-weight:760}
.cycle-ex.actual.done .cycle-ex-name::before{content:"✓ ";color:var(--ok)}
.cycle-ex.actual.skipped{opacity:.60}.cycle-ex.actual.skipped .cycle-ex-name{text-decoration:line-through}.cycle-ex.actual.skipped .cycle-ex-target{color:var(--red)}
.bw-mark{display:inline-block;margin-top:3px;padding:2px 5px;border-radius:999px;background:var(--acc-bg);color:var(--acc);font-size:8.5px;font-weight:850;letter-spacing:.04em}
@media(max-width:430px){.cycle-day-summary{grid-template-columns:1fr 1fr}}
@media(max-width:370px){.cycle-ex.actual .cycle-ex-target{max-width:150px}}


/* ── календарь зон, недельные карточки, формы ── */
.zc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.zc-dow{font-size:10px;color:var(--muted);text-align:center;font-weight:600;padding:2px 0}
.zc-day{aspect-ratio:1;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;background:var(--bg);color:var(--muted);cursor:pointer;border:1.5px solid transparent}
.zc-day.zg{background:var(--ok-bg);color:var(--ok)}
.zc-day.zy{background:var(--warn-bg);color:var(--warn)}
.zc-day.zr{background:var(--red-bg);color:var(--red)}
.zc-day.zt{border-color:var(--acc)}
.zc-day.zfuture{opacity:.35;cursor:default}
.wk-card{background:var(--card);border:1.5px solid var(--border);border-radius:var(--r);padding:10px 12px;margin-bottom:8px;font-size:12.5px}
.wk-hdr{font-weight:700;margin-bottom:4px}
.wk-row{display:flex;flex-wrap:wrap;gap:10px;color:var(--muted)}
.tr-lbl{font-size:11px;color:var(--muted);margin:6px 0 2px;font-weight:600}
#ef-group,#ef-name-sel{width:100%;padding:8px;border:1.5px solid var(--border);border-radius:10px;font-size:13px;background:var(--field);color:var(--text)}
.swap-db{width:100%;padding:8px;border:1.5px solid var(--border);border-radius:10px;font-size:12.5px;background:var(--field);color:var(--text);margin-bottom:6px}

/* Переключатель блока в сводке */
.overview-cycle-picker{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;position:relative;z-index:1}
.cycle-pick{min-height:38px;padding:7px 12px;border-radius:10px;border:1.5px solid var(--border);background:var(--card-solid);color:var(--muted);font-size:12px;font-weight:750;cursor:pointer}
.cycle-pick.on{border-color:var(--acc);background:var(--acc-bg);color:var(--acc)}

/* Собственный вес */
.bw-input-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.bw-input{width:104px}
.bw-save{min-height:44px;padding:0 14px;background:var(--acc);color:var(--on-acc);font-size:13px}
.bw-current{margin-top:8px;font-size:12.5px;color:var(--muted)}
.bw-current b{color:var(--text)}
.bw-hint{margin-top:6px;font-size:11px;line-height:1.45;color:var(--muted)}
.bw-log-ttl{margin:12px 0 6px;font-size:10px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.bw-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--border);font-size:13px}
.bw-date{color:var(--muted);min-width:82px}
.bw-kg{font-weight:750}
.bw-delta{font-size:11.5px;font-weight:700;color:var(--muted)}
.bw-delta.up{color:var(--warn)}.bw-delta.down{color:var(--ok)}
.bw-del{margin-left:auto;min-width:34px;min-height:34px;border:1px solid var(--border);border-radius:9px;background:var(--bg);color:var(--muted);font-size:16px;line-height:1;cursor:pointer}

/* Диалоги приложения (вместо системных alert/confirm) */
.app-dialog{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(12,8,28,.55)}
.app-dialog.open{display:flex}
.app-dialog-card{width:100%;max-width:380px;background:var(--card-solid);color:var(--text);border:1px solid var(--border-strong);border-radius:18px;padding:18px;box-shadow:var(--shadow)}
.app-dialog-card.danger{border-color:color-mix(in srgb,var(--red) 55%,var(--border))}
.app-dialog-title{font-size:16px;font-weight:800;line-height:1.25;margin-bottom:8px}
.app-dialog-title:empty{display:none}
.app-dialog-text{font-size:13.5px;line-height:1.5;color:var(--text)}
.app-dialog-text div:empty{height:7px}
.app-dialog-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.app-dialog-actions .btn{flex:1;min-width:120px;min-height:46px;justify-content:center}
.app-dialog-ok{background:var(--acc);color:var(--on-acc)}
.app-dialog-card.danger .app-dialog-ok{background:var(--red);color:#fff}
.app-dialog-cancel{background:var(--bg);border:1.5px solid var(--border);color:var(--text)}
body.dialog-open{overflow:hidden}

/* ── Эргономика iPhone, доступность, темы ────────────────────────────────── */

/* Кнопки и поля не мельче 44×44 pt (рекомендация Apple HIG) */
.tab,.dn-btn,.btn,.alc-btn,.cat-opt,.f-btn,.theme-toggle,.add-set,.cycle-open,.swap-go{min-height:44px}
.pb,.extra-del{min-width:44px;min-height:44px}
.theme-toggle{width:44px;height:44px}
/* Отметка выполнения — главная цель касания в карточке */
.chk{width:44px;height:44px;min-width:44px;font-size:17px}
/* Стрелки порядка идут парой: столбик 30×64 pt при компактной ширине */
.ord-col{gap:3px;margin-right:2px}
.ord-btn{width:30px;height:30px;min-width:30px;min-height:30px}

/* Компактный заголовок: длинное имя занимает всю ширину, плашка плана уходит вниз */
.ex-hdr{flex-wrap:wrap;row-gap:6px;padding:10px 12px;min-height:0}
.ex-meta{flex:1 1 60%;min-width:148px}
.ex-nm{font-size:14px;line-height:1.25}
.ex-plan{flex:0 1 auto;max-width:100%;margin-left:auto;font-size:11px;padding:5px 9px}
/* Плашка плана: основная нагрузка — акцент, дополнительная — нейтральная */
.ex-plan.warmup,.ex-plan.rehab,.ex-plan.home{background:color-mix(in srgb,var(--muted) 12%,transparent);color:var(--muted)}
.ex-card.cat-main .ex-plan:not(.fact):not(.rir-zero){background:var(--acc-bg);color:var(--acc)}
.ex-blk{font-size:9.5px;letter-spacing:.05em}

/* Полоса слева кодирует категорию нагрузки, а не тип блока */
.ex-card.warmup-card,.ex-card.rehab-card,.ex-card.test-card{border-left:1px solid var(--border)}
.ex-card.cat-main{border-left:3px solid var(--acc)}
.ex-card.cat-accessory{border-left:3px solid color-mix(in srgb,var(--muted) 45%,transparent)}
/* Подсказка по технике — нейтральная; красной остаётся только опасная */
.cue{background:color-mix(in srgb,var(--muted) 9%,transparent);color:var(--text);border-left:3px solid color-mix(in srgb,var(--muted) 40%,transparent)}
.cue.danger{background:var(--red-bg);color:var(--red);border-left-color:var(--red)}
.cue.info{background:var(--acc-bg);color:var(--acc-d);border-left-color:var(--acc)}
html[data-theme="dark"] .cue.info{color:var(--acc-d)}
.set-row input,#ef-weight,#ef-reps,.swap-inp{min-height:44px}
select,textarea{min-height:44px}

/* Безопасные зоны: контент и панели не уходят под вырез и home-indicator */
.hdr{padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right))}
.content{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
.save-bar{padding-bottom:calc(10px + env(safe-area-inset-bottom))}

/* Тексты остаются читаемыми при увеличенном системном шрифте */
.wl-text,.wl-hint,.empty-hint,.cue{overflow-wrap:anywhere}

/* Полупрозрачные поверхности заменяются сплошными, если пользователь просил */
@media (prefers-reduced-transparency:reduce){
  .hdr,.tabs,.save-bar{background:var(--card-solid)}
}

/* Уважение к системной настройке «уменьшить движение» */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;
  }
  .page.active{animation:none}
  .tab:active,.theme-toggle:active{transform:none}
}

/* ── Статус упражнения: две постоянные кнопки, как в Galya Training ── */
.status-control{margin-top:12px}
.status-control-label{
  margin-bottom:7px;color:var(--muted);font-size:10.5px;font-weight:800;
  letter-spacing:.06em;text-transform:uppercase;
}
.status-actions{margin-top:0}
.status-actions .status-btn{
  flex:1;min-width:0;background:var(--field)!important;color:var(--text)!important;
  border:1.5px solid var(--border-strong)!important;box-shadow:none!important;
}
.status-actions .status-btn:active{filter:none;opacity:.78}
.ex-card.done,.extra-card.done{
  border-color:color-mix(in srgb,var(--ok) 72%,var(--border));
  background:color-mix(in srgb,var(--ok-bg) 62%,var(--card));
}
.ex-card.skipped,.extra-card.skipped{
  border-color:color-mix(in srgb,var(--red) 72%,var(--border));
  background:color-mix(in srgb,var(--red-bg) 62%,var(--card));
}
.ex-card.done .status-btn.btn-done,.extra-card.done .status-btn.btn-done{
  background:var(--ok-bg)!important;color:var(--ok)!important;border-color:var(--ok)!important;
}
.ex-card.skipped .status-btn.btn-skip,.extra-card.skipped .status-btn.btn-skip{
  background:var(--red-bg)!important;color:var(--red)!important;border-color:var(--red)!important;
}
.ex-card.done .chk,.extra-card.done .chk{background:var(--ok);border-color:var(--ok);color:#fff}
.ex-card.skipped .chk,.extra-card.skipped .chk{background:var(--red);border-color:var(--red);color:#fff}
.ex-hdr .chk,.extra-hdr .chk{cursor:default;pointer-events:none}
.extra-card.skipped .extra-summary{color:var(--muted)}

@media(max-width:360px){
  .status-actions{gap:6px}
  .status-actions .status-btn{padding-inline:8px;font-size:13px}
}
