/* Targeted evolution of the LD38 identity: legibility and deliberate interaction. */
html{scrollbar-gutter:stable}
body.dialog-open{overflow:hidden}
button,select,summary{min-height:44px}
button:disabled{opacity:.6}
/* Keep the positioning transform of image hotspots and 3D pins intact. */
button:active:not(:disabled){translate:0 1px}
.navigation nav a{font-size:14px;letter-spacing:.025em}
.navigation nav a[aria-current=location]{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:7px}
.navigation nav a:focus-visible{outline-offset:0}
.hero{min-height:620px;height:100svh}
.hero-content{padding-top:clamp(110px,15svh,160px)}
h1{font-size:clamp(64px,7.8vw,108px);line-height:1.08}
.hero-note{font-size:12px}
.eyebrow{margin-bottom:22px}
.section{padding-block:clamp(64px,7vw,100px)}
.reveal{transition:opacity .4s,transform .4s}
.reveal.pending{transform:translateY(12px)}
.steps small,.plan-tabs button,.drawing-footer,.text-link{font-size:14px}
.drawing-footer{align-items:start;line-height:1.5}
.drawing-footer span:last-child{max-width:240px;text-align:right}
.plan-stage{position:relative;overflow:hidden}
.plan-zoom{position:absolute;right:12px;top:12px;display:flex;gap:4px;z-index:2}
.plan-zoom button{min-width:44px;min-height:44px;padding:8px 12px;background:var(--paper);border-color:#919b89;font-size:14px;box-shadow:0 2px 8px #1515150c}
.plan-zoom button[data-plan-zoom=reset]{font-size:13px}
.plan-stage svg{touch-action:pan-y}
.plan-stage[data-zoomed=true] svg{touch-action:none;cursor:grab}
.plan-stage[data-zoomed=true] svg:active{cursor:grabbing}
.plan-stroke{animation:none;stroke-dasharray:none;stroke-dashoffset:0}
#drawing-board .plan-enter .plan-stroke{stroke-dasharray:1;stroke-dashoffset:1;animation:plan-line .85s cubic-bezier(.2,.65,.3,1) forwards}
#drawing-board .plan-enter{animation:plan-layer .3s ease-out both}
@keyframes plan-line{to{stroke-dashoffset:0}}
@keyframes plan-layer{from{opacity:.3}to{opacity:1}}
.plan-room circle{stroke:#f9f9f4;stroke-width:.08}
.views-layout{grid-template-columns:minmax(250px,1fr) minmax(0,2fr);align-items:start;gap:5vw}
.view-list>button{min-height:135px;padding:20px 16px;opacity:1;transition:background-color .18s,color .18s}
.view-list>button[aria-pressed=true]{padding-left:16px;box-shadow:inset 2px 0 var(--accent);background:#dfe3d6}
.view-list b{font-size:clamp(29px,3vw,42px);font-weight:400}
.view-list .index{font-size:12px}
.view-media{position:sticky;top:100px;min-width:0}
.view-frame{position:relative;top:auto;display:block;width:100%}
.gallery-position{font-size:13px;color:var(--muted);margin:16px 0 0}
.fraction-result{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:-10px 0 24px;min-height:44px}
.fraction-result p{font-size:14px;color:var(--muted);margin:0}
.fraction-result button{font-size:14px}
.room-actions button{min-height:48px}
.rooms-copy{min-width:0}
.scene-badge{font-size:14px;max-width:calc(100% - 36px);line-height:1.4}
.interior-nav button{font-size:14px;min-height:44px}
.fraction-pin{font-size:14px;min-height:44px;padding:10px 14px}
.stage-tools label{font-size:14px}
.stage-tools select{min-height:44px}
.stage-tools button{min-height:44px}
.settings{padding:24px}
input[type=range]{min-height:34px;cursor:pointer}
.dialog-bar{position:sticky;top:0;background:var(--paper);z-index:5}
.dialog-bar button{flex-shrink:0;min-height:44px}
.dialog-bar p{font-size:16px}
.map-toolbar button{font-size:14px;min-height:44px}
.map-source,.map-source a,#local-dialog .dialog-bar .eyebrow{font-size:12px}
.map-source a{line-height:1.6}
.local-evidence{font-size:14px}
.local-evidence p{max-width:740px}
.location-preview>span{font-size:13px}
.location-preview b{font:inherit;font-size:14px}
.accordion summary span{font-size:13px}
@media(max-width:1100px){.navigation nav a{font-size:14px;padding:11px 8px}.hero-content{padding-top:120px}}
@media(max-width:800px){
 .navigation{gap:6px}.navigation .wordmark{padding:9px 11px;border-width:3px}
 .navigation>#menu{min-height:44px;padding:9px 12px;font-size:14px}
 .explore-nav{font-size:12px;letter-spacing:.015em;padding:12px 13px}
 .navigation nav{box-shadow:0 8px 24px #1515151a;display:none;grid-template-columns:1fr 1fr;gap:2px}
 .navigation nav.open{display:grid}.navigation nav a{font-size:14px;padding:13px 12px}
 .hero{min-height:600px;height:100svh}.hero-content{padding:120px 24px 48px}
 h1{font-size:clamp(54px,13.5vw,78px);margin:24px 0 32px;line-height:1.1}
 h2{font-size:clamp(38px,10vw,48px);line-height:1.1}.hero-bottom{flex-wrap:wrap;gap:6px 18px}
 .hero-note{left:24px;right:24px;bottom:18px}
 .section{padding:56px 24px}.section-heading{margin-bottom:26px}
 .steps button{grid-template-columns:28px 1fr;min-height:76px;font-size:14px}.steps small{font-size:13px}
 .drawing-player{padding:12px}.drawing-head>span{font-size:12px;letter-spacing:.025em}
 .drawing-head{gap:8px}.drawing-head button{padding:9px 12px;font-size:14px}
 .plan-tabs{gap:4px;margin:14px 0}.plan-tabs button{padding:8px 9px;font-size:14px;flex:1;white-space:nowrap}
 #drawing-board{height:430px}.drawing-footer{font-size:12px;gap:12px}
 .plan-zoom{top:8px;right:8px}.plan-zoom button{padding:8px 10px}
 .views-layout{display:flex;flex-direction:column;gap:24px}
 .view-media{position:static;order:-1;width:100%}.gallery-position{margin-top:10px}
 .view-list{width:100%;grid-template-columns:1fr 1fr;gap:8px 16px}
 .view-list>button{min-height:125px;padding:14px 12px;display:block}.view-list>button[aria-pressed=true]{padding-left:12px}
 .view-list b{font-size:27px}.view-list small{font-size:14px;line-height:1.4;display:block}
 .fraction-result{margin:0 0 20px}.rooms-layout{gap:24px}.room-actions{display:grid;grid-template-columns:1fr 1fr}
 .room-actions button{padding:11px 12px}.fraction-select select{max-width:100%}
 .viewer{height:clamp(370px,58svh,520px);min-height:370px}
 .stage-tools{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:16px 0}
 .stage-tools .segmented{grid-column:1/-1;display:flex;gap:5px}.segmented button{flex:1}
 .stage-tools>label{grid-column:1/-1;display:flex;gap:12px}.stage-tools select{max-width:none;width:100%;flex:1}
 .stage-tools>button{padding:10px 8px;font-size:14px}
 .scene-badge{left:12px;top:12px;font-size:13px;padding:8px 11px;max-width:calc(100% - 24px)}
 .interior-nav{left:12px;right:12px;bottom:12px;gap:6px}.interior-nav button{font-size:13px;padding:10px 12px;flex:1}
 .viewer[data-room]:not([data-room=""]) .back-exterior{bottom:66px;right:12px;font-size:13px}
 .settings{padding:16px}.settings-top{gap:8px}.settings-top button{font-size:14px;width:100%}
 .settings fieldset{gap:18px}.settings output{font-size:14px}.light-settings{gap:16px}
 .light-settings label{min-width:0}.light-settings select{max-width:100%}
 .lightbox-controls{flex-wrap:wrap;justify-content:flex-end}.lightbox-controls button{font-size:13px;padding:9px 10px}
 .dialog-bar{align-items:start;gap:12px}.dialog-note{font-size:13px}
 #local-dialog .dialog-bar h3{font-size:30px}.map-toolbar{gap:10px}.map-toolbar>div{gap:4px}
 .map-toolbar button{font-size:14px;padding:8px 10px}.map-surface svg{height:auto;aspect-ratio:1.625}
 .map-source{font-size:12px}.local-evidence{font-size:14px}.local-status{font-size:14px}
 .fullscreen-exit{top:12px;right:12px;font-size:13px}.viewer:fullscreen .scene-badge{top:68px}
}
@media(max-width:360px){
 .navigation{left:12px;right:12px;gap:4px}.navigation .wordmark{font-size:22px;padding:9px}
 .explore-nav{padding:12px 8px;font-size:11px}.navigation>#menu{padding:9px 10px}
 .section{padding-inline:18px}.hero-content{padding-inline:18px}
 h1{font-size:52px}.hero-note{left:18px;right:18px}
 .plan-tabs button{font-size:13px;padding:8px 7px}.drawing-footer{flex-direction:column;gap:4px}
 .drawing-footer span:last-child{text-align:left}.map-toolbar>div{flex-wrap:wrap}
}
@media(prefers-reduced-motion:reduce){
 .reveal.pending{transform:none;opacity:1}
 #drawing-board .plan-enter .plan-stroke{animation:none;stroke-dasharray:none;stroke-dashoffset:0}
 button:active:not(:disabled){translate:none}
}

.viewer{scroll-margin-top:90px}

.plan-stage svg{user-select:none;-webkit-user-select:none}

/* Motion communicates a change of state, with no shifting layout or loops. */
@media(prefers-reduced-motion:no-preference){
 dialog[open]{animation:dialog-enter .18s ease-out both}
 dialog[open]::backdrop{animation:backdrop-enter .18s ease-out both}
 .navigation nav.open{animation:menu-enter .16s ease-out both}
 .hero>img{animation-duration:1s}
 .reveal{transition:opacity .35s ease-out,transform .35s ease-out}
}
@keyframes dialog-enter{from{opacity:0;translate:0 6px}to{opacity:1;translate:0 0}}
@keyframes backdrop-enter{from{opacity:0}to{opacity:1}}
@keyframes menu-enter{from{opacity:0;translate:0 -4px}to{opacity:1;translate:0 0}}
.view-frame:disabled{opacity:1;cursor:progress}
.view-frame:disabled>span{background:var(--paper)}
.view-frame img{transition:transform .35s ease-out}
.materials-image img,.rooms-layout img{height:auto}
@media(hover:none){.view-frame:hover img,.location-preview:hover img{transform:none}}
@media(min-width:801px) and (max-height:700px){
 .hero{min-height:560px}.hero-content{padding-top:96px}
 h1{font-size:clamp(56px,10svh,76px);margin-block:20px 24px}
}
