:root {
  color-scheme: light;
  --bg:#f5f5f7; --surface:#fff; --ink:#242329; --muted:#696670; --line:#dddbe2;
  --accent:#675c80; --soft:#ebe8f0; --plum:#8a6477; --danger:#963e4d;
  --safe-bottom:env(safe-area-inset-bottom,0px);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--ink); background:var(--bg); font-synthesis:none;
}
* { box-sizing:border-box; letter-spacing:0; }
html { scroll-padding-bottom:100px; }
body { margin:0; min-width:320px; -webkit-tap-highlight-color:transparent; }
button,input,select,textarea { font:inherit; }
a { color:var(--accent); }
button,a,summary { touch-action:manipulation; cursor:pointer; }
button:disabled { opacity:.5; cursor:wait; }
:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
[hidden] { display:none !important; }
h1,h2,h3,p { margin:0; }
h2 { font-size:19px; line-height:1.4; }
h3 { font-size:16px; line-height:1.5; }
p { line-height:1.65; }
.app-shell { min-height:100svh; padding-bottom:calc(94px + var(--safe-bottom)); }
.topbar { max-width:720px; padding:calc(20px + env(safe-area-inset-top,0px)) 24px 18px; margin:auto; display:flex; align-items:center; justify-content:space-between; }
.brand-lockup { display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--ink); }
.brand-mark { font:italic 700 30px Georgia,serif; color:var(--ink); width:35px; }
.brand-lockup strong { display:block; font-size:17px; }
.eyebrow { display:block; font-size:10px; color:var(--muted); margin-top:4px; }
.icon-button { display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; border:0; background:transparent; color:var(--muted); border-radius:8px; text-decoration:none; }
.icon-button:hover,.icon-button:active { background:var(--soft); color:var(--accent); }
main { max-width:720px; margin:auto; padding:14px 24px 32px; }
.page-intro { margin-bottom:24px; }
.kicker { color:var(--muted); font-size:12px; font-weight:600; margin-bottom:8px; }
.muted { color:var(--muted); }
.tiny { font-size:12px; color:var(--muted); line-height:1.6; }
.page-intro .muted { font-size:14px; margin-top:10px; }
.section { margin-top:30px; }
.section-heading { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:14px; }
.section-heading h2 { font-size:17px; }
.section-heading a { font-size:13px; min-height:44px; display:flex; align-items:center; gap:6px; text-decoration:none; }
.week-track { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:16px 0; gap:4px; }
.track-day { display:flex; flex-direction:column; align-items:center; gap:8px; color:var(--muted); font-size:11px; min-height:78px; }
.track-date { display:grid; place-items:center; min-height:32px; width:32px; border-radius:50%; font-size:15px; color:var(--ink); font-variant-numeric:tabular-nums; }
.track-day.today .track-date { background:var(--ink); color:white; }
.track-state { min-height:16px; font-size:11px; color:var(--muted); }
.track-state.planned { color:var(--accent); font-weight:700; }
.track-state.done { color:var(--plum); font-weight:700; }
.session-feature { padding:26px 0 24px; border-bottom:1px solid var(--line); }
.session-feature .session-label { font-size:12px; color:var(--accent); margin-bottom:12px; }
.session-feature h2 { font-size:25px; max-width:20ch; }
.session-feature .meta { margin:14px 0 20px; display:flex; flex-wrap:wrap; gap:8px 20px; font-size:13px; color:var(--muted); }
.primary,.secondary,.danger,.ghost { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:46px; padding:10px 16px; border-radius:8px; border:1px solid transparent; font-weight:600; font-size:14px; text-decoration:none; transition:background .15s,opacity .15s; }
.primary { background:var(--ink); color:#fff; }
.primary:hover,.primary:active { background:var(--accent); }
.secondary { background:var(--soft); color:var(--accent); }
.ghost { background:transparent; border-color:var(--line); color:var(--ink); }
.danger { background:#f6e8eb; color:var(--danger); }
.button-row { display:flex; gap:10px; flex-wrap:wrap; }
.full { width:100%; }
.metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); padding:22px 0; border-bottom:1px solid var(--line); }
.metric { padding:0 12px; border-left:1px solid var(--line); }
.metric:first-child { border-left:0; padding-left:0; }
.metric strong { display:block; font-size:24px; font-weight:600; font-variant-numeric:tabular-nums; }
.metric span { display:block; margin-top:6px; font-size:12px; color:var(--muted); }
.note { margin-top:18px; padding-left:12px; border-left:2px solid var(--plum); font-size:13px; color:var(--muted); line-height:1.7; }
.workout-list { border-top:1px solid var(--line); }
.workout-row { width:100%; display:grid; grid-template-columns:42px 1fr 20px; align-items:center; gap:14px; padding:24px 0; background:transparent; text-align:left; border:0; border-bottom:1px solid var(--line); color:var(--ink); text-decoration:none; }
.workout-row:hover,.workout-row:active { background:var(--soft); }
.workout-letter { font:500 32px Georgia,serif; color:var(--accent); }
.workout-row h2 { font-size:18px; }
.workout-row p { font-size:13px; color:var(--muted); margin-top:7px; }
.pill { display:inline-block; font-size:11px; background:var(--soft); color:var(--accent); padding:4px 7px; border-radius:4px; font-weight:600; }
.detail-header { display:flex; align-items:center; gap:8px; margin-bottom:18px; }
.phase { padding:18px 0; border-top:1px solid var(--line); }
.phase h2 { font-size:16px; margin-bottom:8px; }
.phase p { font-size:14px; color:var(--muted); }
.exercise { padding:24px 0; border-top:1px solid var(--line); }
.exercise-title { display:flex; align-items:flex-start; gap:12px; }
.exercise-index { color:var(--plum); font-size:13px; min-width:20px; padding-top:3px; }
.exercise-title>div { min-width:0; flex:1; }
.exercise h2 { font-size:18px; }
.exercise-meta { margin-top:8px; display:flex; gap:8px 14px; flex-wrap:wrap; font-size:12px; color:var(--muted); }
.exercise details { margin-top:12px; font-size:13px; }
.exercise summary { display:flex; align-items:center; gap:6px; min-height:44px; color:var(--accent); list-style:none; }
summary::-webkit-details-marker { display:none; }
.exercise details p { color:var(--muted); margin:8px 0; }
.field { display:block; font-size:13px; color:var(--muted); }
.field input,.field select,.field textarea { margin-top:7px; }
input,select,textarea { width:100%; min-width:0; border:1px solid #aaa7b3; background:var(--surface); color:var(--ink); border-radius:6px; min-height:44px; padding:10px; font-size:16px; }
input:invalid { border-color:var(--danger); }
textarea { min-height:88px; resize:vertical; }
.set-grid { display:grid; grid-template-columns:32px repeat(3,minmax(0,1fr)); gap:8px; align-items:center; margin-top:8px; font-size:12px; color:var(--muted); }
.set-grid input { text-align:center; padding:10px 4px; }
.previous { margin-top:12px; font-size:12px; line-height:1.7; color:var(--muted); }
.progression { margin-top:8px; font-size:12px; line-height:1.7; color:var(--accent); }
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px 14px; }
.form-grid .wide { grid-column:1/-1; }
.record-panel { padding:20px; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.week-header { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:30px 0 12px; }
.week-header span { font-size:12px; color:var(--muted); }
.schedule-row { width:100%; border:0; border-bottom:1px solid var(--line); background:transparent; text-align:left; padding:18px 0; display:grid; grid-template-columns:40px 1fr 20px; gap:14px; align-items:center; color:var(--ink); text-decoration:none; }
.schedule-row:hover { background:var(--soft); }
.schedule-date strong { display:block; font-size:22px; font-weight:500; font-variant-numeric:tabular-nums; }
.schedule-date span { font-size:11px; color:var(--muted); }
.schedule-row h3 { font-size:15px; }
.schedule-row p { font-size:12px; color:var(--muted); margin-top:6px; }
.guide-item { border-top:1px solid var(--line); padding:0; }
.guide-item summary { min-height:60px; display:flex; align-items:center; justify-content:space-between; font-size:16px; font-weight:600; gap:12px; list-style:none; }
.guide-content { padding:0 0 20px; line-height:1.8; font-size:14px; color:var(--muted); }
.guide-content ul { margin:8px 0; padding-left:20px; }
.guide-content li+li { margin-top:8px; }
.guide-content a { overflow-wrap:anywhere; }
.history-row { padding:16px 0; border-bottom:1px solid var(--line); }
.history-row p { font-size:13px; color:var(--muted); margin-top:6px; }
.empty { color:var(--muted); padding:20px 0; font-size:14px; }
.bottom-nav { position:fixed; z-index:10; bottom:0; left:0; right:0; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); padding:8px max(12px,calc((100vw - 680px)/2)) calc(8px + var(--safe-bottom)); border-top:1px solid var(--line); background:#ffffffed; backdrop-filter:blur(12px); }
.bottom-nav a { display:flex; flex-direction:column; justify-content:center; align-items:center; gap:7px; min-height:52px; text-decoration:none; color:var(--muted); font-size:11px; }
.bottom-nav a[aria-current=page] { color:var(--accent); font-weight:700; }
.bottom-nav a[aria-current=page] svg { stroke-width:2.3; }
.skip-link { position:absolute; left:-9999px; top:8px; z-index:100; background:var(--ink); color:white; padding:12px; }
.skip-link:focus { left:8px; }
.warning { max-width:672px; padding:14px; background:#f6e8eb; color:var(--danger); margin:0 auto 12px; font-size:14px; }
.toast { position:fixed; z-index:30; bottom:calc(90px + var(--safe-bottom)); left:24px; right:24px; margin:auto; max-width:620px; border-radius:8px; padding:14px; background:var(--ink); color:white; font-size:14px; text-align:center; display:none; }
.toast.is-visible { display:block; }
dialog { border:1px solid var(--line); border-radius:8px; padding:24px; max-width:420px; width:calc(100% - 40px); background:white; color:var(--ink); }
dialog::backdrop { background:#24232980; }
dialog p { font-size:14px; color:var(--muted); margin:14px 0; }
.error-text { color:var(--danger); font-size:13px; min-height:20px; margin-top:6px; }
@media (max-width:380px) { main,.topbar { padding-left:20px; padding-right:20px; } .form-grid { gap:16px 10px; } .record-panel { padding:16px; } }
@media (min-width:900px) { .topbar { padding-top:30px; } main { padding-top:24px; } .workout-row { padding:28px 0; } }
@media (prefers-reduced-motion:reduce) { * { transition:none !important; animation:none !important; scroll-behavior:auto !important; } }
.recovery-strip { border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:18px 0 10px; }
.recovery-list { display:grid; gap:0; }
.recovery-list>div { display:grid; grid-template-columns:minmax(112px, .75fr) 1.25fr; gap:14px; padding:14px 0; border-top:1px solid var(--line); }
.recovery-list strong { font-size:14px; }
.recovery-list span { color:var(--muted); font-size:13px; line-height:1.6; }
.recovery-strip .pill { background:#eeeaf2; color:var(--plum); }
.set-grid .rir-help { grid-column:2/-1; font-size:11px; color:var(--muted); margin-top:-2px; }
.track-day.is-empty { opacity:.48; pointer-events:none; }
.track-day.is-empty .track-date { color:var(--muted); }
.workout-letter { display:grid; place-items:center; width:36px; height:36px; border-radius:50%; background:var(--soft); font:600 18px Georgia,serif; color:var(--accent); }
.preview-notice { border-left:3px solid var(--accent); }
.preview-notice .button-row { display:none; }
.bottom-nav a, .primary, .secondary, .ghost { -webkit-user-select:none; user-select:none; }
.fixed-complete { position:fixed; z-index:9; left:24px; right:24px; bottom:calc(76px + var(--safe-bottom)); max-width:672px; margin:auto; }

.preview-notice { border-left:3px solid var(--accent); }
.pain-options { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0 0 42px; }
.pain-options label { display:inline-flex; align-items:center; gap:5px; min-height:32px; padding:4px 8px; border:1px solid var(--line); border-radius:6px; color:var(--muted); font-size:12px; }
.pain-options input { width:18px; min-height:18px; accent-color:var(--plum); }
.rir-explainer { margin:0 0 -8px 42px; }
body.has-complete-bar { padding-bottom:calc(148px + var(--safe-bottom)); }
.fixed-complete .primary { width:100%; box-shadow:0 8px 24px #24232924; }
