/* ChallengeUs — light, floating, iOS-like design system.
   System fonts (no web font download), glass surfaces, 22px cards, pill
   controls, spring-like micro-interactions, automatic dark mode. */
:root{
  --bg:#f2f3f7;--surface:#ffffff;--surface-2:#f7f8fb;--glass:rgba(255,255,255,.72);--glass-strong:rgba(255,255,255,.86);
  --ink:#0b1220;--ink-2:#3a4352;--muted:#6b7280;--hair:rgba(15,23,42,.08);--hair-2:rgba(15,23,42,.14);
  --accent:#0a84ff;--accent-soft:#e6f1ff;--lime:#c6ef79;--lime-ink:#2f4a12;--green:#22a06b;--amber:#f5a524;--red:#ff453a;
  --run:#2f7cf6;--bike:#f08a24;--swim:#7c5cf5;--race:#0b1220;--rest:#9aa3b2;--brick:#e0562d;
  --r-xl:26px;--r-lg:22px;--r-md:16px;--r-sm:12px;
  --shadow-sm:0 1px 2px rgba(16,24,40,.05),0 1px 1px rgba(16,24,40,.03);
  --shadow:0 1px 2px rgba(16,24,40,.04),0 14px 34px -16px rgba(16,24,40,.18);
  --shadow-float:0 8px 24px -8px rgba(16,24,40,.22),0 24px 60px -24px rgba(16,24,40,.24);
  --ease:cubic-bezier(.2,.8,.2,1);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI Variable","Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink);font-size:16px;line-height:1.45;font-synthesis:none;-webkit-font-smoothing:antialiased;color-scheme:light dark;
}
@media(prefers-color-scheme:dark){:root{--bg:#0b0d12;--surface:#161a22;--surface-2:#1d222c;--glass:rgba(22,26,34,.72);--glass-strong:rgba(22,26,34,.9);--ink:#f3f4f6;--ink-2:#c7cdd8;--muted:#8b93a3;--hair:rgba(255,255,255,.08);--hair-2:rgba(255,255,255,.14);--accent-soft:#12233a;--race:#f3f4f6;--shadow:0 1px 2px rgba(0,0,0,.4),0 14px 34px -16px rgba(0,0,0,.6);--shadow-float:0 8px 24px -8px rgba(0,0,0,.6),0 24px 60px -24px rgba(0,0,0,.7)}}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);overflow-x:hidden}
button,input,select{font:inherit;color:inherit}button{border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}
button:disabled{cursor:default;opacity:.5}
:where(button,a,input,select):focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 60%,transparent);outline-offset:3px;border-radius:12px}
h1,h2,h3,p{margin:0}h1{font-size:clamp(1.75rem,4.5vw,2.4rem);font-weight:750;letter-spacing:-.03em;line-height:1.15}h2{font-size:1.2rem;font-weight:700;letter-spacing:-.02em}h3{font-size:1.05rem;font-weight:650;letter-spacing:-.01em}p{color:var(--muted)}
.icon{width:20px;height:20px;flex-shrink:0;vertical-align:middle}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.skip-link{position:fixed;top:-60px;left:16px;background:var(--surface);z-index:1000;padding:12px;border-radius:12px}.skip-link:focus{top:12px}
input,select{min-width:0}
input:not([type=checkbox]):not([type=radio]),select{width:100%;padding:12px 14px;border:1px solid var(--hair-2);border-radius:var(--r-sm);background:var(--surface-2);transition:border-color .2s,box-shadow .2s}
input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent);outline:none}
input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}input[type=radio]{accent-color:var(--accent)}

