:root{--bg:#f5f7f9;--surface:#fff;--surface-2:#eef1f5;--border:#e2e7ec;--border-strong:#cfd6de;--ink:#16202b;--text:#16202b;--muted:#64748b;--orange:#ef5a34;--orange-dim:#d8471f;--green:#0f9d57;--green-ink:#0b7a43;--green-bg:#e7f7ee;--green-border:#bfe8d0;--green-tail:#9ed9bd;--amber:#c9821a;--radius:12px;--wrap:1120px;--shadow:0 1px 2px rgba(22,32,43,.06),0 1px 8px rgba(22,32,43,.04)}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 20px}.muted{color:var(--muted)}.small{font-size:13px}.site-header{background:#fff;border-bottom:1px solid var(--border);border-top:3px solid transparent;border-image:linear-gradient(90deg,#3f8a5f,#b06040,#ef5a34) 1;position:-webkit-sticky;position:sticky;top:0;z-index:30}.header-inner{display:flex;align-items:center;gap:16px;padding-top:12px;padding-bottom:12px}.brand{display:inline-flex;align-items:center}.brand-logo{height:34px;width:auto;display:block}.tagline{color:var(--muted);font-size:14px}.site-nav{margin-left:auto;display:inline-flex;gap:4px;flex:none}.nav-link{display:inline-flex;align-items:center;padding:6px 12px;border-radius:8px;font-size:14px;font-weight:600;color:var(--muted);line-height:1}.nav-link:hover,.nav-link[aria-current=page]{color:var(--ink);background:var(--surface-2)}.lang-toggle{position:relative;flex:none}.lang-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid var(--border-strong);border-radius:9px;background:var(--surface-2);color:var(--ink);font:inherit;font-size:13px;font-weight:700;line-height:1;cursor:pointer}.lang-btn:hover{border-color:var(--muted)}.lang-code{letter-spacing:.02em}.lang-caret{font-size:10px;color:var(--muted)}.lang-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:168px;margin:0;padding:4px;list-style:none;background:var(--surface);border:1px solid var(--border-strong);border-radius:10px;box-shadow:var(--shadow);z-index:40}.lang-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:7px;font-size:14px;color:var(--text);line-height:1}.lang-item:hover{background:var(--surface-2)}.lang-item.active{font-weight:700;color:var(--ink)}.lang-item.active:after{content:"✓";margin-left:auto;color:var(--green-ink)}.site-footer{border-top:1px solid var(--border);margin-top:56px;padding:28px 0 48px}.footer-inner{display:flex;flex-direction:column;gap:12px}.footer-nav{display:flex;flex-wrap:wrap;gap:4px 6px;margin:0 -10px}.footer-nav a{padding:6px 10px;border-radius:8px;font-size:14px;font-weight:600;color:var(--ink);line-height:1}.footer-nav a:hover{background:var(--surface-2)}.footer-disclaimer{margin:0;max-width:78ch}.footer-built{margin:0}.footer-built a{color:var(--muted);text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:2px}.footer-built a:hover{color:var(--ink)}.page-lead{font-size:17px;max-width:62ch;margin:0}.contact-grid{display:grid;grid-template-columns:1.1fr .9fr;grid-gap:32px 48px;gap:32px 48px;align-items:start;margin:28px 0 8px}.contact-grid .prose h2{font-size:20px;margin:0 0 10px;letter-spacing:-.01em}.contact-grid .prose p{max-width:60ch;margin:0 0 12px}.contact-direct{margin-top:16px;font-size:14px}.contact-direct a{color:var(--green-ink);font-weight:600;text-decoration:underline;text-underline-offset:2px}.contact-form-col{display:flex;flex-direction:column}.contact-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px;box-shadow:var(--shadow)}.contact-form{gap:14px}.contact-form,.field{display:flex;flex-direction:column}.field{gap:6px}.field-label{font-size:13px;font-weight:600;color:var(--ink)}.contact-form input,.contact-form textarea{width:100%;font:inherit;font-size:15px;color:var(--ink);background:var(--surface);border:1px solid var(--border-strong);border-radius:9px;padding:10px 12px}.contact-form textarea{resize:vertical;min-height:120px}.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:var(--orange);box-shadow:0 0 0 3px rgba(239,90,52,.15)}.contact-form .btn-primary{align-self:flex-start}.contact-ok{margin:0;padding:14px 16px;border-radius:10px;background:#eef7f0;border:1px solid #cfe8d6;color:var(--green-ink);font-weight:600}.contact-err{color:#b42318;font-size:13px}@media (max-width:720px){.contact-grid{grid-template-columns:1fr;gap:24px}}.biz-status{display:inline-block;margin-bottom:10px;padding:4px 10px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--muted)}.api-sample{margin:20px 0 0;max-width:560px}.api-sample pre{margin:0;padding:16px 18px;border-radius:12px;background:#0f1720;color:#d7e2ee;border:1px solid #1e2a36;box-shadow:var(--shadow);overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.55}.api-sample figcaption{margin-top:8px}.biz-pillars{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:20px;gap:20px;margin:32px 0}.biz-pillar{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px}.biz-pillar h2{font-size:16px;margin:0 0 12px;padding-bottom:10px;border-bottom:2px solid transparent;border-image:linear-gradient(90deg,#3f8a5f,#ef5a34) 1;letter-spacing:-.01em}.biz-pillar ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:12px}.biz-pillar li{position:relative;padding-left:20px;font-size:14px;color:var(--ink);line-height:1.45}.biz-pillar li:before{content:"";position:absolute;left:2px;top:7px;width:7px;height:7px;border-radius:2px;background:var(--orange)}.biz-cta{display:flex;align-items:center;justify-content:space-between;gap:20px 32px;flex-wrap:wrap;margin:8px 0;padding:24px 28px;border-radius:16px;background:linear-gradient(120deg,#f4f8f5,#fbf1ec);border:1px solid var(--border)}.biz-cta h2{margin:0 0 4px;font-size:20px;letter-spacing:-.01em}.biz-cta p{margin:0;max-width:52ch}@media (max-width:860px){.biz-pillars{grid-template-columns:1fr}}.hero{padding:28px 0 6px}.hero h1{font-size:30px;margin:0 0 6px;letter-spacing:-.02em}.hero .hl{color:var(--orange)}.snapshot-note{margin:8px 0 0;font-size:13px;color:var(--amber);background:#fbf2e2;border:1px solid #f0e0c4;border-radius:8px;padding:8px 12px;max-width:70ch}.live-status{display:inline-flex;align-items:center;gap:8px;margin:10px 0 0;padding:5px 12px 5px 11px;font-size:13px;font-weight:600;color:var(--green-ink);background:var(--green-bg);border:1px solid var(--green-border);border-radius:999px}.live-dot{width:8px;height:8px;border-radius:999px;background:var(--green);box-shadow:0 0 0 0 rgba(15,157,87,.5);animation:live-pulse 2s ease-out infinite}@keyframes live-pulse{0%{box-shadow:0 0 0 0 rgba(15,157,87,.5)}70%{box-shadow:0 0 0 6px rgba(15,157,87,0)}to{box-shadow:0 0 0 0 rgba(15,157,87,0)}}@media (prefers-reduced-motion:reduce){.live-dot{animation:none}}.stale-note{margin:8px 0 0;font-size:13px;color:var(--amber)}.empty{padding:64px 0}.code-block{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:12px 14px;overflow-x:auto;font-size:13px}.section-title{font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:24px 0 12px}.explorer{margin-top:8px}.explorer.has-slotbar{padding-bottom:calc(112px + env(safe-area-inset-bottom))}.controls{display:flex;flex-wrap:wrap;gap:18px 24px;align-items:flex-end;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.control-group{display:flex;flex-direction:column;gap:6px}.control-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:3px;gap:2px}.seg-btn{border:0;background:transparent;color:var(--muted);font-size:14px;font-weight:600;padding:6px 14px;border-radius:999px;cursor:pointer}.seg-btn:hover{color:var(--ink)}.seg-btn.active{background:var(--ink);color:#fff}.venue-filter-group{position:relative;flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px}.venue-filter-group .control-label{flex-basis:100%}.loc-btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);font-size:14px;font-weight:600;padding:8px 14px;border-radius:999px;cursor:pointer}.loc-btn:hover{border-color:var(--orange);color:var(--orange)}.controls-secondary{display:contents}.filters-toggle{display:none;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);font-size:14px;font-weight:600;padding:8px 14px;border-radius:999px;cursor:pointer}.filters-toggle:hover{border-color:var(--orange);color:var(--orange)}.filters-toggle:focus-visible{outline:2px solid var(--orange);outline-offset:2px}.venue-dd{position:relative;display:flex}.venue-dd-btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);font-size:14px;font-weight:600;padding:8px 14px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.venue-dd-btn:hover{border-color:var(--orange);color:var(--orange)}.venue-dd-btn .caret{font-size:11px;opacity:.7}.venue-dd-backdrop{position:fixed;inset:0;background:transparent;border:0;z-index:20;cursor:default}.venue-dd-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:21;width:280px;max-width:82vw;background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow);padding:10px}.venue-search{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:14px;color:var(--ink);background:var(--surface-2)}.venue-search:focus{outline:2px solid var(--orange);outline-offset:0}.venue-dd-tools{display:flex;align-items:center;justify-content:space-between;padding:8px 2px 4px}.linkish{border:0;background:transparent;color:var(--orange);font-weight:600;font-size:12px;cursor:pointer;padding:0}.venue-dd-list{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.venue-dd-item{display:flex;align-items:center;gap:8px;padding:7px 4px;border-radius:8px;cursor:pointer;font-size:14px}.venue-dd-item:hover{background:var(--surface-2)}.venue-dd-name{flex:1 1;color:var(--ink)}.venue-dd-empty{padding:10px 4px}.geo-note{margin:8px 2px 0}.daystrip{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 10px}.day{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:8px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface);cursor:pointer;min-width:88px}.day:hover{border-color:var(--border-strong)}.day.active{border-color:var(--ink);box-shadow:inset 0 -3px 0 var(--orange)}.day-rel{font-weight:700;font-size:14px;color:var(--ink)}.day-date{font-size:11px;color:var(--muted)}.day-count{font-size:11px;color:var(--green-ink);font-weight:600;margin-top:2px}.summary{margin:6px 2px 14px}.matrix-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);box-shadow:var(--shadow)}.matrix{border-collapse:separate;border-spacing:0;width:max-content;table-layout:fixed}.col-half{width:30px}.col-venue{width:180px}.matrix td,.matrix th{border-bottom:1px solid var(--border);border-right:1px solid var(--border);text-align:center;font-size:13px}.matrix thead th{position:-webkit-sticky;position:sticky;top:0;background:var(--surface-2);color:var(--muted);font-weight:600;padding:8px 0;z-index:2}.hour-col{min-width:44px}.cell.band-00{border-right:1px solid var(--border)}.cell.band-30{border-right:1px solid var(--border-strong)}.vh-corner{left:0;z-index:3!important;text-align:left!important;padding-left:14px!important;min-width:180px}.matrix tbody tr:last-child td,.matrix tbody tr:last-child th{border-bottom:0}.vh{position:-webkit-sticky;position:sticky;left:0;background:var(--surface);padding:10px 12px;width:180px;min-width:180px;max-width:180px;z-index:1;vertical-align:top}.matrix th.vh,.vh{text-align:left}.vh-name{font-weight:700;color:var(--ink);display:block;line-height:1.25}.vh-name:hover{color:var(--orange)}.vh-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;font-size:12px}.vh-courts,.vh-meta{color:var(--muted)}.vh-dist{font-weight:600;color:var(--ink)}.vh-price{color:var(--green-ink);font-weight:600}.vh-price-at{font-weight:500;opacity:.75}.vh-map{display:inline-flex;align-items:center;justify-content:center;min-width:26px;min-height:26px;padding:0 4px;border-radius:7px;font-size:13px;line-height:1;filter:grayscale(.35);opacity:.85}.vh-map:hover{background:var(--surface-2);filter:none;opacity:1}.vh-map:focus-visible{outline:2px solid var(--orange);outline-offset:1px}.cell{padding:0;height:38px}.cell-empty{background:repeating-linear-gradient(-45deg,transparent,transparent 6px,rgba(22,32,43,.03) 0,rgba(22,32,43,.03) 7px)}.cell-free{background:var(--green-bg)}.cell-cover{background:linear-gradient(to bottom,transparent calc(50% - 6px),var(--green-tail) calc(50% - 6px),var(--green-tail) calc(50% + 6px),transparent calc(50% + 6px))}.matrix .cell.cell-cover.lit,.matrix .cell.cell-free.lit{background:var(--orange);box-shadow:none}.matrix .cell.lit .cell-count{color:#fff}.cell-btn{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border:0;background:transparent;cursor:pointer;padding:0;font:inherit}.cell-btn.sel{box-shadow:inset 0 0 0 2px #fff}.cell-btn:focus-visible{outline:2px solid var(--orange);outline-offset:-2px}.cell-count{font-weight:800;color:var(--green-ink);font-size:13px;line-height:1;min-width:20px;padding:3px 4px;border-radius:6px;background:hsla(0,0%,100%,.72);box-shadow:0 1px 1px rgba(11,122,67,.12)}.cell-btn:hover .cell-count{background:#fff}.matrix .cell.lit .cell-count{background:transparent;box-shadow:none}.surface-chip{display:inline-block;font-size:11px;font-weight:600;border-radius:6px;padding:1px 7px;border:1px solid var(--border-strong);color:var(--muted);background:var(--surface-2)}.s-indoor{color:#4a4fb0;background:#eef0fb;border-color:#d6d9f4}.s-outdoor{color:var(--green-ink);background:var(--green-bg);border-color:var(--green-border)}.s-mixed{color:#9a6a1f;background:#fbf2e2;border-color:#f0e0c4}.s-unknown{display:none}.legend{display:flex;flex-wrap:wrap;gap:8px 20px;margin:14px 2px 6px;font-size:13px}.legend-item{display:inline-flex;align-items:center;gap:8px}.legend-swatch{width:22px;height:16px;border-radius:4px;border:1px solid var(--green-border);display:inline-block}.howto{margin:2px 2px 0;max-width:80ch}.howto>summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--muted);list-style:revert}.howto>summary:hover{color:var(--ink)}.howto>p{margin:6px 0 0}.meta-section{margin-top:30px}.meta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:14px;gap:14px}.meta-card{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.meta-actions{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.source-badge{display:inline-block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:1px 7px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;font-size:14px;font-weight:600;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);cursor:pointer;white-space:nowrap}.btn:hover{border-color:var(--muted)}.btn-primary{background:var(--orange);border-color:var(--orange);color:#fff}.btn-primary:hover{background:var(--orange-dim);border-color:var(--orange-dim)}.btn-concierge{background:transparent;border-style:dashed}.concierge-form{display:flex;flex-direction:column;gap:8px;width:100%;min-width:220px;margin-top:8px;padding:12px;border:1px dashed var(--border-strong);border-radius:10px;background:var(--surface-2)}.concierge-form input{padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:#fff;color:var(--ink);font-size:14px}.concierge-ok{color:var(--green-ink);font-size:14px;font-weight:600}.concierge-err{color:var(--amber);font-size:13px}.back{display:inline-block;margin:20px 0 8px;color:var(--muted);font-size:14px}.back:hover{color:var(--orange)}.venue-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.venue-head h1{margin:0;font-size:26px;letter-spacing:-.02em}.card-sub{margin:6px 0 0;font-size:13px;align-items:center}.card-sub,.venue-actions{display:flex;flex-wrap:wrap;gap:8px}.venue-actions{align-items:flex-start;margin:16px 0}.venue-day{margin-bottom:18px}.notice{border:1px solid var(--border);border-radius:var(--radius);padding:16px;background:var(--surface);color:var(--muted)}.freshness-note{margin-top:24px;padding-top:16px;border-top:1px solid var(--border)}.badge{font-size:12px;white-space:nowrap;padding:3px 10px;border-radius:999px;border:1px solid transparent;font-weight:600}.badge-fresh{color:var(--green-ink);background:var(--green-bg);border-color:var(--green-border)}.badge-stale{color:var(--amber);background:#fbf2e2;border-color:#f0e0c4}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:baseline;gap:6px;padding:5px 9px;border-radius:8px;font-size:13px;border:1px solid var(--border);background:var(--surface)}.chip-free{background:var(--green-bg);border-color:var(--green-border)}.chip-unknown{background:transparent;color:var(--muted);border-style:dashed}.chip-time{font-weight:700}.chip-count{font-size:11px;color:var(--green-ink);font-weight:600}.chip-price{font-size:11px;color:var(--muted)}.chip-btn{cursor:pointer;font:inherit;color:inherit;align-items:center;min-height:44px}.chip-btn:hover{border-color:var(--green-ink)}.chip-btn:focus-visible{outline:2px solid var(--orange);outline-offset:2px}.chip-sel{background:var(--orange);border-color:var(--orange)}.chip-sel,.chip-sel .chip-count{color:#fff}.venue-list{display:none;list-style:none;margin:0;padding:0;flex-direction:column;gap:10px}.vlist-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px}.vlist-head{margin-bottom:8px}.closed-venues{margin:14px 2px 0}.closed-toggle{border:0;background:transparent;color:var(--muted);font-size:13px;font-weight:600;cursor:pointer;padding:4px 0}.closed-toggle:hover{color:var(--ink)}.closed-toggle:focus-visible{outline:2px solid var(--orange);outline-offset:2px;border-radius:4px}.closed-caret{display:inline-block;width:1em}.closed-list{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.closed-list li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px}.closed-list .vh-name{display:inline}.stale-venues{margin:20px 2px 0;padding:12px 14px;background:#fbf6ec;border:1px solid #f0e2c6;border-radius:10px}.stale-venues .section-title{margin:0 0 4px;color:var(--amber)}.stale-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.stale-item{gap:10px;justify-content:space-between}.stale-item,.stale-main{display:flex;flex-wrap:wrap;align-items:center}.stale-main{gap:8px;font-size:14px}.stale-item .btn{font-size:13px;padding:5px 12px}.slotbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(16px + env(safe-area-inset-bottom));z-index:25;display:flex;align-items:center;gap:16px;max-width:min(680px,calc(100vw - 24px));padding:10px 12px 10px 16px;background:var(--ink);color:#fff;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.28)}.slotbar:focus{outline:none}.slotbar .btn:not(.btn-primary){background:transparent;border-color:hsla(0,0%,100%,.35);color:#fff}.slotbar .btn:not(.btn-primary):hover{border-color:#fff;background:hsla(0,0%,100%,.1)}.slotbar-info{display:flex;flex-direction:column;gap:1px;min-width:0}.slotbar-venue{font-size:14px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slotbar-when{font-size:13px;opacity:.85}.slotbar-detail{font-size:12px;opacity:.7}.slotbar-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.slotbar-close{border:0;background:hsla(0,0%,100%,.14);color:#fff;width:30px;height:30px;border-radius:8px;cursor:pointer;font-size:14px;line-height:1;flex:none}.slotbar-close:hover{background:hsla(0,0%,100%,.26)}.slotbar-close:focus-visible{outline:2px solid #fff;outline-offset:2px}@media (max-width:900px){.matrix-wrap{display:none}.venue-list{display:flex}}@media (max-width:720px){.tagline{display:none}.header-inner{gap:8px;padding-top:10px;padding-bottom:10px}.brand-logo{height:28px}.site-nav{gap:2px}.nav-link{padding:6px 8px;font-size:13px}.daystrip{flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:2px 0}.daystrip::-webkit-scrollbar{display:none}.day{flex:0 0 auto;scroll-snap-align:start}.filters-toggle{display:inline-block}.controls-secondary{display:none}.controls-secondary.open{display:flex;flex-wrap:wrap;gap:18px 24px;flex-basis:100%}.slotbar{left:8px;right:8px;transform:none;max-width:none;flex-direction:column;align-items:stretch;gap:10px}.slotbar-actions{margin-left:0}}.hero-tight{padding-bottom:2px}.mapview{margin-top:12px}.map-controls{display:flex;align-items:flex-end;flex-wrap:wrap;gap:14px 20px;margin-bottom:12px}.map-time{border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);font-size:14px;font-weight:600;padding:8px 12px;border-radius:999px;cursor:pointer}.map-time:hover{border-color:var(--orange)}.map-dist{border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);font-size:14px;font-weight:600;padding:8px 12px;border-radius:999px;cursor:pointer}.map-dist:hover:not(:disabled){border-color:var(--orange)}.map-dist:disabled{opacity:.5;cursor:not-allowed}.map-shell{position:relative;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.map-canvas{width:100%;height:520px;background:var(--surface-2)}.map-canvas:focus-visible{outline:2px solid var(--orange);outline-offset:-2px}.map-pin{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 6px;font:inherit;font-size:13px;font-weight:700;line-height:1;color:#fff;border:2px solid #fff;border-radius:999px;box-shadow:0 1px 4px rgba(22,32,43,.35);cursor:pointer;transition:transform .08s ease}.map-pin:hover{transform:scale(1.12)}.map-pin.is-selected{transform:scale(1.2);box-shadow:0 0 0 3px rgba(239,90,52,.5),0 1px 4px rgba(22,32,43,.35)}.map-pin--free{background:var(--green)}.map-pin--none{background:var(--muted);color:#f1f5f9}.map-pin--stale{background:var(--amber);color:#fff}.map-pin--direct{background:var(--ink)}.map-userpin{width:16px;height:16px;border-radius:999px;background:var(--orange);border:3px solid #fff;box-shadow:0 0 0 3px rgba(239,90,52,.3)}.map-recenter{position:absolute;left:10px;top:10px;width:34px;height:34px;font-size:18px;line-height:1;background:var(--surface);color:var(--ink);border:1px solid var(--border-strong);border-radius:8px;box-shadow:var(--shadow);cursor:pointer}.map-recenter:hover{border-color:var(--orange);color:var(--orange)}.map-card{position:absolute;left:10px;bottom:10px;width:min(320px,calc(100% - 20px));background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 14px 12px}.map-card .vh-name{font-size:16px;padding-right:22px}.map-card-close{position:absolute;right:8px;top:8px;width:24px;height:24px;border:none;background:transparent;color:var(--muted);font-size:14px;cursor:pointer;border-radius:6px}.map-card-close:hover{background:var(--surface-2);color:var(--ink)}.map-card-status{margin:8px 0;font-size:14px;color:var(--ink)}.map-card-actions{display:flex;gap:8px;margin-top:10px}.map-hint{position:absolute;left:10px;bottom:10px;margin:0;padding:6px 10px;background:hsla(0,0%,100%,.85);border-radius:8px;pointer-events:none}.map-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin:12px 0 0;font-size:13px;color:var(--muted)}.legend-pin{min-width:22px;height:22px;cursor:default}.legend-pin:hover{transform:none}@media (max-width:720px){.map-canvas{height:60vh;min-height:360px}.map-card{left:8px;right:8px;width:auto}}