:root{color-scheme:light;--surface-1:#fcfcfb;--surface-2:#f9f9f7;--surface-3:#f0efec;--text-primary:#0b0b0b;--text-secondary:#52514e;--text-muted:#898781;--gridline:#e1e0d9;--axis:#c3c2b7;--border:rgba(11,11,11,0.1);--accent:#2a78d6;--critical:#d03b3b;--shadow:0 1px 2px rgba(11,11,11,0.06),0 4px 12px rgba(11,11,11,0.05);--track-casing:rgba(252,252,251,0.9);--font-sans:system-ui,-apple-system,"Segoe UI",sans-serif}@media (prefers-color-scheme:dark){:root:where(:not([data-theme=light])){color-scheme:dark;--surface-1:#1a1a19;--surface-2:#0d0d0d;--surface-3:#262624;--text-primary:#ffffff;--text-secondary:#c3c2b7;--text-muted:#898781;--gridline:#2c2c2a;--axis:#383835;--border:rgba(255,255,255,0.1);--accent:#3987e5;--critical:#d03b3b;--shadow:0 1px 2px rgba(0,0,0,0.4),0 4px 12px rgba(0,0,0,0.3);--track-casing:rgba(13,13,13,0.85)}}:root[data-theme=dark]{color-scheme:dark;--surface-1:#1a1a19;--surface-2:#0d0d0d;--surface-3:#262624;--text-primary:#ffffff;--text-secondary:#c3c2b7;--text-muted:#898781;--gridline:#2c2c2a;--axis:#383835;--border:rgba(255,255,255,0.1);--accent:#3987e5;--critical:#d03b3b;--shadow:0 1px 2px rgba(0,0,0,0.4),0 4px 12px rgba(0,0,0,0.3);--track-casing:rgba(13,13,13,0.85)}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{font-family:var(--font-sans);background:var(--surface-2);color:var(--text-primary);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}.shell{display:flex;flex-direction:column;height:100vh;height:100dvh}.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--surface-1);border-bottom:1px solid var(--border);flex-shrink:0}.brand{font-size:15px;font-weight:650;letter-spacing:-.01em;margin:0}.brand-sub{color:var(--text-muted);font-weight:400;font-size:13px;margin-left:8px}.body,.topbar-spacer{flex:1 1}.body{display:flex;min-height:0}.sidebar{width:320px;flex-shrink:0;background:var(--surface-1);border-right:1px solid var(--border);padding:14px;flex-direction:column;gap:14px}.main,.sidebar{overflow-y:auto;display:flex}.main{flex:1 1;min-width:0;flex-direction:column}.segmented{display:inline-flex;background:var(--surface-3);border-radius:7px;padding:2px;gap:2px}.segmented button{border:0;background:transparent;padding:4px 10px;border-radius:5px;font-size:12.5px;color:var(--text-secondary);transition:background .12s,color .12s}.segmented button[aria-pressed=true]{background:var(--surface-1);color:var(--text-primary);font-weight:600;box-shadow:var(--shadow)}.panel{border:1px solid var(--border);border-radius:10px;background:var(--surface-1)}.panel-title{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:650;margin:0 0 8px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.field:last-child{margin-bottom:0}.field-label{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:var(--text-secondary)}.field-value{color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}input[type=range],select{width:100%;font:inherit}select{padding:6px 8px;border-radius:7px;border:1px solid var(--border);background:var(--surface-1);color:var(--text-primary);font-size:13px}input[type=range]{accent-color:var(--accent)}.checkbox{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary);cursor:pointer;padding:3px 0}.checkbox input{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}.hint{font-size:11.5px;color:var(--text-muted);margin:6px 0 0;line-height:1.4}.dropzone{border:1.5px dashed var(--axis);border-radius:10px;padding:18px 14px;text-align:center;color:var(--text-secondary);background:var(--surface-1);transition:border-color .15s,background .15s;cursor:pointer}.dropzone.is-over,.dropzone:hover{border-color:var(--accent);background:var(--surface-3)}.dropzone strong{display:block;color:var(--text-primary);font-size:13.5px;margin-bottom:3px}.dropzone span{font-size:11.5px;color:var(--text-muted)}.error-list{margin:8px 0 0;padding:0;list-style:none}.error-list li{font-size:11.5px;color:var(--critical);padding:3px 0;display:flex;gap:6px;align-items:flex-start}.course-card{border:1px solid var(--border);border-radius:10px;padding:10px;background:var(--surface-1);margin-bottom:8px;transition:opacity .15s}.course-card.is-hidden{opacity:.5}.course-head{display:flex;align-items:center;gap:8px}.swatch{width:22px;height:12px;flex-shrink:0;border-radius:2px}.course-name{flex:1 1;min-width:0;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon-button{border:0;background:transparent;color:var(--text-muted);padding:3px 5px;border-radius:5px;font-size:11px;line-height:1}.icon-button:hover,.icon-button[aria-pressed=true]{background:var(--surface-3);color:var(--text-primary)}.icon-button[aria-pressed=true]{font-weight:650}.course-meta{display:flex;gap:10px;margin-top:7px;font-size:11.5px;color:var(--text-secondary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.course-meta .fmt{color:var(--text-muted);text-transform:uppercase;font-size:10px;letter-spacing:.05em;align-self:center}.map-wrap{flex:1 1;min-height:340px;position:relative;background:var(--surface-3)}.leaflet-container{width:100%;height:100%;background:var(--surface-3);font-family:var(--font-sans)}.map-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:13px;pointer-events:none;z-index:500}.course-label{background:var(--surface-1);border:1px solid var(--border);border-radius:5px;padding:1px 6px;font-size:11px;font-weight:600;color:var(--text-primary);box-shadow:var(--shadow);white-space:nowrap}.leaflet-tooltip.course-label:before{display:none}.chart-wrap{flex-shrink:0;background:var(--surface-1);border-top:1px solid var(--border);padding:10px 14px 6px}.chart-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:6px}.chart-title{font-size:12px;font-weight:650;color:var(--text-secondary);margin:0}.legend{display:flex;gap:12px;flex-wrap:wrap;margin-left:auto}.legend-item{gap:6px;font-size:11.5px;color:var(--text-secondary)}.chart-empty,.legend-item{display:flex;align-items:center}.chart-empty{height:150px;justify-content:center;color:var(--text-muted);font-size:12.5px}.tooltip{position:absolute;pointer-events:none;background:var(--surface-1);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);padding:8px 10px;font-size:12px;z-index:20;min-width:150px}.tooltip-head{color:var(--text-muted);font-size:11px;margin-bottom:5px}.tooltip-head,.tooltip-row{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tooltip-row{display:flex;align-items:center;gap:7px;padding:2px 0}.tooltip-row .name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.tooltip-row .val{font-weight:600;color:var(--text-primary)}.stats-wrap{flex-shrink:0;max-height:42vh;overflow:auto;border-top:1px solid var(--border)}.stats-toggle,.stats-wrap{background:var(--surface-1)}.stats-toggle{display:flex;align-items:center;gap:8px;width:100%;border:0;padding:8px 14px;border-top:1px solid var(--border);font-size:12px;font-weight:650;color:var(--text-secondary);text-align:left}.stats-toggle:hover{background:var(--surface-3)}table.stats{width:100%;border-collapse:collapse;font-size:12.5px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}table.stats td,table.stats th{padding:7px 12px;text-align:right;border-bottom:1px solid var(--gridline);white-space:nowrap}table.stats td:first-child,table.stats th:first-child{text-align:left;position:-webkit-sticky;position:sticky;left:0;background:var(--surface-1)}table.stats thead th{color:var(--text-muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;position:-webkit-sticky;position:sticky;top:0;background:var(--surface-1);z-index:1}table.stats thead th:first-child{z-index:2}.stat-course{display:flex;align-items:center;gap:7px}.grade-bar{display:flex;height:9px;border-radius:2px;overflow:hidden;min-width:130px;gap:1px}.grade-bar span{display:block}.grade-key{display:flex;gap:10px;flex-wrap:wrap;padding:8px 12px 12px;font-size:11px;color:var(--text-muted)}.grade-key-item{display:flex;align-items:center;gap:5px}.grade-key-swatch{width:10px;height:10px;border-radius:2px}@media (max-width:860px){.body{flex-direction:column}.sidebar{width:100%;max-height:45vh;border-right:0;border-bottom:1px solid var(--border)}}.primary-button{border:1px solid var(--border);background:var(--accent);color:#fff;border-radius:8px;padding:7px 12px;font-size:13px;font-weight:600;width:100%}.primary-button:hover:not(:disabled){filter:brightness(1.08)}.primary-button:disabled{opacity:.5;cursor:not-allowed}.garmin-status{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text-secondary);margin:0 0 8px}.garmin-dot{width:7px;height:7px;border-radius:50%;background:#1baf7a;flex-shrink:0}.garmin-actions{display:flex;flex-direction:column;align-items:stretch;gap:4px}.garmin-actions .icon-button{align-self:flex-end}.text-input{font:inherit;font-size:13px;padding:6px 8px;border-radius:7px;border:1px solid var(--border);background:var(--surface-1);color:var(--text-primary);width:100%}.text-input:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}.modal-backdrop{position:fixed;inset:0;background:rgba(11,11,11,.45);display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000}.modal{background:var(--surface-1);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);width:min(620px,100%);max-height:min(680px,100%);display:flex;flex-direction:column;overflow:hidden}.modal-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border);flex-shrink:0}.modal-head h2{font-size:14px;font-weight:650;margin:0}.modal-sub{font-size:12px;color:var(--text-muted);margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-head h2+.icon-button{margin-left:auto}.modal-error{margin:0;padding:9px 14px;font-size:12px;color:var(--critical);background:var(--surface-3);border-bottom:1px solid var(--border);display:flex;gap:7px}.modal-body{padding:14px;overflow-y:auto;min-height:0}.modal-form{display:flex;flex-direction:column}.modal-toolbar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border);flex-shrink:0}.modal-toolbar .text-input{flex:1 1;min-width:0}.modal-list{flex:1 1;display:flex;flex-direction:column;gap:2px;padding:8px}.modal-empty{color:var(--text-muted);font-size:12.5px;text-align:center;padding:28px 0;margin:0}.pick-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:7px;cursor:pointer}.pick-row:hover{background:var(--surface-3)}.pick-row input{accent-color:var(--accent);width:15px;height:15px;flex-shrink:0;cursor:pointer}.pick-name{flex:1 1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pick-meta{display:flex;gap:10px;font-size:11.5px;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;flex-shrink:0}.pick-tag{text-transform:capitalize}.modal-foot{display:flex;align-items:center;gap:12px;padding:10px 14px;border-top:1px solid var(--border);flex-shrink:0}.modal-foot .primary-button{width:auto;margin-left:auto}@media (max-width:560px){.modal-toolbar{flex-wrap:wrap}.pick-meta{display:none}}.modal-form .hint{margin-bottom:14px}