/* ---- layout: floating rail (desktop) + floating tab bar (mobile) ---- */
.sidebar{position:fixed;top:16px;left:16px;bottom:16px;width:232px;display:flex;flex-direction:column;gap:18px;padding:22px 16px 16px;border-radius:var(--r-xl);background:var(--glass);backdrop-filter:saturate(180%) blur(22px);-webkit-backdrop-filter:saturate(180%) blur(22px);border:1px solid var(--hair);box-shadow:var(--shadow);z-index:30}
.brand{display:flex;gap:10px;align-items:center;font-weight:800;font-size:1.15rem;letter-spacing:-.02em;line-height:1.1}.brand img{border-radius:10px}.brand-light{font-weight:500;color:var(--muted)}.brand small{display:block;font-size:.55rem;letter-spacing:.2em;font-weight:600;color:var(--muted)}
.workspace-label{font-size:.62rem;letter-spacing:.16em;font-weight:700;color:var(--muted);padding:0 8px}
.sidebar nav{display:flex;flex-direction:column;gap:4px}
.nav-item{position:relative;display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:14px;font-size:.92rem;font-weight:560;color:var(--ink-2);transition:background .2s var(--ease),transform .2s var(--ease)}
.nav-item:hover{background:color-mix(in srgb,var(--ink) 5%,transparent)}.nav-item:active{transform:scale(.97)}
.nav-item.active{background:var(--ink);color:var(--bg)}.nav-indicator{display:none}
.sidebar-bottom{margin-top:auto;display:flex;flex-direction:column;gap:10px}
.coach-note{padding:16px;border-radius:var(--r-md);background:linear-gradient(135deg,var(--lime),#e8ffb8);color:var(--lime-ink)}.coach-note .icon{width:18px;height:18px}.coach-note strong{display:block;margin:6px 0 2px;font-size:.9rem}.coach-note p{color:inherit;opacity:.8;font-size:.78rem}.coach-note button{margin-top:10px;font-size:.78rem;font-weight:700;display:inline-flex;align-items:center;gap:4px;color:inherit}
.sidebar-user{display:flex;align-items:center;gap:10px;padding:10px;border-radius:14px;font-size:.85rem}.sidebar-user:hover{background:color-mix(in srgb,var(--ink) 5%,transparent)}.sidebar-user b{display:block}.sidebar-user small{color:var(--muted)}.sidebar-user>.icon{margin-left:auto;color:var(--muted)}
.avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--swim));color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700}
.app-body{margin-left:264px;min-height:100dvh;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 32px;background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:saturate(180%) blur(18px);-webkit-backdrop-filter:saturate(180%) blur(18px)}
.mobile-brand{display:none}.breadcrumb{font-size:.85rem;color:var(--muted)}.breadcrumb span{margin:0 8px;opacity:.5}.breadcrumb b{color:var(--ink);font-weight:600}
.top-actions{display:flex;align-items:center;gap:10px}
.demo-badge{font-size:.6rem;letter-spacing:.12em;font-weight:700;color:var(--muted);padding:7px 10px;border-radius:999px;background:color-mix(in srgb,var(--ink) 6%,transparent)}
.language{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--hair);box-shadow:var(--shadow-sm)}.language select{width:auto;padding:2px 4px;border:0;background:none;font-weight:600;box-shadow:none}
main{padding:12px 32px 40px;max-width:1120px;width:100%;flex:1}
footer{display:flex;justify-content:space-between;gap:16px;padding:0 32px 32px;font-size:.72rem;color:var(--muted);max-width:1120px}
.mobile-nav{display:none}

