*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1115;--panel:#171a21;--panel-2:#1e222b;--border:#2a2f3a;--text:#e7e9ee;--muted:#9aa3b2;--a:#4f8cff;--b:#ff7a59;--best:#2ecc71;--accent:#7c5cff}html,body{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}input,button{font-family:inherit}a{-webkit-tap-highlight-color:transparent;color:var(--a)}.app{grid-template-columns:380px 1fr;width:100vw;height:100dvh;display:grid}.sidebar{background:var(--panel);border-right:1px solid var(--border);-webkit-overflow-scrolling:touch;flex-direction:column;gap:18px;padding:20px;display:flex;overflow-y:auto}.sheet-handle{display:none}.brand{letter-spacing:-.3px;font-size:20px;font-weight:700}.brand small{color:var(--muted);margin-top:2px;font-size:12px;font-weight:400;display:block}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px}.dot{vertical-align:middle;border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}.dot.a{background:var(--a)}.dot.b{background:var(--b)}input[type=text]{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:8px;outline:none;width:100%;padding:12px;font-size:16px}input[type=text]:focus{border-color:var(--accent)}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:999px;padding:5px 11px;font-size:13px}.chip:hover{border-color:var(--accent)}.chip.active{background:var(--accent);border-color:var(--accent)}.btn{background:var(--accent);color:#fff;border:none;border-radius:8px;width:100%;padding:12px;font-weight:600}.btn:disabled{opacity:.5;cursor:not-allowed}.error{color:#ffb4b4;background:#3a1d1d;border:1px solid #6b2b2b;border-radius:8px;padding:10px 12px;font-size:13px}.results{flex-direction:column;gap:8px;display:flex}.result{background:var(--panel-2);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:10px 12px}.result:hover,.result.hovered{border-color:var(--accent)}.result.best{border-color:var(--best)}.result.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.result .name{justify-content:space-between;gap:8px;font-size:14px;font-weight:600;display:flex}.result .badge{background:var(--best);color:#06210f;white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.result .meta{color:var(--muted);margin-top:4px;font-size:12px}.share-bar{border-radius:3px;height:6px;margin-top:8px;display:flex;overflow:hidden}.share-bar .sa{background:var(--a)}.share-bar .sb{background:var(--b)}.share-legend{color:var(--muted);justify-content:space-between;margin-top:4px;font-size:11px;display:flex}.map-wrap{width:100%;height:100%;position:relative}.tooltip{color:#111;min-width:190px;font-family:system-ui,sans-serif}.tooltip .t-name{margin-bottom:6px;font-size:14px;font-weight:700}.tooltip .t-row{justify-content:space-between;margin:2px 0;font-size:12px;display:flex}.tooltip .t-bar{border-radius:3px;height:6px;margin-top:6px;display:flex;overflow:hidden}.tooltip .t-bar .sa{background:#4f8cff}.tooltip .t-bar .sb{background:#ff7a59}.tooltip .t-hint{color:#6b7280;border-top:1px solid #e5e7eb;margin-top:7px;padding-top:5px;font-size:11px}.detail{background:var(--panel-2);border:1px solid var(--accent);border-radius:10px;flex-direction:column;gap:10px;padding:12px;display:flex}.detail-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.detail-name{font-size:15px;font-weight:700}.detail-addr{color:var(--muted);margin-top:-4px;font-size:12px}.legs{flex-direction:column;gap:10px;display:flex}.leg{flex-direction:column;gap:5px;display:flex}.leg-head{justify-content:space-between;align-items:center;font-size:13px;display:flex}.leg-nums{color:var(--muted);font-variant-numeric:tabular-nums}.maps-link{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 10px;font-size:12px;text-decoration:none;display:inline-block}.maps-link:hover{border-color:var(--accent)}.hint{color:var(--muted);font-size:12px;line-height:1.5}.mode-toggle{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;gap:6px;padding:4px;display:flex}.mode-toggle button{color:var(--muted);background:0 0;border:none;border-radius:6px;flex:1;padding:8px;font-size:13px}.mode-toggle button.active{background:var(--accent);color:#fff}.spinner{color:var(--muted);font-size:13px}.mk-endpoint{color:#fff;cursor:default;border:2px solid #0f1115;border-radius:50%;place-items:center;width:26px;height:26px;font-size:13px;font-weight:700;display:grid;box-shadow:0 1px 4px #00000080}.mk-dot{cursor:pointer;border:2px solid #0f1115;border-radius:50%;width:14px;height:14px;transition:transform .12s;box-shadow:0 1px 3px #00000080}.mk-dot:hover{transform:scale(1.35)}.mk-dot.best{width:18px;height:18px;box-shadow:0 0 0 4px #2ecc7140}.mb-popup .mapboxgl-popup-content{border-radius:10px;padding:10px 12px;box-shadow:0 6px 24px #0006}.mb-popup .mapboxgl-popup-tip{display:none}@media (max-width:768px){.app{display:block;position:relative;overflow:hidden}.map-wrap{position:absolute;inset:0}.sidebar{z-index:30;border-right:none;border-top:1px solid var(--border);width:100%;max-height:88dvh;padding:8px 16px calc(20px + env(safe-area-inset-bottom,0px));border-radius:18px 18px 0 0;gap:14px;transition:transform .28s cubic-bezier(.32,.72,0,1);position:fixed;inset:auto 0 0;transform:translateY(0);box-shadow:0 -10px 34px #00000080}.sidebar.peek{transform:translateY(calc(100% - 62px))}.sheet-handle{color:var(--text);touch-action:manipulation;background:0 0;border:none;flex-direction:column;align-items:center;gap:6px;width:100%;padding:10px 0 2px;display:flex}.sheet-handle .grabber{background:var(--border);border-radius:999px;width:40px;height:4px}.sheet-handle .sheet-label{color:var(--muted);font-size:13px;font-weight:600}.brand{text-align:center}.mode-toggle button{padding:11px;font-size:14px}.chip{padding:8px 14px;font-size:14px}.btn{padding:14px;font-size:15px}.result{padding:12px 14px}.mapboxgl-ctrl-top-right{top:max(10px, env(safe-area-inset-top,0px))}}
