:root{--surface:oklch(0.985 0.004 80);--surface-raised:oklch(0.972 0.005 80);--surface-sunken:oklch(0.955 0.006 80);--surface-overlay:oklch(0.99 0.004 80);--border-subtle:oklch(0.91 0.006 80);--border-strong:oklch(0.82 0.008 80);--text-primary:oklch(0.22 0.012 80);--text-muted:oklch(0.48 0.01 80);--text-faint:oklch(0.65 0.01 80);--text-accent:oklch(0.56 0.155 52);--text-on-accent:oklch(0.99 0.004 80);--accent:oklch(0.66 0.165 52);--accent-hover:oklch(0.6 0.17 52);--accent-quiet:oklch(0.66 0.165 52/0.1);--danger:oklch(0.52 0.18 22);--success:oklch(0.62 0.115 155);--track-original:#1f6f8b;--track-clip:#5b8f3a;--track-simplified:#d16b2f;--track-casing:#ffffff;--font-display:"IBM Plex Sans Condensed",ui-sans-serif,sans-serif;--font-ui:"Geist",ui-sans-serif,system-ui,sans-serif;--font-mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--radius-control:4px;--radius-panel:8px;--ease-out:cubic-bezier(0.22,1,0.36,1);--ease-in:cubic-bezier(0.4,0,1,1);--ease-in-out:cubic-bezier(0.4,0,0.2,1);--dur-short:120ms;--text-title:32px;--text-section:15px;--text-meta:12px;--z-map-chrome:5;--z-nav:20;--z-overlay:21;--z-topbar:30}@media (prefers-color-scheme:dark){:root{--surface:oklch(0.165 0.008 80);--surface-raised:oklch(0.205 0.009 80);--surface-sunken:oklch(0.135 0.008 80);--surface-overlay:oklch(0.205 0.009 80);--border-subtle:oklch(0.28 0.01 80);--border-strong:oklch(0.4 0.012 80);--text-primary:oklch(0.94 0.006 80);--text-muted:oklch(0.68 0.01 80);--text-faint:oklch(0.5 0.01 80);--text-accent:oklch(0.78 0.155 60);--text-on-accent:oklch(0.15 0.008 80);--accent:oklch(0.72 0.16 55);--accent-hover:oklch(0.78 0.16 55);--accent-quiet:oklch(0.72 0.16 55/0.14);--danger:oklch(0.66 0.18 22)}}*{box-sizing:border-box}body,html{margin:0;height:100%;overflow-x:clip;background:var(--surface);color:var(--text-primary);font-family:var(--font-ui);font-size:14px;line-height:1.45;font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased}h1,h2{font-style:normal}h1{font-family:var(--font-display);font-weight:600;letter-spacing:-.04em;line-height:1.1;min-width:0;overflow-wrap:anywhere}h2{font-weight:500}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-rows:1fr;height:100dvh;overflow:hidden}.topbar{background:var(--surface);border-bottom:1px solid var(--border-subtle);display:none;gap:var(--space-3);justify-content:space-between;padding:0 var(--space-3);position:sticky;top:0;z-index:var(--z-topbar)}.topbar,.topbar-start{align-items:center;min-width:0}.topbar-start{display:flex;gap:var(--space-2)}.topbar .brand-row{padding:0}.topbar-offline{color:var(--danger);font-family:var(--font-mono);font-size:var(--text-meta);white-space:nowrap}.menu-toggle{align-items:center;background:transparent;border:1px solid var(--border-subtle);border-radius:var(--radius-control);color:var(--text-primary);cursor:pointer;display:none;flex-shrink:0;height:44px;justify-content:center;padding:0;width:44px}.menu-toggle:hover,.menu-toggle[aria-expanded=true]{background:var(--surface-raised);border-color:var(--border-strong)}.menu-toggle:active{background:var(--surface-sunken)}.menu-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.nav-overlay{background:oklch(.2 .01 80/.4);border:0;cursor:pointer;display:none;inset:0;padding:0;position:fixed}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.mono{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.breadcrumb{color:var(--text-muted);font-size:var(--text-section);margin:0 0 var(--space-2)}.breadcrumb a:focus-visible,.breadcrumb a:hover{color:var(--text-primary)}.breadcrumb a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.shell-body{display:grid;grid-template-columns:224px minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:100%;min-height:0;overflow:hidden}.nav{background:var(--surface-sunken);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:var(--space-1);min-height:0;overflow-y:auto;padding:var(--space-4) var(--space-3)}.brand-row{align-items:center;display:flex;font-family:var(--font-display);font-size:18px;font-style:normal;font-weight:600;gap:var(--space-2);letter-spacing:-.04em;padding:var(--space-1) var(--space-2) var(--space-4)}.group-label{color:var(--text-faint);font-family:var(--font-mono);font-size:11px;padding:var(--space-4) var(--space-2) var(--space-2)}.nav a{border-radius:var(--radius-control);color:var(--text-muted);display:flex;font-family:var(--font-display);font-weight:500;justify-content:space-between;letter-spacing:-.02em;padding:var(--space-2)}.nav a:hover,.nav a[aria-current=page]{background:var(--surface-raised);color:var(--text-primary)}.nav a:active{background:var(--surface-sunken)}.nav a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.nav-foot{border-top:1px solid var(--border-subtle);color:var(--text-faint);display:flex;flex-direction:column;font-family:var(--font-mono);font-size:var(--text-meta);gap:var(--space-1);margin-top:auto;padding:var(--space-3) var(--space-2) var(--space-1)}.nav-foot-action{background:transparent;border:0;border-radius:var(--radius-control);color:var(--text-muted);cursor:pointer;font:inherit;margin:0 calc(var(--space-2) * -1);padding:var(--space-2);text-align:left}.nav-foot-action:focus-visible,.nav-foot-action:hover{background:var(--surface-raised);color:var(--text-primary)}.nav-foot-action:active{background:var(--surface-sunken)}.nav-foot-action:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.whats-new-trigger{align-items:center;display:flex;gap:var(--space-2)}.whats-new-badge{background:var(--accent);border-radius:50%;display:inline-block;flex-shrink:0;height:6px;width:6px}.main{min-height:0;min-width:0;overflow-y:auto;padding:var(--space-6) var(--space-8) var(--space-8)}.page-head{align-items:baseline;display:flex;gap:var(--space-4);justify-content:space-between;margin-bottom:var(--space-2)}.page-head h1{font-size:var(--text-title);margin:0;min-width:0}.page-lede{color:var(--text-muted);max-width:40rem}.page-lede,.page-meta{margin:0 0 var(--space-4)}.page-meta{color:var(--text-faint);font-size:var(--text-section)}.page-actions{flex-shrink:0;gap:var(--space-2)}.page-actions,.stat-strip{display:flex;flex-wrap:wrap}.stat-strip{gap:var(--space-4) var(--space-6)}.range-inputs+.btn{margin-top:var(--space-2)}.stat-strip.stacked{display:grid;gap:var(--space-3)}.tool-mode-row~.stat-strip.stacked{margin-top:var(--space-3)}.stat-cell{min-width:0}.stat-label{color:var(--text-muted);font-size:var(--text-meta)}.stat-value{color:var(--text-primary);font-family:var(--font-mono);font-size:20px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:-.03em;margin-top:2px}.toolbar{align-items:center;display:flex;gap:var(--space-3);margin-bottom:var(--space-3)}.chip-row{display:flex;flex-wrap:wrap}.chip,.chip-row{gap:var(--space-2)}.chip{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-control);color:var(--text-muted);display:inline-flex;font-size:var(--text-meta);padding:var(--space-2) var(--space-3);white-space:nowrap}.chip:hover,.chip[aria-current=page],.chip[aria-current=true]{border-color:var(--accent);color:var(--text-accent)}.chip[aria-current=page],.chip[aria-current=true]{background:var(--accent-quiet);font-weight:500}.chip:active{background:var(--surface-sunken)}.chip:disabled,.chip[aria-disabled=true]{cursor:not-allowed;opacity:.45}.chip[data-state=loading]{cursor:wait;opacity:.8}.chip[data-state=error]{border-color:var(--danger);color:var(--danger)}.chip[data-state=success]{border-color:var(--success);color:var(--success)}.chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.filter-line{color:var(--text-faint);display:flex;font-size:var(--text-section);gap:var(--space-3);margin-bottom:var(--space-4)}.filter-line b{color:var(--text-primary);font-weight:500}.filter-line .reset{color:var(--text-accent);margin-left:auto}.filter-line .reset:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.route-detail-layout{display:grid;gap:var(--space-6);grid-template-columns:minmax(0,1fr) 240px}.map-panel{background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:var(--radius-panel);height:620px;overflow:hidden}.map-fill{height:100%;position:relative;width:100%}.side-panel{align-self:start}.admin-panel{max-width:32rem}.field{display:grid;gap:var(--space-2);margin-top:var(--space-4)}.field label{color:var(--text-muted);font-size:var(--text-meta)}.field input,.field textarea{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-control);color:var(--text-primary);padding:var(--space-2) var(--space-3)}.field input:hover,.field textarea:hover{border-color:var(--border-strong)}.field input:disabled,.field textarea:disabled{cursor:not-allowed;opacity:.45}.field input[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:var(--danger)}.field input[data-state=success],.field textarea[data-state=success]{border-color:var(--success)}.actions-row{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-2)}.admin-panel .actions-row{margin-top:var(--space-4)}.stack-section{margin-top:var(--space-8)}.stack-section h2{font-family:var(--font-display);font-size:var(--text-section);font-style:normal;font-weight:600;letter-spacing:-.03em;margin:0 0 var(--space-2)}.sync-controls{display:grid;gap:var(--space-1)}.sync-error{color:var(--danger);font-size:var(--text-meta)}.account-row{align-items:flex-start;display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-4);margin-bottom:var(--space-4)}.account-row .page-meta,.actions-row .page-meta{margin:0}.account-row+.stack-section{margin-top:var(--space-6)}.stack-section .chip-row{margin-bottom:var(--space-3)}.data-table-wrap{overflow-x:auto}.data-table{border-collapse:collapse;font-size:var(--text-section);width:100%}.data-table th{color:var(--text-muted);font-weight:500;text-align:left}.data-table td,.data-table th{border-bottom:1px solid var(--border-subtle);padding:var(--space-2)}.data-table td{vertical-align:top}.data-table .num{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.data-table th.num{font-family:var(--font-ui)}.data-table tbody tr{position:relative}.data-table tbody tr:hover{background:var(--surface-raised)}.data-table tbody tr:focus-within{outline:2px solid var(--accent);outline-offset:-2px}.table-link{color:var(--text-primary);font-weight:500}.table-link:after{content:"";inset:0;position:absolute}.table-sub{color:var(--text-muted);font-size:var(--text-meta);margin-top:2px}.chart-frame{height:320px;width:100%}.chart-empty{color:var(--text-muted);padding:var(--space-3) 0}.chart-tooltip{background:var(--surface-overlay);border:1px solid var(--border-subtle);border-radius:var(--radius-panel);color:var(--text-primary);font-size:var(--text-meta);max-width:340px;padding:var(--space-2) var(--space-3)}.chart-tooltip-title{font-weight:600;line-height:1.35;margin-bottom:var(--space-1)}.chart-tooltip-note{color:var(--text-muted);font-size:var(--text-meta);line-height:1.4;margin-bottom:var(--space-2)}.chart-tooltip-row{align-items:center;display:flex;gap:var(--space-2);margin-top:2px}.chart-tooltip-dot{border-radius:999px;height:var(--space-2);width:var(--space-2)}.chart-tooltip-label{color:var(--text-muted);flex:1 1}.btn{align-items:center;background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-control);color:var(--text-primary);cursor:pointer;display:inline-flex;font-family:var(--font-display);font-weight:500;gap:var(--space-2);justify-content:center;letter-spacing:-.02em;min-height:36px;padding:var(--space-2) var(--space-3);transition:background-color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out);white-space:nowrap}.btn:hover:not(:disabled):not([aria-disabled=true]):not([aria-busy=true]){background:var(--surface-raised);border-color:var(--border-strong)}.btn:active:not(:disabled):not([aria-disabled=true]){background:var(--surface-sunken);transform:translateY(1px)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--text-on-accent);font-weight:500}.btn.primary:hover:not(:disabled):not([aria-disabled=true]):not([aria-busy=true]){background:var(--accent-hover);border-color:var(--accent-hover)}.btn.primary:active:not(:disabled):not([aria-disabled=true]){background:var(--accent-hover);transform:translateY(1px)}.btn.active,.btn[aria-checked=true],.btn[aria-pressed=true]{border-color:var(--accent);color:var(--text-accent)}.btn:disabled,.btn[aria-disabled=true]{cursor:not-allowed;opacity:.45}.btn[aria-busy=true],.btn[data-state=loading]{cursor:wait;opacity:.8}.btn[data-state=error]{border-color:var(--danger);color:var(--danger)}.btn[data-state=success]{border-color:var(--success);color:var(--success)}.btn:focus-visible,.feedback-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.feedback-dialog,.whats-new-dialog{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-panel);color:var(--text-primary);font-family:var(--font-ui);font-size:14px;padding:0;width:min(440px,calc(100% - 32px))}.feedback-dialog::backdrop,.whats-new-dialog::backdrop{background:oklch(.2 .01 80/.4)}.feedback-dialog-inner,.whats-new-dialog-inner{padding:var(--space-4)}.feedback-dialog-head,.whats-new-dialog-head{align-items:center;display:flex;gap:var(--space-3);justify-content:space-between}.feedback-dialog-head h2,.whats-new-dialog-head h2{font-family:var(--font-display);font-size:var(--text-title);font-style:normal;font-weight:600;letter-spacing:-.04em;margin:0}.whats-new-body{color:var(--text-primary);margin-top:var(--space-4);max-height:min(60vh,420px);overflow-y:auto}.whats-new-body>:first-child{margin-top:0}.whats-new-body h2,.whats-new-body h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.03em;margin:var(--space-4) 0 var(--space-2)}.whats-new-body h2{font-size:var(--text-section)}.whats-new-body h3{font-size:14px}.whats-new-body ol,.whats-new-body p,.whats-new-body ul{margin:0 0 var(--space-3)}.whats-new-body ol,.whats-new-body ul{padding-left:var(--space-4)}.whats-new-dialog .whats-new-body a{background:none;color:var(--text-accent);display:inline;font:inherit;justify-content:unset;letter-spacing:inherit;padding:0}.whats-new-dialog .whats-new-body a:focus-visible,.whats-new-dialog .whats-new-body a:hover{background:none;color:var(--accent-hover)}.whats-new-dialog .whats-new-body a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.whats-new-empty{color:var(--text-muted);margin:var(--space-4) 0 0}.feedback-close{align-items:center;background:transparent;border:0;border-radius:var(--radius-control);color:var(--text-muted);cursor:pointer;display:inline-flex;flex-shrink:0;height:44px;justify-content:center;margin:calc(var(--space-3) * -1) calc(var(--space-3) * -1) calc(var(--space-3) * -1) 0;padding:0;width:44px}.feedback-close:active,.feedback-close:hover{color:var(--text-primary)}.feedback-kind-row{grid-template-columns:1fr 1fr}.feedback-count{color:var(--text-faint);font-size:var(--text-meta);text-align:right}.feedback-actions{display:flex;gap:var(--space-2);margin-top:var(--space-4)}.feedback-done p{color:var(--text-muted);margin:var(--space-4) 0 0}.feedback-honeypot{height:0;left:-9999px;overflow:hidden;position:absolute;width:0}.feedback-dialog textarea{min-height:96px;resize:vertical}.field input:focus-visible,.field textarea:focus-visible{border-color:var(--border-strong);outline:2px solid var(--accent);outline-offset:1px}.error{background:color-mix(in oklch,var(--danger),transparent 88%);border:1px solid var(--danger);border-radius:var(--radius-control);color:var(--text-primary);margin-bottom:var(--space-4);padding:var(--space-3)}.notice{color:var(--success);margin:0 0 var(--space-4)}.empty{color:var(--text-muted);padding:var(--space-6) 0;text-align:left}.empty h2{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-title);font-style:normal;font-weight:600;letter-spacing:-.04em;margin:0 0 var(--space-2)}.empty p{margin:0 0 var(--space-4)}.offline-page-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tool-page{display:grid;grid-template-columns:360px minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:100%}.tool-page,.tool-rail{min-height:0;min-width:0;overflow:hidden}.tool-rail{background:var(--surface);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column}.tool-rail-head{border-bottom:1px solid var(--border-subtle);padding:var(--space-6) var(--space-4) var(--space-3)}.tool-rail-head h1{font-size:var(--text-title);margin:0}.tool-rail-scroll{flex:1 1;min-height:0;min-width:0;overflow:auto}.tool-rail-foot{background:var(--surface);border-top:1px solid var(--border-subtle);display:grid;gap:var(--space-3);min-width:0;padding:var(--space-4)}.tool-foot-status{color:var(--text-faint);font-family:var(--font-mono);font-size:var(--text-meta)}.tool-foot-actions{display:grid;gap:var(--space-2);grid-template-columns:1fr auto}.tool-section{border-bottom:1px solid var(--border-subtle);min-width:0;padding:var(--space-4)}.tool-section:last-child{border-bottom:0}.tool-section-head{align-items:baseline;background:transparent;border:0;color:inherit;display:flex;gap:var(--space-3);justify-content:space-between;margin-bottom:var(--space-3);padding:0;text-align:left;width:100%}.tool-section[data-collapsed=true] .tool-section-head{margin-bottom:0}.tool-section-toggle{cursor:pointer}.tool-section-toggle:focus-visible{border-radius:2px;outline:2px solid var(--accent);outline-offset:4px}.tool-section-head h2{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-section);font-style:normal;font-weight:600;letter-spacing:-.03em;margin:0}.tool-section-meta{align-items:center;color:var(--text-muted);display:inline-flex;font-size:var(--text-meta);gap:var(--space-2);white-space:nowrap}.tool-section-chevron{align-items:center;color:var(--text-faint);display:inline-flex;font-size:16px;height:16px;justify-content:center;line-height:1;transition:transform var(--dur-short) var(--ease-out);width:12px}.tool-section[data-collapsed=false] .tool-section-chevron{transform:rotate(90deg)}.tool-section-desc{color:var(--text-muted);font-size:var(--text-section);line-height:1.45;margin:0 0 var(--space-3)}.tool-section[data-collapsed=true] .tool-section-desc{margin:var(--space-2) 0 0}.tool-pill{background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:var(--radius-control);color:var(--text-muted);font-size:var(--text-meta);padding:2px var(--space-2)}.tool-advanced-head{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-section);font-weight:600;letter-spacing:-.03em;padding:var(--space-4) var(--space-4) 0}.tool-steps{color:var(--text-muted);font-size:14px;line-height:1.45;margin:var(--space-3) 0 0;padding-left:1.25rem}.tool-steps li+li{margin-top:var(--space-2)}.tool-map-area{background:var(--surface-sunken);height:100%;min-height:0;min-width:0;overflow:hidden;position:relative}.gpx-tool-map,.tool-map-area .maplibregl-map{height:100%;width:100%}.gpx-tool-map{position:relative}.map-layer-chrome{position:absolute;right:var(--space-2);top:var(--space-2);z-index:var(--z-map-chrome)}.map-layer-chrome,.map-layer-picker{align-items:flex-end;display:flex;flex-direction:column;gap:var(--space-1)}.map-layer-trigger{display:none}.map-layer-clip,.map-layer-clip-inner{display:contents}.map-layer-panel{align-items:flex-end;display:flex;flex-direction:column;gap:var(--space-1)}.map-gravel-toggle,.map-layer-switcher{background:var(--surface-overlay);border:1px solid var(--border-strong);border-radius:var(--radius-control);display:flex}.map-gravel-toggle{align-items:center;color:var(--text-muted);font-family:var(--font-display);font-size:var(--text-meta);font-weight:500;gap:var(--space-1);letter-spacing:-.02em;min-height:32px;padding:var(--space-1) var(--space-1) var(--space-1) var(--space-2)}.map-gravel-toggle label{align-items:center;cursor:pointer;display:flex;gap:var(--space-2)}.map-gravel-toggle label:hover,.map-gravel-toggle:hover{color:var(--text-primary)}.map-gravel-toggle input{accent-color:var(--accent);margin:0}.map-gravel-info{align-items:center;background:transparent;border:0;border-radius:var(--radius-control);color:var(--text-muted);cursor:pointer;display:inline-flex;height:24px;justify-content:center;padding:0;width:24px}.map-gravel-info:hover{color:var(--text-primary)}.map-gravel-info:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.map-gravel-dialog{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-panel);color:var(--text-primary);font-family:var(--font-ui);font-size:14px;padding:0;width:min(320px,calc(100% - 32px))}.map-gravel-dialog::backdrop{background:oklch(.2 .01 80/.4)}.map-gravel-dialog-inner{padding:var(--space-4)}.map-gravel-dialog-head{align-items:center;display:flex;gap:var(--space-3);justify-content:space-between}.map-gravel-dialog-head h2{font-family:var(--font-display);font-size:var(--text-title);font-style:normal;font-weight:600;letter-spacing:-.04em;margin:0}.map-gravel-legend{display:grid;gap:var(--space-3);list-style:none;margin:var(--space-4) 0 0;padding:0}.map-gravel-legend-row{align-items:center;display:grid;gap:var(--space-3);grid-template-columns:56px 1fr}.map-gravel-legend-mark{background:var(--surface-sunken);border-radius:var(--radius-control);display:block}.map-gravel-legend-note{margin:var(--space-4) 0 0}.map-gravel-legend-note,.map-layer-option{color:var(--text-muted);font-size:var(--text-meta)}.map-layer-option{background:transparent;border:0;border-right:1px solid var(--border-subtle);cursor:pointer;flex:1 1;font-family:var(--font-display);font-weight:500;letter-spacing:-.02em;min-height:32px;min-width:4.5rem;padding:var(--space-1) var(--space-2)}.map-layer-option:last-child{border-right:0}.map-layer-option:hover{background:var(--surface-raised);color:var(--text-primary)}.map-layer-option:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.map-layer-option[aria-checked=true]{background:var(--accent-quiet);color:var(--text-accent)}.map-mapy-logo{bottom:28px;left:var(--space-2);line-height:0;position:absolute;z-index:var(--z-map-chrome)}.map-mapy-logo img{display:block;height:20px;width:auto}.dropzone{align-items:center;background:var(--surface-sunken);border:1px dashed var(--border-strong);border-radius:var(--radius-control);cursor:pointer;display:flex;gap:var(--space-3);padding:var(--space-3)}.dropzone.dragover,.dropzone:focus-visible,.dropzone:hover{background:var(--accent-quiet);border-color:var(--accent)}.dropzone:active{background:var(--accent-quiet)}.dropzone:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dropzone .filename{color:var(--text-primary);font-family:var(--font-mono);font-size:var(--text-meta);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropzone>div,.file-row>div,.waypoint-row>span{min-width:0}.dropzone .meta{color:var(--text-muted);font-family:var(--font-mono);font-size:var(--text-meta);margin-top:2px}.file-input{display:none}.file-list,.waypoint-list{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-control);margin-top:var(--space-3);max-width:100%;overflow:hidden}.file-list:empty,.waypoint-list:empty{display:none}.file-row,.waypoint-row{align-items:center;border-top:1px solid var(--border-subtle);display:grid;gap:var(--space-2);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-3)}.file-row{grid-template-columns:minmax(0,1fr) auto}.waypoint-row{cursor:pointer;font-family:var(--font-mono);font-size:var(--text-meta);grid-template-columns:28px minmax(0,1fr) auto auto}.waypoint-row[draggable=true]{cursor:grab}.waypoint-row.drop-before{box-shadow:inset 0 2px 0 0 var(--accent)}.waypoint-row.drop-after{box-shadow:inset 0 -2px 0 0 var(--accent)}.waypoint-copy{min-width:0}.waypoint-copy .meta{display:block}.file-row:first-child,.waypoint-row:first-child{border-top:0}.file-row:hover,.waypoint-row.selected,.waypoint-row:hover{background:var(--surface-sunken)}.file-row:focus-within,.waypoint-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.file-row .name,.waypoint-row .name{color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row .meta,.waypoint-row .km,.waypoint-row .meta,.waypoint-row .num{color:var(--text-muted);font-family:var(--font-mono);font-size:var(--text-meta)}.row-actions{align-items:center;display:inline-flex;gap:2px}.icon-button{background:transparent;border:0;border-radius:var(--radius-control);color:var(--text-faint);cursor:pointer;height:24px;padding:0;width:24px}.icon-button:hover:not(:disabled){background:var(--surface-raised);color:var(--text-primary)}.icon-button:active:not(:disabled){background:var(--surface-sunken)}.icon-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.icon-button:disabled{cursor:not-allowed;opacity:.35}.icon-button[aria-busy=true],.icon-button[data-state=loading]{cursor:wait;opacity:.8}.icon-button[data-state=error]{color:var(--danger)}.icon-button[data-state=success]{color:var(--success)}.tool-help{color:var(--text-muted);font-size:var(--text-meta);line-height:1.45;margin:var(--space-2) 0 0}.tool-help-lg{font-size:14px}.tool-mode-row{display:grid;gap:var(--space-2);grid-template-columns:repeat(3,1fr)}.tool-mode-row .btn{font-size:var(--text-meta);padding:var(--space-2)}.clip-list{border:1px solid var(--border-subtle);border-radius:var(--radius-control);margin-top:var(--space-3);max-height:180px;overflow:auto}.clip-row{align-items:center;border-top:1px solid var(--border-subtle);cursor:default;display:grid;gap:var(--space-2);grid-template-columns:auto 1fr auto auto;padding:var(--space-2) var(--space-3)}.clip-row:first-child{border-top:0}.clip-row .km,.clip-row .num{color:var(--text-muted);font-family:var(--font-mono);font-size:var(--text-meta)}.clip-row .name{color:var(--text-primary);font-size:var(--text-meta);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-check{align-items:center;color:var(--text-muted);cursor:pointer;display:flex;font-size:var(--text-meta);gap:var(--space-3);margin-top:var(--space-3)}.range-row,.slider-row{align-items:baseline;display:flex;gap:var(--space-2);justify-content:space-between}.range-row label,.slider-row label{color:var(--text-muted);font-size:var(--text-meta)}.slider-row .value{font-size:var(--text-section);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500}.slider-row .value,.slider-row input[type=number]{color:var(--text-primary);font-family:var(--font-mono)}.slider-row input[type=number]{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-control);font-size:var(--text-meta);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding:var(--space-1) var(--space-2);text-align:right;width:4.5rem}.slider-row input[type=number]:hover{border-color:var(--border-strong)}.slider-row input[type=number]:focus-visible{border-color:var(--border-strong);outline:2px solid var(--accent);outline-offset:1px}.tool-range{appearance:none;background:transparent;cursor:pointer;margin:var(--space-3) 0 var(--space-1);width:100%}.tool-range:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.tool-range::-webkit-slider-runnable-track{background:var(--border-subtle);border-radius:2px;height:3px}.tool-range::-webkit-slider-thumb{appearance:none;background:var(--surface);border:2px solid var(--accent);border-radius:999px;height:14px;margin-top:-6px;width:14px}.range-inputs{display:grid;gap:var(--space-2);grid-template-columns:1fr 1fr;margin-top:var(--space-3)}.range-inputs input{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-control);color:var(--text-primary);padding:var(--space-2)}.range-inputs input:hover{border-color:var(--border-strong)}.range-inputs input:focus-visible{border-color:var(--border-strong);outline:2px solid var(--accent);outline-offset:1px}.range-inputs input:disabled{cursor:not-allowed;opacity:.45}.range-inputs input[aria-invalid=true]{border-color:var(--danger)}.komoot-row{align-items:stretch;display:flex;gap:var(--space-2);margin-top:var(--space-3)}.komoot-row input{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-control);color:var(--text-primary);flex:1 1;font-family:var(--font-mono);font-size:var(--text-meta);min-width:0;padding:var(--space-2)}.komoot-row input:hover{border-color:var(--border-strong)}.komoot-row input:focus-visible{border-color:var(--border-strong);outline:2px solid var(--accent);outline-offset:1px}.komoot-row input:disabled{cursor:not-allowed;opacity:.45}.komoot-row .btn{flex-shrink:0}.tool-overlay{background:var(--surface-overlay);border:1px solid var(--border-subtle);border-radius:var(--radius-control);bottom:var(--space-4);left:var(--space-4);max-width:360px;min-width:280px;padding:var(--space-3) var(--space-4);position:absolute;z-index:var(--z-map-chrome)}.tool-overlay .title{font-family:var(--font-display);font-size:16px;font-weight:600;letter-spacing:-.03em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-overlay .sub{margin-top:2px}.tool-overlay .stats,.tool-overlay .sub{color:var(--text-muted);font-size:var(--text-meta)}.tool-overlay .stats{display:flex;flex-wrap:wrap;font-family:var(--font-mono);gap:var(--space-4);margin-top:var(--space-3)}.tool-overlay b{color:var(--text-primary);font-weight:500}.tool-overlay .actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.tool-map-marker{background:var(--accent);border:2px solid var(--surface);border-radius:999px;box-shadow:0 1px 4px oklch(.2 .01 80/.35);height:16px;width:16px}.tool-map-marker.start{background:var(--surface);border-color:var(--accent)}.tool-map-num-marker{background:transparent;border:0;cursor:pointer}.tool-map-num-marker .pin{align-items:center;background:var(--surface);border:1.5px solid var(--accent);border-radius:999px;box-shadow:0 1px 2px oklch(.2 .01 80/.25);color:var(--text-accent);display:flex;font-family:var(--font-mono);font-size:var(--text-meta);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500;height:24px;justify-content:center;min-width:24px;padding:0 var(--space-1)}.tool-map-num-marker .pin.selected,.tool-map-num-marker .pin.start{background:var(--accent);color:var(--text-on-accent)}.btn-block{margin-top:var(--space-3);width:100%}.spots-page{width:100%}.spots-intro{margin:0 0 var(--space-4);width:100%}.spots-intro[data-collapsed=true]{margin-bottom:var(--space-2)}.spots-intro-toggle{align-items:center;background:transparent;border:0;color:inherit;cursor:pointer;display:flex;gap:var(--space-3);justify-content:space-between;min-height:44px;padding:0;text-align:left;width:100%}.spots-intro-toggle:focus-visible{border-radius:2px;outline:2px solid var(--accent);outline-offset:4px}.spots-intro-toggle h2{font-family:var(--font-display);font-size:var(--text-section);font-weight:600;letter-spacing:-.03em;margin:0}.spots-intro[data-collapsed=false] .tool-section-chevron{transform:rotate(90deg)}.spots-intro-body{color:var(--text-muted);font-size:var(--text-section);line-height:1.45;margin:var(--space-2) 0 0}.spots-intro-body p{margin:0 0 var(--space-3)}.spots-intro-meta{color:var(--text-faint);font-size:var(--text-meta);margin:0}.spots-install{background:none;border:0;color:inherit;cursor:pointer;font:inherit;padding:0;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}.spots-install:hover{color:var(--text-accent)}.spots-install:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.spots-captures{display:grid;gap:var(--space-3);margin:var(--space-4) 0 var(--space-6);width:100%}.spots-capture{align-items:flex-start;background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-control);color:var(--text-primary);cursor:pointer;display:flex;flex-direction:column;gap:var(--space-1);justify-content:center;min-height:72px;padding:var(--space-4);text-align:left;transition:background-color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out);width:100%}.spots-capture:hover:not(:disabled){background:var(--surface-sunken);border-color:var(--border-strong)}.spots-capture:active:not(:disabled){background:var(--accent-quiet);border-color:var(--accent)}.spots-capture:disabled{cursor:wait;opacity:.7}.spots-capture:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.spots-capture-title{font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:-.03em;line-height:1.2}.spots-capture-sub{color:var(--text-muted);font-size:var(--text-section)}.spots-saved-head{align-items:stretch;display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-2)}.spots-saved-head h2{font-family:var(--font-display);font-size:var(--text-section);font-weight:600;letter-spacing:-.03em;margin:0}.spots-send{width:100%}.spots-empty{padding:var(--space-4) 0}.spots-list{list-style:none;margin:0;padding:0}.spots-row{align-items:center;border-top:1px solid var(--border-subtle);display:grid;gap:var(--space-2);grid-template-columns:minmax(0,1fr) auto;min-height:44px;padding:var(--space-3) 0}.spots-row:first-child{border-top:0}.spots-row[data-selected=true]{background:var(--accent-quiet);margin-inline:calc(var(--space-2) * -1);padding-inline:var(--space-2)}.spots-row-select{align-items:flex-start;cursor:pointer;display:grid;gap:var(--space-3);grid-template-columns:auto minmax(0,1fr);min-width:0}.spots-row-select input{flex-shrink:0;height:18px;margin-top:3px;width:18px}.spots-row-body{display:flex;flex-direction:column;gap:2px;min-width:0}.spots-row-title{align-items:baseline;display:flex;flex-wrap:wrap;gap:var(--space-2)}.spots-row-meta,.spots-row-time{color:var(--text-muted);font-size:var(--text-meta)}.spots-remove{min-height:44px}.spots-clear{margin-top:var(--space-4)}.spots-clear-link{background:none;border:0;color:var(--text-muted);cursor:pointer;font-size:var(--text-meta);min-height:44px;padding:var(--space-2) 0;text-align:left;text-decoration:underline;text-underline-offset:3px}.spots-clear-link:hover{color:var(--danger)}.spots-clear-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.spots-clear-confirm{display:grid;gap:var(--space-3)}.spots-clear-confirm p{color:var(--text-muted);font-size:var(--text-section);margin:0}.spots-clear-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.spots-clear-actions .btn[data-danger]{border-color:var(--danger);color:var(--danger)}@media (min-width:960px){.spots-captures{grid-template-columns:1fr 1fr}}@media (pointer:coarse){.icon-button{height:44px;width:44px}.map-layer-option{min-height:44px}.map-layer-trigger{height:44px;width:44px}.spots-capture{min-height:80px}}@media (max-width:959px){.app-shell{grid-template-rows:52px 1fr}.topbar{display:flex}.menu-toggle{display:inline-flex}.shell-body{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.nav,.nav-overlay,.shell-body>:last-child{grid-column:1;grid-row:1}.shell-body>:last-child{min-height:0;min-width:0}.nav-overlay{inset:52px 0 0 0;z-index:var(--z-nav)}.shell-body[data-nav-open=true] .nav-overlay{display:block}.nav-foot-offline{display:none}.nav{bottom:0;left:0;position:fixed;top:52px;transform:translateX(-100%);transition:transform var(--dur-short) var(--ease-out);width:280px;z-index:var(--z-overlay)}.shell-body[data-nav-open=true] .nav{transform:translateX(0)}.main{padding:var(--space-4) var(--space-4) var(--space-6)}.page-head{align-items:flex-start;gap:var(--space-4)}.page-head,.toolbar{flex-wrap:wrap}.route-detail-layout{grid-template-columns:minmax(0,1fr)}.map-panel{height:360px}.tool-page{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(8rem,36dvh) minmax(0,1fr);height:100%}.tool-map-area{order:-1}.tool-rail{border-right:none;border-top:1px solid var(--border-subtle)}.tool-rail-head{padding:var(--space-4) var(--space-4) var(--space-3)}.tool-foot-actions{grid-template-columns:1fr}.map-layer-option{min-width:0;padding:var(--space-1) var(--space-2)}.map-layer-picker{align-items:flex-start;flex-direction:row-reverse}.map-layer-trigger{align-items:center;background:var(--surface-overlay);border:1px solid var(--border-strong);border-radius:var(--radius-control);color:var(--text-muted);cursor:pointer;display:inline-flex;flex-shrink:0;height:32px;justify-content:center;padding:0;width:32px}.map-layer-picker[data-open=true] .map-layer-trigger,.map-layer-trigger:hover{color:var(--text-primary)}.map-layer-picker[data-open=true] .map-layer-trigger{background:var(--accent-quiet);color:var(--text-accent)}.map-layer-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.map-layer-clip{display:grid;grid-template-columns:0fr;max-width:calc(100vw - 4.5rem);pointer-events:none;transition:grid-template-columns .2s var(--ease-out)}.map-layer-picker[data-open=true] .map-layer-clip{grid-template-columns:1fr;pointer-events:auto}.map-layer-clip-inner{display:block;min-width:0;overflow:hidden}.map-layer-panel{opacity:0;transform:translateX(6px);transition:opacity .16s var(--ease-out),transform .2s var(--ease-out)}.map-layer-picker[data-open=true] .map-layer-panel{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.btn,.map-layer-clip,.map-layer-panel,.nav,.spots-capture,.tool-section-chevron{transition:none}.btn.primary:active:not(:disabled):not([aria-disabled=true]),.btn:active:not(:disabled):not([aria-disabled=true]){transform:none}}