*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow:hidden}html{font-size:clamp(20px,1.6vw,32px)}body{background:#0a0a0a;color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-feature-settings:"tnum";-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:transparent;border:none;cursor:pointer}.tv{height:100vh;width:100vw;display:flex;flex-direction:column;padding:3vh 4vw;gap:2vh;background:#0a0a0a;transition:background-color .4s ease}.tv--warmup{background:#1e3a5f}.tv--work{background:#1a5f3a}.tv--rest{background:#5f3a1a}.tv--round-break{background:#4a2810}.tv--cooldown{background:#1e3a5f}.tv--countdown{background:#6b1a1a}.tv-h1{font-size:clamp(56px,8vw,144px);font-weight:800;line-height:1;letter-spacing:-.02em}.tv-h2{font-size:clamp(36px,5vw,88px);font-weight:700;line-height:1.05}.tv-mono{font-variant-numeric:tabular-nums;font-family:SF Mono,Menlo,Monaco,Consolas,monospace}.tv-row{display:flex;justify-content:space-between;align-items:center;gap:2vw}.tv-meta{font-size:clamp(18px,1.8vw,32px);color:#f5f5f5b3;text-transform:uppercase;letter-spacing:.15em}.tv-list{list-style:none;display:flex;flex-direction:column;gap:.6vh;font-size:clamp(22px,2.2vw,40px)}.tv-section-title{font-size:clamp(16px,1.5vw,26px);text-transform:uppercase;letter-spacing:.2em;color:#f5f5f58c;margin-bottom:.4vh}.tv-button{font-size:clamp(40px,5vw,88px);font-weight:800;letter-spacing:.05em;padding:2vh 4vw;background:#f5f5f5;color:#0a0a0a;border-radius:14px;text-transform:uppercase;width:100%}.tv-button:focus-visible{outline:6px solid #ffd166;outline-offset:4px}.tv-button--ghost{background:transparent;color:#f5f5f5;border:4px solid #f5f5f5}.workout{height:100vh;width:100vw;display:grid;grid-template-rows:auto 1fr auto auto;padding:3vh 4vw;gap:1.5vh;transition:background-color .2s ease}.workout--paused{filter:saturate(.5)}.workout-top{display:flex;justify-content:space-between;align-items:flex-start;font-size:clamp(20px,2vw,40px);text-transform:uppercase;letter-spacing:.15em;color:#f5f5f5d9}.workout-center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2vh;text-align:center;min-height:0}.workout-name{font-size:clamp(72px,11vw,220px);font-weight:900;line-height:.95;letter-spacing:-.02em}.workout-time{font-size:clamp(96px,16vw,320px);font-weight:900;line-height:.95;letter-spacing:-.04em}.workout-reps{font-size:clamp(56px,7vw,140px);font-weight:800;letter-spacing:-.02em}.workout-desc{font-size:clamp(22px,2.2vw,44px);color:#f5f5f5d9}.workout-bottom{font-size:clamp(22px,2.4vw,48px);text-align:center;color:#f5f5f5d9}.offline-badge{position:fixed;top:1.5vh;right:1.5vw;padding:.4vh 1vw;border-radius:6px;background:#5f3a1a;color:#f5f5f5;font-size:clamp(14px,1.2vw,22px);letter-spacing:.2em;text-transform:uppercase;font-weight:700}.banner{padding:2vh 3vw;background:#5f3a1a;border-radius:10px;font-size:clamp(20px,2vw,36px)}.scroll{flex:1;min-height:0;overflow:auto;padding-right:1vw}.muted-badge{position:fixed;top:1.5vh;left:1.5vw;padding:.4vh 1vw;border-radius:6px;background:#00000080;color:#f5f5f5;font-size:clamp(14px,1.2vw,22px);letter-spacing:.2em;text-transform:uppercase;font-weight:700}.paused-badge{font-size:clamp(24px,2.5vw,48px);font-weight:800;letter-spacing:.3em;text-transform:uppercase;padding:.6vh 2vw;border-radius:8px;background:#00000080;color:#f5f5f5;margin-top:1vh}.controls{display:flex;flex-wrap:wrap;gap:.8vw;align-items:center;padding-top:.5vh}.control-spacer{flex:1 1 0;min-width:1vw}.control-btn{font-size:clamp(14px,1.5vw,26px);font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:1.1vh 1.6vw;background:#00000059;color:#f5f5f5;border:2px solid rgba(245,245,245,.25);border-radius:10px;transition:background .12s ease,border-color .12s ease,transform 80ms ease;white-space:nowrap}.control-btn:hover,.control-btn:focus-visible{background:#0009;border-color:#f5f5f599;outline:none}.control-btn:active{transform:scale(.97)}.control-btn:disabled{opacity:.35;cursor:not-allowed}.control-btn--primary{background:#f5f5f5;color:#0a0a0a;border-color:#f5f5f5}.control-btn--primary:hover,.control-btn--primary:focus-visible{background:#ffd166;border-color:#ffd166}.control-btn--danger{border-color:#ff505099;color:#ffd1d1}.control-btn--danger:hover,.control-btn--danger:focus-visible{background:#6b1a1a;border-color:#ffd1d1}.app-nav{position:fixed;top:1vh;right:1.5vw;display:flex;gap:.6vw;z-index:100}.app-nav a{font-size:clamp(12px,1.1vw,18px);font-weight:700;letter-spacing:.18em;text-transform:uppercase;padding:.6vh 1.2vw;background:#00000073;color:#f5f5f5;border:1px solid rgba(245,245,245,.25);border-radius:6px;text-decoration:none;transition:background .12s ease,border-color .12s ease}.app-nav a:hover,.app-nav a:focus-visible{background:#000000b3;border-color:#f5f5f5b3;outline:none}.app-nav a.active{background:#f5f5f5;color:#0a0a0a;border-color:#f5f5f5}.status{height:100vh;width:100vw;overflow:auto;padding:7vh 3vw 3vh 3vw;background:#0a0a0a;color:#f5f5f5;font-size:clamp(14px,1.2vw,20px)}.status-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:1.5vw;align-items:start}@media(max-width:1100px){.status-grid{grid-template-columns:1fr}}.status-right{display:flex;flex-direction:column;gap:1.5vh}.banner-row{display:flex;justify-content:space-between;align-items:baseline;padding:1.2vh 1.5vw;background:#f5f5f50d;border:1px solid rgba(245,245,245,.15);border-radius:8px}.banner-phase{font-size:clamp(18px,1.6vw,28px);font-weight:800;letter-spacing:.04em}.banner-week{font-size:clamp(14px,1.2vw,20px);color:#f5f5f5b3;font-weight:700;letter-spacing:.15em;text-transform:uppercase}.status-panel{background:#f5f5f508;border:1px solid rgba(245,245,245,.15);border-radius:10px;overflow:hidden}.status-panel-head{display:flex;justify-content:space-between;align-items:baseline;padding:1vh 1.5vw;background:#f5f5f50d;border-bottom:1px solid rgba(245,245,245,.1)}.status-panel-title{font-size:clamp(15px,1.3vw,22px);font-weight:800;letter-spacing:.04em}.status-panel-subtitle{font-size:clamp(11px,1vw,15px);color:#f5f5f599;letter-spacing:.1em;text-transform:uppercase}.status-panel-body{padding:1vh 1.5vw 1.5vh}.status-note{margin-top:1vh;font-size:clamp(11px,.95vw,14px);color:#f5f5f58c;font-style:italic}.status-empty{padding:2vh 1vw;text-align:center;color:#f5f5f580;font-style:italic;font-size:clamp(13px,1.1vw,17px)}.status-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.status-table th,.status-table td{padding:.7vh .8vw;text-align:left;border-bottom:1px solid rgba(245,245,245,.07)}.status-table th{font-size:clamp(11px,1vw,15px);color:#f5f5f599;text-transform:uppercase;letter-spacing:.1em;font-weight:700}.status-table td{font-size:clamp(13px,1.15vw,18px)}.status-table td.num{text-align:right;font-feature-settings:"tnum"}.status-table td.muted{color:#f5f5f580}.delta-up{color:#6dd58c}.delta-down{color:#f78b8b}.day-strip{display:grid;grid-template-columns:repeat(11,1fr);gap:.4vw}.day-cell{background:#f5f5f50d;border:1px solid rgba(245,245,245,.1);border-radius:6px;padding:.6vh .2vw;text-align:center;display:flex;flex-direction:column;gap:.2vh;min-height:8vh}.day-num{font-size:clamp(14px,1.3vw,22px);font-weight:800;letter-spacing:-.02em}.day-type{font-size:clamp(9px,.85vw,13px);letter-spacing:.1em;color:#f5f5f5b3}.day-marker{font-size:clamp(12px,1.1vw,18px);font-weight:700;color:#6dd58c}.day-today{background:#f5f5f526;border-color:#f5f5f5;box-shadow:0 0 0 2px #f5f5f54d}.day-strength{background:#1a5f3a40;border-color:#1a5f3a99}.day-cardio{background:#5f3a1a40;border-color:#5f3a1a99}.day-walk{background:#1e3a5f40;border-color:#1e3a5f99}.day-rest{background:#f5f5f508}.day-skipped{opacity:.55}.status-error{background:#ff505026;border:1px solid rgba(255,80,80,.4);color:#ffd1d1;padding:1vh 1.5vw;border-radius:6px;font-family:SF Mono,Menlo,monospace;font-size:clamp(11px,1vw,14px)}.today-grid{display:flex;flex-direction:column;gap:2vh}.today-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1vw 2vw;padding-bottom:1.5vh;border-bottom:1px solid rgba(245,245,245,.1)}.today-meta-label{font-size:clamp(10px,.95vw,14px);letter-spacing:.2em;text-transform:uppercase;color:#f5f5f58c;margin-bottom:.3vh}.today-meta-value{font-size:clamp(15px,1.4vw,22px);font-weight:800}.today-meta-target{color:#f5f5f58c;font-weight:700;margin-left:.5em}.today-exercises{display:flex;flex-direction:column;gap:1.4vh}.today-exercise{border-left:3px solid rgba(245,245,245,.2);padding-left:.8vw}.today-exercise-name{font-size:clamp(14px,1.3vw,20px);font-weight:800;margin-bottom:.3vh}.today-set-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3vh}.set-readback{font-size:clamp(13px,1.15vw,17px);font-variant-numeric:tabular-nums}.set-num{color:#f5f5f580;margin-right:.4em}.set-readback--skipped,.set-skipped{color:#f5f5f573;font-style:italic}.zone-note{color:#f5f5f58c;font-size:.88em}.seven-day-strip{display:flex;flex-direction:column;gap:.4vh}.seven-day-row{display:grid;grid-template-columns:4em 1.5fr 1fr .8fr .6fr 1.4fr;align-items:baseline;gap:.8vw;padding:.7vh .8vw;background:#f5f5f508;border:1px solid rgba(245,245,245,.08);border-radius:6px;font-size:clamp(12px,1.1vw,16px)}.seven-day-row--today{border-color:#ffd166;background:#ffd16614}.seven-day-row--skipped{opacity:.55}.seven-day-row--incomplete{border-color:#ff505066}.seven-day-date{color:#f5f5f58c}.seven-day-label{display:flex;flex-direction:column}.seven-day-name{font-weight:700}.seven-day-sub{font-size:.85em;color:#f5f5f566}.seven-day-rpe{font-weight:700}.seven-day-target,.seven-day-hr-target{color:#f5f5f580;font-weight:600}.outlier-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4vh}.outlier-row{display:grid;grid-template-columns:4em 8em 1fr;align-items:baseline;gap:.8vw;padding:.6vh .8vw;background:#f5f5f508;border-radius:4px;font-size:clamp(12px,1.05vw,15px)}.outlier-date{color:#f5f5f58c}.outlier-kind{font-weight:800;letter-spacing:.1em;text-transform:uppercase;font-size:.85em}.outlier-kind--RPE9{color:#f78b8b}.outlier-kind--Incomplete{color:#ffd166}.outlier-kind--Painnote{color:#f78b8b}.chart-wrap{display:flex;flex-direction:column;gap:.8vh}.chart{width:100%;height:clamp(120px,16vh,200px)}.chart-axis{stroke:#f5f5f540;stroke-width:1}.chart-path{fill:none;stroke:#ffd166;stroke-width:2;vector-effect:non-scaling-stroke}.chart-dot{fill:#ffd166;stroke:#0a0a0a;stroke-width:1}.chart-label{fill:#f5f5f58c;font-size:11px;font-family:SF Mono,Menlo,monospace}.chart-foot{display:flex;justify-content:space-between;font-size:clamp(11px,.95vw,14px);color:#f5f5f599;font-family:SF Mono,Menlo,monospace}.log-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0a0a0a;color:#f5f5f5;display:flex;flex-direction:column;padding:2vh 3vw;gap:1.5vh}.log-top{display:flex;align-items:center;gap:1.5vw;padding-bottom:1vh;border-bottom:1px solid rgba(245,245,245,.15)}.log-title{font-size:clamp(22px,2.4vw,38px);font-weight:800;letter-spacing:-.01em;flex:1}.log-meta{font-size:clamp(11px,1.1vw,16px);color:#f5f5f58c;letter-spacing:.1em;text-transform:uppercase}.log-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:2vh;padding-right:1vw}.log-section{display:flex;flex-direction:column;gap:1.5vh}.log-section-title{font-size:clamp(13px,1.3vw,20px);font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:#f5f5f58c}.log-stack{display:flex;flex-direction:column;gap:.6vh}.log-progress{font-size:clamp(11px,1vw,16px);font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:#ffd166;opacity:.85}.done-screen{height:100vh;width:100vw;overflow-y:auto;background:#0a0a0a;color:#f5f5f5;padding:4vh 4vw 6vh;display:flex;flex-direction:column;gap:3vh}.done-header{text-align:center;display:flex;flex-direction:column;gap:1vh}.done-title{font-size:clamp(36px,5vw,72px);font-weight:900;letter-spacing:-.01em}.done-elapsed{font-size:clamp(28px,3.6vw,56px);font-weight:800}.done-meta{font-size:clamp(14px,1.4vw,22px);color:#f5f5f5b3}.done-section{display:flex;flex-direction:column;gap:1.5vh}.done-section-title{font-size:clamp(14px,1.4vw,22px);font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:#f5f5f599;margin:0}.done-unlogged-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:2vh 2vw}.done-unlogged-cell{display:flex;flex-direction:column;gap:1vh}.done-skip-btn{font:inherit;font-size:clamp(12px,1.1vw,16px);font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:#f5f5f5a6;background:transparent;border:1px dashed rgba(245,245,245,.25);border-radius:6px;padding:1vh 1.5vw;cursor:pointer;align-self:flex-start}.done-skip-btn:hover{color:#f5f5f5;border-color:#f5f5f599}.done-footer{display:flex;justify-content:center}.log-empty{padding:4vh;text-align:center;color:#f5f5f58c;font-style:italic}.log-card{background:#f5f5f50a;border:1px solid rgba(245,245,245,.12);border-radius:12px;padding:1.8vh 2vw;transition:opacity .2s ease,border-color .2s ease;display:flex;flex-direction:column;gap:1.5vh}.log-card--done{border-color:#6dd58c80;background:#1a5f3a2e}.log-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:2vw;flex-wrap:wrap}.log-card-name{font-size:clamp(20px,2.2vw,36px);font-weight:800;letter-spacing:-.01em}.log-check{color:#6dd58c;font-weight:900}.log-card-target{font-size:clamp(13px,1.3vw,20px);color:#f5f5f599}.log-steppers{display:flex;gap:1.5vw;flex-wrap:wrap;align-items:flex-start}.stepper{display:flex;flex-direction:column;gap:.6vh;flex:1 1 0;min-width:180px}.stepper-label{font-size:clamp(11px,1vw,16px);font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:#f5f5f599}.stepper-unit{color:#f5f5f566;font-weight:600}.stepper-row{display:flex;align-items:stretch;gap:.8vw}.stepper-btn{flex:0 0 auto;width:clamp(56px,7vw,96px);min-height:clamp(56px,7vw,96px);font-size:clamp(28px,3vw,48px);font-weight:900;background:#00000073;color:#f5f5f5;border:2px solid rgba(245,245,245,.25);border-radius:10px;transition:background 80ms ease,border-color 80ms ease,transform 60ms ease;-webkit-user-select:none;user-select:none}.stepper-btn:hover,.stepper-btn:focus-visible{background:#000000b3;border-color:#f5f5f599;outline:none}.stepper-btn:active{transform:scale(.94)}.stepper-btn:disabled{opacity:.3;cursor:not-allowed}.stepper-value{flex:1;display:flex;align-items:center;justify-content:center;font-size:clamp(32px,4vw,64px);font-weight:800;background:#0000008c;border:2px solid rgba(245,245,245,.2);border-radius:10px;padding:0 1vw;min-width:0}.stepper--disabled .stepper-value{opacity:.5}.stepper-hint{align-self:flex-start;font:inherit;font-size:clamp(11px,1.1vw,16px);background:transparent;border:none;color:#ffd166;padding:.4vh 0;cursor:pointer;text-decoration:underline dotted}.log-per-set{display:flex;flex-direction:column;gap:1.5vh}.log-per-set-row{display:flex;gap:1.5vw;align-items:flex-end;flex-wrap:wrap;padding:1vh 0;border-top:1px dashed rgba(245,245,245,.1)}.log-per-set-row:first-child{border-top:none}.log-per-set-label{font-size:clamp(13px,1.3vw,20px);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#f5f5f5d9;min-width:6vw;align-self:center}.log-card-foot{display:grid;grid-template-columns:auto 1fr auto;gap:1.5vw;align-items:center}.log-expand-toggle{font:inherit;font-size:clamp(12px,1.1vw,16px);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#f5f5f5b3;background:transparent;border:1px dashed rgba(245,245,245,.25);border-radius:6px;padding:1vh 1.2vw;cursor:pointer}.log-expand-toggle:hover:not(:disabled){color:#f5f5f5;border-color:#f5f5f599}.log-expand-toggle:disabled{opacity:.35;cursor:not-allowed}.log-save{font:inherit;font-size:clamp(16px,1.8vw,26px);font-weight:800;letter-spacing:.05em;padding:1.6vh 2.2vw;min-height:8vh;background:#f5f5f5;color:#0a0a0a;border:2px solid #f5f5f5;border-radius:10px;cursor:pointer;transition:background .1s ease,border-color .1s ease,transform 60ms ease}.log-save:hover:not(:disabled),.log-save:focus-visible:not(:disabled){background:#ffd166;border-color:#ffd166;outline:none}.log-save:active:not(:disabled){transform:scale(.97)}.log-save:disabled{background:#f5f5f540;border-color:#f5f5f540;color:#0a0a0a;cursor:not-allowed}.log-finish{background:#6dd58c;border-color:#6dd58c;color:#0a0a0a}.log-finish:hover:not(:disabled),.log-finish:focus-visible:not(:disabled){background:#8be0a4;border-color:#8be0a4}.log-error{background:#6b1a1a;color:#ffd1d1;font-size:clamp(12px,1.1vw,16px);padding:1vh 1.5vw;border-radius:6px;font-weight:600;text-align:center}.log-summary{border-color:#ffd16666;background:#ffd16614}.log-notes{font:inherit;font-size:clamp(15px,1.5vw,22px);padding:1.2vh 1.5vw;min-height:7vh;background:#00000073;color:#f5f5f5;border:2px solid rgba(245,245,245,.2);border-radius:8px;resize:vertical;width:100%}.log-notes:focus{outline:none;border-color:#ffd166}.workout-v2{height:100vh;width:100vw;display:flex;flex-direction:column;padding:2vh 2.5vw;gap:1.5vh;transition:background-color .2s ease}.workout-v2-grid{flex:1;display:grid;grid-template-columns:minmax(0,1fr) clamp(280px,28vw,460px);gap:2vw;min-height:0}.workout-v2-main{display:grid;grid-template-rows:auto 1fr auto auto;gap:1.5vh;min-height:0}.workout-v2-footer{display:flex;justify-content:space-between;gap:2vw;padding-top:1vh;border-top:1px solid rgba(245,245,245,.18)}.footer-pair{display:flex;flex-direction:column;gap:.4vh;min-width:0;flex:1}.footer-pair-label{font-size:clamp(11px,1vw,16px);font-weight:700;letter-spacing:.25em;text-transform:uppercase;color:#f5f5f580}.footer-pair-value{font-size:clamp(18px,1.7vw,28px);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workout-prev{font-size:clamp(13px,1.3vw,20px);color:#f5f5f5bf;margin-top:1vh;letter-spacing:.05em}.workout-rest-logger{width:100%;max-width:clamp(520px,50vw,760px);margin-top:2vh}.workout-rest-label{font-size:clamp(11px,1vw,16px);font-weight:700;letter-spacing:.25em;text-transform:uppercase;color:#f5f5f599;margin-bottom:.8vh}.jmap{background:#0006;border:1px solid rgba(245,245,245,.15);border-radius:12px;overflow-y:auto;padding:1vh 0;min-height:0}.jmap-list{list-style:none;margin:0;padding:0}.jmap-section{font-size:clamp(11px,1.05vw,16px);font-weight:800;letter-spacing:.25em;text-transform:uppercase;color:#f5f5f599;padding:1.6vh 1.2vw .8vh;border-top:1px dashed rgba(245,245,245,.12);margin-top:.4vh}.jmap-item:first-child .jmap-section{border-top:none;margin-top:0}.jmap-section--warmup{color:#9fd4e0}.jmap-section--circuit,.jmap-section--intervals{color:#6dd58c}.jmap-section--steady,.jmap-section--cooldown{color:#9fd4e0}.jmap-section--finisher{color:#ffd166}.jmap-section--mobility,.jmap-section--walk{color:#c8b8e0}.jmap-row{display:grid;grid-template-columns:1.4em auto 1fr auto auto;align-items:baseline;gap:.4em;padding:.6vh 1.2vw;font-size:clamp(13px,1.2vw,19px);color:#f5f5f5eb;transition:background .12s ease}.jmap-row--past{color:#f5f5f552}.jmap-row--current{background:#ffd1662e;border-left:4px solid #ffd166;padding-left:calc(1.2vw - 4px);color:#ffd166;font-weight:800}.jmap-row--current .jmap-dur,.jmap-row--current .jmap-round{color:#ffd166}.jmap-row--rest{font-style:italic;opacity:.85}.jmap-row--round-break{font-style:normal;opacity:1;color:#ffd166d9}.jmap-arrow{font-weight:900;font-size:1.2em;line-height:1}.jmap-dur{color:#f5f5f5a6;font-variant-numeric:tabular-nums;font-size:.92em}.jmap-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jmap-round{color:#f5f5f58c;font-size:.85em}.jmap-check{color:#6dd58c;font-weight:900}.jmap-partial{color:#ffd166;font-size:.82em;letter-spacing:.05em;font-weight:700;opacity:.85}@media(max-width:900px){.workout-v2-grid{grid-template-columns:1fr;grid-template-rows:1fr auto}.jmap{max-height:30vh}}