/* ---- headings, cards, buttons ---- */
.page-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:14px 0 22px}.page-heading p{margin-top:8px;max-width:56ch}
.eyebrow{font-size:.66rem;letter-spacing:.14em;font-weight:700;color:var(--muted);margin-bottom:8px}.light-eyebrow{font-size:.64rem;letter-spacing:.14em;font-weight:700;opacity:.7}
.panel,.stat-card,.goal-card,.checkin-card,.race-card,.insight-strip,.sessions-panel{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r-lg);box-shadow:var(--shadow);animation:rise .5s var(--ease) both}
.panel{padding:22px}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 18px;border-radius:999px;font-weight:650;font-size:.9rem;transition:transform .18s var(--ease),box-shadow .18s,background .18s;white-space:nowrap}
.button:active{transform:scale(.96)}.button .icon{width:18px;height:18px}
.button.primary{background:var(--ink);color:var(--bg);box-shadow:var(--shadow-sm)}.button.primary:hover{box-shadow:var(--shadow)}
.button.secondary{background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink)}.button.secondary:hover{background:color-mix(in srgb,var(--ink) 10%,transparent)}
.button.lime{background:var(--lime);color:var(--lime-ink)}.button.full{width:100%;margin-top:14px}
.text-button{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;font-weight:650;color:var(--accent);padding:6px 0;border-radius:8px}.text-button .icon{width:16px;height:16px}.text-button.danger{color:var(--red)}
.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.section-heading span{font-size:.8rem;color:var(--muted)}
.small-tag{font-size:.66rem;letter-spacing:.06em;font-weight:700;padding:5px 9px;border-radius:999px;background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink-2);white-space:nowrap}
.lime-tag{background:var(--lime);color:var(--lime-ink)}.warn-tag{background:#fde7c7;color:#8a4b00}.dark-tag{font-size:.62rem;letter-spacing:.12em;font-weight:700;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.14);color:#fff}
.notice,.note{display:flex;gap:10px;align-items:flex-start;padding:14px 16px;border-radius:var(--r-md);background:var(--accent-soft);color:var(--ink-2);font-size:.85rem;line-height:1.5;margin-bottom:18px}.notice .icon,.note .icon{color:var(--accent);flex-shrink:0}.notice a{color:var(--accent);font-weight:600}.race-notice{background:#eefadd;color:#2f4a12}.small-note{margin:16px 0 0;font-size:.78rem}
.fineprint{font-size:.74rem;color:var(--muted);line-height:1.5;margin-top:12px}
.definition{display:flex;justify-content:space-between;gap:16px;padding:14px 0;border-top:1px solid var(--hair);font-size:.88rem}.definition:first-of-type{border-top:0}.definition span{color:var(--muted)}.definition strong{text-align:right;font-weight:600}
.card-kicker{display:flex;align-items:center;gap:6px;font-size:.64rem;letter-spacing:.14em;font-weight:700;color:var(--muted)}.card-kicker .icon{width:14px;height:14px}
.field{display:flex;flex-direction:column;gap:8px;font-size:.84rem;font-weight:600;margin-bottom:16px;color:var(--ink-2)}.field-hint{font-weight:400;color:var(--muted);font-size:.76rem}.form-note{font-size:.78rem;color:var(--muted);margin-bottom:16px;line-height:1.5}
.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.two-fields>*{min-width:0}
.segmented{display:inline-flex;gap:2px;padding:3px;border-radius:999px;background:color-mix(in srgb,var(--ink) 7%,transparent)}.segmented button{display:flex;align-items:center;gap:6px;padding:9px 14px;border-radius:999px;font-size:.84rem;font-weight:600;color:var(--muted);transition:all .2s var(--ease)}.segmented button.selected{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.segmented .icon{width:16px;height:16px}
.checkbox-label{display:flex;align-items:center;gap:10px;font-size:.88rem;font-weight:500}
details>summary{cursor:pointer;font-weight:650;font-size:.86rem;margin:8px 0 14px;color:var(--accent);list-style:none}details>summary::before{content:"▸ ";font-size:.8em}details[open]>summary::before{content:"▾ "}
.stack{display:flex;flex-direction:column;gap:20px}

/* ---- sport palette ---- */
.sport-circle{width:40px;height:40px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--surface-2);color:var(--muted)}.sport-circle .icon{width:18px;height:18px}
.sport-circle.run{background:color-mix(in srgb,var(--run) 14%,transparent);color:var(--run)}.sport-circle.bike{background:color-mix(in srgb,var(--bike) 16%,transparent);color:var(--bike)}.sport-circle.swim{background:color-mix(in srgb,var(--swim) 14%,transparent);color:var(--swim)}.sport-circle.brick{background:color-mix(in srgb,var(--brick) 14%,transparent);color:var(--brick)}.sport-circle.race{background:var(--ink);color:var(--bg)}
.sport-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;font-size:.74rem;font-weight:700;margin-bottom:10px;background:var(--surface-2);color:var(--muted)}.sport-pill .icon{width:14px;height:14px}
.sport-pill.run{background:color-mix(in srgb,var(--run) 14%,transparent);color:var(--run)}.sport-pill.bike{background:color-mix(in srgb,var(--bike) 16%,transparent);color:var(--bike)}.sport-pill.swim{background:color-mix(in srgb,var(--swim) 14%,transparent);color:var(--swim)}.sport-pill.brick{background:color-mix(in srgb,var(--brick) 14%,transparent);color:var(--brick)}.sport-pill.race{background:var(--ink);color:var(--bg)}

/* ---- overview feed ---- */
.overview-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px}.overview-main{display:flex;flex-direction:column;gap:20px;min-width:0}.overview-aside{display:flex;flex-direction:column;gap:20px;min-width:0}
.next-card{position:relative;overflow:hidden;border-radius:var(--r-xl);padding:24px 24px 0;color:#fff;background:radial-gradient(120% 90% at 100% 0%,#2a3c6a 0%,#0f1730 45%,#0b1220 100%);box-shadow:var(--shadow-float);animation:rise .5s var(--ease) both}
.next-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.next-main{display:flex;gap:16px;min-height:300px}.next-copy{flex:1;display:flex;flex-direction:column;gap:12px;padding:26px 0 24px;position:relative;z-index:1}.next-day{font-size:.82rem;font-weight:600;color:var(--lime);text-transform:capitalize}.next-copy h2{font-size:2rem;letter-spacing:-.03em;line-height:1.1}.next-copy p{color:rgba(255,255,255,.7);max-width:38ch}
.workout-facts{display:flex;gap:24px;margin:8px 0 14px}.workout-facts div{display:flex;flex-direction:column}.workout-facts strong{font-size:1.4rem;font-weight:750;letter-spacing:-.02em}.workout-facts small{font-size:.8rem;font-weight:500;opacity:.7}.workout-facts span{font-size:.72rem;color:rgba(255,255,255,.6)}
.next-card .button.lime{align-self:flex-start}
.workout-art{position:relative;width:38%;min-height:220px}.orbit{position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.14);left:50%;top:50%;transform:translate(-50%,-50%);animation:spin 40s linear infinite}.orbit-one{width:150px;height:150px}.orbit-two{width:230px;height:230px;border-style:dashed;animation-direction:reverse;animation-duration:60s}.orbit-three{width:310px;height:310px;opacity:.5}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}
.sport-emblem{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:92px;height:92px;border-radius:50%;background:var(--lime);color:var(--lime-ink);display:flex;align-items:center;justify-content:center;box-shadow:0 20px 40px -12px rgba(198,239,121,.6)}.sport-emblem .icon{width:44px;height:44px}
.art-word{position:absolute;right:0;bottom:12px;font-size:.62rem;letter-spacing:.2em;font-weight:800;text-align:right;line-height:1.6;color:rgba(255,255,255,.35)}
.next-footer{display:flex;gap:8px;align-items:center;padding:12px 0 16px;border-top:1px solid rgba(255,255,255,.1);font-size:.74rem;color:rgba(255,255,255,.55)}.next-footer .icon{width:15px;height:15px}
.next-card>h2{margin-top:22px}.next-card>p{color:rgba(255,255,255,.7);margin:8px 0 16px}.next-card>.button{margin-bottom:8px}
.stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.stat-card{padding:18px 18px 16px;display:flex;flex-direction:column;gap:6px;min-width:0}.stat-card>span{display:flex;justify-content:space-between;align-items:center;font-size:.72rem;font-weight:650;color:var(--muted);letter-spacing:.02em}.stat-card>span .icon{width:16px;height:16px;color:var(--accent)}.stat-card>strong{font-size:1.7rem;font-weight:750;letter-spacing:-.03em;line-height:1.1}.stat-card>strong em{font-style:normal;font-size:1rem;color:var(--muted);font-weight:600}.stat-card>small{font-size:.74rem;color:var(--muted)}
.goal-card{padding:20px;background:linear-gradient(160deg,var(--surface),var(--surface-2))}.goal-card h3{margin:10px 0 4px;font-size:1.15rem}.goal-card p{font-size:.82rem}.goal-card p span{opacity:.5;margin:0 4px}
.goal-count{position:relative;display:flex;align-items:center;gap:14px;margin:18px 0 12px}.goal-count strong{font-size:3rem;font-weight:800;letter-spacing:-.05em;line-height:1}.goal-count span{font-size:.8rem;color:var(--muted);line-height:1.35}.goal-flag{margin-left:auto;width:44px;height:44px;border-radius:50%;background:var(--lime);color:var(--lime-ink);display:flex;align-items:center;justify-content:center}
.checkin-card{padding:20px}.checkin-card h3{margin:10px 0 4px}.checkin-card p{font-size:.82rem}
.checkin-options{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0 8px}
.feeling{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--hair);font-size:.76rem;font-weight:600;color:var(--muted);transition:all .2s var(--ease)}.feeling span{font-size:1.3rem;line-height:1;color:var(--ink)}.feeling.selected{background:var(--ink);color:var(--bg);border-color:var(--ink);transform:translateY(-2px);box-shadow:var(--shadow)}.feeling.selected span{color:var(--lime)}.feeling:active{transform:scale(.96)}
.week-section{margin-top:26px}
.insight-strip{display:flex;align-items:center;gap:16px;padding:18px 20px;margin-top:20px}.insight-icon{width:44px;height:44px;border-radius:14px;background:var(--lime);color:var(--lime-ink);display:flex;align-items:center;justify-content:center;flex-shrink:0}.insight-strip strong{display:block;font-size:.95rem;margin-bottom:2px}.insight-strip p{font-size:.82rem}.insight-strip .text-button{margin-left:auto;white-space:nowrap}

