.map-shell{width:100vw;height:100vh;position:fixed;inset:0}.map-container{width:100%;height:100%}.error-banner{z-index:1000;color:#991b1b;background:#fee2e2;border:1px solid #ef4444;border-radius:8px;align-items:center;gap:12px;padding:12px 16px;font-size:14px;display:flex;position:absolute;top:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 6px -1px #0000001a}.error-banner button{color:#fff;cursor:pointer;background:#ef4444;border:none;border-radius:6px;padding:6px 12px;font-size:13px;transition:background .2s}.error-banner button:hover{background:#dc2626}.empty-state{color:#fff;z-index:1000;pointer-events:none;background:#0009;border-radius:8px;flex-direction:column;align-items:center;gap:12px;padding:16px 24px;font-size:16px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.empty-state button{pointer-events:auto;color:#fff;cursor:pointer;background:#3b82f6;border:none;border-radius:6px;padding:8px 16px;font-size:14px;transition:background .2s}.empty-state button:hover:not(:disabled){background:#2563eb}.empty-state button:disabled{opacity:.6;cursor:not-allowed}.login-button{z-index:1000;color:#fff;cursor:pointer;background:#1f2937;border:none;border-radius:6px;padding:10px 16px;font-size:14px;font-weight:500;transition:background .2s,transform .1s;position:fixed;top:16px;left:16px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.login-button:hover{background:#374151}.login-button:active{transform:scale(.98)}.admin-bar{z-index:1000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1f2937f2;border-bottom:1px solid #374151;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 16px;display:flex;position:fixed;top:0;left:0;right:0}.admin-bar button{color:#e5e7eb;cursor:pointer;background:0 0;border:1px solid #4b5563;border-radius:6px;padding:8px 14px;font-size:13px;font-weight:500;transition:background .2s,border-color .2s,color .2s}.admin-bar button:hover{color:#fff;background:#374151;border-color:#6b7280}.admin-bar .logout-button{color:#fca5a5;border-color:#ef4444;margin-left:auto}.admin-bar .logout-button:hover{color:#fff;background:#7f1d1d;border-color:#ef4444}.overlay-panel{z-index:1100;background:#00000080;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.login-panel{background:#fff;border-radius:12px;width:100%;max-width:360px;padding:24px;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.login-panel h2{color:#111827;margin:0 0 20px;font-size:20px;font-weight:600}.login-panel form{flex-direction:column;gap:14px;display:flex}.login-panel label{color:#374151;flex-direction:column;gap:6px;font-size:14px;font-weight:500;display:flex}.login-panel input{border:1px solid #d1d5db;border-radius:6px;padding:10px 12px;font-size:14px;transition:border-color .2s,box-shadow .2s}.login-panel input:focus{border-color:#3b82f6;outline:none;box-shadow:0 0 0 3px #3b82f626}.login-panel input:disabled{color:#9ca3af;background:#f3f4f6}.login-panel button[type=submit]{color:#fff;cursor:pointer;background:#3b82f6;border:none;border-radius:6px;margin-top:6px;padding:10px 16px;font-size:14px;font-weight:500;transition:background .2s}.login-panel button[type=submit]:hover:not(:disabled){background:#2563eb}.login-panel button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.login-panel .error{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;padding:8px 10px;font-size:13px}.login-panel .success{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;padding:8px 10px;font-size:13px}.login-panel .mode-toggle{color:#3b82f6;cursor:pointer;background:0 0;border:none;margin-top:16px;padding:0;font-size:14px;font-weight:500}.login-panel .mode-toggle:hover{text-decoration:underline}.detail-panel-header{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;display:flex}.detail-panel-close{color:#6b7280;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px;font-size:18px;line-height:1;transition:background .2s,color .2s}.detail-panel-close:hover{color:#111827;background:#f3f4f6}.detail-panel-meta{color:#6b7280;margin-bottom:4px;font-size:13px}.detail-panel-loading,.detail-panel-error,.detail-panel-empty{text-align:center;padding:12px;font-size:13px}.detail-panel-loading{color:#6b7280}.detail-panel-error{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:6px}.detail-panel-empty{color:#9ca3af}.detail-panel-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.detail-panel-list li{background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.route-grade{color:#3730a3;background:#e0e7ff;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:600}.hexel-menu{background:#fff;border:1px solid #e5e7eb;border-radius:8px;flex-direction:column;gap:6px;min-width:180px;padding:8px;display:flex;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.hexel-menu button{color:#374151;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;width:100%;padding:8px 12px;font-size:13px;font-weight:500;transition:background .2s,color .2s}.hexel-menu button:hover{color:#111827;background:#f3f4f6}.hexel-menu-close{color:#9ca3af;border-radius:4px;line-height:1;position:absolute;top:4px;right:4px;width:24px!important;height:24px!important;padding:0!important;font-size:12px!important}.hexel-menu-close:hover{color:#111827;background:#f3f4f6}.model-chip{z-index:1100;color:#374151;background:#fff;border:1px solid #e5e7eb;border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex;position:fixed;bottom:16px;left:16px;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.model-chip button{color:#9ca3af;cursor:pointer;background:0 0;border:none;border-radius:4px;width:20px;height:20px;padding:0;font-size:16px;line-height:1;transition:background .2s,color .2s}.model-chip button:hover{color:#111827;background:#f3f4f6}.model-error{z-index:1100;color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;max-width:320px;padding:10px 12px;font-size:13px;position:fixed;bottom:16px;left:16px;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}@media (width<=640px){.overlay-panel{align-items:flex-end;padding:0}.overlay-panel>*{border-radius:12px 12px 0 0;width:100%;max-width:none;max-height:60vh;overflow-y:auto}.admin-bar{flex-wrap:wrap}.info-panel{width:auto;max-height:50vh;padding:0 8px;inset:auto 0 64px}.info-body{border-radius:12px 12px 0 0}button,input{min-height:44px}.detail-panel-close{min-width:44px}.hexel-menu{min-width:0;max-height:60vh;bottom:8px;right:8px;overflow-y:auto;top:auto!important;left:8px!important}.hexel-menu-close{width:44px!important;height:44px!important}}.info-panel{z-index:1000;pointer-events:none;flex-direction:column;align-items:flex-start;gap:8px;width:300px;display:flex;position:fixed;top:64px;bottom:72px;left:16px}.info-toggle,.info-body{pointer-events:auto}.info-toggle{color:#111827;background:#fff;border:1px solid #e5e7eb;border-radius:8px}.info-body{color:#111827;box-sizing:border-box;background:#fff;border:1px solid #e5e7eb;border-radius:12px;width:100%;min-height:0;padding:12px;overflow-y:auto;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.info-tree{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.info-tree .info-tree{border-left:2px solid #e5e7eb;margin:4px 0 4px 12px;padding-left:8px}.info-row{text-align:left;color:#111827;cursor:pointer;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;width:100%;padding:8px 10px;font-size:14px}.info-row:before{content:"▸ ";color:#6b7280}.info-row[aria-expanded=true]{background:#eff6ff;border-color:#bfdbfe;font-weight:600}.info-row[aria-expanded=true]:before{content:"▾ "}.info-block{margin:6px 0 6px 12px}.info-body .detail-panel-meta{margin:4px 0 0 12px}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:#ffffffde;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;background-color:#242424;font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}a{color:#646cff;-webkit-text-decoration:inherit;text-decoration:inherit;font-weight:500}a:hover{color:#535bf2}html,body,#root{height:100%;margin:0}body{min-width:320px}button{cursor:pointer;background-color:#1a1a1a;border:1px solid #0000;border-radius:8px;padding:.6em 1.2em;font-family:inherit;font-size:1em;font-weight:500;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}
