:root{--ui-paper:#f9f7f1;--ui-surface:#f4f1ea;--ui-wash:#ebe7e0;--ui-line:#d6d0c8;--ui-muted:#6a6563;--ui-ink:#2b292c;--ui-accent:#782f42;--ui-accent-soft:#f0e2e5;--line:var(--ui-line)}
*{box-sizing:border-box} :root{font-family:"Avenir Next",Avenir,"Segoe UI",sans-serif;color:var(--ui-ink);background:var(--ui-paper);font-synthesis:none;font-size:14px}body{margin:0}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0}a{color:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #c27543;outline-offset:3px}button:disabled{opacity:.5;cursor:wait}[hidden]{display:none!important}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 26px;border-bottom:1px solid var(--ui-wash);background:var(--ui-paper);gap:20px}.brand{text-decoration:none;display:flex;align-items:center;gap:12px;font-size:15px;letter-spacing:1.5px;font-weight:650}.brandmark{font:36px/40px Georgia,serif;letter-spacing:-3px;text-align:center;background:var(--ui-ink);color:var(--ui-paper);border-radius:50%;width:44px;height:44px}.brand small{display:block;font-size:9px;letter-spacing:3.1px;margin-top:3px;color:var(--ui-muted)}.header-context{display:flex;gap:16px;align-items:center;color:var(--ui-muted);font-size:12px}.header-context>span:first-child{font-size:10px;letter-spacing:1.5px}.sep{color:var(--ui-line)}.top-actions{display:flex;gap:10px;align-items:center}.top-actions>button{background:transparent;font-size:12px;padding:9px 10px}.language{display:flex;border-left:1px solid var(--ui-wash);padding-left:13px;gap:4px}.language button{background:transparent;padding:6px;font-size:11px;border-radius:3px}.language button[aria-pressed=true]{background:var(--ui-ink);color:#fff}main{display:grid;grid-template-columns:300px minmax(0,1fr);height:calc(100dvh - 76px);min-height:600px}.sidebar{border-right:1px solid var(--ui-wash);display:flex;flex-direction:column;padding:25px 21px 18px;overflow:auto}.eyebrow{font-size:10px;letter-spacing:1.7px;font-weight:650;color:var(--ui-muted)}h1{font:34px/1.12 Georgia,serif;letter-spacing:-1px;margin:14px 0}p{font-size:13px;line-height:1.6;color:var(--ui-muted)}.intro p{margin:0 0 22px}.field-label{font-size:11px;margin-bottom:6px;color:var(--ui-muted)}select{background:var(--ui-paper);border:1px solid var(--ui-wash);border-radius:5px;padding:10px;cursor:pointer;width:100%}.commune-info{font-size:11px;color:var(--ui-muted);line-height:1.6;margin-top:7px;min-height:18px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:9px;margin:16px 0 10px}.section-heading>button{background:transparent;color:var(--ui-ink);font-size:11px;padding:5px 0}.landmark-list{display:flex;flex-direction:column;gap:2px}.landmark-row{display:flex;text-align:left;align-items:center;gap:10px;border-radius:4px;padding:9px 7px;background:transparent;font-size:12px;min-height:35px}.landmark-row:hover{background:var(--ui-surface)}.landmark-row[aria-pressed=true]{background:var(--ui-wash);color:var(--ui-ink)}.landmark-row .num{font-size:10px;color:var(--ui-muted);width:18px}.landmark-row .arrow{margin-left:auto;color:var(--ui-muted)}.sidebar-foot{margin-top:auto;padding-top:22px}.sidebar-foot>span{font-size:8px;letter-spacing:1.2px;color:var(--ui-muted)}.sidebar-foot p{font-size:10px;margin:7px 0 0}.tour-controls{display:flex;gap:6px;margin-top:12px}.tour-controls button{background:var(--ui-surface);border-radius:4px;padding:8px 12px;font-size:11px}.viewport{position:relative;overflow:hidden;background:#b9d7dd;min-width:0}#scene{position:absolute;inset:0 0 130px}#scene canvas{display:block;width:100%;height:100%;touch-action:none}.view-toolbar{position:absolute;top:22px;left:22px;right:22px;display:flex;justify-content:space-between;align-items:flex-start;gap:10px;pointer-events:none}.view-toolbar>*{pointer-events:auto}.view-mode{display:flex;gap:2px;background:rgb(249 247 241 / 0.949);border:1px solid var(--ui-wash);border-radius:5px;padding:3px}.view-mode button{background:transparent;border-radius:3px;font-size:12px;padding:7px 13px}.view-mode button[aria-pressed=true]{background:var(--ui-ink);color:white}.theme-switcher{display:flex;align-items:center;gap:10px;background:rgb(249 247 241 / 0.949);border:1px solid var(--ui-wash);padding:4px 10px;border-radius:5px;font-size:11px}.theme-switcher select{border:0;background:transparent;padding:6px 1px;width:auto;max-width:175px;font-size:12px}.map-actions{position:absolute;top:79px;left:22px;display:flex;gap:5px;flex-wrap:wrap;max-width:calc(100% - 70px)}.map-actions button{font-size:11px;padding:7px 10px;border-radius:4px;background:rgb(249 247 241 / 0.933);box-shadow:0 1px 3px #00000008}.map-actions button[aria-pressed=true]{box-shadow:inset 0 -2px var(--ui-muted)}.map-status{position:absolute;top:123px;left:24px;display:flex;flex-direction:column;gap:3px;pointer-events:none;font-size:10px;color:var(--ui-muted);letter-spacing:.1px}.map-status span{background:rgb(249 247 241 / 0.741);border-radius:2px;padding:2px 5px;align-self:flex-start}.compass{position:absolute;right:30px;top:140px;display:flex;flex-direction:column;align-items:center;color:var(--ui-ink);pointer-events:none}.compass>span:first-child{font-size:10px}.compass>span:last-child{font-size:37px;line-height:40px}.landmark-card{position:absolute;left:23px;bottom:192px;width:285px;max-width:calc(100% - 46px);padding:18px 21px;background:rgb(249 247 241 / 0.929);border:1px solid var(--ui-wash);border-radius:7px;box-shadow:0 10px 30px rgb(43 41 44 / 0.071)}.landmark-card h2{font:24px/1.15 Georgia,serif;letter-spacing:-.4px;margin:9px 0}.landmark-card p{font-size:12px;margin:0;color:var(--ui-muted)}.landmark-card>button{position:absolute;top:7px;right:10px;font-size:19px;background:transparent;color:var(--ui-muted)}.bridge-panel{position:absolute;right:22px;bottom:193px;width:315px;max-width:calc(100% - 44px);background:rgb(249 247 241 / 0.929);border:1px solid var(--ui-wash);border-radius:7px;padding:15px 18px}.bridge-panel .section-heading{margin:0 0 10px}.bridge-panel strong{font-size:13px}.simulation-tag{font-size:8px;background:var(--ui-wash);color:#9c7a36;padding:5px;border-radius:3px;letter-spacing:1px}.bridge-panel p{font-size:12px;margin:6px 0 10px}.bridge-panel p.small{font-size:9px;margin:10px 0 0}.bridge-buttons{display:flex;gap:6px}.bridge-buttons button{background:var(--ui-wash);border-radius:3px;font-size:10px;padding:8px}.bridge-buttons button:first-child{background:var(--ui-ink);color:white}.map-bottom{position:absolute;bottom:143px;left:23px;right:23px;display:flex;justify-content:space-between;align-items:center;gap:12px}.hint{font-size:10px;color:var(--ui-ink);text-shadow:0 1px 3px #ffffff88}.map-bottom button{font-size:10px;background:rgb(249 247 241 / 0.933);padding:9px 11px;border:1px solid var(--ui-wash);border-radius:4px}.time-panel{position:absolute;left:0;right:0;bottom:28px;height:102px;border-top:1px solid var(--ui-line);display:flex;align-items:center;gap:25px;padding:15px 24px;background:rgb(249 247 241 / 0.961)}.time-title{display:flex;flex-direction:column;gap:8px}.time-title strong{font:27px Georgia,serif;color:var(--ui-ink)}.time-main{flex:1;max-width:390px}.time-presets{display:flex;align-items:center;gap:5px;margin-bottom:10px}.time-presets button{font-size:11px;background:var(--ui-surface);border-radius:3px;padding:7px 11px}.time-presets button[aria-pressed=true]{background:var(--ui-ink);color:white}.time-presets select{width:48px;font-size:10px;padding:4px;background:transparent}input[type=range]{accent-color:var(--ui-ink);width:100%;height:5px;cursor:pointer}input[type=checkbox]{accent-color:var(--ui-ink)}.time-options{display:flex;flex-direction:column;gap:5px;font-size:10px;min-width:155px}.time-options label{display:flex;align-items:center;gap:5px;white-space:nowrap}.density-label input{max-width:85px;height:4px}.map-attribution{position:absolute;bottom:0;left:0;right:0;height:28px;background:var(--ui-surface);display:flex;align-items:center;justify-content:flex-end;gap:6px;padding:0 16px;font-size:9px;color:var(--ui-muted)}.map-attribution a{text-decoration:none}.map-attribution button{font:inherit;color:inherit;background:transparent;padding:0}.mobile-explore{display:none}#map-error{position:absolute;top:165px;left:23px;right:23px;padding:12px;background:#fff1da;color:#8f5130;border-radius:4px;font-size:12px;z-index:8}.night .compass,.night .hint{color:var(--ui-wash);text-shadow:none}dialog{border:1px solid var(--ui-wash);border-radius:10px;max-width:700px;width:calc(100% - 32px);max-height:85dvh;background:var(--ui-paper);padding:24px;color:var(--ui-ink);box-shadow:0 25px 100px rgb(43 41 44 / 0.267)}dialog::backdrop{background:rgb(43 41 44 / 0.467);backdrop-filter:blur(4px)}.dialog-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.dialog-header h2{font:30px Georgia,serif;margin:0}.dialog-header button{font-size:24px;background:transparent}.data-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:15px 0}.data-grid div{border:1px solid var(--ui-wash);border-radius:5px;padding:12px}.data-grid strong{display:block;font:23px Georgia,serif}.data-grid span{font-size:10px;color:var(--ui-muted)}#info-content p,#info-content li{font-size:13px;line-height:1.6;color:var(--ui-muted)}#info-content h3{font-size:14px;margin-top:25px}#info-content table{width:100%;border-collapse:collapse;font-size:12px}#info-content td,#info-content th{padding:7px;border-bottom:1px solid var(--ui-wash);text-align:left}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:var(--ui-ink);color:#fff;padding:12px 20px;border-radius:5px;z-index:20;font-size:13px}@media(max-width:1100px){.header-context{display:none}main{grid-template-columns:265px minmax(0,1fr)}.sidebar{padding:22px 17px}.time-panel{gap:12px;padding:12px 16px}.time-title .eyebrow{display:none}.time-presets button{padding:7px 8px}.time-options{min-width:140px}.landmark-card{width:245px}.bridge-panel{width:280px}.landmark-card:has(+.bridge-panel:not([hidden])){display:none}.hint{max-width:190px;font-size:9px}.theme-switcher>span{display:none}}@media(max-width:760px){.topbar{height:62px;padding:0 13px;gap:5px}.brand{font-size:12px;gap:8px}.brandmark{width:35px;height:35px;font-size:29px;line-height:32px}.brand small{font-size:7px}.top-actions{gap:2px}.top-actions>button{font-size:10px;padding:7px}.top-actions #info-open{display:none}.language{padding-left:6px;gap:0}main{height:calc(100dvh - 62px);min-height:530px;display:block}.viewport{height:100%}.sidebar{display:none;position:fixed;top:62px;bottom:0;left:0;width:280px;background:var(--ui-paper);z-index:10;box-shadow:10px 0 40px rgb(43 41 44 / 0.145)}.sidebar.open{display:flex}.view-toolbar{top:15px;left:12px;right:12px}.view-mode button{font-size:11px;padding:7px 10px}.theme-switcher{padding:4px 6px;gap:0}.theme-switcher select{font-size:11px;max-width:145px}.map-actions{top:65px;left:12px;max-width:calc(100% - 24px);gap:4px}.map-actions button{font-size:9px;padding:7px}.map-status{top:107px;left:13px;font-size:9px}.compass{right:18px;top:138px}.landmark-card{bottom:243px;left:12px;width:255px;padding:15px}.landmark-card h2{font-size:21px}.bridge-panel{bottom:243px;right:12px;width:calc(100% - 24px)}.map-bottom{left:12px;right:12px;bottom:205px}.hint{display:none}.map-bottom button{margin-left:auto;font-size:9px}.time-panel{height:148px;bottom:38px;flex-wrap:wrap;align-content:center;padding:12px 14px;gap:10px 16px}.time-title strong{font-size:25px}.time-main{max-width:100%}.time-presets{gap:4px}.time-presets button{font-size:10px;padding:6px}.time-options{width:100%;flex-direction:row;flex-wrap:wrap;gap:5px 10px;font-size:9px}.density-label{max-width:115px}.map-attribution{height:38px;flex-wrap:wrap;justify-content:center;align-content:center;gap:2px 5px;font-size:8px;padding:4px 9px}#scene{bottom:186px}.mobile-explore{display:block;position:absolute;bottom:203px;left:12px;background:var(--ui-ink);color:white;font-size:10px;padding:9px 12px;border-radius:4px}.data-grid{grid-template-columns:1fr 1fr}.intro h1{font-size:29px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

#commune-labels{position:absolute;inset:0 0 130px;pointer-events:none;overflow:hidden}.commune-label{position:absolute;font-size:10px;white-space:nowrap;color:var(--ui-ink);background:rgb(249 247 241 / 0.851);padding:2px 4px;border-radius:3px;transform:translate(-50%,-50%);box-shadow:0 1px 3px rgb(43 41 44 / 0.082)}@media(max-width:760px){#commune-labels{bottom:186px}.commune-label{font-size:8px}}

@media(max-width:760px){.mobile-explore{z-index:11}.sidebar.open{padding-bottom:70px}.sidebar.open~.viewport .mobile-explore{position:fixed;left:15px;bottom:15px}}
.detail-actions{position:absolute;top:118px;left:22px;display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:calc(100% - 44px)}.detail-actions button,.detail-actions label{font-size:10px;padding:7px 10px;border-radius:4px;background:rgb(249 247 241 / 0.933);box-shadow:0 1px 3px #00000008}.detail-actions label{display:flex;align-items:center;gap:4px;padding:4px 7px}.detail-actions button[aria-pressed=true]{background:var(--ui-ink);color:white}.map-status{top:159px}#photo-dates{color:#82613c;background:#fff5dfdc}.compass{top:198px}.building-card{position:absolute;left:23px;bottom:192px;width:325px;max-width:calc(100% - 46px);max-height:calc(100% - 410px);overflow:auto;padding:19px 22px;background:rgb(249 247 241 / 0.961);border:1px solid var(--ui-wash);border-radius:7px;box-shadow:0 10px 30px rgb(43 41 44 / 0.071);z-index:4}.building-card h2{font:30px Georgia,serif;margin:8px 0}.building-card p{font-size:11px;word-break:break-word}.building-card>button{position:absolute;right:10px;top:7px;font-size:20px;background:transparent}.building-card dl{font-size:11px;line-height:1.6}.building-card dt{color:var(--ui-muted);margin-top:7px}.building-card dd{margin:0;word-break:break-word}.building-card .small{font-size:10px}.building-card .eyebrow{font-size:9px}#startup-measurement{font-variant-numeric:tabular-nums;border-left:3px solid var(--ui-muted);padding:8px 12px;background:var(--ui-surface)}
@media(max-width:760px){.detail-actions{left:12px;right:12px;top:103px;gap:4px;max-width:none}.detail-actions button,.detail-actions label{font-size:9px;padding:6px 7px}.detail-actions label{padding:3px 5px}.map-status{top:140px}.compass{top:205px}.building-card{left:12px;bottom:242px;width:calc(100% - 24px);max-height:calc(100% - 435px);padding:14px 18px}.building-card dl{display:grid;grid-template-columns:1fr 1.3fr;gap:5px 8px}.building-card dt{margin:0}.building-card h2{font-size:23px}}
.viewport:has(.bridge-panel:not([hidden])) .landmark-card{display:none}

.tram-panel{margin:24px 0;padding:16px 0;border-top:1px solid var(--line,var(--ui-line));border-bottom:1px solid var(--line,var(--ui-line))}.tram-panel .section-heading{margin:0 0 12px}.tram-panel label{display:flex;align-items:center;gap:5px;font-size:12px}.tram-panel .field-label{margin-top:12px}#tram-lines{display:flex;gap:5px;flex-wrap:wrap}#tram-lines button{min-width:28px;padding:6px 8px;border-bottom:3px solid var(--line-color,var(--ui-ink))}#tram-lines button[aria-pressed=true]{background:var(--line-color,var(--ui-ink));color:white}.tram-controls{display:flex;gap:12px;align-items:center;margin-top:10px}.tram-panel .small{font-size:11px;line-height:1.5;margin-bottom:0}
.tram-panel{font-size:14px}#tram-lines button{min-height:34px;min-width:30px}.tram-panel select{min-height:38px}
@media(max-width:760px){#tram-lines button{min-height:40px}.tram-panel select{min-height:44px}}
#tram-lines{display:grid;grid-template-columns:1.35fr repeat(6,minmax(0,1fr));gap:3px}#tram-lines button{min-width:0;padding:6px 3px}

.public-spaces-panel{padding:18px 0;border-top:1px solid var(--line,var(--ui-line));margin-top:18px}.public-spaces-panel summary{font-size:12px;font-weight:700;letter-spacing:.06em;cursor:pointer}.public-spaces-panel .tree-toggle{display:flex;align-items:center;gap:7px;margin:14px 0 3px;font-size:12px}.public-spaces-panel input[type=search]{box-sizing:border-box;width:100%;border:1px solid var(--ui-line);border-radius:4px;background:var(--ui-paper);padding:9px 10px;font:inherit;font-size:12px;margin:0 0 8px}.public-spaces-panel select{width:100%;max-width:100%}.public-spaces-panel .small{font-size:11px;line-height:1.5;color:var(--ui-muted);margin:7px 0}.public-spaces-panel input:focus-visible{outline:2px solid var(--ui-ink);outline-offset:2px}

/* A compact gazetteer follows the map's paper-and-ink vocabulary. */
.heritage-panel {margin:18px 0;border-top:1px solid var(--line,var(--ui-line));border-bottom:1px solid var(--line,var(--ui-line));padding:14px 0}
.heritage-panel summary {font-size:11px;letter-spacing:.12em;font-weight:700;cursor:pointer;padding:4px 0}
.heritage-body {padding-top:8px}.heritage-body input[type=search] {width:100%;box-sizing:border-box;padding:10px 11px;border:1px solid var(--ui-line);border-radius:4px;background:#fffdf6;color:var(--ui-ink);font:inherit;font-size:12px}
.heritage-filters {display:grid;grid-template-columns:1.15fr 1fr;gap:8px}.heritage-filters>div{min-width:0}.heritage-filters select{font-size:11px;padding:8px 5px}
.heritage-results {display:grid;border-top:1px solid var(--ui-line)}.heritage-place {display:grid;grid-template-columns:1fr 18px;gap:3px;text-align:left;border:0;border-bottom:1px solid var(--ui-line);border-radius:0;background:transparent;padding:10px 3px;line-height:1.3}.heritage-place:hover,.heritage-place[aria-pressed=true]{background:var(--ui-surface)}.heritage-place>span:first-child{font-size:12px;font-weight:600}.heritage-place small{font-size:10px;opacity:.7;grid-column:1}.heritage-arrow{grid-column:2;grid-row:1/3;align-self:center}.heritage-pages{display:flex;justify-content:space-between;gap:6px;padding-top:10px}.heritage-pages button{font-size:10px;padding:6px}.heritage-selected {background:var(--ui-surface);border-left:3px solid var(--ui-ink);padding:12px;margin-top:12px;font-size:12px}.heritage-selected a{font-size:11px;color:var(--ui-ink)}.heritage-selected p{margin:7px 0}.heritage-sector-go{width:100%;background:var(--ui-ink);color:#fffdf2}.heritage-body button:disabled{opacity:.45;cursor:default}.heritage-body [hidden]{display:none}
@media(max-width:700px){.heritage-place{padding:12px 5px}.heritage-filters select{min-height:42px}.heritage-pages button{min-height:38px}}

/* Interface identity is independent of the five geographic rendering themes. */
:root{color:var(--ui-ink);background:var(--ui-paper)}
.topbar{background:var(--ui-paper)}.brandmark{background:var(--ui-accent);border-radius:7px}
.experience-nav{background:var(--ui-paper);gap:18px}.experience-nav button{font-size:14px;padding:0 5px}
.experience-nav button[aria-pressed=true],.experience-nav button:last-child[aria-pressed=true]{color:var(--ui-accent);border-color:var(--ui-accent)}
.language button[aria-pressed=true],.view-mode button[aria-pressed=true],.detail-actions button[aria-pressed=true],.time-presets button[aria-pressed=true],.d-primary,.d-buttons button[aria-pressed=true],.mobile-explore,.heritage-sector-go,.history-pin[aria-pressed=true]{background:var(--ui-accent);color:var(--ui-paper)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline-color:var(--ui-accent)}
input[type=range],input[type=checkbox]{accent-color:var(--ui-accent)}
.map-actions button[aria-pressed=true]{box-shadow:inset 0 -2px var(--ui-accent)}
.landmark-row[aria-pressed=true],.heritage-place[aria-pressed=true],.history-stops button[aria-pressed=true]{background:var(--ui-accent-soft);color:var(--ui-accent)}
.heritage-selected{background:var(--ui-surface);border-color:var(--ui-accent)}.history-stops button[aria-pressed=true]{border-color:var(--ui-accent)}
.sidebar{background:var(--ui-paper)}.sidebar .intro h1{font-size:32px}.sidebar .intro p{font-size:14px}.sidebar .intro p{margin-bottom:16px}
.heritage-panel summary,.public-spaces-panel summary{font-size:12px;letter-spacing:.09em}.heritage-body input[type=search]{font-size:14px;padding:12px}
.heritage-place>span:first-child,.landmark-row{font-size:14px}.heritage-place small{font-size:12px}.heritage-filters select{font-size:12px}.field-label{font-size:12px;display:block;margin-top:8px}
.heritage-pages button{font-size:12px;padding:8px}.heritage-sector-go{padding:11px;border-radius:4px}.heritage-body .small{font-size:12px}.heritage-selected{display:none}
#discovery-panel p,.history-story p{font-size:14px}#discovery-panel label,.history-stops button{font-size:14px}#discovery-panel .d-note,#discovery-panel small{font-size:12px}.d-buttons button{font-size:12px}
.top-actions>button,.language button{font-size:12px}.time-title strong{color:var(--ui-ink)}.compass,.hint{color:var(--ui-ink)}
.night .compass,.night .hint{color:var(--ui-paper)}.theme-switcher{border-color:var(--ui-line)}
@media(max-width:760px){.experience-nav{gap:4px}.experience-nav button{font-size:12px}.top-actions>button{font-size:11px}.sidebar .intro h1{font-size:28px}}

/* An editorial photograph sits alongside its place, never over the map controls. */
.place-overlay{position:absolute;inset:0 0 130px;pointer-events:none;z-index:6}
.place-card{position:absolute;width:320px;max-width:calc(100% - 24px);max-height:calc(100% - 88px);overflow:auto;background:var(--ui-paper);border:1px solid var(--ui-line);border-radius:8px;box-shadow:0 14px 42px #24202930;pointer-events:auto;scrollbar-width:thin}
.place-photo{margin:0;background:var(--ui-wash)}.place-photo img{width:100%;height:168px;display:block;object-fit:contain;background:var(--ui-ink)}.place-photo figcaption{padding:7px 12px;font-size:11px;line-height:1.4;color:var(--ui-muted)}.place-photo figcaption a{text-decoration:none}.place-photo figcaption a:hover{text-decoration:underline}
.place-card-body{padding:16px 20px}.place-card h2{font:27px/1.13 Georgia,serif;letter-spacing:-.4px;margin:9px 28px 12px 0}.place-card p{font-size:14px;line-height:1.55;color:var(--ui-ink);margin:10px 0}.place-card .eyebrow{font-size:11px;color:var(--ui-accent)}
.place-close{position:absolute;z-index:1;right:8px;top:8px;width:32px;height:32px;border-radius:50%;background:var(--ui-paper);color:var(--ui-ink);font-size:24px;box-shadow:0 1px 9px #0002}
.place-resources{display:flex;flex-wrap:wrap;gap:9px 14px;margin-top:16px}.place-resources a{font-size:12px;font-weight:600;color:var(--ui-accent);text-underline-offset:3px}.place-no-photo{font-size:12px;color:var(--ui-muted);padding:10px 0;line-height:1.45}.place-no-photo a{display:block;margin-top:6px;color:var(--ui-accent)}
.place-card .place-metadata{font-size:12px;color:var(--ui-muted)}.place-card-footer{display:flex;justify-content:space-between;align-items:center;gap:8px;border-top:1px solid var(--ui-line);margin-top:16px;padding-top:10px;font-size:11px;color:var(--ui-muted)}.place-card-footer button{padding:7px 10px;background:var(--ui-wash);border-radius:3px;font-size:12px;margin-left:auto}
.place-anchor{position:absolute;transform:translate(-50%,-50%);width:18px;height:18px;border:3px solid var(--ui-paper);border-radius:50%;background:var(--ui-accent);box-shadow:0 0 0 1px var(--ui-accent),0 3px 15px #0005;pointer-events:auto}
.place-overlay[data-mobile=true] .place-card{width:calc(100% - 24px);max-height:45%;border-radius:9px}.place-overlay[data-mobile=true] .place-photo img{height:80px}.place-overlay[data-mobile=true] .place-card-body{padding:12px 16px}.place-overlay[data-mobile=true] .place-card h2{font-size:24px}.place-overlay[data-mobile=true] .place-card p{font-size:13px}.place-overlay[data-mobile=true] .place-photo figcaption{font-size:11px}.place-overlay[data-mobile=true] .place-resources{margin-top:10px}
@media(max-width:760px){.place-overlay{bottom:186px}.viewport:has(.place-overlay:not([hidden])) .map-status{display:none}.sidebar.open~.viewport .place-overlay{visibility:hidden}}
@media(max-width:760px){#sidebar:not(.open)~.viewport:has(.place-overlay:not([hidden])) .mobile-explore{top:148px;bottom:auto}}
.place-street-link{display:block;border:1px solid var(--ui-line);border-radius:4px;margin-top:18px;padding:10px 12px;font-size:13px;font-weight:600;text-decoration:none;color:var(--ui-accent);background:var(--ui-surface)}.place-street-link:hover{border-color:var(--ui-accent);background:var(--ui-accent-soft)}
.place-card .place-text-source{font-size:11px;line-height:1.55;margin-top:-4px;color:var(--ui-muted)}
.place-text-source a{color:inherit;text-decoration-color:var(--ui-line);text-underline-offset:3px}
.place-photo-context{display:block;margin-top:4px}

/* Screen-space wayfinding: fixed-size stop symbols, restrained place labels. */
.map-features{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}
.map-feature-marker{position:absolute;display:flex;align-items:center;gap:6px;min-height:44px;max-width:220px;padding:7px;background:transparent;transform:translate(-21px,-50%);pointer-events:auto;touch-action:none;text-align:left;border-radius:7px;user-select:none;color:var(--ui-ink)}
.map-feature-symbol{display:grid;place-items:center;flex:0 0 28px;height:28px;border:2px solid var(--ui-paper);border-radius:50%;background:var(--ui-accent);color:var(--ui-paper);font:700 19px/1 Georgia,serif;box-shadow:0 1px 3px #21191c55,0 0 0 1px #782f4266}
.map-feature-marker[data-kind=station] .map-feature-symbol{border-radius:6px;background:var(--ui-ink);font:800 16px/1 "Avenir Next",sans-serif;box-shadow:0 1px 3px #21191c66,0 0 0 1px #2b292c66}
.map-feature-caption{display:flex;flex-direction:column;gap:4px;min-width:0;padding:6px 9px;background:var(--ui-paper);border:1px solid var(--ui-line);border-radius:5px;box-shadow:0 2px 6px #21191c22}
.map-feature-name{font-size:12px;font-weight:650;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.map-feature-marker[data-label=false] .map-feature-caption{display:none}
.map-feature-marker:hover .map-feature-caption,.map-feature-marker:focus-visible .map-feature-caption{display:flex}
.map-feature-marker:hover,.map-feature-marker:focus-visible{z-index:3}
.map-feature-marker:hover .map-feature-symbol,.map-feature-marker:focus-visible .map-feature-symbol{box-shadow:0 0 0 3px var(--ui-accent-soft),0 2px 6px #21191c66}
.map-line-badges{display:flex;gap:4px;align-items:center;flex-wrap:wrap}
.map-line-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:3px;border-bottom:4px solid var(--route-color);background:var(--ui-ink);color:var(--ui-paper);font-size:11px;font-weight:750;line-height:1;padding:2px 4px}
.station-card{width:285px}.station-card h2{font-size:26px}.station-card .map-line-badge{height:29px;min-width:30px;font-size:15px}.station-card .place-card-body{padding-top:23px}
.view-toolbar,.map-actions,.map-status,.map-bottom{z-index:4}
@media(max-width:760px){.map-feature-marker{max-width:175px}.map-feature-name{font-size:11px}.map-feature-caption{padding:5px 7px}.sidebar.open~.viewport .map-features{visibility:hidden}.station-overlay[data-mobile=true] .station-card{max-height:45%}}

/* Exploration views share the same city and camera. */
.experience-nav{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior-x:contain}
.experience-nav button{flex-shrink:0;white-space:nowrap;min-height:43px}
.experience-nav button[data-map-layer=tram][aria-pressed=true]{color:var(--ui-accent);border-color:var(--ui-accent)}
body:is([data-map-layer=tram],[data-map-layer=bato])[data-experience=explore] .detail-actions{display:none}
body[data-experience=explore] :is(#tram-panel,#ferry-panel){margin-top:0}
#commune-panel>.field-label{display:block}
#guided-tour-panel>#lion-view{width:100%;margin-top:16px;padding:10px;text-align:left;background:var(--ui-surface);border-radius:4px;font-size:12px}
body[data-map-layer=tram][data-experience=explore] #tram-lines{gap:7px}
@media(max-width:760px){.experience-nav{gap:0}.experience-nav button{flex:0 0 auto;padding:0 13px}.experience-nav button[data-map-layer=places]{max-width:none}}

/* Official bridge status and an explicitly interpreted vessel movement. */
.bridge-panel{z-index:6;width:355px;max-height:calc(100% - 180px);overflow-y:auto}.bridge-sync{display:flex;gap:7px;align-items:center;font-size:12px;margin:12px 0}.bridge-live-info>p{margin:8px 0}.bridge-live-info #bridge-live-status{font-weight:650;color:var(--ui-ink);font-size:12px}.bridge-method{font-size:10px;border-top:1px solid var(--ui-line);padding-top:9px;margin:10px 0}.bridge-method summary{cursor:pointer;font-size:11px}.bridge-method p{font-size:10px}.bridge-method a{font-size:10px}.bridge-buttons{flex-wrap:wrap}.bridge-panel .section-heading{align-items:flex-start;flex-wrap:wrap}.bridge-panel .simulation-tag{font-size:8px}
@media(max-width:760px){.bridge-panel{bottom:242px;max-height:calc(100% - 260px);width:calc(100% - 24px)}}

#bridge-close{min-width:28px;min-height:28px;font-size:20px;line-height:1;padding:0}

.bridge-voyage-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:10px 0}.bridge-voyage-actions label{display:flex;align-items:center;gap:6px;font-size:14px}.bridge-voyage-actions input{accent-color:var(--accent)}
