/* Codes remain legible above the map's local photographic reveal. */
.project-grid{z-index:2}
.project-cell,.project-cell:hover,.project-cell:focus-visible,.project-cell.previewed,.project-cell.selected,.project-cell:active{background:transparent}
.project-cell .project-code{background:transparent;padding:0;text-shadow:0 1px 4px #000000,0 0 10px #000000;transition:color 180ms ease}
.is-discovering .project-code{background:transparent;color:#bdbdbd}
.is-discovering .project-cell.previewed .project-code{color:var(--accent);background:transparent}
.map-legend{flex:1;min-width:0;display:grid;place-items:center}
.map-legend p{padding:0 16px;line-height:1.5}
.map-readout{width:100%;height:64px;display:flex;flex-direction:column;justify-content:center;text-align:center;line-height:1.35;padding:0 16px;overflow:hidden}
.map-readout span{font-size:var(--type);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.map-readout .preview-code{display:none}
.map-readout .preview-location{color:var(--muted)}
.map-controls .map-enter{letter-spacing:0;color:var(--accent)}
.mobile-nav{grid-template-columns:repeat(4,64px)}
/* The dossier has three views of one space: photograph, sheet, information. */
.viewer-info,.viewer-sheet{display:grid;place-items:center;letter-spacing:0}
.viewer-info[aria-expanded=true],.viewer-sheet[aria-expanded=true]{color:var(--accent)}
.dossier-body{display:block;overflow:hidden}
.dossier-stage{position:absolute;inset:0}
.dossier-cover-back,.dossier-cover{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain}
.dossier-cover-back{pointer-events:none}
.dossier-info{display:none;position:absolute;inset:auto;left:var(--info-x,0);top:var(--info-y,0);width:var(--info-square,512px);height:var(--info-square,512px);grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:0;padding:0;z-index:3;overflow:visible;background:var(--bg);text-align:center}
.dossier-info>*{min-width:0;min-height:0;padding:32px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;overflow:auto;scrollbar-width:thin}
.dossier-info .project-summary{max-width:none;padding:32px;display:flex;align-items:center;justify-content:center;margin:0;text-align:center}
.dossier-info .project-summary:empty{display:none}
.dossier-facts{margin:0;line-height:1.6}
.dossier-facts dd{margin:4px 0 0}
.dossier-stamp{margin:0;grid-column:2}
.dossier-info .project-asset-note{padding:0;flex:none;overflow:visible}
.show-info .dossier-info{display:grid}
.show-info .dossier-stage,.show-sheet .dossier-stage{visibility:hidden}
.dossier-body .project-gallery{display:none;position:absolute;left:var(--sheet-x,0);top:var(--sheet-y,0);width:auto;height:auto;grid-template-columns:repeat(var(--sheet-cols,4),var(--sheet-tile,128px));grid-auto-rows:var(--sheet-tile,128px);padding:0;margin:0;overflow:visible;gap:0;z-index:2}
.show-sheet .project-gallery{display:grid}
.gallery-thumb{width:var(--sheet-tile);height:var(--sheet-tile);opacity:.65;position:relative;overflow:hidden}
.gallery-thumb img{width:100%;height:100%;max-height:none;object-fit:cover}
.gallery-thumb[aria-current=true]:after{display:none}
.gallery-number{position:absolute;left:0;bottom:0;display:grid;place-items:center;width:32px;height:32px;background:#000000d9;color:var(--text);letter-spacing:0}
.gallery-thumb[aria-current=true] .gallery-number{color:var(--accent)}
.show-info .image-navigation,.show-sheet .image-navigation{visibility:hidden}
.viewer-marker-layer{z-index:5}
/* Direct access to the corpus without interrupting the map. */
.index-dialog{position:fixed;inset:0;width:100%;height:100svh;max-width:none;max-height:none;margin:0;padding:var(--page-gutter);border:0;background:var(--bg);color:var(--text);font:inherit;letter-spacing:inherit;overflow:hidden}
.index-layout{height:100%;display:flex;flex-direction:column;min-height:0}
.index-top{display:flex;align-items:center;height:64px;flex:none}
.index-top h2{width:128px;text-align:center;font-size:var(--type);font-weight:400}
.index-count{flex:1;text-align:center;color:var(--muted);letter-spacing:0}
.index-close{width:64px;height:64px;letter-spacing:0}
.index-search{display:flex;height:64px;flex:none;align-items:center}
.index-search>span{width:128px;flex:none;text-align:center;color:var(--muted)}
.index-search input{width:100%;height:64px;min-width:0;border:0;border-radius:0;padding:0 16px;background:var(--bg);color:var(--text);font:inherit;letter-spacing:inherit;outline-offset:-4px}
.index-search input::placeholder{color:var(--muted);opacity:1}
.index-results{flex:1;min-height:0;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,128px);grid-auto-rows:128px;justify-content:center;align-content:start;scrollbar-width:thin;padding:16px 0}
.index-result{position:relative;width:128px;height:128px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px;line-height:1.4;text-align:center}
.index-result:before,.index-result:after{content:'+';position:absolute;font-size:9px;color:#555555;line-height:1;pointer-events:none}
.index-result:before{left:-3px;top:-4px}.index-result:after{right:-3px;bottom:-4px}
.index-result .index-code{color:var(--text)}
.index-result .index-name{font-size:var(--type);color:var(--muted);text-transform:uppercase;max-width:100%}
.index-result:hover .index-code,.index-result:focus-visible .index-code{color:var(--accent)}
.index-empty{padding:64px 16px;text-align:center;color:var(--muted)}
@media(max-width:767px){
 .map-toolbar{height:80px;grid-template-columns:minmax(0,1fr) 192px;grid-template-rows:48px 32px}
 body.map-home .footer{height:32px}
 body.map-home .footer .cell{width:48px;height:32px}
 .map-legend{grid-column:1 / -1;grid-row:2;min-height:0}
 .map-legend p,.map-readout{height:32px;padding:0 8px;font-size:var(--type);line-height:1.3}
 .map-readout .preview-location{display:none}
 .map-controls button{font-size:var(--type)}
 .map-controls .map-enter{font-size:10px}
 .dossier-layout .viewer-top>.cell{width:48px;height:64px;flex:none}
 .viewer-file{width:64px;flex:none}
 .viewer-file h2{font-size:var(--type);letter-spacing:0}
 .dossier-layout .sound-state{font-size:var(--type);letter-spacing:0}
 .dossier-info{grid-template-rows:128px minmax(128px,auto) 128px;height:auto;min-height:384px;max-height:100%;overflow:auto;overscroll-behavior:contain}
 .dossier-info>*{padding:16px;gap:8px;overflow:visible}
 .dossier-info .project-summary{grid-column:1 / -1;min-height:128px;padding:32px 16px}
 .dossier-stamp{grid-column:1 / -1}
 .dossier-info .project-summary:empty+.dossier-stamp{grid-row:2}
 .index-search>span{display:none}
 .index-search input{padding-left:16px}
 .index-top h2{width:96px}
 .index-result .index-name{font-size:var(--type)}
}
@media(prefers-reduced-motion:reduce){.project-code{transition:none}}
/* Portfolio details stay within the same modules as the dossier. */
.project-year{color:var(--muted);font-size:var(--type)}
.dossier-stamp{gap:8px}
.project-client,.project-credit{font-size:var(--type);line-height:1.5;text-transform:uppercase;color:var(--muted)}
.atelier-photograph{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover}
@media(max-width:767px){
 .map-viewport{width:calc(100% + 32px);margin-inline:-16px}
 .dossier-info{grid-template-rows:128px minmax(128px,auto) auto}
 .dossier-stamp{min-height:128px}
}
.atelier-layout{display:grid;grid-template-columns:repeat(2,256px);width:512px;margin:0 auto;gap:0}
.atelier-art,.atelier-copy{width:256px;height:256px;padding:16px}
.atelier-copy p+p{margin-top:16px}
.contact-address,.contact-phone{position:relative;width:256px;height:256px;padding:16px;display:grid;place-content:center;text-align:center;line-height:1.6}
.contact-phone{color:var(--muted)}
.contact-phone:hover{color:var(--text);background:#141414}
@media(max-width:767px){
 .atelier-layout{width:256px;grid-template-columns:256px}
 .contact-address,.contact-phone{width:128px;height:128px;padding:8px;font-size:var(--type);letter-spacing:0}
}
@media(max-width:767px){.dossier-info{grid-template-rows:minmax(128px,auto) minmax(128px,auto) auto}}
/* Refinement: full photographic exposure, consistent page framing, quieter reading. */
.gallery-thumb,.gallery-thumb:hover,.gallery-thumb[aria-current=true]{opacity:1}
.gallery-thumb:hover .gallery-number,.gallery-thumb:focus-visible .gallery-number{color:var(--accent)}
.viewer-caption{height:32px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;line-height:1.35;padding:0 16px}
.viewer-caption p{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--type)}
.viewer-name{text-transform:uppercase;color:var(--text)}
.viewer-place{color:var(--muted);text-transform:uppercase}
.viewer-prev span,.viewer-next span{white-space:pre-line;letter-spacing:0}
.dossier-status{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:16px;color:var(--muted);background:var(--bg);font-size:var(--type)}
.dossier-image.load-error .dossier-enlarge{display:none}
.grid-world{display:flex;flex-direction:column;min-height:100svh}
.grid-world>#main{flex:1;min-height:0}
body:not(.map-home) #main{display:grid;align-items:center}
.section-intro,.section-bottom{width:512px;margin-left:auto;margin-right:auto}
.section-intro{height:64px}
.section-bottom{margin-top:32px}
.footer{flex-shrink:0}
.index-layout{position:relative}
.index-search{width:100%}
.index-search input{flex:1;min-width:0;width:auto}
.index-clear{width:64px;height:64px;flex:none;font-size:var(--type);letter-spacing:0;color:var(--muted)}
.index-clear:hover{color:var(--text)}
.index-results{position:relative}
.index-result:before,.index-result:after{display:none}
.index-result{gap:8px}
.index-result .index-name{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.8em}
.index-place{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-transform:uppercase;letter-spacing:0;color:var(--muted)}
.index-markers{width:100%;overflow:hidden}
.no-results .index-results{height:0;min-height:0;flex:0;padding:0}
.index-empty{padding:64px 16px}
.mobile-nav button[aria-current=page]{color:var(--accent)}
@media(max-width:767px){
 .section-intro,.section-bottom{width:256px}
 .section-bottom{margin-top:16px}
 .viewer-caption{padding-inline:8px}
 .map-home .help:before{content:'';position:absolute;inset:-8px 0}
}
body:not(.map-home) #main{display:block}
body:not(.map-home) .scene{margin-top:var(--scene-offset,0px)}
.grid-world{width:var(--surface);max-width:100%}
