:root{--color-brand: #ff1900;--color-brand-hover: color-mix(in srgb, var(--color-brand) 82%, black);--color-link: var(--color-brand);--color-link-hover: var(--color-brand-hover);--color-surface: #ececea;--color-border: #ddd;--color-text: #1a1a1a;--color-text-muted: #666;--color-text-subtle: #999;--color-text-label: #444;--color-text-heading-muted: #555;--focus-ring: 2px solid var(--color-brand);--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}@media(prefers-color-scheme:dark){:root{--color-link: #58a6ff;--color-link-hover: #79c0ff;--color-surface: #1e1e1e;--color-border: #3a3a3a;--color-text: #eee;--color-text-muted: #aaa;--color-text-subtle: #888;--color-text-label: #ccc;--color-text-heading-muted: #bbb}body{background:#121212;color:var(--color-text)}}html,body{height:100%;margin:0;font-family:var(--font-sans);color:var(--color-text)}#app{display:flex;height:100%;position:relative;overflow:hidden}#map{flex:1;min-width:0}#sidebar{width:clamp(280px,25vw,360px);background:var(--color-surface);border-left:1px solid var(--color-border);padding:16px;overflow-y:auto;box-sizing:border-box;transition:transform .3s ease;display:flex;flex-direction:column}#sidebar h2{margin-top:0;font-size:18px}.filter-group{margin-bottom:16px}.filter-group label{display:block;font-size:13px;margin-bottom:4px;color:var(--color-text-label)}.year-inputs{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.year-inputs input{width:80px;padding:4px}#stats{font-size:13px;color:var(--color-text-muted);margin-bottom:12px}#lastUpdated{font-size:13px;font-family:var(--font-sans);font-style:italic;color:var(--color-text-subtle);margin-bottom:6px}#details{border-top:1px solid var(--color-border);background:var(--color-surface);padding-top:12px}#details table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}#details td{padding:4px 2px;vertical-align:top;word-break:break-word}#details td.key{font-weight:700;width:40%;color:var(--color-text-label)}#details a.gen-link{display:inline-block;margin-top:10px;padding:8px 12px;background:var(--color-brand);color:#fff;text-decoration:none;border-radius:4px;font-size:13px;transition:background .2s;border:none;cursor:pointer}#details a.gen-link:hover,#details a.gen-link:active{background:var(--color-brand-hover)}.placeholder{color:var(--color-text-subtle);font-size:13px}#aboutBtn{position:fixed;top:10px;left:10px;z-index:999;padding:10px 14px;background:var(--color-brand);border:none;border-radius:6px;font-size:14px;font-weight:700;color:var(--color-text);box-shadow:0 2px 6px #0000004d;cursor:pointer;transition:background .2s}#aboutBtn:hover,#aboutBtn:active{background:var(--color-brand-hover)}#aboutModalOverlay{display:none;position:fixed;inset:0;background:#00000080;z-index:1000;animation:fadeIn .2s ease-out;overflow-y:auto;-webkit-overflow-scrolling:touch}#aboutModalOverlay:not([hidden]){display:flex;align-items:flex-start;justify-content:center;padding:16px;box-sizing:border-box}#aboutModal{position:relative;background:var(--color-surface);color:var(--color-text);max-width:500px;width:90%;margin:auto 0;padding:24px;border-radius:8px;box-shadow:0 4px 24px #0003;animation:slideUp .3s ease-out}@media(prefers-color-scheme:dark){#aboutModal{background:#2a2a2a;box-shadow:0 4px 24px #00000080}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}#aboutModalClose{position:absolute;top:12px;right:12px;background:none;border:none;font-size:24px;cursor:pointer;color:var(--color-text-muted);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s;padding:0}#aboutModalClose:hover{background:var(--color-border);color:var(--color-text)}#aboutModalClose:focus-visible{outline:var(--focus-ring);outline-offset:2px}#aboutTitle{margin-top:0;margin-bottom:20px;font-size:22px;font-weight:600;color:var(--color-text)}.modal-section{margin-bottom:24px}.modal-section:last-child{margin-bottom:0}.modal-section h3{margin-top:0;margin-bottom:12px;font-size:16px;font-weight:600;color:var(--color-text-heading-muted)}.modal-section p{margin:0 0 12px;font-size:14px;line-height:1.5;color:var(--color-text-muted)}.modal-section p:last-child{margin-bottom:0}.modal-section ul,.modal-section ol{margin:12px 0;padding-left:20px;list-style:disc}.modal-section li{margin-bottom:8px;font-size:14px;line-height:1.5;color:var(--color-text-muted)}.modal-section li:last-child{margin-bottom:0}.modal-section a{color:var(--color-link);text-decoration:none;font-weight:500;transition:all .2s}.modal-section a:hover{color:var(--color-link-hover);text-decoration:underline}.modal-section a:focus-visible{outline:var(--focus-ring);outline-offset:2px}.credits-list{display:flex;flex-direction:column;gap:16px}.credit-item{padding:12px;background:color-mix(in srgb,var(--color-surface) 70%,var(--color-border));border:1px solid var(--color-border);border-left:3px solid var(--color-brand);border-radius:6px;transition:all .2s}.credit-item:hover{background:color-mix(in srgb,var(--color-surface) 80%,var(--color-brand));border-left-color:var(--color-brand-hover);border-color:var(--color-brand)}.credit-item strong{display:block;margin-bottom:6px;color:var(--color-text);font-size:14px}.credit-item strong a{color:var(--color-link);text-decoration:none;transition:all .2s}.credit-item strong a:hover{color:var(--color-link-hover);text-decoration:underline}.credit-item strong a:focus-visible{outline:var(--focus-ring);outline-offset:2px}.credit-item p{margin:0;font-size:13px;line-height:1.4;color:var(--color-text-muted)}.tech-list{margin:12px 0 0 20px;padding:0;list-style:disc}.tech-list li{margin-bottom:8px;font-size:14px;line-height:1.5;color:var(--color-text-muted)}.tech-list li:last-child{margin-bottom:0}.tech-list strong{color:var(--color-text);font-weight:600}.count-circle{background:var(--color-brand);color:#fff;border:2px solid var(--color-surface);border-radius:50%;width:100%;height:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;box-shadow:0 0 3px #0006}.entry-block{margin-bottom:10px}.entry-block h3{font-size:13px;margin:8px 0 4px;color:var(--color-text-heading-muted)}.entry-separator{border:none;border-top:1px solid var(--color-border);margin:10px 0}.entry-links{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:.5rem}.report-error-link{font-size:.8rem;color:var(--color-text-muted, #888);text-decoration:underline;text-decoration-style:dotted;opacity:.75;transition:opacity .15s ease,color .15s ease}.report-error-link:hover,.report-error-link:focus-visible{opacity:1;color:var(--color-brand, #d81400)}#sidebarToggle{display:none;position:fixed;top:10px;right:10px;z-index:999;background:var(--color-brand);color:#fff;border:none;border-radius:6px;padding:10px 14px;font-size:14px;font-weight:700;box-shadow:0 2px 6px #0000004d;cursor:pointer;transition:background .2s}#sidebarToggle:hover,#sidebarToggle:active{background:var(--color-brand-hover)}@media(max-width:768px){#app{flex-direction:column}#map{width:100%;height:100%}#sidebar{position:fixed;top:0;right:0;bottom:0;width:85%;max-width:360px;z-index:998;transform:translate(100%);box-shadow:-2px 0 10px #0000004d}#sidebar.open{transform:translate(0)}#sidebar.open~#layerSelectorPanel{display:none}#sidebarToggle{display:block}.year-inputs input{flex:1;min-width:70px}input[type=number],input[type=text],select,button{font-size:16px;padding:8px}#details a.gen-link{width:100%;text-align:center;box-sizing:border-box;padding:12px}.count-circle{width:28px;height:28px;font-size:13px}#sidebar h2{font-size:16px}#details table{font-size:14px}#aboutModalOverlay:not([hidden]){padding:12px}#aboutModal{width:95%;padding:20px}#aboutTitle{font-size:18px}.modal-section h3{font-size:15px}.credit-item{padding:10px}#layerSelectorPanel{bottom:60px;left:10px;right:10px;transform:none;max-width:none;min-width:0;width:auto;padding:12px}.mode-btn{padding:8px 14px;font-size:12px}.year-slider{height:5px}.year-slider::-webkit-slider-thumb{width:16px;height:16px}.year-slider::-moz-range-thumb{width:16px;height:16px}.year-range-labels{font-size:9px}#app:has(#sidebar.open) #aboutBtn{display:none}}@media(max-width:380px){#sidebar{width:100%;max-width:none}.year-inputs{flex-direction:column;align-items:stretch}.year-inputs input{width:100%;box-sizing:border-box}#aboutModalOverlay:not([hidden]){padding:0}#aboutModal{width:100%;min-height:100%;padding:48px 16px 16px;border-radius:0;margin:0}#aboutModalClose{position:fixed;top:8px;right:8px;width:40px;height:40px;font-size:22px;z-index:1001;background:var(--color-surface);box-shadow:0 1px 4px #0003}#layerSelectorPanel{bottom:50px;left:8px;right:8px;padding:10px;gap:10px}.mode-btn{padding:6px 12px;font-size:11px}.year-range-labels{font-size:8px}.year-tick-hidden{display:none}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.district-label,.neighbourhood-label{text-align:center;white-space:nowrap;font-weight:750;text-shadow:-1px -1px 0 var(--color-surface),1px -1px 0 var(--color-surface),-1px 1px 0 var(--color-surface),1px 1px 0 var(--color-surface)}.district-label{font-size:.75vw;color:var(--color-text);letter-spacing:.2em;text-transform:uppercase}.neighbourhood-label{font-size:.5vw;color:var(--color-text)}.district-label>div,.neighbourhood-label>div{transform:translate(-50%,-50%)}#layerSelectorPanel{position:fixed;bottom:20px;left:10px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 2px 6px #0000004d;padding:16px;display:flex;flex-direction:column;gap:12px;z-index:999;max-width:90vw;width:min(600px,calc(100vw - 20px));box-sizing:border-box;font-size:13px;transition:opacity .2s ease,visibility .2s ease}.layer-mode-toggle{display:flex;gap:6px;justify-content:center}.mode-btn{padding:8px 16px;background:transparent;border:1px solid var(--color-border);border-radius:4px;cursor:pointer;font-size:13px;font-weight:500;color:var(--color-text-label);transition:all .2s;white-space:nowrap}.mode-btn:hover{background:color-mix(in srgb,var(--color-surface) 70%,var(--color-border));border-color:var(--color-text-muted);color:var(--color-text)}.mode-btn.active{background:var(--color-brand);color:#fff;border-color:var(--color-brand);font-weight:600}.mode-btn:focus-visible{outline:var(--focus-ring);outline-offset:2px}.year-slider-container{display:flex;flex-direction:column;gap:8px}#yearDisplay{color:var(--color-brand);font-weight:600}.year-slider{width:100%;height:6px;border-radius:3px;background:var(--color-border);outline:none;-webkit-appearance:none;appearance:none;cursor:pointer}.year-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--color-brand);cursor:pointer;border:2px solid var(--color-surface);box-shadow:0 1px 3px #0000004d;transition:all .2s}.year-slider::-webkit-slider-thumb:hover{background:var(--color-brand-hover);box-shadow:0 2px 6px #0006;transform:scale(1.1)}.year-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--color-brand);cursor:pointer;border:2px solid var(--color-surface);box-shadow:0 1px 3px #0000004d;transition:all .2s}.year-slider::-moz-range-thumb:hover{background:var(--color-brand-hover);box-shadow:0 2px 6px #0006;transform:scale(1.1)}.year-slider::-moz-range-track{background:transparent;border:none}.year-slider:focus-visible{outline:var(--focus-ring);outline-offset:2px}.year-range-labels{display:flex;justify-content:space-between;font-size:14px;color:var(--color-text-subtle);padding:0 2px}.year-tick-label{flex:1;text-align:center;white-space:nowrap;min-width:0}.year-tick-label:first-child{text-align:left}.year-tick-label:last-child{text-align:right;color:var(--color-brand);font-weight:600}.year-tick-hidden{visibility:hidden}.glossary-matches{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--color-border)}.glossary-matches h4{font-size:13px;margin:0 0 6px;color:var(--color-text-heading-muted)}.glossary-matches ul{margin:0;padding-left:18px;list-style:disc}.glossary-matches li{font-size:13px;line-height:1.4;margin-bottom:4px;color:var(--color-text-muted)}.glossary-matches li:last-child{margin-bottom:0}.glossary-matches a{color:var(--color-link);text-decoration:none;transition:all .2s}.glossary-matches a:hover{color:var(--color-link-hover);text-decoration:underline}.glossary-matches a:focus-visible{outline:var(--focus-ring);outline-offset:2px}.glossary-category{color:var(--color-text-subtle);font-size:12px}
