:root{--bg:#121417;--bg-elev:#1b1f24;--bg-card:#232830;--text:#e8ebee;--text-muted:#929ba4;--text-dim:#8b96a2;--text-soft:#c9d1d9;--text-soft2:#c9d0d8;--text-faint:#6b7480;--rule-strong:#3a424c;--good-soft:#7ed492;--bad-soft:#f4a3a3;--rule:#2a3038;--accent:#7cc4ff;--accent-rgb:124 196 255;--accent-soft:#7cc4ff1f;--on-accent:#0d1a26;--chat:#7cc4ff;--on-chat:#0d1a26;--chrome:#16191d;--bg-input:#0f1114;--field-edge:#737d89;--gold:#e6b84a;--gold-hi:#f7e0a0;--gold-lo:#b8862a;--rain:#5aa9e6;--temp:#f0b95f;--best-fill:#7adb8a1a;--best-stroke:#7adb8a99;--badge:#c39bd3;--wx-cloud:#c9d1d9;--wx-sun:#f0b95f;--orb-core:radial-gradient(circle at 50% 42%, #1a1e24, #0b0d10 62%);--orb-glyph:#fff;--danger-text:#f7a59a;--danger-edge:#f06e5f;--danger-fill:#f06e5f1f;--rule-toast:#3a4452;--banked-grad:#1d2a26;--done-fill:#3fbf5f;--on-done:#0e1a11;--strava:#fc5200;--good-mid:#9fd88b;--on-warn:#1a1408;--bg-code:#14171b;--scrim:#0d1014f5;--knob:#fff;--chart-bar:#5a6573;--chart-mark:#6b7684;--chart-budget:#4a5563;--chart-dot:#5c7a96;--swipe-edit:#3f6688;--swipe-delete:#b5484a;--on-swipe:#fff;--paper:#fff;--on-paper:#1a1a1a;--surface-raised:var(--bg-elev);--halo-a:#7cc4fff2;--halo-b:#c39bd38c;--halo-c:#f0b95fe6;--halo-d:#7adb8a73;--halo-e:#6fd6e8b3;--halo-f:#f080804d;--warn:#f0b95f;--good:#7adb8a;--bad:#f08080;--link:#7cc4ff;--link-hover:#a3d6ff;--sport-run:#7adb8a;--sport-ride:#7cc4ff;--sport-swim:#6fd6e8;--sport-strength:#f0b95f;--athlete-carl:#7cc4ff;--athlete-carrie:#f0b95f;--athlete-becca:#c39bd3;--athlete-tandra:#7adb8a;--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#eef0f3;--bg-elev:#fff;--bg-card:#e9edf1;--chrome:#fff;--bg-input:#fff;--field-edge:#78828d;--text:#15191e;--text-soft:#2b323a;--text-soft2:#2b323a;--text-muted:#59636e;--text-dim:#616b77;--text-faint:#636d78;--rule:#cdd3da;--rule-strong:#b3bcc6;--accent:#0f5fa8;--accent-rgb:15 95 168;--accent-soft:#0f5fa81a;--on-accent:#fff;--chat:#1a73c7;--on-chat:#fff;--link:#0f5fa8;--link-hover:#0b4a85;--warn:#7a5009;--good:#15692d;--good-soft:#1a7533;--bad:#bb3e37;--bad-soft:#bb3e37;--sport-run:#1a7533;--sport-ride:#0f5fa8;--sport-swim:#1b6774;--sport-strength:#8f5e0b;--gold:#a87a12;--gold-hi:#c99a2e;--gold-lo:#7d5a0c;--rain:#1f5f9e;--temp:#a35f00;--best-fill:#1a753314;--best-stroke:#1a7533bf;--badge:#7a3f98;--wx-cloud:#6b7684;--wx-sun:#c27a00;--orb-core:radial-gradient(circle at 50% 42%, #fff, #e8ecf1 70%);--orb-glyph:#111418;--danger-text:#a8352f;--danger-edge:#bb3e37;--danger-fill:#bb3e371a;--rule-toast:#b3bcc6;--banked-grad:#d9ecde;--done-fill:#1a7533;--on-done:#fff;--strava:#c23f00;--good-mid:#3b7d2a;--on-warn:#fff;--bg-code:#f4f6f8;--scrim:#eef0f3f7;--knob:#fff;--chart-bar:#9aa5b1;--chart-mark:#59636e;--chart-budget:#59636e;--chart-dot:#59636e;--swipe-edit:#0f5fa8;--swipe-delete:#bb3e37;--on-swipe:#fff;--halo-a:#0f5fa8e6;--halo-b:#7a3f9873;--halo-c:#a35f00cc;--halo-d:#1a753366;--halo-e:#0b6f8099;--halo-f:#b3261e4d}html[data-theme=light] body{background:var(--bg);color:var(--text)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;margin:0;padding:0}body{padding:env(safe-area-inset-top) 16px max(16px, env(safe-area-inset-bottom));min-height:100vh;font:16px/1.6 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}a{color:var(--link);text-decoration:none}a:hover{color:var(--link-hover)}.pain-row{grid-template-columns:repeat(11,minmax(0,1fr));display:grid}@media (max-width:374px){.pain-row{grid-template-columns:repeat(6,minmax(0,1fr))}}p a:not([class]),li a:not([class]){text-underline-offset:.15em;text-decoration:underline;text-decoration-thickness:1px}input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=hidden]),textarea,select{border-color:var(--field-edge)!important}input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):focus,textarea:focus,select:focus{border-color:var(--accent)!important}::placeholder{color:var(--text-dim);opacity:1}.portal{max-width:760px;margin:0 auto;padding:24px 0 64px}.topbar{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;gap:12px;margin:0 0 28px;padding:0 0 14px;display:flex}.topbar-brand{letter-spacing:.02em;text-transform:uppercase;color:var(--text-muted);font-size:.92rem;font-weight:600}.topbar-brand .dot{color:var(--accent)}.topbar-nav{gap:14px;font-size:.88rem;display:flex}.topbar-nav a{color:var(--text-muted);border-bottom:1px dotted #0000;text-decoration:none}.topbar-nav a:hover,.topbar-nav a.active{color:var(--text);border-bottom-color:var(--accent)}.page-title{letter-spacing:-.01em;margin:0 0 6px;font-size:1.7rem;font-weight:700}.page-lead{color:var(--text-muted);margin:0 0 28px;font-size:1rem}.section-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin:28px 0 12px;font-size:.78rem;font-weight:600}.race-card{background:var(--bg-elev);border:1px solid var(--rule);color:var(--text);border-radius:14px;margin:0 0 14px;padding:18px 18px 16px;text-decoration:none;transition:border-color .12s,transform .12s;display:block}.race-card:hover{border-color:var(--accent);transform:translateY(-1px)}.race-card .race-when{color:var(--text-muted);font-variant-numeric:tabular-nums;align-items:baseline;gap:10px;margin-bottom:6px;font-size:.85rem;display:flex}.race-card .race-countdown{color:var(--accent);font-weight:600}.race-card .race-countdown.race-past{color:var(--text-dim)}.race-card .race-name{letter-spacing:-.01em;color:var(--text);margin:0 0 8px;font-size:1.18rem;font-weight:600}.race-card .race-detail{color:var(--text-muted);margin:0 0 14px;font-size:.92rem}.race-card .race-attrs{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.race-attr{background:var(--bg-card);color:var(--text-muted);letter-spacing:.02em;border-radius:20px;padding:3px 9px;font-size:.74rem}.race-card .race-athletes{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.race-card .race-athletes-label{color:var(--text-dim);letter-spacing:.05em;text-transform:uppercase;font-size:.78rem}.race-card .race-no-athletes{color:var(--text-dim);font-size:.88rem;font-style:italic}.athlete-pill{background:var(--bg-card);border:1px solid var(--rule);color:var(--text);border-radius:22px;align-items:center;gap:8px;padding:4px 10px 4px 4px;font-size:.88rem;text-decoration:none;transition:border-color .12s;display:inline-flex}.athlete-pill:hover{border-color:var(--accent);color:var(--text)}.avatar{background:var(--accent);width:28px;height:28px;color:var(--bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.78rem;font-weight:700;display:inline-flex}.avatar.lg{width:44px;height:44px;font-size:1.05rem}.avatar.xl{width:56px;height:56px;font-size:1.3rem}.avatar-carl{background:var(--athlete-carl)}.avatar-carrie{background:var(--athlete-carrie)}.avatar-becca{background:var(--athlete-becca)}.avatar-tandra{background:var(--athlete-tandra)}.athlete-header{border-bottom:1px solid var(--rule);align-items:center;gap:16px;margin-bottom:24px;padding:20px 0 24px;display:flex}.athlete-header .athlete-id{flex-direction:column;gap:4px;display:flex}.athlete-header .athlete-name{letter-spacing:-.01em;color:var(--text);margin:0;font-size:1.6rem;font-weight:700;line-height:1.1}.athlete-header .athlete-context{color:var(--text-muted);margin:0;font-size:.94rem}.athlete-header .athlete-context .race-link{color:var(--text);border-bottom:1px dotted var(--rule);font-weight:500;text-decoration:none}.athlete-header .athlete-context .race-link:hover{border-bottom-color:var(--accent);color:var(--accent)}.athlete-header .athlete-context .no-race{color:var(--text-dim);font-style:italic}.snapshot{background:var(--bg-elev);border:1px solid var(--rule);border-radius:14px;margin:0 0 24px;padding:16px 18px}.snapshot-head{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.snapshot-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin:0;font-size:.78rem;font-weight:600}.snapshot-fresh{color:var(--text-dim);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.72rem}.snapshot-fresh.stale{color:var(--warn)}.snapshot-grid{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:10px;display:grid}.snapshot-cell{flex-direction:column;gap:2px;display:flex}.snapshot-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);font-size:.72rem}.snapshot-value{font-variant-numeric:tabular-nums;color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.3rem;font-weight:600}.snapshot-value.pos{color:var(--good)}.snapshot-value.neg{color:var(--warn)}.snapshot-value.unset{color:var(--text-dim);font-size:1rem}.snapshot-read{color:var(--text-muted);margin:6px 0 0;font-size:.88rem;line-height:1.45}.snapshot-read .zone{color:var(--accent);font-weight:600}.constraints{background:var(--bg-elev);border:1px solid var(--rule);border-radius:14px;margin:0 0 24px;padding:14px 16px 12px}.constraints-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin:0 0 8px;font-size:.78rem;font-weight:600}.constraint-row{color:var(--text);border-top:1px solid var(--rule);align-items:flex-start;gap:10px;padding:6px 0;font-size:.92rem;display:flex}.constraint-row:first-of-type{border-top:0;padding-top:4px}.constraint-row .marker{letter-spacing:.06em;text-transform:uppercase;border-radius:4px;flex-shrink:0;margin-top:2px;padding:2px 7px;font-size:.72rem;font-weight:600}.marker-hard{color:var(--bad);background:#f0808026}.marker-preference{color:var(--accent);background:#7cc4ff21}.marker-medical-safety{color:var(--warn);background:#f0b95f2e}.marker-info{background:var(--bg-card);color:var(--text-muted)}.constraint-text{flex:1}.constraint-text .desc{display:block}.constraint-text .meta{color:var(--text-dim);margin-top:2px;font-size:.78rem;display:block}.artifact{background:var(--bg-elev);border:1px solid var(--rule);color:var(--text);border-radius:12px;align-items:stretch;margin:0 0 10px;padding:14px 16px;text-decoration:none;transition:border-color .12s,transform .12s;display:flex}.artifact:hover{border-color:var(--accent);color:var(--text);transform:translate(1px)}.artifact-body{flex-direction:column;flex:1;gap:2px;display:flex}.artifact-title{letter-spacing:-.005em;color:var(--text);font-size:1.02rem;font-weight:600}.artifact-meta{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.84rem}.artifact-kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);margin-bottom:4px;font-size:.72rem}.artifact-arrow{color:var(--text-dim);align-items:center;margin-left:12px;font-size:1.2rem;display:flex}.artifact:hover .artifact-arrow{color:var(--accent)}.artifact.featured{background:var(--accent-soft);border-color:#7cc4ff52}.artifact.featured .artifact-kicker{color:var(--accent)}.archive{margin-top:14px}.archive>summary{cursor:pointer;background:var(--bg-elev);border:1px solid var(--rule);color:var(--text-muted);border-radius:10px;justify-content:space-between;align-items:center;padding:10px 14px;font-size:.88rem;list-style:none;display:flex}.archive>summary::-webkit-details-marker{display:none}.archive>summary:after{content:"▾";color:var(--text-dim);font-size:.8rem;transition:transform .12s}.archive[open]>summary:after{transform:rotate(180deg)}.archive .archive-body{padding:8px 0 0}.archive .artifact{background:0 0}.archive .artifact .artifact-title{color:var(--text-muted);font-weight:500}.archive .artifact:hover .artifact-title{color:var(--text)}.tools{background:var(--bg-elev);border:1px solid var(--rule);border-radius:14px;margin-top:28px;padding:16px 18px}.tools-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin:0 0 10px;font-size:.78rem;font-weight:600}.tools-list{flex-direction:column;gap:4px;display:flex}.tool-link{color:var(--text);border-bottom:1px solid var(--rule);align-items:center;gap:10px;padding:9px 4px;font-size:.94rem;text-decoration:none;display:flex}.tool-link:last-child{border-bottom:0}.tool-link:hover{color:var(--accent)}.tool-link .tool-arrow{color:var(--text-dim);margin-left:auto;font-size:1rem}.tool-link:hover .tool-arrow{color:var(--accent)}.q-section{background:var(--bg-elev);border:1px solid var(--rule);border-radius:14px;margin:0 0 16px;padding:18px 20px}.q-section-title{color:var(--text);margin:0 0 6px;font-size:1.05rem;font-weight:600}.q-section-lead{color:var(--text-muted);margin:0 0 14px;font-size:.92rem}.q-field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.q-field:last-child{margin-bottom:0}.q-field label{color:var(--text);font-size:.86rem;font-weight:600}.q-hint{color:var(--text-dim);margin-top:-2px;font-size:.8rem}.q-field input[type=text],.q-field input[type=number],.q-field input[type=email],.q-field textarea,.q-field select{background:var(--bg);border:1px solid var(--rule);color:var(--text);border-radius:8px;width:100%;padding:10px 12px;font-family:inherit;font-size:1rem}.q-field textarea{resize:vertical;min-height:88px;line-height:1.45}.q-field input:focus,.q-field textarea:focus,.q-field select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #7cc4ff2e}.q-checkbox-grid{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:6px;display:grid}.q-checkbox{background:var(--bg);border:1px solid var(--rule);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:.9rem;display:flex}.q-checkbox input{accent-color:var(--accent);margin:0}.q-checkbox:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.q-who-card{background:var(--bg);border:1px solid var(--rule);cursor:pointer;text-align:center;-webkit-user-select:none;user-select:none;border-radius:10px;flex-direction:column;align-items:center;gap:8px;padding:14px 10px;display:flex}.q-who-card input{opacity:0;pointer-events:none;position:absolute}.q-who-card .q-who-name{font-size:.92rem;font-weight:600}.q-who-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;display:grid}.q-who-card:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.q-submit{background:var(--accent);width:100%;color:var(--bg);cursor:pointer;text-align:center;border:0;border-radius:10px;margin-top:8px;padding:14px;font-family:inherit;font-size:1rem;font-weight:600;text-decoration:none;display:block}.q-submit:hover{background:var(--link-hover)}.q-submit-meta{color:var(--text-dim);text-align:center;margin:10px 0 0;font-size:.82rem}.q-status{text-align:center;min-height:1.2em;margin:12px 0 0;font-size:.88rem}.q-status.info{color:var(--text-muted,#7c8a99)}.q-status.success{color:var(--good,#2e7d32);font-weight:600}.q-status.warn{color:var(--warn,#c77700)}.q-status.error{color:var(--bad,#b3261e)}.gate-wrap{justify-content:center;align-items:center;min-height:100vh;padding:32px 16px;display:flex}.gate-card{background:var(--bg-elev);border:1px solid var(--rule);text-align:center;border-radius:14px;width:100%;max-width:380px;padding:28px 24px 24px}.gate-card .gate-brand{letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px;font-size:.78rem}.gate-card .gate-brand .dot{color:var(--accent)}.gate-input{background:var(--bg);border:1px solid var(--rule);width:100%;color:var(--text);border-radius:8px;margin-bottom:10px;padding:12px 14px;font-family:inherit;font-size:1rem}.gate-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgb(var(--accent-rgb) / .18);outline:none}.gate-card p.gate-error{color:var(--bad);min-height:0;margin:0 0 10px;font-size:.86rem}.gate-card p.gate-error:empty{display:none}.gate-button{background:var(--accent);width:100%;color:var(--bg);cursor:pointer;border:0;border-radius:8px;padding:12px;font-family:inherit;font-size:1rem;font-weight:600}.gate-button:hover{background:var(--link-hover)}.gate-footnote{color:var(--text-dim);margin-top:18px;font-size:.78rem}.portal-footer{border-top:1px solid var(--rule);text-align:center;color:var(--text-dim);margin-top:48px;padding:18px 0 0;font-size:.82rem}.portal-footer a{color:var(--text-muted);border-bottom:1px dotted var(--rule);text-decoration:none}.portal-footer a:hover{color:var(--accent);border-bottom-color:var(--accent)}@media (max-width:420px){body{padding-left:12px;padding-right:12px}.page-title{font-size:1.42rem}.race-card{padding:16px 14px}.athlete-header .athlete-name{font-size:1.32rem}.snapshot-grid{grid-template-columns:repeat(2,1fr)}.snapshot-value{font-size:1.18rem}.race-card .race-name{font-size:1.08rem}}.week-analysis-section{margin-top:20px}.week-analysis-prose{color:var(--text);font-size:.95rem;line-height:1.55}.week-analysis-prose p{margin:0 0 14px}.week-analysis-prose p:last-child{margin-bottom:0}.debug-details{border-top:1px solid var(--rule);margin-top:18px;padding-top:10px}.debug-details summary{cursor:pointer;color:var(--text-muted,#6a6a6a);-webkit-user-select:none;user-select:none;font-size:.82rem}.debug-block{color:var(--text-muted,#5a5a5a);white-space:pre;margin:10px 0 0;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.72rem;line-height:1.4;overflow-x:auto}.recent-activities{margin-top:24px}.recent-list{margin:8px 0 0;padding:0;list-style:none}.recent-row{border-bottom:1px solid var(--rule);grid-template-columns:88px 64px 1fr auto auto;align-items:baseline;gap:12px;padding:8px 0;font-size:.88rem;display:grid}.recent-row:last-child{border-bottom:0}.recent-date{color:var(--text-muted,#7c8a99);font-variant-numeric:tabular-nums}.recent-type{color:var(--text-muted,#7c8a99)}.recent-name{color:var(--text,#1a1a1a);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.recent-stats{color:var(--text-muted,#7c8a99);font-variant-numeric:tabular-nums}.recent-correction{text-transform:uppercase;letter-spacing:.05em;color:var(--accent,#3d5a80);background:#3d5a8014;border-radius:3px;padding:2px 6px;font-size:.72rem}@media (max-width:480px){.recent-row{grid-template-columns:76px 1fr;gap:4px 10px}.recent-type,.recent-stats,.recent-correction{grid-column:2}}.portal .muted{color:var(--text-muted,#7c8a99);font-style:italic}.gate-input-code{letter-spacing:.45em;text-align:center;font-family:ui-monospace,Consolas,monospace;font-size:1.4rem}.gate-footnote a{color:var(--text-muted);text-decoration:underline}.gate-footnote a:hover{color:var(--text)}.gate-wrap{min-height:100svh;padding:32px 24px calc(64px + 8svh);position:relative}.gate-card{background:0 0;border:0;border-radius:0;max-width:340px;padding:0}.gate-card .gate-mark{border-radius:50%;margin:0 auto 24px;animation:2.6s ease-out .3s focus-halo;display:flex}.gate-card .gate-wordmark{letter-spacing:.38em;text-transform:uppercase;color:var(--text);margin:0;padding-left:.38em;font-size:1.5rem;font-weight:500;line-height:1}.gate-card .gate-tagline{letter-spacing:.24em;text-transform:uppercase;color:var(--text-dim);margin:14px 0 56px;padding-left:.24em;font-size:.625rem;font-weight:500;line-height:1}.gate-card form{margin:0}.gate-card #id-lead,.gate-card #step-code>p:first-of-type{color:var(--text-muted);text-wrap:balance;margin:0 0 16px;font-size:.94rem;line-height:1.45}.gate-card #step-code strong{color:var(--text);overflow-wrap:anywhere;font-weight:500}.gate-card .gate-input{border:1px solid var(--rule);background:var(--bg-input);border-radius:12px;height:52px;margin:0 0 12px;padding:0 16px;transition:border-color .2s,box-shadow .2s}.gate-card .gate-input::placeholder{color:var(--text-dim)}.gate-card .gate-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgb(var(--accent-rgb) / .1)}.gate-card .gate-input-code{text-indent:.45em;padding:0}.gate-card p.gate-error{margin:-2px 0 12px}.gate-card .gate-button{letter-spacing:0;height:52px;color:var(--on-accent);box-shadow:inset 0 1px 0 #ffffff47, 0 1px 2px #00000073, 0 8px 20px -10px rgb(var(--accent-rgb) / .45);border-radius:12px;font-size:1rem;font-weight:600;transition:transform .12s,box-shadow .12s,background-color .2s}.gate-card .gate-button:hover{background:var(--link-hover)}.gate-card .gate-button:active{transform:translateY(1px);box-shadow:inset 0 1px #fff3,0 1px 1px #0006}.gate-card .gate-button:focus-visible{outline:2px solid rgb(var(--accent-rgb) / .6);outline-offset:3px}.gate-card .gate-footnote{margin:20px 0 0;font-size:.8rem;line-height:1.4}.gate-card .gate-legal{left:0;right:0;bottom:calc(20px + env(safe-area-inset-bottom,0px));letter-spacing:.02em;text-align:center;margin:0;font-size:.75rem;position:absolute}.gate-card .gate-legal a{color:var(--text-dim);text-decoration:none}.gate-card .gate-legal a:hover{color:var(--text-muted);text-decoration:underline}.coach-note p{margin:0 0 10px}.coach-note p:last-child{margin-bottom:0}@keyframes ptr-spin{to{transform:rotate(360deg)}}@keyframes trella-flash{0%,30%{background:#7ed49247}to{background:0 0}}@keyframes trella-tab-pulse{0%{transform:scale(1)}35%{transform:scale(1.25)}to{transform:scale(1)}}@keyframes trella-slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes trella-fade{0%{opacity:0}to{opacity:1}}html,body{overscroll-behavior-y:contain}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible,[role=button]:focus-visible,[tabindex]:not([tabindex="-1"]):focus-visible{outline-offset:2px;outline:2px solid var(--accent)!important}[tabindex="-1"]:focus,[tabindex="-1"]:focus-visible{outline:none}.card-hit:after{content:"";border-radius:inherit;position:absolute;inset:0}.card-hit:focus-visible{outline:none!important}.card-hit:focus-visible:after{outline:2px solid var(--accent);outline-offset:2px}.hit44{position:relative}.hit44:after{content:"";width:max(100%,44px);height:max(100%,44px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}html{scroll-padding-top:calc(env(safe-area-inset-top) + 8px);scroll-padding-bottom:calc(140px + env(safe-area-inset-bottom))}.thinking-orb{flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.thinking-orb-ring{background:conic-gradient(#7cc4ff,#c39bd3,#f08080,#f0b95f,#7adb8a,#6fd6e8,#7cc4ff);border-radius:50%;animation:3.2s linear infinite thinking-orb-turn;position:absolute;inset:0}.thinking-orb-glow{filter:blur(3px);opacity:.7;background:conic-gradient(#7cc4ff,#c39bd3,#f08080,#f0b95f,#7adb8a,#6fd6e8,#7cc4ff);border-radius:50%;animation:3.2s linear infinite thinking-orb-turn,2.4s ease-in-out infinite thinking-orb-breathe;position:absolute;inset:-8%}.thinking-orb-core{background:var(--orb-core);border-radius:50%;position:absolute;inset:7%}.thinking-orb-mark{width:68%;height:68%;position:absolute;top:16%;left:16%}@keyframes thinking-orb-turn{to{transform:rotate(360deg)}}.thinking-orb.still .thinking-orb-glow{display:none}.thinking-orb:not(.still){margin:4px}.thinking-orb.still .thinking-orb-ring{animation:none}.focus-halo{animation:2.6s ease-out focus-halo}@keyframes focus-halo{0%{box-shadow:0 0 #7cc4ff00,0 0 #c39bd300}15%{box-shadow:0 0 0 2px var(--halo-a), 0 0 18px 6px var(--halo-b)}45%{box-shadow:0 0 0 2px var(--halo-c), 0 0 22px 8px var(--halo-d)}75%{box-shadow:0 0 0 2px var(--halo-e), 0 0 20px 6px var(--halo-f)}to{box-shadow:0 0 0 2px #7cc4ff00,0 0 16px 4px #7cc4ff00}}.focus-halo-still{outline-offset:3px;outline:2px solid #7cc4ff}html.brand-preview .chat-panel{box-shadow:inset 0 1px #ffffff08;background:#7cc4ff09!important;border:1px solid #7cc4ff29!important;border-radius:20px!important}.tap-press{animation:.14s ease-out tap-press}@keyframes tap-press{0%{filter:brightness();transform:scale(1);box-shadow:0 0 #7cc4ff00}40%{filter:brightness(1.12);transform:scale(.97);box-shadow:0 0 0 2px #7cc4ff59}to{filter:brightness();transform:scale(1);box-shadow:0 0 #7cc4ff00}}html:has(.app-shell){height:100%;overflow:hidden}html:has(.app-shell) body{height:100%;overflow:hidden}.app-shell{padding:env(safe-area-inset-top) 0 0;position:fixed;inset:0;min-height:0!important}.app-scroll>*{flex-shrink:0}.app-scroll{overscroll-behavior-y:contain;min-height:0;scroll-padding-top:8px;scroll-padding-bottom:calc(190px + env(safe-area-inset-bottom));overflow-y:auto}@media print{html:has(.app-shell){height:auto;overflow:visible}html:has(.app-shell) body{height:auto;overflow:visible}.app-shell{padding:0;position:static}.app-scroll{margin:0;overflow:visible}}.plan-embed .plan-doc{max-width:none;padding:0 0 8px}.plan-embed .jump-week{display:none}.plan-embed{--bg-elev:var(--bg-card);--bg-deep:var(--surface-raised)}.plan-embed .day-date{color:var(--text-muted)!important}.plan-embed{--fg-faint:var(--text-muted)}.plan-embed .diary-stats,.plan-embed .diary-name{color:var(--fg-muted,var(--text-muted))!important}.plan-embed .plan-overview,.plan-embed .week-card,.plan-embed .principles,.plan-embed .pace-guidance{border-radius:14px}.plan-embed .plan-overview,.plan-embed .principles,.plan-embed .pace-guidance{padding:16px}.plan-embed .week-card>summary{padding:14px 16px}.plan-embed .toc-nav{border-radius:14px}.plan-embed h2{color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;margin:22px 0 10px;font-size:12px;font-weight:700}.plan-embed .athlete-header{margin-bottom:14px;padding:4px 0 14px}.how-to{font-weight:600;color:var(--good)!important}.page-masked{opacity:0}.page-revealed{opacity:1}.skeleton{background:linear-gradient(100deg, var(--bg-elev) 30%, var(--bg-card) 50%, var(--bg-elev) 70%) 0 0 / 300% 100%;border:1px solid var(--rule);animation:1.8s ease-in-out infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:0 0}}html.kb-open nav[aria-label=Tabs]{display:none!important}@media (max-width:359px){.tab-bar{gap:4px!important;padding-left:6px!important;padding-right:6px!important}.tab-label{letter-spacing:-.15px;font-size:10px}.day-word{letter-spacing:-.2px;padding:0!important;font-size:10px!important}}html.kb-open .composer-dock:focus-within{bottom:var(--kb,0px)!important}html.kb-open .composer-dock:not(:focus-within){visibility:hidden}html.kb-open .composer-dock .dock-tools{display:none!important}html.kb-open .sheet-dock{bottom:var(--kb,0px)!important;max-height:calc(100dvh - var(--kb,0px) - env(safe-area-inset-top) - 12px)!important}.check-bloom{animation:1.8s ease-out check-bloom}@keyframes check-bloom{0%{box-shadow:0 0 #7adb8a00,0 0 #7cc4ff00}20%{box-shadow:0 0 0 1.5px #7adb8acc,0 0 16px 4px #7cc4ff59}55%{box-shadow:0 0 0 1.5px #c39bd38c,0 0 20px 5px #f0b95f38}to{box-shadow:0 0 0 1px #7adb8a00,0 0 12px 2px #7cc4ff00}}.check-mark{animation:.5s cubic-bezier(.3,1.3,.5,1) check-mark;display:inline-block}@keyframes check-mark{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:none}}.count-tick{animation:.45s ease-out count-tick;display:inline-block}@keyframes count-tick{0%{opacity:.2;transform:translateY(-4px)}to{opacity:1;transform:none}}.badge-tick{animation:.5s ease-out badge-tick}@keyframes badge-tick{0%{transform:scale(1)}35%{transform:scale(1.22)}to{transform:scale(1)}}.all-clear{animation:.6s ease-out trella-fade}.all-clear-orb{animation:2.6s ease-out .15s focus-halo}@keyframes thinking-orb-breathe{0%,to{opacity:.6}50%{opacity:1}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{:root{--bg:#fff;--bg-elev:#f5f5f5;--bg-card:#fff;--text:#111;--text-muted:#555;--text-dim:#777;--rule:#ccc;--accent:#258;--warn:#863;--good:#2a7a3a;--bad:#a03030;--link:#258;--link-hover:#258;--code:#efefef}html,body{color:#111!important;background:#fff!important;min-height:0!important;padding:0!important}[data-noprint]{display:none!important}.app-shell{color:#111!important;box-shadow:none!important;background:#fff!important;max-width:none!important;min-height:0!important}.app-shell>div,.app-shell>main{padding:0!important}.plan-embed{border-radius:0!important;overflow:visible!important}a{color:#258}@page{margin:12mm}}.brief-embed{zoom:1.15}.brief-embed table{width:100%!important;max-width:100%!important}.brief-embed img{max-width:100%;height:auto}details.disclose>summary{list-style:none}details.disclose>summary::-webkit-details-marker{display:none}details.disclose[open]>summary .disclose-chev{display:inline-block;transform:rotate(180deg)}.win-moment{animation:.35s ease-out win-rise}@keyframes win-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.win-star{animation:1.8s ease-out win-glow}@keyframes win-glow{0%{box-shadow:0 0 #f0b95f00}30%{box-shadow:0 0 18px 4px #f0b95f73}to{box-shadow:0 0 #f0b95f00}}input[type=date],input[type=time]{box-sizing:border-box;appearance:none;text-align:left;min-width:0;max-width:100%}input[type=date]::-webkit-date-and-time-value{text-align:left}input[type=time]::-webkit-date-and-time-value{text-align:left}