/* ---- week grid (stories-like day cards) ---- */
.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
.day-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 8px 12px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--hair);box-shadow:var(--shadow-sm);text-align:center;transition:transform .2s var(--ease),box-shadow .2s var(--ease);min-width:0}
.day-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.day-card:active{transform:scale(.97)}
.day-top{display:flex;flex-direction:column;font-size:.68rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.day-top b{font-size:1.05rem;color:var(--ink);letter-spacing:0}
.day-icon{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--surface-2);color:var(--muted);position:relative}.day-icon .icon{width:22px;height:22px}
.day-card.run .day-icon{background:color-mix(in srgb,var(--run) 14%,transparent);color:var(--run);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--run)}.day-card.bike .day-icon{background:color-mix(in srgb,var(--bike) 16%,transparent);color:var(--bike);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--bike)}.day-card.swim .day-icon{background:color-mix(in srgb,var(--swim) 14%,transparent);color:var(--swim);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--swim)}.day-card.brick .day-icon{background:color-mix(in srgb,var(--brick) 14%,transparent);color:var(--brick);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--brick)}.day-card.race .day-icon{background:var(--ink);color:var(--lime);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--lime)}.day-card.rest .day-icon{box-shadow:0 0 0 2px var(--surface),0 0 0 3px var(--hair-2)}
.day-card.done .day-icon{background:var(--green);color:#fff;box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--green)}
.day-card>strong{font-size:.8rem;font-weight:700}.day-kind{font-size:.68rem;color:var(--muted);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.day-bottom{display:flex;flex-direction:column;gap:2px;font-size:.7rem;color:var(--muted);margin-top:auto}.day-bottom b{font-size:.8rem;color:var(--ink)}
.plan-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px;flex-wrap:wrap}.plan-summary{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--muted)}.plan-summary strong{font-size:1.1rem;color:var(--ink)}
.sessions-panel{padding:8px 22px;margin-top:22px}
.session-row{display:flex;align-items:center;gap:16px;width:100%;padding:16px 0;border-top:1px solid var(--hair);text-align:left;transition:opacity .2s}.session-row:first-child{border-top:0}.session-row:active{opacity:.7}
.session-date{display:flex;flex-direction:column;align-items:center;min-width:38px}.session-date strong{font-size:1.1rem;font-weight:750;letter-spacing:-.02em}.session-date span{font-size:.66rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.session-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.session-text strong{font-size:.95rem;font-weight:650}.session-text span{font-size:.78rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.row-duration{font-size:.85rem;font-weight:650;white-space:nowrap;color:var(--ink-2)}.session-row>.icon:last-child{color:var(--muted);width:18px}

/* ---- season plan ---- */
.season-panel{margin-top:24px}.season-list{display:flex;flex-direction:column}
.season-week{border-top:1px solid var(--hair)}.season-week:first-child{border-top:0}.season-week.current .season-row{background:var(--accent-soft)}
.season-row{display:grid;grid-template-columns:32px minmax(150px,1.2fr) minmax(0,2fr) auto 18px;align-items:center;gap:14px;width:100%;padding:12px 8px;text-align:left;border-radius:var(--r-md);transition:background .2s}.season-row:hover{background:var(--surface-2)}.season-row>.icon:last-child{transition:transform .2s var(--ease);color:var(--muted)}.season-row[aria-expanded="true"]>.icon:last-child{transform:rotate(90deg)}
.season-index{width:30px;height:30px;border-radius:50%;background:var(--surface-2);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.78rem}
.season-dates{display:flex;flex-direction:column;gap:5px;min-width:0}.season-dates strong{font-size:.86rem;font-weight:650}
.phase-pill{display:inline-block;font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:999px;background:var(--surface-2);color:var(--muted);width:fit-content}
.phase-pill.base{background:#e3edf9;color:#2b5a99}.phase-pill.build{background:#e5f4d3;color:#3d6a12}.phase-pill.peak{background:#fde7c7;color:#8a4b00}.phase-pill.taper{background:#ece6f8;color:#5a44a0}.phase-pill.race{background:var(--ink);color:var(--lime)}.phase-pill.recovery{background:var(--surface-2);color:var(--muted)}
.season-chips{display:flex;flex-wrap:wrap;gap:5px;min-width:0}
.chip{display:inline-flex;align-items:center;gap:4px;font-size:.68rem;font-weight:650;padding:4px 8px;border-radius:999px;background:var(--surface-2);color:var(--muted)}.chip .icon{width:12px;height:12px}
.chip.run{background:color-mix(in srgb,var(--run) 12%,transparent);color:var(--run)}.chip.bike{background:color-mix(in srgb,var(--bike) 14%,transparent);color:var(--bike)}.chip.swim{background:color-mix(in srgb,var(--swim) 12%,transparent);color:var(--swim)}.chip.test{outline:1.5px dashed var(--hair-2)}.chip.race{background:var(--ink);color:var(--lime)}
.week-details{padding:4px 8px 14px 48px;animation:rise .3s var(--ease)}.week-session{display:flex;align-items:center;gap:14px;padding:9px 0;border-top:1px dashed var(--hair);font-size:.86rem}

/* ---- races ---- */
.race-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin-bottom:22px}
.race-card{padding:20px;display:flex;flex-direction:column;gap:8px}.race-card.A{background:radial-gradient(120% 100% at 100% 0%,#22315a,#0b1220);color:#fff;border:0;box-shadow:var(--shadow-float)}.race-card.A p,.race-card.A .small-tag{color:rgba(255,255,255,.7)}.race-card.A .small-tag{background:rgba(255,255,255,.12)}.race-card.A .text-button{color:var(--lime)}.race-card.A .text-button.danger{color:#ff8f86}
.race-card h3{font-size:1.2rem}.race-card p{font-size:.84rem}.race-card-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.race-card-actions{display:flex;gap:18px;margin-top:6px}
.priority-badge{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:800;background:var(--surface-2)}.priority-badge.A{background:var(--lime);color:var(--lime-ink)}.priority-badge.B{background:#e5f4d3;color:#3d6a12}
.goal-details h3{margin-bottom:8px}

/* ---- data & form ---- */
.progress-stats{margin-bottom:20px}.progress-layout{display:grid;grid-template-columns:1.6fr 1fr;gap:20px}.progress-layout>*,.profile-layout>*,.stack>*{min-width:0}
.form-chart{width:100%;height:190px;display:block;margin:6px 0 18px}.form-chart path{fill:none;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}.form-chart .fitness{stroke:var(--run)}.form-chart .fatigue{stroke:var(--bike)}.form-chart .form{stroke:var(--green);stroke-width:2.6}.form-chart .zero{stroke:var(--hair-2);stroke-dasharray:4 4}
.chart-legend{display:inline-flex;gap:10px;align-items:center;font-size:.72rem;color:var(--muted)}.chart-legend i{display:inline-block;width:14px;height:3px;border-radius:2px;margin-right:4px;vertical-align:middle}.chart-legend .fitness{background:var(--run)}.chart-legend .fatigue{background:var(--bike)}.chart-legend .form{background:var(--green)}
.empty-chart{color:var(--muted);font-size:.85rem;padding:18px 0}
.bar-chart{display:flex;height:240px;gap:12px;margin-top:20px}.chart-axis{display:flex;flex-direction:column;justify-content:space-between;font-size:.66rem;color:var(--muted);padding-bottom:26px}
.chart-columns{display:flex;align-items:flex-end;justify-content:space-around;gap:10px;flex:1;border-bottom:1px solid var(--hair-2);padding:0 6px;min-width:0}
.chart-column{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;flex:1;max-width:56px;height:100%;min-width:0}.chart-column>span{font-size:.64rem;color:var(--muted);white-space:nowrap}.chart-column small{font-size:.6rem;color:var(--muted);white-space:nowrap}
.bar{width:100%;border-radius:8px 8px 3px 3px;background:color-mix(in srgb,var(--accent) 30%,var(--surface-2));transition:height .6s var(--ease)}.bar.last{background:var(--accent)}
.guard-row{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--hair);font-size:.85rem}.guard-row p{margin:0;color:var(--ink-2)}
.guard-badge{font-size:.62rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 8px;border-radius:999px;background:#fde7c7;color:#8a4b00;white-space:nowrap}.guard-row.block .guard-badge{background:#ffe1de;color:#a8231a}
.guard-ok{display:flex;gap:8px;align-items:center;color:var(--green);font-weight:600;font-size:.9rem}
.activity-list{margin-top:12px}.activity-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--hair);font-size:.86rem}
.garmin-word{font-weight:800;letter-spacing:.14em;font-size:.95rem;margin:4px 0 10px}.garmin-word span{color:var(--accent);margin-left:2px}
.connection-status{display:inline-block;font-size:.72rem;font-weight:700;padding:6px 10px;border-radius:999px;background:var(--surface-2);color:var(--muted);margin-bottom:12px}.connection-status.connected{background:#dcf5e8;color:#0f6b3f}.connection-status.error{background:#ffe1de;color:#a8231a}
.connection-status.connected::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#22a06b;margin-right:6px;box-shadow:0 0 0 3px rgba(34,160,107,.25);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 3px rgba(34,160,107,.25)}50%{box-shadow:0 0 0 6px rgba(34,160,107,.08)}}
.garmin-card p{font-size:.84rem}.wellness-strip{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:12px 0;font-size:.86rem;font-weight:600}.wellness-strip span{display:inline-flex;align-items:center;gap:6px}.wellness-strip .icon{width:16px;height:16px;color:var(--accent)}.wellness-strip small{color:var(--muted);font-weight:500}
.modal-actions.inline{justify-content:flex-start;margin-top:12px}

/* ---- nutrition ---- */
.fuel-table{display:flex;flex-direction:column}.fuel-row{display:grid;grid-template-columns:auto 1fr auto auto;gap:16px;align-items:center;padding:12px 0;border-top:1px solid var(--hair)}.fuel-row:first-child{border-top:0}
.fuel-macros{display:flex;flex-direction:column;align-items:flex-end;min-width:64px}.fuel-macros b{font-size:1rem;font-weight:700}.fuel-macros small{font-size:.66rem;color:var(--muted)}
.fuel-row.hard .session-text strong{color:#8a4b00}.fuel-row.rest .session-text strong{color:var(--muted)}

/* ---- profile, tests, zones ---- */
.profile-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px}.profile-layout+.profile-layout{margin-top:20px}
.profile-languages{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:4px 0 18px;font-size:.84rem;font-weight:600;color:var(--ink-2)}
.zones-table{margin-top:18px;font-size:.8rem;border:1px solid var(--hair);border-radius:var(--r-md);overflow:hidden;overflow-x:auto}.zones-head,.zones-row{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr 1fr;gap:6px;padding:9px 12px;min-width:420px}.zones-head{background:var(--surface-2);font-weight:700;font-size:.66rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.zones-row{border-top:1px solid var(--hair)}
.test-row{display:flex;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--hair)}.test-row .button{padding:8px 14px;font-size:.8rem}
.targets{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;font-size:.82rem;font-weight:600}.targets span{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;background:var(--surface-2)}.targets .icon{width:15px;height:15px;color:var(--accent)}
.publish-row{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.publish-row small{color:var(--muted);font-size:.74rem}

/* ---- modal (bottom sheet on mobile) ---- */
.modal-backdrop{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(10,14,24,.45);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:fade .25s var(--ease)}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal{position:relative;width:min(560px,100%);max-height:calc(100dvh - 48px);overflow:auto;padding:32px;border-radius:var(--r-xl);background:var(--surface);box-shadow:var(--shadow-float);animation:pop .35s var(--ease)}.modal.wide{width:min(860px,100%)}
@keyframes pop{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}
.modal h2{font-size:1.5rem;letter-spacing:-.03em;margin-bottom:6px}.modal-intro{font-size:.9rem;margin-bottom:18px}
.modal-close{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;background:var(--surface-2);display:flex;align-items:center;justify-content:center;color:var(--muted)}.modal-close .icon{width:18px;height:18px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px;flex-wrap:wrap}
body.modal-open{overflow:hidden}
.session-overview{display:flex;gap:10px;margin:12px 0 18px;flex-wrap:wrap}.session-overview span{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;background:var(--surface-2);font-size:.82rem;font-weight:600}.session-overview .icon{width:15px;height:15px;color:var(--accent)}
.workout-blocks{display:flex;flex-direction:column;gap:8px;margin:12px 0 18px}.workout-blocks>div{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:var(--r-md);background:var(--surface-2)}.workout-blocks span{font-size:1.3rem;font-weight:750;letter-spacing:-.02em;min-width:56px}.workout-blocks span small{font-size:.7rem;color:var(--muted);margin-left:2px;font-weight:500}.workout-blocks p{display:flex;flex-direction:column;color:var(--ink)}.workout-blocks p strong{font-size:.9rem}.workout-blocks p small{font-size:.76rem;color:var(--muted)}
.rest-message{display:flex;flex-direction:column;align-items:center;gap:12px;padding:26px;border-radius:var(--r-md);background:var(--surface-2);text-align:center;margin:12px 0 18px}.rest-message .icon{width:36px;height:36px;color:var(--muted)}
.session-reason{padding:14px 16px;border-radius:var(--r-md);border:1px solid var(--hair);margin-bottom:8px}.session-reason strong{display:block;font-size:.84rem;margin-bottom:4px}.session-reason p{font-size:.84rem}
.adapt-columns{display:grid;grid-template-columns:1.2fr 1fr;gap:26px}.availability-fields{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.availability-fields .field{margin-bottom:0;font-size:.74rem}
.energy-radios{display:flex;gap:8px;flex-wrap:wrap}.energy-radios label{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;background:var(--surface-2);border:1px solid var(--hair);font-size:.84rem;font-weight:600;cursor:pointer}.energy-radios label:has(input:checked){background:var(--ink);color:var(--bg);border-color:var(--ink)}
.adapt-preview{margin-top:18px;padding:18px;border-radius:var(--r-md);background:var(--surface-2);animation:rise .3s var(--ease)}.adapt-preview .section-heading strong{display:inline-flex;align-items:center;gap:6px;font-size:1rem}
.change-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--hair);font-size:.84rem}.change-row:first-of-type{border-top:0}.preview-foot{font-size:.76rem;color:var(--muted);margin-top:12px}
.coach-avatar{width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,var(--lime),#7ee0a8);color:var(--lime-ink);display:flex;align-items:center;justify-content:center;margin-bottom:16px}.coach-avatar .icon{width:28px;height:28px}
.coach-choices{display:grid;gap:10px;margin-top:18px}.coach-choices button{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:16px;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--hair);text-align:left;transition:transform .2s var(--ease),box-shadow .2s}.coach-choices button:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.coach-choices strong{font-size:.92rem}.coach-choices span{font-size:.8rem;color:var(--muted)}
.local-data{display:flex;flex-direction:column;gap:14px}
#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);z-index:200;padding:12px 18px;border-radius:999px;background:var(--ink);color:var(--bg);font-size:.86rem;font-weight:600;box-shadow:var(--shadow-float);opacity:0;pointer-events:none;transition:opacity .25s var(--ease),transform .25s var(--ease);max-width:calc(100vw - 32px);text-align:center}#toast.visible{opacity:1;transform:translate(-50%,0)}

/* ---- responsive ---- */
@media(max-width:1100px){.sidebar{width:200px}.app-body{margin-left:232px}main,.topbar,footer{padding-left:24px;padding-right:24px}.overview-grid{grid-template-columns:minmax(0,1fr) 280px}}
@media(max-width:1000px){
  .sidebar{display:none}.app-body{margin:0}.mobile-brand{display:block}.breadcrumb{display:none}.demo-badge{display:none}
  .topbar{padding:12px 18px}main{padding:8px 18px 120px}footer{padding:0 18px 120px;flex-direction:column;gap:4px}
  .mobile-nav{display:flex;position:fixed;left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));z-index:40;padding:6px;border-radius:999px;background:var(--glass-strong);backdrop-filter:saturate(180%) blur(22px);-webkit-backdrop-filter:saturate(180%) blur(22px);border:1px solid var(--hair);box-shadow:var(--shadow-float);justify-content:space-around}
  .mobile-nav .nav-item{flex:1;flex-direction:column;gap:3px;padding:8px 4px;font-size:.58rem;font-weight:650;color:var(--muted);border-radius:999px;text-align:center}.mobile-nav .nav-item>.icon{width:22px;height:22px}.mobile-nav .nav-item.active{background:var(--ink);color:var(--bg)}
  .overview-grid{grid-template-columns:1fr}.overview-aside{display:grid;grid-template-columns:1fr 1fr}
  .page-heading{flex-direction:column;align-items:flex-start;margin:8px 0 18px}.page-heading>.button{align-self:stretch}
  .profile-layout,.progress-layout,.adapt-columns{grid-template-columns:1fr}.race-layout{grid-template-columns:1fr}
  .season-row{grid-template-columns:28px 1fr auto 18px}.season-chips{display:none}.week-details{padding-left:8px}
  .week-grid{display:flex;gap:10px;overflow-x:auto;padding:4px 4px 12px;margin:0 -4px;scroll-snap-type:x mandatory;scrollbar-width:none}.week-grid::-webkit-scrollbar{display:none}.day-card{flex:0 0 108px;scroll-snap-align:start}
  .next-copy h2{font-size:1.6rem}.workout-art{display:none}.next-main{min-height:0}
  #toast{bottom:88px}
}
@media(max-width:640px){
  .overview-aside{grid-template-columns:1fr}.stat-grid{grid-template-columns:1fr 1fr 1fr;gap:8px}.stat-card{padding:14px 12px}.stat-card>strong{font-size:1.3rem}.stat-card>span{font-size:.62rem}.stat-card>span .icon{display:none}.stat-card>small{font-size:.66rem}
  .availability-fields{grid-template-columns:repeat(2,1fr)}.modal-backdrop{align-items:flex-end;padding:0}.modal{width:100%;max-height:92dvh;border-radius:var(--r-xl) var(--r-xl) 0 0;padding:26px 20px calc(24px + env(safe-area-inset-bottom));animation:sheet .4s var(--ease)}
  @keyframes sheet{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}
  .fuel-row{grid-template-columns:auto 1fr auto;gap:10px}.fuel-row .fuel-macros:last-child{display:none}.race-grid{grid-template-columns:1fr}
  .chart-column{max-width:none}.chart-columns{gap:4px;padding:0 2px;overflow:hidden}.chart-column small{font-size:.5rem}.chart-column>span{font-size:.55rem}
  .workout-facts{gap:16px}.workout-facts strong{font-size:1.2rem}.insight-strip{flex-wrap:wrap}.insight-strip .text-button{margin-left:56px}
  h1{font-size:1.7rem}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
.goal-ring{margin-left:auto;position:relative;width:72px;height:72px}.goal-ring svg{width:72px;height:72px;transform:rotate(-90deg)}.goal-ring circle{fill:none;stroke-width:7;stroke-linecap:round}.goal-ring .track{stroke:var(--hair)}.goal-ring .value{stroke:var(--lime);transition:stroke-dashoffset 1s var(--ease)}.goal-ring b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:750}
.chart-legend{flex-wrap:wrap}.section-heading{flex-wrap:wrap}
.modal-close{position:sticky;top:0;margin:-8px -8px 0 auto;z-index:2}
.account-panel code{display:block;margin-top:8px;padding:10px;border-radius:10px;background:var(--surface-2);font-size:.72rem;word-break:break-all;user-select:all}
