*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--ink);color:var(--paper);font-family:var(--font-body);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;min-height:100dvh;overscroll-behavior-y:none}h1,h2,h3,h4{margin:0;font-family:var(--font-display);font-weight:700;text-transform:uppercase;letter-spacing:.02em;line-height:1.1}p{margin:0}button{font-family:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--plate-blue);outline-offset:2px}a{color:inherit;text-decoration:none}input{font-family:inherit;font-size:inherit;color:inherit;background:var(--ink);border:var(--border);border-radius:var(--radius)}ul,ol{margin:0;padding:0;list-style:none}img{max-width:100%;display:block}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}#app{min-height:100dvh;display:flex;flex-direction:column}@font-face{font-family:Oswald;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/oswald-500.woff2) format("woff2")}@font-face{font-family:Oswald;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/oswald-700.woff2) format("woff2")}@font-face{font-family:Work Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/work-sans-400.woff2) format("woff2")}@font-face{font-family:Work Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/work-sans-600.woff2) format("woff2")}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/space-mono-400.woff2) format("woff2")}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/space-mono-700.woff2) format("woff2")}:root{--ink: #121316;--ink-raised: #1b1d21;--ink-raised-2: #232529;--paper: #edebe6;--paper-dim: #b9b7b2;--iron: #6b6f76;--iron-line: #33353a;--plate-red: #e4432a;--plate-red-dim: #7a2e22;--plate-blue: #3e7cb1;--plate-blue-dim: #294a63;--font-display: "Oswald", "Arial Narrow", sans-serif;--font-body: "Work Sans", system-ui, sans-serif;--font-mono: "Space Mono", "Courier New", monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--radius: 3px;--border: 1px solid var(--iron-line);--duration: .15s;--ease: cubic-bezier(.2, .6, .2, 1);color-scheme:dark}@media (prefers-reduced-motion: reduce){:root{--duration: 0ms}}.app-header{position:sticky;top:0;z-index:5;background:var(--ink);border-bottom:var(--border);padding:max(var(--space-4),env(safe-area-inset-top)) var(--space-4) var(--space-3)}.app-header__eyebrow{display:block;font-family:var(--font-display);font-size:12px;font-weight:500;letter-spacing:.14em;color:var(--iron);margin-bottom:var(--space-1)}.app-header__title{font-size:22px;letter-spacing:.01em}.view{flex:1;padding:var(--space-4);padding-bottom:calc(96px + env(safe-area-inset-bottom));max-width:640px;width:100%;margin:0 auto;transition:padding-bottom var(--duration) var(--ease)}body.timer-active .view{padding-bottom:calc(160px + env(safe-area-inset-bottom))}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;background:var(--ink-raised);border-top:var(--border);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav__item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-2) 0 var(--space-2);font-family:var(--font-display);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--iron);border-top:2px solid transparent}.bottom-nav__item[aria-current=page]{color:var(--paper);border-top-color:var(--plate-red)}.bottom-nav__icon{width:20px;height:20px}.timer-rail{position:fixed;left:0;right:0;bottom:56px;z-index:9;background:var(--ink-raised-2);border-top:1px solid var(--plate-red-dim);padding:var(--space-3) var(--space-4);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);transform:translateY(0);transition:transform var(--duration) var(--ease)}.timer-rail[hidden]{display:flex;transform:translateY(100%);pointer-events:none}.timer-rail__info{min-width:0}.timer-rail__label{font-family:var(--font-display);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--iron);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timer-rail__clock{font-family:var(--font-mono);font-weight:700;font-size:30px;font-variant-numeric:tabular-nums;color:var(--plate-red);letter-spacing:.02em}.timer-rail.is-done .timer-rail__clock{animation:timer-flash .9s ease-in-out 3}@keyframes timer-flash{0%,to{color:var(--plate-red)}50%{color:var(--paper)}}.timer-rail__actions{display:flex;gap:var(--space-2);flex-shrink:0}.btn{font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:var(--space-3) var(--space-4);border-radius:var(--radius);border:var(--border);color:var(--paper);transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),opacity var(--duration) var(--ease);white-space:nowrap}.btn:active{opacity:.75}.btn--primary{background:var(--plate-red);border-color:var(--plate-red);color:#17100e}.btn--secondary{background:transparent;border-color:var(--iron-line)}.btn--ghost{border-color:transparent;color:var(--iron);padding:var(--space-2) var(--space-3)}.btn--sm{padding:var(--space-2) var(--space-3);font-size:12px}.btn--block{display:block;width:100%;text-align:center}.btn[disabled]{opacity:.4;pointer-events:none}.chip{font-family:var(--font-mono);font-size:13px;color:var(--paper-dim);background:var(--ink);border:var(--border);border-radius:var(--radius);padding:2px var(--space-2);white-space:nowrap}.chip--blue{color:var(--plate-blue);border-color:var(--plate-blue-dim)}.exercise-card{border:var(--border);border-radius:var(--radius);background:var(--ink-raised);margin-bottom:var(--space-3);overflow:hidden}.exercise-card__head{width:100%;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);text-align:left}.exercise-card__index{font-family:var(--font-mono);font-size:13px;color:var(--iron);flex-shrink:0;width:20px}.exercise-card__name{flex:1;min-width:0;font-family:var(--font-display);font-size:16px;letter-spacing:.01em;text-transform:none;font-weight:700}.exercise-card__chevron{flex-shrink:0;width:14px;height:14px;border-right:2px solid var(--iron);border-bottom:2px solid var(--iron);transform:rotate(45deg);transition:transform var(--duration) var(--ease)}.exercise-card[open] .exercise-card__chevron{transform:rotate(-135deg)}.exercise-card__body{padding:0 var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)}.exercise-card__photos{display:flex;gap:var(--space-2);overflow-x:auto}.exercise-card__photos img{height:140px;width:auto;border-radius:var(--radius);border:var(--border);flex-shrink:0}.exercise-card__cues{display:flex;flex-direction:column;gap:var(--space-2)}.exercise-card__cues li{position:relative;padding-left:var(--space-4);font-size:14px;color:var(--paper-dim)}.exercise-card__cues li:before{content:"";position:absolute;left:0;top:8px;width:6px;height:6px;background:var(--plate-red)}.exercise-card__done-badge{color:var(--plate-blue);font-family:var(--font-mono);font-size:12px}.video-facade{position:relative;aspect-ratio:16 / 9;background:var(--ink);border:var(--border);border-radius:var(--radius);overflow:hidden;width:100%}.video-facade img{width:100%;height:100%;object-fit:cover}.video-facade__play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#12131659}.video-facade__play-icon{width:56px;height:56px;border-radius:50%;background:var(--plate-red);display:flex;align-items:center;justify-content:center}.video-facade__play-icon:after{content:"";border-style:solid;border-width:10px 0 10px 16px;border-color:transparent transparent transparent #17100e;margin-left:4px}.video-facade iframe{width:100%;height:100%;border:0}.set-tracker{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.set-dots{display:flex;gap:var(--space-2)}.set-dot{width:26px;height:26px;border-radius:50%;border:var(--border);font-family:var(--font-mono);font-size:12px;display:flex;align-items:center;justify-content:center;color:var(--iron)}.set-dot.is-done{background:var(--plate-blue-dim);border-color:var(--plate-blue);color:var(--paper)}.day-complete{margin-top:var(--space-5)}.session-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.session-header__step{font-family:var(--font-display);font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--iron)}.session-progress{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.session-progress__dot{width:28px;height:28px;border-radius:50%;border:var(--border);font-family:var(--font-mono);font-size:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--iron)}.session-progress__dot.is-done{background:var(--plate-blue-dim);border-color:var(--plate-blue);color:var(--paper)}.session-progress__dot.is-current{border-color:var(--plate-red);color:var(--paper)}.exercise-card--focused{border-color:var(--plate-red-dim);background:var(--ink-raised-2)}.exercise-card--focused .exercise-card__body{padding-top:var(--space-1)}.session-nav{display:flex;gap:var(--space-3);margin-top:var(--space-4)}.session-nav .btn{flex:1}.session-complete{text-align:center;margin:var(--space-5) 0 var(--space-4)}.session-complete__title{font-family:var(--font-display);font-size:20px;letter-spacing:.01em}.phase-block{margin-bottom:var(--space-6)}.phase-block__title{font-size:15px;color:var(--iron);margin-bottom:var(--space-1)}.phase-block__goal{font-size:13px;color:var(--paper-dim);margin-bottom:var(--space-3);font-family:var(--font-body);text-transform:none;letter-spacing:normal}.day-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);border:var(--border);border-radius:var(--radius);background:var(--ink-raised);margin-bottom:var(--space-2);text-align:left}.day-row.is-current{border-color:var(--plate-red)}.day-row__main{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);text-align:left}.day-row__log-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.day-row--form{flex-wrap:wrap;row-gap:var(--space-2)}.day-row--form input[type=date]{flex:1;min-width:140px;padding:var(--space-2) var(--space-3);font-family:var(--font-mono);font-size:13px}.day-row__name{font-family:var(--font-display);font-size:14px;font-weight:600}.day-row__focus{font-size:12px;color:var(--iron);text-transform:none;letter-spacing:normal;font-family:var(--font-body)}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-bottom:var(--space-5)}.stat-tile{border:var(--border);border-radius:var(--radius);background:var(--ink-raised);padding:var(--space-4)}.stat-tile__label{font-family:var(--font-display);font-size:11px;letter-spacing:.1em;color:var(--iron);margin-bottom:var(--space-2)}.stat-tile__value{font-family:var(--font-mono);font-size:26px;font-variant-numeric:tabular-nums}.stat-tile__delta{font-family:var(--font-mono);font-size:12px;color:var(--plate-blue);margin-top:2px}.section-title{font-size:14px;color:var(--iron);margin:var(--space-6) 0 var(--space-3)}.chart-card{border:var(--border);border-radius:var(--radius);background:var(--ink-raised);padding:var(--space-3)}.chart-card canvas{width:100%;display:block}.quick-add{display:flex;gap:var(--space-2);margin-top:var(--space-3)}.quick-add input{flex:1;padding:var(--space-3);min-width:0}.empty-state{color:var(--iron);font-size:14px;padding:var(--space-4) 0}.streak-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-2)}.streak-cell{aspect-ratio:1;border-radius:var(--radius);border:var(--border);background:var(--ink)}.streak-cell.is-done{background:var(--plate-blue-dim);border-color:var(--plate-blue)}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);margin-top:var(--space-3)}.photo-grid img{aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius);border:var(--border)}.photo-add{aspect-ratio:3/4;border:1px dashed var(--iron-line);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;color:var(--iron);font-size:28px}
