*{box-sizing:border-box}html,body{height:100%;margin:0}body{font:15px/1.48 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#ecf1f4;background:#09131b}a{color:#98cbec}a:focus-visible,button:focus-visible{outline:3px solid #f7c96a;outline-offset:3px}.header{height:72px;display:flex;justify-content:space-between;align-items:center;padding:0 24px;border-bottom:1px solid #263d4c;background:#0b1822}.brand{display:flex;align-items:center;gap:12px;letter-spacing:.1em}.mark{font-size:23px;font-weight:800;color:#f4c66e;border:2px solid #f4c66e;padding:3px 10px}.brand strong{display:block;font-size:17px}.brand small{display:block;color:#9db0b9;font-size:10px;letter-spacing:.04em}.headnote{font-size:12px;color:#9db0b9}main{display:grid;grid-template-columns:350px minmax(0,1fr);height:calc(100vh - 72px);min-height:580px}.sidebar{padding:28px 25px;overflow:auto;border-right:1px solid #263d4c}.eyebrow{text-transform:uppercase;color:#e9c47e;font-size:11px;letter-spacing:.18em;font-weight:700}h1{font-size:28px;line-height:1.15;letter-spacing:-.04em;margin:7px 0 14px}h2{font-size:12px;text-transform:uppercase;letter-spacing:.1em;margin:27px 0 12px;color:#a8c4d5}.intro{color:#b3c4cc}.layer{display:flex;align-items:flex-start;gap:11px;padding:11px 10px;margin:5px 0;border:1px solid #263743;border-radius:6px}.layer input{margin-top:5px;accent-color:#dcb56e}.layer span{font-size:13px}.layer small{display:block;color:#94a9b7;font-size:11px;margin-top:2px}.layer.active{background:#172a31;border-color:#597c71}.layer.muted{opacity:.61}.legend{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:12px}.legend span{display:flex;align-items:center;gap:8px}.legend i{width:13px;height:13px;display:inline-block;border-radius:2px}.c0{background:#b6dbbe}.c1{background:#74bba7}.c2{background:#e1c77b}.c3{background:#d98166}.cx{background:#8997a3}.note,.disclaimer{font-size:12px;color:#adb9bf}.disclaimer{border-left:3px solid #f0bf68;padding:8px 11px;margin:25px 0;background:#1b242b}.viewport{min-width:0;display:flex;flex-direction:column}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 20px;background:#11222c}.toolbar strong,.toolbar small{display:block}.toolbar strong{font-size:14px}.toolbar small{color:#a0b4be;font-size:12px}.toolbar button{border:0;border-radius:5px;padding:11px 16px;background:#e8c47c;color:#16212b;cursor:pointer;font-weight:700;white-space:normal}.toolbar button:disabled{opacity:.5;cursor:progress}#map{flex:1;min-height:440px;background:#cbd9dc}.map-foot{background:#111f28;display:flex;justify-content:space-between;gap:14px;padding:11px 18px;font-size:12px;color:#c5d3d8}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#f8fbfa}.popup{color:#182b38}.popup strong{font-size:15px}.popup p{margin:5px 0}.popup a{color:#14577c}@media(max-width:850px){.header{padding:0 14px}.headnote{display:none}main{display:flex;flex-direction:column;height:auto}.sidebar{border-right:0;max-height:none;padding:19px}.sidebar h1{font-size:24px}.viewport{height:75vh;min-height:550px}.toolbar{padding:12px;align-items:stretch;flex-direction:column}.map-foot{flex-wrap:wrap}#map{min-height:380px}}
/* Insee census selector: citywide statistics, intentionally separate from the map. */
.timeline{border:1px solid #456075;border-radius:8px;background:#122632;margin:22px -8px 12px;padding:10px 12px}
.timeline h2{margin:5px 0 10px;font-size:14px;text-transform:none;letter-spacing:normal;color:#f2e0b6}
.timeline .eyebrow{margin-bottom:0}.timeline-intro{font-size:12px;color:#bfd0d8}
.timeline-years{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin:13px 0}
.timeline-years button{border:1px solid #5f7b86;background:#213744;color:#d4e1e8;border-radius:4px;padding:7px 1px;cursor:pointer;font:600 12px system-ui}
.timeline-years button[aria-pressed="true"]{background:#eacb83;color:#162331;border-color:#eacb83}
.timeline-years button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.timeline-numbers{display:grid;grid-template-columns:1fr 1.2fr;gap:8px;margin:16px 0 11px}
.timeline-numbers strong{font-size:24px;letter-spacing:-.04em;display:block;font-variant-numeric:tabular-nums}
.timeline-numbers small{font-size:10px;line-height:1.2;display:block;color:#aec2cb}
.timeline-track{height:9px;border-radius:9px;background:#364c58;overflow:hidden}
.timeline-track span{height:100%;display:block;width:0;background:#eacb83}
.timeline-source{font-size:12px;display:inline-block;margin-bottom:6px}

/* Vacancy rates by independently verified IRIS polygons (not buildings). */
.v0{background:#74c3aa}.v1{background:#80a8cf}.v2{background:#e5c97c}.v3{background:#dd9875}.v4{background:#b8647c}.vx{background:#8997a3}
#iris-toggle{cursor:pointer}
