.scene-section{margin:0 auto 48px;max-width:1800px;padding:0 5vw}.scene-section>p{font-size:12px;margin:14px 0}.scene-shell{position:relative;isolation:isolate;overflow:hidden;border-radius:12px;background:#e0e7ed;color:#142748;border:1px solid #8294a84d}.scene-viewport{height:clamp(340px,42vw,610px);position:relative;overflow:hidden}.scene-viewport canvas{display:block;width:100%;height:100%;outline-offset:-5px!important;touch-action:pan-y}.scene-viewport canvas:focus-visible{outline:3px solid #007aa9}.scene-fallback{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#80808c}.scene-ready .scene-fallback{display:none}.scene-topline{position:absolute;top:20px;left:22px;right:22px;display:flex;justify-content:space-between;gap:20px;pointer-events:none;font-size:10px;font-weight:800;letter-spacing:.12em;color:#183151;z-index:2}.scene-shell[data-night=true] .scene-topline{color:#d2eaff}.scene-toolbar{padding:13px 18px;display:flex;flex-wrap:wrap;gap:8px;background:#f3f6f8;color:#142748;border-top:1px solid #14274822}.scene-toolbar button,.place-buttons button{font:600 12px Gantari,Arial,sans-serif;min-height:42px;padding:9px 14px;border:1px solid #14274833;background:transparent;border-radius:6px;color:inherit;cursor:pointer}.scene-toolbar button:hover,.scene-toolbar button[aria-pressed=true]{background:#142748;color:white}.scene-toolbar button:focus-visible,.place-buttons button:focus-visible{outline:3px solid #0ab4ff;outline-offset:2px}.scene-help{font-size:11px;line-height:1.5;margin:0!important;padding:0 18px 14px;background:#f3f6f8;color:#40556c}.scene-note{font-size:12px;line-height:1.6;max-width:95ch;margin:14px 0!important}.scene-status{font-size:11px;position:absolute;bottom:15px;left:20px;background:#142748e8;color:white;padding:7px 10px;border-radius:4px;max-width:calc(100% - 40px);pointer-events:none}.scene-status:empty{display:none}.scene-viewport .city-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.map-label{position:absolute;color:white;background:#142748df;border:1px solid #ffffff55;border-radius:4px;font-size:10px;white-space:nowrap;padding:4px 7px;transform:translate(-50%,-110%);pointer-events:auto;cursor:pointer;font-family:inherit}.map-label:hover,.map-label[aria-pressed=true]{background:#007dad}.map-attribution{position:absolute;bottom:8px;right:8px;background:#ffffffed;font-size:9px;color:#142748;padding:4px 7px;z-index:3}.map-attribution a{text-decoration:underline}.city-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:20px;margin-top:34px}.city-layout .scene-viewport{height:600px}.place-panel{padding:24px;border:1px solid var(--line);border-radius:12px}.place-panel h2{font-size:29px;line-height:1.05;margin:15px 0}.place-panel p{font-size:14px;margin:15px 0}.place-panel a{display:inline-block;text-decoration:underline;font-size:13px;padding:9px 0}.place-buttons{display:flex;gap:7px;flex-wrap:wrap;margin-top:18px}.place-buttons button{color:var(--ink);border-color:var(--line);font-size:11px}.place-buttons button:hover,.place-buttons button[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--bg)}.city-detail{max-width:1800px}.city-detail h1{max-width:none}.city-sources{margin-top:25px;padding:20px 0;border-top:1px solid var(--line);font-size:12px}.city-sources a{text-decoration:underline}.mobility-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px;margin-top:45px}.mobility-grid article{border:1px solid var(--line);padding:25px;border-radius:10px}.mobility-grid h2{font-size:24px}.mobility-grid p{font-size:14px;margin-top:15px}.mobility-grid a{text-decoration:underline}.bike-list{list-style:none;margin:14px 0;padding:0;max-height:270px;overflow:auto}.bike-list li{font-size:13px;border-top:1px solid var(--line);padding:10px 0;display:flex;justify-content:space-between;gap:15px}.bike-list small{display:block;font-size:10px;opacity:.8}.bike-list strong{white-space:nowrap}.bike-refresh{background:transparent;color:inherit;border:1px solid var(--line);padding:10px 14px;border-radius:5px;cursor:pointer;margin-top:12px;font:inherit;font-size:12px}.bike-refresh:hover{background:var(--ink);color:var(--bg)}
@media(max-width:950px){.city-layout{grid-template-columns:1fr}.place-panel{display:grid;grid-template-columns:1fr 1fr;gap:0 25px}.place-panel>.eyebrow{grid-column:1/-1}.place-panel h2{grid-column:1}.place-panel p{grid-column:2;grid-row:2/5}.city-layout .scene-viewport{height:500px}.mobility-grid{grid-template-columns:1fr}}
@media(max-width:600px){.scene-viewport{height:340px}.scene-toolbar{padding:10px;gap:6px}.scene-toolbar button{padding:8px 10px;font-size:11px;flex-grow:1}.scene-topline{left:14px;right:14px;font-size:8px;top:14px}.scene-topline span:last-child{max-width:120px;text-align:right}.city-layout .scene-viewport{height:410px}.place-panel{display:block;padding:20px}.place-panel h2{font-size:26px}.map-label{font-size:9px;padding:3px 5px}.scene-help{padding:0 12px 12px;font-size:10px}.scene-section{margin-bottom:30px}.city-detail h1{font-size:clamp(42px,10vw,70px)}.scene-note{font-size:11px}}

.bike-station{font:inherit;text-align:left;color:inherit;border:0;background:transparent;padding:0;cursor:pointer}.bike-station:hover{text-decoration:underline}.bike-station:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

.city-labels .map-label[hidden]{display:none}.city-detail .bike-station{line-height:1.5}.city-detail .bike-list strong{align-self:center}.city-detail .map-label:focus-visible{outline:3px solid #e6b56b;outline-offset:3px}

.city-media{padding:40px 0 8px;scroll-margin-top:145px}.city-media h2{font-size:clamp(28px,3vw,44px);line-height:1.05;margin:12px 0 24px}.city-media-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.city-media-card{display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);border-radius:12px;padding:23px;text-decoration:none;transition:background .2s,color .2s,border-color .2s}.city-media-card:hover,.city-media-card:focus-visible{background:var(--ink);color:var(--bg);border-color:var(--ink)}.city-media-card:focus-visible,.city-media-jump:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.city-media-card h3{font-size:23px;line-height:1.1;margin:15px 0 10px}.city-media-card p{font-size:13px;line-height:1.5;margin:0 0 25px}.city-media-card .eyebrow{font-size:9px;letter-spacing:.08em}.media-graphic{height:66px;display:flex;align-items:center;opacity:.8}.media-graphic svg{width:120px;height:50px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.media-action{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;margin-top:auto;justify-content:space-between}.media-action svg,.city-media-jump svg{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.city-media .media-note{font-size:12px;line-height:1.5;margin:16px 0;max-width:85ch}.city-media-jump{display:inline-flex;align-items:center;gap:8px;border-bottom:1px solid currentColor;padding:8px 0;margin-top:15px;font-size:13px}.city-media-jump:hover{opacity:.65}@media(max-width:1000px){.city-media-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.city-media-card{padding:15px 12px}.city-media-card h3{font-size:19px}.city-media-card p{font-size:12px}.city-media-grid{gap:9px}.media-action{font-size:11px;gap:4px}.city-media-card .eyebrow{font-size:8px;letter-spacing:.04em}.media-graphic{height:50px}.media-graphic svg{width:95px;height:42px}}

.transit-board{scroll-margin-top:150px;min-width:0}.departure-list{list-style:none;padding:0;margin:18px 0;font-variant-numeric:tabular-nums}.departure-list li{display:grid;grid-template-columns:minmax(0,1fr) minmax(100px,.85fr);gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}.departure-list li>div{display:flex;flex-direction:column;gap:5px;min-width:0}.departure-list strong{font-size:16px}.departure-list span{font-size:12px;line-height:1.4;overflow-wrap:anywhere}.departure-list small{font-size:10px;line-height:1.4;opacity:.8}.departure-time{text-align:right}.departure-cancelled .departure-time strong{text-decoration:line-through}.departure-cancelled .departure-time span{font-weight:800}.transit-board .transit-note{font-size:11px;line-height:1.6}.transit-board button:disabled{opacity:.55;cursor:wait}.transit-board button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}

.media-pin{background:#d9f6ff!important;color:#12304d!important;border:1px solid #0b668f!important}.map-media-panel{position:absolute;z-index:12;right:14px;bottom:35px;width:min(380px,calc(100% - 28px));max-height:calc(100% - 83px);overflow:auto;background:#0f2864;color:#fff;border:1px solid #7ccaff;border-radius:12px;box-shadow:0 15px 50px #00112366;padding:14px;overscroll-behavior:contain}.map-media-panel[hidden]{display:none}.map-media-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.map-media-head strong{font-size:13px;line-height:1.4}.map-media-panel button{font:inherit;font-size:11px;border:1px solid #89cfff;border-radius:6px;padding:10px;background:#fff;color:#0f2864;cursor:pointer;min-height:40px}.map-media-panel button:hover,.map-media-panel button:focus-visible{background:#0ab4ff;outline:2px solid #fff;outline-offset:2px}.map-media-body p{font-size:12px;line-height:1.5;margin:8px 0}.map-camera-frame{background:#0a1834;aspect-ratio:16/9;display:grid;place-items:center;border-radius:6px;overflow:hidden}.map-camera-frame img{width:100%;height:100%;object-fit:contain;display:block}.map-camera-frame p{padding:20px}.map-media-body .camera-credit,.map-media-body .camera-disclosure{font-size:10px;line-height:1.4}.map-media-body a{color:inherit;text-decoration:underline}.map-radio-link{display:block;padding:14px;border:1px solid #ffffff55;border-radius:6px;margin:9px 0;font-weight:bold}.map-radio-link:hover{background:#174282}.map-radio-link span{display:block;font-size:11px;font-weight:normal;margin-top:3px}@media(max-width:600px){.map-media-panel{padding:11px;bottom:29px}.map-camera-frame{aspect-ratio:2.2/1}.map-media-head{margin-bottom:6px}.map-media-head strong{font-size:11px}}

/* City: in-world media, keyboard pins and persistent radio controls. */
.map-label{font-family:inherit;cursor:pointer}.map-label:focus-visible{outline:3px solid var(--accent,#0ab4ff);outline-offset:3px}
.map-media-panel{width:min(330px,calc(100% - 28px));bottom:42px}.map-media-body .camera-load,.radio-play{width:100%;padding:12px 15px;border:0;border-radius:5px;background:var(--accent,#0ab4ff);color:#081b31;font:700 13px inherit;cursor:pointer}.map-media-body p{line-height:1.5}.camera-state{font-size:12px}
.city-radio-dock{padding:12px 16px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;background:#11293c;color:#f4f8fa}.city-radio-dock[hidden]{display:none}.city-radio-dock span{font-size:12px}.city-radio-dock button{padding:8px 13px;border:1px solid #94b1bd;border-radius:4px;color:inherit;background:transparent;cursor:pointer}.city-radio-dock audio{width:100%;grid-column:1/-1;height:36px}
/* The city is the lead experience; its context follows below instead of consuming a side column. */
.city-layout{display:block;margin-top:28px}.city-layout .scene-viewport{height:clamp(560px,78svh,900px)}.city-layout .place-panel{border:0;border-top:1px solid var(--line);border-radius:0;padding:26px 0 0;margin:0;max-width:760px}.city-layout .place-panel h2{font-size:clamp(30px,3.2vw,48px)}
@media(max-width:700px){.city-layout{margin-top:18px}.city-layout .scene-viewport{height:clamp(500px,72svh,680px)}.city-layout .place-panel{padding-top:20px}}
.vehicle-tooltip{position:absolute;z-index:8;width:min(245px,calc(100% - 24px));padding:10px 12px;border:1px solid #a8e8f2;border-radius:7px;background:#0f2864ed;color:#fff;box-shadow:0 10px 32px #00132155;pointer-events:none;font-size:11px;line-height:1.38}.vehicle-tooltip strong,.vehicle-tooltip span{display:block}.vehicle-tooltip strong{font-size:12px;margin-bottom:4px;color:#aef4ff}.vehicle-tooltip span+span{margin-top:2px}
@media(max-width:600px){.map-media-panel{max-height:calc(100% - 75px);bottom:35px}.map-media-body{padding:12px}.map-media-body p{font-size:12px}.city-radio-dock{padding:10px}.scene-topline span:last-child{max-width:120px;text-align:right}}

/* Bus labels and a card attached to the selected vehicle, usable by touch and keyboard. */
.vehicle-badges{position:absolute;inset:0;pointer-events:none}.vehicle-badge{position:absolute;transform:translate(-50%,-115%);pointer-events:auto;min-width:34px;min-height:25px;border:1px solid #ffe5a1;border-radius:4px;background:#18394a;color:#ffe5a1;font:800 11px Gantari,Arial,sans-serif;cursor:pointer;padding:3px 5px}.vehicle-badge:hover,.vehicle-badge[aria-pressed=true]{background:#ffe5a1;color:#18394a}.vehicle-badge:focus-visible{outline:3px solid #00b4ff;outline-offset:3px}.vehicle-badge[hidden],.vehicle-tooltip[hidden],.vehicle-leader[hidden]{display:none}.vehicle-tooltip{pointer-events:none;width:278px;font-size:12px;z-index:14;box-sizing:border-box;max-height:calc(100% - 70px);overflow:auto}.vehicle-tooltip.is-pinned{pointer-events:auto}.vehicle-tooltip strong{padding-right:64px}.vehicle-tooltip span{display:block;margin:5px 0}.vehicle-close{float:right;padding:5px 7px;border:1px solid #a8e8f2;color:white;background:transparent;border-radius:4px;font:inherit;font-size:10px;cursor:pointer}.vehicle-close:hover{background:#276580}.vehicle-close:focus-visible{outline:2px solid white}.vehicle-leader{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:9}.vehicle-leader path{stroke:#ffe5a1;stroke-width:2;fill:none}.map-media-panel{z-index:16}

/* Compact, source-backed visit cards inside the city. */
.city-event-panel{position:absolute;z-index:18;right:16px;bottom:40px;width:min(344px,calc(100% - 32px));max-height:calc(100% - 100px);overflow:auto;overscroll-behavior:contain;box-sizing:border-box;padding:20px;background:#f6faf8f5;color:#15354a;border:1px solid #ffffffc0;border-top:4px solid var(--accent,#00a5df);border-radius:8px;box-shadow:0 16px 45px #10263733;backdrop-filter:blur(14px);font-family:Gantari,Arial,sans-serif;scrollbar-width:thin}
.city-event-panel[hidden]{display:none}.city-event-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.city-event-tag{font-size:9px;font-weight:800;letter-spacing:.1em}.city-event-panel button{font:inherit;cursor:pointer;border:1px solid #15354a44;background:transparent;color:#15354a;border-radius:4px;min-height:36px;padding:7px 9px;font-size:11px}.city-event-panel button:hover{background:#e1ecec}.city-event-panel button:focus-visible,.city-event-panel a:focus-visible{outline:3px solid #006ba0;outline-offset:3px}.city-event-panel h2{font-size:26px;line-height:1.1;margin:15px 0 9px;letter-spacing:-.03em}.city-event-panel .city-event-intro{font-size:12px;line-height:1.5;margin:0 0 16px}.city-event-panel h3{font-size:11px;text-transform:uppercase;letter-spacing:.045em;margin:0 0 6px}.city-event-row{padding:11px 0;border-top:1px solid #15354a26}.city-event-row time{font-size:11px;font-weight:700;display:block;margin-bottom:5px}.city-event-row strong{display:block;font-size:17px;line-height:1.18;overflow-wrap:anywhere}.city-event-row small{font-size:11px;display:block;margin:5px 0}.city-event-row a{font-size:11px;color:#15354a;display:inline-block;padding:6px 0;text-underline-offset:3px}.city-event-links{display:grid;gap:6px;margin-top:12px}.city-event-links a{font-size:12px;font-weight:700;color:#15354a;border:1px solid #15354a44;border-radius:4px;text-decoration:none;padding:11px}.city-event-links a:hover{background:#e1ecec}.city-event-panel .city-event-status{font-size:10px;line-height:1.4;color:#425965;margin:12px 0 8px}.city-event-results>p,.city-event-results{font-size:12px;line-height:1.45}.city-event-refresh{font-size:10px!important}.city-event-refresh[hidden]{display:none}
@media(max-width:600px){.city-event-panel{padding:14px;right:10px;bottom:30px;width:calc(100% - 20px);max-height:55%;border-radius:6px}.city-event-panel h2{font-size:22px;margin:9px 0}.city-event-panel .city-event-intro{margin-bottom:10px}.city-event-row strong{font-size:16px}.city-event-row a{min-height:30px}.city-event-panel button{min-height:40px}.city-event-panel .city-event-close{font-size:11px}}

.city-event-top{position:sticky;top:-20px;background:#f6faf8;z-index:2;padding:4px 0}@media(max-width:600px){.city-event-top{top:-14px}}
