:root{font-family:"Avenir Next",Avenir,"Segoe UI",sans-serif;color:#f0f4ef;background:#142d3c;font-synthesis:none;--muted:#b0c5c9;--accent:#e6bd79;--border:rgba(221,238,236,.17)}
*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:0;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}a{color:inherit;text-decoration:none}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}button{transition:background .2s,color .2s}button:hover{color:white;background:rgba(255,255,255,.12)}[hidden]{display:none!important}#scene{position:fixed;inset:0}#scene canvas{display:block;width:100%;height:100%;touch-action:none;outline:none}.vignette{position:fixed;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(12,30,43,.38),transparent 37%,transparent 65%,rgba(8,24,36,.30)),linear-gradient(90deg,rgba(9,26,38,.20),transparent 42%)}
header{position:absolute;top:28px;left:38px;right:38px;display:flex;align-items:center;gap:28px}.wordmark{display:flex;gap:12px;align-items:center;font-size:20px;letter-spacing:-.5px;font-weight:600}.wordmark svg{width:31px;height:31px;stroke:none}.wordmark-light{font-weight:400;opacity:.65}.location{margin-left:auto;font-size:12px;color:#c0d0d3;display:flex;align-items:center;gap:14px}.location-dot,.status-dot{width:4px;height:4px;border-radius:50%;background:#a3c6c8;display:inline-block}.round-button{width:35px;height:35px;border:1px solid var(--border);border-radius:50%;background:transparent;display:grid;place-items:center}.intro{position:absolute;top:125px;left:48px;pointer-events:none}.edition{display:flex;align-items:center;gap:9px;font-size:12px;color:#c2d3d5}.edition>span{height:6px;width:6px;border-radius:50%;background:#eac58e;box-shadow:0 0 12px #eac58e55}h1{font-size:clamp(48px,5.1vw,78px);font-weight:500;line-height:1.04;letter-spacing:-4px;margin:19px 0 13px}.intro p{font-size:16px;font-weight:400;color:#d4dedc;margin:0}.data-status{margin-top:26px;font-size:10px;color:#a6bec3;display:flex;align-items:center;gap:6px}.data-status .status-dot{margin:0 3px;width:3px;height:3px}#building-count{font-variant-numeric:tabular-nums;color:#dce6e5}.glass{background:rgba(15,36,48,.87);border:1px solid var(--border);box-shadow:0 12px 45px #03121f20;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px)}.about{position:absolute;right:38px;top:78px;width:335px;padding:24px;border-radius:14px;z-index:8;font-size:12px;line-height:1.65;color:#c3d3d5}.about h2{font-size:19px;font-weight:500;color:#f2f3e9;margin:0 0 13px}.about a{display:block;margin-top:12px;color:var(--accent)}#data-date{font-size:11px}.landmarks{position:absolute;left:48px;top:365px;display:flex;flex-direction:column;align-items:flex-start;gap:3px}.landmarks>span{font-size:11px;color:#a9c1c5;margin-bottom:11px}.landmarks button{padding:9px 0;background:transparent;display:flex;gap:20px;align-items:center;font-size:13px;color:#e0e8e6}.landmarks button svg{width:14px;height:14px;opacity:.6}.landmarks button:hover{color:var(--accent)}.map-tools{position:absolute;right:35px;top:50%;transform:translateY(-40%);padding:5px;border-radius:30px;display:flex;flex-direction:column;gap:3px}.map-tools button{width:40px;height:40px;border-radius:50%;background:transparent;display:grid;place-items:center;color:#d1dfe0}.map-tools button:hover,.map-tools button[aria-pressed=true]{background:#ffffff15;color:var(--accent)}.tool-divider{height:1px;background:var(--border);margin:4px 8px}#north{height:55px;gap:0}#north span{font-size:9px;line-height:1}#north svg{width:28px;height:28px}.timeline{position:absolute;bottom:64px;left:50%;transform:translateX(-50%);width:530px;border-radius:18px;padding:23px 26px 15px}.time-heading{display:flex;align-items:center;justify-content:space-between}.time-heading>div{display:flex;flex-direction:column;gap:6px}#phase{font-size:16px;font-weight:500}.timezone{font-size:10px;color:#98b3bb}#time-output{font-size:34px;font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:-1.5px}.slider-row{display:flex;gap:18px;align-items:flex-start;margin:23px 0 12px}#play{width:31px;height:31px;background:#dde7df;color:#193443;border-radius:50%;display:grid;place-items:center;margin-top:-6px;flex-shrink:0}#play svg{width:18px;height:18px}#play:hover{background:var(--accent)}.slider-wrap{flex:1}input[type=range]{display:block;appearance:none;-webkit-appearance:none;width:100%;margin:0;height:4px;border-radius:5px;background:linear-gradient(90deg,#486081 0%,#a38c9e 23%,#e6c28a 32%,#fae2a3 50%,#d3976e 72%,#5c6e92 82%,#394c6f 100%);cursor:pointer}input[type=range]::-webkit-slider-thumb{appearance:none;width:15px;height:15px;background:#f3ead9;border-radius:50%;border:3px solid #d4b685;box-shadow:0 0 0 5px #e0c79712}input[type=range]::-moz-range-thumb{width:10px;height:10px;background:#f3ead9;border-radius:50%;border:3px solid #d4b685}input:focus-visible{outline:2px solid var(--accent);outline-offset:8px}.time-ticks{display:flex;justify-content:space-between;margin-top:12px;font-size:9px;color:#a1b9c1;font-variant-numeric:tabular-nums}.presets{display:flex;border-top:1px solid var(--border);padding-top:11px;justify-content:space-between;gap:5px}.presets button{border-radius:6px;background:transparent;color:#a9c0c5;font-size:10px;padding:6px 14px}.presets button.active{color:#f1d6a3;background:#dfc28d16}.presets button:hover{background:#ffffff12;color:#fff}.selection{position:absolute;left:48px;bottom:95px;padding:23px;width:290px;border-radius:13px}.selection-caption{font-size:10px;color:var(--accent)}.selection h2{font-size:20px;font-weight:500;line-height:1.3;margin:10px 15px 15px 0}.selection p{font-size:25px;margin:0 0 4px;font-variant-numeric:tabular-nums}.selection small{font-size:10px;color:#b2c6cc;display:block}.selection a{display:flex;align-items:center;gap:8px;font-size:11px;color:#dcc398;margin-top:20px}.selection a svg{width:15px;height:15px}.close-button{position:absolute;right:10px;top:10px;background:transparent;width:28px;height:28px;border-radius:50%;display:grid;place-items:center}.close-button svg{width:16px;height:16px}footer{position:absolute;bottom:23px;left:38px;right:38px;display:flex;justify-content:space-between;align-items:center;color:#99b4bf;font-size:10px;pointer-events:none}footer a{pointer-events:auto}.gesture i{font-style:normal;margin:0 9px;color:#64828c}.attribution{display:flex;align-items:center;gap:30px}#scale{display:flex;align-items:center;gap:10px;font-size:9px;font-variant-numeric:tabular-nums}#scale b{display:inline-block;width:45px;height:5px;border:1px solid #a1b8bf;border-top:0}#labels{position:fixed;inset:0;pointer-events:none;overflow:hidden}.map-label{position:absolute;color:#dde4d7;font-size:10px;white-space:nowrap;text-shadow:0 1px 5px #102c3a,0 1px 12px #102c3a;transform:translate(-50%,-100%);padding-bottom:14px}.map-label:after{content:"";position:absolute;bottom:2px;left:50%;width:3px;height:3px;background:#e4c387;border-radius:50%;box-shadow:0 0 0 3px #e4c38720}.map-label.water-label{color:#acd2d7;letter-spacing:4px;font-size:13px;opacity:.65;font-style:italic;font-family:Georgia,serif}.map-label.water-label:after{display:none}#loading{position:fixed;inset:0;background:#173443;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .8s}#loading.done{opacity:0;pointer-events:none}#loading h2{font-size:28px;font-weight:400;letter-spacing:-1px;margin-bottom:5px}#loading p{font-size:12px;color:#b3c8cc;max-width:440px;text-align:center;padding:0 25px;line-height:1.6}.loading-mark{width:35px;height:35px;border:1px solid #c5d9d14a;border-top-color:#e6bd79;transform:rotate(45deg);animation:spin 2s linear infinite}@keyframes spin{to{transform:rotate(405deg)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1500px){.intro{top:150px}.landmarks{top:415px}}
@media(max-width:1050px){.selection{bottom:295px;width:250px}.gesture{max-width:250px;line-height:1.7}.location{font-size:10px}.timeline{width:470px}.intro{left:30px}.landmarks{left:30px}}
@media(max-width:650px){header{left:21px;right:21px;top:20px}.wordmark{font-size:17px}.wordmark svg{width:26px}.location{display:none}.round-button{margin-left:auto}.intro{left:23px;top:95px}h1{font-size:49px;letter-spacing:-2.5px;margin:13px 0 9px}.edition{font-size:10px}.intro p{font-size:12px}.data-status{font-size:9px;margin-top:14px}.landmarks{left:23px;top:255px;gap:1px}.landmarks>span{display:none}.landmarks button{font-size:11px;padding:7px 0}.map-tools{right:16px;top:43%;padding:3px;transform:none}.map-tools button{width:33px;height:33px}.map-tools #north{height:46px}.timeline{bottom:48px;width:calc(100% - 30px);padding:16px 19px 12px;border-radius:15px}#phase{font-size:14px}#time-output{font-size:30px}.slider-row{margin-top:21px;margin-bottom:9px}.presets button{padding:5px 10px;font-size:10px}footer{left:20px;right:20px;bottom:18px}.gesture{display:none}.attribution{justify-content:space-between;width:100%;font-size:9px}.selection{left:20px;bottom:252px;width:245px;padding:18px}.selection h2{font-size:17px;margin-bottom:9px}.selection p{font-size:22px}.selection a{margin-top:12px}.about{right:16px;top:68px;width:calc(100% - 32px)}.map-label{font-size:9px}.map-label.water-label{font-size:10px;letter-spacing:2px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* Architectural views keep the map in focus and the location list within reach. */
.landmarks{top:345px;width:230px;gap:0}.landmarks button{width:100%;justify-content:space-between;gap:8px;padding:8px 0;font-size:12px;text-align:left}.landmarks button>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.landmarks button.selected{color:var(--accent)}.is-focused .intro{opacity:0}.is-focused .landmarks{top:125px}.intro{transition:opacity .3s}.selection{width:300px}.selection h2{margin-bottom:12px}#selection-description{font-size:12px;line-height:1.65;color:#b6cbcd;margin-bottom:16px}#selection-description:empty{display:none}#selection-reference{margin-top:12px}#selection-reference:not([hidden])+#selection-link{margin-top:9px}.selection small{line-height:1.6}.is-focused .map-label{opacity:.7}#traffic{pointer-events:auto;background:none;padding:0;color:#adc5cb;font-size:10px;display:flex;gap:9px;align-items:center}#traffic span{display:block;width:18px;height:10px;border-radius:10px;border:1px solid #70938e}#traffic span:before{content:'';display:block;width:6px;height:6px;background:#a3b5ae;margin:1px;border-radius:50%;transition:transform .2s}#traffic[aria-pressed=true] span:before{transform:translateX(7px);background:#e5bd76}footer .gesture{margin-left:20px;margin-right:auto}
@media(max-width:1050px){footer .gesture{display:none}.selection{bottom:295px}.is-focused .landmarks{top:100px}.landmarks{width:200px}}
@media(max-width:650px){.landmarks{top:248px;width:calc(100% - 92px);display:grid;grid-template-columns:1fr 1fr;column-gap:15px}.landmarks button{font-size:10px;padding:6px 0;gap:3px}.landmarks button svg{width:10px;height:10px}.is-focused .landmarks{top:78px}.selection{bottom:251px;width:260px;padding:16px}.selection h2{font-size:16px;margin:4px 14px 7px 0}#selection-description{font-size:10px;line-height:1.5;margin-bottom:8px}.selection p{font-size:20px}.selection a,.selection small{font-size:9px}.selection a{margin-top:8px}#selection-reference{margin-top:7px}#traffic{display:none}}
@media(max-height:780px) and (min-width:651px){.intro{top:100px}h1{font-size:54px}.landmarks{top:285px}.landmarks button{padding:6px 0}.selection{bottom:65px}.is-focused .landmarks{top:95px}}
