.tv-map-page { box-sizing:border-box; height:auto; min-height:100vh; min-height:100dvh; margin:0; padding-top:var(--tv-map-header-height,68px); background:#fbfcff; color:var(--tv-navy); font-family:Arial,Helvetica,sans-serif; }
.tv-map-search { width:100%; max-width:1600px; margin:0 auto; padding:12px clamp(12px,3vw,40px); }
.tv-map-search * { box-sizing:border-box; }
.tv-map-search [hidden] { display:none!important; }
.tv-map-symbols { position:absolute; pointer-events:none; overflow:hidden; }
.tv-map-ui-icon { flex-shrink:0; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; vertical-align:middle; }
.tv-map-breadcrumb ol { display:flex; flex-wrap:wrap; gap:8px; padding:0; margin:0 0 4px; list-style:none; font-size:12px; line-height:1.4; color:var(--tv-muted); }
.tv-map-breadcrumb li+li:before { content:'›'; margin-right:8px; }
.tv-map-breadcrumb a { color:inherit; }
.tv-map-search h1 { font-size:clamp(23px,2.2vw,28px); line-height:1.2; font-weight:750; margin:0 0 4px; }
.tv-map-intro { color:var(--tv-muted); font-size:13px; line-height:1.4; margin:0 0 8px; }
.tv-map-heading { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 16px; margin-bottom:8px; }
.tv-map-heading h1,.tv-map-heading .tv-map-intro { margin:0; }
.tv-map-filters { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)) auto; gap:10px; align-items:end; background:#f3f7fd; border:1px solid var(--tv-border); border-radius:12px; padding:12px; box-shadow:0 5px 24px #07154006; }
.tv-map-filters label { min-width:0; margin:0; font-size:13px; font-weight:600; }
.tv-map-label { display:flex; align-items:center; gap:6px; margin-bottom:6px; line-height:1.4; }
.tv-map-label .tv-map-ui-icon { width:17px; height:17px; color:var(--tv-muted); }
.tv-map-select { display:block; position:relative; }
.tv-map-select>.tv-map-ui-icon { position:absolute; right:12px; top:13px; width:18px; height:18px; pointer-events:none; color:var(--tv-muted); }
.tv-map-filters select { display:block; appearance:none; width:100%; min-width:0; height:44px; padding:8px 36px 8px 12px; color:var(--tv-navy); background:#fff; border:1px solid #d9e3f0; border-radius:10px; font:inherit; font-size:14px; font-weight:400; text-overflow:ellipsis; cursor:pointer; }
.tv-map-filters select:hover:enabled { border-color:#9bafcc; background:#fff; }
.tv-map-filters select:disabled { color:var(--tv-muted); cursor:default; opacity:.65; }
.tv-map-filters select[data-active="true"],.tv-map-filters select[data-active="true"]:hover:enabled { border-color:#f0ca39; font-weight:600; }
.tv-map-search button { min-height:44px; padding:10px 14px; border:1px solid var(--tv-border); border-radius:10px; background:#fff; color:var(--tv-navy); font:inherit; font-size:13px; cursor:pointer; }
.tv-map-search button:disabled { opacity:.5; cursor:default; }
.tv-map-search :focus-visible { outline:3px solid var(--tv-blue); outline-offset:3px; }
.tv-map-search button:hover:enabled { border-color:var(--tv-blue); }
.tv-map-search .tv-map-clear { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px; padding:10px 12px; border-color:#d9e3f0; background:#fff; color:var(--tv-muted); font-weight:600; }
.tv-map-search .tv-map-clear:hover:enabled { background:#f4f7fc; color:var(--tv-navy); }
.tv-map-chips { display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding:6px 0 0; }
.tv-map-search .tv-map-chip { display:inline-flex; align-items:center; gap:8px; max-width:100%; min-height:44px; padding:8px 12px; background:#fff2b6; border-color:#f4d76d; border-radius:999px; color:var(--tv-navy); font-size:12px; }
.tv-map-search .tv-map-chip:hover:enabled { background:#ffeba0; border-color:#dfbd49; }
.tv-map-chip span { min-width:0; overflow-wrap:anywhere; text-align:left; }
.tv-map-chip .tv-map-ui-icon { width:16px; height:16px; }
.tv-map-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:10px; padding:6px 0; min-height:34px; }
.tv-map-toolbar p { flex:1; margin:0; font-size:14px; }
.tv-map-switch { display:none; }
/* The footer follows this area; its height never reduces the map viewport. */
.tv-map-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2fr); height:calc(100vh - var(--tv-map-header-height,68px) - var(--tv-map-controls-height,224px) - 24px); height:calc(100dvh - var(--tv-map-header-height,68px) - var(--tv-map-controls-height,224px) - 24px); min-height:20rem; gap:16px; }
.tv-map-results,.tv-map-canvas-panel { min-width:0; min-height:0; border:1px solid var(--tv-border); border-radius:var(--tv-radius); background:#fff; }
.tv-map-results { display:flex; flex-direction:column; overflow:hidden; }
.tv-map-results-heading { flex-shrink:0; padding:10px 12px; border-bottom:1px solid var(--tv-border); background:#fff; }
.tv-map-results-heading h2 { display:flex; flex-wrap:wrap; align-items:center; gap:8px; font-size:16px; line-height:1.3; font-weight:700; margin:0; }
.tv-map-count { display:inline-block; padding:2px 8px; border-radius:20px; background:#fff5bd; font-size:12px; line-height:1.4; font-weight:700; }
.tv-map-results-scroll { flex:1; min-height:0; overflow-y:auto; overscroll-behavior:contain; padding:8px; position:relative; scrollbar-gutter:stable; }
.tv-map-layout[aria-busy=true] #map-cards { opacity:.65; }
.tv-map-canvas-panel { position:relative; overflow:hidden; }
#map-canvas { width:100%; height:100%; background:#edf3f8; }
#map-service-status { position:absolute; top:12px; left:12px; right:68px; padding:12px; border-radius:8px; background:#fff8eb; color:var(--tv-navy); box-shadow:0 2px 8px #07154018; font-size:13px; }
.tv-map-card { border:1px solid var(--tv-border); border-radius:10px; padding:10px; margin-bottom:8px; overflow-wrap:anywhere; background:#fff; transition:border-color .15s,box-shadow .15s; }
.tv-map-card:hover { border-color:#bdcce1; box-shadow:0 4px 14px #0715400a; }
.tv-map-card:focus-within { border-color:var(--tv-blue); box-shadow:0 0 0 2px #0065ff15; }
.tv-map-card.is-selected { border-color:var(--tv-navy); background:#fffdf0; box-shadow:0 0 0 2px var(--tv-yellow); }
.tv-map-card-main { display:grid; grid-template-columns:60px minmax(0,1fr) 32px; gap:8px; align-items:center; }
.tv-map-card-body { min-width:0; }
.tv-map-card img,.tv-map-image-placeholder { width:60px; height:60px; object-fit:contain; padding:3px; border:1px solid #edf1f7; border-radius:8px; background:#fff; }
.tv-map-image-placeholder { display:flex; flex-direction:column; justify-content:center; align-items:center; gap:5px; color:var(--tv-muted); font-size:10px; text-align:center; background:#f4f7fc; }
.tv-map-image-placeholder .tv-map-ui-icon { width:20px; height:20px; color:#9aabc4; }
.tv-map-card h3 { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; margin:0 0 4px; font-size:14px; line-height:1.35; font-weight:700; }
.tv-map-card h3 a { color:var(--tv-navy); }
.tv-map-card p { color:var(--tv-muted); font-size:11px; margin:0 0 1px; }
.tv-map-card-meta { display:flex; align-items:center; gap:4px; line-height:1.35; }
.tv-map-card-meta .tv-map-ui-icon { width:12px; height:12px; color:#7a8ca8; }
.tv-map-card-meta span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tv-map-card-actions { display:flex; flex-direction:column; gap:6px; }
.tv-map-card-actions a,.tv-map-card-actions button { display:flex; flex:none; align-items:center; justify-content:center; width:32px; height:32px; min-height:32px; min-width:0; padding:0; border-radius:7px; }
.tv-map-card-actions .tv-map-ui-icon { width:16px; height:16px; }
.tv-map-card-view { background:var(--tv-navy); color:#fff; border:1px solid var(--tv-navy); }
.tv-map-card-view:hover { background:#152956; color:#fff; text-decoration:none; }
.tv-map-search .tv-map-card-focus { background:#f5f8fd; color:var(--tv-navy); border-color:var(--tv-border); }
.tv-map-search .tv-map-card-focus:hover:enabled { background:#eaf1fc; }
.tv-map-pagination { display:flex; flex-wrap:wrap; gap:8px; align-items:center; justify-content:center; padding:10px 0; font-size:12px; }
.tv-map-pagination button { padding:6px 8px; }
.tv-map-empty { color:var(--tv-muted); padding:16px 8px; }
.tv-map-popup { max-width:240px; max-height:300px; overflow-y:auto; color:var(--tv-navy); font-family:Arial,Helvetica,sans-serif; overflow-wrap:anywhere; padding:6px; }
.tv-map-popup h3 { font-size:15px; margin:0 0 8px; }
.tv-map-popup p { font-size:12px; margin:0 0 6px; }
.tv-map-popup a { display:block; color:var(--tv-blue); padding:5px 0 10px; }
.tv-map-popup button { margin:6px 0; }
.tv-map-search .maplibregl-popup-content { border-radius:12px; padding:14px; }
.tv-map-search .maplibregl-ctrl-group button { width:44px; height:44px; min-height:44px; padding:0; border:0; border-radius:0; }
@media (max-width:991px) {
    .tv-map-filters { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 10px; }
    .tv-map-filters .tv-map-clear { grid-column:1/-1; justify-self:end; }
    .tv-map-switch { display:flex; gap:6px; }
    .tv-map-switch button[aria-pressed=true] { background:var(--tv-yellow); border-color:var(--tv-yellow); font-weight:600; }
    .tv-map-layout { display:block; height:65vh; height:65dvh; min-height:22rem; }
    .tv-map-results,.tv-map-canvas-panel { height:100%; }
    .tv-map-layout[data-view=map] .tv-map-results,.tv-map-layout[data-view=list] .tv-map-canvas-panel { display:none; }
    .tv-map-card-main { grid-template-columns:56px minmax(0,1fr) 44px; }
    .tv-map-card img,.tv-map-image-placeholder { width:56px; height:56px; }
    .tv-map-card-actions a,.tv-map-card-actions button { width:44px; height:44px; min-height:44px; }
}
@media (max-width:389px) {
    .tv-map-filters { padding:12px; gap:12px 8px; }
    .tv-map-label { gap:5px; font-size:12px; }
    .tv-map-label .tv-map-ui-icon { width:14px; height:14px; }
    .tv-map-filters select { padding-left:9px; padding-right:28px; font-size:13px; }
    .tv-map-select>.tv-map-ui-icon { right:8px; top:14px; width:16px; height:16px; }
}
@media (prefers-reduced-motion:reduce) { .tv-map-search * { scroll-behavior:auto!important; transition:none!important; } }
