/* Habillage partagé : carte et contenu indépendants de la direction artistique. */
:root {
  color-scheme: dark;
  --paper:#102c40; --ink:#f1e9d7; --teal:#a1c4b0; --gold:#c1a36e;
  --line:#3c5964; --muted:#b2c3c8; --surface:#17384a; --inset:#1a4047;
  --frame:#8a886e; --sea:#0a2132; --focus:#efca85;
  --selected:#c1a36e; --selected-text:#112f3b; --pin:#183d43; --pin-accent:#f1d8a1;
  --shadow:0 18px 45px #03101b40; --header:#0c2335;
}
:root[data-theme="ghost"] {
  --paper:#091c3e; --ink:#ecf6ee; --teal:#b8f6d3; --gold:#b2a077;
  --line:#3a736b; --muted:#bbd6cf; --surface:#102e53; --inset:#124e42;
  --frame:#59b88d; --sea:#081730; --focus:#adffd0;
  --selected:#b8f6d3; --selected-text:#082f29; --pin:#103c32; --pin-accent:#a2f5bc;
  --header:#0c243f;
}
body { background:var(--paper); }
.motif-library { position:absolute; width:0; height:0; overflow:hidden; pointer-events:none; }
.site-header { background:var(--header); min-height:88px; border-bottom-color:var(--line); padding-top:16px; padding-bottom:16px; }
.visibility-banner { margin:0; padding:12px clamp(18px,3vw,56px); border-bottom:1px solid var(--teal); background:var(--inset); color:var(--ink); font-size:13px; font-weight:600; letter-spacing:.03em; text-align:center; }
#atlas-unavailable { padding:32px; border:1px solid var(--line); background:var(--surface); color:var(--ink); text-align:center; }
.brand { font-family:Georgia,'Palatino Linotype',serif; font-weight:normal; }
.brand-mark { color:var(--gold); }
nav { font-size:14px; }
.nav-atlas { border-bottom-color:var(--gold); }
.edition { font-size:10px; }
.edition span { color:var(--gold); border-color:var(--frame); }
main { max-width:1800px; padding:0 clamp(18px,3vw,56px); }
.section-heading { padding:25px 0 23px; }
h1,h2 { font-family:'Palatino Linotype',Georgia,serif; }
h1 { font-size:clamp(32px,3.2vw,48px); letter-spacing:-.6px; }
.eyebrow { font-size:11px; font-weight:600; letter-spacing:2.1px; }
.heading-aside { display:flex; align-items:center; gap:25px; }
.heading-note { font-size:14px; }
.heading-compass { width:70px; height:70px; color:var(--teal); opacity:.65; flex-shrink:0; }
.atlas-shell { display:block; padding:5px; border:1px solid var(--frame); border-radius:2px; background:var(--header); box-shadow:var(--shadow); }
.map-wrap { background:var(--sea); border:1px solid #af9c6b70; }
.map-viewport { width:100%; height:auto; aspect-ratio:6792 / 3704; background:var(--sea); }
/* Aucun filtre, masque, déformation ou décoration sur l'illustration. */
.map-controls { top:14px; right:14px; border:1px solid var(--frame); border-radius:2px; background:var(--header); box-shadow:0 4px 12px #07182640; }
.map-controls button { width:42px; height:42px; color:var(--ink); }
.map-controls button:hover { background:var(--inset); }
.map-caption { background:#102c40e8; color:#e2d6b7; font-size:9px; letter-spacing:1.3px; }
.map-footer { padding:13px 1px 21px; font-size:12px; align-items:center; }
/* La cible reste confortable ; seul le petit sceau central est visible. */
.map-marker { width:44px; height:44px; min-height:44px; display:grid; place-items:center; }
.marker-dot { width:16px; height:16px; border:1px solid var(--pin-accent); border-radius:50%; font-size:12px; line-height:1; color:var(--pin-accent); background:#16394399; box-shadow:0 0 0 1px #12333c88; }
.marker-label { position:absolute; top:40px; left:50%; transform:translateX(-50%); visibility:hidden; background:var(--header); color:var(--ink); border:1px solid var(--frame); font-size:12px; font-weight:400; padding:5px 9px; border-radius:2px; }
.map-marker:hover .marker-label,.map-marker:focus-visible .marker-label { visibility:visible; }
.map-marker:hover .marker-dot,.map-marker:focus-visible .marker-dot { background:var(--pin); box-shadow:0 0 0 4px #e8d5a42b; }
/* Ruban sable : respiration éditoriale sous la carte. */
.atlas-index {
  --ink:#173d46; --teal:#43685d; --muted:#536863; --line:#c7bfa6; --frame:#829488; --gold:#786034;
  height:auto; padding:23px 25px 18px; background:#e5ddc7; color:var(--ink); display:block;
  border:1px solid #c6bb9d; border-top:3px solid #829c88; border-radius:2px;
}
.escales-heading { display:flex; align-items:center; gap:24px; margin-bottom:17px; }
.escales-heading h2 { font-size:28px; margin:0; }
.escales-heading .eyebrow { font-size:10px; margin-bottom:7px; }
.escales-heading .muted { margin:0 auto 0 0; font-size:14px; }
.ribbon-controls { display:flex; gap:7px; margin-left:auto; }
.ribbon-controls button { width:40px; height:40px; border:1px solid #a6ad94; border-radius:50%; background:transparent; color:var(--ink); font-size:20px; }
.ribbon-controls button:hover:not(:disabled) { background:#ced3bb; }
.place-list { display:flex; gap:12px; margin:0; min-height:0; max-height:none; overflow-x:auto; overflow-y:hidden; padding:0 2px 13px; scrollbar-width:thin; scrollbar-color:var(--frame) transparent; scroll-snap-type:x proximity; }
.place-list a { flex:0 0 210px; min-height:66px; display:grid; grid-template-columns:23px 1fr 15px; gap:10px; padding:12px; border:1px solid var(--line); background:#f2ebd72e; scroll-snap-align:start; font-size:15px; }
.place-list a:hover { background:#f3eddd; border-color:#829488; color:var(--ink); }
.place-list a>span:nth-child(2) { overflow-wrap:anywhere; }
.place-number { color:var(--gold); font:12px Georgia,serif; }
.place-list a>span:last-child { color:var(--teal); }
[data-theme="ghost"] .atlas-index { background:#a8d9c0; border-color:#78ad96; --line:#7bad98; --muted:#335c52; }
.nautical-divider { display:flex; gap:20px; align-items:center; justify-content:center; padding:27px 0; color:var(--teal); opacity:.7; }
.nautical-divider span { height:1px; width:120px; background:var(--line); }
.nautical-divider svg { width:28px; height:28px; }
.archives-grid { gap:24px; padding-bottom:45px; }
.archive-card { position:relative; padding:28px; min-height:240px; border:1px solid var(--line); border-top:2px solid #6c9787; background:var(--surface); }
.archive-card .eyebrow { padding-right:38px; min-height:26px; font-size:10px; line-height:1.6; }
.archive-card h2 { font-size:28px; margin-bottom:18px; }
.archive-card.newspaper { background:#e7dfc9; --ink:#183c45; --teal:#466c5c; --muted:#516762; --line:#bfb69d; color:var(--ink); border-top-color:var(--gold); }
.newspaper h2 { font-size:32px; }
.archive-card.characters { background:var(--inset); }
.section-motif { position:absolute; top:21px; right:22px; width:42px; height:42px; color:var(--teal); opacity:.65; pointer-events:none; }
.rule { border-color:#ac9d79; }
.soon { color:var(--muted); border-color:var(--line); font-size:12px; }
.portrait-placeholders>span { background:transparent; border-color:#779588; color:#9bb9ac; }
.site-footer { background:var(--header); border-color:var(--line); padding-top:25px; padding-bottom:25px; }
.source-card,.content-status,.map-quote { background:var(--inset); color:var(--ink); border-color:var(--line); }
.source-card hr { border-color:var(--line); }
.tabs button { border-radius:0; }
.tabs [aria-selected=true] { border-bottom-color:var(--gold); }
.theme-switch { display:flex; flex-shrink:0; gap:2px; padding:3px; border:1px solid var(--line); border-radius:2px; background:transparent; }
.theme-switch button { min-height:34px; padding:6px 10px; border:0; border-radius:1px; font-size:12px; background:transparent; color:var(--muted); white-space:nowrap; }
.theme-switch button:hover { color:var(--ink); }
.theme-switch button[aria-pressed=true] { background:var(--selected); color:var(--selected-text); }
a:focus-visible,button:focus-visible,[tabindex]:focus-visible { outline-color:var(--focus); }
.atlas-index a:focus-visible,.atlas-index button:focus-visible,.place-list:focus-visible { outline-color:#315e56; }
@media(min-width:701px) and (max-width:1150px) {
  .site-header { flex-wrap:wrap; gap:14px; }
  .heading-compass { width:52px; height:52px; }
  .heading-aside { gap:15px; }
  .heading-note { max-width:240px; }
  .archive-card { padding:22px; }
}
@media(max-width:700px) {
  .site-header { padding:16px 18px; gap:14px; }
  .brand { font-size:23px; }
  .site-header nav { width:auto; font-size:14px; gap:20px; }
  .theme-switch { margin-left:auto; }
  .theme-switch button { padding:6px 8px; font-size:11px; }
  .section-heading { padding:24px 0 20px; }
  .heading-aside { margin-top:14px; }
  .heading-note { margin:0; max-width:none; font-size:13px; }
  .heading-compass { width:42px; height:42px; margin-left:auto; }
  .atlas-shell { display:block; padding:3px; }
  .map-viewport { aspect-ratio:auto; height:410px; }
  .map-controls { top:8px; right:8px; }
  .map-caption { font-size:8px; letter-spacing:.4px; }
  .map-footer { padding-bottom:18px; }
  .atlas-index { padding:18px 15px 12px; }
  .atlas-index>div:first-child { display:flex; }
  .escales-heading { flex-wrap:wrap; gap:8px 12px; margin-bottom:16px; }
  .escales-heading .muted { order:3; width:100%; font-size:13px; }
  .escales-heading h2 { font-size:26px; }
  .place-list { display:flex; max-height:none; gap:10px; }
  .place-list a { flex-basis:185px; font-size:14px; min-height:62px; padding:12px; border:1px solid var(--line); }
  .nautical-divider { padding:22px 0; }
  .archives-grid { gap:16px; }
  .archive-card { min-height:0; padding:25px; }
  .marker-label { display:none; }
  .map-marker:focus-visible .marker-label { display:block; }
}

/* Variante sans doré : seules les cinq couleurs validées structurent l'interface. */
:root[data-theme="algae"] {
  --paper:#102735; --header:#102735; --surface:#183C4C; --inset:#183C4C;
  --ink:#EEEDE2; --muted:#A1C9B9; --teal:#A1C9B9; --gold:#A1C9B9;
  --line:#376B68; --frame:#376B68; --sea:#102735; --focus:#A1C9B9;
  --selected:#A1C9B9; --selected-text:#102735; --pin:#183C4C; --pin-accent:#A1C9B9;
}
[data-theme="algae"] .atlas-index,
[data-theme="algae"] .archive-card.newspaper {
  --ink:#EEEDE2; --teal:#A1C9B9; --muted:#A1C9B9; --line:#376B68;
  --frame:#A1C9B9; --gold:#A1C9B9;
  background:#183C4C; color:var(--ink); border-color:#376B68;
}
[data-theme="algae"] .archive-card.characters { background:#183C4C; }
[data-theme="algae"] .map-wrap,
[data-theme="algae"] .archive-card,
[data-theme="algae"] .rule,
[data-theme="algae"] .ribbon-controls button { border-color:#376B68; }
[data-theme="algae"] .map-caption { color:#EEEDE2; background:#102735ed; }
[data-theme="algae"] .place-list a { background:#102735; }
[data-theme="algae"] .place-list a:hover,
[data-theme="algae"] .ribbon-controls button:hover:not(:disabled) { background:#376B68; border-color:#A1C9B9; }
[data-theme="algae"] .marker-dot { background:#183c4c99; box-shadow:0 0 0 1px #10273588; }
[data-theme="algae"] .map-marker:hover .marker-dot,
[data-theme="algae"] .map-marker:focus-visible .marker-dot { background:#183C4C; box-shadow:0 0 0 4px #a1c9b92b; }
[data-theme="algae"] .portrait-placeholders>span { color:#A1C9B9; border-color:#376B68; }
[data-theme="algae"] .atlas-index a:focus-visible,
[data-theme="algae"] .atlas-index button:focus-visible,
[data-theme="algae"] .place-list:focus-visible { outline-color:#A1C9B9; }
/* Symboles de même famille, uniquement sur les panneaux et séparateurs. */
.corner-motif { position:absolute; right:12px; bottom:8px; width:108px; height:108px; color:var(--teal); opacity:.13; pointer-events:none; }
.section-motif { --motif-cutout:var(--surface); }
.nautical-divider svg { width:52px; }
.heading-note { min-height:48px; }
@media(max-width:700px) { .heading-note { min-height:44px; } }

/* Deux signatures visibles dès l'en-tête, sans toucher aux pixels des cartes. */
:root[data-theme="atlas"] {
  --paper:#112b3b; --header:#102836; --surface:#1b3b48; --inset:#244650;
  --line:#665f4d; --frame:#a7916a; --teal:#b7c7b1; --gold:#d7b77d;
  --focus:#f0cf91; --selected:#d7b77d; --selected-text:#182b34;
}
[data-theme="atlas"] .site-header { border-bottom:3px solid #d7b77d; background:linear-gradient(115deg,#112b3b,#24434a); }
[data-theme="atlas"] .home-search-band,
[data-theme="atlas"] .archive-card,
[data-theme="atlas"] .map-library-card { border-top:2px solid #bc9d6b; }
[data-theme="atlas"] .archive-card.newspaper,
[data-theme="atlas"] .atlas-index { background:#e7deca; }
[data-theme="atlas"] .home-search-form button,
[data-theme="atlas"] .theme-switch button[aria-pressed=true] { background:#d7b77d; border-color:#d7b77d; color:#182b34; }
[data-theme="atlas"] .site-header nav a[aria-current="page"] { border-bottom-color:#d7b77d; }
[data-theme="atlas"] .section-motif,
[data-theme="atlas"] .heading-compass { color:#d7b77d; }

:root[data-theme="algae"] {
  --paper:#0c2934; --header:#0b2632; --surface:#174451; --inset:#23525a;
  --line:#397d7b; --frame:#5caaa2; --teal:#a1d9cf; --gold:#a1d9cf;
  --selected:#a1d9cf; --selected-text:#102735; --focus:#b7eee0;
}
[data-theme="algae"] .site-header { border-bottom:3px solid #70c7bd; background:linear-gradient(110deg,#0b2632,#145462); }
[data-theme="algae"] .home-search-band,
[data-theme="algae"] .archive-card,
[data-theme="algae"] .map-library-card { border-top:2px solid #5ab6ac; }
[data-theme="algae"] .archive-card.newspaper,
[data-theme="algae"] .atlas-index { background:#1d4c56; }
[data-theme="algae"] .home-search-form button,
[data-theme="algae"] .theme-switch button[aria-pressed=true] { background:#a1d9cf; border-color:#a1d9cf; color:#102735; }
[data-theme="algae"] .site-header nav a[aria-current="page"] { border-bottom-color:#a1d9cf; }
[data-theme="algae"] .section-motif,
[data-theme="algae"] .heading-compass { color:#91d7cc; }
[data-theme="algae"] .rule { border-color:#397d7b; }
[data-theme="algae"] .ribbon-controls button { border-color:#5caaa2; }
