:root{color-scheme:dark;--ink:#06121a;--paper:#f5efdc;--gold:#d9bc83;--muted:#bac7c7;--line:rgba(238,223,190,.2)}
.sky-passage{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;transition:opacity 1.8s ease}.in-sky .cartel{border-color:rgba(205,234,231,.48)}.in-sky #mode{color:#e5ebc4}
*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;background:var(--ink);color:var(--paper);font:15px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}body{overflow:hidden}button,input,a{-webkit-tap-highlight-color:transparent}button,a{color:inherit}button{font:inherit;cursor:pointer}a{text-underline-offset:4px}button,.doors a{min-height:44px;border:1px solid var(--line);border-radius:24px;background:rgba(7,22,28,.9);padding:9px 16px;text-decoration:none}.primary{background:var(--paper);color:#092129;border-color:var(--paper);font-weight:650}button:disabled{opacity:.5;cursor:wait}:is(a,button,input):focus-visible{outline:2px solid var(--gold);outline-offset:4px}button:hover,.doors a:hover{border-color:var(--gold)}h1,h2,p{margin:0}main{height:100dvh;position:relative}.earth{position:absolute;inset:0;background:radial-gradient(ellipse at 66% 42%,#1a3945,#06121a 65%)}.shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(6,18,26,.7),transparent 55%);pointer-events:none}.brand{position:absolute;top:max(28px,env(safe-area-inset-top));left:clamp(18px,3vw,48px);pointer-events:none}.brand>*{pointer-events:auto}.signature{font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;text-decoration:none}.signature span{font-size:.62rem;color:var(--muted);letter-spacing:.06em}h1{font:400 clamp(1.8rem,3.4vw,3.1rem)/1.06 Georgia,serif;letter-spacing:-.025em;margin-top:18px;text-shadow:0 2px 22px #06121a}.motto{margin-top:14px;font-size:.85rem;color:var(--muted);letter-spacing:.16em}.motto span{color:var(--gold);margin:0 8px}.doors{display:flex;gap:8px;margin-top:22px;align-items:center}.map-tools{position:absolute;right:20px;top:28px;display:flex;gap:6px;flex-direction:column;align-items:end}.map-tools button{padding:8px 14px}.map-tools #zoom-in,.map-tools #zoom-out{width:44px;padding:6px;font-size:1.3rem}.map-tools #auto[aria-pressed=true]{color:var(--gold)}.cartel{position:absolute;bottom:max(32px,env(safe-area-inset-bottom));left:clamp(18px,3vw,48px);width:min(650px,calc(100% - 130px));padding:20px 24px 16px;background:rgba(6,18,26,.92);border:1px solid var(--line);border-radius:5px;box-shadow:0 16px 60px #0005;backdrop-filter:blur(16px)}.eyebrow{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}.cartel h2{font:400 clamp(1.2rem,2vw,1.65rem)/1.12 Georgia,serif;margin:9px 0;overflow-wrap:anywhere;text-wrap:balance}#place{font-size:.91rem}#provenance{font-size:.73rem;color:var(--muted);margin-top:5px}#status{font-size:.7rem;color:var(--muted);margin-top:10px;max-width:100%;overflow-wrap:anywhere}.play-controls{display:flex;gap:6px;flex-wrap:wrap;margin-top:15px;align-items:center}.play-controls button{font-size:.82rem;padding:8px 12px}.secondary{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:10px}.secondary label{font-size:.72rem;color:var(--muted);display:flex;gap:8px;align-items:center}.secondary input{width:80px;accent-color:var(--gold);min-height:32px}.secondary button{min-height:36px;padding:5px 10px;border:0;background:transparent;color:var(--muted);font-size:.73rem}#widget{margin-top:12px}#widget iframe{width:100%;height:100px;display:block;border:0}.maplibregl-ctrl-attrib{font-size:10px!important}.maplibregl-ctrl-bottom-right{max-width:45%}.star{width:44px;height:44px;border:0;padding:0;background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative}.light{display:grid;place-items:center;min-width:8px;height:8px;border-radius:50%;background:#efd8a3;box-shadow:0 0 12px #f0dba788;color:#08121a;font-size:10px}.light:not(:empty){min-width:24px;height:24px;background:#ddc89acc}.star.voice .light{box-shadow:0 0 0 5px #ddbf8222,0 0 18px #ddbf8255}.star.rest .light{background:#b1ccd8;box-shadow:0 0 10px #b1ccd844}.star.path .light{background:#9ecbbe}.star.current:after{content:"";position:absolute;inset:1px;border:1px solid var(--gold);border-radius:50%}.maplibregl-popup-content{background:#09212b!important;color:var(--paper)!important;padding:18px!important;border:1px solid var(--line)}.maplibregl-popup-tip{border-top-color:#09212b!important}.place-choices{display:grid;max-height:280px;overflow:auto;gap:5px}.place-choices button{text-align:left;border-radius:4px;font-size:.85rem}dialog{background:#0c2029;color:var(--paper);border:1px solid var(--line);border-radius:8px;width:min(620px,calc(100vw - 24px));max-height:80dvh;padding:24px;overflow:auto}dialog::backdrop{background:#0009;backdrop-filter:blur(6px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.dialog-top h2{font:400 1.5rem/1.2 Georgia,serif}.dialog-top button{font-size:.78rem;flex-shrink:0}dialog p{color:var(--muted);font-size:.85rem;margin-bottom:12px}.search-label{display:block;font-size:.8rem}.search-label input{display:block;margin-top:5px;width:100%;padding:12px;background:#07121a;border:1px solid var(--line);border-radius:4px;color:var(--paper);font:inherit}.filters{display:flex;flex-wrap:wrap;gap:5px;margin:16px 0}.filters button{font-size:.73rem;min-height:40px;padding:6px 11px}.filters button[aria-pressed=true]{border-color:var(--gold);color:var(--gold)}#items{list-style:none;padding:0;margin:0}#items li{border-bottom:1px solid var(--line)}#items button{width:100%;border:0;background:transparent;text-align:left;padding:12px 0;border-radius:0}#items b{font-weight:500;font-family:Georgia,serif;font-size:1.04rem}#items span{display:block;color:var(--muted);font-size:.73rem;margin-top:4px}#more{margin-top:14px}#source-body p{white-space:pre-line;overflow-wrap:anywhere}.no-script{position:absolute;inset:40% 10%;padding:30px;background:var(--ink)}
@media(max-width:700px){.brand{top:max(16px,env(safe-area-inset-top));left:16px;right:16px}.signature{font-size:.64rem}h1{font-size:1.8rem;margin-top:12px}.motto{margin-top:9px;font-size:.68rem}.doors{margin-top:14px;gap:5px}.doors :is(button,a){font-size:.78rem;padding:8px 13px}.map-tools{right:12px;top:230px;gap:4px}.map-tools :is(#near,#full){font-size:.67rem;max-width:92px;padding:8px}.cartel{left:12px;bottom:max(28px,env(safe-area-inset-bottom));width:calc(100% - 24px);padding:13px 15px 10px}.cartel h2{font-size:1.24rem;line-height:1.15;margin:7px 0}#place{font-size:.77rem}#provenance{font-size:.65rem}.play-controls{gap:5px;margin-top:10px}.play-controls button{font-size:.72rem;padding:7px 10px;min-height:44px}.secondary{gap:3px;margin-top:3px}.secondary button{font-size:.66rem;padding:4px 8px}.secondary input{width:64px}.secondary label{font-size:.65rem}#status{font-size:.63rem;margin-top:5px}#widget iframe{height:85px}.maplibregl-ctrl-bottom-right{max-width:100%}dialog{padding:18px}.shade{background:linear-gradient(180deg,#06121a99,transparent 38%,#06121a33)}.earth{background:radial-gradient(ellipse at 50% 45%,#1a3945,#06121a 65%)}}
@media(max-height:680px){.brand h1{font-size:1.5rem}.motto{display:none}.doors{margin-top:10px}.map-tools{top:175px}.cartel{bottom:26px}.secondary{margin-top:0}#provenance{max-height:30px;overflow:auto}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* V1.1 — the Earth remains visible through the listening window. */
:root{--ink:#092e3e;--muted:#d6e0d9;--glass:rgba(6,30,36,.48);--line:rgba(232,238,208,.25)}
.earth{background:radial-gradient(ellipse at 60% 42%,#47899e,#123c51 70%)}
.resonance{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}
.shade{z-index:3;background:linear-gradient(90deg,rgba(5,33,43,.42),transparent 48%)}
.brand,.cartel,.map-tools{z-index:4}
.brand h1{max-width:365px;font-size:clamp(1.8rem,3vw,2.65rem);line-height:1.1}
button,.doors a{background:var(--glass);backdrop-filter:blur(7px);border-color:var(--line)}
.primary{background:rgba(246,241,215,.94);color:#163f42}
.cartel{width:min(460px,calc(100% - 140px));padding:17px 20px 12px;background:var(--glass);border-radius:18px;backdrop-filter:blur(7px);box-shadow:0 8px 30px #00151b33;text-shadow:0 1px 8px #082b38}
.cartel h2{font-size:1.45rem}.play-controls{gap:6px}.play-controls button{padding:8px 12px}
#reaction-status{font-size:.71rem;color:#e0d5af;margin-top:7px}
#status{opacity:.85}.secondary{gap:6px}
.has-listening .brand h1{font-size:1.15rem;max-width:290px;margin-top:10px}
.has-listening .motto{display:none}.has-listening .doors{margin-top:12px}
.map-tools{gap:5px}.map-tools button{font-size:.8rem}.map-tools #world{font-size:.78rem}
.star .light{box-shadow:0 0 12px #fff0ad88,0 0 0 2px #183b4055}
.star.current:after{border:1px solid #f9e2a5;box-shadow:0 0 18px #e8d39a66}
.maplibregl-popup-content{background:rgba(8,35,39,.74)!important;backdrop-filter:blur(7px);border-radius:12px!important}
dialog{position:fixed;inset:100px 140px auto auto;margin:0;width:min(380px,calc(100vw - 180px));max-height:65dvh;padding:20px;background:rgba(6,30,36,.72);backdrop-filter:blur(9px);border-radius:16px;z-index:7;box-shadow:0 12px 40px #00232b33}
dialog p{color:var(--muted)}.dialog-top h2{font-size:1.2rem}.dialog-top button{font-size:.7rem;padding:8px 11px}
.search-label input{background:rgba(8,34,38,.4)}.filters button{background:rgba(7,34,39,.45)}
@media(max-width:700px){
 .brand{top:max(15px,env(safe-area-inset-top));left:16px;right:90px}
 .brand h1{font-size:1.65rem;max-width:260px}.has-listening .brand h1{font-size:1rem;max-width:230px}
 .signature span{font-size:.56rem}.motto{font-size:.62rem}.doors{gap:5px}.doors :is(button,a){font-size:.73rem;padding:8px 11px}
 .map-tools{right:12px;top:202px;gap:4px}.has-listening .map-tools{top:128px}
 .map-tools :is(#world,#near,#full){font-size:.66rem;max-width:86px;padding:8px 10px}
 .cartel{width:calc(100% - 24px);left:12px;bottom:max(28px,env(safe-area-inset-bottom));padding:13px 15px 10px;background:rgba(4,31,35,.55)}
 .cartel h2{font-size:1.18rem}#reaction-status{font-size:.64rem;margin-top:5px}.secondary{gap:3px}
 .play-controls button{font-size:.72rem;padding:8px 12px}.shade{background:linear-gradient(180deg,#08324255,transparent 35%)}
 dialog{inset:162px auto auto 12px;width:calc(100vw - 110px);max-height:44dvh;padding:16px;background:rgba(4,28,32,.73)}
 .dialog-top{align-items:start;gap:7px}.dialog-top h2{font-size:1.1rem}.dialog-top button{padding:7px 9px;font-size:.65rem}
}

/* V1.2 — visual vocabulary of the Atlas and its Voyage, in the same Earth. */
.voyage-controls{display:flex;gap:5px;flex-wrap:wrap;margin:9px 0 2px}
.voyage-controls button{font-size:.7rem;min-height:44px;padding:7px 10px}
.voyage-controls [aria-pressed=true]{border-color:#e8d29b;color:#f1dea9}
button:disabled{opacity:.38;cursor:default}
.paths{display:grid;gap:5px;margin:10px 0 16px}.paths button,#links button{display:grid;gap:5px;text-align:left;width:100%;padding:12px 14px;border-radius:12px}
.paths strong,#links strong{font:400 1.05rem/1.2 Georgia,serif}.paths small,#links small{color:#ddd9ba;font-size:.7rem;line-height:1.4}
#links{list-style:none;padding:0;display:grid;gap:7px}#drawing-note{font-size:.76rem;line-height:1.5}
.compass{display:grid;grid-template-columns:1fr 1fr;gap:7px}.compass button{min-height:44px}
.display-spiral{pointer-events:none!important;overflow:visible;z-index:0}
.display-spiral path{fill:none;stroke:#e3cf96;stroke-width:1.1;stroke-opacity:.52;stroke-dasharray:2 7;animation:atlas-spiral-flow 9s linear infinite}
@keyframes atlas-spiral-flow{to{stroke-dashoffset:-28}}
.journey-comet{pointer-events:none;width:9px;height:9px;border-radius:50%;background:#f7eac1;box-shadow:0 0 14px 6px #edcb8288,0 0 35px #fae7b888}
.journey-thread{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;overflow:hidden;fill:none;stroke:#fff0bd;stroke-width:var(--thread-width,1);filter:drop-shadow(0 0 3px #a3e8e4);opacity:.9}
.journey-thread .thread-base{stroke:#c1efe6;stroke-width:1;stroke-dasharray:2 7;opacity:.5}
.journey-thread[data-form="threads"] .thread-base{stroke-dasharray:none}
.journey-thread[data-form="dots"] circle{fill:#fff0bd;stroke:none}
#context{font-size:.79rem;line-height:1.4;margin:8px 0 3px;color:#eee6cc;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
#context[hidden],#project-links[hidden]{display:none}
#project-links a{display:inline-flex;align-items:center;min-height:44px;font-size:.75rem;color:#fff0bd;text-decoration:underline;text-underline-offset:3px}
#project-links{display:flex;gap:4px 14px;flex-wrap:wrap}
.doors{flex-wrap:wrap}.place-entry{display:flex;gap:8px;margin:8px 0 16px}.place-entry input{min-width:0;flex:1;font:inherit;color:var(--paper);border:1px solid var(--line);background:#0b2630;padding:10px;border-radius:8px}#place-form label{font-size:.85rem}#place-results{list-style:none;margin:0;padding:0}#place-results button{width:100%;text-align:left;border-radius:6px;margin-bottom:6px}#place-results small{display:block;color:var(--muted);font-size:.72rem}.searched-place{display:block;width:22px;height:22px;border:2px solid #f6f1ce;border-radius:50%;box-shadow:0 0 0 4px #183c4d99,0 0 15px #f8edb899;pointer-events:none}.searched-place:after{content:'';display:block;position:absolute;inset:6px;border:1px solid #f6f1ce;border-radius:50%}@media(max-width:700px){.doors :is(button,a){padding-inline:10px}}
.context-links{display:grid;gap:5px;margin:14px 0}.context-links a{display:flex;align-items:center;min-height:44px;line-height:1.4;color:#fff0bd;font-size:.85rem;text-decoration:underline}
#source-body details{border-top:1px solid var(--line);padding-top:12px;margin-top:16px}#source-body summary{cursor:pointer;min-height:44px;font-size:.85rem}
.place-choices>div{border-bottom:1px solid var(--line);padding-bottom:4px}.place-choices a{display:flex;align-items:center;min-height:44px;font-size:.72rem;color:#fff0bd;text-decoration:underline}
@media(max-width:700px){#context{font-size:.72rem;margin-top:6px;-webkit-line-clamp:3}#project-links a{font-size:.7rem}.cartel{max-height:calc(100dvh - 175px);overflow-y:auto}}
.user-location{pointer-events:none;width:15px;height:15px;border:3px solid #eefaff;background:#188ebb;border-radius:50%;box-shadow:0 0 0 8px #3ab4dc44}
.landmark{pointer-events:none;max-width:180px;font:600 11px/1.2 system-ui;color:#163f4b;background:#ecf2d5b8;padding:3px 7px;border-radius:5px;text-align:center;text-shadow:none}
.place-choices{max-height:48dvh;overflow:auto}.place-choices button{min-height:44px}
.star.current .light{box-shadow:0 0 18px #fff0babb,0 0 0 4px #f5e4b52b}
@media(max-width:700px){
 .voyage-controls{gap:4px;margin-top:7px}.voyage-controls button{font-size:.65rem;padding:7px 9px}
 .map-tools{display:grid;grid-template-columns:44px 44px 44px;width:140px;gap:4px;align-items:stretch}
 .map-tools :is(#auto,#world){grid-column:auto;width:44px;max-width:44px;padding:4px;line-height:1.15;font-size:.65rem}
 .map-tools #full{grid-column:1/-1;width:140px;max-width:140px}
 .has-listening .cartel{max-height:calc(100dvh - 310px)}
 .map-tools :is(#compass,#near){width:44px;max-width:44px;padding:4px;line-height:1.15;font-size:.62rem}
 .map-tools #compass{font-size:.66rem;padding:8px 10px}
 .paths small{font-size:.66rem}.landmark{max-width:130px;font-size:10px}
}
@media(prefers-reduced-motion:reduce){.display-spiral path{animation:none}}

/* Fine Atlas lights, with independent touch/keyboard targets. */
.star{position:absolute}
.star.compact-point{width:26px;height:26px;min-height:26px;border-radius:50%}
.star .light{background:var(--point-color,#DCC489)!important;box-shadow:0 0 10px color-mix(in srgb,var(--point-color,#DCC489) 65%,transparent),0 0 0 1px #123c51}
.star[data-format="geo_biography"] .light{border-radius:2px;transform:rotate(45deg)}
.star[data-format="traversee"] .light{border-radius:1px;transform:rotate(45deg)}
.star[data-format="signal-journalistique"] .light{background:transparent!important;border:2px solid var(--point-color)}
.star.current{z-index:1}.star.current:after{inset:0;border-color:var(--point-color,#f9e2a5)}
.place-choices button{border-left:3px solid var(--point-color,#DCC489)}
/* Compact listening frame; context opens without leaving the map. */
.cartel{width:min(460px,calc(100% - 130px));padding:12px 16px;max-height:calc(100dvh - 175px);overflow:auto}
.card-heading{display:flex;justify-content:flex-end;height:28px;margin:-6px -8px 0 0}
#card-toggle{min-height:44px;padding:4px 10px;position:relative;top:-8px;font-size:.7rem;background:transparent;border:0;color:var(--muted)}
.cartel h2{font-size:1.24rem;line-height:1.18;margin:5px 0 7px}
.cartel .play-controls{margin-top:10px;display:grid;grid-template-columns:1fr 1fr auto auto;gap:5px}
.cartel .play-controls button{min-height:44px;font-size:.74rem;padding:7px 9px;white-space:nowrap}
#card-more{background:transparent;color:var(--muted)}
#card-depth{padding-top:14px;margin-top:12px;border-top:1px solid var(--line)}
#quality-status{font-size:.72rem;color:var(--muted);margin-top:10px}
.extra-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}
.selection-label,.quality-filter{font-size:.76rem;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
select{min-height:44px;max-width:100%;font:inherit;color:var(--paper);background:#102e35;border:1px solid var(--line);border-radius:8px;padding:6px 8px}
.quality-filter{margin-top:14px}.level-option{flex-wrap:wrap}.level-option input{width:20px;min-height:44px}.level-option small{font-size:.68rem}
.cartel .secondary button{min-height:44px}.cartel input[type=range]{min-height:44px}
#status{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.67rem;margin-top:7px}
.cartel.is-folded{width:min(390px,calc(100% - 130px))}.cartel.is-folded .card-heading{height:26px;justify-content:flex-start}.cartel.is-folded #status{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}.cartel.is-folded .play-controls{margin-top:0}
@media(max-width:700px){
 .cartel,.has-listening .cartel{left:10px;bottom:max(25px,env(safe-area-inset-bottom));width:calc(100% - 20px);max-height:calc(100dvh - 210px);padding:10px 12px}
 .cartel h2{font-size:1.1rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
 #place{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
 .cartel .play-controls button{font-size:.7rem;padding:7px 8px}
 .cartel.is-folded{width:calc(100% - 20px)}
 #card-depth{max-height:37dvh;overflow:auto;overscroll-behavior:contain}
 .cartel #widget iframe{height:100px}
}

#programme-status{font-size:.75rem;color:var(--muted);margin-top:8px}

/* A grouped place keeps the presence of its real microphone legible. */
.star.has-microphone::after{content:"◉";position:absolute;right:0;top:0;color:#7fe6e2;font:700 11px/1 system-ui;text-shadow:0 0 3px #092b33;pointer-events:none}
