@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{color-scheme:light}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);border-radius:7px;background:transparent;color:var(--ink);padding:8px 11px;font-size:11px;font-weight:600;white-space:nowrap}.theme-toggle>span:first-child{font-size:18px;line-height:1}.theme-toggle:hover{background:var(--line)}.topbar .quiet{margin-left:0}@media(max-width:520px){.theme-label{display:none}.theme-toggle{padding:6px 8px;min-width:32px;min-height:32px}}
:root{--ink:#243f34;--green:#244b3c;--muted:#79847b;--line:#e3e7dd;--paper:#f5f6f0;--lime:#d9ef9f;--orange:#fc4c02}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px 'DM Sans',system-ui,sans-serif}button,input{font:inherit}button,a,input{outline-offset:5px}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button{border:0}a{color:inherit}h1,h2,h3,p{margin:0}h1,h2,h3,.brand{font-family:Manrope,system-ui,sans-serif}h2{font-size:18px;font-weight:700;letter-spacing:-.4px}p{line-height:1.7}small{font-size:12px}[hidden]{display:none!important}.skip{position:fixed;top:-80px;z-index:99;background:white;padding:14px}.skip:focus{top:10px}.sidebar{position:fixed;top:0;bottom:0;left:0;width:238px;padding:37px 22px 20px;background:#fcfcf8;border-right:1px solid var(--line);display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:0;font-size:21px;font-weight:800;text-decoration:none;letter-spacing:-1px}.brand>span:last-child{font-weight:500}.brand-icon{display:grid;place-items:center;background:var(--green);color:var(--lime);border-radius:11px;width:35px;height:35px;font-size:29px;margin-right:9px}.side-section{font-size:10px;letter-spacing:1.8px;color:#969d93;margin:53px 12px 16px}.nav{display:flex;align-items:center;width:100%;text-align:left;padding:15px 14px;margin-bottom:6px;background:none;color:#707c71;border-radius:9px;font-weight:500;gap:14px}.nav>span:first-child{font-size:21px;width:20px}.nav.active{background:#e8eedf;color:var(--green);font-weight:700}.count{margin-left:auto;background:#dbe4ce;border-radius:5px;padding:2px 6px;font-size:11px}.sidebar-bottom{margin-top:auto}.ride-note{background:#f0f2e8;border:1px solid #e6e9db;border-radius:12px;padding:19px;margin-bottom:26px}.mountain{font-size:40px;line-height:1;display:block;color:#7b8f61;margin-bottom:14px}.ride-note strong{font-size:13px}.ride-note p{font-size:11px;color:#88917d;margin-top:4px}.account{display:flex;align-items:center;gap:9px;background:none;text-align:left;width:100%;color:var(--ink)}.avatar{display:grid;place-items:center;width:35px;height:35px;background:#dce3ce;border-radius:50%;font-size:11px;flex:none}.account strong{display:block;font-size:11px;max-width:135px;overflow:hidden;text-overflow:ellipsis}.account small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.account>span:last-child{margin-left:auto}.workspace{margin-left:238px}.topbar{height:78px;border-bottom:1px solid var(--line);padding:0 42px;display:flex;align-items:center;justify-content:space-between;background:#fcfcf8;color:#727e73;font-size:12px}.topbar>div{display:flex;align-items:center;gap:10px}.status-dot{height:6px;width:6px;border-radius:50%;background:#8fab68}.quiet{background:#edf1e5;padding:9px 15px;border-radius:7px;color:var(--green);margin-left:12px;font-weight:600}main{max-width:1450px;margin:auto;padding:42px}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}.eyebrow{font-size:10px;letter-spacing:2.2px;font-weight:700;color:#798b64;margin-bottom:12px}h1{font-size:36px;letter-spacing:-1.7px;font-weight:700;line-height:1.25}h1 span{color:#92b66e}.page-head p{color:var(--muted);margin-top:10px;font-size:13px}.primary{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:13px 20px;background:var(--green);color:white;border-radius:8px;font-weight:600;font-size:12px;min-height:43px}.primary:hover{background:#35644e}.primary>span{font-size:22px;line-height:1}.secondary{padding:11px 15px;min-height:40px;border:1px solid #d4ddcd;border-radius:7px;background:#fcfcf8;color:var(--green);font-size:12px;font-weight:600}.text-button{background:none;color:var(--green);font-size:12px;font-weight:600;padding:5px}.demo-banner{display:flex;justify-content:space-between;gap:15px;background:#edf0df;padding:12px 16px;border-radius:8px;color:#67774e;font-size:11px;margin-bottom:26px}.demo-banner button{background:none;font-weight:700;color:var(--green);white-space:nowrap;font-size:11px}.notice{padding:13px 17px;margin-bottom:20px;border-radius:8px;background:#e7eedf;color:var(--green);line-height:1.5}.notice.error{background:#ffede5;color:#9b3c1b}.section-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-label h2{font-size:14px}.section-label>span{font-size:11px;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:25px}.stat{position:relative;background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;overflow:hidden;min-height:164px}.stat>div:first-child{display:flex;justify-content:space-between;align-items:center}.stat>div>span:first-child{font-size:9px;letter-spacing:1.2px;color:#7b8879;font-weight:600}.stat-icon{font-size:18px;color:#7c9268;background:#f1f4e9;border-radius:7px;width:29px;height:29px;display:grid;place-items:center}.stat h3{font-size:32px;font-weight:600;letter-spacing:-1px;margin-top:13px}.stat h3 small{font-size:14px;font-weight:400;color:#8b9384;letter-spacing:0}.stat p{font-size:10px;color:#829172;margin-top:9px}.mini-line{position:absolute;bottom:-1px;right:0;left:0;height:23px;opacity:.45;background:#eef3e5;clip-path:polygon(0 75%,10% 58%,20% 72%,30% 33%,40% 45%,50% 12%,60% 55%,70% 25%,80% 40%,90% 5%,100% 25%,100% 100%,0 100%)}.elevation-line{clip-path:polygon(0 70%,15% 78%,30% 40%,42% 65%,55% 7%,66% 54%,80% 15%,90% 45%,100% 10%,100% 100%,0 100%)}.chart-grid{display:grid;grid-template-columns:minmax(0,2.3fr) minmax(250px,1fr);gap:23px;margin-bottom:25px}.card{background:white;border:1px solid var(--line);border-radius:13px;overflow:hidden}.card-head{padding:25px 25px 19px;display:flex;align-items:center;justify-content:space-between;gap:12px}.card-head p{font-size:11px;color:var(--muted);margin-top:5px}.pill{background:#f3f5ed;color:#7f8c70;display:inline-block;padding:7px 10px;border-radius:6px;font-size:10px;white-space:nowrap}.chart{padding:6px 22px 4px;min-height:228px}.chart svg{width:100%;display:block;max-height:240px}.chart text{font:11px 'DM Sans',sans-serif;fill:#9aa18f}.chart line{stroke:#edf0e6;stroke-dasharray:4 4}.chart .bar{fill:#d6e2be}.chart .bar.current{fill:var(--green)}.chart-footer{display:flex;justify-content:space-between;padding:18px 25px;border-top:1px solid #f0f2e9;color:#94a087;font-size:9px}.chart-footer i{display:inline-block;width:6px;height:6px;background:#a3bb80;border-radius:50%;margin-right:6px}.goal-card{text-align:center;background:#fafbf6}.goal-card .card-head{text-align:left;padding-bottom:0}.goal-ring{height:162px;width:162px;position:relative;margin:17px auto 5px}.goal-ring svg{width:100%;transform:rotate(-90deg)}.goal-ring circle{fill:none;stroke-width:10;stroke:#e7eddd}.goal-ring #ring-progress{stroke:#769752;stroke-linecap:round;stroke-dasharray:408.4;stroke-dashoffset:408.4;transition:stroke-dashoffset .7s}.goal-ring>div{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center}.goal-ring strong{font:600 32px Manrope,sans-serif;letter-spacing:-1px}.goal-ring span{font-size:10px;color:#949e88;margin-top:5px}.goal-distance{font-size:12px}.goal-distance strong{font-size:16px}.goal-distance span{color:#909b83}.goal-card>p{font-size:10px;margin-top:9px;color:#7e9169}.goal-rule{height:1px;background:#e8eddf;margin:18px 25px 12px}.goal-card>small{display:block;color:#98a18e;font-size:9px;margin-bottom:22px}.recent{margin-bottom:24px}.ride-table{width:100%;border-collapse:collapse;font-size:12px}.ride-table th{font-weight:500;color:#99a18f;font-size:10px;text-align:left;background:#fbfcf7;padding:11px 25px;border-top:1px solid #edf0e5;border-bottom:1px solid #edf0e5}.ride-table td{padding:16px 25px;border-bottom:1px solid #f0f2e9}.ride-table tr:last-child td{border-bottom:0}.ride-name{display:flex;align-items:center;gap:12px}.ride-symbol{width:34px;height:34px;background:#edf2e4;color:#789456;border-radius:8px;display:grid;place-items:center;font-size:21px}.ride-name strong{display:block;font-size:12px;font-weight:600}.ride-name small{display:block;color:#9aa18e;font-size:10px;margin-top:4px}.ride-row-button{background:none;color:var(--ink);text-align:left;display:block;max-width:240px}.ride-table .source{font-size:9px;color:#89957b}.ride-table .strava{color:var(--orange)}.bottom-grid{display:grid;grid-template-columns:2.3fr 1fr;gap:23px}.connect-strip{display:flex;align-items:center;gap:17px;background:#eff2e6;border:1px solid #e0e6d3;padding:22px;border-radius:12px}.strava-mark{width:39px;height:42px;background:#fff3ed;color:var(--orange);border:1px solid #fee4d7;border-radius:9px;display:grid;place-items:center;font-weight:800;font-size:22px;flex:none}.connect-strip h3{font-size:13px;letter-spacing:-.2px}.connect-strip p{font-size:10px;color:#8b967c;margin-top:4px}.connect-strip .secondary{margin-left:auto;white-space:nowrap;font-size:10px}.privacy-note{display:flex;align-items:center;gap:14px;padding:15px}.privacy-note>span{font-size:28px;color:#93a87d}.privacy-note strong{font-size:11px}.privacy-note p{font-size:10px;color:#9aa38e;margin-top:5px}footer{display:flex;justify-content:space-between;margin-top:40px;font-size:9px;letter-spacing:1.5px;color:#a1aa95}footer span{letter-spacing:0}.search{border:1px solid var(--line);padding:10px 12px;border-radius:7px;width:210px;font-size:12px}.empty-state{text-align:center;padding:48px 20px;color:#859174}.empty-state h3{color:var(--green);margin-bottom:8px;font-size:18px}.empty-state p{font-size:12px;margin-bottom:18px}.connection-card{display:flex;gap:25px;padding:35px;margin-bottom:24px}.connection-card p{color:var(--muted);max-width:620px;font-size:13px;margin:14px 0}.connection-card .muted{font-size:11px}.connection-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}.strava-button{background:var(--orange);color:white;padding:13px 20px;border-radius:7px;font-weight:700;font-size:12px}.upload-info{padding:30px}.upload-info p{color:var(--muted);font-size:13px;max-width:650px;margin:13px 0 20px}.upload-info a{margin-left:20px;font-size:12px}.load-more{display:block;margin:20px auto}dialog{border:1px solid var(--line);border-radius:18px;padding:35px;max-width:510px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 20px 100px #16332633}dialog::backdrop{background:#19362966;backdrop-filter:blur(4px)}dialog h2{font-size:27px;letter-spacing:-1px;padding-right:20px}dialog>p{color:var(--muted);font-size:12px;margin:12px 0 22px}.close{position:absolute;right:17px;top:14px;background:none;font-size:25px;color:#87917e}label{display:block;color:#6d7e62;font-size:11px;font-weight:600;margin:18px 0}input{display:block;border:1px solid #dce3d5;background:#fafbf7;border-radius:7px;padding:12px;width:100%;color:var(--ink);margin-top:7px}input:focus{outline:2px solid #9cb47d}.full{width:100%}.auth-links{display:flex;justify-content:space-between;margin-top:22px}.dropzone{background:#f3f6eb;border:1px dashed #bccb9d;text-align:center;padding:22px;border-radius:12px;cursor:pointer}.dropzone strong{font-size:14px;display:block}.dropzone span{display:block;color:#8e9a7b;margin-top:8px;font-size:10px}.dropzone input{font-size:10px;padding:7px}.divider{text-align:center;font-size:9px;letter-spacing:2px;color:#a0a98f;margin:20px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.form-grid label{font-size:10px}.form-grid input{padding:10px;font-size:12px}.detail-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:25px 0}.detail-stats strong{display:block;font-size:22px}.detail-stats small{color:var(--muted);font-size:10px}#auth-message,#ride-message,#file-message,#goal-error{font-size:12px;line-height:1.6;color:#7c482b;margin-top:12px}.scroll-table{overflow-x:auto}.badge{font-size:10px;background:#f0f3e8;padding:4px 8px;border-radius:5px}
@media(min-width:1450px){main{padding:45px 55px}.stat{min-height:180px}.stat h3{font-size:38px}.chart{min-height:255px}.goal-ring{margin-top:28px}}@media(max-width:1100px){.sidebar{width:200px;padding:32px 15px}.workspace{margin-left:200px}main{padding:30px}.topbar{padding:0 30px}h1{font-size:30px}.stats{gap:10px}.stat{padding:15px}.stat h3{font-size:27px}.chart-grid,.bottom-grid{grid-template-columns:1.8fr 1fr}.card-head{padding:20px}.ride-table td,.ride-table th{padding-left:18px;padding-right:18px}.connect-strip{flex-wrap:wrap}.connect-strip .secondary{margin-left:56px}}@media(max-width:800px){.sidebar{width:76px;padding:25px 10px}.brand{font-size:0;justify-content:center}.brand-icon{margin:0;font-size:28px}.side-section,.ride-note,.nav>.count,.sidebar-bottom{display:none}.nav{font-size:0;justify-content:center;padding:14px 5px}.nav>span:first-child{font-size:24px}.sidebar nav{margin-top:40px}.workspace{margin-left:76px}.topbar{padding:0 22px;height:64px}.stats{grid-template-columns:repeat(2,1fr)}.chart-grid{grid-template-columns:1fr}.goal-card{display:block}.bottom-grid{grid-template-columns:1fr}.privacy-note{padding:8px}.page-head{align-items:flex-start;gap:15px}h1{font-size:28px}.page-head .primary{padding:12px;white-space:nowrap}.topbar>span{display:none}.topbar>div{margin-left:auto}.chart svg{max-height:none}}@media(max-width:520px){.sidebar{position:static;width:100%;height:auto;flex-direction:row;align-items:center;border-right:0;border-bottom:1px solid var(--line);padding:14px 18px;justify-content:space-between}.brand{font-size:18px}.brand-icon{width:29px;height:29px;font-size:25px;margin-right:7px}.sidebar nav{margin:0;display:flex;gap:5px}.nav{width:36px;height:36px;padding:4px;margin:0}.nav>span:first-child{font-size:21px}.workspace{margin-left:0}.topbar{height:45px;padding:0 18px;background:var(--paper)}.topbar>div{font-size:10px}.quiet{padding:6px 12px;font-size:10px}main{padding:25px 18px}.page-head{flex-wrap:wrap;margin-bottom:20px}.page-head h1{font-size:29px}.page-head p{font-size:11px}.page-head .primary{font-size:11px;padding:9px 15px;min-height:36px}.eyebrow{font-size:8px}.demo-banner{font-size:10px;align-items:center}.demo-banner button{font-size:10px}.stat{min-height:145px}.stat h3{font-size:29px}.stat>div>span:first-child{font-size:8px}.stat p{font-size:9px}.card-head{padding:20px 16px}.card-head h2{font-size:16px}.chart{padding:0 10px}.chart-footer{padding:14px;font-size:8px}.chart-footer>span:last-child{display:none}.ride-table th,.ride-table td{padding:13px 15px}.ride-table th:nth-child(4),.ride-table td:nth-child(4),.ride-table th:nth-child(5),.ride-table td:nth-child(5){display:none}.ride-name{gap:8px}.ride-symbol{width:28px;height:28px;font-size:18px}.ride-name strong{font-size:11px}.ride-row-button{max-width:155px}.connect-strip{padding:18px;gap:12px}.connect-strip h3{font-size:12px}.connect-strip p{font-size:9px}.connect-strip .secondary{margin-left:50px}.connection-card{padding:22px;gap:15px}.connection-card h2{font-size:21px}.connection-card p{font-size:12px}.card-head .search{width:140px}.form-grid{gap:8px}.form-grid label{font-size:9px}dialog{padding:28px 23px}.detail-stats strong{font-size:20px}footer{font-size:8px}}

.range-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:22px}.range-tabs{display:flex;flex-wrap:wrap;gap:5px;padding:5px;border:1px solid var(--line);border-radius:10px;background:#eef1e7}.range-tabs button{padding:10px 14px;border-radius:7px;background:transparent;color:#77846e;font-size:11px;font-weight:600;white-space:nowrap}.range-tabs button[aria-pressed=true]{background:var(--green);color:white;box-shadow:0 2px 5px #244b3c12}.range-toolbar>span{font-size:11px;color:var(--muted);white-space:nowrap}#range-detail{font-size:10px;color:var(--muted)}@media(max-width:1100px){.range-toolbar{align-items:flex-start;flex-direction:column;gap:10px}.range-tabs button{padding:9px 11px}}@media(max-width:520px){.range-tabs{width:100%;gap:3px}.range-tabs button{padding:9px;font-size:10px;flex:1}.range-toolbar>span{font-size:10px}.section-label{gap:12px}#range-detail{text-align:right;font-size:9px}}

#detail-dialog{max-width:1100px;width:calc(100% - 40px);max-height:94vh;padding:34px;overflow-y:auto}#detail-dialog .close{position:sticky;float:right;top:0;z-index:1001;background:#fff;border-radius:50%;width:32px;height:32px;line-height:24px}.ride-detail-title{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.ride-detail-title h2{font-size:28px;max-width:65%}.ride-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.ride-metric{padding:18px;background:#f5f7ef;border:1px solid #e7ecdd;border-radius:9px}.ride-metric>span{display:block;color:#839071;font-size:10px;text-transform:uppercase;letter-spacing:1px}.ride-metric strong{display:block;font:600 26px Manrope,system-ui,sans-serif;margin-top:9px;letter-spacing:-.8px}.ride-metric small{font-size:12px;font-weight:400;color:#87947b}.ride-metric p{font-size:10px;margin-top:6px;color:#92a081}.ride-sensor-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:25px}.ride-sensor-summary .ride-metric{background:white}.ride-sensor-summary .ride-metric strong{font-size:21px}.ride-recordings{display:grid;grid-template-columns:1fr 1fr;gap:20px}.recording-card{border:1px solid var(--line);border-radius:11px;overflow:hidden;background:white}.recording-card.wide{grid-column:1/-1}.recording-heading{padding:20px 22px 10px}.recording-heading h3{font-size:15px}.recording-heading p{font-size:11px;color:var(--muted);margin-top:4px}.route-map{height:340px;background:#eef2e5;margin:8px 20px 0;border-radius:8px}.route-map-footer{display:flex;justify-content:space-between;padding:14px 22px;font-size:10px;color:#879570}.route-map-footer i{display:inline-block;width:7px;height:7px;background:#88ab5c;border-radius:50%}.route-map-footer b{color:#dd7653;font-weight:400}.leaflet-container{font:11px system-ui,sans-serif}.leaflet-control-attribution{font-size:9px!important}.sensor-chart{padding:10px 12px 17px}.sensor-chart svg{display:block;width:100%}.sensor-chart text{font:10px system-ui,sans-serif;fill:#98a08b}.grid-line{stroke:#e8eee0;stroke-dasharray:4 4}.sensor-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.sensor-line.heart{stroke:#c77571}.sensor-line.power{stroke:#ac9456}.sensor-line.speed{stroke:#6b8e9c}.sensor-line.elevation{stroke:#84975e}.sensor-line.distance{stroke:#244b3c}.chart-crosshair{stroke:#bac6a8;stroke-width:1;stroke-dasharray:3 3}.sensor-chart output{display:block;min-height:30px;text-align:center;color:#80906f;font-size:10px;margin-top:10px}.no-recording{min-height:170px;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#fafbf7;color:#98a18d;padding:25px;text-align:center;margin:10px 20px 20px;border-radius:8px}.no-recording>span{font-size:32px;font-weight:300}.no-recording p{font-size:11px;margin-top:8px}.time-bars{padding:15px 24px}.time-bars>div{display:grid;grid-template-columns:65px minmax(0,1fr) 60px;align-items:center;gap:14px;margin:14px 0;color:#89957b;font-size:11px}.time-bars strong{font-size:12px;text-align:right;color:var(--green)}.time-bar{height:14px;border-radius:4px}.elapsed-bar{background:#d9e3c9;width:100%}.moving-bar{background:#244b3c}.stopped-bar{background:#ddb392}.motion-chart{padding:0 24px 20px}.motion-chart svg{width:100%;display:block;background:#f6f7f1;border-radius:6px}.motion-moving{fill:#50784e}.motion-stopped{fill:#ddb392}.motion-chart>span{display:block;color:#68865a;font-size:10px;margin-top:6px}.motion-chart b{color:#ddb392;font-weight:400}.detail-footnote{font-size:10px;color:#8b9781;margin:20px 0}.detail-error{padding:14px;background:#fff0e7;border-radius:8px;color:#9d643f;font-size:12px;margin-bottom:20px}#delete-ride{margin-top:14px;width:auto;display:block;margin-left:auto;color:#a1654a}@media(max-width:700px){#detail-dialog{width:calc(100% - 16px);padding:22px;max-height:96vh}.ride-detail-title{display:block}.ride-detail-title h2{max-width:none;font-size:24px}.ride-detail-title .pill{margin-top:10px;white-space:normal}.ride-summary-grid{grid-template-columns:repeat(2,1fr)}.ride-sensor-summary{grid-template-columns:repeat(3,1fr);gap:6px}.ride-sensor-summary .ride-metric{padding:12px 9px}.ride-metric{padding:15px}.ride-metric strong{font-size:24px}.ride-metric>span{font-size:9px}.ride-sensor-summary .ride-metric strong{font-size:17px}.ride-recordings{grid-template-columns:1fr}.recording-card.wide{grid-column:auto}.recording-heading{padding:17px 16px 9px}.route-map{height:280px;margin:6px 12px 0}.route-map-footer{padding:12px;font-size:9px}.route-map-footer>span:last-child{display:none}.sensor-chart{padding:6px}.time-bars{padding:9px 16px}.time-bars>div{grid-template-columns:50px minmax(0,1fr) 53px;gap:8px}.no-recording{min-height:130px;margin:8px 12px 16px}.motion-chart{padding:0 16px 16px}}

/* Dark palette covers dashboard, forms, ride recordings, and map controls. */
:root[data-theme=dark]{color-scheme:dark;--ink:#e4ebe3;--green:#355f4a;--muted:#aab7a6;--line:#344236;--paper:#121814;--lime:#d9ef9f}
[data-theme=dark] .sidebar,[data-theme=dark] .topbar{background:#161e18}
[data-theme=dark] .stat,[data-theme=dark] .card,[data-theme=dark] .recording-card,[data-theme=dark] dialog,[data-theme=dark] .ride-sensor-summary .ride-metric,[data-theme=dark] #detail-dialog .close{background:#1b241d}
[data-theme=dark] .nav.active,[data-theme=dark] .quiet,[data-theme=dark] .range-tabs,[data-theme=dark] .ride-note,[data-theme=dark] .ride-metric,[data-theme=dark] .connect-strip,[data-theme=dark] .demo-banner,[data-theme=dark] .notice,[data-theme=dark] .badge,[data-theme=dark] .pill,[data-theme=dark] .stat-icon,[data-theme=dark] .ride-symbol,[data-theme=dark] .avatar,[data-theme=dark] .count{background:#29392b;color:#c3d7b2;border-color:var(--line)}
[data-theme=dark] .goal-card,[data-theme=dark] .ride-table th,[data-theme=dark] input,[data-theme=dark] .dropzone,[data-theme=dark] .no-recording,[data-theme=dark] .motion-chart svg{background:#202c23;border-color:var(--line)}
[data-theme=dark] .primary,[data-theme=dark] .range-tabs button[aria-pressed=true]{background:#c8e79a;color:#20321e}
[data-theme=dark] .primary:hover{background:#d9efb9}
[data-theme=dark] .secondary{background:#202c23;color:#d3e5bf;border-color:#465742}
[data-theme=dark] .text-button,[data-theme=dark] .demo-banner button,[data-theme=dark] .empty-state h3,[data-theme=dark] .time-bars strong{color:#c8e79a}
[data-theme=dark] .nav,[data-theme=dark] .topbar,[data-theme=dark] .range-tabs button,[data-theme=dark] label,[data-theme=dark] .stat>div>span:first-child,[data-theme=dark] .stat h3 small,[data-theme=dark] .stat p,[data-theme=dark] .ride-metric>span,[data-theme=dark] .ride-metric small,[data-theme=dark] .ride-metric p,[data-theme=dark] .sensor-chart output,[data-theme=dark] .time-bars>div,[data-theme=dark] .detail-footnote,[data-theme=dark] .route-map-footer,[data-theme=dark] .close,[data-theme=dark] .ride-table th,[data-theme=dark] .ride-name small,[data-theme=dark] .ride-table .source,[data-theme=dark] .goal-ring span,[data-theme=dark] .goal-distance span,[data-theme=dark] .goal-card>p,[data-theme=dark] .goal-card>small,[data-theme=dark] .chart-footer,[data-theme=dark] .connect-strip p,[data-theme=dark] .privacy-note p,[data-theme=dark] footer,[data-theme=dark] .side-section,[data-theme=dark] .ride-note p,[data-theme=dark] .eyebrow,[data-theme=dark] .empty-state,[data-theme=dark] .dropzone span,[data-theme=dark] .divider,[data-theme=dark] .no-recording,[data-theme=dark] .motion-chart>span{color:#aab7a6}
[data-theme=dark] .ride-table .strava{color:#ff8755}
[data-theme=dark] .chart-footer,[data-theme=dark] .ride-table td,[data-theme=dark] .ride-table th{border-color:var(--line)}
[data-theme=dark] .goal-rule,[data-theme=dark] .mini-line{background:#344b31}
[data-theme=dark] .chart text,[data-theme=dark] .sensor-chart text{fill:#aab7a6}
[data-theme=dark] .chart line,[data-theme=dark] .grid-line{stroke:#39493c}
[data-theme=dark] .chart .bar{fill:#59794b}[data-theme=dark] .chart .bar.current{fill:#c8e79a}
[data-theme=dark] .goal-ring circle{stroke:#344536}[data-theme=dark] .goal-ring #ring-progress{stroke:#b6d889}
[data-theme=dark] .sensor-line.heart{stroke:#f19b96}[data-theme=dark] .sensor-line.power{stroke:#dec276}[data-theme=dark] .sensor-line.speed{stroke:#8fc7da}[data-theme=dark] .sensor-line.elevation{stroke:#b6d889}[data-theme=dark] .sensor-line.distance{stroke:#c8e79a}
[data-theme=dark] .elapsed-bar{background:#526a49}[data-theme=dark] .moving-bar,[data-theme=dark] .motion-moving{background:#b6d889;fill:#b6d889}
[data-theme=dark] .route-map{background:#29392b}[data-theme=dark] .leaflet-bar a,[data-theme=dark] .leaflet-control-attribution{background:#202c23;color:#e4ebe3}[data-theme=dark] .leaflet-control-attribution a{color:#c8e79a}
[data-theme=dark] .strava-mark{background:#39271e;border-color:#644130;color:#ff8755}
[data-theme=dark] .notice.error,[data-theme=dark] .detail-error{background:#40291f;color:#ffc3a0}
[data-theme=dark] #auth-message,[data-theme=dark] #ride-message,[data-theme=dark] #file-message,[data-theme=dark] #goal-error,[data-theme=dark] #delete-ride{color:#ffc3a0}
[data-theme=dark] dialog::backdrop{background:#0009}[data-theme=dark] .skip{background:#202c23}

/* Training trends and personal race calendar. */
.training-card,.races-card{margin-bottom:24px}.training-card .card-head{padding-bottom:14px;flex-wrap:wrap}.training-legend{display:flex;gap:24px;padding:0 25px 18px;font-size:11px}.fitness-key::before,.fatigue-key::before{content:'';display:inline-block;width:20px;border-top:3px solid #477d58;margin-right:7px;vertical-align:middle}.fatigue-key::before{border-top:3px dashed #c57543}.training-values{display:flex;align-items:center;gap:36px;flex-wrap:wrap;padding:0 25px 10px}.training-values>div>span{display:block;font-size:11px;color:var(--muted)}.training-values strong{display:block;margin-top:7px;font:600 27px Manrope,system-ui,sans-serif;letter-spacing:-.5px}.training-values small{font:12px 'DM Sans',sans-serif;color:var(--muted)}.training-values>p{margin-left:auto;font-size:10px;color:var(--muted)}.training-chart{margin:5px 20px;border-radius:8px;outline-offset:3px;touch-action:pan-y}.training-chart svg{display:block;width:100%}.training-chart text{font:11px 'DM Sans',sans-serif;fill:var(--muted)}.training-grid{stroke:var(--line);stroke-dasharray:4 4}.training-fitness,.training-fatigue{fill:none;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}.training-fitness{stroke:#477d58}.training-fatigue{stroke:#c57543;stroke-dasharray:7 5}.training-crosshair{stroke:var(--muted);stroke-dasharray:3 4}.fitness-dot{fill:#477d58}.fatigue-dot{fill:#c57543}#training-reading{display:block;text-align:center;color:var(--ink);font-size:11px;padding:10px 22px;min-height:37px}.training-history{padding:0 25px 18px;color:var(--muted);font-size:10px}.training-method{border-top:1px solid var(--line);padding:17px 25px;color:var(--muted);font-size:11px}.training-method summary,.race-tips summary{cursor:pointer;color:var(--ink);font-weight:600}.training-method p{margin-top:12px;max-width:900px}.race-toolbar{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:0 25px 16px;font-size:11px}.race-entry{padding:23px 25px;border-top:1px solid var(--line)}.race-entry-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.race-entry h3{font-size:17px;overflow-wrap:anywhere}.race-entry-head p,.race-goal{font-size:11px;color:var(--muted);margin-top:8px}.race-notes{font-size:12px;margin-top:12px;white-space:pre-wrap;overflow-wrap:anywhere}.race-tips{padding:15px 0 0;font-size:12px}.race-tip-context{margin:12px 0;color:var(--muted);font-size:11px}.race-tips ul{padding-left:20px;margin:15px 0}.race-tips li{padding:5px 0;line-height:1.7}.race-sources{font-size:10px;color:var(--muted)}.race-actions{display:flex;gap:15px;margin-top:16px}.race-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.race-form-grid label{margin:8px 0}select,textarea{display:block;font:inherit;border:1px solid #dce3d5;background:#fafbf7;color:var(--ink);border-radius:7px;padding:12px;width:100%;margin-top:7px}textarea{resize:vertical}#race-message,#race-status{color:#7c482b;font-size:12px;line-height:1.6;margin-top:12px}[data-theme=dark] select,[data-theme=dark] textarea{background:#202c23;border-color:var(--line)}[data-theme=dark] .fitness-key::before{border-color:#b6d889}[data-theme=dark] .fatigue-key::before{border-color:#f2b482}[data-theme=dark] .training-fitness{stroke:#b6d889}[data-theme=dark] .training-fatigue{stroke:#f2b482}[data-theme=dark] .fitness-dot{fill:#b6d889}[data-theme=dark] .fatigue-dot{fill:#f2b482}[data-theme=dark] #race-message,[data-theme=dark] #race-status{color:#ffc3a0}@media(max-width:700px){.training-values{gap:18px}.training-values>p{margin-left:0;width:100%}.training-chart{margin:5px 8px}.training-legend{gap:14px;font-size:10px}.training-values strong{font-size:23px}.training-card .card-head,.races-card .card-head{align-items:flex-start}.races-card .card-head{flex-wrap:wrap}.race-entry-head{flex-wrap:wrap}.race-entry,.training-history,.training-method,.training-values,.training-legend,.race-toolbar{padding-left:16px;padding-right:16px}.training-chart text{font-size:13px}#training-reading{font-size:10px}.race-form-grid{gap:0 10px}}

.training-explainer{display:grid;grid-template-columns:1fr 1fr;gap:16px 25px;margin:0 25px 24px;padding:20px;background:var(--paper);border:1px solid var(--line);border-radius:10px}.training-explainer h3{font-size:12px;margin-bottom:8px}.training-explainer p{font-size:11px;color:var(--muted);line-height:1.7}.training-explainer .training-interpretation{grid-column:1/-1;border-top:1px solid var(--line);padding-top:14px}.race-form-grid small{display:block;margin-top:6px;font-size:10px;color:var(--muted)}@media(max-width:700px){.training-explainer{grid-template-columns:1fr;margin:0 16px 20px;padding:16px;gap:16px}}
