.logo-mascot{position:relative;display:inline-block;width:42px;height:42px;vertical-align:middle;margin-right:10px;filter:drop-shadow(0 0 6px rgba(74,208,179,.45));transform-origin:50% 80%;animation:atlas-mascot-scratch 6.5s ease-in-out infinite}.logo-mascot-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;image-rendering:pixelated;image-rendering:-moz-crisp-edges}.logo-mascot-eyes-closed{opacity:0;animation:atlas-mascot-blink 5.4s ease-in-out infinite}@keyframes atlas-mascot-blink{0%,92%,to{opacity:0}94%,97%{opacity:1}}@keyframes atlas-mascot-scratch{0%,60%,to{transform:rotate(0) translateY(0)}68%{transform:rotate(-3deg) translateY(-1px)}72%{transform:rotate(2deg) translateY(-2px)}76%{transform:rotate(-3deg) translateY(-1px)}80%{transform:rotate(2deg) translateY(-2px)}86%{transform:rotate(0) translateY(0)}}.atlas-switch-row{display:flex;align-items:center;gap:12px;cursor:pointer;font-size:13px;color:var(--text-secondary, #cbd5e1);-webkit-user-select:none;user-select:none;padding:6px 4px;border-radius:8px;transition:background .15s ease}.atlas-switch-row:hover{background:#ffffff08}.atlas-switch-row__text{flex:1}.atlas-switch-row__title{color:var(--text-primary, #f1f5f9)}.atlas-switch-row__help{display:block;font-size:11px;color:var(--text-secondary, #94a3b8);margin-top:2px}.auto-loop-stack{display:flex;flex-direction:column;gap:8px}.auto-loop-info{font-size:11px;line-height:1.45;color:var(--primary-400, #4ad0b3);background:#4ad0b314;border:1px solid rgba(74,208,179,.25);border-radius:6px;padding:8px 10px}.auto-loop-label{font-size:12px;color:var(--text-secondary, #94a3b8)}.input-range--full{width:100%}.atlas-switch-input{position:absolute;opacity:0;pointer-events:none}.atlas-switch{flex:0 0 auto;position:relative;display:inline-block;width:52px;height:28px;background:#1b232e;border:1px solid rgba(255,255,255,.18);border-radius:999px;box-shadow:inset 0 1px 2px #0006;transition:background .22s cubic-bezier(.16,1,.3,1),border-color .22s cubic-bezier(.16,1,.3,1),box-shadow .22s cubic-bezier(.16,1,.3,1)}.atlas-switch:before{content:"OFF";position:absolute;top:50%;right:8px;transform:translateY(-50%);font-size:9px;font-weight:700;letter-spacing:.06em;color:#ffffffb3;font-family:var(--font-sans);pointer-events:none;transition:opacity .18s ease,color .18s ease}.atlas-switch:after{content:"";position:absolute;top:2px;left:2px;width:22px;height:22px;background:#e8edf4;border-radius:50%;box-shadow:0 2px 4px #0006,0 1px 2px #0000004d,inset 0 1px #fff3;transition:transform .22s cubic-bezier(.34,1.56,.64,1),background .18s ease}.atlas-switch-input:checked+.atlas-switch{background:linear-gradient(135deg,#4ad0b3,#38b89e);border-color:#4ad0b3;box-shadow:inset 0 1px 2px #00000026,0 0 0 3px #4ad0b32e}.atlas-switch-input:checked+.atlas-switch:before{content:"ON";right:auto;left:8px;color:#062a23}.atlas-switch-input:checked+.atlas-switch:after{background:#fff;transform:translate(24px);box-shadow:0 2px 6px #0000004d,0 0 12px #4ad0b380}.atlas-switch-input:focus-visible+.atlas-switch{outline:none;box-shadow:inset 0 1px 2px #0000004d,0 0 0 3px #4ad0b373}.atlas-switch-input:checked:focus-visible+.atlas-switch{box-shadow:inset 0 1px 2px #00000026,0 0 0 4px #4ad0b373}.atlas-switch-row:hover .atlas-switch{border-color:#4ad0b399}.atlas-switch-row:hover .atlas-switch:after{transform:scale(1.05)}.atlas-switch-row:hover .atlas-switch-input:checked+.atlas-switch:after{transform:translate(24px) scale(1.05)}.atlas-switch-row:active .atlas-switch:after{width:26px}.atlas-switch-input:disabled+.atlas-switch{opacity:.5;cursor:not-allowed}input[type=checkbox]:not(.atlas-switch-input):not([class*=leaflet]){-moz-appearance:none;appearance:none;-webkit-appearance:none;width:18px;height:18px;flex-shrink:0;background:var(--bg-tertiary, #1f2a34);border:1.5px solid rgba(255,255,255,.25);border-radius:5px;cursor:pointer;position:relative;vertical-align:middle;margin:0 8px 0 0;transition:background .15s cubic-bezier(.16,1,.3,1),border-color .15s cubic-bezier(.16,1,.3,1),transform .1s ease,box-shadow .15s ease}input[type=checkbox]:not(.atlas-switch-input):not([class*=leaflet]):hover{border-color:var(--accent, #4ad0b3);background:#4ad0b314}input[type=checkbox]:not(.atlas-switch-input):not([class*=leaflet]):checked{background:linear-gradient(135deg,#4ad0b3,#38b89e);border-color:#4ad0b3;box-shadow:0 0 0 3px #4ad0b32e}input[type=checkbox]:not(.atlas-switch-input):not([class*=leaflet]):checked:after{content:"";position:absolute;top:50%;left:50%;width:10px;height:10px;transform:translate(-50%,-55%);background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none'%3E%3Cpath d='M2 5L4.5 7.5L8.5 2.5' stroke='%23062a23' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat}input[type=checkbox]:not(.atlas-switch-input):not([class*=leaflet]):focus-visible{outline:none;box-shadow:0 0 0 3px #4ad0b373}input[type=checkbox]:not(.atlas-switch-input):not([class*=leaflet]):active{transform:scale(.92)}input[type=checkbox]:not(.atlas-switch-input):not([class*=leaflet]):disabled{opacity:.5;cursor:not-allowed}:root{--bg-primary: #0f1720;--bg-secondary: #141c26;--bg-tertiary: #1f2a34;--bg-elevated: #243140;--border: rgba(232, 237, 244, .1);--border-strong:rgba(232, 237, 244, .18);--text-primary: #e8edf4;--text-muted: #9aa3b5;--text-subtle: rgba(154, 163, 181, .85);--accent: #4ad0b3;--accent-hover: #72f0cf;--accent-strong:#38b89e;--accent-soft: rgba(74, 208, 179, .14);--accent-rgb: 74, 208, 179;--accent-2: #60a5fa;--accent-2-rgb: 96, 165, 250;--danger: #ef4444;--warning: #f59e0b;--success: #22c55e;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 14px rgba(0, 0, 0, .45);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .55);--shadow-glow: 0 0 16px rgba(var(--accent-rgb), .2);--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--toolbar-h: 54px;--sidebar-w: 300px;--elevation-h: 250px;--font-sans: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;font-family:var(--font-sans);font-weight:400;color:var(--text-primary);background:var(--bg-primary);overflow:hidden;-webkit-font-smoothing:antialiased;letter-spacing:-.005em}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(rgba(232,237,244,.08) 1px,transparent 1px);background-size:14px 14px;pointer-events:none;z-index:0;opacity:.5}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}a{color:var(--accent)}#map{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--bg-primary);z-index:1}#map.cursor-crosshair,#map.cursor-crosshair *{cursor:crosshair!important}.leaflet-control-layers{background:var(--bg-secondary)!important;color:var(--text-primary)!important;border:1px solid var(--border)!important;border-radius:8px!important;box-shadow:var(--shadow-md)!important}.leaflet-control-layers-expanded{padding:10px 12px!important}.leaflet-control-attribution{background:#0a0a0a99!important;color:var(--text-muted)!important;padding:2px 6px!important;font-size:10px!important}.leaflet-control-attribution a{color:var(--text-muted)!important}.leaflet-bar{background:var(--bg-secondary)!important;border:1px solid var(--border)!important;box-shadow:var(--shadow-md)!important}.leaflet-bar a{background:var(--bg-secondary)!important;color:var(--text-primary)!important;border-bottom:1px solid var(--border)!important}.leaflet-bar a:hover{background:var(--bg-tertiary)!important}.top-progress{position:fixed;top:var(--toolbar-h);left:0;right:0;height:3px;background:#0003;z-index:var(--z-progress, 1001);overflow:hidden}.top-progress-fill{height:100%;width:0%;background:var(--accent);border-radius:0 2px 2px 0;transition:width .3s ease;box-shadow:0 0 8px rgba(var(--accent-rgb),.5)}.top-progress-fill.indeterminate{width:30%;animation:indeterminate 1.2s ease-in-out infinite}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(400%)}}#toolbar{position:fixed;top:0;left:0;right:0;height:var(--toolbar-h);background:#0a0a0ad9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 12px;z-index:var(--z-header, 1000);gap:12px}.toolbar-section{display:flex;align-items:center;gap:8px}.toolbar-left{min-width:auto}.toolbar-center{flex:1;justify-content:center;overflow:hidden}.toolbar-right{margin-left:auto}.logo{margin:0;font-size:16px;font-weight:700;letter-spacing:.05em;color:var(--text-primary)}.logo-accent{color:var(--accent)}.stats-bar{display:flex;gap:20px;padding:6px 18px;background:#ffffff0a;border-radius:999px;border:1px solid var(--border)}.stat{display:flex;flex-direction:column;align-items:center;line-height:1.2;min-width:56px}.stat-label{font-size:10px;text-transform:uppercase;color:var(--text-subtle);letter-spacing:.05em}.stat-value{font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--text-primary)}#sidebar{position:fixed;top:var(--toolbar-h);bottom:0;left:0;width:var(--sidebar-w);background:#0a0a0aeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-right:1px solid var(--border);overflow:hidden;padding:20px 16px;display:flex;flex-direction:column;gap:0;z-index:var(--z-sidebar, 900)}.sidebar-section{display:flex;flex-direction:column;gap:10px}.sidebar-title{margin:0 0 2px;font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-subtle);font-weight:600;display:flex;align-items:center;justify-content:space-between}.title-badge{background:var(--accent-soft);color:var(--accent);padding:2px 6px;border-radius:4px;font-size:9px;letter-spacing:0;text-transform:none}.mode-current-label{color:var(--accent);font-weight:600;font-size:11px;letter-spacing:0;text-transform:none}.choice-chips{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px 0 0}.choice-chips--five{grid-template-columns:repeat(5,1fr);gap:4px}.choice-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:9px 6px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:10px;color:var(--text-muted);font-size:11px;font-weight:500;letter-spacing:.01em;cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .08s;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.choice-chip svg{flex-shrink:0;opacity:.85}.choice-chip:hover{background:var(--bg-secondary);border-color:var(--accent);color:var(--text-primary)}.choice-chip:active{transform:scale(.96)}.choice-chip.active,.choice-chip[aria-checked=true]{background:rgba(var(--accent-rgb),.16);border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 1px rgba(var(--accent-rgb),.25),0 4px 14px rgba(var(--accent-rgb),.18)}.choice-chip.active svg,.choice-chip[aria-checked=true] svg{opacity:1}.choice-chip:disabled,.choice-chip[aria-disabled=true]{opacity:.4;cursor:not-allowed;pointer-events:none}.choice-chips--five .choice-chip{padding:8px 2px;font-size:10px;border-radius:8px;gap:3px}.mode-description{font-size:11px;color:var(--text-muted);line-height:1.45;padding:8px 2px 0}.strict-toggle{display:flex;align-items:flex-start;gap:10px;margin-top:10px;padding:12px 14px;background:#64748b0f;border:1.5px solid rgba(100,116,139,.35);border-radius:10px;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .2s}.strict-toggle:hover{background:#f59e0b1a;border-color:#f59e0b80}.strict-toggle input[type=checkbox]{margin-top:2px;width:18px;height:18px;accent-color:#ef4444;cursor:pointer;flex-shrink:0}.strict-toggle.active{background:#ef44442e;border-color:#ef4444;box-shadow:0 0 0 3px #ef444426,inset 0 0 12px #ef444414;animation:strict-pulse 2.5s ease-in-out infinite}@keyframes strict-pulse{0%,to{box-shadow:0 0 0 3px #ef444426,inset 0 0 12px #ef444414}50%{box-shadow:0 0 0 5px #ef44444d,inset 0 0 18px #ef444426}}.strict-toggle-text{display:flex;flex-direction:column;gap:3px;font-size:12px;line-height:1.35;flex:1}.strict-toggle-text strong{color:var(--text-muted);font-weight:700;font-size:13px;display:flex;align-items:center;gap:8px}.strict-toggle.active .strict-toggle-text strong{color:#ef4444}.strict-toggle-text small{color:var(--text-muted);font-size:10.5px;line-height:1.35}.strict-state-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.5px;background:#64748b4d;color:#94a3b8;border:1px solid rgba(100,116,139,.4)}.strict-toggle.active .strict-state-badge{background:#ef4444;color:#fff;border-color:#ef4444;box-shadow:0 0 8px #ef444480}.search-progress{position:absolute;top:70px;left:50%;transform:translate(-50%);z-index:950;background:#0f172af5;color:#e2e8f0;border:1px solid rgba(245,158,11,.4);border-radius:10px;padding:10px 14px;font-size:12px;min-width:280px;max-width:420px;box-shadow:0 6px 24px #00000080;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.search-progress-title{font-weight:700;color:#f59e0b;margin-bottom:6px;display:flex;align-items:center;gap:8px}.search-progress-title:before{content:"";width:10px;height:10px;border-radius:50%;background:#f59e0b;animation:pulse-dot 1s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.7)}}.search-progress-step{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:11.5px}.search-progress-step.done{color:#22c55e}.search-progress-step.failed{color:#ef4444}.search-progress-step.active{color:#f59e0b;font-weight:600}.search-progress-step.pending{color:#64748b}.search-progress-step .step-icon{width:14px;display:inline-block;text-align:center}.routing-status-progress{position:relative;height:3px;width:100%;background:rgba(var(--accent-rgb),.12);border-radius:2px;margin-top:6px;overflow:hidden}.routing-status-progress:after{content:"";position:absolute;top:0;bottom:0;left:-40%;width:40%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:routing-progress-slide 1.2s ease-in-out infinite}@keyframes routing-progress-slide{0%{left:-40%}to{left:100%}}.btn-accent{background:linear-gradient(135deg,var(--accent),var(--accent-hover));color:var(--bg-primary);font-weight:600;border:none}.btn-accent:not(:disabled):hover{filter:brightness(1.1)}.btn-small{padding:6px 10px;font-size:12px}.btn-group-vertical{display:flex;flex-direction:column;gap:6px}.btn-row{display:flex;gap:6px}.btn-row .btn{flex:1}.input-text,.input-select,.input-textarea{width:100%;padding:9px 12px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-size:13px;transition:border-color .15s}.input-text:focus,.input-select:focus,.input-textarea:focus{outline:none;border-color:var(--accent)}.input-textarea{resize:vertical;min-height:72px;font-family:var(--font-sans)}.input-select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6' fill='none'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23888' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.spinner{width:16px;height:16px;border:2px solid var(--bg-elevated);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.wpt-pin{position:relative;width:30px;height:42px;cursor:grab;filter:drop-shadow(0 2px 4px rgba(0,0,0,.45));transition:transform .15s ease}.wpt-pin:active{cursor:grabbing}.wpt-pin:hover{transform:translateY(-2px)}.wpt-pin svg{display:block;width:100%;height:100%;overflow:visible}.wpt-pin-body{fill:var(--accent);stroke:#ffffffd9;stroke-width:1.4}.wpt-pin-dot{fill:#fff}.wpt-pin-num{position:absolute;top:5px;left:0;width:30px;text-align:center;font-family:var(--font-mono);font-weight:700;font-size:14px;line-height:20px;color:var(--bg-primary);pointer-events:none;letter-spacing:-.3px}.wpt-pin.start .wpt-pin-body{fill:var(--success)}.wpt-pin.end .wpt-pin-body{fill:var(--danger)}.leaflet-control-layers{display:none!important}.map-sidecar-root{position:fixed;right:0;top:50%;z-index:var(--z-sidebar, 900);display:flex;align-items:center;pointer-events:none;transform:translate(220px,-50%);transition:transform var(--duration-base, .22s) var(--ease-out, ease)}.map-sidecar-root[data-open=true]{transform:translateY(-50%)}.map-sidecar-toggle{pointer-events:auto;position:relative;width:28px;height:56px;border:1px solid var(--border-default);border-right:none;background:var(--accent);color:var(--text-on-accent, #062a23);border-radius:10px 0 0 10px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;box-shadow:var(--shadow-md);transition:background var(--duration-fast, .15s) var(--ease-out, ease),transform var(--duration-fast, .15s) var(--ease-out, ease);z-index:1}.map-sidecar-toggle:hover{background:var(--accent-hover, var(--accent));transform:translate(-1px)}.map-sidecar-toggle:focus-visible{outline:none;box-shadow:var(--shadow-focus, 0 0 0 3px rgba(74, 208, 179, .35)),var(--shadow-md)}.map-sidecar-chevron{transition:transform var(--duration-base, .22s) var(--ease-out, ease)}.map-sidecar-root[data-open=true] .map-sidecar-chevron{transform:rotate(180deg)}.map-sidecar-panel{pointer-events:auto;position:relative;width:220px;max-width:calc(100vw - 36px);background:var(--surface-overlay, rgba(23, 30, 43, .92));backdrop-filter:blur(var(--blur-md, 12px));-webkit-backdrop-filter:blur(var(--blur-md, 12px));border:1px solid var(--border-default);border-right:none;border-radius:12px 0 0 12px;padding:12px 12px 14px;box-shadow:var(--shadow-lg, 0 12px 24px rgba(0,0,0,.4))}.map-sidecar-title{font-family:var(--font-sans);font-size:var(--text-xs, 11px);font-weight:var(--font-weight-semibold, 600);color:var(--text-secondary);text-transform:uppercase;letter-spacing:var(--tracking-wider, .08em);margin:0 0 10px 2px}.layer-switch{display:flex;flex-direction:column;gap:4px}.geo-search{position:fixed;top:calc(var(--toolbar-h) + 12px);left:50%;transform:translate(-50%);width:min(420px,calc(100% - 24px));z-index:var(--z-sidebar, 900);font-family:Inter,-apple-system,sans-serif}.geo-search-input-wrap{display:flex;align-items:center;background:#0a0a0ad9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:10px;padding:0 10px;box-shadow:var(--shadow-md);height:38px}.geo-search-icon{color:#888;flex-shrink:0}#geo-search-input{flex:1;background:transparent;border:none;outline:none;color:#fff;font-size:16px;padding:0 10px;min-width:0}#geo-search-input::placeholder{color:#888}.geo-search-clear{background:transparent;border:none;color:#888;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center}.geo-search-clear:hover{color:#fff;background:#ffffff14}.geo-search-results{margin-top:6px;background:#0a0a0aeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:10px;overflow:hidden;max-height:320px;overflow-y:auto;box-shadow:var(--shadow-md)}.geo-search-item{padding:10px 14px;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.05);font-size:13px;color:#fff;line-height:1.35}.geo-search-item:last-child{border-bottom:none}.geo-search-item:hover,.geo-search-item.active{background:#4ad0b31f}.geo-search-item-name{font-weight:500}.geo-search-item-detail{font-size:11px;color:#888;margin-top:2px}.geo-search-empty{padding:12px 14px;font-size:12px;color:#888;text-align:center}.geo-search-badge{padding:4px 12px;font-size:10px;letter-spacing:.5px;color:#4ad0b3;text-transform:uppercase;border-bottom:1px solid rgba(255,255,255,.06);background:#4ad0b30f}.geo-search-history-header{padding:8px 14px;font-size:10px;letter-spacing:.5px;color:#888;text-transform:uppercase;border-bottom:1px solid rgba(255,255,255,.06)}.geo-search-history-item{position:relative;padding-right:32px}.geo-search-history-del{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:#666;font-size:18px;cursor:pointer;padding:4px 8px;border-radius:4px;line-height:1}.geo-search-history-del:hover{color:#fff;background:#ffffff14}@media (max-width: 640px){.geo-search{width:calc(100% - 12px);top:calc(var(--toolbar-h) + 6px)}}.layer-switch-btn{background:transparent;border:1px solid transparent;color:var(--text-secondary);padding:8px 10px;width:100%;border-radius:var(--radius-sm, 6px);font-size:var(--text-sm, 12px);font-weight:var(--font-weight-semibold, 600);font-family:var(--font-sans);display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;transition:background var(--duration-fast, .15s) var(--ease-out, ease),color var(--duration-fast, .15s) var(--ease-out, ease),border-color var(--duration-fast, .15s) var(--ease-out, ease);line-height:1.2;text-align:left}.layer-switch-btn:hover{background:#ffffff0d;color:var(--text-primary)}.layer-switch-btn:focus-visible{outline:none;border-color:var(--border-focus, var(--accent));box-shadow:var(--shadow-focus, 0 0 0 3px rgba(74, 208, 179, .35))}.layer-switch-btn.active{background:var(--accent-subtle, rgba(74, 208, 179, .12));color:var(--accent);border-color:var(--accent)}.layer-switch-flag{font-size:10px;opacity:.7;line-height:1;font-weight:var(--font-weight-medium, 500);letter-spacing:var(--tracking-wide, .02em);padding:2px 6px;border-radius:var(--radius-xs, 4px);background:#ffffff0f;flex-shrink:0}.layer-switch-btn.active .layer-switch-flag{background:#4ad0b32e;opacity:1}.layer-switch-label{font-size:var(--text-sm, 12px);font-weight:var(--font-weight-semibold, 600);flex:1}@media (max-width: 768px){.map-sidecar-panel{width:200px;padding:10px 10px 12px}.map-sidecar-toggle{width:26px;height:52px}.layer-switch-btn{padding:7px 8px}.layer-switch-label{font-size:var(--text-xs, 11px)}}.mode-active-badge{margin-left:auto;background:var(--accent);color:var(--bg-primary);font-size:10px;font-weight:700;padding:2px 6px;border-radius:999px;animation:badge-pulse 1.4s ease-in-out infinite}@keyframes badge-pulse{0%,to{opacity:1}50%{opacity:.55}}.char-counter{font-size:10px;color:var(--text-subtle);text-align:right;margin-top:-4px;padding:0 2px;font-family:var(--font-mono)}.char-counter.warn{color:var(--warning)}.char-counter.over{color:var(--danger)}.input-with-toggle{position:relative;display:flex;align-items:center}.input-with-toggle .input-text{padding-right:38px}.input-reveal-btn{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:6px;border-radius:4px;display:flex;align-items:center;justify-content:center}.input-reveal-btn:hover{color:var(--accent);background:rgba(var(--accent-rgb),.08)}@supports (padding: env(safe-area-inset-top)){#toolbar{padding-top:env(safe-area-inset-top);height:calc(var(--toolbar-h) + env(safe-area-inset-top))}#sidebar,#elevation-panel{padding-bottom:env(safe-area-inset-bottom)}.floating-action{bottom:calc(28px + env(safe-area-inset-bottom))}}@media (max-width: 768px){.stats-bar{gap:10px;padding:4px 10px}.stat{min-width:40px}.stat-value{font-size:11px}.stat-label{font-size:9px}}@media (max-width: 480px){.stats-bar{display:none}.toolbar-center{flex:0}}.btn:disabled{opacity:.38;cursor:not-allowed;color:var(--text-subtle)!important}.floating-action{position:fixed;bottom:28px;right:28px;padding:12px 18px;background:var(--accent);color:var(--bg-primary);border:none;border-radius:999px;font-family:var(--font-sans);font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px;cursor:pointer;box-shadow:0 6px 20px rgba(var(--accent-rgb),.45),0 2px 6px #0000004d;transition:transform .15s,filter .15s;z-index:var(--z-dropzone, 1100);animation:floating-pulse 2.5s ease-in-out infinite}.floating-action:hover{transform:translateY(-2px);filter:brightness(1.08)}@keyframes floating-pulse{0%,to{box-shadow:0 6px 20px rgba(var(--accent-rgb),.45),0 2px 6px #0000004d}50%{box-shadow:0 6px 28px rgba(var(--accent-rgb),.7),0 2px 6px #0000004d}}@media (max-width: 768px){.floating-action{right:12px;bottom:80px;padding:10px 14px;font-size:12px}}.routing-status{position:fixed;bottom:18px;left:50%;transform:translate(-50%) translateY(20px);background:#0a0a0aeb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:14px;padding:10px 18px 9px;display:flex;flex-direction:column;align-items:stretch;gap:6px;font-size:12px;color:var(--text-primary);z-index:var(--z-toast, 5000);opacity:0;transition:all .2s;pointer-events:none;box-shadow:var(--shadow-lg);min-width:220px}.routing-status-row{display:flex;align-items:center;gap:10px}.routing-status.visible{opacity:1;transform:translate(-50%) translateY(0)}.history-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;gap:10px}.history-item+.history-item{margin-top:6px}.history-item-left{flex:1;min-width:0}.history-item-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:3px}.history-item-score{font-family:var(--font-mono);font-size:13px;font-weight:700}.history-item-mode{background:#ffffff0f;padding:2px 7px;border-radius:4px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.history-item-strat{font-size:10px;color:var(--accent)}.history-item-meta{font-size:11px;color:var(--text-subtle);font-family:var(--font-mono)}.history-item-actions{display:flex;gap:4px;flex-shrink:0}.legend-badge{font-family:var(--font-mono);font-size:11px;font-weight:600;margin-left:8px}.legend-strategy{display:block;font-size:10px;color:var(--text-subtle);font-style:italic;margin-bottom:8px}.color-legend{position:fixed;left:calc(var(--sidebar-w) + 12px);bottom:12px;background:#0f1720f2;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:6px 10px;min-width:210px;max-width:280px;font-size:12px;z-index:var(--z-overlay, 500);opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s,padding .2s;pointer-events:none;box-shadow:var(--shadow-md)}.color-legend.visible{opacity:1;transform:translateY(0);pointer-events:auto}.color-legend.is-open{padding:8px 12px 12px}.legend-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;width:calc(100% + 20px);margin:0 -10px;padding:8px 12px;background:transparent;border:none;color:inherit;cursor:pointer;border-radius:var(--radius-md);text-align:left;font:inherit;transition:background .15s}.legend-toggle:hover{background:rgba(var(--accent-rgb),.06)}.legend-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.color-legend.is-open .legend-toggle{margin-bottom:4px}.legend-chevron{flex-shrink:0;color:var(--accent);transition:transform .25s ease;transform:rotate(0)}.color-legend.is-open .legend-chevron{transform:rotate(180deg)}.legend-body{overflow:hidden;animation:legendSlideDown .22s ease-out}.legend-body[hidden]{display:none}@keyframes legendSlideDown{0%{opacity:0;max-height:0;transform:translateY(-4px)}to{opacity:1;max-height:600px;transform:translateY(0)}}.legend-title{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-weight:600;display:inline-flex;align-items:center;gap:0}.legend-row{display:flex;align-items:center;gap:8px;padding:4px 6px;margin:0 -6px;border-radius:4px;transition:background .12s}.legend-row.clickable{cursor:pointer}.legend-row.clickable:hover{background:rgba(var(--accent-rgb),.08)}.legend-row.active{background:rgba(var(--accent-rgb),.18);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.35)}.legend-hint{font-size:9px;color:var(--text-subtle);font-style:italic;margin-bottom:6px;padding:0 2px}.legend-prioritized{display:flex;align-items:center;gap:6px;padding:5px 8px;margin-bottom:6px;background:rgba(var(--accent-rgb),.15);border:1px solid rgba(var(--accent-rgb),.3);border-radius:6px;font-size:11px;color:var(--accent)}.legend-prioritized-clear{margin-left:auto;background:transparent;border:none;color:var(--accent);font-size:14px;cursor:pointer;line-height:1;padding:0 4px}.legend-prioritized-clear:hover{color:var(--accent-hover)}.legend-swatch{width:14px;height:3px;border-radius:2px;flex-shrink:0;box-shadow:0 0 0 1px #ffffff1a}.legend-label{flex:1;color:var(--text-primary)}.legend-value{color:var(--text-muted);font-family:var(--font-mono);font-size:11px}#elevation-panel.visible~.color-legend,body:has(#elevation-panel.visible) .color-legend{bottom:calc(var(--elevation-h) + 12px)}.alternatives-panel{position:fixed;left:calc(var(--sidebar-w) + 12px);bottom:12px;background:#0f1720f2;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:6px 10px;min-width:240px;max-width:340px;font-size:13px;color:#e2e8f0;z-index:var(--z-overlay, 500);box-shadow:var(--shadow-md);display:none;transition:padding .2s}.alternatives-panel.is-open{padding:8px 12px 12px}.color-legend.visible~.alternatives-panel,body:has(.color-legend.visible) .alternatives-panel{left:calc(var(--sidebar-w) + 12px + 280px + 10px)}#elevation-panel.visible~.alternatives-panel,body:has(#elevation-panel.visible) .alternatives-panel{bottom:calc(var(--elevation-h) + 12px)}.alternatives-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;width:calc(100% + 20px);margin:0 -10px;padding:8px 12px;background:transparent;border:none;color:inherit;cursor:pointer;border-radius:var(--radius-md);text-align:left;font:inherit;transition:background .15s}.alternatives-toggle:hover{background:rgba(var(--accent-rgb),.06)}.alternatives-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.alternatives-panel.is-open .alternatives-toggle{margin-bottom:4px}.alternatives-title{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-weight:600;display:inline-flex;align-items:center;gap:6px}.alternatives-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;border-radius:9px;background:rgba(var(--accent-rgb),.18);color:var(--accent);font-size:11px;font-weight:700;letter-spacing:0}.alternatives-badge--loading{background:#94a3b82e;color:#94a3b8}.alternatives-chevron{flex-shrink:0;color:var(--accent);transition:transform .25s ease;transform:rotate(0)}.alternatives-panel.is-open .alternatives-chevron{transform:rotate(180deg)}.alternatives-body{overflow:hidden;animation:legendSlideDown .22s ease-out}.alternatives-body[hidden]{display:none}.alt-list{display:flex;flex-direction:column;gap:6px;max-height:240px;overflow-y:auto}.alt-item{display:flex;align-items:center;gap:10px;padding:8px 10px;background:#1e293b99;border-radius:6px;cursor:pointer;transition:background .15s}.alt-item:hover{background:#334155d9}.alt-bullet{color:#fff;min-width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0}.alt-info{flex:1;font-weight:600;color:#f1f5f9;font-size:13px}.alt-source{font-size:10px;margin-left:6px;font-weight:700}.alt-choose{color:#fff;border:none;padding:4px 10px;border-radius:4px;cursor:pointer;font-size:12px;font-weight:600;transition:filter .15s}.alt-choose:hover{filter:brightness(1.1)}.alt-choose:focus-visible{outline:2px solid #fff;outline-offset:1px}.alt-empty{padding:14px 8px;font-size:12px;color:#94a3b8;text-align:center;line-height:1.5}.alt-empty-sub{color:#64748b;font-size:11px}.alt-hint{margin-top:8px;font-size:11px;color:var(--text-subtle);font-style:italic}@media (max-width: 768px){.color-legend{left:12px;bottom:12px;min-width:auto;max-width:calc(100vw - 24px)}}#elevation-panel{position:fixed;left:var(--sidebar-w);right:0;bottom:-300px;height:var(--elevation-h);background:var(--bg-secondary);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:3px solid var(--accent);box-shadow:0 -4px 20px #00000080;transition:bottom .25s ease;z-index:var(--z-overlay, 500);display:flex;flex-direction:column}#elevation-panel.visible{bottom:0}.elevation-header{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;border-bottom:1px solid var(--border)}.elevation-header h4{margin:0;font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em}.elevation-body{flex:1;padding:8px 14px;position:relative;min-height:180px}#elevation-chart{width:100%!important;height:100%!important;min-height:160px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal-backdrop, 2000);padding:20px}.modal-overlay.visible,.modal-overlay:not([style*="display:none"]):not([style*="display: none"]){display:flex}#settings-panel{display:none}#settings-panel.visible{display:flex!important}.modal-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:14px;width:100%;max-width:480px;box-shadow:var(--shadow-lg);max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.modal-header h3{margin:0;font-size:16px;font-weight:600}.settings-group{display:flex;flex-direction:column;gap:6px}.settings-label{font-size:12px;color:var(--text-muted);font-weight:500}.settings-hint{font-size:11px;color:var(--text-subtle);line-height:1.4}.settings-summary{color:var(--text-muted);cursor:pointer;font-size:12px}.drop-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(var(--accent-rgb),.15);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:4px dashed var(--accent);display:flex;align-items:center;justify-content:center;z-index:var(--z-dropzone, 1100);pointer-events:none}.drop-message{text-align:center;color:var(--accent)}.drop-message p{font-size:18px;margin-top:12px;font-weight:500}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%) translateY(20px);padding:12px 22px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-lg);font-size:13px;font-weight:500;color:var(--text-primary);z-index:var(--z-toast, 5000);opacity:0;transition:all .2s;max-width:90vw;pointer-events:none}.toast.visible{opacity:1;transform:translate(-50%) translateY(0)}.toast-info{border-left:3px solid var(--accent)}.toast-success{border-left:3px solid var(--success)}.toast-error{border-left:3px solid var(--danger)}.route-list{display:flex;flex-direction:column;gap:6px;max-height:400px;overflow-y:auto}.route-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;gap:10px}.route-item-info{flex:1;min-width:0}.route-item-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.route-item-meta{font-size:11px;color:var(--text-subtle);font-family:var(--font-mono)}.route-item-actions{display:flex;gap:4px}@media (max-width: 768px){:root{--sidebar-w: 100%;--elevation-h: 160px}#sidebar{transform:translate(-100%);transition:transform .25s ease;max-width:360px;box-shadow:var(--shadow-lg)}#sidebar.open{transform:translate(0)}#elevation-panel{left:0}.toolbar-center{display:none}.stats-bar{gap:10px;padding:4px 10px}.logo{font-size:14px}}@media (max-width: 480px){.stat-label{display:none}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-subtle)}.sidebar-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin:-20px -16px 0;padding:0;flex-shrink:0}.sidebar-tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:12px 8px 10px;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-subtle);font-family:var(--font-sans);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:all .15s}.sidebar-tab:hover{color:var(--text-muted);background:#ffffff08}.sidebar-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.sidebar-tab svg{opacity:.6;transition:opacity .15s}.sidebar-tab.active svg{opacity:1}.sidebar-tab-content{display:none;flex-direction:column;gap:18px;padding-top:16px;flex:1;overflow-y:auto;min-height:0}.sidebar-tab-content.active{display:flex}.sidebar-section-bottom{margin-top:auto}.cat-filter-reset{background:transparent;border:1px solid var(--border);color:var(--text-subtle);font-size:10px;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:4px;cursor:pointer;transition:all .15s ease}.cat-filter-reset:hover{color:var(--text-primary);border-color:var(--text-subtle)}.cat-filter-presets{display:flex;gap:4px;margin-bottom:8px}.cat-filter-preset{flex:1;padding:6px 4px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;color:var(--text-subtle);font-size:11px;font-family:inherit;font-weight:500;cursor:pointer;transition:all .15s ease;text-align:center;line-height:1.2}.cat-filter-preset:hover{color:var(--text-primary);border-color:var(--text-subtle);background:var(--bg-secondary)}.cat-filter-preset.active{color:var(--accent);border-color:var(--accent);background:var(--accent-soft);font-weight:600}.cat-filter-hint{font-size:10px;color:var(--text-subtle);font-family:JetBrains Mono,monospace;margin-top:6px;padding:4px 6px;border-radius:4px;transition:all .2s ease}.cat-filter-hint[data-active=true]{color:var(--accent);font-weight:500;background:var(--accent-soft)}.cat-filter-list{display:flex;flex-direction:column;gap:4px}.cat-filter-row{display:flex;align-items:stretch;gap:4px}.cat-filter-main{flex:1;display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-size:12px;cursor:pointer;transition:all .15s ease;text-align:left;font-family:inherit}.cat-filter-main:hover{border-color:var(--text-subtle);background:var(--bg-secondary)}.cat-filter-row[data-state=must] .cat-filter-main{border-color:#22c55e;background:#22c55e14}.cat-filter-row[data-state=ban] .cat-filter-main{border-color:#ef4444;background:#ef444414;opacity:.75}.cat-filter-row[data-state=ban] .cat-filter-label{text-decoration:line-through}.cat-filter-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 1px #0003}.cat-filter-label{flex:1;font-size:11px;line-height:1.2}.cat-filter-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border-radius:4px;flex-shrink:0}.cat-filter-badge-neutral{background:transparent;color:var(--text-subtle);border:1px solid var(--border)}.cat-filter-badge-must{background:#22c55e;color:#fff;border:1px solid #22c55e}.cat-filter-badge-ban{background:#ef4444;color:#fff;border:1px solid #ef4444}.cat-filter-eye{display:flex;align-items:center;justify-content:center;width:32px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;color:var(--text-subtle);cursor:pointer;transition:all .15s ease}.cat-filter-eye:hover{color:var(--text-primary);border-color:var(--text-subtle)}.cat-filter-eye.active{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.cat-filter-eye.pulse{animation:cat-filter-pulse .32s ease-out}@keyframes cat-filter-pulse{0%{transform:scale(1)}50%{transform:scale(1.18);box-shadow:0 0 0 4px var(--accent-soft)}to{transform:scale(1)}}.zone-downloaded{cursor:default}.zone-available{cursor:pointer}.zone-available:hover{fill-opacity:.2!important}#btn-toggle-zones.active{background:var(--accent, #4ad0b3);color:var(--bg-primary, #0f1923);border-color:var(--accent, #4ad0b3)}.routing-health-banner{position:fixed;top:16px;left:50%;transform:translate(-50%,-8px);z-index:1100;display:flex;align-items:center;gap:12px;max-width:min(560px,calc(100vw - 32px));padding:10px 14px;background:#1e1212f5;border:1px solid rgba(248,113,113,.45);border-left:3px solid #f87171;border-radius:8px;box-shadow:0 8px 24px #00000059;color:#f1f5f9;font-size:13px;line-height:1.4;opacity:0;transition:opacity .16s ease,transform .16s ease}.routing-health-banner.visible{opacity:1;transform:translate(-50%)}.routing-health-banner .rhb-icon{flex:0 0 auto;color:#f87171;display:flex;align-items:center}.routing-health-banner .rhb-text{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;min-width:0}.routing-health-banner .rhb-title{font-weight:600;color:#fecaca}.routing-health-banner .rhb-hint{font-size:11px;color:#cbd5e1}.routing-health-banner .rhb-retry{flex:0 0 auto;background:var(--accent, #4ad0b3);color:#0f1923;border:none;padding:6px 12px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:background .12s ease}.routing-health-banner .rhb-retry:hover{background:#5cdcc0}.routing-health-banner .rhb-close{flex:0 0 auto;background:transparent;border:none;color:#94a3b8;padding:4px;cursor:pointer;display:flex;align-items:center;border-radius:4px}.routing-health-banner .rhb-close:hover{color:#f1f5f9;background:#ffffff0f}:root{--primary-50: #ecfdf7;--primary-100: #d0f7e8;--primary-200: #a6ecd3;--primary-300: #74dec0;--primary-400: #4ad0b3;--primary-500: #22b99a;--primary-600: #13987e;--primary-700: #0d7a66;--primary-800: #0a5f50;--primary-900: #07433a;--accent: var(--primary-400);--accent-hover: var(--primary-300);--accent-active: var(--primary-500);--accent-subtle: rgba(74, 208, 179, .12);--accent-strong: var(--primary-300);--neutral-0: #ffffff;--neutral-50: #f6f8fa;--neutral-100: #e5e9ef;--neutral-200: #c9d1dc;--neutral-300: #9aa5b5;--neutral-400: #6b7688;--neutral-500: #4a5566;--neutral-600: #323c4d;--neutral-700: #232c3c;--neutral-800: #171e2b;--neutral-900: #0d131d;--neutral-1000: #000000;--accent-warm: #f59e0b;--accent-warm-hover: #fbbf24;--accent-warm-active: #d97706;--accent-warm-subtle: rgba(245, 158, 11, .14);--success-fg: #34d399;--success-bg: rgba(52, 211, 153, .12);--success-border: rgba(52, 211, 153, .35);--success-strong: #10b981;--warning-fg: #fbbf24;--warning-bg: rgba(251, 191, 36, .12);--warning-border: rgba(251, 191, 36, .35);--warning-strong: #f59e0b;--danger-fg: #f87171;--danger-bg: rgba(248, 113, 113, .12);--danger-border: rgba(248, 113, 113, .35);--danger-strong: #ef4444;--info-fg: #60a5fa;--info-bg: rgba(96, 165, 250, .12);--info-border: rgba(96, 165, 250, .35);--info-strong: #3b82f6;--surface-0: var(--neutral-900);--surface-1: var(--neutral-800);--surface-2: var(--neutral-700);--surface-3: var(--neutral-600);--surface-overlay: rgba(23, 30, 43, .92);--surface-inverse: var(--neutral-50);--border-subtle: rgba(255, 255, 255, .06);--border-default: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .18);--border-focus: var(--primary-400);--text-primary: #e8ecf2;--text-secondary: #a5adba;--text-tertiary: #6b7688;--text-disabled: #4a5566;--text-inverse: #0d131d;--text-on-accent: #062a23;--scrim-light: rgba(7, 10, 16, .35);--scrim-medium: rgba(7, 10, 16, .55);--scrim-heavy: rgba(7, 10, 16, .78);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--text-xs: 11px;--text-sm: 12px;--text-base: 14px;--text-md: 15px;--text-lg: 17px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 32px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--leading-tight: 1.2;--leading-normal: 1.45;--leading-relaxed: 1.65;--tracking-tight: -.02em;--tracking-normal: 0;--tracking-wide: .02em;--tracking-wider: .08em;--space-0: 0;--space-1: 2px;--space-2: 4px;--space-3: 6px;--space-4: 8px;--space-5: 12px;--space-6: 16px;--space-7: 20px;--space-8: 24px;--space-9: 32px;--space-10: 40px;--space-11: 48px;--space-12: 64px;--space-13: 80px;--space-14: 96px;--space-15: 128px;--space-16: 160px;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .25);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .3), 0 1px 2px rgba(0, 0, 0, .25);--shadow-md: 0 4px 10px rgba(0, 0, 0, .35), 0 2px 4px rgba(0, 0, 0, .25);--shadow-lg: 0 12px 24px rgba(0, 0, 0, .4), 0 4px 8px rgba(0, 0, 0, .25);--shadow-xl: 0 24px 48px rgba(0, 0, 0, .45), 0 8px 16px rgba(0, 0, 0, .3);--shadow-2xl: 0 40px 80px rgba(0, 0, 0, .55), 0 16px 32px rgba(0, 0, 0, .35);--shadow-glow-accent: 0 0 0 1px rgba(74, 208, 179, .25), 0 8px 24px rgba(74, 208, 179, .2);--shadow-focus: 0 0 0 3px rgba(74, 208, 179, .35);--duration-instant: .1s;--duration-fast: .15s;--duration-base: .22s;--duration-slow: .4s;--duration-slower: .6s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--z-base: 0;--z-raised: 10;--z-overlay: 500;--z-sticky: 100;--z-sidebar: 900;--z-header: 1000;--z-progress: 1001;--z-dropzone: 1100;--z-modal-backdrop: 2000;--z-modal: 2010;--z-onboarding: 3000;--z-toast: 5000;--z-tooltip: 5500;--z-confetti: 9999;--blur-sm: 6px;--blur-md: 12px;--blur-lg: 20px;--blur-xl: 32px}:root.theme-light{--surface-0: var(--neutral-50);--surface-1: var(--neutral-0);--surface-2: var(--neutral-100);--surface-3: var(--neutral-200);--surface-overlay: rgba(255, 255, 255, .95);--surface-inverse: var(--neutral-900);--border-subtle: rgba(13, 19, 29, .06);--border-default: rgba(13, 19, 29, .12);--border-strong: rgba(13, 19, 29, .22);--text-primary: var(--neutral-900);--text-secondary: var(--neutral-600);--text-tertiary: var(--neutral-400);--text-disabled: var(--neutral-300);--text-inverse: var(--neutral-0);--scrim-light: rgba(13, 19, 29, .15);--scrim-medium: rgba(13, 19, 29, .35);--scrim-heavy: rgba(13, 19, 29, .55)}*,*:before,*:after{box-sizing:border-box}html,body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,ul,ol,pre,fieldset,legend{margin:0;padding:0}html,body,#app{height:100%}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:var(--leading-normal)}body{font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--font-weight-regular);line-height:var(--leading-normal);color:var(--text-primary);background-color:var(--surface-0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-synthesis:none;min-height:100vh;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit;line-height:var(--leading-tight)}ul[role=list],ol[role=list]{list-style:none}a{color:var(--accent);text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}a:hover{color:var(--accent-hover)}img,picture,video,canvas,svg{display:block;max-width:100%;height:auto}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;line-height:inherit;text-align:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed}input,button,textarea,select{font:inherit;color:inherit}input,textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;padding:0;margin:0;font-size:16px;touch-action:manipulation}a,label,[role=button],summary{touch-action:manipulation;-webkit-tap-highlight-color:transparent}textarea{resize:vertical;min-height:64px}input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}table{border-collapse:collapse;border-spacing:0}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.95em}:focus{outline:none}:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:var(--radius-xs)}::selection{background-color:var(--accent);color:var(--text-on-accent)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--border-strong);border-radius:var(--radius-full);border:2px solid transparent;background-clip:padding-box;transition:background-color var(--duration-fast) var(--ease-out)}::-webkit-scrollbar-thumb:hover{background-color:var(--neutral-400);background-clip:padding-box;border:2px solid transparent}::-webkit-scrollbar-corner{background:transparent}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}hr{height:1px;border:0;background-color:var(--border-default);margin:var(--space-6) 0}summary{cursor:pointer}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1;letter-spacing:var(--tracking-normal);border:1px solid transparent;background-color:transparent;color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;text-decoration:none;transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),transform var(--duration-instant) var(--ease-out)}.btn:active:not(:disabled){transform:scale(.98)}.btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{background-color:var(--accent);color:var(--text-on-accent);border-color:var(--accent);font-weight:var(--font-weight-semibold)}.btn-primary:hover:not(:disabled){background-color:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary:active:not(:disabled){background-color:var(--accent-active);border-color:var(--accent-active)}.btn-secondary{background-color:var(--surface-2);color:var(--text-primary);border-color:var(--border-subtle)}.btn-secondary:hover:not(:disabled){background-color:var(--surface-3);border-color:var(--border-default)}.btn-ghost{background-color:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background-color:var(--surface-1);color:var(--text-primary)}.btn-danger{background-color:var(--danger-strong);color:var(--neutral-0);border-color:var(--danger-strong)}.btn-danger:hover:not(:disabled){background-color:var(--danger-fg);border-color:var(--danger-fg)}.btn-icon{padding:var(--space-4);width:36px;height:36px;gap:0}.btn-icon svg{width:16px;height:16px;flex-shrink:0}.btn-sm{padding:var(--space-3) var(--space-5);font-size:var(--text-sm);border-radius:var(--radius-sm)}.btn-sm.btn-icon{padding:var(--space-3);width:28px;height:28px}.btn-lg{padding:var(--space-5) var(--space-8);font-size:var(--text-md);border-radius:var(--radius-md)}.btn-lg.btn-icon{padding:var(--space-5);width:44px;height:44px}.btn.loading{color:transparent!important;pointer-events:none;position:relative}.btn.loading:after{content:"";position:absolute;width:14px;height:14px;top:50%;left:50%;margin-top:-7px;margin-left:-7px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;color:var(--text-on-accent);animation:btn-spin .7s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}.input{display:block;width:100%;padding:var(--space-4) var(--space-5);font-family:var(--font-sans);font-size:var(--text-base);color:var(--text-primary);background-color:var(--surface-1);border:1px solid var(--border-default);border-radius:var(--radius-md);line-height:var(--leading-normal);transition:border-color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.input::placeholder{color:var(--text-tertiary)}.input:hover:not(:disabled):not(:focus){border-color:var(--border-strong)}.input:focus{outline:none;border-color:var(--border-focus);box-shadow:var(--shadow-focus);background-color:var(--surface-2)}.input:disabled{opacity:.55;cursor:not-allowed}.input-error{border-color:var(--danger-fg)}.input-error:focus{box-shadow:0 0 0 3px var(--danger-bg)}.input-success{border-color:var(--success-fg)}.input-success:focus{box-shadow:0 0 0 3px var(--success-bg)}.input-group{position:relative;display:flex;align-items:center}.input-group .input{padding-left:var(--space-10)}.input-group-icon{position:absolute;left:var(--space-5);width:16px;height:16px;color:var(--text-tertiary);pointer-events:none}.textarea{display:block;width:100%;padding:var(--space-5);font-family:var(--font-sans);font-size:var(--text-base);color:var(--text-primary);background-color:var(--surface-1);border:1px solid var(--border-default);border-radius:var(--radius-md);line-height:var(--leading-normal);min-height:96px;resize:vertical;transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:var(--shadow-focus)}.select-native{display:block;width:100%;padding:var(--space-4) var(--space-10) var(--space-4) var(--space-5);font-family:var(--font-sans);font-size:var(--text-base);color:var(--text-primary);background-color:var(--surface-1);border:1px solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%239aa5b5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-5) center;background-size:12px;transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.select-native:focus{outline:none;border-color:var(--border-focus);box-shadow:var(--shadow-focus)}.checkbox,.radio,.switch{display:inline-flex;align-items:center;gap:var(--space-5);cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-primary);font-size:var(--text-base)}.checkbox input,.radio input,.switch input{position:absolute;opacity:0;pointer-events:none}.checkbox-mark,.radio-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0;background-color:var(--surface-1);border:1px solid var(--border-strong);transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.checkbox-mark{border-radius:var(--radius-xs)}.radio-mark{border-radius:var(--radius-full)}.checkbox input:checked+.checkbox-mark,.radio input:checked+.radio-mark{background-color:var(--accent);border-color:var(--accent)}.checkbox input:checked+.checkbox-mark:after{content:"";width:10px;height:10px;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none'%3E%3Cpath d='M2 5L4.5 7.5L8.5 2.5' stroke='%23062a23' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat}.radio input:checked+.radio-mark:after{content:"";width:6px;height:6px;background-color:var(--text-on-accent);border-radius:var(--radius-full)}.checkbox input:focus-visible+.checkbox-mark,.radio input:focus-visible+.radio-mark{box-shadow:var(--shadow-focus)}.switch-track{position:relative;width:36px;height:20px;background-color:var(--surface-3);border-radius:var(--radius-full);flex-shrink:0;transition:background-color var(--duration-base) var(--ease-out)}.switch-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;background-color:var(--neutral-0);border-radius:var(--radius-full);box-shadow:var(--shadow-xs);transition:transform var(--duration-base) var(--ease-spring)}.switch input:checked+.switch-track{background-color:var(--accent)}.switch input:checked+.switch-track .switch-thumb{transform:translate(16px)}.switch input:focus-visible+.switch-track{box-shadow:var(--shadow-focus)}.search-input{position:relative;display:flex;align-items:center}.search-input .input{padding-left:var(--space-10);padding-right:var(--space-10)}.search-input-icon{position:absolute;left:var(--space-5);width:16px;height:16px;color:var(--text-tertiary);pointer-events:none}.search-input-clear{position:absolute;right:var(--space-4);display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-full);color:var(--text-tertiary);background:transparent;border:0;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.search-input-clear:hover{background-color:var(--surface-3);color:var(--text-primary)}.chip{display:inline-flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-5);background-color:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-full);color:var(--text-secondary);font-size:var(--text-xs);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-wide);line-height:1.4;transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.chip-accent{background-color:var(--accent-subtle);border-color:var(--accent);color:var(--accent-strong)}.chip-success{background-color:var(--success-bg);border-color:var(--success-border);color:var(--success-fg)}.chip-warning{background-color:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-fg)}.chip-danger{background-color:var(--danger-bg);border-color:var(--danger-border);color:var(--danger-fg)}.chip-removable{padding-right:var(--space-3)}.chip-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:var(--radius-full);background:transparent;border:0;color:currentColor;opacity:.6;cursor:pointer;transition:opacity var(--duration-fast) var(--ease-out)}.chip-remove:hover{opacity:1;background-color:#ffffff14}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 var(--space-3);background-color:var(--danger-strong);color:var(--neutral-0);font-size:10px;font-weight:var(--font-weight-semibold);border-radius:var(--radius-full);line-height:1}.badge-dot{display:inline-block;width:8px;height:8px;border-radius:var(--radius-full);background-color:var(--danger-strong);padding:0;min-width:0}.card{background-color:var(--surface-1);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-8);box-shadow:var(--shadow-sm);transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}@media (max-width: 640px){.card{padding:var(--space-6)}}.card-interactive{cursor:pointer}.card-interactive:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--border-strong)}.card-interactive:active{transform:translateY(0)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);margin-bottom:var(--space-6)}.card-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-4);margin-top:var(--space-7);padding-top:var(--space-6);border-top:1px solid var(--border-subtle)}.list-group{background-color:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden;list-style:none;padding:0;margin:0}.list-item{display:flex;align-items:center;gap:var(--space-5);padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--border-subtle);color:var(--text-primary);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out)}.list-item:last-child{border-bottom:none}.list-item:hover{background-color:var(--surface-2)}.list-item:focus-visible{outline:none;background-color:var(--surface-2);box-shadow:inset 2px 0 0 var(--accent)}.list-item-meta{display:flex;flex-direction:column;gap:var(--space-1);flex:1;min-width:0}.list-item-title{font-size:var(--text-base);font-weight:var(--font-weight-medium);color:var(--text-primary)}.list-item-subtitle{font-size:var(--text-sm);color:var(--text-secondary)}.list-item-actions{display:flex;align-items:center;gap:var(--space-3);margin-left:auto}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-base{font-size:var(--text-base)}.text-md{font-size:var(--text-md)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-3xl{font-size:var(--text-3xl)}.text-muted{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.text-primary{color:var(--text-primary)}.text-accent{color:var(--accent)}.text-danger{color:var(--danger-fg)}.text-success{color:var(--success-fg)}.text-warning{color:var(--warning-fg)}.text-display{font-size:var(--text-3xl);font-weight:var(--font-weight-bold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}.text-heading-1{font-size:var(--text-2xl);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}.text-heading-2{font-size:var(--text-xl);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight)}.text-heading-3{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight)}.text-mono{font-family:var(--font-mono);font-feature-settings:"tnum"}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-uppercase{text-transform:uppercase;letter-spacing:var(--tracking-wider)}.surface-raised{background-color:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-md)}.surface-floating{background-color:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.surface-modal{background-color:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-2xl)}.glass{background-color:var(--surface-overlay);backdrop-filter:blur(var(--blur-md)) saturate(140%);-webkit-backdrop-filter:blur(var(--blur-md)) saturate(140%);border:1px solid var(--border-default);border-radius:var(--radius-lg)}.divider{width:100%;height:1px;background-color:var(--border-subtle);border:0;margin:var(--space-6) 0}.divider.vertical{width:1px;height:auto;min-height:100%;align-self:stretch;margin:0 var(--space-5)}.divider-with-text{display:flex;align-items:center;gap:var(--space-5);color:var(--text-tertiary);font-size:var(--text-xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;margin:var(--space-6) 0}.divider-with-text:before,.divider-with-text:after{content:"";flex:1;height:1px;background-color:var(--border-subtle)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-full);background-color:var(--accent);color:var(--text-on-accent);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);line-height:1;overflow:hidden;flex-shrink:0;-webkit-user-select:none;user-select:none}.avatar img{width:100%;height:100%;object-fit:cover}.avatar-sm{width:24px;height:24px;font-size:var(--text-xs)}.avatar-lg{width:48px;height:48px;font-size:var(--text-md)}.skeleton{display:inline-block;background-color:var(--surface-2);background-image:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.04) 40%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.04) 60%,transparent 100%);background-size:200% 100%;animation:shimmer 1.6s var(--ease-in-out) infinite;border-radius:var(--radius-sm)}.skeleton-text{height:12px;width:100%;border-radius:var(--radius-xs)}.skeleton-box{display:block;width:100%;height:80px;border-radius:var(--radius-md)}.skeleton-circle{width:36px;height:36px;border-radius:var(--radius-full)}.progress-bar{width:100%;height:6px;background-color:var(--surface-2);border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background-color:var(--accent);border-radius:var(--radius-full);transition:width var(--duration-slow) var(--ease-out)}.progress-bar-indeterminate .progress-bar-fill{width:30%;animation:progress-indeterminate 1.4s var(--ease-in-out) infinite}@keyframes progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(400%)}}.progress-circular{display:inline-block;width:20px;height:20px;border:2px solid var(--border-default);border-top-color:var(--accent);border-radius:var(--radius-full);animation:btn-spin .8s linear infinite}.progress-circular-sm{width:14px;height:14px;border-width:1.5px}.progress-circular-lg{width:32px;height:32px;border-width:3px}.stack{display:flex;flex-direction:column;gap:var(--space-5)}.stack-tight{gap:var(--space-3)}.stack-loose{gap:var(--space-7)}.row{display:flex;flex-direction:row;align-items:center;gap:var(--space-5)}.row-tight{gap:var(--space-3)}.row-loose{gap:var(--space-7)}.spacer{flex:1 1 auto}.btn:focus-visible,.chip:focus-visible,.input:focus-visible,.textarea:focus-visible,.select-native:focus-visible,.sidebar-tab:focus-visible,.mode-slider-stop:focus-visible,[data-interactive]:focus-visible,[role=button]:focus-visible{outline:2px solid var(--color-focus, var(--accent));outline-offset:2px;border-radius:inherit}.u-hover-lift{transition:transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out);will-change:transform}.u-hover-lift:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.u-hover-lift:active{transform:translateY(0)}@media (prefers-reduced-motion: reduce){.u-hover-lift,.u-hover-lift:hover{transform:none!important;transition:none!important}}.sidebar-left,.sidebar-right,.bottom-panel,.modal-card,.modal-body,.command-palette-results{scrollbar-width:thin;scrollbar-color:var(--border-default) transparent}.sidebar-left::-webkit-scrollbar,.sidebar-right::-webkit-scrollbar,.bottom-panel::-webkit-scrollbar,.modal-card::-webkit-scrollbar,.modal-body::-webkit-scrollbar,.command-palette-results::-webkit-scrollbar{width:6px;height:6px}.sidebar-left::-webkit-scrollbar-thumb,.sidebar-right::-webkit-scrollbar-thumb,.bottom-panel::-webkit-scrollbar-thumb,.modal-card::-webkit-scrollbar-thumb,.modal-body::-webkit-scrollbar-thumb,.command-palette-results::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:var(--radius-full)}.sidebar-left::-webkit-scrollbar-thumb:hover,.sidebar-right::-webkit-scrollbar-thumb:hover,.bottom-panel::-webkit-scrollbar-thumb:hover,.modal-card::-webkit-scrollbar-thumb:hover,.modal-body::-webkit-scrollbar-thumb:hover,.command-palette-results::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}.stat-value{font-weight:var(--font-weight-semibold, 600);transition:color var(--duration-fast) var(--ease-out)}.stat--primary .stat-value{color:var(--accent)}.stat--secondary .stat-value{color:var(--text-secondary)}.u-animated-number{animation:count-up var(--duration-slow, .32s) var(--ease-out) both}@media (prefers-reduced-motion: reduce){.u-animated-number{animation:none!important}}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes overlay-fade-out{0%{opacity:1}to{opacity:0}}@keyframes overlay-slide-up{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes overlay-slide-in-right{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes overlay-slide-in-bottom{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes overlay-scale-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);background-color:var(--scrim-medium);backdrop-filter:blur(var(--blur-md));-webkit-backdrop-filter:blur(var(--blur-md));display:flex;align-items:center;justify-content:center;padding:var(--space-6);animation:overlay-fade-in var(--duration-base) var(--ease-out) both}.modal{position:relative;width:100%;max-width:520px;max-height:calc(100vh - var(--space-11));background-color:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-2xl);display:flex;flex-direction:column;overflow:hidden;animation:overlay-slide-up var(--duration-base) var(--ease-out) both}.modal-sm{max-width:400px}.modal-lg{max-width:720px}.modal-xl{max-width:960px}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);padding:var(--space-7) var(--space-8);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.modal-title{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary);line-height:var(--leading-tight)}.modal-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);background:transparent;border:0;color:var(--text-tertiary);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.modal-close:hover{background-color:var(--surface-3);color:var(--text-primary)}.modal-close svg{width:16px;height:16px}.modal-body{padding:var(--space-7) var(--space-8);overflow-y:auto;flex:1 1 auto;color:var(--text-secondary);font-size:var(--text-base);line-height:var(--leading-normal)}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-4);padding:var(--space-6) var(--space-8);border-top:1px solid var(--border-subtle);flex-shrink:0;background-color:var(--surface-1)}.toast-region{position:fixed;bottom:var(--space-7);right:var(--space-7);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-4);width:360px;max-width:calc(100vw - var(--space-9));pointer-events:none}.toast{display:flex;align-items:flex-start;gap:var(--space-5);padding:var(--space-5) var(--space-6);background-color:var(--surface-2);border:1px solid var(--border-default);border-left:3px solid var(--accent);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);color:var(--text-primary);pointer-events:auto;animation:overlay-slide-in-right var(--duration-base) var(--ease-out) both}.toast-icon{flex-shrink:0;width:18px;height:18px;color:var(--accent);margin-top:1px}.toast-body{flex:1;min-width:0}.toast-title{font-size:var(--text-base);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--space-1)}.toast-message{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-normal)}.toast-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-xs);background:transparent;border:0;color:var(--text-tertiary);cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}.toast-close:hover{color:var(--text-primary)}.toast-success{border-left-color:var(--success-fg)}.toast-success .toast-icon{color:var(--success-fg)}.toast-error{border-left-color:var(--danger-fg)}.toast-error .toast-icon{color:var(--danger-fg)}.toast-warning{border-left-color:var(--warning-fg)}.toast-warning .toast-icon{color:var(--warning-fg)}.toast-info{border-left-color:var(--info-fg)}.toast-info .toast-icon{color:var(--info-fg)}.tooltip{position:absolute;z-index:var(--z-tooltip);padding:var(--space-3) var(--space-5);background-color:var(--neutral-1000);color:var(--neutral-50);font-size:var(--text-xs);font-weight:var(--font-weight-medium);line-height:var(--leading-tight);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);white-space:nowrap;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity var(--duration-fast) var(--ease-out) .4s,transform var(--duration-fast) var(--ease-out) .4s}.tooltip.is-visible{opacity:1;transform:translateY(0)}.tooltip-arrow{position:absolute;width:8px;height:8px;background-color:var(--neutral-1000);transform:rotate(45deg)}.tooltip-top .tooltip-arrow{bottom:-4px;left:50%;margin-left:-4px}.tooltip-bottom .tooltip-arrow{top:-4px;left:50%;margin-left:-4px}.tooltip-left .tooltip-arrow{right:-4px;top:50%;margin-top:-4px}.tooltip-right .tooltip-arrow{left:-4px;top:50%;margin-top:-4px}.popover{position:absolute;z-index:var(--z-overlay);min-width:220px;max-width:360px;padding:var(--space-5) var(--space-6);background-color:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);color:var(--text-primary);font-size:var(--text-sm);line-height:var(--leading-normal);animation:overlay-scale-in var(--duration-fast) var(--ease-out) both}.popover-title{font-size:var(--text-base);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--space-3)}.popover-body{color:var(--text-secondary)}.popover-footer{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--border-subtle)}.dropdown-menu{position:absolute;z-index:var(--z-overlay);min-width:200px;padding:var(--space-3);background-color:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);list-style:none;margin:0;animation:overlay-scale-in var(--duration-fast) var(--ease-out) both;transform-origin:top right}.dropdown-item{display:flex;align-items:center;gap:var(--space-5);padding:var(--space-4) var(--space-5);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--text-base);font-weight:var(--font-weight-regular);cursor:pointer;background:transparent;border:0;width:100%;text-align:left;transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.dropdown-item:hover,.dropdown-item:focus-visible{background-color:var(--surface-3);color:var(--text-primary);outline:none}.dropdown-item[aria-selected=true]{background-color:var(--accent-subtle);color:var(--accent-strong)}.dropdown-item-danger{color:var(--danger-fg)}.dropdown-item-danger:hover{background-color:var(--danger-bg);color:var(--danger-fg)}.dropdown-item-icon{width:16px;height:16px;flex-shrink:0;color:var(--text-tertiary)}.dropdown-item:hover .dropdown-item-icon{color:var(--text-primary)}.dropdown-divider{height:1px;background-color:var(--border-subtle);margin:var(--space-3) 0}.dropdown-label{padding:var(--space-4) var(--space-5) var(--space-2);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:var(--tracking-wider)}.snackbar-region{position:fixed;bottom:var(--space-8);left:50%;transform:translate(-50%);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-4);width:auto;max-width:calc(100vw - var(--space-9));pointer-events:none}.snackbar{display:inline-flex;align-items:center;gap:var(--space-6);padding:var(--space-5) var(--space-6);background-color:var(--neutral-1000);color:var(--neutral-50);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);font-size:var(--text-base);line-height:var(--leading-normal);pointer-events:auto;animation:overlay-slide-in-bottom var(--duration-base) var(--ease-out) both}.snackbar-action{background:transparent;border:0;color:var(--accent-hover);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;cursor:pointer;padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.snackbar-action:hover{background-color:#ffffff14;color:var(--accent)}.command-palette-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);background-color:var(--scrim-heavy);backdrop-filter:blur(var(--blur-lg));-webkit-backdrop-filter:blur(var(--blur-lg));display:flex;align-items:flex-start;justify-content:center;padding:12vh var(--space-6) var(--space-6);animation:overlay-fade-in var(--duration-base) var(--ease-out) both}.command-palette{width:100%;max-width:640px;max-height:70vh;background-color:var(--surface-2);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-2xl);display:flex;flex-direction:column;overflow:hidden;animation:overlay-slide-up var(--duration-base) var(--ease-out) both}.command-palette-input-wrap{display:flex;align-items:center;gap:var(--space-5);padding:var(--space-6) var(--space-7);border-bottom:1px solid var(--border-subtle)}.command-palette-input-icon{width:18px;height:18px;color:var(--text-tertiary);flex-shrink:0}.command-palette-input{flex:1;background:transparent;border:0;outline:none;padding:0;font-size:var(--text-lg);font-weight:var(--font-weight-regular);color:var(--text-primary);line-height:var(--leading-normal)}.command-palette-input::placeholder{color:var(--text-tertiary)}.command-palette-kbd{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-tertiary);padding:var(--space-2) var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-xs);line-height:1}.command-palette-results{flex:1;overflow-y:auto;padding:var(--space-4)}.command-palette-group{margin-bottom:var(--space-5)}.command-palette-group-label{padding:var(--space-3) var(--space-5);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:var(--tracking-wider)}.command-palette-item{display:flex;align-items:center;gap:var(--space-5);padding:var(--space-5) var(--space-5);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--text-base);cursor:pointer;background:transparent;border:0;width:100%;text-align:left;transition:background-color var(--duration-fast) var(--ease-out)}.command-palette-item:hover,.command-palette-item[aria-selected=true]{background-color:var(--surface-3)}.command-palette-item-icon{width:18px;height:18px;color:var(--text-tertiary);flex-shrink:0}.command-palette-item-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.command-palette-item-hint{font-size:var(--text-xs);color:var(--text-tertiary)}.command-palette-empty{padding:var(--space-11) var(--space-6);text-align:center;color:var(--text-tertiary);font-size:var(--text-sm)}@keyframes preview-dash-flow{to{stroke-dashoffset:-26}}@keyframes preview-line-glow{0%,to{stroke-opacity:.45}50%{stroke-opacity:.85}}.preview-line-pulsing{animation:preview-dash-flow .7s linear infinite,preview-line-glow 1.6s ease-in-out infinite}@keyframes search-pulse-ring{0%{transform:scale(.35);opacity:.75}70%{opacity:.18}to{transform:scale(2.6);opacity:0}}.search-pulse-marker{pointer-events:none;position:relative;width:0;height:0}.search-pulse-marker .pulse-ring{position:absolute;left:-32px;top:-32px;width:64px;height:64px;border-radius:50%;border:2px solid #4ad0b3;background:radial-gradient(closest-side,#4ad0b347,#4ad0b300);animation:search-pulse-ring 1.6s cubic-bezier(.16,1,.3,1) infinite;will-change:transform,opacity}.search-pulse-marker .pulse-ring.delay-1{animation-delay:.53s}.search-pulse-marker .pulse-ring.delay-2{animation-delay:1.06s}@keyframes forbidden-flash{0%,to{stroke-opacity:1;filter:drop-shadow(0 0 6px rgba(220,38,38,.9))}50%{stroke-opacity:.45;filter:drop-shadow(0 0 14px rgba(220,38,38,1))}}@keyframes restricted-flash{0%,to{stroke-opacity:.95;filter:drop-shadow(0 0 5px rgba(234,88,12,.7))}50%{stroke-opacity:.55;filter:drop-shadow(0 0 11px rgba(234,88,12,.95))}}@keyframes forbidden-dash-march{to{stroke-dashoffset:-36}}@keyframes badge-pulse{0%,to{transform:scale(1);box-shadow:0 2px 8px #00000080}50%{transform:scale(1.15);box-shadow:0 0 18px #dc2626e6}}@keyframes badge-pulse-orange{0%,to{transform:scale(1);box-shadow:0 2px 8px #00000080}50%{transform:scale(1.12);box-shadow:0 0 16px #ea580cd9}}path.leaflet-interactive.forbidden-segment{animation:forbidden-flash .9s ease-in-out infinite,forbidden-dash-march 1.1s linear infinite}path.leaflet-interactive.restricted-segment{animation:restricted-flash 1.5s ease-in-out infinite,forbidden-dash-march 1.6s linear infinite}.forbidden-segment-badge{animation:badge-pulse 1.2s ease-in-out infinite}.restricted-segment-badge{animation:badge-pulse-orange 1.8s ease-in-out infinite}.forbidden-banner{position:fixed;top:calc(var(--topbar-h, var(--toolbar-h, 54px)) + 12px);left:50%;transform:translate(-50%);z-index:1500;display:flex;align-items:center;gap:10px;padding:10px 16px;background:linear-gradient(135deg,#dc2626,#991b1b);color:#fff;border-radius:10px;box-shadow:0 6px 24px #dc262673,0 0 0 1px #ffffff26;font-size:13px;font-weight:600;letter-spacing:.2px;max-width:calc(100vw - 380px);animation:forbidden-flash 1.4s ease-in-out infinite}@media (orientation: landscape) and (max-height: 480px){.forbidden-banner{top:48px;max-width:calc(100vw - 32px)}}@media (max-width: 768px){.forbidden-banner{max-width:calc(100vw - 32px)}}.forbidden-banner.restricted-only{background:linear-gradient(135deg,#ea580c,#c2410c);box-shadow:0 6px 24px #ea580c66;animation:restricted-flash 1.8s ease-in-out infinite}.forbidden-banner-icon{flex:0 0 auto;width:22px;height:22px}.forbidden-banner-text{flex:1;line-height:1.35}.forbidden-banner-text strong{font-size:14px}.forbidden-banner-text small{display:block;font-weight:500;opacity:.85;font-size:11px}.forbidden-banner-action{flex:0 0 auto;background:#ffffff2e;border:1px solid rgba(255,255,255,.3);color:#fff;padding:6px 12px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .12s}.forbidden-banner-action:hover{background:#ffffff47}.forbidden-banner-close{flex:0 0 auto;background:transparent;border:none;color:#ffffffbf;cursor:pointer;padding:4px;margin-left:-4px;font-size:18px;line-height:1}.forbidden-banner-close:hover{color:#fff}.forbidden-tooltip{font-size:12px!important}:root{--duration-instant: 0ms;--duration-fast: .12s;--duration-base: .2s;--duration-slow: .32s;--duration-slower: .48s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.5, 0, .75, 0);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-snap: cubic-bezier(.2, .8, .2, 1);--stagger-delay: 40ms}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes slide-out-right{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(24px)}}@keyframes slide-in-left{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:translate(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes bounce-subtle{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes ripple{0%{transform:scale(0);opacity:.45}to{transform:scale(2.4);opacity:0}}@keyframes shake{0%,to{transform:translate(0)}15%{transform:translate(-6px)}30%{transform:translate(5px)}45%{transform:translate(-4px)}60%{transform:translate(3px)}75%{transform:translate(-2px)}90%{transform:translate(1px)}}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes draw-path{0%{stroke-dashoffset:var(--path-length, 1000)}to{stroke-dashoffset:0}}@keyframes waypoint-pop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.18);opacity:1}to{transform:scale(1);opacity:1}}@keyframes waypoint-ring{0%{transform:scale(.6);opacity:.55}to{transform:scale(2.4);opacity:0}}.wpt-pin.pulse-mount{animation:waypoint-pop .42s cubic-bezier(.2,1.2,.4,1) both;transform-origin:50% 100%}.wpt-pin.pulse-mount:after{content:"";position:absolute;left:50%;top:4px;width:26px;height:26px;margin-left:-13px;border-radius:50%;border:2px solid currentColor;pointer-events:none;animation:waypoint-ring .7s ease-out both;animation-delay:80ms;color:var(--accent)}.wpt-pin.start.pulse-mount:after{color:var(--success)}.wpt-pin.end.pulse-mount:after{color:var(--danger)}.leaflet-interactive.path-reveal{animation:draw-path .52s ease-out both}@keyframes count-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fade-in var(--duration-base) var(--ease-out) both}.animate-fade-out{animation:fade-out var(--duration-base) var(--ease-in) both}.animate-slide-up{animation:slide-up var(--duration-base) var(--ease-out) both}.animate-slide-down{animation:slide-down var(--duration-base) var(--ease-out) both}.animate-slide-in-right{animation:slide-in-right var(--duration-base) var(--ease-out) both}.animate-slide-out-right{animation:slide-out-right var(--duration-base) var(--ease-in) both}.animate-slide-in-left{animation:slide-in-left var(--duration-base) var(--ease-out) both}.animate-scale-in{animation:scale-in var(--duration-base) var(--ease-spring) both}.animate-scale-out{animation:scale-out var(--duration-fast) var(--ease-in) both}.animate-shimmer{background-image:linear-gradient(90deg,#fff0,#ffffff14,#fff0);background-size:200% 100%;animation:shimmer 1.4s linear infinite}.animate-spin{animation:spin .8s linear infinite}.animate-pulse{animation:pulse 1.8s var(--ease-in-out) infinite}.animate-bounce-subtle{animation:bounce-subtle 1.4s var(--ease-in-out) infinite}.animate-shake{animation:shake .42s var(--ease-out) both}.animate-breathe{animation:breathe 2.6s var(--ease-in-out) infinite}.animate-count-up{animation:count-up var(--duration-slow) var(--ease-out) both}.transition-all{transition:all var(--duration-base) var(--ease-out)}.transition-colors{transition:color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),fill var(--duration-fast) var(--ease-out),stroke var(--duration-fast) var(--ease-out)}.transition-transform{transition:transform var(--duration-base) var(--ease-spring)}.transition-opacity{transition:opacity var(--duration-base) var(--ease-out)}.transition-shadow{transition:box-shadow var(--duration-base) var(--ease-out)}[data-hover-lift]{transition:transform var(--duration-base) var(--ease-spring),box-shadow var(--duration-base) var(--ease-out);will-change:transform}[data-hover-lift]:hover{transform:translateY(-2px);box-shadow:0 8px 20px -8px #00000047,0 2px 6px -2px #0000002e}[data-hover-lift]:active{transform:translateY(0);transition-duration:var(--duration-fast)}[data-ripple],button{position:relative;overflow:hidden}.mi-ripple{position:absolute;border-radius:50%;pointer-events:none;background:currentColor;opacity:.25;transform:scale(0);animation:ripple .56s var(--ease-out) forwards;will-change:transform,opacity}[data-tilt]{transform-style:preserve-3d;transition:transform var(--duration-slow) var(--ease-spring);will-change:transform}[data-parallax]{transition:transform var(--duration-slow) var(--ease-out);will-change:transform}[data-draggable]{transition:opacity var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out);cursor:grab}[data-draggable].mi-dragging{opacity:.7;transform:rotate(-1.2deg) scale(.98);cursor:grabbing}.view-enter{opacity:0;transform:translateY(6px)}.view-enter-active{opacity:1;transform:translateY(0);transition:opacity var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out)}.view-exit{opacity:1;transform:translateY(0)}.view-exit-active{opacity:0;transform:translateY(-6px);transition:opacity var(--duration-base) var(--ease-in),transform var(--duration-base) var(--ease-in)}.stagger-children>*{animation:slide-up var(--duration-base) var(--ease-out) both}.stagger-children>*:nth-child(1){animation-delay:calc(var(--stagger-delay) * 0)}.stagger-children>*:nth-child(2){animation-delay:calc(var(--stagger-delay) * 1)}.stagger-children>*:nth-child(3){animation-delay:calc(var(--stagger-delay) * 2)}.stagger-children>*:nth-child(4){animation-delay:calc(var(--stagger-delay) * 3)}.stagger-children>*:nth-child(5){animation-delay:calc(var(--stagger-delay) * 4)}.stagger-children>*:nth-child(6){animation-delay:calc(var(--stagger-delay) * 5)}.stagger-children>*:nth-child(7){animation-delay:calc(var(--stagger-delay) * 6)}.stagger-children>*:nth-child(8){animation-delay:calc(var(--stagger-delay) * 7)}.stagger-children>*:nth-child(9){animation-delay:calc(var(--stagger-delay) * 8)}.stagger-children>*:nth-child(10){animation-delay:calc(var(--stagger-delay) * 9)}.stagger-children>*:nth-child(11){animation-delay:calc(var(--stagger-delay) * 10)}.stagger-children>*:nth-child(12){animation-delay:calc(var(--stagger-delay) * 11)}.stagger-children>*:nth-child(n+13){animation-delay:calc(var(--stagger-delay) * 12)}.mi-in-view{animation:slide-up var(--duration-slow) var(--ease-out) both}.mi-confetti-particle{position:fixed;pointer-events:none;z-index:var(--z-confetti, 9999);will-change:transform,opacity}.mi-btn-spinner{display:inline-block;width:1em;height:1em;vertical-align:middle;animation:spin .7s linear infinite}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.animate-fade-in,.animate-fade-out{animation-duration:var(--duration-fast)!important}[data-hover-lift]:hover,[data-tilt]:hover{transform:none!important}.mi-ripple{display:none!important}.animate-shimmer{animation:none!important;background-image:none!important}.stagger-children>*{animation-delay:0ms!important}}.app-layout{position:relative;width:100%;height:100vh;height:100dvh;overflow:hidden;background-color:var(--surface-0, #0d131d);color:var(--text-primary, #e8ecf2);font-family:var(--font-sans)}.topbar{position:fixed;top:0;left:0;right:0;height:var(--topbar-h, var(--toolbar-h, 54px));padding:0 var(--space-6, 16px);display:flex;align-items:center;gap:var(--space-5, 12px);background:var(--surface-overlay, rgba(23, 30, 43, .72));backdrop-filter:blur(var(--blur-md, 12px)) saturate(140%);-webkit-backdrop-filter:blur(var(--blur-md, 12px)) saturate(140%);border-bottom:1px solid var(--border-subtle, rgba(255, 255, 255, .08));box-shadow:var(--shadow-sm);z-index:var(--z-sticky, 100)}.topbar-section{display:flex;align-items:center;gap:var(--space-4, 8px)}.topbar-section--start{min-width:auto}.topbar-section--center{flex:1;justify-content:center;min-width:0;overflow:hidden}.topbar-section--end{margin-left:auto}.topbar-logo{margin:0;font-family:var(--font-sans);font-size:var(--text-lg, 17px);font-weight:var(--font-weight-bold, 700);letter-spacing:var(--tracking-wide, .02em);color:var(--text-primary);white-space:nowrap}.topbar-logo-accent{color:var(--accent)}.sidebar-left{position:fixed;top:var(--topbar-h, var(--toolbar-h, 54px));bottom:0;left:0;width:var(--sidebar-left-w, var(--sidebar-w, 300px));padding:var(--space-7, 20px) var(--space-6, 16px);display:flex;flex-direction:column;gap:var(--space-6, 16px);background:var(--surface-overlay, rgba(23, 30, 43, .88));backdrop-filter:blur(var(--blur-md, 12px)) saturate(140%);-webkit-backdrop-filter:blur(var(--blur-md, 12px)) saturate(140%);border-right:1px solid var(--border-subtle, rgba(255, 255, 255, .08));overflow-y:auto;overflow-x:hidden;z-index:var(--z-sticky, 100);transform:translate(0);transition:transform var(--duration-base, .22s) var(--ease-out)}.sidebar-left.is-collapsed{transform:translate(-100%);box-shadow:none}.sidebar-right{position:fixed;top:var(--topbar-h, var(--toolbar-h, 54px));bottom:0;right:0;width:var(--sidebar-right-w, 360px);padding:var(--space-7, 20px) var(--space-6, 16px);display:flex;flex-direction:column;gap:var(--space-6, 16px);background:var(--surface-overlay, rgba(23, 30, 43, .88));backdrop-filter:blur(var(--blur-md, 12px)) saturate(140%);-webkit-backdrop-filter:blur(var(--blur-md, 12px)) saturate(140%);border-left:1px solid var(--border-subtle, rgba(255, 255, 255, .08));overflow-y:auto;overflow-x:hidden;z-index:var(--z-sticky, 100);transform:translate(100%);transition:transform var(--duration-base, .22s) var(--ease-out);pointer-events:none}.sidebar-right.is-open{transform:translate(0);pointer-events:auto;box-shadow:var(--shadow-lg)}.sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4, 8px);padding-bottom:var(--space-5, 12px);border-bottom:1px solid var(--border-subtle)}.sidebar-header h2,.sidebar-header h3{margin:0;font-size:var(--text-md, 15px);font-weight:var(--font-weight-semibold, 600);color:var(--text-primary)}.map-area{position:absolute;top:0;right:0;bottom:0;left:0;z-index:var(--z-base, 0);overflow:hidden}.map-area>#map,#map.map-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background:var(--surface-0, #0d131d)}.bottom-panel{position:fixed;left:var(--sidebar-left-w, var(--sidebar-w, 300px));right:0;bottom:0;min-height:var(--bottom-panel-min-h, 200px);max-height:40vh;padding:var(--space-5, 12px) var(--space-6, 16px);padding-bottom:calc(var(--space-5, 12px) + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:var(--space-4, 8px);background:var(--surface-overlay, rgba(23, 30, 43, .92));backdrop-filter:blur(var(--blur-md, 12px));-webkit-backdrop-filter:blur(var(--blur-md, 12px));border-top:1px solid var(--border-subtle, rgba(255, 255, 255, .08));box-shadow:var(--shadow-lg);z-index:var(--z-sticky, 100);transform:translateY(100%);transition:transform var(--duration-base, .22s) var(--ease-out)}.bottom-panel.is-open{transform:translateY(0)}.bottom-bar-mobile{position:fixed;left:0;right:0;bottom:0;height:var(--bottom-bar-h, 58px);padding-bottom:env(safe-area-inset-bottom,0px);display:none;align-items:stretch;background:var(--surface-overlay, rgba(23, 30, 43, .94));backdrop-filter:blur(var(--blur-md, 12px));-webkit-backdrop-filter:blur(var(--blur-md, 12px));border-top:1px solid var(--border-subtle);z-index:var(--z-sticky, 100)}.bottom-bar-mobile-item{flex:1;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:transparent;border:0;color:var(--text-secondary);font-size:var(--text-xs, 11px);font-weight:var(--font-weight-medium);cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}.bottom-bar-mobile-item.is-active,.bottom-bar-mobile-item:hover{color:var(--accent)}@media (max-width: 960px){.sidebar-right{width:100vw}.bottom-panel{left:0}}@media (max-width: 640px){.sidebar-left{width:min(320px,86vw);padding:var(--space-6, 16px) var(--space-5, 12px)}.topbar{padding:0 var(--space-5, 12px)}.bottom-bar-mobile{display:flex}}.layout-row{display:flex;align-items:center;gap:var(--space-4, 8px)}.layout-col{display:flex;flex-direction:column;gap:var(--space-4, 8px)}.layout-spacer{flex:1 1 auto}.layout-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.leaflet-container{background:var(--surface-0, #0d131d);font-family:var(--font-sans);outline:none}.leaflet-control-zoom{border:1px solid var(--border-default, rgba(255, 255, 255, .1))!important;border-radius:var(--radius-md, 10px)!important;box-shadow:var(--shadow-md)!important;overflow:hidden;background:var(--surface-overlay, rgba(23, 30, 43, .92))!important;backdrop-filter:blur(var(--blur-sm, 6px));-webkit-backdrop-filter:blur(var(--blur-sm, 6px))}.leaflet-control-zoom a,.leaflet-bar a{width:34px!important;height:34px!important;line-height:34px!important;color:var(--text-primary, #e8ecf2)!important;background-color:transparent!important;border-bottom:1px solid var(--border-subtle, rgba(255, 255, 255, .06))!important;font-size:var(--text-lg, 17px)!important;font-weight:var(--font-weight-medium, 500);transition:background-color var(--duration-fast, .15s) var(--ease-out),color var(--duration-fast, .15s) var(--ease-out)}.leaflet-control-zoom a:last-child,.leaflet-bar a:last-child{border-bottom:0!important}.leaflet-control-zoom a:hover,.leaflet-bar a:hover{background-color:var(--accent-subtle, rgba(74, 208, 179, .12))!important;color:var(--accent, #4ad0b3)!important}.leaflet-control-zoom a:active,.leaflet-bar a:active{background-color:var(--accent, #4ad0b3)!important;color:var(--text-on-accent, #062a23)!important}.leaflet-control-zoom a.leaflet-disabled{opacity:.35;cursor:not-allowed}.leaflet-control-layers{padding:var(--space-3, 6px)!important;border-radius:var(--radius-md, 10px)!important;border:1px solid var(--border-default, rgba(255, 255, 255, .1))!important;box-shadow:var(--shadow-md)!important;background:var(--surface-overlay, rgba(23, 30, 43, .92))!important;backdrop-filter:blur(var(--blur-sm, 6px));-webkit-backdrop-filter:blur(var(--blur-sm, 6px));color:var(--text-primary)!important}.leaflet-control-layers-expanded{padding:var(--space-5, 12px) var(--space-6, 16px)!important;min-width:180px}.leaflet-control-layers-list label{display:flex;align-items:center;gap:var(--space-4, 8px);padding:var(--space-3, 6px) var(--space-4, 8px);border-radius:var(--radius-sm, 6px);font-size:var(--text-sm, 12px);color:var(--text-secondary);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.leaflet-control-layers-list label:hover{background:var(--accent-subtle);color:var(--text-primary)}.leaflet-control-layers-separator{margin:var(--space-3, 6px) 0;border-top:1px solid var(--border-subtle)}.leaflet-control-layers-toggle{width:34px!important;height:34px!important;border-radius:var(--radius-md, 10px);background-size:18px 18px!important;background-position:center!important}.leaflet-control-attribution{padding:2px var(--space-3, 6px)!important;font-size:10px!important;background:#0d131d8c!important;color:var(--text-tertiary, #6b7688)!important;border-top-left-radius:var(--radius-sm, 6px);backdrop-filter:blur(var(--blur-sm, 6px));-webkit-backdrop-filter:blur(var(--blur-sm, 6px))}.leaflet-control-attribution a{color:var(--text-secondary)!important;text-decoration:none}.leaflet-control-attribution a:hover{color:var(--accent)!important;text-decoration:underline}.leaflet-control-scale-line{padding:2px var(--space-3, 6px)!important;background:#0d131d8c!important;border:1px solid var(--border-subtle, rgba(255, 255, 255, .08))!important;border-top:0!important;color:var(--text-secondary)!important;font-family:var(--font-mono);font-size:10px!important;border-radius:var(--radius-sm, 6px);-webkit-backdrop-filter:blur(var(--blur-sm, 6px));backdrop-filter:blur(var(--blur-sm, 6px))}.leaflet-popup-content-wrapper{padding:0;border-radius:var(--radius-md, 10px);background:var(--surface-1, #171e2b);color:var(--text-primary);box-shadow:var(--shadow-lg);border:1px solid var(--border-default);overflow:hidden}.leaflet-popup-content{margin:var(--space-5, 12px) var(--space-6, 16px);font-family:var(--font-sans);font-size:var(--text-sm, 12px);line-height:var(--leading-normal, 1.45);color:var(--text-primary)}.leaflet-popup-content h1,.leaflet-popup-content h2,.leaflet-popup-content h3,.leaflet-popup-content h4{margin:0 0 var(--space-3, 6px);font-size:var(--text-md, 15px);font-weight:var(--font-weight-semibold, 600);color:var(--text-primary)}.leaflet-popup-content p{margin:0 0 var(--space-3, 6px);color:var(--text-secondary)}.leaflet-popup-content a{color:var(--accent)}.leaflet-popup-tip{background:var(--surface-1, #171e2b);box-shadow:none;border-left:1px solid var(--border-default);border-bottom:1px solid var(--border-default)}.leaflet-popup-close-button{width:24px!important;height:24px!important;padding:0!important;top:var(--space-3, 6px)!important;right:var(--space-3, 6px)!important;color:var(--text-tertiary)!important;font-size:18px!important;line-height:24px!important;border-radius:var(--radius-sm, 6px);transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.leaflet-popup-close-button:hover{background:var(--accent-subtle);color:var(--accent)!important}.leaflet-tooltip{padding:var(--space-3, 6px) var(--space-4, 8px);border-radius:var(--radius-sm, 6px);background:var(--surface-1, #171e2b);border:1px solid var(--border-default);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-xs, 11px);box-shadow:var(--shadow-sm)}.leaflet-tooltip:before{border-top-color:var(--surface-1, #171e2b)}.marker-start,.marker-end,.marker-home{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-full);color:var(--text-on-accent);font-size:var(--text-xs, 11px);font-weight:var(--font-weight-bold);border:2px solid var(--surface-0, #0d131d);box-shadow:var(--shadow-md)}.marker-start{background:var(--accent, #4ad0b3)}.marker-end{background:var(--accent-warm, #f59e0b);color:#2a1a00}.marker-home{background:var(--info-strong, #3b82f6);color:#fff}.leaflet-popup.atlas-home-marker-popup .leaflet-popup-content-wrapper{border-color:var(--accent);box-shadow:var(--shadow-glow-accent, var(--shadow-lg))}.leaflet-container.leaflet-crosshair,.leaflet-container.leaflet-crosshair .leaflet-interactive,.map-area.cursor-route .leaflet-container{cursor:crosshair!important}.map-area.cursor-pan .leaflet-container,.leaflet-grab{cursor:grab}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:grabbing}.leaflet-overlay-pane svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}.map-area--trace-glow .leaflet-overlay-pane svg{filter:drop-shadow(0 0 4px rgba(74,208,179,.35)) drop-shadow(0 1px 2px rgba(0,0,0,.4))}@keyframes dash-flow{to{stroke-dashoffset:-20}}.leaflet-interactive.active-trace-preview{animation:dash-flow 1.2s linear infinite}@media (prefers-reduced-motion: reduce){.leaflet-interactive.active-trace-preview{animation:none}}.leaflet-top,.leaflet-bottom{z-index:var(--z-overlay, 500)}.leaflet-right{right:var(--space-5, 12px)}.leaflet-top{top:calc(var(--topbar-h, var(--toolbar-h, 54px)) + var(--space-5, 12px))}.leaflet-bottom{bottom:var(--space-5, 12px)}.leaflet-left{left:var(--space-5, 12px)}.sidebar-left:not(.is-collapsed)~.map-area .leaflet-top.leaflet-left,body:has(.sidebar-left:not(.is-collapsed)) .leaflet-top.leaflet-left{left:calc(var(--sidebar-left-w, var(--sidebar-w, 300px)) + var(--space-5, 12px))}.map-fab{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-full);background:var(--surface-overlay, rgba(23, 30, 43, .92));color:var(--text-primary);border:1px solid var(--border-default);box-shadow:var(--shadow-md);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),transform var(--duration-instant) var(--ease-out)}.map-fab:hover{background:var(--accent-subtle);color:var(--accent)}.map-fab:active{transform:scale(.96)}.onboarding-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-onboarding, 3000);pointer-events:auto;animation:onboardingFadeIn var(--duration-base, .22s) var(--ease-out, cubic-bezier(.16, 1, .3, 1)) both}.onboarding-overlay:has(.onboarding-card-hero):before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#0009;backdrop-filter:blur(var(--blur-sm, 6px));-webkit-backdrop-filter:blur(var(--blur-sm, 6px))}.onboarding-spotlight{position:fixed;top:0;left:0;width:0;height:0;border-radius:var(--radius-md, 10px);box-shadow:0 0 0 9999px #000000ad;pointer-events:none;transition:top var(--duration-base, .22s) var(--ease-out, cubic-bezier(.16, 1, .3, 1)),left var(--duration-base, .22s) var(--ease-out, cubic-bezier(.16, 1, .3, 1)),width var(--duration-base, .22s) var(--ease-out, cubic-bezier(.16, 1, .3, 1)),height var(--duration-base, .22s) var(--ease-out, cubic-bezier(.16, 1, .3, 1));outline:2px solid var(--accent, #4ad0b3);outline-offset:0;animation:onboardingSpotlightPulse 2.4s ease-in-out infinite}@keyframes onboardingSpotlightPulse{0%,to{outline-color:#4ad0b3e6}50%{outline-color:#4ad0b359}}body.onboarding-active{overflow:hidden}.onboarding-card{position:fixed;width:360px;max-width:calc(100vw - 32px);background:var(--surface-1, #171e2b);color:var(--text-primary, #e8ecf2);border:1px solid var(--border-default, rgba(255, 255, 255, .1));border-radius:var(--radius-lg, 16px);box-shadow:var(--shadow-xl, 0 24px 48px rgba(0, 0, 0, .45));padding:var(--space-8, 24px);display:flex;flex-direction:column;gap:var(--space-6, 16px);font-family:var(--font-sans, -apple-system, sans-serif);animation:onboardingCardIn var(--duration-base, .22s) var(--ease-spring, cubic-bezier(.34, 1.56, .64, 1)) both;pointer-events:auto}.onboarding-card.is-centered{top:50%;left:50%;transform:translate(-50%,-50%);width:440px}.onboarding-card.is-bottom-sheet{top:auto!important;left:0!important;right:0!important;bottom:0!important;width:100%;max-width:none;border-radius:var(--radius-lg, 16px) var(--radius-lg, 16px) 0 0;border-bottom:none;animation:onboardingSheetIn var(--duration-base, .22s) var(--ease-out, cubic-bezier(.16, 1, .3, 1)) both}@keyframes onboardingCardIn{0%{opacity:0;transform:translate(var(--tx, -50%),calc(var(--ty, -50%) + 8px)) scale(.96)}to{opacity:1;transform:translate(var(--tx, -50%),var(--ty, -50%)) scale(1)}}.onboarding-card:not(.is-centered){--tx: 0;--ty: 0}@keyframes onboardingSheetIn{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes onboardingFadeIn{0%{opacity:0}to{opacity:1}}.onboarding-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-5, 12px);position:relative}.onboarding-card-hero .onboarding-card-header{flex-direction:column;align-items:center;text-align:center;gap:var(--space-6, 16px)}.onboarding-card-hero-icon{width:72px;height:72px;border-radius:var(--radius-full, 9999px);background:var(--accent-subtle, rgba(74, 208, 179, .12));color:var(--accent, #4ad0b3);display:flex;align-items:center;justify-content:center}.onboarding-card-title{margin:0;flex:1;font-size:var(--text-xl, 20px);font-weight:var(--font-weight-semibold, 600);letter-spacing:var(--tracking-tight, -.02em);line-height:var(--leading-tight, 1.2);color:var(--text-primary, #e8ecf2)}.onboarding-card-hero .onboarding-card-title{font-size:var(--text-2xl, 24px)}.onboarding-close{flex-shrink:0;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-tertiary, #6b7688);border-radius:var(--radius-sm, 6px);cursor:pointer;transition:all var(--duration-fast, .15s) var(--ease-out, cubic-bezier(.16, 1, .3, 1))}.onboarding-close:hover{background:var(--surface-2, #232c3c);color:var(--text-primary, #e8ecf2)}.onboarding-close:focus-visible{outline:2px solid var(--border-focus, #4ad0b3);outline-offset:2px}.onboarding-card-body{display:flex;flex-direction:column;gap:var(--space-5, 12px)}.onboarding-card-hero .onboarding-card-body{text-align:center}.onboarding-card-description{margin:0;font-size:var(--text-base, 14px);line-height:var(--leading-relaxed, 1.65);color:var(--text-secondary, #a5adba)}.onboarding-card-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5, 12px);flex-wrap:wrap}.onboarding-progress{display:inline-flex;gap:var(--space-3, 6px);align-items:center}.onboarding-dot{width:6px;height:6px;border-radius:var(--radius-full, 9999px);background:var(--border-strong, rgba(255, 255, 255, .18));transition:all var(--duration-fast, .15s) var(--ease-out, cubic-bezier(.16, 1, .3, 1))}.onboarding-dot.is-active{width:18px;background:var(--accent, #4ad0b3)}.onboarding-card-actions{display:inline-flex;gap:var(--space-4, 8px);align-items:center}.onboarding-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:var(--radius-md, 10px);padding:var(--space-4, 8px) var(--space-6, 16px);font-family:inherit;font-size:var(--text-base, 14px);font-weight:var(--font-weight-medium, 500);cursor:pointer;transition:all var(--duration-fast, .15s) var(--ease-out, cubic-bezier(.16, 1, .3, 1));white-space:nowrap}.onboarding-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus, 0 0 0 3px rgba(74, 208, 179, .35))}.onboarding-btn-primary{background:var(--accent, #4ad0b3);color:var(--text-on-accent, #062a23);border-color:var(--accent, #4ad0b3)}.onboarding-btn-primary:hover{background:var(--accent-hover, #74dec0);border-color:var(--accent-hover, #74dec0)}.onboarding-btn-ghost{background:transparent;color:var(--text-secondary, #a5adba);border-color:var(--border-default, rgba(255, 255, 255, .1))}.onboarding-btn-ghost:hover{background:var(--surface-2, #232c3c);color:var(--text-primary, #e8ecf2)}.onboarding-card-arrow{position:absolute;width:12px;height:12px;background:var(--surface-1, #171e2b);border:1px solid var(--border-default, rgba(255, 255, 255, .1));transform:rotate(45deg);pointer-events:none}.onboarding-card[data-side=right] .onboarding-card-arrow{left:-7px;top:50%;margin-top:-6px;border-right:none;border-top:none}.onboarding-card[data-side=left] .onboarding-card-arrow{right:-7px;top:50%;margin-top:-6px;border-left:none;border-bottom:none}.onboarding-card[data-side=bottom] .onboarding-card-arrow{top:-7px;left:50%;margin-left:-6px;border-right:none;border-bottom:none}.onboarding-card[data-side=top] .onboarding-card-arrow{bottom:-7px;left:50%;margin-left:-6px;border-left:none;border-top:none}@media (max-width: 639px){.onboarding-card-arrow{display:none}.onboarding-card.is-centered{width:calc(100vw - 32px)}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-10, 40px) var(--space-8, 24px);gap:var(--space-5, 12px);color:var(--text-primary, #e8ecf2);font-family:var(--font-sans, -apple-system, sans-serif);min-height:240px}.empty-state-illustration{width:100%;max-width:160px;color:var(--text-tertiary, #6b7688);margin-bottom:var(--space-3, 6px);line-height:0}.empty-state-illustration svg{width:100%;height:auto;display:block}.empty-state-title{margin:0;font-size:var(--text-lg, 17px);font-weight:var(--font-weight-semibold, 600);letter-spacing:var(--tracking-tight, -.02em);line-height:var(--leading-tight, 1.2);color:var(--text-primary, #e8ecf2)}.empty-state-description{margin:0;max-width:44ch;font-size:var(--text-base, 14px);line-height:var(--leading-relaxed, 1.65);color:var(--text-secondary, #a5adba)}.empty-state-action{margin-top:var(--space-5, 12px)}.empty-state-action.btn-primary{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--accent, #4ad0b3);background:var(--accent, #4ad0b3);color:var(--text-on-accent, #062a23);border-radius:var(--radius-md, 10px);padding:var(--space-4, 8px) var(--space-7, 20px);font-family:inherit;font-size:var(--text-base, 14px);font-weight:var(--font-weight-medium, 500);cursor:pointer;transition:background var(--duration-fast, .15s) var(--ease-out, cubic-bezier(.16, 1, .3, 1))}.empty-state-action.btn-primary:hover{background:var(--accent-hover, #74dec0);border-color:var(--accent-hover, #74dec0)}.empty-state-action:focus-visible{outline:none;box-shadow:var(--shadow-focus, 0 0 0 3px rgba(74, 208, 179, .35))}.empty-state-action-ghost{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:var(--text-secondary, #a5adba);border:1px solid var(--border-default, rgba(255, 255, 255, .1));border-radius:var(--radius-md, 10px);padding:var(--space-4, 8px) var(--space-7, 20px);cursor:pointer;font-family:inherit;font-size:var(--text-base, 14px);font-weight:var(--font-weight-medium, 500)}.empty-state-action-ghost:hover{background:var(--surface-2, #232c3c);color:var(--text-primary, #e8ecf2)}.empty-state-quota-reached .empty-state-title{color:var(--warning-fg, #fbbf24)}.empty-state-offline .empty-state-title{color:var(--danger-fg, #f87171)}.tip-bubble{position:fixed;z-index:var(--z-onboarding, 3000);max-width:280px;padding:var(--space-5, 12px) var(--space-6, 16px);background:var(--surface-2, #232c3c);color:var(--text-primary, #e8ecf2);border:1px solid var(--border-default, rgba(255, 255, 255, .1));border-radius:var(--radius-md, 10px);box-shadow:var(--shadow-lg, 0 12px 24px rgba(0, 0, 0, .4));font-family:var(--font-sans, -apple-system, sans-serif);font-size:var(--text-sm, 12px);line-height:var(--leading-normal, 1.45);display:flex;align-items:flex-start;gap:var(--space-5, 12px);animation:tipBubbleIn var(--duration-slow, .4s) var(--ease-out, cubic-bezier(.16, 1, .3, 1)) both,tipBubblePulse 1.8s var(--ease-in-out, cubic-bezier(.65, 0, .35, 1)) .4s 2}.tip-bubble.is-leaving{animation:tipBubbleOut .18s var(--ease-out, cubic-bezier(.16, 1, .3, 1)) both}@keyframes tipBubbleIn{0%{opacity:0;transform:translateY(4px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes tipBubbleOut{0%{opacity:1}to{opacity:0;transform:translateY(-4px)}}@keyframes tipBubblePulse{0%,to{box-shadow:var(--shadow-lg, 0 12px 24px rgba(0, 0, 0, .4))}50%{box-shadow:var(--shadow-lg, 0 12px 24px rgba(0, 0, 0, .4)),0 0 0 3px #4ad0b340}}.tip-bubble-text{flex:1;color:var(--text-primary, #e8ecf2)}.tip-bubble-close{flex-shrink:0;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-tertiary, #6b7688);border-radius:var(--radius-sm, 6px);cursor:pointer;padding:0;transition:color var(--duration-fast, .15s) var(--ease-out, cubic-bezier(.16, 1, .3, 1))}.tip-bubble-close:hover{color:var(--text-primary, #e8ecf2)}.tip-bubble-close:focus-visible{outline:2px solid var(--border-focus, #4ad0b3);outline-offset:2px}.tip-bubble:before{content:"";position:absolute;width:10px;height:10px;background:var(--surface-2, #232c3c);border:1px solid var(--border-default, rgba(255, 255, 255, .1));transform:rotate(45deg)}.tip-bubble[data-side=top]:before{bottom:-6px;left:50%;margin-left:-5px;border-left:none;border-top:none}.tip-bubble[data-side=bottom]:before{top:-6px;left:50%;margin-left:-5px;border-right:none;border-bottom:none}.tip-bubble[data-side=left]:before{right:-6px;top:50%;margin-top:-5px;border-left:none;border-bottom:none}.tip-bubble[data-side=right]:before{left:-6px;top:50%;margin-top:-5px;border-right:none;border-top:none}@media (prefers-reduced-motion: reduce){.onboarding-overlay,.onboarding-card,.onboarding-spotlight,.tip-bubble{animation:none!important;transition:none!important}}.route-search-box{position:fixed;top:calc(var(--toolbar-h, 56px) + 12px);left:calc(var(--sidebar-w, 300px) + 12px);width:min(360px,calc(100vw - var(--sidebar-w, 300px) - 24px));z-index:var(--z-sidebar, 900);transition:left var(--duration-base, .22s) var(--ease-out, ease),width var(--duration-base, .22s) var(--ease-out, ease);background:#0d131deb;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border, rgba(255, 255, 255, .08));border-radius:12px;box-shadow:var(--shadow-md, 0 4px 16px rgba(0, 0, 0, .32));padding:10px;font-family:Inter,-apple-system,sans-serif;display:flex;flex-direction:column;gap:6px;animation:route-search-slide-in .22s cubic-bezier(.2,.8,.2,1)}@keyframes route-search-slide-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.route-search-row{display:flex;align-items:center;background:#141a24b3;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:0 8px;height:38px;gap:8px;transition:border-color .15s ease,background .15s ease}.route-search-row:focus-within{border-color:var(--accent, #4ad0b3);background:#141a24e6}.route-search-marker{flex-shrink:0;width:10px;height:10px;border-radius:50%;border:2px solid currentColor;background:#00000059}.route-search-marker-from{color:#4ad0b3}.route-search-marker-to{color:#ef5350;border-radius:2px}.route-search-marker-step{color:#94a3b8;width:8px;height:8px}.route-search-row>input{flex:1;background:transparent;border:none;outline:none;color:#f1f5f9;font-size:15px;font-family:inherit;padding:0;min-width:0}.route-search-row>input::placeholder{color:#64748b}.route-search-clear,.route-search-remove-step{display:none;align-items:center;justify-content:center;background:transparent;border:none;color:#64748b;cursor:pointer;padding:4px;border-radius:4px;flex-shrink:0;transition:color .15s ease,background .15s ease}.route-search-row>input:not(:placeholder-shown)~.route-search-clear{display:flex}.route-search-clear:hover,.route-search-remove-step:hover{color:#f1f5f9;background:#ffffff14}.route-search-remove-step{display:flex;color:#64748b}.route-search-swap{align-self:flex-end;width:30px;height:24px;display:flex;align-items:center;justify-content:center;background:#141a24f2;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:#94a3b8;cursor:pointer;margin:-4px 6px -4px 0;transition:transform .2s ease,color .15s ease,border-color .15s ease}.route-search-swap:hover{color:#4ad0b3;border-color:#4ad0b34d;transform:rotate(180deg)}.route-search-swap:active{transform:rotate(180deg) scale(.95)}.route-search-add-step{background:transparent;border:1px dashed rgba(255,255,255,.12);color:#94a3b8;cursor:pointer;padding:6px 10px;border-radius:6px;font-size:12px;font-family:inherit;transition:color .15s ease,border-color .15s ease,background .15s ease;margin-top:2px}.route-search-add-step:hover{color:#4ad0b3;border-color:#4ad0b366;background:#4ad0b30f}.route-search-go{margin-top:4px;padding:10px 14px;background:var(--accent, #4ad0b3);color:#0d131d;border:none;border-radius:8px;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s ease,opacity .15s ease,transform .1s ease}.route-search-go:hover:not(:disabled){background:#5fdcc0}.route-search-go:active:not(:disabled){transform:scale(.98)}.route-search-go:disabled{background:#4ad0b340;color:#0d131d80;cursor:not-allowed}.route-search-results{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#0d131df5;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border, rgba(255, 255, 255, .08));border-radius:10px;overflow:hidden;max-height:280px;overflow-y:auto;box-shadow:var(--shadow-md, 0 4px 16px rgba(0, 0, 0, .4));z-index:1}.route-search-results[hidden]{display:none}.route-search-result{padding:10px 14px;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.05);font-size:13px;color:#f1f5f9;line-height:1.35}.route-search-result:last-child{border-bottom:none}.route-search-result:hover,.route-search-result.active{background:#4ad0b31f}.route-search-result-name{font-weight:500}.route-search-result-detail{font-size:11px;color:#94a3b8;margin-top:2px}.route-search-empty{padding:12px 14px;font-size:12px;color:#94a3b8;text-align:center}@media (max-width: 640px){.route-search-box{display:none}body.mobile-search-open .route-search-box{display:flex;position:fixed;top:0;left:0;right:0;bottom:0;width:100%;max-width:none;border-radius:0;background:var(--bg-primary, #0d131d);z-index:var(--z-modal, 1200);padding:calc(env(safe-area-inset-top,0px) + 56px) 14px 14px;overflow-y:auto;animation:none}body.mobile-search-open .route-search-row{height:48px}body.mobile-search-open .route-search-row>input{font-size:16px}body.mobile-search-open .route-search-results{position:static;margin-top:8px;background:transparent;border:0;max-height:none}}@media (max-width: 768px) and (min-width: 641px){.route-search-box{left:8px;right:8px;width:auto;max-width:none}}body.drawer-open .route-search-box{visibility:hidden;pointer-events:none}body:has(#sidebar.is-collapsed) .route-search-box,body:has(.sidebar-left.is-collapsed) .route-search-box{left:12px;width:min(360px,calc(100vw - 24px))}@media (pointer: coarse){input,input[type=text],input[type=search],input[type=number],input[type=email],input[type=password],input[type=tel],input[type=url],textarea,select{font-size:16px!important}}#geo-search-input{font-size:16px!important}:root{--sheet-h: 40dvh}.skip-link{position:absolute;top:-48px;left:var(--space-4, 8px);z-index:var(--z-tooltip, 2000);padding:var(--space-4, 8px) var(--space-6, 16px);background:var(--accent);color:var(--text-on-accent, #062a23);font-family:var(--font-sans);font-size:var(--text-base, 14px);font-weight:var(--font-weight-semibold, 600);border-radius:var(--radius-sm, 6px);box-shadow:var(--shadow-md);text-decoration:none;transition:top var(--duration-fast, .15s) var(--ease-out)}.skip-link:focus,.skip-link:focus-visible{top:var(--space-4, 8px);outline:2px solid var(--text-on-accent, #062a23);outline-offset:2px}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.desktop-only{display:initial}.mobile-only{display:none}@media (max-width: 768px){.desktop-only{display:none!important}.mobile-only{display:initial}}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible,[role=tab]:focus-visible{outline:2px solid var(--border-focus, var(--accent));outline-offset:2px;border-radius:var(--radius-xs, 4px)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim-heavy, rgba(7, 10, 16, .78));backdrop-filter:blur(var(--blur-sm, 6px));-webkit-backdrop-filter:blur(var(--blur-sm, 6px));z-index:calc(var(--z-sticky, 100) - 1);opacity:0;pointer-events:none;transition:opacity var(--duration-base, .22s) var(--ease-out)}body.drawer-open .drawer-backdrop,.drawer-backdrop.is-visible{opacity:1;pointer-events:auto}.sheet-handle{display:flex;align-items:center;justify-content:center;width:100%;height:20px;margin:0;padding:0;touch-action:none;cursor:grab;background:transparent;border:0}.sheet-handle:before{content:"";display:block;width:40px;height:4px;border-radius:var(--radius-full, 9999px);background:var(--border-strong, rgba(255, 255, 255, .3));transition:background var(--duration-fast, .15s) var(--ease-out)}.sheet-handle:hover:before,.sheet-handle:active:before{background:var(--accent, #4ad0b3)}.sheet-handle:active{cursor:grabbing}.menu-toggle{display:none}@media (max-width: 768px){.menu-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:var(--space-4, 8px);background:transparent;border:0;border-radius:var(--radius-sm, 6px);color:var(--text-primary);cursor:pointer}.menu-toggle:hover,.menu-toggle:focus-visible{background:var(--surface-2, rgba(255, 255, 255, .05))}}@media (max-width: 1024px){.sidebar-left{width:280px}.stats-bar{gap:var(--space-4, 8px)}}@media (pointer: coarse){.btn,.btn-icon,.btn-small,.sidebar-tab,.bottom-bar-mobile-item,button[aria-label]{min-height:44px;min-width:44px}.btn.btn-small{min-height:40px}}@media (max-width: 768px){html,body{font-size:15px}.topbar,#toolbar{padding:0 var(--space-5, 12px);height:52px;gap:var(--space-4, 8px)}.topbar .logo,.topbar .topbar-logo,#toolbar .logo{font-size:var(--text-base, 14px)}.toolbar-section.toolbar-center,.topbar-section--center{overflow-x:auto;scrollbar-width:none}.toolbar-section.toolbar-center::-webkit-scrollbar,.topbar-section--center::-webkit-scrollbar{display:none}.sidebar-left,#sidebar.sidebar-left{width:min(320px,86vw);transform:translate(-105%);box-shadow:var(--shadow-xl);transition:transform var(--duration-base, .22s) var(--ease-out)}body.drawer-open .sidebar-left,body.drawer-open #sidebar.sidebar-left,.sidebar-left.drawer-open,.sidebar-left.open,#sidebar.open{transform:translate(0)}.sidebar-left,#sidebar.sidebar-left{z-index:var(--z-sticky, 100)}.bottom-panel,#elevation-panel{left:0!important;right:0;width:100%;height:var(--sheet-h, 40dvh)!important;max-height:85dvh;min-height:15dvh;bottom:calc(-1 * var(--sheet-h, 40dvh))!important;border-top-left-radius:var(--radius-lg, 16px);border-top-right-radius:var(--radius-lg, 16px);padding-top:0;padding-bottom:env(safe-area-inset-bottom,0px);transition:height .22s cubic-bezier(.25,.1,.25,1),bottom .25s ease}#elevation-panel.visible{bottom:0!important}#elevation-panel.is-dragging,.bottom-panel.is-dragging{transition:none}#elevation-panel{touch-action:pan-y}#elevation-panel .sheet-handle,.bottom-panel .sheet-handle{height:28px;flex-shrink:0}#elevation-panel .elevation-header{padding:4px 12px 6px;min-height:36px}#elevation-panel .elevation-body{padding:4px 10px 8px;min-height:0}#elevation-panel.is-minimized .elevation-body{visibility:hidden;height:0;min-height:0;padding:0;overflow:hidden}.map-sidecar-root{top:45%!important}.geo-search{left:var(--space-5, 12px)!important;right:var(--space-5, 12px)!important;width:auto!important;max-width:none!important;transform:none!important;top:calc(var(--toolbar-h) + 8px)!important;z-index:90!important}body.drawer-open .geo-search{visibility:hidden!important;pointer-events:none!important}.modal-overlay .modal-card,.modal-card{width:96vw;max-width:560px;max-height:92vh}.color-legend{bottom:calc(12px + env(safe-area-inset-bottom,0px));left:var(--space-5, 12px)}}@media (max-width: 480px){.sidebar-left,#sidebar.sidebar-left{width:100vw;max-width:100vw;padding:var(--space-5, 12px) var(--space-4, 8px)}.topbar,#toolbar{padding:0 var(--space-4, 8px);gap:var(--space-3, 6px)}.topbar .logo,#toolbar .logo{font-size:var(--text-sm, 12px)}.leaflet-popup,.leaflet-popup-content-wrapper{max-width:calc(100vw - 24px)!important}.geo-search{left:var(--space-4, 8px)!important;right:var(--space-4, 8px)!important}.modal-overlay .modal-card,.modal-card{width:100vw;height:100vh;max-height:100vh;max-width:100vw;border-radius:0}}@media (orientation: landscape) and (max-height: 480px){.topbar,#toolbar{height:40px!important;padding:0 var(--space-4, 8px)}.topbar .logo,#toolbar .logo{font-size:var(--text-sm, 12px)}.sidebar-left,#sidebar.sidebar-left{top:40px!important;width:min(280px,70vw)}#elevation-panel,.bottom-panel{top:40px;bottom:0;right:0;left:auto!important;width:40vw;max-width:40vw;max-height:calc(100vh - 40px);border-top-left-radius:var(--radius-md, 10px);border-bottom-left-radius:var(--radius-md, 10px);border-top-right-radius:0}}body.drawer-open,body.sheet-open{overflow:hidden;touch-action:none}@media (prefers-reduced-motion: reduce){.drawer-backdrop,.sidebar-left,.sidebar-right,.bottom-panel,#sidebar,#elevation-panel,.skip-link{transition:none!important;animation:none!important}}@media (prefers-contrast: more){:root{--border-subtle: rgba(255, 255, 255, .35);--border-default: rgba(255, 255, 255, .5);--border-strong: rgba(255, 255, 255, .7)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible{outline-width:3px;outline-offset:3px}.btn,.sidebar-tab,.topbar,.sidebar-left,.bottom-panel{border-color:var(--border-strong)!important}}@media (max-width: 768px){input[type=text],input[type=search],input[type=number],input[type=email],input[type=password],input[type=tel],input[type=url],textarea,select{font-size:16px!important}}.mobile-search-btn{display:none}@media (max-width: 640px){.mobile-search-btn{display:inline-flex;align-items:center;justify-content:center;position:fixed;top:calc(env(safe-area-inset-top,0px) + 4px);left:calc(52px + env(safe-area-inset-left,0px));width:40px;height:40px;background:transparent;border:0;color:var(--text-primary);z-index:calc(var(--z-sticky, 100) + 1);padding:0}.mobile-search-btn:hover,.mobile-search-btn:focus-visible{background:#ffffff14;border-radius:var(--radius-sm, 8px)}.geo-search{display:none!important}body.mobile-search-open .geo-search{display:block!important;position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;max-width:none!important;transform:none!important;z-index:var(--z-modal, 1200)!important;background:var(--bg-primary, #0d131d)!important;padding:calc(env(safe-area-inset-top,0px) + 12px) 12px 12px}body.mobile-search-open .geo-search .geo-search-input-wrap{height:48px}body.mobile-search-open .geo-search-results{display:block!important;position:static!important;margin-top:8px;max-height:calc(100dvh - 80px);overflow-y:auto;background:transparent!important;border:0!important}body.mobile-search-open .mobile-search-btn{z-index:calc(var(--z-modal, 1200) + 1);top:calc(env(safe-area-inset-top,0px) + 12px);right:12px;left:auto}body.mobile-search-open .mobile-search-btn:before{content:"×";font-size:28px;line-height:1;font-weight:300}body.mobile-search-open .mobile-search-btn svg{display:none}}@media (max-width: 640px){:root{--toolbar-h: 48px}.topbar,#toolbar{height:48px;padding:0 8px;gap:4px}.topbar .logo,#toolbar .logo{font-size:0;margin:0 0 0 56px}.topbar .logo .logo-mascot,#toolbar .logo .logo-mascot{width:32px;height:32px;margin-right:0}.topbar .logo .logo-accent,.topbar .logo>span:not(.logo-mascot),#toolbar .logo .logo-accent,#toolbar .logo>span:not(.logo-mascot){display:none}.toolbar-section.toolbar-center,.topbar-section--center{display:none}.toolbar-section.toolbar-right{gap:2px;margin-left:auto}.topbar .btn.btn-icon,#toolbar .btn.btn-icon{width:40px;height:40px;min-width:40px;min-height:40px;padding:0}}.stats-mobile-compact{display:none}@media (max-width: 768px){.stats-mobile-compact{position:fixed;left:0;right:0;bottom:var(--sheet-h, 40dvh);height:32px;padding:0 12px calc(env(safe-area-inset-bottom,0px)*0);display:none;align-items:center;justify-content:center;gap:6px;background:#0f1720eb;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--border-subtle, rgba(255, 255, 255, .08));color:var(--text-primary);font-size:12px;font-family:var(--font-mono);font-weight:500;letter-spacing:-.01em;z-index:calc(var(--z-overlay, 500) - 1);transition:bottom .22s cubic-bezier(.25,.1,.25,1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}body:has(#elevation-panel.visible) .stats-mobile-compact{display:flex}#elevation-panel.is-dragging~.stats-mobile-compact{transition:none}.smc-item{color:var(--text-primary);line-height:1}.smc-sep{color:var(--text-subtle, #64748b);margin:0 2px}body:has(#elevation-panel.visible) .color-legend{display:none}}@supports (height: 100dvh){.modal-overlay,.drop-overlay{height:100dvh}}@media (max-width: 640px){.map-sidecar-toggle{min-width:44px;min-height:44px}}#map,.map-canvas{touch-action:pan-x pan-y}@media print{.topbar,#toolbar,.sidebar-left,#sidebar,.bottom-panel,#elevation-panel,.drawer-backdrop,.skip-link,.layer-switch,.map-sidecar-root,.geo-search{display:none!important}.map-area,#map{position:static!important;width:100%!important;height:auto!important}}.trail-intel-panel{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);background:#161a22;color:#e8ebf0;border-left:1px solid #2a2f38;box-shadow:-8px 0 24px #00000073;display:flex;flex-direction:column;font-family:var(--font-sans, system-ui, -apple-system, "Segoe UI", sans-serif);font-size:13px;z-index:1100;transform:translate(100%);transition:transform .22s ease;overflow:hidden}.trail-intel-panel.is-open{transform:translate(0)}.ti-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid #2a2f38;background:#1a1d24}.ti-title{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px;color:#f5f7fa}.ti-title-icon{color:#4ad0b3;flex-shrink:0}.ti-close{background:transparent;border:none;color:#a0a6b0;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;transition:background .12s}.ti-close:hover{background:#2a2f38;color:#f5f7fa}.ti-progress{padding:10px 16px;border-bottom:1px solid #2a2f38;background:#1a1d24}.ti-progress-bar{height:3px;background:#2a2f38;border-radius:2px;overflow:hidden;margin-bottom:6px}.ti-progress-fill{height:100%;width:0;background:linear-gradient(90deg,#4ad0b3,#5ed3ff);transition:width .2s ease}.ti-progress[data-state=done] .ti-progress-fill{background:#22c55e}.ti-progress[data-state=error] .ti-progress-fill{background:#ef4444}.ti-progress-label{font-size:11px;color:#a0a6b0;letter-spacing:.02em}.ti-tabs{display:flex;border-bottom:1px solid #2a2f38;background:#161a22;flex-shrink:0}.ti-tab{flex:1;padding:10px 6px;background:transparent;border:none;border-bottom:2px solid transparent;color:#a0a6b0;cursor:pointer;font-size:11px;font-weight:500;letter-spacing:.02em;transition:color .12s,border-color .12s;white-space:nowrap}.ti-tab:hover{color:#e8ebf0}.ti-tab[aria-selected=true]{color:#4ad0b3;border-bottom-color:#4ad0b3}.ti-tab-count{display:inline-block;margin-left:4px;padding:1px 6px;background:#2a2f38;border-radius:999px;font-size:10px;color:#cfd4dc}.ti-tab[aria-selected=true] .ti-tab-count{background:#4ad0b3;color:#0f172a}.ti-body{flex:1;overflow-y:auto;padding:14px 16px}.ti-tab-panel[hidden]{display:none}.ti-empty{text-align:center;padding:32px 12px;color:#a0a6b0}.ti-empty p{margin:0 0 6px;font-size:13px}.ti-empty-hint{font-size:11px;color:#707682}.ti-empty a{color:#4ad0b3;text-decoration:underline}.ti-photos-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.ti-photo{position:relative;aspect-ratio:1;border:none;background:#2a2f38;border-radius:6px;overflow:hidden;cursor:pointer;padding:0;transition:transform .12s}.ti-photo:hover{transform:scale(1.04)}.ti-photo img{width:100%;height:100%;object-fit:cover;display:block}.ti-photo-meta{position:absolute;bottom:4px;right:4px;background:#0009;color:#fff;padding:1px 5px;border-radius:3px;font-size:10px;font-weight:500}.ti-note{padding:10px 0;border-bottom:1px solid #2a2f38}.ti-note:last-child{border-bottom:none}.ti-note-text{color:#e8ebf0;line-height:1.5;margin-bottom:6px;white-space:pre-wrap;word-break:break-word;font-size:13px}.ti-note-meta{display:flex;flex-wrap:wrap;gap:4px;align-items:center;font-size:11px;color:#a0a6b0}.ti-note-link{margin-left:auto;color:#4ad0b3;text-decoration:none;padding:2px 6px;border:1px solid #2a2f38;border-radius:4px}.ti-note-link:hover{background:#2a2f38}.ti-poi{padding:12px 0;border-bottom:1px solid #2a2f38}.ti-poi:last-child{border-bottom:none}.ti-poi-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:6px}.ti-poi-title{margin:0;font-size:14px;font-weight:600;color:#f5f7fa;flex:1}.ti-poi-dist{font-size:11px;color:#a0a6b0;flex-shrink:0}.ti-poi-body{font-size:12px;color:#cfd4dc}.ti-poi-extract{display:flex;gap:10px;align-items:flex-start;margin-bottom:6px;min-height:14px}.ti-poi-extract[data-loading="1"]:before{content:"Chargement…";color:#707682;font-style:italic;font-size:11px}.ti-poi-extract p{margin:0;line-height:1.5}.ti-poi-thumb{width:64px;height:64px;object-fit:cover;border-radius:4px;flex-shrink:0}.ti-poi-link{display:inline-block;margin-top:4px;font-size:11px;color:#4ad0b3;text-decoration:none}.ti-poi-link:hover{text-decoration:underline}.ti-trail{padding:10px 0;border-bottom:1px solid #2a2f38}.ti-trail:last-child{border-bottom:none}.ti-trail-title{margin:0 0 4px;font-size:13px;font-weight:600;color:#f5f7fa}.ti-trail-meta{font-size:11px;color:#a0a6b0;margin-bottom:4px}.ti-trail-link{font-size:11px;color:#4ad0b3;text-decoration:none}.ti-footer{border-top:1px solid #2a2f38;padding:8px 12px;background:#1a1d24}.ti-config-btn{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid #2a2f38;color:#a0a6b0;padding:6px 10px;border-radius:6px;font-size:11px;cursor:pointer;transition:all .12s}.ti-config-btn:hover{color:#e8ebf0;border-color:#4ad0b3}.ti-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;z-index:1200;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;cursor:zoom-out}.ti-lightbox img{max-width:100%;max-height:80vh;border-radius:4px;box-shadow:0 8px 32px #0009}.ti-lightbox-close{position:absolute;top:16px;right:16px;background:#ffffff1a;border:none;color:#fff;cursor:pointer;padding:8px;border-radius:50%;display:flex;align-items:center}.ti-lightbox-close:hover{background:#fff3}.ti-lightbox-meta{margin-top:12px;display:flex;gap:8px;align-items:center;color:#cfd4dc;font-size:12px}.ti-lightbox-meta a{color:#4ad0b3;text-decoration:none}.btn-trail-intel{position:fixed;bottom:24px;right:24px;z-index:900;background:linear-gradient(135deg,#4ad0b3,#5ed3ff);color:#0f172a;border:none;border-radius:999px;padding:12px 18px;font-weight:600;font-size:13px;cursor:pointer;display:none;align-items:center;gap:8px;box-shadow:0 6px 20px #4ad0b359;transition:transform .12s,box-shadow .12s}.btn-trail-intel.is-visible{display:inline-flex;animation:ti-pop-in .22s ease-out}.btn-trail-intel:hover{transform:translateY(-1px);box-shadow:0 8px 24px #4ad0b380}.btn-trail-intel:disabled{opacity:.5;cursor:not-allowed}@keyframes ti-pop-in{0%{transform:scale(.9) translateY(8px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}dialog.ti-config-dialog{border:none;border-radius:12px;padding:0;background:#1a1d24;color:#e8ebf0;max-width:480px;width:calc(100% - 32px);box-shadow:0 20px 60px #0009}dialog.ti-config-dialog::backdrop{background:#000000a6;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.ti-config-form{padding:20px 24px}.ti-config-form h3{margin:0 0 6px;font-size:16px;color:#f5f7fa}.ti-config-help{font-size:12px;color:#a0a6b0;margin:0 0 18px}.ti-config-field{display:block;margin-bottom:16px}.ti-config-field>span{display:block;font-size:12px;font-weight:500;margin-bottom:6px;color:#cfd4dc}.ti-config-field input{width:100%;padding:8px 10px;background:#0f172a;border:1px solid #2a2f38;border-radius:6px;color:#e8ebf0;font-size:12px;font-family:JetBrains Mono,monospace}.ti-config-field input:focus{outline:none;border-color:#4ad0b3}.ti-config-field small{display:block;margin-top:6px;font-size:11px;color:#707682}.ti-config-field small a{color:#4ad0b3}.ti-config-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.ti-config-cancel,.ti-config-save{padding:8px 16px;border-radius:6px;border:none;cursor:pointer;font-size:12px;font-weight:500}.ti-config-cancel{background:transparent;color:#a0a6b0;border:1px solid #2a2f38}.ti-config-cancel:hover{background:#2a2f38;color:#e8ebf0}.ti-config-save{background:#4ad0b3;color:#0f172a}.ti-config-save:hover{background:#5ed3ff}@media (max-width: 540px){.trail-intel-panel{width:100vw}.btn-trail-intel{bottom:16px;right:16px;padding:10px 14px;font-size:12px}}
