:root{--primary-color: #2563eb;--primary-dark: #1e40af;--primary-light: #3b82f6;--accent-color: #6366f1;--success-color: #059669;--danger-color: #dc2626;--background: #f8fafc;--surface: #ffffff;--surface-secondary: #f1f5f9;--text-primary: #0f172a;--text-secondary: #64748b;--text-tertiary: #94a3b8;--border-color: #e2e8f0;--border-dark: #cbd5e1;--shadow-sm: rgba(15, 23, 42, .04);--shadow-md: rgba(15, 23, 42, .08);--shadow-lg: rgba(15, 23, 42, .12);--glass-bg: rgba(255, 255, 255, .88);--glass-border: rgba(255, 255, 255, .5);--bg-page: #FAF8F3;--bg-panel: #FFFFFF;--fg-primary: #111111;--fg-secondary: rgba(0,0,0,.55);--fg-tertiary: rgba(0,0,0,.3);--border: rgba(0,0,0,.06);--border-strong: rgba(0,0,0,.08);--glass-bar: rgba(255,255,255,.78);--glass-pill: rgba(255,255,255,.92);--subtle-bg: rgba(0,0,0,.035);--accent: #3B82F6;--accent-2: #2563EB;--accent-soft: rgba(59,130,246,.13);--accent-tint: rgba(59,130,246,.08);--accent-glow: rgba(59,130,246,.4);--chart-elev: #65A30D;--heat-1: #3B82F6;--heat-2: #22D3EE;--heat-3: #A3E635;--heat-4: #F59E0B;--heat-5: #EF4444;--shadow-overlay: 0 8px 32px rgba(0,0,0,.08);--shadow-overlay-live: 0 16px 48px rgba(0,0,0,.12);--shadow-map-btn: 0 4px 16px rgba(0,0,0,.06);--shadow-play: 0 2px 8px rgba(59,130,246,.4);--r-pill: 999px;--r-card: 18px;--r-inner: 14px;--r-small: 10px;--r-chip: 5px;--blur-overlay: blur(20px) saturate(180%);--blur-live: blur(24px) saturate(180%);--fs-hero: 56px;--fs-sub-hero: 17px;--fs-section: 13px;--fs-live: 30px;--fs-metric: 13px;--fs-body: 12px;--fs-caption: 11px;--fs-label: 10px;--fs-tiny: 9px;--font-stack: "Inter", -apple-system, "Helvetica Neue", system-ui, sans-serif;--font-display: "Sora", "Inter", -apple-system, system-ui, sans-serif;--inverse-bg: #111111;--inverse-fg: #F5F5F5}[data-theme=dark]{--bg-page: #0A0A0A;--bg-panel: #141416;--fg-primary: #FAFAFA;--fg-secondary: rgba(255,255,255,.55);--fg-tertiary: rgba(255,255,255,.3);--border: rgba(255,255,255,.08);--border-strong: rgba(255,255,255,.1);--glass-bar: rgba(18,18,22,.72);--glass-pill: rgba(18,18,22,.85);--subtle-bg: rgba(255,255,255,.04);--surface-secondary: rgba(255,255,255,.06);--chart-elev: #A3E635;--shadow-overlay: 0 8px 32px rgba(0,0,0,.4);--shadow-overlay-live: 0 16px 48px rgba(0,0,0,.5);--shadow-map-btn: 0 4px 16px rgba(0,0,0,.3);--inverse-bg: #F5F5F5;--inverse-fg: #111111}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--background);color:var(--text-primary);min-height:100vh;line-height:1.6;font-size:14px;overflow:hidden}body{background:var(--bg-page);color:var(--fg-primary);font-family:var(--font-stack)}.upload-state{width:100%;min-height:100vh;overflow-y:auto;height:100vh;display:flex;flex-direction:column;background:var(--bg-page)}.upload-nav{display:flex;align-items:center;justify-content:space-between;padding:36px 24px 22px;height:44px;width:100%;max-width:1100px;margin:0 auto}.upload-brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--fg-primary)}.upload-brand-tile{width:40px;height:40px;display:block;object-fit:contain;flex-shrink:0;border-radius:var(--r-small);border:1px solid var(--border-strong)}.upload-brand-tile svg{width:16px;height:16px}.upload-brand-name{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:-.2px}.beta-badge{display:inline-flex;align-items:center;padding:4px 11px;border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-glow);font-size:15px;font-weight:700;letter-spacing:.1px;line-height:1.4}.upload-nav-links{display:flex;align-items:center;gap:28px}.tools-menu{position:relative}.tools-btn{display:inline-flex;align-items:center;gap:5px;padding:0;background:none;border:none;color:var(--fg-secondary);font-family:var(--font-stack);font-size:14px;cursor:pointer;transition:color .15s}.tools-btn:hover,.tools-menu.open .tools-btn{color:var(--fg-primary)}.tools-chevron{width:15px;height:15px;opacity:.75;transition:transform .15s}.tools-menu.open .tools-chevron{transform:rotate(180deg)}.tools-options{position:absolute;top:calc(100% + 8px);right:0;min-width:210px;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow-overlay);padding:6px;display:none;flex-direction:column;gap:1px;z-index:60}.tools-menu.open .tools-options{display:flex}.tools-options a{display:block;padding:8px 12px;border-radius:8px;color:var(--fg-primary);text-decoration:none;font-size:14px;font-weight:500;white-space:nowrap}.tools-options a:hover{background:var(--surface-secondary, rgba(127,127,127,.1))}.tools-sep{height:1px;margin:5px 8px;background:var(--border-strong)}.upload-nav-links a{font-size:14px;color:var(--fg-secondary);text-decoration:none;transition:color .15s}.upload-nav-links a:hover{color:var(--fg-primary)}.upload-theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid var(--border-strong);border-radius:9px;background:var(--subtle-bg);color:var(--fg-secondary);cursor:pointer;transition:color .15s,background .15s,border-color .15s}.upload-theme-toggle:hover{color:var(--fg-primary);background:var(--bg-panel);border-color:var(--fg-tertiary)}.upload-theme-toggle svg{width:18px;height:18px;display:block}.upload-hero{flex:1;display:flex;flex-direction:column;align-items:center;padding:40px 24px 60px;max-width:880px;margin:0 auto;width:100%}.privacy-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--accent-tint);color:var(--accent);border-radius:var(--r-pill);font-size:var(--fs-caption);font-weight:600;letter-spacing:.3px;text-transform:uppercase;margin-bottom:28px}.privacy-dot{width:6px;height:6px;background:var(--accent);border-radius:50%}.hero-headline{font-family:var(--font-display);font-size:var(--fs-hero);font-weight:700;letter-spacing:-1.8px;line-height:1.02;text-align:center;text-wrap:balance;color:var(--fg-primary);margin:0}.hero-accent{color:var(--accent)}.hero-subhead{font-size:var(--fs-sub-hero);color:var(--fg-secondary);line-height:1.5;max-width:520px;text-align:center;text-wrap:pretty;margin:18px 0 0}.upload-section{width:100%;max-width:620px;margin-top:36px}.upload-area{width:100%;padding:56px 24px;border:2px dashed var(--border-strong);border-radius:24px;background:var(--bg-panel);text-align:center;cursor:pointer;transition:border-color .15s,background-color .15s;display:flex;flex-direction:column;align-items:center;gap:16px}.upload-area:hover{border-color:var(--accent)}.upload-area.drag-over{border-color:var(--accent);border-style:solid;background:var(--accent-tint)}.upload-cloud{width:72px;height:72px;border-radius:20px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;transition:background-color .15s,color .15s}.upload-cloud svg{width:34px;height:34px}.upload-area.drag-over .upload-cloud{background:var(--accent);color:#fff}.upload-headline{font-size:17px;font-weight:600;color:var(--fg-primary);margin:0}.gpx-chip{display:inline-block;padding:1px 8px;border-radius:var(--r-chip);background:var(--accent-tint);color:var(--accent);font-size:14px;font-family:var(--font-stack)}.upload-sub{font-size:13px;color:var(--fg-secondary);margin:0}.loading-indicator{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;margin-top:24px;color:var(--fg-secondary);font-size:14px}.loading-spinner{width:32px;height:32px;border:3px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.demo-section{width:100%;max-width:620px;margin-top:32px}.demo-header{display:flex;align-items:center;gap:12px;margin-bottom:14px}.demo-label{font-size:var(--fs-caption);font-weight:600;letter-spacing:.6px;color:var(--fg-secondary);text-transform:uppercase}.demo-rule{flex:1;height:1px;background:var(--border)}.demo-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;max-width:none}.demo-btn{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-inner);cursor:pointer;transition:border-color .15s,background-color .15s;text-align:left;font-family:var(--font-stack)}.demo-btn:hover{border-color:var(--border-strong)}.demo-btn:disabled{opacity:.5;cursor:not-allowed}.demo-tile{width:36px;height:36px;border-radius:var(--r-small);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.demo-tile svg{width:20px;height:20px}.demo-tile-cycling{background:linear-gradient(135deg,#22d3ee,#0ea5e9)}.demo-tile-driving{background:linear-gradient(135deg,#f59e0b,#ea580c)}.demo-tile-running{background:linear-gradient(135deg,#a3e635,#65a30d)}.demo-tile-hiking{background:linear-gradient(135deg,#c084fc,#7c3aed)}.demo-text{display:flex;flex-direction:column;gap:2px;min-width:0}.demo-name{font-size:13px;font-weight:600;color:var(--fg-primary);line-height:1.2}.demo-detail{font-size:11px;color:var(--fg-secondary);line-height:1.2}.sample-chips{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:22px}.sample-chips-label{font-size:var(--fs-caption);color:var(--fg-secondary);font-weight:600;letter-spacing:.2px;text-transform:uppercase}.sample-chip{display:inline-flex;align-items:center;gap:7px;padding:9px 15px;border:1px solid var(--border-strong);border-radius:var(--r-pill);background:var(--subtle-bg);color:var(--fg-primary);font-family:var(--font-stack);font-size:14px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,transform .1s}.sample-chip:hover{background:var(--bg-panel);border-color:var(--accent)}.sample-chip:active{transform:translateY(1px)}.sample-chip:disabled{opacity:.5;cursor:default}.sample-chip-emoji{font-size:15px;line-height:1}.sample-chips-all{font-size:13px;color:var(--accent);text-decoration:none;font-weight:600;margin-left:2px}.sample-chips-all:hover{text-decoration:underline}@media(max-width:640px){.sample-chips{gap:8px}.sample-chips-all{width:100%}}.home-content{width:100%;max-width:860px;margin:0 auto;padding:8px 24px 72px}.home-section{padding:28px 0}.home-section+.home-section{border-top:1px solid var(--border)}.home-section h2{font-family:var(--font-display);font-size:28px;font-weight:700;letter-spacing:-.6px;color:var(--fg-primary);margin-bottom:18px;text-align:center}.home-section h3{font-size:16px;font-weight:600;color:var(--fg-primary);margin:22px 0 6px}.home-section p{font-size:15px;line-height:1.7;color:var(--fg-secondary);margin-bottom:14px}.home-section p:last-child{margin-bottom:0}.home-section a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-soft);transition:border-color .15s}.home-section a:hover{border-bottom-color:var(--accent)}.home-section code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:.88em;padding:1px 5px;border-radius:var(--r-chip);background:var(--subtle-bg);color:var(--fg-primary)}@media(max-width:640px){.home-content{padding:4px 18px 56px}.home-section h2{font-size:23px}}.upload-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:24px;border-top:1px solid var(--border);width:100%;max-width:1100px;margin:0 auto}.ios-promo{display:inline-flex;align-items:center;gap:14px;min-width:300px;padding:12px 20px;border:1px solid var(--border);border-radius:var(--r-inner);background:var(--subtle-bg);text-decoration:none;color:var(--fg-primary);transition:background .15s,border-color .15s}.ios-promo:hover{background:var(--subtle-bg);border-color:var(--border-strong)}.ios-promo-icon{width:44px;height:44px;border-radius:10px;flex-shrink:0}.ios-promo-text{display:flex;flex-direction:column;gap:1px}.ios-promo-title{font-size:16px;font-weight:600;color:var(--fg-primary);line-height:1.3}.ios-promo-sub{font-size:14px;color:var(--fg-secondary);line-height:1.3}.upload-footer-meta{display:flex;align-items:center;gap:16px;font-size:14px;color:var(--fg-secondary)}.upload-footer-meta>a{color:var(--fg-secondary);text-decoration:none;transition:color .15s}.upload-footer-meta>a:hover{color:var(--fg-primary)}.footer-meta-sep{width:1px;height:16px;background:var(--border)}.footer-bithaus{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.footer-copyright{font-size:11px;color:var(--fg-tertiary);white-space:nowrap}.bithaus-logo{display:inline-flex;align-items:center;line-height:0;opacity:.7;transition:opacity .15s}.bithaus-logo:hover{opacity:1}.bithaus-logo img{height:22px;width:auto;display:none}.bithaus-logo .bithaus-logo-light{display:block}[data-theme=dark] .bithaus-logo .bithaus-logo-light{display:none}[data-theme=dark] .bithaus-logo .bithaus-logo-dark{display:block}.map-state{position:fixed;inset:0;z-index:0}#map{position:absolute;inset:0;z-index:0}.map-toggles,.map-actions,.map-zoom{position:fixed;right:16px;z-index:14;display:flex;font-family:var(--font-stack)}.map-toggles{top:var(--top-bar-bottom, 96px);flex-direction:column;gap:8px;align-items:flex-end}.map-zoom{bottom:402px;flex-direction:column}.map-actions{bottom:292px;flex-direction:column;gap:8px}.map-toggle{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--r-inner);background:var(--glass-bar);backdrop-filter:var(--blur-overlay);-webkit-backdrop-filter:var(--blur-overlay);color:var(--fg-secondary);box-shadow:var(--shadow-map-btn);font-size:var(--fs-body);font-weight:600;cursor:pointer;font-family:var(--font-stack);transition:color .15s}.map-toggle svg{width:14px;height:14px;flex-shrink:0}.map-toggle.active{color:var(--accent)}.toggle-switch{width:22px;height:13px;background:var(--subtle-bg);border:1px solid var(--border);border-radius:var(--r-pill);position:relative;flex-shrink:0;transition:background-color .15s}.toggle-thumb{position:absolute;top:1px;left:1px;width:9px;height:9px;background:var(--fg-secondary);border-radius:50%;transition:left .15s,background-color .15s}.map-toggle.active .toggle-switch{background:var(--accent);border-color:var(--accent)}.map-toggle.active .toggle-thumb{left:10px;background:#fff}.map-icon-btn{width:40px;height:40px;border:1px solid var(--border);border-radius:var(--r-small);background:var(--glass-bar);backdrop-filter:var(--blur-overlay);-webkit-backdrop-filter:var(--blur-overlay);box-shadow:var(--shadow-map-btn);color:var(--fg-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:opacity .15s}.map-icon-btn svg{width:20px;height:20px;display:block}.map-icon-btn:hover{opacity:.85}.map-zoom{width:40px;border:1px solid var(--border);border-radius:var(--r-small);overflow:hidden;background:var(--glass-bar);backdrop-filter:var(--blur-overlay);-webkit-backdrop-filter:var(--blur-overlay);box-shadow:var(--shadow-map-btn)}.map-zoom-btn{width:100%;height:40px;border:none;background:transparent;color:var(--fg-primary);font-size:18px;font-weight:300;cursor:pointer;line-height:1}.map-zoom-btn+.map-zoom-btn{border-top:1px solid var(--border)}.map-zoom-btn:hover{background:var(--subtle-bg)}.speed-legend{position:absolute;top:var(--top-bar-bottom, 96px);left:16px;z-index:14;display:flex;flex-direction:column;gap:8px;padding:12px 14px;background:var(--glass-bar);backdrop-filter:var(--blur-overlay);-webkit-backdrop-filter:var(--blur-overlay);border:1px solid var(--border);border-radius:var(--r-inner);box-shadow:var(--shadow-overlay);pointer-events:none}.speed-legend-header{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:0;background:none;border:none;font:inherit;cursor:pointer;pointer-events:auto}.speed-legend-title{display:flex;align-items:baseline;gap:6px;font-size:var(--fs-label);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-secondary)}.speed-legend-unit{font-weight:600;letter-spacing:0;text-transform:none;color:var(--fg-tertiary)}.speed-legend-chevron{display:flex;width:13px;height:13px;color:var(--fg-tertiary);transition:transform .2s ease}.speed-legend-chevron svg{width:100%;height:100%}.speed-legend.collapsed .speed-legend-chevron{transform:rotate(180deg)}.speed-legend-bar{display:none;width:104px;height:8px;border-radius:999px;overflow:hidden}.speed-legend-bar-seg{flex:1}.speed-legend.collapsed .speed-legend-bar{display:flex}.speed-legend.collapsed .speed-legend-scale{display:none}.speed-legend-scale{display:flex;flex-direction:column;gap:5px}.speed-legend-item{display:flex;align-items:center;gap:7px}.speed-legend-dot{width:11px;height:11px;border-radius:3px;flex:none}.speed-legend-label{font-size:var(--fs-caption);font-weight:600;color:var(--fg-primary);font-variant-numeric:tabular-nums}@media(max-width:480px){.speed-legend{padding:8px 10px;gap:6px}.speed-legend .speed-legend-scale{display:none}.speed-legend .speed-legend-bar{display:flex;width:84px}.speed-legend .speed-legend-chevron{display:none}.speed-legend .speed-legend-header{pointer-events:none}}#map{transition:transform .3s ease}.arrow-marker-inner{transition:transform .2s ease}.overlay-top{position:fixed;top:16px;left:16px;right:16px;z-index:15;display:flex;align-items:center;gap:12px;padding:10px 12px 10px 16px;background:var(--glass-bar);backdrop-filter:var(--blur-overlay);-webkit-backdrop-filter:var(--blur-overlay);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow-overlay);font-family:var(--font-stack)}.track-identity{display:flex;align-items:center;gap:10px;padding-right:14px;border-right:1px solid var(--border);flex-shrink:0;max-width:min(460px,40vw)}.track-identity-icon{width:34px;height:34px;border-radius:var(--r-small);background:linear-gradient(135deg,var(--accent),var(--accent-2));display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.track-identity-icon svg{width:18px;height:18px}.track-identity-text{display:flex;flex-direction:column;gap:2px;min-width:0}.track-name{font-size:13px;font-weight:600;letter-spacing:-.1px;color:var(--fg-primary);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-sub{font-size:11px;color:var(--fg-secondary);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-sub-sep{margin:0 4px}.track-identity{position:relative}.track-activity{text-transform:capitalize;appearance:none;-webkit-appearance:none;background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:3px}.track-activity:after{content:"\25be";font-size:.85em;line-height:1;opacity:.7;flex-shrink:0}.track-activity:hover{color:var(--fg-primary)}.track-activity:hover:after{opacity:1}.metric-pills{display:flex;align-items:center;flex-wrap:wrap;gap:6px;flex:1;min-width:0}.metric-pill{flex-shrink:0;scroll-snap-align:start;display:flex;flex-direction:column;gap:2px;padding:8px 14px 8px 12px;background:var(--subtle-bg);border:1px solid var(--border);border-radius:var(--r-inner);font-variant-numeric:tabular-nums}.metric-pill-pin{cursor:pointer;transition:border-color .15s,background-color .15s}.metric-pill-pin:hover{border-color:var(--border-strong)}.metric-pill-pin.active{border-color:var(--accent);background:var(--accent-soft)}.metric-pill-pin.active .metric-pill-value{color:var(--accent)}.metric-pill-label{font-size:var(--fs-label);font-weight:500;text-transform:uppercase;letter-spacing:.6px;color:var(--fg-secondary);white-space:nowrap}.metric-pill-value{font-size:var(--fs-metric);font-weight:600;color:var(--fg-primary);white-space:nowrap;line-height:1.1}.metric-pill-unit{font-weight:500;color:var(--fg-secondary);margin-left:3px}.overlay-units{display:flex;gap:2px;padding:3px;background:var(--subtle-bg);border:1px solid var(--border);border-radius:var(--r-pill);flex-shrink:0}.unit-btn{padding:4px 10px;border:none;background:transparent;color:var(--fg-secondary);font-size:var(--fs-caption);font-weight:600;border-radius:var(--r-pill);cursor:pointer;transition:background-color .15s,color .15s}.unit-btn:hover{color:var(--fg-primary)}.unit-btn.active{background:var(--inverse-bg);color:var(--inverse-fg)}.open-file-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:var(--inverse-bg);color:var(--inverse-fg);border:none;border-radius:var(--r-pill);font-size:var(--fs-body);font-weight:600;cursor:pointer;flex-shrink:0;font-family:var(--font-stack)}.open-file-btn svg{width:14px;height:14px}.open-file-btn:hover{opacity:.9}.download-menu{position:relative;flex-shrink:0}.download-btn{background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border-strong)}.download-options{position:absolute;top:calc(100% + 6px);right:0;min-width:168px;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--r-md, 12px);box-shadow:var(--shadow-overlay);padding:6px;display:none;flex-direction:column;gap:2px;z-index:40}.download-menu.open .download-options{display:flex}.download-menu.open .download-btn{border-color:var(--fg-primary)}.download-options button{display:flex;align-items:baseline;justify-content:space-between;gap:10px;width:100%;padding:9px 12px;background:transparent;border:none;border-radius:8px;color:var(--fg-primary);font-family:var(--font-stack);font-size:var(--fs-body);font-weight:600;text-align:left;cursor:pointer}.download-options button:hover{background:var(--surface-secondary, rgba(127,127,127,.1))}.download-options .dl-note{color:var(--fg-secondary);font-size:11px;font-weight:500}.download-options .dl-sep{height:1px;margin:5px 8px;background:var(--border-strong)}.download-btn.is-busy{opacity:.6;pointer-events:none}.download-btn.is-busy span:after{content:"\2026"}.open-in-options{min-width:210px}.app-toast{position:fixed;left:50%;bottom:96px;transform:translate(-50%) translateY(8px);max-width:min(92vw,460px);z-index:60;padding:12px 16px;background:var(--bg-panel);color:var(--fg-primary);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow-overlay);font-size:13.5px;line-height:1.45;text-align:center;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}.app-toast.show{opacity:1;transform:translate(-50%) translateY(0);pointer-events:auto}.app-toast a{color:var(--accent, #3b82f6);text-decoration:none;font-weight:600;white-space:nowrap}.app-toast a:hover{text-decoration:underline}.editor-panel{position:fixed;top:96px;right:16px;width:300px;max-width:calc(100vw - 32px);max-height:calc(100vh - 180px);overflow-y:auto;z-index:55;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:14px;box-shadow:var(--shadow-overlay);font-size:13px}.editor-head{position:sticky;top:0;display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border);background:var(--bg-panel)}.editor-title{font-weight:700;color:var(--fg-primary);flex-shrink:0}.editor-undo{margin-left:auto;display:flex;gap:6px}.editor-undo button,.editor-op button,.editor-op input[type=text]{font-family:var(--font-stack);font-size:12.5px}.editor-undo button{padding:4px 10px;border-radius:7px;border:1px solid var(--border-strong);background:transparent;color:var(--fg-primary);cursor:pointer}.editor-undo button:disabled{opacity:.4;cursor:default}.editor-close{border:none;background:transparent;color:var(--fg-secondary);font-size:20px;line-height:1;cursor:pointer;padding:0 2px}.editor-body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:14px}.editor-op{display:flex;flex-direction:column;gap:7px}.editor-op>label{color:var(--fg-secondary);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.02em}.editor-op input[type=range]{width:100%;accent-color:var(--accent, #3b82f6)}.editor-range2{display:flex;flex-direction:column;gap:2px}.editor-range-label{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--fg-secondary)}.editor-op[data-tool=timestamps] .editor-range-label{flex-wrap:wrap}.editor-op[data-tool=timestamps] .editor-range-label>input{min-width:0}.editor-op[data-tool=timestamps] #tsStart{flex:1 1 100%}.editor-op[data-tool=timestamps] #tsSpeed{flex:1 1 90px}.editor-op button{padding:8px 12px;border-radius:8px;border:none;cursor:pointer;background:var(--inverse-bg);color:var(--inverse-fg);font-weight:600}.editor-op button:hover{opacity:.9}.editor-op-row button{width:100%}.editor-op-active{border-radius:8px;box-shadow:0 0 0 2px var(--accent, #3b82f6);padding:6px;margin:-6px;transition:box-shadow .3s ease}.prec-note{font-size:12px;color:var(--fg-secondary);background:var(--bg-subtle, rgba(127,127,127,.08));border-radius:6px;padding:8px}.prec-nav{display:flex;align-items:center;gap:8px}.prec-nav input[type=range]{flex:1;accent-color:var(--accent, #3b82f6)}.prec-nav button{width:32px;flex:0 0 auto;padding:4px 0;font-size:15px}.prec-fields{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px}.prec-fields label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--fg-secondary);text-transform:none;letter-spacing:0;font-weight:600}.prec-fields label:last-child{grid-column:1 / -1}.prec-fields input{width:100%;box-sizing:border-box;padding:5px 7px;border:1px solid var(--border, rgba(127,127,127,.3));border-radius:6px;background:var(--bg, #fff);color:var(--fg, #111);font-size:12px}.prec-err{font-size:11.5px;color:#dc2626}.prec-actions{display:flex;gap:6px;flex-wrap:wrap}.prec-actions button{flex:1;min-width:84px}.prec-danger{color:#dc2626!important}.prec-wpts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:160px;overflow-y:auto}.prec-wpts li{display:flex;align-items:center;gap:6px;font-size:12px}.prec-wpts .wpt-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prec-wpts button{padding:2px 8px;font-size:11px}.prec-wpt-add{display:flex;gap:6px}.prec-wpt-add input{flex:1;min-width:0;padding:5px 7px;border:1px solid var(--border, rgba(127,127,127,.3));border-radius:6px;background:var(--bg, #fff);color:var(--fg, #111);font-size:12px}.editor-op input[type=text]{flex:1;padding:7px 10px;border-radius:8px;border:1px solid var(--border-strong);background:var(--bg-page);color:var(--fg-primary)}.editor-op input[type=file]{font-size:12px;color:var(--fg-secondary)}.editor-hint{color:var(--fg-tertiary);font-size:11.5px;line-height:1.5;margin:0}.editor-hint strong{color:var(--fg-secondary)}@media(max-width:640px){.editor-panel{inset:auto 12px 12px;width:auto;max-height:60vh}}.health-panel{position:fixed;top:auto;bottom:210px;left:16px;width:320px;max-width:calc(100vw - 32px);max-height:140px;display:flex;flex-direction:column;z-index:54;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:14px;box-shadow:var(--shadow-overlay);overflow:hidden}.health-panel[hidden]{display:none}.health-head{display:flex;align-items:center;gap:10px;width:100%;padding:11px 44px 11px 14px;border:none;background:transparent;cursor:pointer;font-family:var(--font-stack);border-bottom:1px solid var(--border)}.health-close{position:absolute;top:7px;right:8px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--fg-secondary);font-size:20px;line-height:1;cursor:pointer;border-radius:7px;z-index:2}.health-close:hover{background:var(--surface-secondary, rgba(127,127,127,.12));color:var(--fg-primary)}.health-score{flex-shrink:0;min-width:34px;height:26px;padding:0 7px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;color:#fff;font-weight:700;font-size:13px}.health-title{flex:1;text-align:left;color:var(--fg-primary);font-weight:600;font-size:13.5px}.health-chevron{width:18px;height:18px;color:var(--fg-secondary);transition:transform .15s}.health-panel.collapsed .health-chevron{transform:rotate(-90deg)}.health-panel.collapsed .health-body{display:none}.health-panel.collapsed{border-bottom:none}.health-body{overflow-y:auto;padding:6px;display:flex;flex-direction:column;gap:4px}.health-finding{display:flex;align-items:flex-start;gap:9px;padding:9px 10px;border-radius:9px}.health-finding:hover{background:var(--surface-secondary, rgba(127,127,127,.08))}.health-dot{flex-shrink:0;width:9px;height:9px;border-radius:999px;margin-top:4px}.health-text{flex:1;min-width:0}.health-f-title{color:var(--fg-primary);font-weight:600;font-size:12.5px}.health-f-detail{color:var(--fg-secondary);font-size:11.5px;line-height:1.45;margin-top:2px}.health-fix{flex-shrink:0;align-self:center;padding:5px 10px;border-radius:7px;border:1px solid var(--border-strong);background:var(--bg-page);color:var(--fg-primary);font-family:var(--font-stack);font-size:12px;font-weight:600;cursor:pointer}.health-fix:hover{border-color:var(--accent, #3b82f6)}@media(max-width:640px){.health-panel{inset:auto 12px 12px;width:auto;max-height:45vh}}.live-center{position:fixed;left:50%;bottom:200px;transform:translate(-50%);z-index:16;display:flex;align-items:center;gap:16px;padding:14px 22px 14px 18px;background:var(--glass-bar);backdrop-filter:var(--blur-overlay);-webkit-backdrop-filter:var(--blur-overlay);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow-overlay-live);font-family:var(--font-stack);font-variant-numeric:tabular-nums}.live-speed-block{display:flex;align-items:center;gap:12px}.live-speed-icon{width:44px;height:44px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.live-speed-icon svg{width:22px;height:22px}.live-speed-text{display:flex;flex-direction:column;gap:2px}.live-speed-row{display:flex;align-items:baseline;gap:4px}.live-speed-value{font-size:var(--fs-live);font-weight:700;letter-spacing:-.8px;color:var(--fg-primary);line-height:1}.live-speed-unit{font-size:var(--fs-section);color:var(--fg-secondary);font-weight:500}.live-speed-caption{font-size:var(--fs-caption);font-weight:500;color:var(--fg-secondary);line-height:1}.live-divider{width:1px;height:40px;background:var(--border);flex-shrink:0}.live-meta{display:flex;flex-direction:column;gap:4px}.live-meta-row{display:flex;align-items:center;gap:14px}.live-meta-cell{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-body);font-weight:600;color:var(--fg-primary);white-space:nowrap}.live-meta-icon{width:13px;height:13px;color:var(--fg-secondary);flex-shrink:0}.live-meta-unit{color:var(--fg-secondary);font-weight:500}.live-timestamp{font-size:var(--fs-body);font-weight:600;color:var(--fg-primary)}.live-coords-btn{display:inline-flex;align-items:center;gap:5px;padding:1px 4px 1px 0;border:none;background:none;color:var(--fg-secondary);font-size:var(--fs-caption);font-weight:500;font-variant-numeric:tabular-nums;cursor:pointer;align-self:flex-start;transition:color .15s;font-family:var(--font-stack)}.live-coords-btn svg{width:12px;height:12px;flex-shrink:0}.live-coords-btn:hover{color:var(--fg-primary)}.live-coords-btn.copied{color:var(--accent)}.overlay-bottom{position:fixed;bottom:16px;left:16px;right:16px;z-index:15;background:var(--glass-bar);backdrop-filter:var(--blur-overlay);-webkit-backdrop-filter:var(--blur-overlay);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow-overlay);font-family:var(--font-stack);font-variant-numeric:tabular-nums}.playback-row{display:flex;align-items:center;gap:14px;padding:13px 18px;border-bottom:1px solid var(--border)}.charts-toggle{width:28px;height:28px;border-radius:var(--r-small);border:1px solid var(--border);background:var(--subtle-bg);color:var(--fg-secondary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:color .15s,background-color .15s;font-family:var(--font-stack)}.charts-toggle svg{width:14px;height:14px;transition:transform .2s ease}.charts-toggle:hover{color:var(--fg-primary)}.overlay-bottom.charts-collapsed .charts-toggle svg{transform:rotate(180deg)}.overlay-bottom.charts-collapsed .playback-row{border-bottom:none}.overlay-bottom.charts-collapsed .bottom-content{display:none}.speed-pills{display:flex;gap:2px;padding:3px;background:var(--subtle-bg);border:1px solid var(--border);border-radius:var(--r-pill);flex-shrink:0}.speed-pill{padding:5px 12px;border:none;background:transparent;color:var(--fg-secondary);font-size:var(--fs-body);font-weight:600;border-radius:var(--r-pill);cursor:pointer;font-family:var(--font-stack);font-variant-numeric:tabular-nums;transition:background-color .15s,color .15s}.speed-pill:hover{color:var(--fg-primary)}.speed-pill.active{background:var(--inverse-bg);color:var(--inverse-fg)}.speed-cycle{display:none;padding:5px 10px;border:1px solid var(--border);background:transparent;color:var(--fg-primary);font-size:var(--fs-body);font-weight:600;border-radius:var(--r-pill);cursor:pointer;font-family:var(--font-stack);font-variant-numeric:tabular-nums;min-width:44px}.play-btn,.stop-btn{width:38px;height:38px;border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .1s ease,opacity .15s}.play-btn{background:var(--accent);box-shadow:var(--shadow-play)}.play-btn svg{width:16px;height:16px;color:#fff}.play-btn:active{transform:scale(.96)}.stop-btn{background:var(--glass-pill);border:1px solid var(--border)}.stop-btn svg{width:12px;height:12px;color:var(--fg-primary)}.stop-btn:hover{opacity:.9}.time-label{font-size:13px;color:var(--fg-secondary);font-variant-numeric:tabular-nums;min-width:56px;flex-shrink:0}.time-total{text-align:right}.progress-bar{position:relative;height:6px;background:var(--subtle-bg);border-radius:var(--r-pill);cursor:pointer;flex:1;min-width:0}.progress-fill{height:100%;background:var(--accent);border-radius:var(--r-pill);width:0%;transition:width .1s linear}.progress-handle{position:absolute;top:50%;transform:translate(-50%,-50%);width:16px;height:16px;background:#fff;border:3px solid var(--accent);border-radius:50%;cursor:grab;box-shadow:0 1px 3px #00000026;left:0%}.progress-handle:active{cursor:grabbing}.bottom-content{display:flex;align-items:center;gap:14px;padding:12px 18px}.chart-block{flex:1;min-width:220px;display:flex;flex-direction:column;gap:4px}.chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.chart-head-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--fg-secondary)}.chart-head-value{font-size:13px;font-weight:600;color:var(--fg-primary)}.chart-canvas{position:relative;height:52px}.chart-canvas canvas{width:100%!important;height:52px!important;display:block;cursor:pointer}.bottom-promo{width:300px;flex-shrink:0;display:flex;flex-direction:column;justify-content:center;gap:10px}.promo-card{display:flex;align-items:center;gap:14px;padding:12px 16px;background:var(--subtle-bg);border:1px solid var(--border);border-radius:var(--r-inner);text-decoration:none;color:inherit;transition:border-color .15s}.promo-card:hover{border-color:var(--border-strong)}.promo-icon{width:38px;height:38px;border-radius:9px;flex-shrink:0}.promo-text-block{display:flex;flex-direction:column;min-width:0}.promo-title{font-size:14px;font-weight:600;color:var(--fg-primary);line-height:1.2}.promo-subtitle{font-size:12px;color:var(--fg-secondary);line-height:1.3;margin-top:1px}.bottom-links{display:flex;align-items:center;gap:8px;padding:0 4px;font-size:var(--fs-caption);color:var(--fg-tertiary)}.bottom-links a{color:var(--fg-secondary);text-decoration:none;font-weight:500}.bottom-links a:hover{color:var(--fg-primary)}.bottom-links-sep{color:var(--fg-tertiary)}.bottom-links-spacer{flex:1}.bottom-links .bithaus-logo{transform:translateY(-2px)}.bottom-links .bithaus-logo img{height:18px}.map-attribution{position:absolute;bottom:8px;left:20px;font-size:var(--fs-tiny);color:var(--fg-tertiary);pointer-events:none;z-index:5}.track-hover-tooltip{background:#0f172ae6!important;color:#fff!important;border:none!important;border-radius:6px!important;padding:6px 10px!important;font-size:12px!important;font-weight:500!important;box-shadow:0 4px 12px #0000004d!important;line-height:1.4!important}.track-hover-tooltip:before{border-top-color:#0f172ae6!important}@media(max-width:860px){.overlay-top{flex-wrap:wrap;gap:10px}.track-identity{flex:1 1 auto;min-width:0;max-width:min(420px,48vw);padding-right:0;border-right:none}.metric-pills{order:4;flex:1 1 100%}.open-file-btn span{display:none}.open-file-btn{padding:8px 11px}.bottom-promo{display:none}.chart-block{min-width:0}.upload-footer-meta{flex-wrap:wrap;justify-content:flex-end;row-gap:10px}.upload-footer-meta>.footer-meta-sep:nth-last-child(2){display:none}.footer-bithaus{flex-basis:100%}}@media(max-width:620px){.speed-pills,.stop-btn{display:none}.speed-cycle{display:inline-flex;align-items:center;justify-content:center}}@media(max-width:480px){.upload-nav{padding:24px 20px 14px}.upload-nav-links{gap:16px}.upload-nav-links a{font-size:13px}.upload-brand-name{font-size:14px}.upload-hero{padding:24px 16px 40px}.hero-headline{font-size:36px;letter-spacing:-1.2px}.hero-subhead{font-size:15px}.privacy-badge{font-size:10px;padding:5px 10px}.upload-area{padding:36px 16px}.upload-cloud{width:60px;height:60px;border-radius:16px}.upload-cloud svg{width:28px;height:28px}.demo-buttons{grid-template-columns:1fr 1fr;gap:8px}.demo-name{font-size:12px}.demo-detail{font-size:10px}.upload-footer{flex-direction:column;align-items:flex-start;gap:14px;padding:20px}.upload-footer-meta{gap:14px;font-size:13px;flex-wrap:wrap}.footer-bithaus{align-items:flex-start}.overlay-top{flex-wrap:wrap;top:10px;left:10px;right:10px;padding:10px;gap:8px;border-radius:var(--r-card)}.track-identity{padding-right:0;border-right:none;flex:1;max-width:none}.track-identity-icon{width:32px;height:32px}.track-identity-icon svg{width:16px;height:16px}.open-file-btn{padding:6px 10px;font-size:11px}.open-file-btn span{display:none}.open-file-btn svg{width:16px;height:16px}.overlay-units{order:5;flex-basis:100%;justify-content:center}.metric-pills{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;flex:none;flex-basis:100%;order:4;max-height:6.5rem;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.metric-pill{flex:1;flex-shrink:1;padding:6px 8px;border-radius:var(--r-small);align-items:flex-start}.metric-pill-label{font-size:var(--fs-tiny);letter-spacing:.5px}.metric-pill-value{font-size:var(--fs-section);font-weight:700}.map-toggles{top:auto;bottom:240px;gap:6px}.map-toggle{width:38px;height:38px;padding:0;border-radius:var(--r-small);justify-content:center}.map-toggle span:not(.toggle-switch),.map-toggle .toggle-switch{display:none}.map-zoom{display:none}.map-actions{bottom:152px}.map-icon-btn{width:38px;height:38px}.live-center{left:10px;right:10px;bottom:156px;transform:none;padding:10px 12px;border-radius:16px;gap:10px}.live-speed-icon{width:40px;height:40px}.live-speed-icon svg{width:18px;height:18px}.live-speed-value{font-size:26px;letter-spacing:-.5px}.live-speed-unit{font-size:11px}.live-speed-caption{font-size:var(--fs-label)}.live-divider{height:32px}.live-meta-row{gap:10px}.live-meta-cell{font-size:11px}.live-coords-btn{font-size:10px}.overlay-bottom{left:10px;right:10px;bottom:16px;border-radius:var(--r-card)}.playback-row{gap:10px;padding:12px}.speed-pills,.stop-btn{display:none}.time-label{min-width:0;font-size:10px}.bottom-content{padding:8px 12px 12px;gap:8px}.bottom-promo{display:none}.chart-block{min-width:0;min-height:40px;gap:2px}.chart-head-label{font-size:var(--fs-tiny);letter-spacing:.4px}.chart-head-value{font-size:10px}.chart-canvas{height:28px;min-height:28px}.map-attribution{display:none}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.upload-error{margin:14px auto 0;max-width:560px;padding:10px 14px;border:1px solid rgba(239,68,68,.4);border-radius:var(--r-small);background:#ef444414;color:#ef4444;font-size:var(--fs-body);font-weight:500}.upload-error[hidden]{display:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.map-state{animation:fadeIn .3s ease}.mk-map{width:100%;height:100%}.activity-menu{position:absolute;top:calc(100% + 8px);left:0;z-index:30;min-width:180px;padding:6px;display:flex;flex-direction:column;gap:2px;background:var(--glass-bar);backdrop-filter:var(--blur-overlay);-webkit-backdrop-filter:var(--blur-overlay);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow-overlay);font-family:var(--font-stack)}.activity-menu[hidden]{display:none}.activity-menu-item{appearance:none;-webkit-appearance:none;background:none;border:0;cursor:pointer;width:100%;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-inner);color:var(--fg-secondary);font-size:13px;font-weight:500;text-align:left}.activity-menu-item:hover{background:var(--subtle-bg);color:var(--fg-primary)}.activity-menu-item.selected{color:var(--fg-primary)}.activity-menu-icon{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.activity-menu-icon svg{width:18px;height:18px}.activity-menu-label{flex:1}.activity-check{width:16px;height:16px;flex-shrink:0;color:var(--accent);opacity:0}.activity-menu-item.selected .activity-check{opacity:1}.track-warning{position:fixed;top:var(--top-bar-bottom, 96px);left:50%;transform:translate(-50%);z-index:16;display:flex;align-items:center;gap:10px;max-width:min(520px,calc(100vw - 32px));margin-top:10px;padding:9px 10px 9px 14px;background:var(--glass-bar);backdrop-filter:var(--blur-overlay);-webkit-backdrop-filter:var(--blur-overlay);border:1px solid var(--danger-color);border-radius:var(--r-pill);box-shadow:var(--shadow-overlay);font-family:var(--font-stack);color:var(--fg-primary)}.track-warning[hidden]{display:none}.track-warning-icon{width:18px;height:18px;flex-shrink:0;color:var(--danger-color)}.track-warning-list{display:flex;flex-direction:column;gap:3px;font-size:12px;line-height:1.3;font-weight:500}.track-warning-close{appearance:none;-webkit-appearance:none;background:none;border:0;cursor:pointer;padding:2px;display:inline-flex;flex-shrink:0;color:var(--fg-secondary);border-radius:var(--r-small)}.track-warning-close:hover{color:var(--fg-primary)}.track-warning-close svg{width:16px;height:16px}
