*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-panel:#1a1a2e;--bg-elevated:#232340;--bg-input:#16213e;--border:#2e2e4a;--text:#e8e8e8;--text-muted:#8b8b9e;--accent:#c8102e;--accent-hover:#a00d25;--danger:#ef4444;--danger-hover:#dc2626;--success:#22c55e;--info:#2563eb;--fuel-color:#f59e0b;--fuel-bg:#f59e0b1a;--fuel-border:#f59e0b66;--accommodation-color:#8b5cf6;--accommodation-bg:#8b5cf61a;--accommodation-border:#8b5cf666;--start-color:#22c55e;--end-color:#ef4444;--via-color:#2563eb;--text-on-accent:#fff;--marker-border:#fff;--radius:8px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--accent-bg:#c8102e1a;--accent-bg-subtle:#c8102e14;--accent-bg-hover:#c8102e26;--accent-bg-strong:#c8102e4d;--danger-bg:#ef44441f;--danger-bg-hover:#ef444426;--danger-border:#ef44444d;--danger-text-light:#fca5a5;--shadow-sm:0 1px 4px #0000004d;--shadow-md:0 4px 12px #0000004d;--shadow-lg:0 8px 32px #0006;--shadow-marker:0 2px 6px #00000059;--overlay-bg:#0009;--map-loading-bg:#1a1a2ed9;--warning-bg:#ff6b351a;--warning-border:#ff6b3566;--warning-text:#ffb88c;--route-line:#c8102e;--route-casing:#0b1f4a;--closure-line:#ef4444;--roadworks-line:#f59e0b;--map-label-text:#1f2937;--map-label-halo:#fff;--elev-gradient-start:#c8102e73;--elev-gradient-end:#c8102e0d;--elev-grid:#8b8b9e;--elev-dot-fill:#fff}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-panel:#f5f5f7;--bg-elevated:#fff;--bg-input:#e8e8ed;--border:#d1d1d6;--text:#1c1c1e;--text-muted:#6e6e73;--accent-bg:#c8102e14;--accent-bg-subtle:#c8102e0f;--accent-bg-hover:#c8102e1f;--accent-bg-strong:#c8102e33;--danger-bg:#ef444414;--danger-bg-hover:#ef44441f;--danger-border:#ef444440;--danger-text-light:#b91c1c;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 4px 12px #0000001a;--shadow-lg:0 4px 16px #0000001f;--shadow-marker:0 2px 6px #00000026;--overlay-bg:#0006;--map-loading-bg:#f5f5f7e6;--warning-bg:#ea580c1a;--warning-border:#ea580c59;--warning-text:#9a3412;--elev-gradient-start:#c8102e59;--elev-gradient-end:#c8102e08;--elev-grid:#6e6e73}html,body,#root{width:100%;height:100%;font-family:var(--font);overflow:hidden}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}:focus:not(:focus-visible){outline:none}.skip-link{z-index:1000;background:var(--accent);color:var(--text-on-accent);padding:8px 16px;font-weight:600;text-decoration:none;position:absolute;top:-100%;left:0}.skip-link:focus-visible{top:0}.app-layout{width:100vw;height:100dvh;display:flex}.sidebar{background:var(--bg-panel);width:380px;min-width:380px;height:100dvh;color:var(--text);overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border-right:1px solid var(--border);z-index:10;flex-direction:column;display:flex;overflow-y:auto}.sidebar-header{border-bottom:1px solid var(--border);padding:16px 20px 12px}.app-brand{flex:1;min-width:0}.app-logo{object-fit:contain;width:100%;max-width:260px;height:auto;display:block}.panel-section{border-bottom:1px solid var(--border);padding:16px 20px}.panel-heading{text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);justify-content:space-between;align-items:center;margin-bottom:10px;font-size:12px;font-weight:600;display:flex}.search-input-wrapper{position:relative}.search-icon{pointer-events:none;color:var(--text-muted);position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search-input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);font-size:13px;font-family:var(--font);outline:none;padding:10px 12px 10px 32px;transition:border-color .15s}.search-input:focus{border-color:var(--accent)}.search-input::placeholder{color:var(--text-muted)}.search-dropdown{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);z-index:100;max-height:240px;box-shadow:var(--shadow-md);margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.search-result{cursor:pointer;border-bottom:1px solid var(--border);padding:10px 12px;transition:background .1s}.search-result:last-child{border-bottom:none}.search-result:hover,.search-result.active{background:var(--bg-input)}.search-result-name{color:var(--text);font-size:13px;font-weight:500}.search-result-detail{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;overflow:hidden}.search-result-type{color:var(--text-muted);opacity:.7}.search-loading,.search-empty{color:var(--text-muted);text-align:center;padding:12px;font-size:12px;font-style:italic}.empty-state{color:var(--text-muted);padding:8px 0;font-size:13px;font-style:italic}.waypoint-list{flex-direction:column;gap:4px;list-style:none;display:flex}.waypoint-item{background:var(--bg-elevated);border-radius:var(--radius);cursor:grab;border:1px solid #0000;align-items:center;gap:8px;padding:8px;transition:background .15s,opacity .15s;display:flex}.waypoint-item:hover{background:var(--bg-input)}.waypoint-item.dragging{opacity:.4}.waypoint-item.drag-over{border-color:var(--accent)}.drag-handle{color:var(--text-muted);cursor:grab;-webkit-user-select:none;user-select:none;font-size:16px;line-height:1}.waypoint-badge{width:22px;height:22px;color:var(--text-on-accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.badge-start{background:var(--success)}.badge-end{background:var(--danger)}.badge-mid{background:var(--info)}.badge-fuel{background:var(--fuel-color)}.badge-accommodation{background:var(--accommodation-color)}.waypoint-type-btn{border:1px solid var(--border);color:var(--text-muted);font-size:10px;font-weight:700;font-family:var(--font);cursor:pointer;background:0 0;border-radius:4px;flex-shrink:0;padding:2px 6px;line-height:1;transition:color .15s,background .15s,border-color .15s}.waypoint-type-btn:hover{border-color:var(--text-muted);background:var(--bg-input)}.waypoint-type-btn.badge-fuel{color:var(--fuel-color);border-color:var(--fuel-border);background:var(--fuel-bg)}.waypoint-type-btn.badge-accommodation{color:var(--accommodation-color);border-color:var(--accommodation-border);background:var(--accommodation-bg)}.waypoint-coords{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;flex:1;font-family:SF Mono,Fira Code,monospace;font-size:12px;overflow:hidden}.waypoint-coords.has-name{font-family:var(--font);color:var(--text)}.waypoint-delete{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0 4px;font-size:18px;line-height:1;transition:color .15s,background .15s}.waypoint-delete:hover{color:var(--danger);background:var(--danger-bg-hover)}.profile-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.profile-btn{background:var(--bg-elevated);border-radius:var(--radius);cursor:pointer;color:var(--text);text-align:left;border:2px solid #0000;flex-direction:column;align-items:flex-start;padding:10px 12px;transition:border-color .15s,background .15s;display:flex}.profile-btn:hover{border-color:var(--border);background:var(--bg-input)}.profile-btn.active{border-color:var(--accent);background:var(--accent-bg)}.profile-label{font-size:14px;font-weight:600}.profile-desc{color:var(--text-muted);margin-top:2px;font-size:11px}.slider-value{color:var(--accent);text-transform:none;letter-spacing:0;font-size:14px;font-weight:700}.curviness-range{appearance:none;background:var(--bg-input);cursor:pointer;border-radius:3px;outline:none;width:100%;height:6px}.curviness-range::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);cursor:pointer;border:2px solid var(--marker-border);width:18px;height:18px;box-shadow:var(--shadow-sm);border-radius:50%}.curviness-range::-moz-range-thumb{background:var(--accent);cursor:pointer;border:2px solid var(--marker-border);width:18px;height:18px;box-shadow:var(--shadow-sm);border-radius:50%}.curviness-range:disabled{opacity:.35;cursor:not-allowed}.curviness-range:disabled::-webkit-slider-thumb{cursor:not-allowed}.slider-labels{color:var(--text-muted);justify-content:space-between;margin-top:6px;font-size:11px;display:flex}.slider-note{color:var(--text-muted);margin-top:6px;font-size:11px;font-style:italic}.summary-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.summary-item{flex-direction:column;gap:2px;display:flex}.summary-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:11px}.summary-value{color:var(--text);font-size:16px;font-weight:600}.summary-value.capitalize{text-transform:capitalize}.loading-text{color:var(--text-muted);font-size:13px;font-style:italic}.recalc-badge{color:var(--accent);text-transform:none;letter-spacing:0;font-size:10px;font-weight:600;animation:1s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.route-error{background:var(--danger-bg);border-left:3px solid var(--danger);border-radius:0 var(--radius) var(--radius) 0;color:var(--danger-text-light);padding:10px 12px;font-size:13px;line-height:1.4}.controls-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.ctrl-btn{font-size:13px;font-weight:600;font-family:var(--font);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);color:var(--text);cursor:pointer;padding:9px 12px;transition:background .15s,border-color .15s,opacity .15s}.ctrl-btn:hover:not(:disabled){background:var(--bg-input);border-color:var(--text-muted)}.ctrl-btn:disabled{opacity:.35;cursor:not-allowed}.ctrl-btn.ctrl-primary{background:var(--accent);border-color:var(--accent);color:var(--text-on-accent)}.ctrl-btn.ctrl-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.ctrl-btn.ctrl-danger{color:var(--danger);border-color:var(--danger-border)}.ctrl-btn.ctrl-danger:hover:not(:disabled){background:var(--danger-bg);border-color:var(--danger)}.incidents-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;display:flex}.toggle-checkbox{opacity:0;width:0;height:0;position:absolute}.toggle-switch{background:var(--bg-input);border:1px solid var(--border);border-radius:10px;flex-shrink:0;width:36px;height:20px;transition:background .2s,border-color .2s;position:relative}.toggle-switch:after{content:"";background:var(--text-muted);border-radius:50%;width:14px;height:14px;transition:transform .2s,background .2s;position:absolute;top:2px;left:2px}.toggle-checkbox:checked+.toggle-switch{background:var(--accent-bg-strong);border-color:var(--accent)}.toggle-checkbox:checked+.toggle-switch:after{background:var(--accent);transform:translate(16px)}.toggle-text{color:var(--text);font-size:13px}.incidents-count{color:var(--accent);background:var(--accent-bg-hover);border-radius:10px;margin-left:auto;padding:1px 7px;font-size:11px;font-weight:600}.main-panel{flex-direction:column;flex:1;min-width:0;height:100dvh;display:flex;overflow:hidden}.map-wrapper{flex:1;position:relative}.map-inner{position:absolute;inset:0}.map-inner canvas{outline:none}.map-loading{z-index:5;background:var(--map-loading-bg);border-radius:var(--radius);pointer-events:none;align-items:center;gap:8px;padding:8px 14px;display:flex;position:absolute;top:12px;left:12px}.map-loading:after{content:"Calculating...";color:var(--text-muted);font-size:12px;font-family:var(--font)}.map-loading-spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:14px;height:14px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.mode-toggle{border-radius:var(--radius);border:1px solid var(--border);gap:0;display:flex;overflow:hidden}.mode-btn{font-size:13px;font-weight:600;font-family:var(--font);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;border:none;flex:1;padding:9px 0;transition:background .15s,color .15s}.mode-btn:hover{background:var(--bg-input);color:var(--text)}.mode-btn.active{background:var(--accent);color:var(--text-on-accent)}.rt-field{margin-bottom:12px}.rt-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:6px;font-size:11px;font-weight:600;display:block}.rt-start-display{color:var(--text);background:var(--bg-elevated);border-radius:var(--radius);border:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;padding:8px 10px;font-size:13px;overflow:hidden}.rt-input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);font-size:14px;font-family:var(--font);outline:none;padding:9px 12px;transition:border-color .15s}.rt-input:focus{border-color:var(--accent)}.rt-direction-grid{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.rt-dir-btn{font-size:12px;font-weight:600;font-family:var(--font);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;border-radius:4px;padding:7px 0;transition:background .15s,border-color .15s,color .15s}.rt-dir-btn:hover{background:var(--bg-input);color:var(--text)}.rt-dir-btn.active{border-color:var(--accent);background:var(--accent-bg-hover);color:var(--accent)}.rt-dir-btn:first-child{grid-column:1/-1}.rt-generate-btn{width:100%;margin-top:4px;margin-bottom:8px}.rt-error{margin-top:8px}.rt-alternatives{margin-top:12px}.rt-alt-heading{color:var(--text-muted);margin-bottom:8px;font-size:12px;font-weight:600}.rt-alt-list{flex-direction:column;gap:4px;list-style:none;display:flex}.rt-alt-item{background:var(--bg-elevated);border-radius:var(--radius);cursor:pointer;border:2px solid #0000;padding:10px 12px;transition:border-color .15s,background .15s}.rt-alt-item:hover{background:var(--bg-input)}.rt-alt-item.active{border-color:var(--accent);background:var(--accent-bg-subtle)}.rt-alt-header{justify-content:space-between;align-items:center;display:flex}.rt-alt-direction{color:var(--text);font-size:13px;font-weight:600}.rt-alt-curviness{color:var(--accent);font-size:13px;font-weight:700}.rt-alt-details{color:var(--text-muted);margin-top:3px;font-size:12px}.rt-load-btn{width:100%;margin-top:8px}.maplibregl-ctrl-attrib{font-size:10px!important}.elevation-chart{background:var(--bg-elevated);border-top:1px solid var(--border);cursor:crosshair;-webkit-user-select:none;user-select:none;flex-shrink:0;height:150px;position:relative}.elevation-chart svg{display:block}.elev-hover-marker{background:var(--elev-dot-fill);border:2px solid var(--accent);width:12px;height:12px;box-shadow:0 0 6px var(--accent-bg-strong);pointer-events:none;border-radius:50%}.moto-marker{width:28px;height:28px;color:var(--text-on-accent);border:2px solid var(--marker-border);cursor:grab;box-shadow:var(--shadow-marker);font-size:13px;font-weight:700;font-family:var(--font);border-radius:50%;justify-content:center;align-items:center;display:flex}.moto-marker--start{background:var(--start-color)}.moto-marker--end{background:var(--end-color)}.moto-marker--via{background:var(--via-color)}.moto-marker--fuel{background:var(--fuel-color)}.moto-marker--accommodation{background:var(--accommodation-color)}.elevation-tooltip{pointer-events:none;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);white-space:nowrap;z-index:10;box-shadow:var(--shadow-md);padding:5px 10px;font-size:12px;position:absolute}.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-track{background:0 0}.sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.auth-overlay{background:var(--overlay-bg);z-index:200;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.auth-modal{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);width:400px;max-width:90vw;box-shadow:var(--shadow-lg);padding:28px 24px;position:relative}.auth-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:24px;line-height:1;transition:color .15s;position:absolute;top:12px;right:16px}.auth-close:hover{color:var(--text)}.auth-title{color:var(--text);margin-bottom:16px;font-size:18px;font-weight:700}.auth-form{flex-direction:column;gap:10px;display:flex}.auth-input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);font-size:13px;font-family:var(--font);outline:none;padding:10px 12px;transition:border-color .15s}.auth-input:focus{border-color:var(--accent)}.auth-input::placeholder{color:var(--text-muted)}.auth-error{background:var(--danger-bg);border-left:3px solid var(--danger);border-radius:0 var(--radius) var(--radius) 0;color:var(--danger-text-light);padding:8px 10px;font-size:12px;line-height:1.4}.auth-submit{width:100%;margin-top:4px}.auth-divider{align-items:center;gap:12px;margin:16px 0;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.auth-divider span{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px}.auth-oauth{flex-direction:column;gap:8px;display:flex}.auth-oauth-btn{text-align:center;width:100%;text-decoration:none;display:block}.user-info{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.user-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:12px;font-weight:600;overflow:hidden}.user-signout{color:var(--text-muted);cursor:pointer;font-size:11px;font-family:var(--font);background:0 0;border:none;padding:0;transition:color .15s}.user-signout:hover{color:var(--accent)}.signin-btn{padding:6px 12px;font-size:12px}.save-route-form{margin-bottom:12px}.saved-routes-list{flex-direction:column;gap:4px;list-style:none;display:flex}.saved-route-item{background:var(--bg-elevated);border-radius:var(--radius);cursor:pointer;border:1px solid #0000;padding:10px 12px;transition:border-color .15s,background .15s}.saved-route-item:hover{background:var(--bg-input);border-color:var(--border)}.saved-route-header{justify-content:space-between;align-items:center;display:flex}.saved-route-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;font-weight:600;overflow:hidden}.saved-route-meta{color:var(--text-muted);margin-top:3px;font-size:11px}.route-toggle-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0 4px;font-size:13px;line-height:1;transition:color .15s,background .15s}.route-toggle-btn:hover{color:var(--text);background:var(--bg-input)}.language-selector{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;display:flex}.language-select{background:var(--bg-input);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:4px;flex:none;padding:6px 10px;font-family:inherit;font-size:13px}.language-select:focus{outline:2px solid var(--accent);outline-offset:1px}.maplibregl-popup-content{background:var(--bg-elevated);color:var(--text);box-shadow:var(--shadow-md)}.maplibregl-popup-tip{border-top-color:var(--bg-elevated)!important;border-bottom-color:var(--bg-elevated)!important}.maplibregl-popup-close-button{color:var(--text-muted)}.maplibregl-popup-close-button:hover{background:var(--bg-input);color:var(--text)}
