/* Map controls stay in document order at every viewport size. */
.viewer-page {
 --viewer-left:max(var(--page-gutter),env(safe-area-inset-left,0px));
 --viewer-right:max(var(--page-gutter),env(safe-area-inset-right,0px));
 padding-bottom:env(safe-area-inset-bottom,0px);
}
.viewer-page .view-head{display:grid;grid-template-columns:minmax(190px,240px) minmax(240px,1fr) auto;align-items:end;gap:24px;padding:26px var(--viewer-right) 16px var(--viewer-left)}
.viewer-page .district-picker{display:grid;gap:7px;min-width:0;width:auto;font-size:14px;color:var(--site-muted)}
.viewer-page :is(.district-picker,.scenario-picker,.appearance-picker,.transit-picker) select{min-width:0;max-width:100%;min-height:48px;font:16px/1.4 var(--site-font-body);border:1px solid var(--site-line);border-radius:8px;background-color:#fff;color:var(--site-ink);padding:10px 42px 10px 14px}
.viewer-page .model-search{position:relative;inset:auto;width:100%;max-width:640px;margin:0;z-index:9}
.viewer-page .model-search form{background:#fff;min-height:48px;border:1px solid var(--site-line);border-radius:8px;box-shadow:none}
.viewer-page .model-search input{min-height:46px;padding:11px 0;font:16px/1.4 var(--site-font-body)}
.viewer-page .model-search-popup [role=option]:is(:hover,[aria-selected=true]){background:var(--site-accent-soft);color:var(--site-ink)}
.viewer-page .model-search-popup{position:absolute;inset:calc(100% + 8px) 0 auto;max-height:min(420px,50dvh);border:1px solid var(--site-line);border-radius:8px;box-shadow:0 10px 32px #202b371a}
.viewer-page .view-actions{display:flex;align-items:center;gap:8px;width:auto;flex-wrap:nowrap}
.viewer-page .view-actions button,.viewer-tools>summary{min-height:48px;padding:10px 14px;border:1px solid var(--site-line);border-radius:8px;background:#fff;color:var(--site-ink);font:16px/1.4 var(--site-font-body);white-space:nowrap}
.viewer-page .view-actions button:hover,.viewer-tools>summary:hover{background:var(--site-accent-soft);color:var(--site-accent)}
.viewer-tools{position:relative}
.viewer-tools>summary{list-style:none;display:flex;align-items:center;gap:12px;cursor:pointer}
.viewer-tools>summary::-webkit-details-marker{display:none}
.viewer-tools>summary::after{content:'⌄';font-size:18px;line-height:1}
.viewer-tools-content{position:absolute;right:0;top:calc(100% + 8px);z-index:12;display:grid;gap:4px;width:240px;max-width:calc(100vw - 32px);padding:8px;border:1px solid var(--site-line);border-radius:10px;background:#fff;box-shadow:0 10px 32px #202b371a}
.viewer-page .viewer-tools-content button{text-align:left;width:100%;border:0;background:#fff;color:var(--site-ink)}
.viewer-page .map-view-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 var(--viewer-right) 16px var(--viewer-left)}
.viewer-page .scenario-picker{display:flex;align-items:center;gap:12px;width:auto;font-size:14px;color:var(--site-muted)}
.viewer-page .scenario-picker select{min-height:44px}
.map-view-controls>a{font-size:15px;color:var(--site-accent);text-decoration:none;padding:10px 0}
.map-view-controls>a:hover{text-decoration:underline}
.viewer-page .scene-wrap{margin:0 var(--viewer-right) 0 var(--viewer-left);height:clamp(400px,calc(100svh - 300px),840px);min-height:0;border:1px solid var(--site-line);border-radius:12px;background:#e8f2f7;scroll-margin-top:calc(var(--site-header-height) + 16px)}
.viewer-page .viewer-stage>.selection,.viewer-page .viewer-stage>.selection:has(.project-card-content){right:calc(var(--viewer-right) + 20px);bottom:20px;max-height:calc(100% - 40px);width:360px;border:1px solid var(--site-line);border-radius:10px;background:#fff;box-shadow:0 8px 28px #202b371a;scroll-padding-block:16px}
.viewer-page .selection .icon-button{width:44px!important;height:44px!important;min-width:44px;min-height:44px}
.viewer-page .navigation-tools{position:absolute;inset:16px;z-index:4;display:block;padding:0;pointer-events:none}
.viewer-page .navigation-tools>*{pointer-events:auto}
.viewer-page .navigation-tools .navigation-modes{position:absolute;left:0;bottom:0;box-shadow:0 2px 8px #17212b12}
.viewer-page .navigation-modes{flex-direction:row-reverse;gap:0;border:1px solid var(--site-line);border-radius:8px;overflow:hidden}
.viewer-page .navigation-modes button{border:0;border-radius:0;min-height:44px;padding:10px 18px;background:#fff;color:var(--site-ink);font:15px/1.4 var(--site-font-body)}
.viewer-page .navigation-modes button[aria-pressed=true]{background:var(--site-accent-soft);color:var(--site-accent)}
.viewer-page .zoom-buttons{position:absolute;right:0;top:60px;flex-direction:column-reverse;gap:8px;margin:0}
.viewer-page .zoom-buttons button{border-radius:8px;background:#fff;border-color:var(--site-line);color:var(--site-ink)}
.viewer-page .navigation-tools .compass{position:absolute;inset:0 0 auto auto;display:grid;place-items:center;width:48px;height:48px;min-height:48px;padding:0;border:1px solid var(--site-line);border-radius:8px;background:#fff;flex:none}
.viewer-page .compass-label{position:absolute;top:4px;left:50%;transform:translateX(-50%);font:700 10px/1 var(--site-font-body);color:var(--site-ink)}
.viewer-page #northArrow,.viewer-page #northArrow svg{display:block;width:28px;height:28px}
.viewer-page #northArrow{margin-top:8px;transform-origin:50% 50%}
.viewer-options,.project-register,.viewer-page .transit-section{margin:0 var(--viewer-right) 0 var(--viewer-left);padding:0;border:0;border-top:1px solid var(--site-line);background:#fff}
.viewer-options>summary,.project-register>summary,.viewer-page .transit-section>summary{display:flex;align-items:center;gap:20px;min-height:66px;padding:16px 0;list-style:none;font:500 20px/1.3 var(--site-font-heading);cursor:pointer}
.viewer-options>summary::-webkit-details-marker,.project-register>summary::-webkit-details-marker,.transit-section>summary::-webkit-details-marker{display:none}
.viewer-options>summary::after,.project-register>summary::after,.transit-section>summary::after{content:'+';font:400 25px/1 var(--site-font-body);margin-left:auto;color:var(--site-muted)}
.viewer-options[open]>summary::after,.project-register[open]>summary::after,.transit-section[open]>summary::after{content:'−'}
.project-register>summary>span{font:14px/1.5 var(--site-font-body);color:var(--site-muted)}
.viewer-options-content{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px;padding:8px 0 30px}
.map-option-group h2{font:700 16px/1.4 var(--site-font-body);letter-spacing:0;margin:0 0 16px}
.appearance-picker{display:grid;gap:8px;font-size:14px;color:var(--site-muted)}
.viewer-page .viewer-options :is(.compare-control,.city-context-control){margin:12px 0 0;font-size:15px}
.viewer-page .viewer-options :is(.compare-control,.city-context-control)>span{display:none}
.viewer-page .viewer-options .layer-controls{display:grid;gap:6px;padding:0;font-size:15px;color:var(--site-ink)}
.viewer-page .viewer-options label:has(input[type=checkbox]){display:flex;align-items:center;gap:10px;min-height:40px;line-height:1.4}
.viewer-page .viewer-options input[type=checkbox]{margin:0;flex:none;accent-color:var(--site-accent)}
.viewer-page .viewer-options .transit-picker{display:block;padding:0;border:0}
.viewer-page .transit-picker label{display:grid;gap:8px;font-size:14px;color:var(--site-muted)}
.viewer-help{font-size:14px;line-height:1.6;color:var(--site-muted);margin:18px 0 0}
.viewer-page .research{padding:0 0 30px;border:0;background:#fff}
.viewer-page .research>p{font-size:15px;margin:0 0 12px}
.viewer-page .research-tools{margin:20px 0 12px}
.viewer-page .research-tools :is(input,select){font-size:16px;min-width:0;max-width:100%;min-height:48px;border-radius:8px}
.viewer-page .project .locate{min-height:44px}
.viewer-page .transit-copy{max-width:900px;padding:0 0 30px}
.viewer-page .transit-copy>p{margin-top:0}
.viewer-page .transit-copy .reading-note{margin:20px 0}
.viewer-page .compact-footer{margin-top:42px}
.viewer-page #loading{padding:24px;text-align:center;overflow:auto;background:#fffffff0;font-size:16px}
.viewer-page #loading button,.viewer-page #studyLoadStatus button{min-height:44px}
.viewer-page #studyLoadStatus,.viewer-page .neighbourhood-status,.viewer-page .construction-note{margin:12px var(--viewer-right) 18px var(--viewer-left);font-size:14px;line-height:1.5;color:var(--site-muted)}
.viewer-page #studyLoadStatus:empty{display:none}
.viewer-page .neighbourhood-status button,.viewer-page #studyLoadStatus button{margin-left:12px;padding:8px 14px;border:1px solid var(--site-line);border-radius:8px;background:#fff}
.viewer-page #about{width:min(630px,calc(100% - 32px));max-height:calc(var(--viewer-visual-height,100dvh) - 32px);overflow-y:auto;overscroll-behavior:contain;background:#fff}
.viewer-page #about p{font-size:16px;line-height:1.65}
.viewer-page #about #contextNote+a{font-size:15px;color:var(--site-accent)}
@media(max-width:980px){
 .viewer-page .view-head{grid-template-columns:minmax(0,1fr) auto;gap:14px 18px}
 .viewer-page .model-search{grid-row:2;grid-column:1/-1;max-width:none}
 .viewer-page .view-actions{justify-content:flex-end}
 .viewer-page .scene-wrap{height:clamp(360px,calc(100svh - 310px),760px)}
 .viewer-page .viewer-stage>.selection,.viewer-page .viewer-stage>.selection:has(.project-card-content){position:relative;inset:auto;width:auto;margin:14px var(--viewer-right) 0 var(--viewer-left);max-height:65dvh;box-shadow:none}
 .viewer-options-content{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
}
@media(max-width:600px){
 .viewer-page{--page-gutter:16px}
 .viewer-page .view-head{padding-top:18px;gap:12px}
 .viewer-page .view-actions button,.viewer-tools>summary{font-size:14px;padding:10px 12px;min-height:48px}
 .viewer-page .district-picker select{width:100%;text-overflow:ellipsis}
 .viewer-page .map-view-controls{gap:12px;margin-bottom:12px}
 .viewer-page .scenario-picker{gap:8px;font-size:14px}
 .viewer-page .scenario-picker select{max-width:210px;font-size:15px;flex:none}
 .map-view-controls>a{font-size:14px}
 .viewer-page .scene-wrap{height:clamp(320px,calc(100svh - 330px),620px);border-radius:8px}
 .viewer-page .navigation-tools{inset:12px}
 .viewer-page .navigation-modes button{padding:10px 16px}
 .viewer-options-content{grid-template-columns:1fr;gap:28px}
 .project-register>summary>span{display:none}
 .viewer-page .research-tools{display:grid;grid-template-columns:1fr}
 .viewer-page .research-tools input{flex-basis:auto}
 .viewer-page .transit-copy>p,.viewer-page .transit-copy details{font-size:15px}
 .viewer-page .map-view-controls>a{max-width:80px;text-align:right;line-height:1.4}
}
@media(max-width:370px){.viewer-page .map-view-controls{flex-wrap:wrap}.viewer-page .scenario-picker{width:100%}.viewer-page .scenario-picker select{flex:1;min-width:0;max-width:none}.viewer-page .map-view-controls>a{max-width:none;text-align:left}.viewer-page .view-head{grid-template-columns:minmax(0,1fr)}.viewer-page .view-actions{grid-row:3;justify-content:flex-start}.viewer-page .model-search{grid-row:2}.viewer-page .scenario-picker select{max-width:190px}}
@media(max-height:480px){.viewer-page header.site-header{position:relative}.viewer-page .scene-wrap{height:80svh;min-height:260px}.viewer-page .viewer-stage>.selection{position:relative;inset:auto;width:auto;margin:12px var(--viewer-right) 0 var(--viewer-left);max-height:70dvh}}
