.app{height:100vh;width:100vw;position:relative;background:var(--bg)}.map-container{width:100%;height:100%;position:relative}.panel{position:fixed;top:16px;left:16px;width:min(440px,calc(100vw - 32px));height:calc(100vh - 32px);display:flex;flex-direction:column;gap:var(--space-3);overflow:auto;background:linear-gradient(160deg,#fffffff5,#f0e9dffa);border:1px solid var(--border-panel);border-radius:18px;box-shadow:0 24px 48px #14100c29;-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);padding:var(--space-4);font-size:13.5px;z-index:20;animation:panel-enter .45s cubic-bezier(.16,1,.3,1)}.panel>*{animation:panel-item .35s ease both}.panel>*:nth-child(1){animation-delay:40ms}.panel>*:nth-child(2){animation-delay:70ms}.panel>*:nth-child(3){animation-delay:.1s}.panel>*:nth-child(4){animation-delay:.13s}.panel>*:nth-child(5){animation-delay:.16s}.panel>*:nth-child(6){animation-delay:.19s}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);flex-wrap:nowrap}.panel-controls{display:flex;gap:8px;align-items:center;flex-shrink:0}.panel-close{width:32px;height:32px;border-radius:999px;border:1px solid var(--border);color:var(--text);background:var(--surface-glass-solid);font-size:18px;font-weight:600;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .08s ease,background-color .2s ease,border-color .2s ease;box-shadow:inset 0 1px #ffffffb3}.panel-close:hover{background:#fff;border-color:var(--border-strong)}.panel-close:active{transform:translateY(1px)}.panel--compact .panel-close{width:30px;height:30px;font-size:16px}.panel-title{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:.015em;line-height:1.05;margin:0;flex:1;min-width:0}.panel-subtle{color:var(--muted);font-size:12px;line-height:1.4}.panel-callout{margin-top:var(--space-3);padding:var(--space-3);border-radius:12px;border:1px solid var(--border-soft);background:var(--surface-glass);display:flex;flex-direction:column;gap:var(--space-2);box-shadow:inset 0 1px #ffffffb3}.panel-callout--info{border-color:#5a5f7859;background:#ebecf5bf}.panel-callout--warning{border-color:#96523a61;background:#f8e7dbbf}.panel-callout--ready{border-color:#2a524059;background:#e2f4ecbf}.panel-callout-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.panel-callout-body{display:flex;flex-direction:column;gap:6px;font-size:13px}.panel-callout-label{font-weight:600;font-size:14px;color:var(--text)}.panel-callout-hint{font-size:12px;color:var(--muted)}.panel-callout-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.panel-notice{font-size:12px;margin-top:var(--space-2);padding:8px 10px;border-radius:10px;border-left:3px solid transparent;background:var(--surface-glass);color:var(--text)}.panel-notice--info{border-color:#5a5f7859;background:#ebecf5bf}.panel-notice--success{border-color:#2a524059;background:#e2f4ecbf}.panel-notice--error{border-color:#a0403473;background:#fae2dfbf}.row{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.row .input-group{flex:1}.input-group{display:grid;grid-template-columns:1fr auto;align-items:stretch;border:1px solid var(--border);border-radius:999px;background:var(--surface-glass-solid);overflow:hidden;box-shadow:inset 0 1px #fffc}.input-group .input{border:0;border-radius:0;height:36px;padding:8px 14px}.input-group .btn{border:0;border-left:1px solid var(--border);border-radius:0;height:36px;padding:0 14px;background:#a640331a;color:var(--text);box-shadow:none}.input-group .btn:hover{background:#a6403333}.input{width:100%;height:32px;padding:8px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface-glass-solid);font-size:14px;outline:none}.input:focus-visible{border-color:#a6403359;box-shadow:0 0 0 3px #a640332e}.btn{min-height:32px;padding:6px 10px;font-size:.85rem}.btn-secondary{background-color:var(--surface-glass-opaque)}.btn-secondary:hover{background-color:#fff}.btn-danger{background-color:var(--danger);border-color:transparent;color:#fff}.btn-danger:hover{background-color:var(--danger-hover);border-color:transparent}.btn-icon{width:28px;height:28px;padding:0;line-height:1;display:inline-flex;align-items:center;justify-content:center;border-radius:8px}.panel-toggle{position:fixed;top:16px;left:16px;border-radius:999px;border:1px solid var(--border);box-shadow:0 16px 30px #14100c1f;background:var(--surface-glass-opaque);padding:8px 14px;font-weight:600}.panel--compact{gap:var(--space-2);padding:12px;font-size:13px}.panel--compact .panel-title{font-size:19px}.panel--compact .input-group .input,.panel--compact .input-group .btn{height:32px}.panel--compact .btn{min-height:28px;padding:5px 9px}.panel--compact .btn-icon{width:24px;height:24px}.panel--compact .list-item{padding:6px 8px}.panel--compact .list{flex-basis:180px;min-height:140px}.panel--compact .panel-callout{padding:var(--space-2)}.panel--compact .panel-callout-body{font-size:12.5px}.panel--compact .panel-callout-label{font-size:13px}.panel--compact .panel-notice{padding:6px 8px;font-size:11.5px}.panel--compact .panel-footer{padding:var(--space-3)}.panel--compact .panel-footer-title{font-size:11px}.panel--compact .stats{gap:var(--space-2)}.panel--compact .stat-value{font-size:13px}.btn-start.is-active{background:var(--primary);color:#fff;border-color:transparent}.btn-end.is-active{background:var(--success);color:#fff;border-color:transparent}.list{display:flex;flex-direction:column;flex:1 1 220px;min-height:160px;overflow-y:auto;padding:4px;border:1px solid var(--border-soft);border-radius:12px;background:var(--surface-glass-strong);scrollbar-gutter:stable}.list-empty{padding:10px 12px;color:var(--muted);text-align:center;margin:auto 0}.list-item{display:grid;grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:var(--space-2);padding:8px;border-bottom:1px solid rgba(124,107,92,.12);border-left:3px solid transparent;transition:transform .15s ease}.list-item:last-child{border-bottom:0}.address{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.9rem}.actions{display:flex;gap:6px}.route-badge{width:24px;height:24px;border-radius:999px;border:1px solid var(--border);background:var(--surface-glass);font-size:12px;font-weight:700;color:var(--text);display:inline-flex;align-items:center;justify-content:center;line-height:1}.route-badge--empty{opacity:.35}.export{border:1px solid var(--border-soft);border-radius:12px;padding:8px;background:var(--surface-glass)}.export-item{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.export-title{font-weight:600}.export-link{color:var(--link)}.panel-footer{margin-top:auto;padding:var(--space-4);border-radius:14px;border:1px solid var(--border-panel);background:linear-gradient(180deg,#f4ede4eb,#ece4dbf2);display:flex;flex-direction:column;gap:var(--space-3);box-shadow:inset 0 1px #ffffffbf;align-self:stretch}.panel-footer-title{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-3)}.stat{display:flex;flex-direction:column;gap:4px}.stat-label{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.stat-value{font-weight:600;font-size:14px;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-value--wrap{white-space:normal;word-break:break-word}.version{color:var(--muted);font-size:12px;margin-top:6px}.mono{font-family:var(--font-mono)}.panel-footer .version{margin:0;display:flex;gap:6px;align-items:center}@media(prefers-reduced-motion:reduce){.panel,.panel>*{animation:none}.panel-close,.list-item{transition:none}}.fullscreen{height:100vh;display:flex;align-items:center;justify-content:center;font-size:18px;font-family:var(--font-display)}@media(max-width:720px){.panel{top:12px;left:12px;width:calc(100vw - 24px);height:calc(100vh - 24px)}}@media(min-width:1024px){.panel{top:16px;bottom:16px;height:calc(100vh - 32px)}}@keyframes panel-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes panel-item{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}:root{--font-sans: system-ui, -apple-system, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;--font-display: system-ui, -apple-system, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;--text: #1c1916;--muted: #6a625a;--bg: #f3f0ea;--surface: #fbfaf6;--surface-2: #eee8df;--border: #ded4c9;--border-strong: #c6b9ac;--border-soft: rgba(110, 95, 82, .2);--border-panel: rgba(110, 95, 82, .22);--surface-glass: rgba(255, 255, 255, .7);--surface-glass-strong: rgba(255, 255, 255, .75);--surface-glass-solid: rgba(255, 255, 255, .9);--surface-glass-opaque: rgba(255, 255, 255, .92);--shadow: 0 16px 34px rgba(22, 18, 14, .1);--radius: 14px;--primary: #a64033;--primary-hover: #8c342a;--success: #1b1816;--danger: #8f352a;--danger-hover: #762a22;--link: #a64033;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);letter-spacing:.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}button{border-radius:999px;border:1px solid var(--border);padding:.55rem .95rem;font-size:.9rem;font-weight:600;font-family:inherit;background-color:var(--surface);color:var(--text);cursor:pointer;transition:transform .08s ease,border-color .2s ease,background-color .2s ease,box-shadow .2s ease;box-shadow:0 1px #18120c14}button:hover{border-color:var(--border-strong);background-color:#fff}button:focus-visible{outline:2px solid rgba(176,74,44,.55);outline-offset:2px}button:active{transform:translateY(1px)}button:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.skip-link{position:absolute;top:8px;left:8px;padding:8px 12px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);z-index:3000;transform:translateY(-140%);transition:transform .12s ease}.skip-link:focus-visible{transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}@media(prefers-reduced-motion:reduce){button,.skip-link{transition:none}}
