/* Continuous regional reading: subdued boundaries, unchanged source geometry. */
.immersive-map .map-surface{background:#142b24}
.immersive-map .geo-province.in-scope{fill:#294237;stroke:#8da38c;stroke-width:.55;stroke-opacity:.2;stroke-linejoin:round;stroke-linecap:round}
.immersive-map .geo-province:not(.in-scope){fill:#263e34;stroke:#829b86;stroke-width:.5;stroke-opacity:.14;stroke-linejoin:round}
.immersive-map .geo-province.is-active{fill:#314c3e;stroke:#bec8a6;stroke-opacity:.48}
.immersive-map .geo-region:hover .geo-province.in-scope{fill:#2c4639;stroke-opacity:.35}
.immersive-map .geo-province.geo-fragment{display:none}
.immersive-map .geo-detail .geo-province.geo-fragment{display:initial}
.immersive-map .geo-grid{opacity:.07}
.immersive-map .geo-coordinate{opacity:.25}
.immersive-map .geo-label{opacity:.32;fill:#bec8b1}
.immersive-map .geo-detail .geo-label{opacity:.42}
.immersive-map .map-surface:after{background:radial-gradient(ellipse at 50% 43%,transparent 30%,#0b211a44 65%,#081b15d9 100%),linear-gradient(0deg,#081b15e6,transparent 32%,#0b211a33);pointer-events:none}
.immersive-map .geo-province{transition:fill .25s ease,stroke-opacity .25s ease}
@media(prefers-reduced-motion:reduce){.immersive-map .geo-province{transition:none}}

/* Real DEM relief stays fixed to the same Mercator projection as the nodes. */
.terrain-relief{pointer-events:none}
.land-continuation{fill:#20382b;stroke:none;pointer-events:none}
.immersive-map .province-shapes{filter:none}
.immersive-map .geo-province.in-scope,.immersive-map .geo-province:not(.in-scope){fill:transparent;stroke-opacity:.34;stroke-width:.8;stroke:#bac6ab}
.immersive-map .geo-province.in-scope{stroke-opacity:.3;stroke-width:.75}
.immersive-map .geo-province.is-active{fill:#a5bda20d}
.immersive-map .geo-region:hover .geo-province.in-scope{fill:#b6c7a40a}
.ambient-relations{pointer-events:none;fill:none;stroke:#d4d9b4;stroke-width:.65;opacity:.22}
.ambient-relations path{vector-effect:non-scaling-stroke}
.map-attribution a+a{margin-left:12px}
.immersive-map .map-point .dot{filter:drop-shadow(0 2px 1px #071b16aa)}

/* The invitation, rather than the project title, occupies the visual centre. */
.immersive-map .field-entry{inset:0;width:100%;height:100%;max-width:none;transform:none;text-align:center}
.immersive-map .field-entry>span,.immersive-map .field-entry h1,.immersive-map .field-entry p{position:absolute;left:50%;width:min(680px,88vw);transform:translateX(-50%);margin:0;animation:none}
.immersive-map .field-entry>span{top:calc(50% - 182px);font-size:10px;letter-spacing:.2em;color:#b5c2ad}
.immersive-map .field-entry h1{top:calc(50% - 139px);font-size:20px;line-height:1.6;letter-spacing:.18em;color:#d0d8c5;text-shadow:none}
.immersive-map .field-entry h1 em{font-size:12px;letter-spacing:.24em}
.immersive-map .field-entry p{top:calc(50% + 111px);font-size:12px;line-height:2;color:#b6c4b0}
.immersive-map .field-entry .field-begin{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;padding:18px 22px;min-height:88px;width:max-content;max-width:92vw;background:none;border:0;border-radius:0;box-shadow:none;color:#eee8d5;font-family:AtlasSerif,'Songti SC','STSong',serif;font-size:clamp(40px,5.2vw,72px);font-weight:400;line-height:1.3;letter-spacing:.16em;gap:22px;animation:none;transition:color .25s ease,text-shadow .25s ease}
.immersive-map .field-entry .field-begin{font-size:clamp(56px,8.5vw,108px);padding:12px 0;appearance:none;letter-spacing:.12em;cursor:pointer}
.immersive-map .field-entry .field-begin span{display:none}
.immersive-map .field-entry .field-begin::before,.immersive-map .field-entry .field-begin::after{display:none}
.immersive-map .field-entry .field-begin:hover{background:none;box-shadow:none;transform:translate(-50%,-50%);color:#fff9e5;text-shadow:0 3px 18px #b8c79b22}
.immersive-map .field-entry .field-begin:focus-visible{outline:2px solid #cbd6b8;outline-offset:10px}
.immersive-map .has-entered .field-entry{transform:translateY(-12px);filter:none}
@media(max-width:600px){.immersive-map .field-entry h1{font-size:18px}.immersive-map .field-entry .field-begin{padding:16px 8px;letter-spacing:.1em}}
@media(max-height:520px){.immersive-map .field-entry>span{top:calc(50% - 135px)}.immersive-map .field-entry h1{top:calc(50% - 105px);font-size:22px}.immersive-map .field-entry h1 em{font-size:14px}.immersive-map .field-entry p{top:calc(50% + 78px);font-size:12px}.immersive-map .field-entry .field-begin{font-size:42px}}
@media(prefers-reduced-motion:reduce){.immersive-map .field-entry .field-begin{transition:none}.immersive-map .has-entered .field-entry{transform:none}}

/* A quiet archival prelude; no simulated progress percentage. */
#atlas-loader{transition:opacity .7s cubic-bezier(.22,1,.36,1)}
#atlas-loader.is-leaving{opacity:0;pointer-events:none}
.loader-content{display:flex;flex-direction:column;align-items:center;text-align:center}
.loader-caption{font:10px/1.6 sans-serif;letter-spacing:.24em;color:#a6b49c}
.loader-title{margin-top:22px;font:24px/1.6 AtlasSerif,'Songti SC',serif;letter-spacing:.18em}
.loader-rule{width:96px;height:1px;margin:32px 0 20px;background:#a9b99a33;overflow:hidden}
.loader-rule:after{content:'';display:block;width:45%;height:100%;background:#bdc7ad;animation:loader-pass 1.9s ease-in-out infinite}
.loader-message{font-size:12px;letter-spacing:.12em;color:#a6b49c}
.loader-retry{margin-top:24px;padding:12px 24px;background:transparent;color:#d9dfca;border:1px solid #a6b49c66;cursor:pointer}
.load-failed .loader-rule:after{animation:none}
@keyframes loader-pass{from{transform:translateX(-110%)}to{transform:translateX(330%)}}
.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry>span,
.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry h1,
.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry p,
.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry .field-begin{animation:opening-ink 1.5s cubic-bezier(.22,1,.36,1) both}
.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry>span{animation-delay:.24s}
.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry h1{animation-delay:.38s}
.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry .field-begin{animation-delay:.58s}
.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry p{animation-delay:.82s}
@keyframes opening-ink{from{opacity:0;translate:0 7px}to{opacity:1;translate:0 0}}
.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry .field-begin{animation:opening-ink 1.5s cubic-bezier(.22,1,.36,1) .58s both,explore-breathe 4.8s ease-in-out 2.08s infinite}
.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry .field-begin:is(:hover,:focus-visible){animation-play-state:running,paused;color:#fff9e5}
@keyframes explore-breathe{0%,100%{opacity:1}50%{opacity:.64}}
.region-shade{fill:#03130f;opacity:0;pointer-events:none;transition:opacity .65s ease}
.region-focused .region-shade{opacity:.64}
.immersive-map .map-surface:before{inset:0;filter:none;animation:none;opacity:.1}
.immersive-map .map-surface.motion-paused:before{opacity:0}
.camera-moving .geo-province{stroke:none!important;transition:none!important}
.camera-moving .map-point text{stroke:none;paint-order:normal}
.camera-moving .field-network,.camera-moving .geo-labels{visibility:hidden}
.camera-moving .region-shade{transition:none}
.immersive-map .map-surface{contain:layout paint}
.immersive-map .map-point .dot{filter:none}
.immersive-map .map-surface .field-panel,.immersive-map .atlas-sidebar{backdrop-filter:none;-webkit-backdrop-filter:none;background:#f4f1e8}
.immersive-map .region-focused .geo-province{stroke-opacity:.12}
.immersive-map .region-focused .region-current .geo-province{fill:#c2d3a50c;stroke:#c6d2b5;stroke-opacity:.48;stroke-width:.85}
.ambient-relations,#map-connections,.field-network .field-edge{display:none!important}
@media(prefers-reduced-motion:reduce){.region-shade{transition:none}}
@media(prefers-reduced-motion:reduce){#atlas-loader{transition:none}.loader-rule:after{animation:none}.opening-ready.immersive-map .map-surface:not(.has-entered) .field-entry>*{animation:none!important}}

/* Reading a place: dim only the geographic context, not its related records.
   Opacity avoids live blur/masks and leaves pointer and touch handling intact. */
.immersive-map .map-surface{transition:background-color .45s ease}
.immersive-map .geography,.immersive-map .map-point{transition:opacity .45s ease}
.immersive-map .selection-open{background-color:#071711}
.immersive-map .selection-open .geography{opacity:.28}
.immersive-map .selection-open .map-point:not(.selected){opacity:.16}
.immersive-map .selection-open .map-point.selected{opacity:.85}
.immersive-map .selection-open .map-point:not(.selected):is(:hover,:focus-visible){opacity:1}
.immersive-map .selection-open .map-point:not(.selected) text{opacity:0!important}
.immersive-map .selection-open .map-point:not(.selected):is(:hover,:focus-visible) text{opacity:1!important}
.immersive-map .selection-open .field-satellite circle{fill:#243c30;stroke:#e2ddbb;stroke-width:1.25}
@media(min-width:801px){.immersive-map .selection-open .field-satellite{display:initial}}
.immersive-map .selection-open .field-satellite .sat-type,
.immersive-map .selection-open .field-satellite .sat-label{fill:#f2ecd6}
.immersive-map .selection-open .field-satellite .sat-label{stroke:#071711;stroke-width:3}
.immersive-map .selection-open .field-satellite:is(:hover,:focus-visible) circle{fill:#405b44;stroke:#fff8e2;stroke-width:2}
.immersive-map .map-surface:not(.selection-open) .field-network{opacity:0;visibility:hidden;pointer-events:none}
@media(prefers-reduced-motion:reduce){
 .immersive-map .map-surface,.immersive-map .geography,.immersive-map .map-point{transition:none}
}
