@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300..700&family=Inter:wght@400;500;600&display=swap";:root{--paper:#efece4;--ink:#14110b;--muted:#6b6555;--rule:#d2cdc0;--accent:#8b2c1e;--success:#3e5c3a;--adhoc:#a89b7e;--nutrition:#6b8e7f;--strength:#6b5d4f;--context:#7a6f5c;--insight:#4a5d6b;--paper-raised:#f5f3ed;--paper-sunken:#e7e3d9;--sp-1:8px;--sp-2:12px;--sp-3:16px;--sp-4:20px;--sp-5:24px;--sp-6:32px;--r-sm:4px;--r-md:12px;--r-lg:20px;--t-11:11px;--t-13:13px;--t-14:14px;--t-19:19px;--t-24:24px;--t-42:42px;--t-76:76px;--t-96:96px;--font-display:"Fraunces", ui-serif, Georgia, serif;--font-body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--tab-bar-h:62px;--max-w:480px}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper-sunken);color:var(--ink);font-family:var(--font-body);font-size:var(--t-14);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;margin:0;line-height:1.45}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;text-align:left;background:0 0;border:none;padding:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}.app{max-width:var(--max-w);background:var(--paper);flex-direction:column;min-height:100%;margin:0 auto;display:flex;position:relative}.screen{padding:var(--sp-5) var(--sp-4) calc(var(--tab-bar-h) + var(--sp-6));flex:1;overflow-x:hidden}.tab-bar{width:100%;max-width:var(--max-w);height:var(--tab-bar-h);background:var(--paper);border-top:1px solid var(--rule);z-index:40;padding-bottom:env(safe-area-inset-bottom);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab-bar button{color:var(--muted);font-size:var(--t-11);letter-spacing:.06em;text-transform:uppercase;flex-direction:column;justify-content:center;align-items:center;gap:3px;transition:color .15s;display:flex}.tab-bar button[aria-current=page]{color:var(--ink)}.tab-bar button[aria-current=page] .tab-dot{background:var(--accent)}.tab-dot{background:0 0;border-radius:50%;width:4px;height:4px}.eyebrow{font-size:var(--t-11);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0}.display{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.015em;margin:0;font-weight:500;line-height:1.02}.display-42{font-size:var(--t-42)}.display-24{font-size:var(--t-24)}.display-19{font-size:var(--t-19)}.display-76{font-size:var(--t-76)}.muted{color:var(--muted)}.num{font-variant-numeric:tabular-nums}hr.rule{border:none;border-top:1px solid var(--rule);margin:var(--sp-5) 0}.card{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--r-md);padding:var(--sp-3)}.card+.card{margin-top:var(--sp-2)}.row{align-items:center;gap:var(--sp-2);display:flex}.row-between{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.stack{flex-direction:column;display:flex}.btn{padding:10px var(--sp-3);border-radius:var(--r-sm);border:1px solid var(--rule);background:var(--paper-raised);font-size:var(--t-13);justify-content:center;align-items:center;gap:6px;font-weight:500;transition:background .12s,border-color .12s;display:inline-flex}.btn:active{background:var(--paper-sunken)}.btn-primary{background:var(--ink);border-color:var(--ink);color:var(--paper)}.btn-primary:active{background:#2a251a}.btn-ghost{background:0 0;border-color:#0000}.btn-full{width:100%}.btn:disabled{opacity:.45;cursor:default}.chip{border:1px solid var(--rule);background:var(--paper-raised);font-size:var(--t-13);border-radius:999px;padding:6px 10px}.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.sheet-backdrop{z-index:60;background:#14110b59;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:var(--max-w);background:var(--paper);border-radius:var(--r-lg) var(--r-lg) 0 0;padding:var(--sp-4) var(--sp-4) calc(var(--sp-5) + env(safe-area-inset-bottom));max-height:88vh;overflow-y:auto}.sheet-handle{background:var(--rule);width:36px;height:4px;margin:0 auto var(--sp-3);border-radius:2px}.sheet-option{width:100%;padding:var(--sp-3) 0;border-bottom:1px solid var(--rule);font-size:var(--t-14);display:block}.sheet-option:last-of-type{border-bottom:none}.sheet-option small{color:var(--muted);font-size:var(--t-13);margin-top:2px;display:block}.toast{bottom:calc(var(--tab-bar-h) + var(--sp-3));width:calc(100% - var(--sp-6));max-width:calc(var(--max-w) - var(--sp-6));background:var(--ink);color:var(--paper);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);justify-content:space-between;align-items:center;gap:var(--sp-3);font-size:var(--t-13);z-index:70;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast button{color:var(--paper);flex-shrink:0;font-weight:500;text-decoration:underline}.skeleton{background:linear-gradient(90deg, var(--paper-sunken), var(--rule), var(--paper-sunken));border-radius:var(--r-sm);background-size:200% 100%;animation:1.2s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.field{margin-bottom:var(--sp-3);display:block}.field>span{font-size:var(--t-11);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;display:block}.field input,.field select,.field textarea{width:100%;padding:10px var(--sp-2);border:1px solid var(--rule);border-radius:var(--r-sm);background:var(--paper-raised);font-variant-numeric:tabular-nums}.field input:focus,.field textarea:focus{border-color:var(--muted);outline:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.week-head{margin-bottom:var(--sp-5)}.week-head .display{margin:var(--sp-1) 0 var(--sp-2)}.week-intro{color:var(--muted);font-size:var(--t-13);max-width:34ch}.progress-dots{gap:4px;margin-top:6px;display:flex}.progress-dot{background:var(--rule);border-radius:2px;width:22px;height:5px}.progress-dot.filled{background:var(--ink)}.progress-dot.skipped{background:var(--accent);opacity:.4}.section-label{font-size:var(--t-11);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--sp-2);justify-content:space-between;align-items:baseline;display:flex}.workout-card{border-radius:var(--r-md);background:var(--paper-raised);border:1px solid var(--rule);margin-bottom:var(--sp-2);touch-action:pan-y;position:relative;overflow:hidden}.workout-card.optional{background:0 0;border-style:dashed}.workout-card.done{background:var(--paper-sunken)}.workout-card.done .workout-title{text-decoration:line-through;-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);color:var(--muted)}.workout-card.skipped{opacity:.5}.workout-card.race{border-color:var(--accent);border-width:1.5px}.workout-card.adapted{border-color:var(--context);background:color-mix(in srgb, var(--context) 8%, var(--paper-raised))}.workout-main{gap:var(--sp-3);width:100%;padding:var(--sp-3);background:var(--paper-raised);z-index:2;align-items:flex-start;display:flex;position:relative}.workout-card.optional .workout-main,.workout-card.done .workout-main,.workout-card.skipped .workout-main{background:inherit}.workout-index{font-family:var(--font-display);font-size:var(--t-13);color:var(--muted);min-width:26px;padding-top:2px}.workout-body{flex:1;min-width:0}.workout-title{font-family:var(--font-display);font-size:var(--t-19);margin:0;line-height:1.2}.workout-target{font-size:var(--t-13);color:var(--muted);margin:3px 0 0}.workout-meta{margin-top:var(--sp-1);flex-wrap:wrap;gap:6px;display:flex}.tag{font-size:var(--t-11);letter-spacing:.06em;text-transform:uppercase;border-radius:var(--r-sm);border:1px solid var(--rule);color:var(--muted);padding:2px 7px}.tag.accent{border-color:var(--accent);color:var(--accent)}.tag.nutrition{border-color:var(--nutrition);color:var(--nutrition)}.tag.context{border-color:var(--context);color:var(--context)}.tag.strength{border-color:var(--strength);color:var(--strength)}.workout-more{padding:var(--sp-1);color:var(--muted);flex-shrink:0;align-self:center}.swipe-bg{padding:0 var(--sp-4);font-size:var(--t-13);z-index:1;justify-content:space-between;align-items:center;display:flex;position:absolute;inset:0}.swipe-bg .left{color:var(--success)}.swipe-bg .right{color:var(--accent)}.rings{gap:var(--sp-2);text-align:center;grid-template-columns:repeat(3,1fr);width:100%;display:grid}.ring-cell{flex-direction:column;align-items:center;gap:6px;display:flex}.ring-label{font-size:var(--t-11);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.ring-value{font-family:var(--font-display);font-size:var(--t-24);line-height:1}.ring-svg circle{transition:stroke-dashoffset .45s cubic-bezier(.22,1,.36,1)}.ring-hint{font-size:var(--t-11);color:var(--muted);text-align:center;margin-top:var(--sp-2)}.countdown+.countdown{margin-top:var(--sp-4)}.countdown-value{align-items:baseline;gap:var(--sp-2);display:flex}.countdown-number{font-family:var(--font-display);font-size:var(--t-76);letter-spacing:-.03em;line-height:.9}.countdown-number.small{font-size:var(--t-42)}.countdown-suffix{font-size:var(--t-13);color:var(--muted)}.countdown.race-day .countdown-number{color:var(--accent)}.preview-week{padding:var(--sp-3) 0;border-bottom:1px solid var(--rule)}.preview-week:last-child{border-bottom:none}.preview-week.race{border-left:2px solid var(--accent);padding-left:var(--sp-3)}.preview-head{justify-content:space-between;align-items:baseline;gap:var(--sp-2);display:flex}.preview-kw{font-family:var(--font-display);font-size:var(--t-19)}.preview-focus{font-size:var(--t-13);color:var(--muted)}.preview-detail{font-size:var(--t-13);color:var(--muted);margin-top:4px}.preview-adaptive{font-size:var(--t-11);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;opacity:.7;margin-top:6px}.fab{bottom:calc(var(--tab-bar-h) + var(--sp-3));width:calc(100% - var(--sp-6));max-width:calc(var(--max-w) - var(--sp-6));background:var(--ink);color:var(--paper);border-radius:var(--r-lg);padding:14px var(--sp-4);justify-content:space-between;align-items:center;gap:var(--sp-2);font-size:var(--t-13);z-index:30;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #14110b29}.icon-btn{border-radius:var(--r-sm);border:1px solid var(--rule);background:var(--paper-raised);width:36px;height:36px;color:var(--ink);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.chat-screen{flex-direction:column;height:100%;padding-bottom:0;display:flex}.chat-log{gap:var(--sp-2);padding-bottom:var(--sp-3);flex-direction:column;flex:1;display:flex;overflow-y:auto}.msg{max-width:86%;padding:10px var(--sp-3);border-radius:var(--r-md);font-size:var(--t-14);white-space:pre-wrap;word-break:break-word}.msg.user{background:var(--ink);color:var(--paper);border-bottom-right-radius:var(--r-sm);align-self:flex-end}.msg.assistant{background:var(--paper-raised);border:1px solid var(--rule);border-bottom-left-radius:var(--r-sm);align-self:flex-start}.msg.system{color:var(--muted);font-size:var(--t-13);text-align:center;background:0 0;align-self:center;max-width:100%}.msg.failed{border-color:var(--accent)}.msg-meta{font-size:var(--t-11);color:var(--muted);letter-spacing:.05em;margin-top:4px}.msg.user .msg-meta{color:#efece499}.chat-input-bar{background:var(--paper);border-top:1px solid var(--rule);padding:var(--sp-2) 0 calc(var(--tab-bar-h) + var(--sp-2));gap:var(--sp-2);align-items:flex-end;display:flex;position:sticky;bottom:0}.chat-input-bar textarea{resize:none;border:1px solid var(--rule);border-radius:var(--r-md);padding:10px var(--sp-3);background:var(--paper-raised);max-height:120px;font-size:var(--t-14);flex:1}.chat-send{background:var(--ink);width:42px;height:42px;color:var(--paper);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.chat-send:disabled{opacity:.35}.typing{align-items:center;gap:4px;height:16px;display:inline-flex}.typing span{background:var(--muted);border-radius:50%;width:5px;height:5px;animation:1.2s infinite blink}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,60%,to{opacity:.25}30%{opacity:1}}.quick-row{padding-bottom:var(--sp-1);margin-bottom:var(--sp-1);scrollbar-width:none;gap:6px;display:flex;overflow-x:auto}.quick-row::-webkit-scrollbar{display:none}.quick-row .chip{white-space:nowrap;font-size:var(--t-13);flex-shrink:0}.insight-card{border:1px solid var(--rule);border-left:3px solid var(--insight);border-radius:var(--r-md);padding:var(--sp-3);background:var(--paper-raised);margin-bottom:var(--sp-2)}.insight-cat{font-size:var(--t-11);letter-spacing:.12em;text-transform:uppercase;color:var(--insight);margin:0 0 var(--sp-1)}.insight-content{font-size:var(--t-14);margin:0}.insight-footer{margin-top:var(--sp-2);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.reaction{font-size:var(--t-11);border:1px solid var(--rule);color:var(--muted);border-radius:999px;padding:5px 10px}.reaction[aria-pressed=true]{background:var(--insight);border-color:var(--insight);color:var(--paper)}.metric-row{justify-content:space-between;align-items:baseline;gap:var(--sp-2);border-bottom:1px solid var(--rule);font-size:var(--t-13);padding:7px 0;display:flex}.metric-row:last-child{border-bottom:none}.metric-label{color:var(--muted)}.metric-value{font-family:var(--font-display);font-size:var(--t-19);text-align:right}.metric-delta{font-size:var(--t-11);color:var(--muted);display:block}.metric-delta.up{color:var(--success)}.metric-delta.down{color:var(--accent)}.card-title{font-size:var(--t-11);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 var(--sp-2)}.range-switch{gap:4px;display:flex}.range-switch button{font-size:var(--t-11);letter-spacing:.08em;border-radius:var(--r-sm);border:1px solid var(--rule);color:var(--muted);padding:5px 10px}.range-switch button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.macro-bar{background:var(--rule);border-radius:3px;height:6px;margin-top:5px;overflow:hidden}.macro-fill{background:var(--nutrition);height:100%;transition:width .35s cubic-bezier(.22,1,.36,1)}.macro-fill.over{background:var(--accent)}.meal-row{justify-content:space-between;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px solid var(--rule);font-size:var(--t-13);display:flex}.meal-row:last-child{border-bottom:none}.exercise-block{margin-bottom:var(--sp-4)}.exercise-head{justify-content:space-between;align-items:baseline;gap:var(--sp-2);border-bottom:1px solid var(--rule);margin-bottom:var(--sp-2);padding-bottom:6px;display:flex}.exercise-name{font-family:var(--font-display);font-size:var(--t-19)}.set-row{align-items:center;gap:var(--sp-2);border-bottom:1px solid color-mix(in srgb, var(--rule) 55%, transparent);width:100%;font-size:var(--t-13);grid-template-columns:46px 1fr 78px 30px;padding:9px 0;display:grid}.set-row:last-child{border-bottom:none}.set-label{color:var(--muted);font-size:var(--t-11);letter-spacing:.08em;text-transform:uppercase}.set-weight{font-family:var(--font-display);font-size:var(--t-19)}.set-reps{text-align:right;color:var(--muted)}.set-reps.filled{color:var(--ink)}.set-check{border:1.5px solid var(--rule);border-radius:50%;justify-content:center;justify-self:end;align-items:center;width:20px;height:20px;display:flex}.set-check.done{background:var(--success);border-color:var(--success);color:var(--paper)}.set-check.miss{border-color:var(--accent);color:var(--accent)}.feel-slider{grid-template-columns:repeat(5,1fr);gap:5px;display:grid}.feel-slider button{border:1px solid var(--rule);border-radius:var(--r-sm);text-align:center;font-size:var(--t-11);color:var(--muted);background:var(--paper-raised);padding:10px 2px}.feel-slider button[aria-pressed=true]{background:var(--strength);border-color:var(--strength);color:var(--paper)}.race-day{gap:var(--sp-4);flex-direction:column;min-height:100%;display:flex}.race-line{justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--rule);display:flex}.race-line .label{font-size:var(--t-11);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.race-line .value{font-family:var(--font-display);font-size:var(--t-24);text-align:right}.race-line .value small{font-family:var(--font-body);font-size:var(--t-13);color:var(--muted);display:block}.empty{text-align:center;padding:var(--sp-6) var(--sp-4);color:var(--muted);font-size:var(--t-13)}.empty .display{color:var(--ink);margin-bottom:var(--sp-2)}.onboarding{padding:var(--sp-6) var(--sp-4);max-width:var(--max-w);background:var(--paper);flex-direction:column;min-height:100%;margin:0 auto;display:flex}.onboarding-steps{margin-bottom:var(--sp-5);gap:4px;display:flex}.onboarding-steps div{background:var(--rule);border-radius:2px;flex:1;height:3px}.onboarding-steps div.active{background:var(--ink)}.grid-2{gap:var(--sp-2);grid-template-columns:1fr 1fr;display:grid}.settings-group{margin-bottom:var(--sp-5)}.settings-row{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--rule);width:100%;font-size:var(--t-14);display:flex}.settings-row small{color:var(--muted);font-size:var(--t-13);margin-top:2px;display:block}.warning-banner{border:1px solid var(--accent);border-radius:var(--r-md);padding:var(--sp-3);background:color-mix(in srgb, var(--accent) 6%, var(--paper-raised));font-size:var(--t-13);margin-bottom:var(--sp-3)}.context-banner{border:1px solid var(--context);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3);background:color-mix(in srgb, var(--context) 8%, var(--paper-raised));font-size:var(--t-13);margin-bottom:var(--sp-3);justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}
