@font-face{font-family:Barlow;src:url('/fonts/barlow-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Barlow;src:url('/fonts/barlow-600.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Barlow;src:url('/fonts/barlow-700.woff2') format('woff2');font-weight:700;font-display:swap}
:root{--paper:#f7f8f2;--surface:#fff;--ink:#173c32;--muted:#53675d;--line:#d8dfd4;--green:#245c43;--soft:#e7eddf;--orange:#e99f52;--progress:#a85818;--danger:#9b3527;--shadow:0 6px 24px #00000014;--radius:14px;font-family:Barlow,'Segoe UI',sans-serif;color:var(--ink);background:var(--paper);font-size:17px;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}button{color:inherit}a{color:inherit;text-underline-offset:4px}p{line-height:1.6;margin:0 0 16px}h1,h2,h3{line-height:1.08;margin:0 0 12px;font-weight:650;letter-spacing:-.025em;text-wrap:balance}h1{font-size:clamp(2.5rem,7vw,3.5rem)}h2{font-size:1.4rem}h3{font-size:1.1rem}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #bb6b21;outline-offset:4px}::selection{background:#f5d5a8;color:var(--ink)}input,textarea{caret-color:var(--green)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:#b7c7b7;border-radius:8px}::-webkit-scrollbar-track{background:var(--paper)}[hidden]{display:none!important}.small,.hint,.optional{font-size:.85rem;color:var(--muted);line-height:1.5}.hint{margin-top:4px}.optional{font-weight:400}.boot{padding:15vh 24px;text-align:center}.boot p{margin-top:30px}.brand{font-size:2.1rem;font-weight:700;letter-spacing:-.04em;text-decoration:none;line-height:1}.brand span{color:#b26521}.app-header{max-width:980px;padding:24px 32px 18px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px}.header-actions{display:flex;align-items:center;gap:10px}.sync{border:0;background:transparent;padding:8px 4px;font-size:.76rem;color:var(--muted);max-width:145px;text-align:right;min-height:44px}.sync.pending{color:#8a4a14}.icon-button{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;min-width:44px;min-height:44px;border-radius:12px}.icon-button:hover{background:var(--soft)}.main{max-width:780px;margin:0 auto;padding:28px 32px 130px}.page-title{margin-bottom:28px}.page-title p{color:var(--muted);max-width:60ch}.greeting{font-size:.94rem;margin-bottom:16px}.title-note{display:block;font-size:1.25rem;font-weight:500;letter-spacing:0;margin-top:14px;color:var(--muted)}.primary,.secondary{min-height:50px;padding:13px 20px;display:inline-flex;align-items:center;justify-content:center;gap:12px;border-radius:var(--radius);font-weight:600;text-decoration:none;border:0;line-height:1.25}.primary{background:var(--green);color:#fff}.primary:hover:not(:disabled){background:#174a33}.primary svg{flex-shrink:0}.secondary{background:var(--soft);color:var(--ink)}.secondary:hover{background:#d6e2cb}.text-button{background:none;border:0;text-decoration:underline;text-underline-offset:5px;min-height:44px;padding:10px 4px;text-align:left;font-size:.9rem}.danger{color:var(--danger)}.back{display:inline-flex;align-items:center;gap:8px;margin-bottom:20px}.button-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.button-row>.primary{flex:1}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,780px);display:grid;grid-template-columns:repeat(4,1fr);background:#f7f8f2f5;border-top:1px solid var(--line);padding:10px 12px calc(10px + env(safe-area-inset-bottom));z-index:20}.bottom-nav button{position:relative;border:0;background:transparent;min-height:56px;display:flex;align-items:center;flex-direction:column;justify-content:center;gap:5px;color:var(--muted);font-size:.75rem;border-radius:12px}.bottom-nav button[aria-current]{color:var(--ink);background:var(--soft);font-weight:650}.nav-dot{width:7px;height:7px;background:#a85e1b;border-radius:50%;position:absolute;top:6px;right:30%}.session-planner{margin:24px 0 32px}.session-planner>.primary{width:100%;margin:12px 0}.session-planner>.small{text-align:center}fieldset{border:0;padding:0;margin:0 0 24px;min-width:0}legend{font-weight:600;margin-bottom:10px;font-size:.95rem}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.segmented label{display:block;margin:0;position:relative}.segmented input{position:absolute;opacity:0;width:1px;height:1px}.segmented span{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:58px;padding:10px 6px;background:var(--surface);border:1px solid var(--line);border-radius:12px;font-size:1rem}.segmented small{font-size:.72rem;color:var(--muted);font-weight:400}.segmented input:checked+span{border-color:var(--green);background:var(--soft);box-shadow:inset 0 0 0 1px var(--green)}.segmented input:focus-visible+span{outline:3px solid #bb6b21;outline-offset:3px}.notice{background:#f8e9d4;color:#654017;padding:18px 20px;border-radius:var(--radius);margin:0 0 24px;font-size:.95rem}.notice strong{display:block;margin-bottom:5px}.notice p{margin:0}.notice.compact{padding:12px 16px}.review-banner{width:100%;display:flex;align-items:center;gap:14px;padding:16px 0;border:0;border-block:1px solid var(--line);background:none;text-align:left;margin:0 0 24px}.review-banner span{flex:1;font-size:.9rem;line-height:1.4}.review-banner strong{display:block;font-size:1rem;margin-bottom:4px}.lined-section{border-top:1px solid var(--line);padding-top:24px;margin-top:30px}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:8px}.exercise-preview{list-style:none;padding:0;margin:0}.exercise-preview li{display:flex;gap:14px;align-items:center;padding:18px 0;border-bottom:1px solid var(--line)}.exercise-preview li>div{flex:1}.exercise-preview strong{display:block;font-size:1.08rem;line-height:1.35}.exercise-preview li div>span{display:block;margin-top:4px;color:var(--muted);font-size:.85rem}.order{font-variant-numeric:tabular-nums;min-width:30px;font-size:1.25rem;color:#6d806f}.exercise-preview+.small{margin-top:14px}.recovery-choice{margin-top:28px;padding:22px 0;display:flex;align-items:center;gap:20px}.recovery-choice p{font-size:.9rem;color:var(--muted);margin:0}.footer-note{font-size:.82rem;color:var(--muted);text-align:center;margin:28px 0 0}.form-section{margin-bottom:34px;padding-bottom:28px;border-bottom:1px solid var(--line)}.form-section>p{color:var(--muted);font-size:.94rem}label{display:flex;flex-direction:column;gap:7px;margin-bottom:20px;font-size:.94rem;font-weight:500}input:not([type=checkbox]):not([type=radio]),textarea,select{width:100%;border:1px solid #aebdad;background:var(--surface);color:var(--ink);border-radius:10px;padding:13px 14px;min-height:49px;max-width:100%}textarea{resize:vertical;line-height:1.5}input::placeholder,textarea::placeholder{color:#647267;opacity:1}input[type=checkbox]{width:22px;height:22px;flex-shrink:0;accent-color:var(--green);margin:1px 0 0}input[type=number]{font-variant-numeric:tabular-nums}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.check-row{display:flex;flex-direction:row;align-items:flex-start;gap:12px;line-height:1.5;font-weight:400;min-height:44px;cursor:pointer}.check-row span{flex:1}.goal-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.goal-option{display:flex;flex-direction:row;align-items:flex-start;gap:12px;padding:14px;background:#fff;border:1px solid var(--line);border-radius:12px;margin:0}.goal-option:has(input:checked){background:var(--soft);border-color:#9aaf95}.goal-option span{display:flex;flex-direction:column;gap:5px}.goal-option small{color:var(--muted);line-height:1.35;font-size:.79rem}.goal-option strong{font-weight:600;line-height:1.3}.sticky-action{margin-top:24px}.sticky-action>.primary{width:100%}.form-error{color:var(--danger);font-size:.9rem;margin:12px 0 0}.form-error:empty{display:none}.auth{min-height:100dvh;max-width:1060px;margin:auto;padding:32px 40px;display:flex;flex-direction:column}.auth-top{display:flex;align-items:center;justify-content:space-between;gap:20px}.auth-content{margin:auto 0;padding:64px 0 48px;display:grid;grid-template-columns:1fr 1fr;column-gap:60px;align-items:start}.auth-mark{color:var(--green);margin:0 0 24px}.auth-content h1{font-size:3.5rem;line-height:1.04;grid-column:1}.auth-content em{font-style:normal;color:#587249}.auth-content .lead{color:var(--muted);grid-column:1;margin-top:14px}.auth-form{grid-column:2;grid-row:1/5;align-self:center;background:var(--surface);padding:30px;border-radius:var(--radius);box-shadow:var(--shadow)}.auth-form h2{margin-bottom:24px}.auth-form>.primary{width:100%}.auth-form>.small{margin:16px 0 0}.auth-footer{font-size:.85rem;color:var(--muted)}.workout-title{display:flex;align-items:center;justify-content:space-between;gap:20px}.workout-title h1{font-size:2.6rem}.workout-title p{color:var(--muted);font-size:.9rem}.set-count{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:1.5rem}.set-count small{font-size:.85rem;color:var(--muted)}.session-progress{display:block;width:100%;height:5px;margin:10px 0 24px;border:0;appearance:none;background:var(--line)}.session-progress::-webkit-progress-bar{background:var(--line)}.session-progress::-webkit-progress-value{background:var(--progress)}.session-progress::-moz-progress-bar{background:var(--progress)}.warmup{padding:18px;background:var(--soft);border-radius:var(--radius);margin:0 0 28px}.warmup summary{list-style:none;display:flex;justify-content:space-between;align-items:center;cursor:pointer;min-height:44px;font-weight:600;font-size:1.08rem}.warmup summary small{display:block;font-size:.8rem;color:var(--muted);font-weight:400;margin-top:4px}.warmup ul{padding-left:20px;margin:18px 0;line-height:1.6;font-size:.9rem}.warmup li+li{margin-top:10px}.warmup .secondary{background:#fff}.exercise{margin-bottom:28px;padding:24px 0;border-bottom:1px solid var(--line);scroll-margin-top:16px}.exercise-heading{display:flex;gap:12px;align-items:center;margin-bottom:16px}.exercise-heading>div{flex:1}.exercise-heading h2{margin:4px 0 0;font-size:1.6rem}.track-label{color:var(--muted);font-size:.83rem}.dose{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:18px}.dose strong{font-size:1.35rem;font-variant-numeric:tabular-nums}.dose strong>span{font-size:1rem;font-weight:500}.dose>span{font-size:.85rem;color:var(--muted)}.exercise>p{font-size:.95rem;color:var(--muted)}.technique{background:var(--soft);padding:14px 16px;border-radius:10px;margin-bottom:14px}.technique strong{font-size:.84rem}.technique p{font-size:.9rem;margin:4px 0 0}.video-link{display:inline-flex;align-items:center;gap:8px;font-weight:600;text-decoration:none;min-height:44px;font-size:.95rem}.video-link:hover{text-decoration:underline}.exercise>p.small{font-size:.78rem}.sets{border-top:1px solid var(--line);margin:20px 0}.set-row{display:grid;grid-template-columns:50px 75px 1fr 44px;align-items:center;gap:8px;border-bottom:1px solid var(--line);min-height:52px;font-size:.86rem}.set-row strong{font-variant-numeric:tabular-nums}.set-note{font-size:.76rem;color:var(--muted)}.set-row .text-button{font-size:.8rem}.record-line{display:flex;align-items:flex-end;gap:12px}.record-line label{flex:1;margin-bottom:16px}.record-line input{font-size:1.35rem}.timer-button{margin-bottom:16px}.set-form{padding-top:6px}.set-form .check-row{font-size:.87rem}.set-form select{font-size:.9rem}.set-form .button-row .primary{flex:1}.notes-label{margin-top:24px}.skill-list{display:flex;flex-direction:column}.skill-item{text-align:left;border:0;background:none;padding:26px 0;border-bottom:1px solid var(--line);width:100%}.skill-item:first-child{padding-top:6px}.skill-item:hover{background:#edf1e6}.skill-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:.78rem;margin-bottom:10px}.skill-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.skill-title h2{font-size:1.65rem}.skill-item p{font-size:.95rem;margin:0 0 12px}.stage-steps{display:flex;gap:5px;margin:14px 0 9px}.stage-steps>span{height:5px;flex:1;background:var(--line);border-radius:2px}.stage-steps>span.filled{background:var(--progress)}.readiness-block{background:var(--soft);padding:20px;border-radius:var(--radius);margin:20px 0 30px}.readiness-block strong{font-size:1.15rem}.readiness-block p{font-size:.85rem;margin:8px 0 0;color:var(--muted)}.roadmap{list-style:none;margin:0;padding:0}.roadmap li{display:flex;gap:18px;position:relative;padding:0 0 30px}.roadmap li:before{content:'';position:absolute;left:15px;top:34px;bottom:0;width:1px;background:var(--line)}.roadmap li:last-child:before{display:none}.roadmap-marker{background:#e8ece3;width:32px;height:32px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:.9rem}.roadmap .current .roadmap-marker{background:var(--progress);color:#fff}.roadmap .past .roadmap-marker{background:#cddfc9}.roadmap li>div{flex:1;padding-top:3px}.roadmap h2{font-size:1.2rem;margin:6px 0 10px}.roadmap p{font-size:.9rem;color:var(--muted);margin-bottom:8px}.roadmap .small{font-size:.65rem;letter-spacing:.035em}.roadmap .primary{margin-top:10px}.history-entry{border-bottom:1px solid var(--line)}.history-entry summary{list-style:none;display:flex;gap:18px;align-items:center;padding:22px 0;cursor:pointer}.history-entry summary>span:nth-child(2){flex:1}.history-entry summary strong{display:block;font-size:1.18rem;line-height:1.3}.history-entry summary small{display:block;font-size:.78rem;line-height:1.4;color:var(--muted);margin-top:5px}.date-badge{font-size:1.6rem;line-height:1.1;text-align:center;min-width:42px;font-variant-numeric:tabular-nums}.history-duration{font-size:.85rem;white-space:nowrap}.history-body{padding:0 0 20px 60px}.history-body>div{margin-bottom:12px}.history-body p{font-size:.85rem;color:var(--muted);margin:6px 0}.history-body strong{font-size:.95rem}.session-note{white-space:pre-wrap}.history-list+.secondary{margin-top:28px}.empty-state{text-align:center;padding:50px 12px}.empty-state>svg{color:#6c886b;margin-bottom:22px}.empty-state p{color:var(--muted);margin-bottom:26px}.review-intro{padding:24px;background:var(--soft);border-radius:var(--radius);margin-bottom:28px}.review-intro h2{font-size:1.2rem}.review-intro p{font-size:.95rem}.review-intro .secondary{background:#fff}.review-text{font-size:.86rem;line-height:1.65;font-weight:400}.review-label{margin-top:24px}.plain-list{padding-left:20px;line-height:1.7;color:var(--muted)}.plain-list li+li{margin-top:12px}.recovery-list article{display:flex;gap:18px;padding:24px 0;border-bottom:1px solid var(--line)}.recovery-list h2{font-size:1.25rem}.recovery-list p{font-size:.95rem;color:var(--muted);margin:0}.recovery-list+.secondary{margin-top:24px}.finish{text-align:center;padding:30px 0}.finish-icon{margin:0 auto 28px;background:var(--soft);width:80px;height:80px;border-radius:50%;display:flex;align-items:center;justify-content:center}.finish h1{font-size:2.7rem}.finish>p{color:var(--muted)}.finish-results{margin:32px 0;text-align:left}.finish-results div{border-bottom:1px solid var(--line);padding:18px 0}.finish-results span{display:block;font-size:.85rem;color:var(--muted);margin-top:6px}.finish>.primary{width:100%}.finish>.text-button{margin-top:14px}details>summary{min-height:44px;cursor:pointer;line-height:1.5}details>form{margin-top:16px}.form-section>details{margin:24px 0}#toast{position:fixed;left:50%;bottom:106px;transform:translate(-50%,12px);background:var(--ink);color:#fff;padding:14px 20px;width:max-content;max-width:calc(100% - 32px);border-radius:12px;z-index:60;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;font-size:.9rem;box-shadow:var(--shadow)}#toast.visible{opacity:1;transform:translate(-50%,0)}#timer{position:fixed;bottom:calc(94px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(calc(100% - 32px),500px);z-index:30}.timer-panel{display:flex;align-items:center;gap:16px;background:var(--ink);color:#fff;padding:12px 16px;border-radius:14px;box-shadow:0 8px 26px #00000033}.timer-panel>span{font-size:.9rem;flex:1;line-height:1.2}.timer-panel strong{font-size:2.1rem;font-variant-numeric:tabular-nums;font-weight:600}.timer-panel .icon-button{color:#fff}.timer-panel .icon-button:hover{background:#36574c}
@media(min-width:850px){.main{padding-top:40px}.session-planner{max-width:600px}.page-title h1{font-size:3.8rem}.skill-list{display:grid;grid-template-columns:1fr 1fr;column-gap:40px}.skill-item:first-child{padding-top:26px}.auth-content h1{font-size:3.9rem}.bottom-nav{border-radius:20px 20px 0 0}.setup-main{max-width:780px}}
@media(max-width:600px){.app-header{padding:20px 20px 12px}.brand{font-size:1.85rem}.main{padding:24px 20px 120px}.page-title{margin-bottom:24px}.page-title h1{font-size:2.8rem}.recovery-choice{align-items:flex-start;flex-direction:column;gap:16px}.recovery-choice>.secondary{width:100%}.auth{padding:24px 22px}.auth-top>.small{font-size:.75rem}.auth-content{display:block;padding:44px 0 32px}.auth-mark{display:none}.auth-content h1{font-size:2.85rem}.auth-content .lead{font-size:1rem;margin-top:20px}.auth-form{padding:24px 0 0;background:none;box-shadow:none;border-radius:0}.auth-form h2{font-size:1.25rem;margin-bottom:20px}.auth-footer{padding:18px 0}.goal-options{grid-template-columns:1fr}.two-columns{gap:12px}.two-columns label{font-size:.85rem}.dose{align-items:flex-start}.exercise-heading h2{font-size:1.45rem}.record-line{gap:10px}.timer-button{padding:12px;font-size:.85rem;min-width:110px}.record-line label{font-size:.83rem}.set-row{grid-template-columns:42px 65px 1fr 35px;gap:6px}.set-note{font-size:.7rem}.history-entry summary{gap:12px}.history-entry summary small{max-width:190px}.history-body{padding-left:0}.review-intro{padding:20px}.review-intro .button-row{align-items:stretch}.review-intro .button-row>.primary{min-width:150px}.finish h1{font-size:2.5rem}.sync{font-size:.7rem;max-width:130px}.header-actions{gap:2px}}
.roadmap .stage-status{font-size:.8rem;margin:0 0 10px}.review-status{font-weight:600;color:#85440f}.just-recorded{animation:recorded-set .65s cubic-bezier(.16,1,.3,1) both}@keyframes recorded-set{from{background:#f8e9d4;box-shadow:0 4px 12px #00000014}to{background:transparent;box-shadow:0 4px 12px #00000000}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
