:root{--bg:#0b1220;--panel:#111c30;--line:#29364c;--text:#f8fafc;--muted:#8e9cb1;--easy:#4bc6f2;--quality:#ffb52e;--long:#b68cff;--complete:#b7f238;--rest:#172236;--danger:#ff726f;--tech:"Cascadia Code","SFMono-Regular",Consolas,monospace;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color-scheme:dark}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text)}button,input,select{font:inherit}.app-shell{height:100svh;max-width:900px;margin:auto;padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto;overflow:hidden}
.app-header{height:47px;display:flex;align-items:center;gap:10px}.brand{font-size:19px;letter-spacing:-1px}.brand span{font-weight:300}.brand strong{color:var(--easy);font-family:var(--tech);font-size:18px}.event-brief{min-width:0;display:grid;line-height:1.1;flex:1}.event-brief strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-brief span{font:10px var(--tech);color:var(--muted);margin-top:3px;text-transform:uppercase}.icon-button{border:1px solid var(--line);background:#152239;color:var(--text);width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-size:22px;cursor:pointer}.icon-button[aria-expanded=true]{transform:rotate(180deg)}
.plan-details{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--panel);margin-bottom:7px}.plan-details div{display:grid;gap:2px}.plan-details span,.sheet-head small{font:9px var(--tech);letter-spacing:.08em;color:var(--muted)}.plan-details strong{font-size:12px}.button{border:0;border-radius:10px;background:#26354d;color:var(--text);padding:10px 12px;font-weight:750;cursor:pointer}.button.compact{padding:7px 11px;font-size:12px}.button.subtle{background:#1a273b;text-transform:uppercase;font:700 10px var(--tech);display:flex;align-items:center;gap:6px}
.progress-area{display:grid;gap:4px;margin-bottom:5px}.week-progress{height:4px;border-radius:99px;background:#26334a;overflow:hidden}.week-progress span{display:block;height:100%;background:var(--easy)}.progress-labels{display:flex;justify-content:space-between;font:9px var(--tech);color:var(--muted)}.run-progress{height:7px;display:grid;grid-template-columns:repeat(48,1fr);gap:1px}.run-progress span{background:#27354b;border-radius:1px}.run-progress span.done{background:var(--complete)}
.calendar{min-height:0;border:1px solid var(--line);border-radius:13px;background:var(--panel);padding:4px;overflow:hidden;display:grid;grid-template-rows:19px minmax(0,1fr)}.calendar-head,.week-row{display:grid;grid-template-columns:47px repeat(7,minmax(0,1fr)) 28px;gap:2px}.calendar-head{align-items:center;color:var(--muted);font:8px var(--tech);text-align:center}.week-rows{min-height:0}.week-row{height:calc((100%)/12);min-height:30px;border-top:1px solid rgba(255,255,255,.045);align-items:stretch}.week-label{display:grid;align-content:center;justify-items:start;padding-left:3px;min-width:0}.week-label strong{font:700 10px var(--tech)}.week-label time{font:8px var(--tech);color:var(--muted)}.day-cell{position:relative;min-width:0;border:0;border-radius:5px;margin:1px 0;padding:1px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#07101b;cursor:pointer;overflow:hidden}.day-cell.easy{background:var(--easy)}.day-cell.quality{background:var(--quality)}.day-cell.long{background:var(--long)}.day-cell.rest{background:var(--rest);color:#687991}.day-cell.complete{background:var(--complete)!important;color:#152100}.day-cell.skipped{opacity:.38}.day-cell.postponed{background:transparent;border:1px dotted #74839a;color:#74839a}.day-cell strong{font:700 clamp(7px,2vw,10px) var(--tech);line-height:1}.day-cell small{font:7px var(--tech);opacity:.72;margin-top:1px}.cell-mark{position:absolute;right:1px;top:0;font-size:7px}.week-open{border:0;background:transparent;color:var(--muted);font-size:18px;padding:0;cursor:pointer}footer{height:25px;display:flex;align-items:end;justify-content:center}footer a{font:10px var(--tech);color:var(--muted);text-decoration:none}footer span{color:var(--easy)}
.scrim{position:fixed;inset:0;background:rgba(2,7,15,.68);backdrop-filter:blur(3px);z-index:20}.bottom-sheet{position:fixed;z-index:30;left:50%;bottom:0;transform:translate(-50%,0);width:min(720px,100%);max-height:min(86svh,720px);overflow:auto;background:#111b2d;border:1px solid #33415a;border-bottom:0;border-radius:22px 22px 0 0;padding:8px max(14px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));box-shadow:0 -18px 55px rgba(0,0,0,.45);animation:sheet-up .2s ease-out}.bottom-sheet[hidden],.scrim[hidden]{display:none}#day-sheet{z-index:40}.week-sheet.sheet-underlay{transform:translate(-50%,-8px) scale(.975);filter:brightness(.72);pointer-events:none}.setup-sheet{max-height:94svh}@keyframes sheet-up{from{transform:translate(-50%,100%)}to{transform:translate(-50%,0)}}.sheet-grip{width:42px;height:4px;border-radius:4px;background:#44516a;margin:0 auto 10px}.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.sheet-head h2{font-size:20px;margin:3px 0}.sheet-head p{font-size:12px;color:var(--muted);margin:0}.sheet-head .icon-button{flex:0 0 auto}.sheet-main{display:grid;grid-template-columns:92px minmax(0,1fr) 112px;align-items:center;gap:10px;margin-top:12px}.action-stack{display:grid;gap:6px}.flag-stack{display:grid;grid-template-columns:1fr 1fr;gap:5px}.flag-stack button{height:34px;border:1px solid var(--line);border-radius:9px;background:#131f32;color:var(--muted);cursor:pointer}.flag-stack button.active{color:#07101b;background:var(--quality);border-color:transparent}.gauges{display:flex;justify-content:center;gap:12px}.gauge-wrap{display:grid;gap:3px;text-align:center;color:var(--muted);font:9px var(--tech)}.gauge{--pct:50;position:relative;width:126px;height:126px;border-radius:50%;background:conic-gradient(from 225deg,var(--easy) calc(var(--pct)*.75%),#354156 0 75%,transparent 0);clip-path:polygon(0 0,100% 0,100% 88%,74% 88%,60% 72%,40% 72%,26% 88%,0 88%)}.gauge:after{content:"";position:absolute;inset:11px;border-radius:50%;background:#111b2d}.gauge-face{position:absolute;z-index:2;inset:0;display:grid;place-content:center;padding-bottom:10px}.gauge-face strong{font:700 20px var(--tech);color:var(--text)}.gauge-face small{font:8px var(--tech);color:var(--muted)}.gauge input{position:absolute;z-index:5;inset:0;width:100%;height:100%;opacity:0;cursor:grab}.gauge-ticks span{position:absolute;z-index:4;font:7px var(--tech);color:#aeb9c9}.gauge-ticks span:nth-child(1){left:6px;bottom:22px}.gauge-ticks span:nth-child(2){left:9px;top:34px}.gauge-ticks span:nth-child(3){left:50%;top:8px;transform:translateX(-50%)}.gauge-ticks span:nth-child(4){right:9px;top:34px}.gauge-ticks span:nth-child(5){right:6px;bottom:22px}.complete-button{border:0;border-radius:15px;background:var(--complete);color:#142000;min-height:78px;font-weight:900;text-transform:uppercase;cursor:pointer}.complete-button span{display:block;font-size:24px}.note-field{display:grid;gap:4px;margin-top:9px;font:9px var(--tech);color:var(--muted)}.note-field input,.setup-grid select{width:100%;border:1px solid var(--line);background:#0b1423;color:var(--text);border-radius:10px;padding:10px;font-size:16px}.week-cards{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:14px}.week-card{border:1px solid var(--line);background:#172339;color:var(--text);border-radius:12px;min-height:100px;padding:8px 3px;display:grid;place-items:center;align-content:space-between;cursor:pointer}.week-card strong,.week-card small{font:9px var(--tech)}.week-card b{font:700 13px var(--tech)}.week-card.complete{background:var(--complete);color:#142000}.setup-grid{display:grid;gap:12px;margin:14px 0}.setup-grid label{display:grid;gap:5px;font:10px var(--tech);color:var(--muted)}.setup-grid fieldset{margin:0;padding:0;border:0}.setup-grid legend{padding:0 0 6px;font:9px var(--tech);letter-spacing:.07em;color:var(--muted)}.push-group{display:flex;flex-wrap:wrap;gap:5px}.push-group button{flex:1 1 auto;min-height:39px;border:1px solid var(--line);border-radius:10px;padding:7px 9px;background:#131f32;color:var(--text);font-size:12px;font-weight:750;cursor:pointer}.push-group button[aria-pressed=true]{border-color:var(--easy);background:color-mix(in srgb,var(--easy) 23%,#131f32);box-shadow:inset 0 0 0 1px var(--easy)}.compact-push button{min-height:34px;font:700 10px var(--tech)}.progression-toggle{display:flex!important;grid-template-columns:auto 1fr;align-items:center;margin-top:7px}.progression-toggle input{accent-color:var(--complete)}.field-help{margin:6px 0 0;color:var(--muted);font-size:11px;line-height:1.35}.setup-sheet>.complete-button{width:100%;min-height:48px}
@media(max-width:560px){.app-shell{grid-template-rows:auto auto auto minmax(0,1fr) auto}.plan-details{grid-template-columns:1fr auto}.plan-details div:nth-child(2){display:none}.progress-labels{display:none}.calendar-head,.week-row{grid-template-columns:42px repeat(7,minmax(0,1fr)) 25px;gap:1px}.calendar{padding:3px}.week-row{min-height:27px}.week-label{padding-left:2px}.week-label time{font-size:7px}.day-cell{border-radius:4px}.day-cell.rest strong{font-size:9px}.sheet-main{grid-template-columns:72px minmax(0,1fr);align-items:start}.action-stack{grid-row:1}.gauges{grid-column:2}.complete-button{grid-column:1/-1;min-height:48px}.button.subtle{padding:9px 5px;display:grid;place-items:center}.button.subtle span{font-size:8px}.gauge{width:min(29vw,118px);height:min(29vw,118px)}.gauge-face strong{font-size:18px}.week-cards{gap:3px}.week-card{padding:6px 2px}.week-card small{font-size:7px}}
@media(min-width:561px){#plan-details[hidden]{display:grid}.app-header .icon-button{display:none}}

/* Compact header and current-position states. */
.plan-details[hidden],.progress-labels[hidden]{display:none!important}
.app-header{position:relative}
.countdown{flex:0 0 auto;display:grid;justify-items:center;align-content:center;width:54px;height:45px;border-left:1px solid var(--line);font-family:var(--tech);line-height:.82}
.countdown strong{font-size:28px;color:var(--quality);letter-spacing:-2px}.countdown span{font-size:8px;color:var(--muted);letter-spacing:.12em;margin-top:4px}
.plan-details{grid-template-columns:repeat(3,minmax(0,1fr)) auto}.plan-details strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.day-cell.race{background:linear-gradient(145deg,#ffd14a,#ff8d2f);color:#241000}.day-cell.race small{font-weight:800}
.week-row.active-week{position:relative;z-index:1;outline:2px solid var(--easy);outline-offset:-1px;border-radius:7px;background:color-mix(in srgb,var(--easy) 7%,transparent)}
.day-cell.is-today{z-index:4;overflow:visible}
.day-cell.is-today:after{content:"";position:absolute;inset:-3px;border:2px solid var(--complete);border-top-color:var(--quality);border-right-color:var(--easy);border-radius:8px;pointer-events:none;animation:today-spin 2.2s linear infinite}
@keyframes today-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.day-cell.is-today:after{animation:today-pulse 1.6s ease-in-out infinite alternate}@keyframes today-pulse{to{opacity:.35}}}
@media(max-width:560px){.plan-details{grid-template-columns:repeat(3,minmax(0,1fr)) auto}.plan-details div:nth-child(2){display:grid}.plan-details strong{font-size:10px}.plan-details .button{padding:6px 8px}.event-brief span{font-size:8px}.countdown{width:49px}.countdown strong{font-size:27px}}
