@font-face{font-family:HelveticaNow;src:url(../fonts/HelveticaNowDisplay-Regular.otf)}
@font-face{font-family:HelveticaNow;src:url(../fonts/HelveticaNowDisplay-Medium.otf);font-weight:500}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}button,a{font:inherit}.atlas-page{background:#111;color:#f5f3ec;font-family:HelveticaNow,Arial,sans-serif}.atlas{position:relative;width:100%;height:100%;height:100dvh;overflow:hidden;background:#101513}.atlas-map{position:absolute;inset:0}.atlas-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(5,8,7,.62) 0,rgba(5,8,7,.16) 37%,transparent 64%),linear-gradient(180deg,rgba(5,8,7,.48),transparent 23%,transparent 70%,rgba(5,8,7,.22));z-index:1}.atlas-header{position:absolute;z-index:5;top:0;left:0;width:100%;padding:28px 34px;display:grid;grid-template-columns:1fr auto 1fr;align-items:start;pointer-events:none}.atlas-header>*{pointer-events:auto}.atlas-brand{position:relative;width:100px;height:48px;color:#fff;text-decoration:none;font-size:33px;font-weight:500;line-height:48px;letter-spacing:-.06em}.atlas-brand-stem{position:absolute;left:75px;top:2px;width:2px;height:19px;background:#bd8a18}.atlas-brand-dot{position:absolute;left:71px;top:19px;width:10px;height:10px;border-radius:50%;background:#bd8a18}.atlas-heading{text-align:center;text-transform:uppercase;letter-spacing:.11em;font-size:10px;line-height:1.5;color:rgba(255,255,255,.6)}.atlas-heading strong{display:block;font-size:14px;color:#fff;font-weight:500;letter-spacing:.18em}.atlas-close{justify-self:end;width:46px;height:46px;border:1px solid rgba(255,255,255,.32);border-radius:50%;position:relative;transition:.3s}.atlas-close:hover{background:#fff}.atlas-close span,.location-close span{position:absolute;width:17px;height:1px;left:14px;top:22px;background:currentColor}.atlas-close span:first-child,.location-close span:first-child{transform:rotate(45deg)}.atlas-close span:last-child,.location-close span:last-child{transform:rotate(-45deg)}.atlas-close:hover{color:#111}.atlas-intro{position:absolute;z-index:3;left:34px;bottom:48px;max-width:480px;transition:opacity .55s,transform .55s}.atlas-intro.is-hidden{opacity:0;transform:translateY(20px);pointer-events:none}.atlas-intro p{margin:0 0 16px;text-transform:uppercase;letter-spacing:.13em;font-size:11px;color:rgba(255,255,255,.65)}.atlas-intro h1{font-size:clamp(48px,6.2vw,92px);line-height:.89;letter-spacing:-.055em;font-weight:400;margin:0}.atlas-instruction{display:flex;align-items:center;gap:12px;margin-top:29px;font-size:13px;color:rgba(255,255,255,.7)}.atlas-instruction span{width:32px;height:1px;background:#bd8a18}.location-panel{position:absolute;z-index:6;right:20px;top:20px;bottom:20px;width:min(470px,calc(100vw - 40px));padding:30px;background:rgba(239,237,229,.96);backdrop-filter:blur(18px);color:#222;transform:translateX(calc(100% + 24px));transition:transform .7s cubic-bezier(.76,0,.24,1);overflow:auto}.location-panel.is-open{transform:none}.location-panel-handle{display:none}.location-panel-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.location-kicker{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#6c6b66}.location-panel h2{font-weight:400;letter-spacing:-.04em;font-size:42px;line-height:1;margin:0}.location-close{border:1px solid #aaa99f;background:transparent;border-radius:50%;width:42px;height:42px;position:relative;flex:0 0 auto;color:#222;cursor:pointer}.location-close span{left:12px;top:20px}.location-project-count{border-top:1px solid #c8c6bd;margin-top:28px;padding:16px 0 13px;color:#74726c;font-size:12px}.location-projects{display:grid;grid-template-columns:1fr 1fr;gap:8px}.location-card{position:relative;aspect-ratio:1;display:block;overflow:hidden;background:#222;color:#fff}.location-card-photo{width:100%;height:100%;display:block;object-fit:cover;transition:transform .8s cubic-bezier(.2,.75,.2,1)}.location-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.08),rgba(0,0,0,.17) 48%,rgba(0,0,0,.58));transition:background .35s}.location-card:hover .location-card-photo{transform:scale(1.07)}.location-card:hover::after{background:rgba(0,0,0,.28)}.location-card-logo-wrap{position:absolute;z-index:2;inset:15px 15px auto auto;width:62px;height:40px;display:flex;align-items:center;justify-content:flex-end}.location-card-logo{max-width:100%;max-height:100%;object-fit:contain;filter:brightness(0) invert(1);mix-blend-mode:screen}.location-card-name{position:absolute;z-index:2;left:14px;right:14px;bottom:13px;font-size:14px;line-height:1.15}.location-map-link{display:flex;justify-content:space-between;margin-top:22px;padding:16px 0 5px;border-top:1px solid #c8c6bd;color:#222;text-decoration:none;font-size:13px}.atlas-status{position:absolute;z-index:4;left:50%;bottom:24px;transform:translateX(-50%);font-size:11px;letter-spacing:.1em;text-transform:uppercase;transition:opacity .4s}.atlas-status.is-ready{opacity:0}.maplibregl-ctrl-attrib{background:rgba(5,8,7,.65)!important;color:#aaa!important;font:9px HelveticaNow!important}.maplibregl-ctrl-attrib a{color:#ccc!important}.maplibregl-ctrl-logo,.maplibregl-ctrl-bottom-left{opacity:.65}.quill-marker{width:30px;height:30px;border-radius:50%;background:rgba(11,14,13,.72);border:1px solid rgba(255,255,255,.75);box-shadow:0 0 0 0 rgba(201,154,43,.4);display:grid;place-items:center;cursor:pointer;transition:transform .3s,background .3s,border-color .3s}.quill-marker::after{content:"";width:5px;height:5px;border-radius:50%;background:#fff}.quill-marker:hover,.quill-marker.is-active{transform:scale(1.22);background:#c09429;border-color:#c09429;box-shadow:0 0 0 7px rgba(192,148,41,.18)}
@media(max-width:700px){.atlas-header{padding:18px 18px}.atlas-brand{font-size:27px}.atlas-heading{display:none}.atlas-close{width:40px;height:40px}.atlas-close span{left:11px;top:19px}.atlas-intro{left:20px;right:20px;bottom:35px}.atlas-intro h1{font-size:52px}.atlas-shade{background:linear-gradient(180deg,rgba(5,8,7,.42),transparent 27%,transparent 58%,rgba(5,8,7,.52))}.location-panel{left:0;right:0;top:auto;bottom:0;width:100%;max-height:68dvh;border-radius:18px 18px 0 0;padding:14px 18px 26px;transform:translateY(calc(100% + 10px))}.location-panel-handle{display:block;width:36px;height:3px;border-radius:3px;background:#aaa99f;margin:0 auto 20px}.location-panel h2{font-size:32px}.location-projects{gap:6px}.location-card-logo-wrap{width:52px;height:32px}.atlas-intro.is-hidden{transform:translateY(15px)}}
@media(prefers-reduced-motion:reduce){.location-panel,.atlas-intro,.location-card-photo{transition-duration:.01ms!important}}

/* Exact Quill SVG and regional portfolio navigation. */
.atlas-brand{width:74px;height:42px;font-size:0;line-height:0;letter-spacing:0}
.atlas-brand svg{display:block;width:100%;height:100%}
.atlas-logo-wordmark{fill:#fff}.atlas-logo-bulb{fill:#d4a537}
.atlas-brand-stem,.atlas-brand-dot{display:none}
.atlas-header::before{content:"";position:absolute;z-index:0;left:0;right:0;top:0;height:155px;pointer-events:none;background:linear-gradient(to bottom,rgba(8,14,12,1) 0%,rgba(8,14,12,.98) 38%,rgba(8,14,12,.72) 66%,rgba(8,14,12,0) 100%)}
.atlas-header>*{position:relative;z-index:1}
.atlas-heading{display:flex;align-items:center;justify-content:center;gap:clamp(15px,2vw,30px);padding-top:9px;text-align:initial}
.region-link{appearance:none;border:0;padding:0 0 7px;background:none;color:rgba(255,255,255,.48);text-transform:uppercase;letter-spacing:.13em;font-size:14px;font-weight:500;line-height:1;cursor:pointer;position:relative;transition:color .35s}
.region-link::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:#d4a537;transform:scaleX(0);transform-origin:right;transition:transform .4s}
.region-link:hover,.region-link.is-active{color:#fff}.region-link.is-active::after{transform:scaleX(1);transform-origin:left}
.atlas-close{color:#fff}.atlas-close:hover{color:#111}
.atlas-status{appearance:none;color:#fff;border:0;background:transparent;white-space:nowrap}
.atlas-status.is-error{opacity:1;text-decoration:underline;text-underline-offset:4px;cursor:pointer}
@media(max-width:700px){
 .atlas-header{grid-template-columns:1fr 1fr}.atlas-brand{width:64px}
 .atlas-header::before{height:135px}
 .atlas-heading{display:flex;position:absolute;top:68px;left:18px;right:18px;justify-content:flex-start;gap:18px;overflow-x:auto;padding:8px 0 6px;scrollbar-width:none}
 .atlas-heading::-webkit-scrollbar{display:none}.region-link{font-size:10px;flex:0 0 auto}
}

/* MapLibre writes a new transform every frame to keep an HTML marker fixed
   to its coordinate. Never transition that property: doing so makes the pin
   interpolate behind the moving map and visually “catch up” after zooming. */
.quill-marker{transition-property:background-color,border-color,box-shadow!important}
.quill-marker::after{transition:transform .3s}
.quill-marker:hover::after,.quill-marker.is-active::after{transform:scale(1.35)}

/* Ground-anchored location pin. MapLibre owns the outer button's inline
   transform; every 3D/hover animation lives on descendants only. */
.quill-marker{
 width:30px;height:56px;padding:0;border:0;border-radius:0;background:transparent;
 box-shadow:none;overflow:visible;display:block;cursor:pointer;appearance:none;
 transition:none!important;transform-origin:50% 100%;z-index:1;isolation:isolate;
}
.quill-marker:hover,.quill-marker.is-active{background:transparent;border-color:transparent;box-shadow:none}
.quill-marker::after{display:none}
.quill-pin{position:absolute;inset:0;display:block;overflow:visible;pointer-events:none;animation:pin-arrive .75s cubic-bezier(.2,.8,.2,1) both}
.quill-pin-stem{position:absolute;left:14px;bottom:0;width:2px;height:34px;background:linear-gradient(to top,rgba(212,165,55,.25),#d4a537 65%,#f0d382);box-shadow:0 0 9px rgba(212,165,55,.3);transform-origin:50% 100%;transition:height .45s cubic-bezier(.2,.8,.2,1)}
.quill-pin-head{position:absolute;left:5px;bottom:29px;width:20px;height:20px;border:1px solid rgba(255,255,255,.9);border-radius:50%;background:rgba(10,14,12,.82);box-shadow:0 3px 12px rgba(0,0,0,.35),0 0 0 0 rgba(212,165,55,.18);display:grid;place-items:center;transition:background-color .35s,border-color .35s,box-shadow .35s,transform .35s}
.quill-pin-head>span{width:5px;height:5px;background:#fff;border-radius:50%;transition:transform .35s}
.quill-pin-ribbon{position:absolute;left:50%;bottom:-27px;width:112px;height:112px;opacity:0;transform:translateX(-50%) scale(.58);transform-origin:50% 50%;transition:opacity .35s,transform .55s cubic-bezier(.2,.8,.2,1);filter:drop-shadow(0 3px 5px rgba(0,0,0,.5))}
.quill-pin-ribbon svg{display:block;width:100%;height:100%;overflow:visible;animation:location-ribbon-spin 11s linear infinite;animation-play-state:paused}
.quill-ribbon-band{fill:#102d32;fill-opacity:.97;stroke:rgba(255,255,255,.08);stroke-width:.7px}
.quill-pin-ribbon text{fill:#fff;font-family:HelveticaNow,Arial,sans-serif;font-size:7.5px;font-weight:500;letter-spacing:1.15px;text-transform:uppercase;paint-order:stroke;stroke:rgba(8,12,10,.82);stroke-width:1.5px;stroke-linejoin:round}
.quill-marker:hover,.quill-marker.is-active{z-index:5!important}
.quill-marker:hover .quill-pin-ribbon,.quill-marker.is-active .quill-pin-ribbon{opacity:1;transform:translateX(-50%) scale(1.65)}
.quill-marker:hover .quill-pin-ribbon svg,.quill-marker.is-active .quill-pin-ribbon svg{animation-play-state:running}
.quill-marker:hover .quill-pin-head,.quill-marker.is-active .quill-pin-head{background:#c09429;border-color:#e3c475;box-shadow:0 3px 12px rgba(0,0,0,.3),0 0 0 7px rgba(192,148,41,.14);transform:translateY(-2px)}
.quill-marker:hover .quill-pin-head>span,.quill-marker.is-active .quill-pin-head>span{transform:scale(1.3)}
.quill-marker:hover .quill-pin-stem,.quill-marker.is-active .quill-pin-stem{height:36px}
@keyframes location-ribbon-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes pin-arrive{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.quill-pin{animation:none}.quill-pin-ribbon svg{animation:none}}

/* White drop-shaped location model. The offset rear face and perspective
   shading give the compact marker depth while its parent stays camera-facing. */
.quill-pin-stem,.quill-pin-head{display:none}
.quill-pin-model{position:absolute;left:50%;bottom:0;width:34px;height:44px;transform:translateX(-50%) perspective(140px) rotateY(-7deg);transform-origin:50% 100%;filter:drop-shadow(0 5px 5px rgba(0,0,0,.38));transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.quill-pin-model svg{display:block;width:100%;height:100%;overflow:visible}
.quill-pin-depth{fill:#aaa9a4;transform:translate(3px,2px)}
.quill-pin-face{stroke:rgba(255,255,255,.8);stroke-width:.8px}
.quill-marker:hover .quill-pin-model,.quill-marker.is-active .quill-pin-model{transform:translateX(-50%) translateY(-5px) perspective(140px) rotateY(-7deg) scale(1.4)}
@media(max-width:700px){.quill-marker:hover .quill-pin-ribbon,.quill-marker.is-active .quill-pin-ribbon{transform:translateX(-50%) scale(1.4)}.quill-marker:hover .quill-pin-model,.quill-marker.is-active .quill-pin-model{transform:translateX(-50%) translateY(-4px) perspective(140px) rotateY(-7deg) scale(1.25)}}

/* Off-screen location groups: fixed to the viewport edge and aimed toward
   locations that remain inside the selected region but outside the camera. */
.map-directions{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden}
.map-direction{position:absolute;width:48px;height:32px;padding:0;border:0;background:transparent;color:#182226;pointer-events:auto;cursor:pointer;transform:translate(-50%,-50%);transition:opacity .25s}
.map-direction-pill{position:absolute;left:0;top:3.5px;width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#d9dbdc;color:#111;font-size:12px;font-weight:500;box-shadow:0 4px 15px rgba(0,0,0,.22)}
.map-direction-arrow{position:absolute;left:29px;top:7px;width:0;height:0;border-top:9px solid transparent;border-bottom:9px solid transparent;border-left:16px solid #d9dbdc;transform-origin:-16.5px 9px}
.map-direction:hover .map-direction-pill{background:#fff}.map-direction:hover .map-direction-arrow{border-left-color:#fff}
@media(max-width:700px){.map-direction{width:46px;height:29px}.map-direction-pill{top:2px;width:25px;height:25px;font-size:12px}.map-direction-arrow{left:29px;top:6px;border-top-width:8px;border-bottom-width:8px;border-left-width:14px;transform-origin:-16.5px 8.5px}}

/* Location drawer shares the main site's sidebar system exactly. */
@font-face{font-family:"Helvetica Now";src:url(../fonts/HelveticaNowDisplay-Regular.otf) format("opentype");font-weight:400;font-style:normal}
@font-face{font-family:"Helvetica Now";src:url(../fonts/HelveticaNowDisplay-Medium.otf) format("opentype");font-weight:500;font-style:normal}
.atlas-page{font-family:"Helvetica Now",Arial,sans-serif}
.atlas-header{z-index:7}
.location-overlay{position:absolute;inset:0;z-index:6;width:100%;height:100%;padding:0;border:0;background:rgba(0,0,0,.33);opacity:0;pointer-events:none;transition:opacity .8s cubic-bezier(.23,1,.32,1);cursor:pointer}
.location-overlay.is-open{opacity:1;pointer-events:auto}
.location-panel{z-index:8;inset:0 0 0 auto;width:min(30rem,100vw);min-width:30rem;height:100dvh;padding:3rem;background:#fff;backdrop-filter:none;color:#2e2e2e;transform:translateX(100%);transition:transform .8s cubic-bezier(.23,1,.32,1);border-radius:0}
.location-panel.is-open{transform:translateX(0)}
.location-panel h2{font-family:"Helvetica Now",Arial,sans-serif;font-size:2rem;font-weight:400;line-height:1.2;letter-spacing:0;color:#2e2e2e}
.location-project-count{color:rgba(23,23,23,.55);border-color:rgba(23,23,23,.12)}
.location-close{color:#2e2e2e;border-color:rgba(23,23,23,.2)}
@media(max-width:700px){.location-panel{inset:0 0 0 auto;width:100%;min-width:0;max-height:none;height:100dvh;padding:4rem 1rem 1rem;transform:translateX(100%);border-radius:0}.location-panel.is-open{transform:translateX(0)}.location-panel-handle{display:none}}
.maplibregl-canvas.is-region-locked{cursor:default}

/* Stable drawer-card compositing: keep photo, overlay and content in fixed
   layers so image scaling cannot toggle logo blending during hover. */
.location-card{isolation:isolate;contain:paint;transform:translateZ(0)}
.location-card-photo{position:relative;z-index:0;backface-visibility:hidden;transform:translateZ(0);will-change:transform}
.location-card:hover .location-card-photo{transform:translateZ(0) scale(1.07)}
.location-card::after{z-index:1;background:linear-gradient(180deg,rgba(0,0,0,.1),rgba(0,0,0,.2) 48%,rgba(0,0,0,.6));opacity:1;transition:opacity .35s cubic-bezier(.23,1,.32,1)}
.location-card:hover::after{background:linear-gradient(180deg,rgba(0,0,0,.1),rgba(0,0,0,.2) 48%,rgba(0,0,0,.6));opacity:.88}
.location-card-logo-wrap,.location-card-name{z-index:2}
.location-card-logo{mix-blend-mode:normal;backface-visibility:hidden;filter:brightness(0) invert(1) drop-shadow(0 1px 2px rgba(0,0,0,.18));opacity:.96}
.location-card-logo.logo-mode-transparent{filter:brightness(0) invert(1) drop-shadow(0 1px 2px rgba(0,0,0,.18));mix-blend-mode:normal}
.location-card-logo.logo-mode-light-canvas{filter:grayscale(1) invert(1);mix-blend-mode:screen}
.location-card-logo.logo-mode-dark-canvas{filter:none;mix-blend-mode:screen}
.location-card-logo.logo-mode-original{filter:none;mix-blend-mode:normal;border-radius:2px}
.location-card-logo-wrap{display:none}

/* Mobile keeps the map-specific bottom-sheet interaction; only its visual
   tokens and backdrop are shared with the main site's sidebar. */
@media(max-width:700px){
 .location-panel{inset:auto 0 0 0;width:100%;min-width:0;height:auto;max-height:72dvh;padding:14px 18px 26px;border-radius:18px 18px 0 0;transform:translateY(calc(100% + 10px))}
 .location-panel.is-open{transform:translateY(0)}
 .location-panel-handle{display:block;width:36px;height:3px;border-radius:3px;background:rgba(23,23,23,.3);margin:0 auto 20px}
}

/* Editorial project tiles: photography remains unobstructed and the brand
   caption belongs to the drawer surface beneath each image. */
.location-projects{column-gap:10px;row-gap:18px}
.location-card{display:grid;grid-template-rows:auto auto;aspect-ratio:auto;overflow:visible;background:transparent;color:#2e2e2e;text-decoration:none;contain:none;transform:none}
.location-card::after{display:none}
.location-card-photo{position:relative;width:100%;height:auto;aspect-ratio:1;object-fit:cover;transform:none;transition:filter .45s cubic-bezier(.23,1,.32,1),opacity .45s cubic-bezier(.23,1,.32,1);will-change:auto}
.location-card:hover .location-card-photo{transform:none;filter:brightness(.86);opacity:.96}
.location-card-name{position:relative;left:auto;right:auto;bottom:auto;display:block;width:max-content;max-width:100%;padding:10px 0 3px;color:#2e2e2e;font-size:14px;font-weight:400;line-height:1.2;z-index:auto}
.location-card-name::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:#2e2e2e;transform:scaleX(0);transform-origin:right;transition:transform .4s cubic-bezier(.23,1,.32,1)}
.location-card:hover .location-card-name::after{transform:scaleX(1);transform-origin:left}
.location-card.is-logo-fallback .location-card-photo{object-fit:contain;padding:14%;background:var(--fallback-fill)}
.location-card.is-logo-fallback.is-loaded:hover .location-card-photo{transform:scale(1);filter:none;opacity:1}

/* Portfolio brand wall, adapted from the Quill presentation section. */
.portfolio-directory-panel{position:absolute;z-index:20;inset:0;padding:52px 34px;background:#0c0c0c;color:#f5f5f3;overflow:auto;transform:translateY(100%);visibility:hidden;pointer-events:none;transition:transform .8s cubic-bezier(.23,1,.32,1),visibility 0s .8s}
.portfolio-directory-panel.is-open{transform:translateY(0);visibility:visible;pointer-events:auto;transition:transform .8s cubic-bezier(.23,1,.32,1),visibility 0s}
.portfolio-directory-head{display:flex;align-items:flex-start;justify-content:space-between;gap:30px;margin-bottom:36px}
.portfolio-directory-head p{margin:0 0 14px;color:#d4a537;font-size:10px;font-weight:500;letter-spacing:.3em;text-transform:uppercase}
.portfolio-directory-head h2{margin:0 0 12px;font-size:clamp(46px,6.5vw,96px);font-weight:400;line-height:.92;letter-spacing:-.04em}
.portfolio-directory-head>div>span{color:rgba(245,245,243,.55);font-size:12px;letter-spacing:.04em}
.portfolio-directory-close{position:relative;flex:0 0 auto;width:46px;height:46px;border:1px solid rgba(255,255,255,.32);border-radius:50%;color:#fff;cursor:pointer;transition:background-color .3s,color .3s}
.portfolio-directory-close:hover{background:#fff;color:#171717}
.portfolio-directory-close span{position:absolute;left:14px;top:22px;width:17px;height:1px;background:currentColor}.portfolio-directory-close span:first-child{transform:rotate(45deg)}.portfolio-directory-close span:last-child{transform:rotate(-45deg)}
.portfolio-directory-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;padding-top:1px;background:rgba(255,255,255,.14)}
.portfolio-directory-brand{min-height:112px;padding:24px 18px;display:flex;align-items:center;justify-content:center;background:#0c0c0c;opacity:.52;transition:opacity .35s,background-color .35s}
.portfolio-directory-brand:hover{opacity:1;background:#111}
.portfolio-directory-brand img{display:block;width:auto;height:auto;max-width:82%;max-height:52px;object-fit:contain;backface-visibility:hidden}
.portfolio-directory-brand>span{display:none;color:rgba(255,255,255,.86);font-size:13px;text-align:center}
.portfolio-directory-brand.logo-mode-transparent img{filter:brightness(0) invert(1)}
.portfolio-directory-brand.logo-mode-light-canvas img{filter:grayscale(1) invert(1);mix-blend-mode:screen}
.portfolio-directory-brand.logo-mode-dark-canvas img{filter:none;mix-blend-mode:screen}
.portfolio-directory-brand.logo-mode-original img{filter:none;mix-blend-mode:normal;max-height:62px;border-radius:2px}
.portfolio-directory-brand.is-logo-error img{display:none}.portfolio-directory-brand.is-logo-error>span{display:block}
@media(max-width:1000px){.portfolio-directory-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:700px){.portfolio-directory-panel{padding:30px 18px}.portfolio-directory-head{margin-bottom:28px}.portfolio-directory-head h2{font-size:clamp(40px,13vw,64px)}.portfolio-directory-grid{grid-template-columns:repeat(3,1fr)}.portfolio-directory-brand{min-height:78px;padding:17px 10px}.portfolio-directory-brand img{max-height:32px}.portfolio-directory-brand.logo-mode-original img{max-height:38px}}
@media(max-width:400px){.portfolio-directory-grid{grid-template-columns:repeat(2,1fr)}}

/* Audited brand canvases and visible-artwork sizing. Matching the cell to
   each source canvas lets embedded whitespace crop harmlessly at the edges
   while the logo artwork keeps its natural aspect ratio. */
.portfolio-directory-brand{position:relative;overflow:hidden;opacity:1;--logo-source-width:82%}
.portfolio-directory-brand.brand-cell-white{background:#fff}.portfolio-directory-brand.brand-cell-white:hover{background:#f5f5f3}
.portfolio-directory-brand.brand-cell-black{background:#000}.portfolio-directory-brand.brand-cell-black:hover{background:#080808}
.portfolio-directory-brand.brand-cell-red{background:#c10230}.portfolio-directory-brand.brand-cell-red:hover{background:#cd0638}
.portfolio-directory-brand img,.portfolio-directory-brand.logo-mode-transparent img,.portfolio-directory-brand.logo-mode-light-canvas img,.portfolio-directory-brand.logo-mode-dark-canvas img,.portfolio-directory-brand.logo-mode-original img{flex:0 0 auto;width:var(--logo-source-width);height:auto;max-width:none;max-height:none;filter:none;mix-blend-mode:normal;border-radius:0;transform:none;opacity:.58;transition:opacity .35s,transform .35s}
.portfolio-directory-brand:hover img{opacity:1;transform:scale(1.025)}
.portfolio-directory-brand.brand-425degree{--logo-source-width:72%}
.portfolio-directory-brand.brand-425degree img{max-width:480px}
.portfolio-directory-brand.brand-bose{--logo-source-width:72%}
.portfolio-directory-brand.brand-brunello-cucinelli{--logo-source-width:82%}
.portfolio-directory-brand.brand-charles-keith{--logo-source-width:94%}
.portfolio-directory-brand.brand-crocs{--logo-source-width:84%}
.portfolio-directory-brand.brand-crocs img{max-width:450px;opacity:1}
.portfolio-directory-brand.brand-dickies{--logo-source-width:68%}
.portfolio-directory-brand.brand-dickies img{max-width:500px}
.portfolio-directory-brand.brand-gong-cha{--logo-source-width:92%}
.portfolio-directory-brand.brand-gong-cha img{width:auto;height:88%}
.portfolio-directory-brand.brand-hm{--logo-source-width:62%}
.portfolio-directory-brand.brand-hoka{--logo-source-width:88%}
.portfolio-directory-brand.brand-hoka img{max-width:450px}
.portfolio-directory-brand.brand-hublot{--logo-source-width:72%}
.portfolio-directory-brand.brand-lets-relax{--logo-source-width:86%}
.portfolio-directory-brand.brand-lets-relax img{max-width:360px}
.portfolio-directory-brand.brand-moft{--logo-source-width:90%}
.portfolio-directory-brand.brand-moft img{max-width:450px}
.portfolio-directory-brand.brand-on{--logo-source-width:96%}
.portfolio-directory-brand.brand-on img{width:auto;height:66%}
.portfolio-directory-brand.brand-paul-smith{--logo-source-width:88%}
.portfolio-directory-brand.brand-paul-smith img{max-width:350px}
.portfolio-directory-brand.brand-pmt-the-hour-glass{--logo-source-width:88%}
.portfolio-directory-brand.brand-pmt-the-hour-glass img{max-width:550px;opacity:1}
.portfolio-directory-brand.brand-salomon{--logo-source-width:92%}
.portfolio-directory-brand.brand-subdued{--logo-source-width:90%}
.portfolio-directory-brand.brand-subdued img{max-width:210px}
.portfolio-directory-brand.brand-subdued:hover{background:#000}
.portfolio-directory-brand.brand-the-north-face{--logo-source-width:68%}
.portfolio-directory-brand.brand-tomtoc{--logo-source-width:84%}
.portfolio-directory-brand.brand-tomtoc img{max-width:450px;opacity:1}
.portfolio-directory-brand.brand-bose img,.portfolio-directory-brand.brand-the-north-face img{opacity:1}
.portfolio-directory-brand.brand-crocs:hover,.portfolio-directory-brand.brand-tomtoc:hover,.portfolio-directory-brand.brand-pmt-the-hour-glass:hover{background:#fff}

/* Embedded portfolio mode: the map lives above the homepage instead of
   owning the document. These late overrides neutralize the standalone
   page's global scroll lock while preserving map.html as a fallback. */
html,body{overflow:visible}
body.atlas-page{overflow:hidden}
body.map-layer-open{overflow:hidden}
.map-shell{position:fixed;inset:0;z-index:10000;background:#101513;visibility:hidden;opacity:0;transform:translateY(2.5%);pointer-events:none;transition:opacity .5s ease,transform .7s cubic-bezier(.76,0,.24,1),visibility 0s linear .7s}
.map-shell.is-open{visibility:visible;opacity:1;transform:none;pointer-events:auto;transition-delay:0s}
.map-shell .atlas{height:100dvh}
.map-shell .atlas-brand,.map-shell .atlas-close{border:0;background:transparent;cursor:pointer}
.map-shell .atlas-close{border:1px solid rgba(255,255,255,.32)}
.map-shell .atlas-close:hover{background:#fff;color:#111}
@media(prefers-reduced-motion:reduce){.map-shell{transition-duration:.01ms}}
@media(max-width:700px){.portfolio-directory-brand img{transform:scale(.92)}.portfolio-directory-brand:hover img{transform:scale(.94)}}

/* Featured-project rhythm for the brand wall: two large tiles followed by
   three smaller tiles, repeating through the complete brand set. */
.portfolio-directory-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:4px;padding:0;background:transparent}
.portfolio-directory-brand{min-height:0;padding:clamp(24px,3.2vw,52px);transition:background-color .45s cubic-bezier(.23,1,.32,1)}
.portfolio-directory-brand.brand-tile-big{grid-column:span 6;aspect-ratio:16/9}
.portfolio-directory-brand.brand-tile-small{grid-column:span 4;aspect-ratio:4/3}
.portfolio-directory-brand-fallback{display:none!important}.portfolio-directory-brand.is-logo-error .portfolio-directory-brand-fallback{display:block!important}
@media(max-width:700px){.portfolio-directory-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:4px}.portfolio-directory-brand.brand-tile-big,.portfolio-directory-brand.brand-tile-small{grid-column:span 6;aspect-ratio:1}.portfolio-directory-brand{padding:18px 12px}}

/* Drawer images reveal when their decoded pixels are ready, avoiding a hard
   pop while preserving an immediate card placeholder. */
.location-card-photo{opacity:0;transform:scale(1.025);transition:opacity .42s ease,transform .8s cubic-bezier(.2,.75,.2,1)}
.location-card.is-loaded .location-card-photo{opacity:1;transform:scale(1)}
.location-card.is-loaded:hover .location-card-photo{transform:scale(1.07)}
@media(prefers-reduced-motion:reduce){.location-card-photo{transition-duration:.01ms}}

/* Cached and uncached logos share the same entrance on every wall opening. */
.portfolio-directory-brand:not(.is-revealed) img{opacity:0!important;transform:translateY(10px) scale(.97)!important}
.portfolio-directory-brand img{transition:opacity .45s ease,transform .65s cubic-bezier(.23,1,.32,1)}
@media(prefers-reduced-motion:reduce){.portfolio-directory-brand:not(.is-revealed) img{transform:none!important}.portfolio-directory-brand img{transition-duration:.01ms}}


/* Independent brand portfolio: opening it creates no map or WebGL context. */
body.portfolio-directory-layer-open{overflow:hidden}
.portfolio-directory-shell{position:fixed;inset:0;z-index:10010;visibility:hidden;pointer-events:none;overflow:hidden;background:#0c0c0c;transform:translateY(100%);transition:transform .9s cubic-bezier(.76,0,.24,1),visibility 0s .9s}
.portfolio-directory-shell.is-open{visibility:visible;pointer-events:auto;transform:none;transition:transform .9s cubic-bezier(.76,0,.24,1),visibility 0s}
.portfolio-directory-shell .portfolio-directory-panel{position:relative;inset:auto;width:100%;height:100dvh;padding:52px 34px;background:#0c0c0c;overflow:auto;visibility:visible;pointer-events:auto;transform:none;transition:none;will-change:auto}
.portfolio-directory-brand{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:0;aspect-ratio:auto!important;min-height:clamp(190px,27vw,520px);transition:min-height .65s cubic-bezier(.23,1,.32,1),background-color .45s cubic-bezier(.23,1,.32,1)}
.portfolio-directory-brand-toggle{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:inherit;flex:1 0 auto;padding:clamp(24px,3.2vw,52px);border:0;background:transparent;color:inherit;cursor:pointer;overflow:hidden}
.portfolio-directory-brand-toggle>img{pointer-events:none}
.portfolio-directory-locations{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-height:0;opacity:0;overflow:hidden;padding:0 clamp(18px,2.2vw,34px);transform:translateY(14px);transition:max-height .7s cubic-bezier(.23,1,.32,1),opacity .35s ease,transform .55s cubic-bezier(.23,1,.32,1),padding .55s cubic-bezier(.23,1,.32,1)}
.portfolio-directory-brand.is-expanded .portfolio-directory-locations{max-height:520px;opacity:1;padding-top:20px;padding-bottom:24px;transform:none}
.portfolio-directory-location{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:46px;padding:10px 2px;border:0;border-top:1px solid currentColor;background:transparent;color:inherit;text-align:left;cursor:pointer;font-size:13px;line-height:1.2;opacity:.72;transition:opacity .3s,padding .35s cubic-bezier(.23,1,.32,1),background-color .35s}
.portfolio-directory-location:hover,.portfolio-directory-location:focus-visible,.portfolio-directory-location.is-featured-target{opacity:1;padding-left:10px;padding-right:10px}.portfolio-directory-location.is-featured-target{animation:portfolio-directory-target 1.15s ease .7s 2}
.brand-cell-white .portfolio-directory-location{border-color:rgba(46,46,46,.24)}.brand-cell-black .portfolio-directory-location,.brand-cell-red .portfolio-directory-location{border-color:rgba(255,255,255,.28)}
@keyframes portfolio-directory-target{50%{background:rgba(212,165,55,.24)}}
@media(max-width:700px){.portfolio-directory-shell .portfolio-directory-panel{padding:30px 18px}.portfolio-directory-brand{min-height:calc(50vw - 20px)}.portfolio-directory-brand-toggle{padding:18px 12px}.portfolio-directory-brand.is-expanded{grid-column:span 12;min-height:calc(100vw - 36px)}.portfolio-directory-locations{grid-template-columns:1fr}.portfolio-directory-brand.is-expanded .portfolio-directory-locations{padding:14px 18px 20px}}
@media(prefers-reduced-motion:reduce){.portfolio-directory-shell,.portfolio-directory-brand,.portfolio-directory-locations{transition-duration:.01ms!important}.portfolio-directory-location.is-featured-target{animation:none}}

/* Reference /projects header rhythm and fixed-size reveal tiles. */
.portfolio-directory-shell,.portfolio-directory-shell .portfolio-directory-panel{background:#f7f7f7;color:#2e2e2e}
.portfolio-directory-shell .portfolio-directory-panel{padding:8rem .25rem .25rem}
.portfolio-directory-head{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:0;margin:0 0 2rem;text-align:center}
.portfolio-directory-head h2{margin:0;font-family:HelveticaNow,Arial,sans-serif;font-size:4rem;font-weight:400;line-height:1.1;letter-spacing:-.09375rem}
.portfolio-directory-close{position:fixed;z-index:30;top:28px;right:34px;border-color:rgba(46,46,46,.32);background:#f7f7f7;color:#2e2e2e}
.portfolio-directory-close:hover{background:#2e2e2e;color:#fff}
.portfolio-directory-filters{display:flex;align-items:center;justify-content:center;gap:.25rem;margin-top:5rem}
.portfolio-directory-filter{position:relative;display:flex;align-items:center;justify-content:flex-start;overflow:hidden;padding:.75rem 1rem;border:0;background:#fff;color:#121212;font-size:.875rem;font-weight:400;line-height:1.4;letter-spacing:.015625em;cursor:pointer;text-decoration:none}
.portfolio-directory-filter-text{position:relative;z-index:2;color:#fff;mix-blend-mode:difference}
.portfolio-directory-filter-bg{position:absolute;z-index:1;inset:0;width:100%;height:100%;background:#000;transform:translate3d(0,100%,0);transition:transform .35s cubic-bezier(.645,.045,.355,1);pointer-events:none}
.portfolio-directory-filter:hover .portfolio-directory-filter-bg,.portfolio-directory-filter:focus-visible .portfolio-directory-filter-bg,.portfolio-directory-filter.is-active .portfolio-directory-filter-bg{transform:translate3d(0,0,0)}
.filter-label-mobile{display:none}
.portfolio-directory-grid{gap:.25rem}
.portfolio-directory-brand{position:relative;display:block;min-height:0;overflow:hidden}
.portfolio-directory-brand.brand-tile-big,.portfolio-directory-brand.brand-tile-small{grid-column:span 3;aspect-ratio:4/3!important}
.portfolio-directory-brand.brand-tile-full{grid-column:span 3;aspect-ratio:4/3!important}
.portfolio-directory-brand.is-filter-entering{animation:portfolio-filter-in .3s cubic-bezier(.23,1,.32,1) both}
@keyframes portfolio-filter-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.portfolio-directory-brand-toggle{position:absolute;z-index:1;inset:0;min-height:0;height:100%;padding:clamp(20px,2.4vw,42px)}
.portfolio-directory-brand-toggle img,.portfolio-directory-brand.logo-mode-transparent img,.portfolio-directory-brand.logo-mode-light-canvas img,.portfolio-directory-brand.logo-mode-dark-canvas img,.portfolio-directory-brand.logo-mode-original img{width:var(--logo-source-width);max-width:var(--logo-limit-width,68%)!important;max-height:var(--logo-limit-height,42%)!important;object-fit:contain;opacity:1;transform:none;transition:transform .65s cubic-bezier(.23,1,.32,1),opacity .35s}
.portfolio-directory-brand.location-count-few{--logo-hover-shift:clamp(24px,2.8vw,44px);--logo-hover-scale:.76}
.portfolio-directory-brand.location-count-medium{--logo-hover-shift:clamp(34px,4vw,64px);--logo-hover-scale:.68}
.portfolio-directory-brand.location-count-many{--logo-hover-shift:clamp(46px,5.2vw,84px);--logo-hover-scale:.58}
.portfolio-directory-brand.brand-425degree{--logo-limit-width:58%;--logo-limit-height:78%;--logo-hover-scale:.66}
.portfolio-directory-brand.brand-bose{--logo-limit-width:78%;--logo-limit-height:24%;--logo-hover-scale:.84}
.portfolio-directory-brand.brand-brunello-cucinelli{--logo-limit-width:82%;--logo-limit-height:90%;--logo-hover-scale:.84}
.portfolio-directory-brand.brand-emporio-armani{--logo-limit-width:82%;--logo-limit-height:78%;--logo-hover-scale:.72}
.portfolio-directory-brand.brand-emporio-armani,.portfolio-directory-brand.brand-emporio-armani:hover{background:#000}
.portfolio-directory-brand.brand-charles-keith{--logo-limit-width:84%;--logo-limit-height:20%;--logo-hover-scale:.74}
.portfolio-directory-brand.brand-crocs{--logo-limit-width:76%;--logo-limit-height:62%;--logo-hover-scale:.84}
.portfolio-directory-brand.brand-dickies{--logo-limit-width:58%;--logo-limit-height:42%;--logo-hover-scale:.72}
.portfolio-directory-brand.brand-gong-cha{--logo-limit-width:58%;--logo-limit-height:70%;--logo-hover-scale:.78}
.portfolio-directory-brand.brand-hm{--logo-limit-width:48%;--logo-limit-height:46%;--logo-hover-scale:.72}
.portfolio-directory-brand.brand-hoka{--logo-limit-width:78%;--logo-limit-height:60%;--logo-hover-scale:.78}
.portfolio-directory-brand.brand-hublot{--logo-limit-width:58%;--logo-limit-height:42%;--logo-hover-scale:.72}
.portfolio-directory-brand.brand-lets-relax{--logo-limit-width:80%;--logo-limit-height:90%;--logo-hover-scale:.62}
.portfolio-directory-brand.brand-moft{--logo-limit-width:80%;--logo-limit-height:90%;--logo-hover-scale:.84}
.portfolio-directory-brand.brand-mersi-clinic{--logo-limit-width:82%;--logo-limit-height:48%;--logo-hover-scale:.68}
.portfolio-directory-brand.brand-mersi-clinic,.portfolio-directory-brand.brand-mersi-clinic:hover{background:linear-gradient(180deg,#72d9d4 0%,#35c2b5 100%)}
.portfolio-directory-brand.brand-on{--logo-limit-width:58%;--logo-limit-height:70%;--logo-hover-scale:.82}
.portfolio-directory-brand.brand-paul-smith{--logo-limit-width:84%;--logo-limit-height:90%;--logo-hover-scale:.84}
.portfolio-directory-brand.brand-pmt-the-hour-glass{--logo-limit-width:78%;--logo-limit-height:40%;--logo-hover-scale:.8}
.portfolio-directory-brand.brand-salomon{--logo-limit-width:60%;--logo-limit-height:42%;--logo-hover-scale:.72}
.portfolio-directory-brand.brand-subdued{--logo-limit-width:78%;--logo-limit-height:90%;--logo-hover-scale:.84}
.portfolio-directory-brand.brand-the-north-face{--logo-limit-width:52%;--logo-limit-height:70%;--logo-hover-scale:.84}
.portfolio-directory-brand.brand-tomtoc{--logo-limit-width:78%;--logo-limit-height:55%;--logo-hover-scale:.88}
.portfolio-directory-brand.has-asset-fill,.portfolio-directory-brand.has-asset-fill:hover{background:var(--brand-fill)}
.portfolio-directory-brand.has-asset-fill.asset-tone-light{color:#2e2e2e}
.portfolio-directory-brand.has-asset-fill.asset-tone-dark{color:#fff}
.portfolio-directory-brand.is-expanded .portfolio-directory-brand-toggle img{transform:translateY(calc(-1 * var(--logo-hover-shift))) scale(var(--logo-hover-scale))!important}
.portfolio-directory-locations{position:absolute;z-index:2;left:clamp(14px,2vw,30px);right:clamp(14px,2vw,30px);bottom:clamp(12px,1.7vw,26px);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:end;max-height:58%;padding:0;opacity:0;transform:translateY(14px);pointer-events:none;overflow:hidden}
.portfolio-directory-brand.is-expanded .portfolio-directory-locations{max-height:58%;padding:0;opacity:1;transform:none;pointer-events:auto}
.portfolio-directory-location{min-height:30px;padding:5px 2px;font-size:clamp(10px,.78vw,12px)}
.portfolio-directory-brand.brand-cell-white{color:#2e2e2e}.portfolio-directory-brand.brand-cell-black,.portfolio-directory-brand.brand-cell-red{color:#fff}
.portfolio-directory-brand[hidden]{display:none}
@media(min-width:701px){
 .portfolio-directory-brand.is-expanded{z-index:4;width:calc(200% + .25rem);aspect-ratio:8/3!important;box-shadow:0 16px 44px rgba(0,0,0,.18)}
 .portfolio-directory-brand.is-expanded.is-expand-left{left:calc(-100% - .25rem)}
 .portfolio-directory-brand.is-expanded.location-count-few{--logo-hover-scale:.55}
 .portfolio-directory-brand.is-expanded.location-count-medium{--logo-hover-shift:clamp(42px,4.8vw,72px);--logo-hover-scale:.44}
 .portfolio-directory-brand.is-expanded.location-count-many{--logo-hover-shift:clamp(64px,6.4vw,96px);--logo-hover-scale:.32}
 .portfolio-directory-brand.is-expanded.brand-425degree{--logo-hover-scale:.3}
 .portfolio-directory-brand.is-expanded.brand-emporio-armani{--logo-hover-scale:.72}
 .portfolio-directory-brand.is-expanded.brand-mersi-clinic{--logo-hover-scale:.68}
}
@media(min-width:701px) and (max-width:1100px){
 .portfolio-directory-brand.brand-tile-big,.portfolio-directory-brand.brand-tile-small,.portfolio-directory-brand.brand-tile-full{grid-column:span 4;aspect-ratio:4/3!important}
}
@media(max-width:700px){
 .portfolio-directory-shell .portfolio-directory-panel{padding:5.5rem .25rem .25rem}
 .portfolio-directory-head{margin-bottom:1.5rem}.portfolio-directory-head h2{font-size:3rem;letter-spacing:-.06rem}
 .portfolio-directory-close{top:18px;right:18px}
 .portfolio-directory-filters{max-width:100%;margin-top:3rem;padding:0 .75rem;justify-content:center;flex-wrap:wrap;overflow:visible}
 .portfolio-directory-filter{flex:0 0 auto;padding:.65rem .8rem;font-size:.75rem}.filter-label-desktop{display:none}.filter-label-mobile{display:inline}
 .portfolio-directory-brand.brand-tile-big,.portfolio-directory-brand.brand-tile-small{aspect-ratio:1!important}
 .portfolio-directory-brand.brand-tile-full{grid-column:span 12;aspect-ratio:2/1!important}
 .portfolio-directory-brand.is-expanded.is-mobile-grid-overlay{z-index:4;grid-column:span 3;left:var(--expanded-left);width:var(--expanded-width);min-height:0;aspect-ratio:2/1!important;box-shadow:0 12px 32px rgba(0,0,0,.2)}
 .portfolio-directory-brand.brand-tile-full.is-expanded.is-mobile-grid-overlay{grid-column:span 12;left:0;width:100%}
 .portfolio-directory-brand-toggle{padding:12px}
 .portfolio-directory-brand.location-count-few{--logo-hover-shift:18px}.portfolio-directory-brand.location-count-medium{--logo-hover-shift:26px}.portfolio-directory-brand.location-count-many{--logo-hover-shift:34px}
 .portfolio-directory-locations{top:36%;left:8px;right:8px;bottom:7px;height:auto;max-height:none;padding:0;grid-template-columns:repeat(2,minmax(0,1fr));align-content:end;transition:opacity .3s ease,transform .45s cubic-bezier(.23,1,.32,1)}
 .portfolio-directory-brand.location-count-many .portfolio-directory-locations{grid-template-columns:repeat(3,minmax(0,1fr))}
 .portfolio-directory-brand.is-expanded .portfolio-directory-locations{height:auto;max-height:none;padding:0}
 .portfolio-directory-location{min-height:21px;padding:3px 1px;font-size:8.5px;gap:4px}
 .portfolio-directory-location>span:last-child{display:none}
 .portfolio-directory-brand.location-count-many{--logo-hover-shift:52px;--logo-hover-scale:.46}
 .portfolio-directory-brand.brand-425degree{--logo-hover-scale:.42}
 .portfolio-directory-brand.is-filter-entering{animation-name:portfolio-filter-in-mobile}
}
@keyframes portfolio-filter-in-mobile{from{opacity:0}to{opacity:1}}

.map-loading{position:absolute;z-index:12;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:2rem;background:#101513;color:#fff;opacity:1;visibility:visible;overflow:hidden;transition:opacity .65s ease,visibility 0s}
.map-loading.is-ready{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .45s ease,visibility 0s .45s}
.map-loading-num{position:relative;z-index:2;align-self:center;font-size:1.125rem;line-height:1.4;letter-spacing:.009375rem;font-variant-numeric:tabular-nums}
.map-loading-watermark{position:absolute;z-index:1;top:50%;left:50%;width:min(15rem,55vw);height:auto;opacity:.035;transform:translate(-50%,-50%);pointer-events:none}
.map-loading-content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;margin-top:auto}
.map-loading-logo{width:5rem;height:auto}
.map-loading-text{color:#b8b8b2;font-size:1rem;font-weight:500;line-height:1.4;letter-spacing:.009375rem;text-transform:none}
.map-loading.is-error .map-loading-text{color:#d4a537}

/* Attribution remains legally complete but is collapsed behind MapLibre's
   information button at every viewport size. */
.maplibregl-ctrl-attrib{border-radius:12px!important;min-height:20px!important;padding:2px 24px 2px 0!important;position:relative!important}
.maplibregl-ctrl-attrib .maplibregl-ctrl-attrib-inner{display:none!important}
.maplibregl-ctrl-attrib .maplibregl-ctrl-attrib-button{display:block!important}
.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px!important}
.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block!important}

/* The full-screen embedded Map owns touch input while open: one finger pans,
   two fingers pinch-zoom. Region locking still disables handlers in JS. */
.map-shell.is-open .maplibregl-canvas-container,.map-shell.is-open .maplibregl-canvas{touch-action:none!important}
.location-panel.is-dragging{transition:none!important}
