/* Phase 4A: the geographic directory is a light paper chart, not a dark hero.
   The corpus/registry supplies every claim; coordinates only locate seats.
   No extra script, fabricated country fill, or new shadow token. */
[data-route='desks.html'] .page-head{padding-block:24px 65px;min-height:0;margin-bottom:24px}
[data-route='desks.html'] .page-head::after{background-image:url('assets/material/chart-shelf.svg');inset:auto -22px 0 auto;width:45%;height:70px;background-size:850px auto;background-position:center 54%}
.deskmap{--dm-sea:#e2ebe9;--dm-land:#f8f7f2;--dm-edge:#a5b4b1;--dm-on:#1f4757;--dm-quiet:#b7ccd3;--dm-quiet-edge:#4f7480;--dm-ink:#1d2d31;--dm-paper:#fbfaf6;margin:0 0 3rem}
.deskmap-controls{margin-bottom:16px}
.deskmap-controls[hidden],.deskmap-context-entry[hidden],.deskmap-context-default[hidden]{display:none}
.deskmap-selectors{display:flex;flex-wrap:wrap;gap:8px}
.deskmap-selectors button{font:600 14px/1.4 var(--sans);padding:10px 16px;min-height:44px;border:1px solid var(--rule-strong);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:30px}
.deskmap-selectors button[aria-pressed=true]{background:var(--band);color:var(--band-ink);border-color:var(--band)}
.deskmap-selectors button:hover{border-color:var(--accent)}
.deskmap-selection{font:14px/1.65 var(--sans);color:var(--ink-2);min-height:36px;margin:10px 0;max-width:none}
.deskmap-stage{display:block;position:relative;background:transparent;border:0;margin:0}
.deskmap-chart{position:relative;display:block;background:var(--dm-sea);padding:0;min-width:0}
.deskmap-svg{display:block;border:1px solid var(--rule);overflow:hidden;width:100%;height:auto}
.dm-sea{fill:var(--dm-sea)}.dm-graticule{stroke:#176c6c;stroke-opacity:.13;stroke-width:.6px}
.dm-land{fill:var(--dm-land);stroke:var(--dm-edge);stroke-width:.6px}.dm-borders{stroke:#c3ccc9;stroke-width:.5px}
.dm-scale{display:inline}.dm-scale text{fill:#617b79;font:19px var(--sans)}
.dm-country use{fill:var(--dm-land);stroke:var(--dm-edge);stroke-width:.7px}
.dm-country.is-live use,.dm-country.is-collecting use{fill:var(--dm-on);stroke:#142e38;stroke-width:.8px}
.dm-country.is-shadow use,.dm-country.is-quiet use{fill:var(--dm-quiet);stroke:var(--dm-quiet-edge);stroke-width:.9px;stroke-dasharray:3 2}
.dm-country.is-selected use{stroke:var(--accent);stroke-width:2px}
.dm-anchor{pointer-events:auto;cursor:pointer}
.dm-country{cursor:pointer}
.dm-dot{transform:scale(11);fill:var(--dm-on);stroke:var(--dm-land);stroke-width:1.6px}
.dm-anchor.is-quiet .dm-dot,.dm-anchor.is-blocked .dm-dot{fill:var(--dm-land);stroke:var(--dm-on);stroke-width:1.6px}
.dm-ring{fill:none;stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke;opacity:0}
.dm-anchor.is-selected .dm-ring{opacity:1}.dm-anchor.is-selected .dm-dot{transform:scale(13)}
.dm-hit{fill:transparent;stroke:none}
.dm-label{display:block;font:600 33px var(--sans);fill:var(--dm-ink);stroke:var(--dm-land);stroke-width:9px;paint-order:stroke;pointer-events:none}
.dm-ocean{font:400 italic 48px var(--display);fill:#829e99;letter-spacing:1px;pointer-events:none;transform:translate(130px,-135px)}
.dm-leader{stroke:var(--dm-on);stroke-width:1px;opacity:.6;fill:none;vector-effect:non-scaling-stroke}
.dm-leader.is-quiet{stroke:var(--dm-quiet-edge);stroke-dasharray:4 3}
.dm-leader--wide,.dm-leader--mid{display:none}
.deskmap-register{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:20px 0}
.deskmap-plate{position:relative;left:auto;top:auto;transform:none;width:auto;min-width:0;background:var(--dm-paper);border:1px solid var(--rule);border-top:3px solid var(--dm-on);border-radius:2px;padding:16px 16px 12px}
.deskmap-plate.is-shadow,.deskmap-plate.is-quiet{border-top:3px dashed var(--dm-quiet-edge)}
.deskmap-plate.is-blocked{border-top:3px solid #93621d}
.deskmap-plate.is-selected{outline:2px solid var(--accent);outline-offset:2px}
/* Unplaced public desks sit outside the map figure; give their paper/flag
   tokens local values rather than relying on inherited .deskmap variables. */
.deskmap-plate.is-unplaced{--dm-paper:#fbfaf6;--dm-on:#1f4757;margin:18px 0;max-width:22rem}
.deskmap-flag-tab{position:absolute;top:-12px;left:14px;display:inline-flex;line-height:0;padding:2px;background:var(--dm-paper);border:1px solid var(--rule-strong);border-radius:2px}
.deskmap-flag-tab:empty{display:none}
.deskmap-flag-tab .rl-flag{display:block;width:22px;height:16.5px;border:0;vertical-align:initial}
.deskmap-plate .card-meta{margin:2px 0 8px 33px;font-size:12px}
.deskmap-plate h2.plain{font:400 25px/1.13 var(--display);margin:6px 0 8px}
.deskmap-stats{margin:9px 0 12px}
.deskmap-stats>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px;border-top:1px solid var(--rule);padding:5px 0}
.deskmap-stats dt{font:12px/1.5 var(--sans);color:var(--ink-2);text-transform:none;letter-spacing:0}
.deskmap-stats dd{font:600 13px/1.5 var(--sans);margin:0;text-align:right}
.deskmap-seat{font:13px/1.55 var(--sans);margin:0;color:var(--ink-2)}
.deskmap-seat span{font-size:12px}
.deskmap-enter{margin:5px 0 0;font-size:13px}.deskmap-enter a{min-height:44px;display:inline-flex;align-items:center}
.deskmap-selected-label{font:600 12px/1.6 var(--sans);color:var(--accent-ink)}
.deskmap-chart-note{font:12px/1.6 var(--sans);color:var(--ink-2);margin:10px 0}
.deskmap-context{padding:20px 24px;background:var(--surface);border:1px solid var(--rule);font:14px/1.7 var(--sans)}
.deskmap-context p{max-width:70ch;margin:0 0 10px}
.deskmap-context .deskmap-context-title{font:400 30px/1.2 var(--display);color:var(--ink)}
.deskmap-context a{min-height:44px;display:inline-flex;align-items:center;color:var(--accent-ink)}
.deskmap-key{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;padding:16px 0;font:13px/1.6 var(--sans)}
.deskmap-key-item{display:inline-flex;align-items:center;gap:7px}
.deskmap-key-swatch{width:18px;height:12px;background:var(--dm-on);flex:none}
.deskmap-key-swatch.is-quiet{background:var(--dm-quiet);outline:1px dashed var(--dm-quiet-edge);outline-offset:-1px}
.deskmap-key-swatch.is-seat{position:relative;background:var(--dm-land);border:1px solid var(--dm-edge)}
.deskmap-key-swatch.is-seat::after{content:"";position:absolute;left:5px;top:2px;width:6px;height:6px;border:1.5px solid var(--dm-on);border-radius:50%}
.deskmap-key-note{width:100%;max-width:95ch}
.deskmap-plate a:focus-visible,.deskmap-context a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
/* Seven mapped desks (plus Indonesia as a status-only entry) exceed the 2026
   five-desk study's plate capacity. Keep all plates visible in a register at
   ordinary desktop/tablet widths instead of overlapping map labels. Geographic
   anchors remain at their verified seats; P4A collision probe gates expansion. */
@media(min-width:1480px){
 .deskmap-stage{margin:11rem 0 6rem}
 .deskmap-register{position:absolute;inset:0;display:block;pointer-events:none;margin:0;z-index:2}
 .deskmap-plate{position:absolute!important;left:var(--wl)!important;top:var(--wt)!important;transform:translate(var(--wtx),var(--wty))!important;width:14.4rem;pointer-events:auto}
 .dm-leader--wide{display:inline}
 .deskmap-plate.is-selected{z-index:3}
}
@media(min-width:760px) and (max-width:1479.98px){.deskmap-register{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1099px){.dm-label{font-size:31px}.dm-ocean{font-size:40px;transform:translate(90px,-90px)}}
@media(max-width:899px){.deskmap-register{grid-template-columns:repeat(2,minmax(0,1fr))}.dm-label{display:none}}
@media(max-width:599px){
 [data-route='desks.html'] .page-head::after{width:100%;height:44px;background-size:700px auto}
 .deskmap-register{grid-template-columns:minmax(0,1fr);gap:18px}
 .deskmap-selectors button{padding:10px 12px;font-size:13px}
 .dm-scale{display:none}.dm-ocean{display:none}.dm-label{display:none}
 .dm-dot{transform:scale(15)}.dm-hit{r:120px}
 .deskmap-context{padding:16px}.deskmap-context .deskmap-context-title{font-size:26px}
}
/* Selection and hover are paired: every mouse cue also works with focus and
   keyboard selection, with no new JS. */
.deskmap:has([data-desk]:is(:hover,:focus-within)) .dm-leader{opacity:.35}
.deskmap:has([data-desk]:is(:hover,:focus-within)) .dm-leader.is-selected{opacity:1}
@media(prefers-reduced-motion:no-preference){
 .deskmap-selectors button{transition:background-color 180ms var(--ease-rule),border-color 180ms var(--ease-rule)}
 .deskmap-plate{transition:background-color 180ms var(--ease-rule)}
}
@media(forced-colors:active){
 .deskmap-chart{background:Canvas}.dm-sea,.dm-land,.dm-country use{fill:Canvas;stroke:CanvasText}
 .dm-graticule,.dm-borders{stroke:CanvasText}.dm-label,.dm-scale text{fill:CanvasText;stroke:Canvas;stroke-width:4px}
 .dm-dot{fill:CanvasText;stroke:Canvas}.dm-ocean{fill:CanvasText}
 /* SVG hit circles are deliberately transparent at every contrast setting.
    Otherwise Chromium repaints their 120-unit mobile tap targets as Highlight
    blue discs, obscuring the actual coastlines. Keep their click area. */
 .dm-hit{fill:transparent;stroke:none;forced-color-adjust:none}
 /* Match the higher-specificity status fills in forced colours; otherwise
    live/quiet national shapes collapse into system Highlight blobs. */
 .dm-country.is-live use,.dm-country.is-quiet use{fill:Canvas;stroke:CanvasText}
 .dm-country.is-live use{stroke-width:1.7px;stroke-dasharray:none}
 .dm-country.is-quiet use{stroke-width:1px;stroke-dasharray:4 3}
 .dm-country.is-selected use{fill:Canvas;stroke:Highlight;stroke-width:2px}
 .deskmap-plate{box-shadow:none;border:1px solid CanvasText;border-top:3px solid CanvasText}
 .deskmap-plate.is-selected{outline-color:Highlight}
 .deskmap-selectors button{background:ButtonFace;color:ButtonText;border-color:ButtonText}
 .deskmap-selectors button[aria-pressed=true]{background:ButtonFace;color:ButtonText;border-color:Highlight;outline:3px solid Highlight;outline-offset:0}
 .deskmap-key-swatch{forced-color-adjust:none}
}
@media print{
 .deskmap-controls{display:none}
 .deskmap-stage{margin:0}.deskmap-register{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));position:static;pointer-events:auto}
 .deskmap-plate{position:relative!important;left:auto!important;top:auto!important;transform:none!important;box-shadow:none;width:auto}
 .dm-leader{display:none}.deskmap-chart{background:none}
}
