:root{--bg: #f5f4ef;--card: #ffffff;--soft: #eceae3;--line: #e4e2db;--line-soft: #f0eee8;--field: #dddad2;--muted: #5d5f63;--body: #4a4c50;--ink: #1b1c1e;--on-ink: #ffffff;--sidebar: #eeece6;--sidebar-card: #f7f6f2;--sport-run: #e35f1b;--sport-ride: #2f6bd8;--sport-swim: #0e8aa8;--sport-yoga: #c94c7a;--sport-strength: #9a6b3a;--sport-hike: #1f6b4a;--sport-walk: #1f6b4a;--sport-other: #7a7d83;--tile-ink: #ffffff;--zone-1: #6a98aa;--zone-2: #4a8299;--zone-3: #2b6680;--zone-4: #1a4c62;--zone-5: #0c2f40;--heat-0: #eceae3;--heat-1: #a3a5ab;--heat-2: #8e9096;--heat-3: #4a4c50;--heat-4: #1b1c1e;--green: #1e8e5a;--amber: #a87200;--red: #c8412e;--amber-bg: #fbefd3;--amber-ink: #8a5a00;--brand: #e35f1b;--brand-text: #c24f12;--radius: 16px;--font: "Instrument Sans", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #141517;--card: #1f2023;--soft: #2a2c30;--line: #33353a;--line-soft: #2a2c30;--field: #3a3c41;--muted: #a6a8ad;--body: #c9cacd;--ink: #ededef;--on-ink: #141517;--sidebar: #1a1b1e;--sidebar-card: #1f2023;--sport-run: #f07a3a;--sport-ride: #6e98ea;--sport-swim: #4cc0db;--sport-yoga: #e07aa0;--sport-strength: #c49a68;--sport-hike: #5fb48a;--sport-walk: #5fb48a;--sport-other: #9da0a6;--tile-ink: #141517;--heat-0: #2a2c30;--heat-1: #55575c;--heat-2: #7a7d83;--heat-3: #b9bbc0;--heat-4: #ededef;--green: #55b583;--amber: #e8b64a;--red: #f07264;--amber-bg: #3a2e12;--amber-ink: #e8b64a;--brand: #f07a3a;--brand-text: #f07a3a;color-scheme:dark}}:root[data-theme=dark]{--bg: #141517;--card: #1f2023;--soft: #2a2c30;--line: #33353a;--line-soft: #2a2c30;--field: #3a3c41;--muted: #a6a8ad;--body: #c9cacd;--ink: #ededef;--on-ink: #141517;--sidebar: #1a1b1e;--sidebar-card: #1f2023;--sport-run: #f07a3a;--sport-ride: #6e98ea;--sport-swim: #4cc0db;--sport-yoga: #e07aa0;--sport-strength: #c49a68;--sport-hike: #5fb48a;--sport-walk: #5fb48a;--sport-other: #9da0a6;--tile-ink: #141517;--heat-0: #2a2c30;--heat-1: #55575c;--heat-2: #7a7d83;--heat-3: #b9bbc0;--heat-4: #ededef;--green: #55b583;--amber: #e8b64a;--red: #f07264;--amber-bg: #3a2e12;--amber-ink: #e8b64a;--brand: #f07a3a;--brand-text: #f07a3a;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-variant-numeric:tabular-nums}a{color:var(--ink)}button{font:inherit;color:inherit}.shell{display:flex;min-height:100vh}.main{flex:1;min-width:0;padding:32px 40px 56px;max-width:1440px;display:flex;flex-direction:column;gap:20px}.sidebar{width:232px;flex:0 0 232px;position:sticky;top:0;height:100vh}.tabbar{display:none}@media(max-width:899px){.sidebar{display:none!important}.main{padding:20px 16px 110px;gap:12px}.tabbar{display:grid}}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:12px;min-width:0}.label{font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.page-kicker{font-size:14px;color:var(--muted)}.page-title{margin:0;font-size:34px;font-weight:700;letter-spacing:-.02em}@media(max-width:899px){.page-title{font-size:26px}}.muted{color:var(--muted)}.btn{height:44px;padding:0 16px;border-radius:10px;border:1px solid var(--field);background:var(--card);font-weight:600;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.btn-primary{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}.btn:disabled{opacity:.45;cursor:not-allowed}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.source-chip{font:500 11px var(--mono);padding:3px 8px;border-radius:6px;border:1px solid var(--line);color:var(--body);white-space:nowrap}.weather-mark{display:inline-flex;align-items:center;gap:2px;margin-left:6px;color:var(--muted);font-size:12px;font-weight:500;vertical-align:-2px;white-space:nowrap;font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.page-loading{display:flex;flex-direction:column;gap:20px;animation:page-loading-in .2s ease .25s both}.page-loading-bar{width:min(320px,70%);height:34px;border-radius:8px;background:var(--soft)}.page-loading-card{height:240px;border-radius:var(--radius);background:var(--card);border:1px solid var(--line)}@keyframes page-loading-in{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.page-loading{animation:none}}
