:root{--bg:#f6f7f9;--ink:#111827;--muted:#667085;--line:rgba(17,24,39,0.12);--panel:rgba(255,255,255,0.92);--panel-border:rgba(255,255,255,0.7);--control-bg:rgba(255,255,255,0.94);--card:#f8fafc;--close-bg:#f3f4f6;--button-text:#344054;--active-bg:#dbeafe;--active-border:#93c5fd;--active-ink:#1d4ed8;--active-muted:#1e40af;--route-text:#4b5563;--tag-bg:#eef2ff;--tag-ink:#3730a3;--toast-text:#344054;--danger-ink:#dc2626;--map-bg:#e8edf3;--shadow:0 20px 60px rgba(15,23,42,0.18);color-scheme:light}:root[data-theme=dark]{--bg:#0b1220;--ink:#f8fafc;--muted:#a3adc2;--line:rgba(226,232,240,0.16);--panel:rgba(15,23,42,0.9);--panel-border:rgba(148,163,184,0.26);--control-bg:rgba(15,23,42,0.9);--card:rgba(30,41,59,0.82);--close-bg:rgba(30,41,59,0.88);--button-text:#dbe4f0;--active-bg:rgba(37,99,235,0.24);--active-border:rgba(96,165,250,0.58);--active-ink:#bfdbfe;--active-muted:#bfdbfe;--route-text:#cbd5e1;--tag-bg:rgba(79,70,229,0.28);--tag-ink:#c7d2fe;--toast-text:#e2e8f0;--danger-ink:#fca5a5;--map-bg:#222b38;--shadow:0 22px 62px rgba(0,0,0,0.42);color-scheme:dark}*{box-sizing:border-box}body,html{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif;overscroll-behavior-y:contain}button,input{font:inherit}.app-shell{height:100dvh;overscroll-behavior-y:contain;overflow:hidden;position:relative}.leaflet-host,.map-loading,.map-stage{height:100%;width:100%}.leaflet-container,.map-loading{background:var(--map-bg)}.leaflet-container{font-family:Arial,Helvetica,sans-serif}:root[data-theme=dark] .leaflet-tile-pane{filter:invert(.92) hue-rotate(180deg) brightness(.78) contrast(1.12) saturate(.82)}.top-bar{align-items:center;display:flex;gap:14px;justify-content:space-between;left:16px;position:absolute;right:16px;top:14px;z-index:500}.top-bar h1,.top-bar p{margin:0}.top-bar h1{font-size:26px;letter-spacing:0;line-height:1}.kicker{color:#2563eb;font-size:12px;font-weight:800;text-transform:uppercase}.icon-button,.theme-toggle,.upload-button{align-items:center;background:#111827;border:0;color:white;cursor:pointer;display:inline-flex;gap:8px;justify-content:center}.top-actions{align-items:center;display:flex;gap:8px}.theme-toggle{border:1px solid var(--panel-border);height:44px;padding:0;width:44px}.theme-toggle,.upload-button{border-radius:8px;box-shadow:var(--shadow)}.upload-button{font-weight:800;min-height:44px;padding:0 16px}.upload-input{display:none}.account-pill{align-items:center;background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;box-shadow:var(--shadow);color:var(--ink);cursor:pointer;display:inline-flex;font-size:14px;font-weight:800;min-height:44px;padding:0 12px}.account-menu{position:relative}.account-menu-panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;box-shadow:var(--shadow);min-width:140px;padding:6px;position:absolute;right:0;top:calc(100% + 8px);z-index:800}.account-menu-panel button{background:transparent;border:0;border-radius:6px;color:var(--ink);cursor:pointer;font:inherit;font-weight:800;min-height:40px;padding:0 10px;text-align:left;width:100%}.account-menu-panel button:hover{background:var(--active-bg);color:var(--active-ink)}.auth-backdrop{align-items:center;background:rgba(15,23,42,.48);display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:2000}.auth-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;box-shadow:var(--shadow);display:grid;grid-gap:14px;gap:14px;max-width:420px;padding:18px;position:relative;width:min(100%,420px);z-index:1}.auth-header,.auth-tabs{align-items:center;display:flex;gap:8px}.auth-header{justify-content:space-between}.auth-header h2{font-size:24px;margin:0}.auth-tabs button{background:transparent;border:0;border-radius:7px;color:var(--button-text);cursor:pointer;flex:1 1;font-weight:800;min-height:44px}.auth-tabs{background:color-mix(in srgb,var(--card) 82%,transparent);border:1px solid var(--line);border-radius:10px;gap:3px;padding:3px}.auth-tabs button.active{background:var(--control-bg);box-shadow:0 8px 18px rgba(15,23,42,.12),inset 0 0 0 1px rgba(255,255,255,.5);color:var(--ink)}:root[data-theme=dark] .auth-tabs button.active{box-shadow:0 8px 18px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.08)}.auth-primary{background:#050505;color:white}:root[data-theme=dark] .auth-primary{background:var(--control-bg);border:1px solid var(--panel-border);color:var(--ink)}.auth-card input{background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;color:var(--ink);font:inherit;min-height:48px;padding:0 12px}.auth-primary,.auth-secondary{border:0;border-radius:8px;cursor:pointer;font-weight:900;min-height:48px}.auth-primary:disabled,.auth-secondary:disabled{cursor:not-allowed;opacity:.58}.auth-secondary{background:transparent;color:var(--active-ink)}.auth-copy,.auth-error{font-size:14px;font-weight:700;margin:0}.auth-copy{color:var(--muted)}.auth-error{color:var(--danger-ink)}.pull-refresh{align-items:center;background:rgba(17,24,39,.94);border:1px solid rgba(255,255,255,.2);border-radius:999px;box-shadow:0 16px 38px rgba(15,23,42,.24);color:white;display:inline-flex;gap:8px;left:50%;min-height:38px;opacity:0;padding:0 13px;pointer-events:none;position:absolute;top:14px;transform:translate(-50%,calc(-100% + min(var(--pull-distance, 0px), 86px)));transition:opacity .14s ease,transform .18s ease;z-index:700}.pull-refresh.done,.pull-refresh.pulling,.pull-refresh.refreshing{opacity:1}.pull-refresh.done,.pull-refresh.refreshing{transform:translate(-50%)}.pull-refresh i{border-radius:999px;border:2px solid rgba(255,255,255,.36);border-top-color:white;display:block;height:16px;width:16px}.pull-refresh.refreshing i{animation:refresh-spin .7s linear infinite}.pull-refresh.done i{background:#22c55e;border-color:#22c55e;box-shadow:inset 0 0 0 4px #111827}.pull-refresh span{font-size:13px;font-weight:900;line-height:1;white-space:nowrap}@keyframes refresh-spin{to{transform:rotate(1turn)}}.filter-toggle{align-items:center;background:var(--control-bg);border:1px solid var(--panel-border);border-radius:999px;box-shadow:var(--shadow);color:var(--ink);cursor:pointer;display:inline-flex;gap:8px;min-height:42px;padding:0 12px;position:absolute;right:16px;top:76px;z-index:520}.filter-toggle span{font-size:13px;font-weight:900;text-transform:capitalize}.filter-toggle small{color:var(--muted);font-size:12px;font-weight:800;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-scrim{background:rgba(15,23,42,.22);border:0;cursor:pointer;top:0;z-index:540}.control-panel,.panel-scrim{bottom:0;left:0;position:absolute;right:0}.control-panel{-webkit-backdrop-filter:blur(34px) saturate(170%);backdrop-filter:blur(34px) saturate(170%);background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--panel-border);border-radius:20px 20px 0 0;box-shadow:0 -24px 70px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.32);max-height:78dvh;overflow-y:auto;padding:9px 14px max(14px,env(safe-area-inset-bottom));top:auto;transform:translateY(calc(100% + 16px));transition:transform .18s ease;z-index:560}.control-panel.open{transform:translateY(0)}.panel-grabber{background:var(--line);border-radius:999px;height:4px;margin:0 auto 10px;width:44px}.panel-head{align-items:flex-start;display:flex;gap:14px;justify-content:space-between;padding:0 0 8px}.panel-head strong{display:block;font-size:28px;letter-spacing:0;line-height:.95}.panel-head p{color:var(--muted);font-size:12px;font-weight:800;margin:6px 0 0}.panel-overline{color:var(--muted);display:block;font-size:10px;font-weight:900;letter-spacing:.08em;margin-bottom:5px;text-transform:uppercase}.panel-actions{align-items:center;display:flex;flex:0 0 auto;gap:8px}.panel-reset{background:transparent;border:0;color:var(--active-ink);cursor:pointer;font-size:12px;font-weight:900;min-height:34px;padding:0}.panel-reset:disabled{color:var(--muted);cursor:default;opacity:.48}.panel-close{align-items:center;background:var(--close-bg);border:1px solid var(--line);border-radius:999px;color:var(--ink);cursor:pointer;display:inline-flex;height:36px;justify-content:center;width:36px}.heat-legend{align-items:center;background:var(--control-bg);border:1px solid var(--panel-border);border-radius:8px;box-shadow:0 12px 34px rgba(15,23,42,.16);display:flex;gap:12px;justify-content:space-between;left:12px;padding:9px 10px;position:absolute;right:12px;top:auto;bottom:88px;z-index:650}.heat-legend small,.heat-legend span,.heat-legend strong{display:block}.heat-legend strong{font-size:13px;line-height:1.1}.heat-legend span{color:var(--muted);font-size:11px;line-height:1.2;margin-top:2px}.legend-scale{align-items:center;display:grid;flex:0 0 min(48%,190px);grid-gap:5px;gap:5px;grid-template-columns:auto minmax(42px,1fr) auto}.legend-scale small{color:var(--button-text);font-size:11px;font-weight:800;white-space:nowrap}.legend-scale i{background:linear-gradient(90deg,#2563eb,#22c55e 38%,#f59e0b 68%,#dc2626);border-radius:999px;display:block;height:8px}.stats-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.stats-grid>div{background:var(--card);border:1px solid var(--line);border-radius:8px;min-height:74px;padding:10px}.stats-grid svg{color:#2563eb}.stats-grid strong{display:block;font-size:18px;line-height:1.25;margin-top:6px}.drawer-metrics span,.empty-drawer span,.stats-grid span{color:var(--muted);display:block;font-size:12px}.filter-chip-row{display:flex;flex-wrap:wrap;gap:6px;padding:2px 0 10px}.filter-chip{align-items:center;background:#111827;border:0;border-radius:999px;color:white;display:inline-flex;font-size:11px;font-weight:900;gap:5px;min-height:26px;padding:0 9px;text-transform:capitalize}button.filter-chip{cursor:pointer}.filter-chip:not(.active){background:var(--card);border:1px solid var(--line);color:var(--muted)}:root[data-theme=dark] .filter-chip.active{background:#f8fafc;color:#0f172a}.filter-section{border-top:1px solid var(--line);padding:9px 0}.filter-section-label{color:var(--muted);display:block;font-size:10px;font-weight:900;letter-spacing:.08em;margin-bottom:7px;text-transform:uppercase}.segmented-control{background:color-mix(in srgb,var(--card) 82%,transparent);border:1px solid var(--line);border-radius:10px;display:grid;grid-gap:3px;gap:3px;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;padding:3px}.segmented-control button{background:transparent;border:0;border-radius:7px;color:var(--button-text);cursor:pointer;font-size:12px;font-weight:900;min-height:32px;min-width:0;padding:0 8px;text-transform:capitalize}.segmented-control button.active{background:var(--control-bg);box-shadow:0 8px 18px rgba(15,23,42,.12),inset 0 0 0 1px rgba(255,255,255,.5);color:var(--ink)}:root[data-theme=dark] .segmented-control button.active{box-shadow:0 8px 18px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.08)}.filter-row,.heat-row,.mode-row,.tag-row,.time-row{align-items:center;display:flex;gap:8px}.filter-row{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}.filter-row svg{color:var(--muted);flex:0 0 auto}.filter-row button,.heat-row button,.mode-row button,.tag-row span,.time-row button{border-radius:999px;text-transform:capitalize}.filter-row button,.heat-row button,.mode-row button,.time-row button{background:transparent;border:1px solid var(--line);color:var(--button-text);cursor:pointer;font-weight:800;min-height:34px;min-width:58px;padding:0 12px}.filter-row button.active,.heat-row button.active,.mode-row button.active,.time-row button.active{background:var(--active-bg);border-color:var(--active-border);color:var(--active-ink)}.heat-row,.mode-row,.time-row{margin-top:8px}.fare-range{border-top:1px solid var(--line);margin-top:0;padding:9px 0 10px}.fare-range-head{align-items:center;display:flex;justify-content:space-between;gap:12px;margin-bottom:7px}.fare-range-head strong{font-size:13px}.fare-range-head button{background:transparent;border:0;color:var(--active-ink);cursor:pointer;font-size:12px;font-weight:900;padding:0}.fare-range-head button:disabled{color:var(--muted);cursor:default;opacity:.48}.fare-slider-labels,.fare-slider-values{align-items:center;display:flex;justify-content:space-between;gap:12px}.fare-slider-values span{background:#111827;border:1px solid #111827;border-radius:999px;color:white;display:inline-flex;font-size:13px;font-weight:900;min-height:28px;padding:6px 10px}.fare-slider-labels span,.fare-slider-values small{color:var(--muted);font-weight:900}.fare-slider-values small{font-size:12px}.fare-slider-labels span{font-size:11px}.fare-slider-track{background:linear-gradient(90deg,var(--line) 0 var(--fare-min),#111827 var(--fare-min) var(--fare-max),var(--line) var(--fare-max) 100%);border-radius:999px;height:8px;margin:22px 13px 12px;position:relative}.fare-slider-track input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;height:24px;left:0;margin:0;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);width:100%}.fare-slider-track input::-webkit-slider-runnable-track{background:transparent;border:0;height:8px}.fare-slider-track input::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#ffffff;border:2px solid #111827;border-radius:999px;box-shadow:0 7px 18px rgba(15,23,42,.24),inset 0 0 0 4px #ffffff,inset 0 0 0 7px #111827;cursor:pointer;height:22px;margin-top:-7px;pointer-events:auto;width:22px}.fare-slider-track input::-moz-range-track{background:transparent;border:0}.fare-slider-track input::-moz-range-thumb{background:#ffffff;border:2px solid #111827;border-radius:999px;box-shadow:0 7px 18px rgba(15,23,42,.24),inset 0 0 0 4px #ffffff,inset 0 0 0 7px #111827;cursor:pointer;height:16px;pointer-events:auto;width:16px}:root[data-theme=dark] .fare-slider-track input::-webkit-slider-thumb{background:#e2e8f0;border-color:#f8fafc;box-shadow:0 7px 18px rgba(0,0,0,.34),inset 0 0 0 4px #e2e8f0,inset 0 0 0 7px #0f172a}:root[data-theme=dark] .fare-slider-track input::-moz-range-thumb{background:#e2e8f0;border-color:#f8fafc;box-shadow:0 7px 18px rgba(0,0,0,.34),inset 0 0 0 4px #e2e8f0,inset 0 0 0 7px #0f172a}.heat-row button,.mode-row button,.time-row button{flex:1 1}.heat-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding-bottom:1px}.heat-row button{align-items:flex-start;border-radius:8px;display:flex;flex-direction:column;gap:2px;justify-content:center;min-height:54px;min-width:0;padding:8px 10px;text-align:left;text-transform:none}.heat-row strong{display:block;font-size:13px;line-height:1.1;overflow-wrap:anywhere}.heat-row span{color:var(--muted);display:block;font-size:11px;line-height:1.2}.heat-row button.active span{color:var(--active-muted)}.show-offers-button{align-items:center;background:#050505;border:0;border-radius:9px;box-shadow:0 14px 30px rgba(15,23,42,.2),inset 0 1px 0 rgba(255,255,255,.12);color:white;cursor:pointer;display:flex;font-weight:900;gap:8px;justify-content:center;min-height:44px;width:100%}.show-offers-button span{line-height:1}:root[data-theme=dark] .show-offers-button{background:#f8fafc;color:#0f172a}.upload-status{border-radius:8px;padding:10px}.upload-toast{box-shadow:var(--shadow);left:16px;position:absolute;right:16px;top:126px;z-index:720}.upload-status span{display:block;font-size:12px;font-weight:900;text-transform:uppercase}.upload-status p{color:var(--toast-text);margin:4px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-toast p{overflow-wrap:anywhere;white-space:normal}.upload-status.uploading{background:#eff6ff}.upload-status.published{background:#dcfce7}.upload-status.partial,.upload-status.unresolved{background:#e0f2fe}.upload-status.duplicate{background:#fef3c7}.upload-status.skipped{background:#f3f4f6}.upload-status.rejected{background:#fee2e2}:root[data-theme=dark] .upload-status.uploading{background:#172554}:root[data-theme=dark] .upload-status.published{background:#064e3b}:root[data-theme=dark] .upload-status.partial,:root[data-theme=dark] .upload-status.unresolved{background:#164e63}:root[data-theme=dark] .upload-status.duplicate{background:#713f12}:root[data-theme=dark] .upload-status.skipped{background:#1f2937}:root[data-theme=dark] .upload-status.rejected{background:#7f1d1d}.cluster-insight,.empty-drawer,.offer-drawer{background:var(--panel);border:1px solid var(--panel-border);border-radius:8px 8px 0 0;bottom:0;box-shadow:var(--shadow);left:0;position:absolute;right:0;z-index:500}.cluster-insight,.empty-drawer{border-radius:18px 18px 30px 30px;bottom:max(10px,env(safe-area-inset-bottom));box-shadow:0 18px 46px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.36);left:10px;overflow:hidden;right:10px}.cluster-insight:after,.empty-drawer:after{background:rgba(17,24,39,.22);border-radius:999px;bottom:9px;content:"";height:4px;left:50%;position:absolute;transform:translateX(-50%);width:112px}:root[data-theme=dark] .cluster-insight:after,:root[data-theme=dark] .empty-drawer:after{background:rgba(226,232,240,.28)}.offer-drawer{max-height:min(58dvh,520px);overflow:hidden}.cluster-insight{-webkit-backdrop-filter:blur(30px) saturate(170%);backdrop-filter:blur(30px) saturate(170%);background:color-mix(in srgb,var(--panel) 94%,transparent);display:grid;grid-gap:12px;gap:12px;padding:16px 16px 28px}.cluster-insight-close{align-items:center;background:var(--close-bg);border:1px solid var(--line);border-radius:999px;color:var(--ink);cursor:pointer;display:inline-flex;height:32px;justify-content:center;position:absolute;right:12px;top:12px;width:32px}.cluster-insight-head{align-items:flex-start;display:flex;gap:12px;justify-content:space-between;padding-right:36px}.cluster-kicker{color:var(--muted);display:block;font-size:11px;font-weight:900;letter-spacing:.06em;margin-bottom:5px;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.cluster-insight-head strong{display:block;font-size:22px;line-height:1}.cluster-insight-head p{color:var(--route-text);font-size:13px;font-weight:800;line-height:1.25;margin:7px 0 0}.cluster-status{border-radius:999px;color:white;flex:0 0 auto;font-size:11px;font-weight:900;line-height:1;padding:7px 9px}.cluster-insight.hot .cluster-status{background:#dc2626}.cluster-insight.strong .cluster-status{background:#119c66}.cluster-insight.decent .cluster-status{background:#2563eb}.cluster-insight.quiet .cluster-status{background:#6b7280}.cluster-metrics{display:grid;grid-gap:7px;gap:7px;grid-template-columns:repeat(4,minmax(0,1fr))}.cluster-metrics div{background:var(--card);border:1px solid var(--line);border-radius:8px;min-width:0;padding:8px}.cluster-metrics strong{display:block;font-size:14px;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cluster-metrics span{color:var(--muted);display:block;font-size:10px;font-weight:800;margin-top:3px}.cluster-split{display:grid;grid-gap:7px;gap:7px}.cluster-split div{align-items:center;color:var(--muted);display:flex;font-size:11px;font-weight:900;justify-content:space-between}.cluster-split i{background:linear-gradient(90deg,#050505 0 var(--uber-share),#ff00bf var(--uber-share) 100%);border-radius:999px;display:block;height:6px}.cluster-best{align-items:center;background:#050505;border:0;border-radius:8px;color:white;cursor:pointer;display:grid;grid-gap:2px 10px;gap:2px 10px;grid-template-columns:minmax(0,1fr) auto;min-height:48px;padding:9px 11px;text-align:left}.cluster-best span,.cluster-best strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cluster-best span{color:rgba(255,255,255,.68);font-size:11px;font-weight:900;text-transform:uppercase}.cluster-best strong{font-size:14px}.cluster-best svg{grid-column:2;grid-row:1/span 2}:root[data-theme=dark] .cluster-best{background:#f8fafc;color:#0f172a}:root[data-theme=dark] .cluster-best span{color:rgba(15,23,42,.62)}.drawer-scroll{max-height:min(58dvh,520px);overflow-y:auto;padding:16px;scrollbar-width:thin}.empty-drawer{padding:18px 18px 28px;align-items:center;display:flex;justify-content:space-between;min-height:74px}.empty-drawer strong{font-size:18px}.icon-button{border-radius:999px;height:38px;position:absolute;right:14px;top:14px;width:38px}.drawer-head span{background:#111827;border-radius:6px;color:white;display:inline-flex;font-size:14px;font-weight:900;padding:6px 10px;text-transform:capitalize}.drawer-head strong{display:block;font-size:40px;line-height:1;margin-top:12px;padding-right:48px}.drawer-head p{color:var(--button-text);font-size:14px;font-weight:800;margin:8px 0 0}.drawer-head small{color:var(--muted);display:block;font-size:12px;font-weight:700;margin-top:2px}.bonus-detail{align-items:center;background:linear-gradient(135deg,rgba(236,72,153,.14),rgba(59,130,246,.1));border:1px solid rgba(236,72,153,.28);border-radius:10px;display:flex;justify-content:space-between;margin-top:14px;padding:10px 12px}.bonus-detail span{color:var(--route-text);font-size:12px;font-weight:900;text-transform:uppercase}.bonus-detail strong{color:#be185d;font-size:18px;line-height:1}:root[data-theme=dark] .bonus-detail{background:linear-gradient(135deg,rgba(236,72,153,.22),rgba(96,165,250,.12));border-color:rgba(244,114,182,.34)}:root[data-theme=dark] .bonus-detail strong{color:#f9a8d4}.star-rating{align-items:center;background:var(--card);border:1px solid var(--line);border-radius:8px;display:flex;gap:12px;justify-content:space-between;margin-top:14px;padding:10px 12px}.star-buttons{display:flex;gap:2px}.star-buttons button{align-items:center;background:transparent;border:0;color:var(--muted);display:inline-flex;height:34px;justify-content:center;padding:0;width:34px}.star-buttons button.active,.star-buttons button:hover{color:#f59e0b}.star-summary{display:grid;grid-gap:2px;gap:2px;min-width:0;text-align:right}.star-summary strong{font-size:14px;line-height:1.1}.star-summary span{color:var(--muted);font-size:12px;font-weight:800}.drawer-metrics{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr));margin:16px 0}.drawer-metrics div{background:var(--card);border:1px solid var(--line);border-radius:8px;min-width:0;padding:9px}.drawer-metrics strong{display:block;font-size:15px;line-height:1.2;overflow-wrap:anywhere}.route-card{border-bottom:1px solid var(--line);border-top:1px solid var(--line);display:grid;grid-gap:12px;gap:12px;grid-template-columns:18px minmax(0,1fr);padding:14px 0}.route-rail{align-items:center;display:flex;flex-direction:column;padding-top:2px}.route-points{display:grid;grid-gap:14px;gap:14px;min-width:0}.route-card strong{display:block;font-size:16px;margin-bottom:4px}.route-card p{color:var(--route-text);font-size:16px;line-height:1.28;margin:0;overflow-wrap:anywhere}.route-dot{border:3px solid #2563eb;border-radius:999px;flex:0 0 auto;height:16px;width:16px}.route-dot.dropoff{border-color:#db2777}.route-line{background:linear-gradient(#2563eb,#db2777);flex:1 1 auto;min-height:46px;width:3px}.tag-row{flex-wrap:wrap;margin-top:14px}.tag-row span{background:var(--tag-bg);color:var(--tag-ink);font-size:13px;font-weight:800;padding:7px 10px}.fare-cluster-wrap,.fare-marker-wrap{background:transparent;border:0;overflow:visible}.fare-cluster{align-items:center;background:rgba(17,24,39,.98);border:2px solid rgba(255,255,255,.96);border-radius:999px;box-shadow:0 16px 34px rgba(15,23,42,.28),inset 0 0 0 1px rgba(255,255,255,.16);color:white;cursor:pointer;display:grid;height:100%;isolation:isolate;justify-content:center;letter-spacing:0;line-height:1;min-height:44px;min-width:44px;place-items:center;position:relative;width:100%}.fare-cluster:before{background:rgba(17,24,39,.18);border-radius:999px;content:"";inset:-6px;opacity:.75;position:absolute;z-index:-2}.fare-cluster:after{border:1px solid rgba(255,255,255,.28);border-radius:999px;content:"";inset:6px;position:absolute;z-index:-1}.fare-cluster strong{font-size:18px;font-weight:900;letter-spacing:0;transform:translateY(.5px)}.fare-cluster.medium strong{font-size:19px}.fare-cluster.large strong{font-size:20px}.cluster-dot{border:2px solid white;border-radius:999px;display:block;height:13px;position:absolute;width:13px}.cluster-dot.one{background:#ff00bf;right:-4px;top:7px}.cluster-dot.two{background:#050505;bottom:5px;left:-4px}.cluster-dot.three{background:#2563eb;bottom:-3px;right:10px}.fare-cluster.medium{background:rgba(15,23,42,.97)}.fare-cluster.large{background:rgba(2,6,23,.98)}.fare-marker{align-items:center;background:var(--fare-color);border:3px solid white;border-radius:999px;box-shadow:0 10px 26px rgba(15,23,42,.26);color:white;cursor:pointer;display:flex;font-size:16px;font-weight:900;height:36px;justify-content:center;min-width:62px;overflow:visible;padding:0 10px;position:relative}.fare-marker.active{outline:4px solid rgba(37,99,235,.22);transform:translateY(-2px)}.fare-marker-rating{align-items:center;background:#ffffff;border:1px solid rgba(15,23,42,.16);border-radius:999px;box-shadow:0 6px 16px rgba(15,23,42,.22);color:#92400e;display:inline-flex;font-size:10px;font-style:normal;font-weight:900;gap:2px;line-height:1;padding:3px 5px;pointer-events:none;position:absolute;right:-12px;top:-10px;white-space:nowrap}:root[data-theme=dark] .fare-marker-rating{background:#f8fafc;border-color:rgba(255,255,255,.22);color:#a16207}.fare-marker.focused{box-shadow:0 18px 44px rgba(15,23,42,.42);outline:5px solid color-mix(in srgb,var(--fare-color) 28%,transparent);transform:translateY(-4px) scale(1.08)}.fare-marker.focused em{background:#111827;border:2px solid white;border-radius:999px;bottom:calc(100% + 8px);box-shadow:0 12px 28px rgba(15,23,42,.26);color:white;font-size:12px;font-style:normal;font-weight:900;left:50%;letter-spacing:0;line-height:1;padding:8px 10px;pointer-events:none;position:absolute;transform:translateX(-50%);white-space:nowrap}.fare-marker.focused em:after{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #111827;content:"";left:50%;position:absolute;top:calc(100% - 1px);transform:translateX(-50%)}.fare-marker.focused:after,.fare-marker.focused:before{border:3px solid var(--fare-color);border-radius:inherit;content:"";inset:-8px;opacity:0;pointer-events:none;position:absolute}.fare-marker.focused:before{animation:marker-pulse 1.3s ease-out .15s 2}.fare-marker.focused:after{animation:marker-pulse 1.3s ease-out .45s 2}@keyframes marker-pulse{0%{opacity:.58;transform:scale(.88)}to{opacity:0;transform:scale(2.25)}}.leaflet-control-zoom{border:0!important;box-shadow:var(--shadow)}.leaflet-control-zoom a{border:0!important;color:#111827!important}:root[data-theme=dark] .leaflet-control-zoom a{background:#111827!important;color:#f8fafc!important}:root[data-theme=dark] .leaflet-control-zoom a:hover{background:#1f2937!important}@media (min-width:880px){.pull-refresh{display:none}.top-bar{left:24px;right:24px;top:22px}.top-bar h1{font-size:32px}.control-panel{border-radius:8px;bottom:auto;left:24px;max-width:390px;right:auto;top:96px;transform:translateX(calc(-100% - 40px));width:390px}.control-panel.open{transform:translateX(0)}.filter-toggle{left:24px;right:auto;top:96px}.heat-legend{left:430px;max-width:420px;right:auto;top:24px;bottom:auto;width:420px}.upload-toast{left:auto;right:24px;top:88px;width:390px}.cluster-insight,.empty-drawer,.offer-drawer{border-radius:16px;bottom:24px;left:24px;max-width:430px;right:auto;width:430px}.drawer-scroll,.offer-drawer{max-height:calc(100dvh - 150px)}.empty-drawer{bottom:24px}}@media (max-width:879px){.app-shell.controls-open .heat-legend,.app-shell.controls-open .leaflet-control-zoom{display:none}}