/* Arcmarch, menus du socle (14 octobre 2026, contrat docs/rapports/2026-10-13/socle_visuel/CONTRAT_MENUS.md).
   Tout l'habillage lu par le joueur parle la langue de la Cité de l'Invasion (pilote v2, invasion.css) : surfaces de
   lecture ivoire, cartes blanches, encre, UN bouton d'action azur par écran, l'ennemi et les alertes en rouge, les gains
   en or ; plus aucun rectangle bleu nuit. Cette feuille charge EN DERNIER et ne fait qu'habiller : aucune règle de jeu,
   aucun flux. Aucun filter ni backdrop-filter sur #canvas. Les règles de cadre étroit ou court sont en fin de feuille,
   après leurs règles de base (une requête de média n'ajoute aucune spécificité). */
:root {
  --sm-iv:#FBF7EC; --sm-iv2:#F1E8CF; --sm-bord:#D8C9A3; --sm-ink:#12233F; --sm-ink2:#46566F; --sm-blanc:#FFFFFF;
  --sm-gris-texte:#34405A; --sm-rouge:#D1242E; --sm-rouge-s:#8E1520; --sm-or-s:#946508; --sm-vert:#2E6B22;
  --sm-ombre:0 3px 0 #BFAE84, 0 6px 14px rgba(8,20,48,.28);
  --sm-ombre-carte:0 8px 30px rgba(0,0,0,.5);
  --sm-azur-face:linear-gradient(to bottom, var(--azur-haut), var(--azur) 55%, var(--azur-appui));
  --sm-tranche:0 5px 0 var(--azur-tranche), 0 0 17px rgba(0,143,255,.54), 0 9px 20px rgba(0,8,24,.5);
  --sm-tranche-appui:0 1px 0 var(--azur-tranche), 0 0 9px rgba(0,143,255,.4);
  --sm-voile:radial-gradient(ellipse at 50% 35%, rgba(6,16,30,.35), rgba(6,16,30,.82));
  /* la barre basse du socle : 64 points, posée au bord bas */
  --barre-h:64px; --nav-h:calc(64px + var(--safe-b));
}

/* ================================================================ boutons : la famille du socle
   Principal : face azur (dégradé haut → azur → appui), coins de 16, tranche cobalt, arête claire. Secondaire : bordé
   d'encre sur fond blanc. Or (la vidéo qui double le butin) : bordé d'or sombre. Les calques inclinés de D (::before, ::after)
   sont retirés par #stage, plus fort que toute règle de classe des feuilles d'avant. */
#stage .menu-command::before, #stage .menu-command::after { content:none; }
.menu-command { border-radius:16px; min-height:48px; padding:0 16px; margin:0 0 7px; color:var(--sm-ink); text-shadow:none; isolation:auto;
  background:var(--sm-blanc); border:2px solid var(--sm-ink); box-sizing:border-box; font:italic 900 21px/1.1 var(--f-titre); letter-spacing:.02em;
  transition:transform var(--t-appui) var(--courbe), box-shadow var(--t-appui) var(--courbe); }
.menu-command:active { transform:translateY(2px); background:var(--sm-iv2); }
.menu-command:focus-visible { outline:3px solid var(--azur); outline-offset:2px; }
.menu-command.primary { margin-inline:0; width:100%; min-height:58px; border:0; color:#fff; background:var(--sm-azur-face);
  box-shadow:var(--sm-tranche), inset 0 2px 0 rgba(230,251,255,.95); text-shadow:0 2px 0 rgba(0,40,120,.6); }
.menu-command.primary:active { transform:translateY(3px); background:var(--sm-azur-face); box-shadow:var(--sm-tranche-appui), inset 0 2px 0 rgba(230,251,255,.95); }
.menu-command.primary strong, .menu-command.primary .cmd-main { font:italic 900 32px/1 var(--f-titre); letter-spacing:.015em; }
.menu-command .command-copy small { color:var(--azur-clair); text-shadow:0 1px 0 rgba(0,30,90,.6); }
.menu-command:not(.primary) .command-copy small { color:var(--sm-ink2); text-shadow:none; }
.menu-command:disabled, .menu-command[aria-disabled="true"], .menu-command.primary:disabled, .menu-command.primary[aria-disabled="true"] {
  color:#EEF2F8; border:0; background:linear-gradient(#9AA8BC, #7F8DA3); box-shadow:0 4px 0 #566178, inset 0 2px 0 rgba(255,255,255,.5); text-shadow:none; transform:none; }
.menu-command.or { border:2px solid var(--sm-or-s); background:#FFF7DE; color:var(--sm-ink); box-shadow:0 3px 0 #D9B86A; }
.menu-command.or:active { transform:translateY(2px); box-shadow:none; }
.menu-command.secondary, .menu-command.releve { border-color:var(--sm-ink); }
/* lien d'action (« Retour à la Cité ») : encre sur ivoire */
.lien-action { color:var(--sm-ink2); text-shadow:none; text-decoration-color:rgba(18,35,63,.45); font-weight:700; }
.lien-action:active { color:var(--sm-ink); }
/* bouton de retour (et fermer) : la pastille ivoire de 48 × 56 du socle, sauf la pause de bataille (HUD inchangé) */
.round-btn:not(#hud-pause):not(.ad-close):not(.ad-mute) { width:48px; height:56px; border-radius:12px; color:var(--sm-ink); background:var(--sm-iv);
  border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); box-sizing:border-box; }
.round-btn:not(#hud-pause):not(.ad-close):not(.ad-mute) .picon { width:24px; color:var(--sm-ink); }
.round-btn:not(#hud-pause):not(.ad-close):not(.ad-mute):active { transform:translateY(2px); background:var(--sm-iv2); box-shadow:0 1px 0 #BFAE84, 0 3px 8px rgba(8,20,48,.28); }
.round-btn:not(#hud-pause):focus-visible { outline:3px solid var(--azur); outline-offset:2px; }
/* jauges posées sur une surface ivoire : piste sable, remplissage azur (le HUD de bataille garde les siennes) */
.screen .sangle { background:#E4DAC0; box-shadow:none; }
.screen .sangle > i { background:linear-gradient(90deg, var(--azur-haut), var(--azur)); box-shadow:none; }
.screen .sangle.braise > i { background:linear-gradient(90deg, #E04B52, var(--sm-rouge)); }
/* signets : mots d'encre, le choisi souligné d'azur, sans biais ni lueur */
[role="tablist"] { border-bottom:1.5px solid var(--sm-bord); gap:14px; }
[role="tab"] { color:var(--sm-ink2); }
[role="tab"][aria-selected="true"] { color:var(--sm-ink); }
[role="tab"][aria-selected="true"]::after { transform:none; height:4px; border-radius:4px 4px 0 0; background:linear-gradient(90deg, var(--azur-haut), var(--azur)); box-shadow:none; }
[role="tab"]:active { color:var(--sm-ink); }
button:focus-visible, [tabindex]:focus-visible, summary:focus-visible, input:focus-visible { outline-color:var(--azur); }

/* ================================================================ 1. barre basse : ivoire, 64 points, onglet actif azur à trait haut, badges rouges */
#nav-rail { left:0; right:0; bottom:0; height:var(--nav-h); padding:0 var(--safe-r) var(--safe-b) var(--safe-l); border:0; border-top:2px solid var(--or); border-radius:16px 16px 0 0;
  background:var(--sm-iv); box-shadow:0 -4px 16px rgba(8,20,48,.28); color:var(--sm-ink2); isolation:auto; }
#nav-rail::before, #nav-rail::after, #nav-rail:has(> button.on)::before { content:none; display:none; }
.nav button { height:var(--barre-h); gap:3px; color:var(--sm-ink2); }
.nav button + button::before { content:none; }
.nav button .picon { width:27px; filter:none; }
.nav .nav-lbl, .nav .lv { font:700 13px/1 var(--f-texte); text-shadow:none; }
.nav button.on { color:var(--azur); }
.nav button.on .picon { filter:none; }
.nav button.on::after { content:''; position:absolute; top:-2px; left:26%; right:26%; height:5px; border-radius:0 0 4px 4px; background:linear-gradient(90deg, var(--azur-haut), var(--azur)); pointer-events:none; }
.nav button.locked { color:#8E97A8; }
.nav button.locked .picon { opacity:.55; }
.nav .lv { color:var(--sm-or-s); text-shadow:none; }
.nav button:focus-visible { outline:3px solid var(--azur); outline-offset:-4px; border-radius:12px; }
.nav .badge.pastille { top:4px; right:calc(50% - 26px); min-width:18px; height:18px; padding:0 5px; border-radius:9px; background:var(--sm-rouge); color:#fff;
  font:800 12px/18px var(--f-texte); box-shadow:0 0 0 2px var(--sm-iv); }
/* la Cité au-dessus : la barre ivoire porte le pied, le voile nuit du bas s'allège */
.screen.home::after { background:linear-gradient(to top, rgba(2,8,22,.55), rgba(2,8,22,.3) 46%, rgba(2,8,22,0)); }
.screen.home.invasion::after { height:calc(var(--nav-h) + 150px); }

/* ================================================================ 2. écrans opaques : papier ivoire, en-tête en pastilles (retour 48 × 56, titre, bourses) */
.screen.panel:not(.carte-screen), .screen.panel[data-screen="shop"], .screen.panel[data-screen="missions"] { color:var(--sm-ink);
  background:radial-gradient(120% 60% at 50% -10%, #FFFDF5 0%, var(--sm-iv) 55%, #EFE5C9 100%); }
.screen.panel { padding:0 0 var(--nav-h); }
.screen.panel:not(.carte-screen) > .head, .screen.panel[data-screen="shop"] > .head, .screen.panel[data-screen="missions"] > .head { display:flex; min-height:0; gap:6px; align-items:center;
  padding:calc(var(--safe-t) + 8px) calc(10px + var(--safe-r)) 8px calc(10px + var(--safe-l)); border-bottom:0; background:none; }
.screen.panel:is([data-screen="shop"], [data-screen="missions"]) > .head > .round-btn, .screen.panel:is([data-screen="shop"], [data-screen="missions"]) > .head > .head-titles,
.screen.panel:is([data-screen="shop"], [data-screen="missions"]) > .head > .purse { grid-column:auto; grid-row:auto; justify-self:auto; }
.screen.panel > .head > .head-titles { flex:1; min-width:0; justify-content:center; height:56px; box-sizing:border-box; padding:0 12px; border-radius:12px; background:var(--sm-iv);
  border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); isolation:auto; }
.screen.panel:is([data-screen="shop"], [data-screen="missions"]) .head-titles::before { content:none; }
.panel-title, .screen.panel[data-screen="shop"] .head-titles .panel-title { font:italic 900 26px/1 var(--f-titre); color:var(--sm-ink); text-shadow:none; overflow:hidden; text-overflow:ellipsis; }
.screen.panel > .head > .purse { flex:none; gap:5px; max-width:none; flex-wrap:nowrap; }
.screen.panel > .head > .purse > .purse-line { height:56px; min-width:0; box-sizing:border-box; padding:0 9px 0 7px; gap:5px; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); }
.purse .picon { width:22px; }
.purse .val { font:italic 900 19px/1 var(--f-titre); color:var(--sm-ink); text-shadow:none; }
/* la feuille : plus de plaque nuit, une colonne de cartes blanches sur le papier */
.menu-feuille, .screen.panel:is([data-screen="shop"], [data-screen="missions"]) .menu-feuille { padding:2px calc(10px + var(--safe-r)) 0 calc(10px + var(--safe-l)); }
#stage .menu-feuille.panneau-d3::before, #stage .screen.panel[data-screen="shop"] .menu-feuille::before, #stage .screen.panel[data-screen="missions"] .menu-feuille::before { content:none; }
.scroll-area, .screen.panel:is([data-screen="shop"], [data-screen="missions"]) .scroll-area { padding:8px 0 24px; scrollbar-width:none;
  -webkit-mask-image:linear-gradient(to bottom, #000 0, #000 calc(100% - 20px), transparent 100%); mask-image:linear-gradient(to bottom, #000 0, #000 calc(100% - 20px), transparent 100%); }
.screen.panel:is([data-screen="shop"], [data-screen="missions"]) .scroll-area::-webkit-scrollbar { display:none; }
.shop-h, .screen.panel[data-screen="shop"] .shop-h { margin:8px 4px 6px; font:800 12px/1.2 var(--f-texte); letter-spacing:.1em; text-transform:uppercase; color:var(--sm-ink2); }
.list + .shop-h { border-top:0; }
/* ---------- Missions : cartes blanches, jauge azur, gain en pastille or (déjà la couleur du gain), fait en vert */
.mission, .screen.panel[data-screen="missions"] .mission { min-height:0; margin:0 0 6px; padding:10px 10px 10px 12px; border-radius:14px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); color:var(--sm-ink); }
.mission + .mission, .screen.panel[data-screen="missions"] .mission + .mission { border-top:1.5px solid var(--sm-bord); }
.mission .mission-emblem, .screen.panel[data-screen="missions"] .mission-emblem { width:44px; height:44px; padding:10px; border-radius:12px; clip-path:none; background:var(--sm-iv2); color:var(--sm-ink);
  box-shadow:inset 0 0 0 1.5px var(--sm-bord); }
.mission .name { font:800 16px/1.15 var(--f-texte); color:var(--sm-ink); }
.mission-featured .name, .screen.panel[data-screen="missions"] .mission-featured .name { font-size:17px; color:var(--sm-ink); }
.mission .desc { font:600 13px/1.3 var(--f-texte); color:var(--sm-ink2); }
.mission .prog { font:italic 900 17px/1 var(--f-titre); color:var(--sm-ink); }
.mission .objective .picon { color:var(--sm-ink2); }
.mission .bar, .screen.panel[data-screen="missions"] .mission .bar { height:8px; border-radius:4px; background:#E4DAC0; box-shadow:none; }
.mission .bar i, .screen.panel[data-screen="missions"] .mission .bar i { border-radius:4px; background:linear-gradient(90deg, var(--azur-haut), var(--azur)); }
.mission .claim { min-width:0; min-height:44px; padding:0 12px 0 8px; border-radius:12px; background:linear-gradient(180deg, var(--or-clair), var(--or) 60%); color:var(--or-texte);
  box-shadow:0 3px 0 var(--or-tranche); font:italic 900 20px/1 var(--f-titre); gap:5px; }
.mission .claim .picon { width:22px; }
.mission .claim:disabled { background:var(--sm-blanc); box-shadow:inset 0 0 0 1.5px var(--sm-bord); color:var(--sm-ink2); }
.mission .claim.done { box-shadow:none; color:var(--sm-vert); font:800 14px/1.1 var(--f-texte); }
.mission .claim:not(:disabled):active { background:var(--or-appui); transform:translateY(2px); box-shadow:0 1px 0 var(--or-tranche); }
.mission .claim:focus-visible { outline:3px solid var(--azur); outline-offset:2px; }
.am-status-text + .am-status-check { color:var(--sm-vert); }
/* ---------- Boutique : cartes blanches, prix en pastille azur (l'action de la ligne), stock et verrou en encre */
.shop-row, .screen.panel[data-screen="shop"] .shop-row { min-height:0; margin:0 0 6px; padding:10px 10px 10px 12px; border-radius:14px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); color:var(--sm-ink); }
.shop-row + .shop-row, .screen.panel[data-screen="shop"] .shop-row + .shop-row { border-top:1.5px solid var(--sm-bord); }
.shop-row .name { font:800 16px/1.15 var(--f-texte); color:var(--sm-ink); }
.shop-row .desc { font:600 13px/1.3 var(--f-texte); color:var(--sm-ink2); }
.shop-row .tag { font:600 12px/1.2 var(--f-texte); color:var(--sm-ink2); }
.shop-row .tag.owned { color:var(--azur-appui); }
.shop-row .price { min-width:0; height:44px; padding:0 12px 0 8px; border-radius:12px; background:var(--sm-azur-face); color:#fff; box-shadow:0 3px 0 var(--azur-tranche);
  font:italic 900 20px/1 var(--f-titre); isolation:auto; }
#stage .shop-row .price::before, #stage .mission .claim::before { content:none; }
.mission .claim, .shop-row .price { isolation:auto; margin-bottom:0; }
.shop-row .price .picon { width:22px; }
.shop-row:active .price { background:var(--sm-azur-face); transform:translateY(2px); box-shadow:0 1px 0 var(--azur-tranche); }
.shop-row.locked { opacity:1; }
.shop-row.locked .name, .shop-row.locked .desc { color:var(--sm-ink2); }
.shop-row.locked .right { padding-left:56px; }
.shop-row.locked .tag { color:var(--sm-or-s); font-weight:700; }
.shop-row.plein .price, .shop-row.plein:active .price { background:var(--sm-iv2); box-shadow:inset 0 0 0 1.5px var(--sm-bord); color:var(--sm-ink2); padding:0 12px; transform:none; }
.screen.panel[data-screen="shop"] .shop-recu { color:var(--azur-appui); }
.screen.panel[data-screen="shop"] .shop-payer { border-radius:12px; border:0; background:var(--sm-azur-face); box-shadow:0 3px 0 var(--azur-tranche); color:#fff; }
.screen.panel[data-screen="shop"] .shop-payer:not(:disabled):active { background:var(--sm-azur-face); transform:translateY(2px); box-shadow:0 1px 0 var(--azur-tranche); }
.screen.panel[data-screen="shop"] .ravitaillement-ligne select { color-scheme:light; color:var(--sm-ink); background:var(--sm-blanc); border:1.5px solid var(--sm-bord); border-radius:10px; }
[data-screen="shop"] .shop-ravitaillement { margin:0 0 6px; padding:10px 12px; border-radius:14px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); }
/* ---------- Chronique : encre sur papier, repères azur, acquis en or sombre */
.chronique-screen > .head .mission-tabs [data-action="missions"] { color:var(--azur-appui); }
.chron, .chron li, .chron h3, .lore-entry, .lore-entry h3, .lore-entry b, .chronique-screen .chron-fait-titre, .chronique-screen .chron-marche h4,
.chronique-screen .chron-recit-arche h4, .chronique-screen .chron-recit-sujet > h4, .chronique-screen .chron-recit .chron-garde-sujet > h4, .chronique-screen .chron-guide-texte > strong,
.chronique-screen .chron-sommaire-toggle, .chronique-screen .chron-passages[data-fin="true"] .chron-fin-recit, .chronique-screen .chron-recit > summary,
.chronique-screen .chron-recit .chron-choix-arches button[aria-pressed="true"] .chron-signe-nom, .chronique-screen .chron-recit-courant > strong, .chronique-screen .chron-recit-ouverture > h4 { color:var(--sm-ink); }
.chron .meta, .chron li.more, .chron-prog .lbl, .lore-entry p, .chronique-screen .chron-journal-intro, .chronique-screen .chron-fait-corps, .chronique-screen .chron-empty,
.chronique-screen .chron-guide-intro, .chronique-screen .chron-guide-texte > p, .chronique-screen .chron-choix-lecture, .chronique-screen .chron-recit > summary small,
.chronique-screen .chron-passages button > small, .chronique-screen .chron-passages .chron-fin-recit, .chronique-screen .chron-recit .chron-signe-nom, .chronique-screen .chron-sommaire-libelle,
.chronique-screen .chron-seneschal h3, .chronique-screen .chron-consultation button, .chronique-screen .chron-prog .lbl, .chronique-screen .chron.head .meta { color:var(--sm-ink2); }
.chronique-screen .chron-consultation button[aria-pressed="true"], .chronique-screen .chron-sommaire-libelle { color:var(--sm-ink); }
.chronique-screen .chron-consultation button[aria-pressed="true"]::after, .chronique-screen .chron-recit .chron-choix-arches button[aria-pressed="true"] { border-color:var(--azur); background:linear-gradient(90deg, var(--azur-haut), var(--azur)); }
.chronique-screen .chron-recit .chron-choix-arches button[aria-pressed="true"] { background:var(--sm-iv2); border-radius:10px 10px 0 0; }
.chronique-screen .chron-consultation, .chronique-screen .chron-journal > .chron:not(.head), .chronique-screen .chron-guide .chron-guide-repere, .chronique-screen .chron-guide .chron-guide-groupe,
.chronique-screen .chron-choix-arches, .chronique-screen .chron-passages, .chronique-screen .chron-repere-lecture, .chronique-screen .chron-recit-arche, .chron.head, .chron-page > .chron,
.chronique-screen .chron-recit :is(.chron-recit-sujet,.chron-garde-sujet,.chron-marche) > h4, .chronique-screen > .menu-feuille > .chron-passages, .chronique-screen .chron-entete-flux { border-color:var(--sm-bord); }
.chronique-screen > .menu-feuille > .chron-passages, .chronique-screen:has(#chron-recit:not([hidden])) .chron-sommaire, .chronique-screen:has(#chron-recit:not([hidden])) .scroll-area > .chron-consultation { background:var(--sm-iv); }
.chronique-screen .chron li::before { background:var(--azur); }
.chron-prog strong, .chronique-screen .chron h3 > .picon, .chronique-screen .chron h3 > small, .chronique-screen summary::marker, .chronique-screen .chron-fait-relique, .chronique-screen .chron-bonus,
.chronique-screen .chron-guide-signe, .chronique-screen .chron-guide-groupe[open] > summary, .chronique-screen .chron-recit-courant > small { color:var(--sm-or-s); }
.chronique-screen summary, .chronique-screen .chron-guide-signe.picon, .chronique-screen .chron-guide-texte > .chron-guide-conseil, .chronique-screen .chron-regle, .chronique-screen .chron-retour-recit,
.chronique-screen .chron-passages button, .chronique-screen .chron-guide-repere[aria-current="true"] .chron-cible-libelle, .chronique-screen .chron-position-lecture, .chronique-screen .chron-recit-signe,
.chronique-screen .chron-garde-sujet > h4, .chronique-screen .chron-recit .chron-rangs, .chronique-screen .chron-guide-groupe > summary, .chronique-screen:has(#chron-recit:not([hidden])) .chron-position-lecture { color:var(--azur-appui); }
.chronique-screen [data-repere="curse"] .chron-guide-signe, .chronique-screen #chron-guide-ennemis .chron-guide-signe, .chronique-screen .chron-choix-arches [data-repere="curse"] .chron-guide-signe { color:var(--sm-rouge); }
.chronique-screen .chron-passages button:disabled { color:#8E97A8; }
.chronique-screen .chron-guide .chron-guide-repere[aria-current="true"], .chronique-screen .chron-guide-groupe > summary:active, .chronique-screen .chron-recit button:active,
.chronique-screen > .menu-feuille > .chron-passages button:active { background:var(--sm-iv2); border-left-color:var(--azur); }
.chronique-screen .chron-choix-lecture select, .chronique-screen:has(#chron-recit:not([hidden])) .chron-repere-lecture select { color:var(--sm-ink); background:var(--sm-blanc); border:1.5px solid var(--sm-bord); border-radius:10px; }
.chronique-screen .chron-recit-route::before, .chronique-screen .chron-recit-route::after { background:var(--azur); }
.chronique-screen .chron-recit-route::after { box-shadow:0 23px 0 var(--or); }
.chronique-screen .chron-recit :is(.chron-recit-sujet,.chron-garde-sujet,.chron-marche) > h4::after { background:linear-gradient(90deg, var(--azur-haut), var(--azur)); }
.chronique-screen .chron-recit-sujet:nth-of-type(even) > h4::after { background:linear-gradient(90deg, var(--or), var(--or-tranche)); }
.chronique-screen summary:focus-visible, .chronique-screen .chron-guide-groupe > summary:focus-visible, .chronique-screen .chron-consultation button:focus-visible, .chronique-screen .mission-tabs button:focus-visible,
.chronique-screen .chron-regle:focus-visible, .chronique-screen .chron-retour-recit:focus-visible, .chronique-screen .chron-recit button:focus-visible, .chronique-screen .chron-recit select:focus-visible,
.chronique-screen .chron-guide-repere:focus-visible, .chronique-screen .chron-sommaire-toggle:focus-visible { outline-color:var(--azur); }
#stage:has(> .chronique-screen:not([hidden]) #chron-recit:not([hidden])) > #nav-rail::after { content:none; }
/* ---------- Paramètres : cartes blanches, interrupteurs azur */

#stage [data-screen="settings"] .set-head::before, #stage [data-screen="settings"] .set-head::after, #stage #champion-appearance .set-head::before, #stage .profile-storage button::before, #stage .profile-storage-actions label::before, #stage #save-warning button::before, #stage #champion-guide button::before, #stage #tutorial-replay button::before,
#stage [data-screen="settings"] .set-group::before, #stage [data-screen="settings"] .set-group::after, #stage [data-screen="settings"] #champion-appearance::before, #stage [data-screen="settings"] #champion-appearance::after { content:none; display:none; }
[data-screen="settings"] #champion-appearance { margin-inline:0; }

.option-line, [data-screen="settings"] .option-line, [data-screen="settings"] .set-group:has(#set-son) > .option-line { color:var(--sm-ink); font:700 16px/1.2 var(--f-texte); }
#stage [data-screen="settings"] .option-line::before { content:none; }
.option-line + .option-line, [data-screen="settings"] .option-line + .option-line { border-top:1.5px solid var(--sm-bord); }
.option-line .picon, [data-screen="settings"] .option-line .picon { color:var(--sm-ink2); }
.option-line small, [data-screen="settings"] .option-line small, [data-screen="settings"] .set-group:has(#set-son) > .option-line > small { color:var(--sm-ink2); }
.option-line i, [data-screen="settings"] .option-line i { background:#DDD2B5; box-shadow:inset 0 0 0 1.5px var(--sm-bord); }
.option-line i::after { background:var(--sm-blanc); box-shadow:0 1px 3px rgba(8,20,48,.4); }
.option-line.on i, [data-screen="settings"] .option-line.on i { background:var(--sm-azur-face); box-shadow:0 2px 0 var(--azur-tranche); }
.option-line:active, [data-screen="settings"] .option-line:active { background:var(--sm-iv2); }
.nom-champ { color:var(--sm-ink); box-shadow:inset 0 -2px 0 var(--sm-bord); }
.nom-champ:focus { box-shadow:inset 0 -2px 0 var(--azur); }
.nom-champ::placeholder { color:#8E97A8; }
.profile-storage p, #champion-appearance > p#champion-appearance-hint, #champion-appearance > p#champion-owned { color:var(--sm-ink2); text-shadow:none; }
#champion-appearance > p#champion-evolution { color:var(--sm-or-s); text-shadow:none; }
#save-warning button, #champion-guide button, #tutorial-replay button, .profile-storage button, .profile-storage-actions label { border:2px solid var(--sm-ink); border-radius:12px; color:var(--sm-ink); background:var(--sm-blanc);
  font:italic 900 18px/1.1 var(--f-titre); letter-spacing:.02em; box-shadow:none; }
.profile-storage > button:active, .profile-storage-actions > button:active { transform:translateY(2px); background:var(--sm-iv2); }

#champion-appearance .profile-storage-actions > button, .profile-storage button:not(:disabled), .profile-storage button[aria-pressed="true"] { color:var(--sm-ink); text-shadow:none; isolation:auto; }
#champion-appearance .profile-storage-actions > button { color:var(--sm-ink); text-shadow:none; font:800 15px/1.15 var(--f-texte); }
#stage #champion-appearance .profile-storage-actions > button::before { content:none; }
#champion-appearance .profile-storage-actions > button[aria-pressed="true"] { border-color:var(--azur); background:#EAF6FF; box-shadow:inset 0 0 0 1.5px var(--azur); }
#champion-appearance .profile-storage-actions > button::after { background:var(--sm-ink2); filter:none; }
#champion-appearance .profile-storage-actions > button[aria-pressed="true"]::after { background:var(--azur); }
#champion-appearance .profile-storage-actions > button:disabled { color:#8E97A8; border-color:var(--sm-bord); background:var(--sm-iv2); }
#champion-appearance .profile-storage-actions > button:disabled::after { background:#8E97A8; }
.profile-storage button:focus-visible, .profile-storage-actions label:focus-within { outline:3px solid var(--azur); outline-offset:2px; }
.profile-storage > button.recommence-campagne { border-color:var(--sm-rouge); color:var(--sm-rouge-s); background:#FFF3F3; }
.profile-storage > button.recommence-campagne.arme { background:var(--sm-rouge); border-color:var(--sm-rouge); color:#fff; }
.profile-storage > p.recommence-note { color:var(--sm-rouge-s); }
#set-guide small.action { color:var(--sm-ink); border:2px solid var(--sm-ink); border-radius:12px; isolation:auto; }
#stage #set-guide small.action::before, #stage #set-guide small.action::after { content:none; }

/* ---------- Arènes (écran opaque, même papier) : cartes blanches, encre, « Jouer » en pastille azur */
.screen.panel.arena-screen { padding:0 calc(10px + var(--safe-r)) calc(var(--safe-b) + 18px) calc(10px + var(--safe-l)); }
.arena-head { gap:6px; padding:calc(var(--safe-t) + 8px) 0 8px; }
.arena-head > div { flex:1; min-width:0; height:56px; box-sizing:border-box; display:flex; flex-direction:column; justify-content:center; padding:0 12px; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); }
.arena-head small { color:var(--sm-ink2); letter-spacing:.1em; }
.arena-head h2 { margin:1px 0 0; font:italic 900 24px/1 var(--f-titre); color:var(--sm-ink); }
.arena-intro { margin:8px 4px 10px; color:var(--sm-ink2); }
.arena-group-title { border-bottom:0; margin:6px 4px 0; padding:0 0 4px; font:800 12px/1.2 var(--f-texte); letter-spacing:.1em; text-transform:uppercase; color:var(--sm-ink2); }
.arena-group-title small { color:var(--sm-ink2); font-weight:600; }
.arena-contract { min-height:0; padding:10px 10px 10px 12px; border:1.5px solid var(--sm-bord); border-left:1.5px solid var(--sm-bord); border-radius:14px; background:var(--sm-blanc); color:var(--sm-ink); box-shadow:none; }
.arena-contract > .picon { color:var(--sm-ink); }
.arena-contract strong { color:var(--sm-ink); }
.arena-contract small, .arena-contract em { color:var(--sm-ink2); }
.arena-contract > b { min-height:44px; display:grid; place-items:center; padding:0 8px; border-radius:12px; color:#fff; background:var(--sm-azur-face); box-shadow:0 3px 0 var(--azur-tranche); font:italic 900 17px/1 var(--f-titre); isolation:auto; }
#stage .arena-contract > b::before { content:none; }
.arena-chrono-ban { color:var(--sm-ink2); }
.arena-chrono-ban select { color:var(--sm-ink); background:var(--sm-blanc); border:1.5px solid var(--sm-bord); border-radius:10px; }

/* ================================================================ 3. Monde : la carte reste l'image ; en-tête et fiche en pastilles ivoire */
.cap26-world { background:radial-gradient(120% 56% at 50% 34%, #1F6A95 0%, #114A72 44%, #0B2F4C 100%); }
.cap26-world-head { gap:6px; padding:calc(var(--safe-t) + 8px) calc(10px + var(--safe-r)) 8px calc(10px + var(--safe-l)); }
.cap26-world-head::before, .cap26-world-head::after { content:none; }
.cap26-world-title { height:56px; box-sizing:border-box; display:flex; align-items:center; padding:0 12px; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre);
  font:italic 900 26px/1 var(--f-titre); color:var(--sm-ink); text-shadow:none; }
.cap26-world-count { height:56px; box-sizing:border-box; display:flex; align-items:center; padding:0 10px; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); }
.cap26-world-count::before { content:none; }
.cap26-world-count > span:first-child { display:grid; grid-template-columns:auto auto; grid-template-rows:auto auto; align-items:baseline; justify-items:center; column-gap:3px; row-gap:3px; }
.cap26-world-count em { grid-column:1 / -1; }
.cap26-world-count b { font:italic 900 22px/1 var(--f-titre); color:var(--sm-ink); text-shadow:none; }
.cap26-world-count small { font:italic 800 15px/1 var(--f-titre); color:var(--sm-ink2); }
.cap26-world-count em { margin:0; font:700 11px/1 var(--f-texte); font-style:normal; color:var(--sm-ink2); white-space:nowrap; }
/* le voile du bas tient la fiche sans éteindre la carte : un dégradé, plus une nuit pleine */
.cap26-world-space::after, .cap26-world.a-bandeau .cap26-world-space::after { background:linear-gradient(to bottom, rgba(2,10,27,.45) 0, rgba(2,10,27,0) 110px),
  linear-gradient(to top, rgba(6,16,30,.8) 0, rgba(6,16,30,.62) calc(var(--nav-h) + 150px), rgba(6,16,30,0) calc(var(--nav-h) + 262px)); }
.cap26-world.a-bandeau .cap26-world-space::after { background:linear-gradient(to bottom, rgba(2,10,27,.9) 0, rgba(2,10,27,.86) 92px, rgba(2,10,27,0) 132px),
  linear-gradient(to top, rgba(6,16,30,.8) 0, rgba(6,16,30,.62) calc(var(--nav-h) + 150px), rgba(6,16,30,0) calc(var(--nav-h) + 262px)); }
/* étiquettes des régions : pastilles ivoire à barre de couleur, la choisie en azur */
.cap26-biome-label { color:var(--sm-ink); text-shadow:none; padding:4px 9px 5px 11px; }
.cap26-biome-label::before, .cap26-biome.is-avenir .cap26-biome-label::before, .cap26-biome.is-selected:not(.is-open) .cap26-biome-label::before { inset:0; transform:none; border-radius:9px; background:var(--sm-iv);
  box-shadow:inset 3px 0 0 var(--ton), 0 2px 0 #BFAE84, 0 3px 6px rgba(8,20,48,.35); border:1.5px solid var(--sm-bord); }
.cap26-biome-label small, .cap26-biome.is-open .cap26-biome-label small, .cap26-biome:not(.is-open):not(.is-avenir) .cap26-biome-label small, .cap26-biome.is-selected:not(.is-open):not(.is-avenir) .cap26-biome-label small,
.cap26-biome.is-selected.is-avenir .cap26-biome-label small { color:var(--sm-ink2); font:700 11px/1 var(--f-texte); }
.cap26-biome.is-gagne .cap26-biome-label small { color:var(--sm-or-s); }
.cap26-biome:not(.is-open):not(.is-avenir) .cap26-biome-label small { color:var(--sm-rouge-s); }
.cap26-biome.is-selected .cap26-biome-label::before { background:var(--sm-azur-face); border-color:var(--azur-appui); box-shadow:inset 3px 0 0 var(--ton), 0 2px 0 var(--azur-tranche), 0 3px 8px rgba(0,8,24,.4); }
.cap26-biome.is-selected .cap26-biome-label, .cap26-biome.is-selected .cap26-biome-label small, .cap26-biome.is-selected.is-gagne .cap26-biome-label small { color:#fff; text-shadow:0 1px 0 rgba(0,40,120,.5); }
/* fiche de région : feuille ivoire droite */
.cap26-world-sheet { left:10px; right:10px; bottom:calc(var(--nav-h) + 8px); gap:8px; }
.cap26-world-fiche { color:var(--sm-ink); padding:9px 12px 11px 14px; isolation:auto; }
.cap26-world-fiche::before { inset:0; transform:none; border-radius:18px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:inset 5px 0 0 var(--ton), var(--sm-ombre); }
.cap26-world-region { font:italic 900 28px/1 var(--f-titre); color:var(--sm-ink); text-shadow:none; }
.cap26-world-status { --face:var(--sm-azur-face); --arete:rgba(230,251,255,.95); --texte:#fff; }
.cap26-world-status::before { transform:none; inset:0; border-radius:8px; box-shadow:0 2px 0 var(--azur-tranche); }
.cap26-world-status[data-ton="or"] { --face:linear-gradient(180deg, var(--or-clair), var(--or)); --texte:var(--or-texte); }
.cap26-world-status[data-ton="or"]::before { box-shadow:0 2px 0 var(--or-tranche); }
.cap26-world-status[data-ton="corail"] { --face:linear-gradient(180deg, #E04B52, var(--sm-rouge)); --texte:#fff; }
.cap26-world-status[data-ton="corail"]::before { box-shadow:0 2px 0 var(--sm-rouge-s); }
.cap26-world-status[data-ton="biome"]::before { box-shadow:0 2px 0 var(--ton-2); }
.cap26-world-description { color:var(--sm-ink2); font:600 13px/1.25 var(--f-texte); }
.cap26-world-hero::before { background:var(--sm-bord); }
.cap26-world-progress-terr, .cap26-world-gain, .cap26-world-condition { color:var(--sm-ink2); }
.cap26-world-progress-compte { color:var(--sm-ink); text-shadow:none; }
.cap26-world-gain.acquis, .cap26-world-gain { color:var(--sm-or-s); }
.cap26-world-condition { color:var(--sm-rouge-s); }
.cap26-world-visit.menu-command:not(.primary) { min-height:54px; margin:0; }
.cap26-world-visit.menu-command:not(.primary) strong { font-size:24px; }
.cap26-world-visit.menu-command:not(.primary) > .picon { color:var(--sm-ink); }
.cap26-world-visit.menu-command.primary { margin:0; }
/* ---------- vue Région (carte des territoires) : en-tête en pastilles, fiche basse ivoire, Bataille azur */
.screen.panel.carte-screen > .head { min-height:0; gap:6px; padding:calc(var(--safe-t) + 8px) calc(10px + var(--safe-r)) 8px calc(10px + var(--safe-l)); background:none; border:0; box-shadow:none; isolation:auto; }
.screen.panel.carte-screen > .head::before, .screen.panel.carte-screen > .head::after { content:none; }
.carte-screen .panel-title { font-size:24px; color:var(--sm-ink); text-shadow:none; }
.cap26-carte .cap26-region-title, .cap26-carte[data-cap26-vue="region"] .cap26-region-title { height:56px; box-sizing:border-box; display:flex; align-items:center; padding:0 12px; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); font:italic 900 22px/1.05 var(--f-titre); color:var(--sm-ink); white-space:normal; }
.cap26-carte .carte-compte .val::before { background:var(--sm-ink2); }
.cap26-carte .carte-compte > small, .cap26-carte .carte-etoiles > em, .cap26-carte[data-cap26-vue="region"] .carte-compte > small, .cap26-carte[data-cap26-vue="region"] .carte-etoiles > em { color:var(--sm-ink2); text-shadow:none; }
.carte-screen .panel-title.long { font-size:20px; }
.carte-screen .panel-title.tres-long { font-size:17px; }
.carte-comptes { height:56px; box-sizing:border-box; gap:0; padding:0 8px; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); }
.carte-compte, .carte-etoiles { padding-left:12px; }
.carte-compte::before, .carte-etoiles::before { transform:none; background:var(--sm-bord); }
.carte-compte { padding-left:4px; }
.carte-compte::before { content:none; }
.carte-screen .carte-compte .val, .carte-compte .val { font-size:20px; color:var(--sm-ink); text-shadow:none; }
.carte-screen .carte-etoiles .val, .carte-etoiles .val { font-size:16px; color:var(--sm-or-s); text-shadow:none; }
.carte-etoiles > small, .carte-compte > small { color:var(--sm-ink2); text-shadow:none; }
.carte-etoiles .etoile-mini.on { background:var(--or); }
.screen.panel.carte-screen { padding-bottom:var(--nav-h); background:#1E3A1A; }
.map-inner::after { background:linear-gradient(180deg, rgba(6,16,30,0), rgba(6,16,30,.5) 62%, rgba(6,16,30,.7)); }
.carte-bas { --pied-cta:0px; margin-top:-22px; padding:12px calc(10px + var(--safe-r)) 10px calc(10px + var(--safe-l)); gap:8px; color:var(--sm-ink); isolation:auto; }
.carte-bas.panneau-d3::before { left:0; right:0; top:0; bottom:calc(-1 * var(--nav-h) - 48px); transform:none; border-radius:22px 22px 0 0; border:0; clip-path:none;
  background:var(--sm-iv); box-shadow:0 -6px 24px rgba(8,20,48,.4); }
.carte-bas .map-sheet, .carte-bas .map-maitrise { padding-inline:4px; }
.carte-bas .map-sheet { padding-bottom:0; }
.map-sheet-name, .cap26-carte .map-sheet-name > b { color:var(--sm-ink); text-shadow:none; }
.cap26-carte .map-sheet-name > small { color:var(--azur-appui); }
.cap26-carte .map-sheet-name > small + small { color:var(--sm-ink2); }
.map-next { border-top:1.5px solid var(--sm-bord); padding-top:8px; }
.map-next-item.boss::before { transform:none; background:var(--sm-bord); }
.map-next-item .picon { color:var(--sm-or-s); }
.map-next-item.boss .picon { color:var(--sm-rouge); }
.cap26-carte .map-next-copy b { color:var(--sm-ink); text-shadow:none; }
.cap26-carte .map-next-item.boss .map-next-copy b { color:var(--sm-rouge-s); }
.cap26-carte .map-next-copy small, .map-next-copy small { color:var(--sm-ink2); text-shadow:none; }
.map-bonus-mode { color:#fff; isolation:auto; }
.map-bonus-mode::before { transform:none; inset:0; border-radius:8px; background:var(--sm-azur-face); box-shadow:0 2px 0 var(--azur-tranche); }
.map-bonus-mode .picon { color:#fff; }
.map-bonus-regle { color:var(--sm-ink2); }
.gain-lbl { color:var(--sm-ink2); }
.gain-item b { color:var(--sm-ink); text-shadow:none; }
.gain-item small { color:var(--sm-ink2); }
.gain-item .picon { color:var(--sm-or-s); }
.map-maitrise-copy { color:var(--sm-ink); }
.map-maitrise .etoiles-mini > i { background:var(--sm-bord); }
.map-maitrise .etoiles-mini > i.on { background:var(--or); }
.carte-cta-row { gap:8px; }
.carte-cta-row .map-sheet-cta { min-height:64px; }
.carte-cta-row .battle-copy strong { font-size:36px; }
.carte-cta-row .battle-copy small { color:var(--azur-clair); font:700 14px/1 var(--f-texte); }
.carte-rejouer { min-height:64px; margin:0; }
.carte-rejouer strong { font-size:20px; }
/* étiquettes des jalons : pastilles ivoire (l'étape en cours en azur, le chef en rouge) */
.cap26-carte .map-node .map-node-label, .cap26-carte .map-node.locked .map-node-label, .cap26-carte .map-node.chef-nomme .map-node-label, .cap26-carte .map-node.sel .map-node-label { color:var(--sm-ink); text-shadow:none; }
.cap26-carte .map-node .map-node-label::before, .cap26-carte .map-node.locked .map-node-label::before { inset:0; transform:none; border-radius:8px; background:var(--sm-iv); box-shadow:0 2px 0 #BFAE84, 0 3px 6px rgba(8,20,48,.35); }
.cap26-carte .map-node.cur .map-node-label { color:#fff; text-shadow:0 1px 0 rgba(0,40,120,.5); }
.cap26-carte .map-node.cur .map-node-label::before { background:var(--sm-azur-face); box-shadow:0 2px 0 var(--azur-tranche), 0 3px 8px rgba(0,8,24,.4); }
.cap26-carte .map-node.chef-nomme .map-node-label { color:#fff; }
.cap26-carte .map-node.chef-nomme .map-node-label::before { background:linear-gradient(180deg, #E04B52, var(--sm-rouge)); box-shadow:0 2px 0 var(--sm-rouge-s), 0 3px 6px rgba(8,20,48,.35); }
.cap26-carte .map-site-plaque, .cap26-carte .map-site.verrouille .map-site-plaque { color:var(--sm-ink); text-shadow:none; }
.cap26-carte .map-site-plaque::before, .cap26-carte .map-site.verrouille .map-site-plaque::before { transform:none; border-radius:7px; background:var(--sm-iv); box-shadow:0 2px 0 #BFAE84, 0 2px 6px rgba(8,20,48,.35); }
.cap26-carte .map-node-etoiles { background:var(--sm-iv); box-shadow:0 0 0 1px var(--sm-bord), 0 2px 2px rgba(0,5,17,.35); }

/* ================================================================ 4. fiche de bâtiment : la Cité cadrée en image, feuille basse ivoire à cartes blanches */
.screen.building { color:var(--sm-ink); }
.building-top { padding:calc(var(--safe-t) + 8px) calc(10px + var(--safe-r)) 0 calc(10px + var(--safe-l)); gap:6px; align-items:center; margin-top:calc(-1 * var(--safe-t) - 10px); }
.building-resources { flex-direction:row; align-items:center; gap:6px; }
#stage .building-resources .bourse-pill::before { content:none; }
.building-resources .bourse-pill { isolation:auto; height:56px; padding:0 10px 0 8px; gap:6px; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); }
.building-resources .bourse-pill > .picon { width:24px; }
.building-resources .bourse-pill .val { font-size:21px; color:var(--sm-ink); text-shadow:none; }
.building-depense { margin:0; padding:0 10px; height:56px; display:flex; align-items:center; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre);
  font:italic 900 19px/1 var(--f-titre); color:var(--sm-rouge-s); text-shadow:none; }
.building-sheet { padding:12px calc(10px + var(--safe-r)) calc(var(--safe-b) + 12px) calc(10px + var(--safe-l)); gap:6px; isolation:auto; }
#stage .building-sheet.panneau-d3::before { content:''; inset:0; bottom:-48px; transform:none; clip-path:none; border:0; border-radius:22px 22px 0 0; background:var(--sm-iv); box-shadow:0 -6px 24px rgba(8,20,48,.4); }
.screen.building .building-heading { gap:4px 10px; }
.building-heading .panel-title { font:italic 900 32px/1 var(--f-titre); color:var(--sm-ink); }
.screen.building .building-level { padding:5px 10px; color:#fff; font:italic 900 15px/1 var(--f-titre); text-shadow:0 1px 0 rgba(0,40,120,.5); isolation:auto; }
.building-level::before { transform:none; border-radius:8px; background:var(--sm-azur-face); box-shadow:0 2px 0 var(--azur-tranche); }
.building-hero { padding:8px 12px 10px; border-radius:14px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); gap:4px; }
.screen.building .building-copy .stat { color:var(--sm-ink2); }
.screen.building .effet-avant { color:var(--sm-ink2); }
.effet-fleche { background:var(--azur); }
.effet-fleche::after { border-left-color:var(--azur); }
.effet-apres, .screen.building .effet-apres { color:var(--azur); background:none; -webkit-text-fill-color:currentColor; -webkit-background-clip:border-box; background-clip:border-box; filter:none; text-shadow:none; }
.building-copy .desc { color:var(--sm-ink); font:600 15px/1.3 var(--f-texte); }
.building-copy .stat-line { color:var(--azur-appui); }
.building-defense { border-radius:10px; background:var(--sm-iv2); box-shadow:inset 0 0 0 1.5px var(--sm-bord); }
.building-defense-k { color:var(--sm-ink2); }
.building-defense-t { color:var(--sm-ink); }
.building-defense-t b { color:var(--azur-appui); }
.building-epoque { color:var(--sm-ink2); border-top-color:var(--sm-bord); }
.building-epoque b { color:var(--sm-ink); }
.building-ban button, .building-champion-mode button { border-radius:10px; background:var(--sm-blanc); box-shadow:inset 0 0 0 1.5px var(--sm-bord); color:var(--sm-ink); isolation:auto; }
.building-ban button .picon, .building-champion-mode button .picon { color:var(--sm-ink2); }
#stage .building-ban button::before, #stage .building-champion-mode button::before { content:none; }
.building-ban button.on, .building-champion-mode button.on { box-shadow:inset 0 0 0 2px var(--azur); background:#EAF6FF; }
.building-ban button.on .picon, .building-champion-mode button.on .picon { color:var(--azur); }
.building-ban button.locked { color:var(--sm-ink2); }
.building-ban button.locked .picon { color:#8E97A8; opacity:1; }
.building-ban button .unlock-at { color:var(--sm-or-s); }
.building-champion-mode button small, .building-champion-mode button.on small { color:var(--sm-ink2); }
.building-actions .building-buy { padding:0 14px 0 18px; }
.building-buy .price { padding:0; color:#fff; font-size:26px; isolation:auto; }
#stage .building-buy .price::before { content:none; }
.building-buy .price-pierre.manque { color:#FFB4B8; }
.screen.building .building-buy:disabled .price { opacity:1; }
.building-secondary { margin-bottom:0; }

/* ================================================================ 5. résultats : fond image assombri, carte ivoire centrée, titre azur ou rouge sombre */
.screen.outcome { justify-content:center; padding:calc(var(--safe-t) + 12px) 14px calc(var(--safe-b) + 12px); }
.outcome-veil, .outcome-victory .outcome-veil { inset:0; height:auto; background:var(--sm-voile); }
.result-panel, .arena-outcome .result-panel { max-width:360px; padding:16px 14px 14px; border-radius:22px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre-carte); color:var(--sm-ink); gap:10px; }
.result-panel .result-body { gap:9px; }
.result-heading, .outcome .result-heading, .plaque-titre .result-heading, .defeat-panel .result-heading { font:italic 900 44px/1 var(--f-titre); letter-spacing:.02em; text-transform:uppercase; color:var(--azur); text-shadow:none; }
/* la défaite (campagne, Arène, raid repoussé) en rouge sombre : (0,4,0) après la règle azur, devant arcmarch.css */
.outcome-defeat .result-heading, .outcome-defeat .defeat-panel .result-heading, .arena-outcome.defaite .plaque-titre .result-heading, .raid-outcome.defaite .plaque-titre .result-heading { color:var(--sm-rouge-s); }
.result-copy, .plaque-titre .result-copy, .defeat-panel .result-copy { font:600 15px/1.2 var(--f-texte); color:var(--sm-ink2); text-shadow:none; margin:0; }
.plaque-titre, .won-plaque, .arena-outcome.defaite .plaque-titre { width:100%; margin:0; padding:0 0 2px; transform:none; gap:4px; isolation:auto; }
#stage .plaque-titre::before, #stage .plaque-module::before { content:none; }
.plaque-titre .arena-result-kicker, .arena-result-kicker { font:800 12px/1 var(--f-texte); letter-spacing:.1em; text-transform:uppercase; color:var(--sm-ink2); }
/* score et record (campagne et Arènes) : pastilles blanches */
.duel, .outcome-defeat .duel, .arena-outcome.defaite .arena-result-score { padding:0; gap:8px; grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
.duel-trait, #arena-result-trait { display:none; }
.duel-cote, .outcome-defeat .duel-cote { gap:2px; min-height:52px; justify-content:center; border-radius:12px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); padding:4px 8px; }
/* à la défaite d'Arène, hud.js remplace .plaque-module par .duel-cote : (0,4,1) devant arcmarch.css (.arena-outcome.defaite .arena-result-score small { color:#fff }) */
.duel-cote small, .arena-outcome.defaite .arena-result-score .duel-cote small { font:700 12px/1 var(--f-texte); color:var(--sm-ink2); text-shadow:none; white-space:nowrap; }
.duel-cote strong, .outcome-defeat .duel-cote strong, .arena-outcome.defaite .arena-result-score .duel-cote strong { font:italic 900 28px/1 var(--f-titre); color:var(--sm-ink); text-shadow:none; white-space:nowrap; }
.duel-cote.record small, .duel-cote.record strong, .arena-outcome.defaite .arena-result-score .duel-cote.record small, .arena-outcome.defaite .arena-result-score .duel-cote.record strong { color:var(--sm-ink2); }
.duel-cote.record.battu small, .duel-cote.record.battu strong, .arena-outcome.defaite .arena-result-score .duel-cote.record.battu small, .arena-outcome.defaite .arena-result-score .duel-cote.record.battu strong { color:var(--sm-or-s); }
.arena-result-score { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:8px; }
.arena-result-score .plaque-module, .arena-outcome.defaite .arena-result-score .plaque-module { min-height:52px; padding:4px 8px; border-radius:12px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); isolation:auto; }
.plaque-module small, .arena-result-score small, .arena-outcome.defaite .arena-result-score .plaque-module small { font:700 12px/1 var(--f-texte); color:var(--sm-ink2); white-space:nowrap; }
.plaque-module strong, .arena-result-score strong, .arena-outcome.defaite .arena-result-score .plaque-module strong { font:italic 900 26px/1 var(--f-titre); color:var(--sm-ink); white-space:nowrap; }
/* record battu : or sombre lisible sur blanc (plus d'or clair) */
.arena-result-score .battu small, .arena-result-score .battu strong, .arena-outcome.defaite .arena-result-score .battu small, .arena-outcome.defaite .arena-result-score .battu strong { color:var(--sm-or-s); }
.over-base, .outcome-defeat .over-base, .arena-outcome.defaite .over-base { width:100%; margin:0; gap:5px; }
.over-base-lbl, .outcome-defeat .over-base-lbl { font:700 14px/1.15 var(--f-texte); color:var(--sm-ink2); text-shadow:none; }
.over-base-lbl b, .raid-destruction .over-base-lbl b { color:var(--sm-rouge-s); }
.over-base-n, .outcome-defeat .over-base-n { font:italic 900 24px/1 var(--f-titre); color:var(--sm-rouge-s); }
.over-base .sangle, .outcome-defeat .over-base .sangle { height:10px; border-radius:5px; background:#E4DAC0; box-shadow:none; }
.over-base .sangle > i { background:linear-gradient(90deg, #E04B52, var(--sm-rouge)); }
.raid-outcome:not(.defaite) .raid-destruction .over-base-lbl b { color:var(--sm-ink); }
.raid-outcome:not(.defaite) .raid-destruction .sangle { box-shadow:none; }
.raid-outcome:not(.defaite) .raid-destruction .sangle > i { background:linear-gradient(90deg, var(--azur-haut), var(--azur)); }
/* gains : la pièce ronde et le chiffre en encre, les autres gains en pastilles blanches ; plus de gerbe d'or derrière */
.arena-result-gain::before { content:none; }
.gain-heros { min-height:64px; gap:8px; }
.gain-heros .gain-piece, .gain-piece { width:48px; }
#stage .outcome-victory .gain::before { content:none; }
.gain-heros .gain-n, .gain-n, .outcome-victory .gain-n { font:italic 900 52px/1 var(--f-titre); color:var(--sm-ink); background:none; -webkit-text-fill-color:currentColor; -webkit-background-clip:border-box; background-clip:border-box; filter:none; text-shadow:none; }
.gain { min-height:64px; margin:0; }
.gain-autres .gain-item, .raid-autres .gain-item { height:44px; padding:0 12px; border-radius:12px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); box-shadow:none; color:var(--sm-ink); font:600 12px/1 var(--f-texte); }
.gain-autres .gain-item b, .raid-autres .gain-item b { color:var(--sm-ink); font-size:22px; }
.gain-autres .gain-item .picon, .raid-autres .gain-item .picon { color:var(--sm-or-s); }
.arena-result-reward, .arena-result-metric { margin:0; text-align:center; font:600 13px/1.2 var(--f-texte); color:var(--sm-ink2); text-shadow:none; }
.raid-chemin { border-radius:12px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); box-shadow:none; color:var(--sm-ink); }
.raid-chemin .picon { color:var(--sm-or-s); }
.raid-chemin b { color:var(--sm-ink); }
.arena-result-actions, .raid-actions { display:flex; flex-direction:column; align-items:stretch; gap:8px; margin-top:2px; }
.arena-result-actions > .menu-command, .raid-actions > .menu-command, .result-body > .menu-command { margin:0; width:100%; }
.arena-result-actions > .menu-command.primary { margin:0; width:100%; }
.arena-result-actions > .lien-action, .raid-actions > .lien-action { align-self:center; }
.menu-command.releve { width:100%; }
#over-retry { margin:0; }
#over-retry strong { font-size:36px; }
/* ---------- victoire de campagne : la carte porte le titre, les étoiles, le butin, la récompense nommée, la vidéo bordée, Continuer */
.outcome-victory { justify-content:center; }
.won-haut { top:calc(var(--safe-t) + 8px); left:10px; right:10px; gap:6px; }
.won-haut .won-cite { width:48px; min-height:56px; margin:0; padding:0; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); color:var(--sm-ink); }
.won-haut .won-cite.garnison { width:auto; padding:0 12px 0 8px; }
.won-cite .picon { color:var(--sm-ink); }
.won-cite.garnison strong { color:var(--sm-ink); }
.won-cite.garnison small { color:var(--sm-ink2); }
.won-haut .won-cite.garnison { flex:0 1 auto; min-width:0; overflow:hidden; }
.won-cite.garnison small { overflow:hidden; text-overflow:ellipsis; }
.outcome-victory .won-haut .serie { flex:0 1 auto; min-width:0; overflow:hidden; height:56px; box-sizing:border-box; padding:0 12px; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); color:var(--sm-ink); }
.outcome-victory .won-haut .serie-tete > .picon { color:var(--sm-rouge); }
.outcome-victory .won-haut .serie-copy { flex-direction:column; align-items:flex-start; gap:2px; }
.outcome-victory .won-haut .serie-copy b { color:var(--sm-ink); font:italic 900 16px/1 var(--f-titre); }
.outcome-victory .won-haut .serie-copy small { color:var(--sm-or-s); font:italic 900 14px/1 var(--f-titre); }
.victory-panel { padding-top:12px; }
.outcome-victory .won-scene { gap:4px; padding-bottom:4px; }
.won-scene .result-heading { transform:none; margin:0; }
.won-scene .result-copy { margin:0; }
.outcome-victory .etoile { min-width:0; flex:1; }
.outcome-victory .etoile-forme { width:36px; height:36px; }
.etoile-forme::before { background:var(--sm-bord); filter:none; }
.etoile-forme::after { background:var(--sm-iv); }
.etoile.gagnee .etoile-forme::before { background:var(--or-tranche); filter:none; }
.source-lbl { color:var(--sm-ink2); text-shadow:none; }
.source-n { color:var(--sm-ink); text-shadow:none; }
.won-coffre { color:var(--sm-ink); }
.coffre-nom { color:var(--sm-ink); text-shadow:none; }
.coffre-part b, .coffre-part .picon { color:var(--sm-or-s); text-shadow:none; }
.coffre-part:last-child b { color:var(--sm-ink); }
.coffre-aide { color:var(--sm-ink2); text-shadow:none; }
.won-coffre.ouvert .coffre-aide { color:var(--sm-or-s); }
.won-pris { color:var(--sm-or-s); text-shadow:none; }
.won-panneau { margin:0; padding:0; gap:8px; isolation:auto; }
#stage .won-panneau.panneau-d3::before { content:none; }
.won-marche { flex-direction:column; align-items:stretch; gap:8px; min-height:0; padding:10px 12px; border-radius:12px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); isolation:auto; }
.won-marche .marche-pas { align-self:center; }
.won-rec > .picon { color:var(--sm-ink2); }
.won-rec.acquise > .picon:not(.pi-or) { color:var(--sm-or-s); }
.won-rec-copy b { color:var(--sm-ink); }
.won-rec-copy small, .outcome-victory .won-rec-copy small { display:block; color:var(--sm-ink2); }
.won-rec.acquise .won-rec-copy small { color:var(--sm-or-s); }
.victory-relic { border-radius:12px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); padding:6px 12px; }
.victory-relic .picon, .relic-copy strong { color:var(--sm-or-s); }
.relic-copy small, .relic-copy em { color:var(--sm-ink2); }
.won-video { min-height:52px; margin:0; }
.won-video > .picon { background-color:var(--sm-ink); }
.won-video-lbl, .won-video-n b, .won-video-apres { color:var(--sm-ink); }
.won-actions { margin-top:0; }
#won-continue { margin:0; }
#won-continue strong { font-size:38px; }
.pieces-vol > i { z-index:3; }

/* ================================================================ 6. pause : feuille basse ivoire (Reprendre azur, Rejouer et Cité bordés) */
.screen.dim[data-screen="paused"] { justify-content:flex-end; padding:0; background:rgba(6,16,30,.45); }
.screen.dim[data-screen="paused"] .pause-card { max-width:none; width:100%; max-height:92%; overflow:hidden auto; scrollbar-width:none; padding:14px 16px calc(var(--safe-b) + 14px); gap:8px;
  border-radius:22px 22px 0 0; background:var(--sm-iv); color:var(--sm-ink); box-shadow:0 -6px 24px rgba(8,20,48,.4); }
.screen.dim[data-screen="paused"]:not([hidden]) .pause-card { animation:depuisBas 200ms var(--courbe) both; }
.pause-card h2 { margin:0 0 4px; font:italic 900 30px/1 var(--f-titre); color:var(--sm-ink); text-align:left; }
.pause-card .menu-command { margin:0; }
.pause-card .menu-command.primary { min-height:60px; }
.pause-card .menu-command.secondary { min-height:48px; }
.pause-options { gap:6px; margin-top:4px; padding-top:8px; border-top:1.5px solid var(--sm-bord); }
.pause-options .option-line { color:var(--sm-ink); }
.pause-options .option-line + .option-line::before { transform:none; background:var(--sm-bord); }
.pause-card .sub { color:var(--sm-ink2); }

/* ================================================================ 7. dialogue Attaquer : feuille ivoire, Campagne en action principale, destinations en cartes */
.cap26-attack-menu { color:var(--sm-ink); background:linear-gradient(to top, rgba(6,16,30,.3) 0, rgba(6,16,30,.12) 55%, rgba(6,16,30,0) 100%); scrollbar-width:none; }
.cap26-attack-menu::-webkit-scrollbar { display:none; }
#cap26-attack-menu .attack-head::before { clip-path:none; top:-10px; border-radius:22px 22px 0 0; background:var(--sm-iv); box-shadow:0 -6px 24px rgba(8,20,48,.4); }
#cap26-attack-menu .attack-head::after { content:none; }
#cap26-attack-menu .attack-head h2 { color:var(--sm-ink2); }
#cap26-attack-menu .attack-head > .attack-tenue > .picon { color:var(--sm-ink2); }
#cap26-attack-menu .attack-head > .attack-tenue strong { color:var(--sm-ink); }
#cap26-attack-menu .attack-head > .attack-tenue small { color:var(--sm-ink2); }
#cap26-attack-menu .attack-head > #toast:not(.combat-reglette) { color:var(--sm-ink2); border-top-color:var(--sm-bord); }
.cap26-attack-close.round-btn { width:44px; height:44px; margin:0 0 -40px; border:0; background:none; box-shadow:none; }
.cap26-attack-close.round-btn::before { background:var(--sm-blanc); box-shadow:inset 0 0 0 1.5px var(--sm-bord); }
.cap26-attack-close.round-btn .picon { color:var(--sm-ink); }
/* contrats : cartes blanches, encre ; la campagne porte le seul azur (« Jouer ») */
.attack-choix, .attaque-menu .attaque-choix, .attaque-menu .attaque-choix:not(.attaque-campagne) { color:var(--sm-ink); isolation:auto; }
#stage .attack-choix::before, #stage .attaque-menu .attaque-choix::before, #stage #cap26-attack-menu .attaque-campagne::before, #stage #cap26-attack-menu .attaque-arenes::before,
#stage #cap26-attack-menu .attaque-foret:not(:disabled)::before, #stage #cap26-attack-menu #attack-campagne.attaque-garde::before { content:''; inset:0; transform:none; border-radius:14px;
  background:var(--sm-blanc); border:1.5px solid var(--sm-bord); box-shadow:none; filter:none; }
#stage #cap26-attack-menu .attaque-campagne::before, #stage #cap26-attack-menu #attack-campagne.attaque-garde::before { background:var(--sm-blanc); box-shadow:inset 4px 0 0 var(--or); }
#stage #cap26-attack-menu #attack-campagne.attaque-garde::before { box-shadow:inset 4px 0 0 var(--sm-rouge); }
#stage .attaque-menu .attaque-choix:disabled::before { background:var(--sm-iv2); box-shadow:none; }
.attack-choix:active::before { filter:none; }
.attack-choix:focus-visible::before, .attaque-menu .attaque-choix:focus-visible::before { outline:3px solid var(--azur); outline-offset:2px; }
.attack-sceau::before, .attaque-menu .attaque-choix .attack-sceau::before, #cap26-attack-menu .attaque-arenes .attack-sceau::before, #cap26-attack-menu .attaque-foret .attack-sceau::before { transform:none; clip-path:none; border-radius:10px; background:var(--sm-iv2); box-shadow:inset 0 0 0 1.5px var(--sm-bord); }
.attack-sceau .picon, .attaque-menu .attaque-choix .attack-sceau .picon { color:var(--sm-ink); }
#cap26-attack-menu .attaque-campagne .attaque-sceau::before { clip-path:none; background:linear-gradient(180deg, var(--or-clair), var(--or)); box-shadow:0 2px 0 var(--or-tranche); }
#cap26-attack-menu .attaque-campagne .attaque-sceau .picon { color:var(--or-texte); }
.attack-copy strong, .attaque-nom, .attaque-menu .attaque-choix .attack-copy strong { color:var(--sm-ink); text-shadow:none; }
.attack-copy small, .attaque-menu .attaque-choix .attack-copy small, .attaque-description { color:var(--sm-ink2); }
.attaque-tag, .attaque-menu .attaque-campagne .attaque-progression strong, .attaque-garnison, .attaque-legende { color:var(--sm-ink2); text-shadow:none; }
.attaque-menu .attaque-campagne .attaque-progression > small { color:var(--sm-ink2); }
.attaque-menu .attaque-garde .attaque-progression strong { color:var(--sm-rouge-s); }
.attack-chevron::before, .attaque-menu .attaque-choix .attack-chevron::before { border-color:var(--sm-ink2); }
.attaque-menu .attaque-choix:disabled .attack-sceau .picon { color:#8E97A8; }
.attaque-menu .attaque-choix:disabled .attack-copy strong { color:var(--sm-ink2); }
.attaque-resume { color:var(--azur-appui); }
.attaque-terminee { border-radius:14px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); border-left:4px solid var(--or); box-shadow:none; }
.attaque-terminee > .picon, .attaque-terminee small { color:var(--sm-or-s); }
.attaque-terminee strong { color:var(--sm-ink); }
.attaque-terminee > span > span { color:var(--sm-ink2); }
.attaque-verrouille { border-radius:14px; background:var(--sm-iv2); border:1.5px solid var(--sm-bord); border-left:4px solid var(--sm-bord); }
.attaque-verrouille > .picon { color:#8E97A8; }
.attaque-verrouille strong { color:var(--sm-ink2); }
.attaque-verrouille small { color:var(--sm-ink2); }
/* « Jouer » : le seul azur de la feuille */
.attaque-menu .attaque-jouer, #cap26-attack-menu .attaque-campagne > .attaque-jouer, .attaque-menu .attaque-garde .attaque-jouer { color:#fff; text-shadow:0 2px 0 rgba(0,40,120,.6); border-radius:12px; isolation:auto;
  background:var(--sm-azur-face); box-shadow:0 3px 0 var(--azur-tranche), inset 0 2px 0 rgba(230,251,255,.95); font:italic 900 22px/1 var(--f-titre); letter-spacing:.02em; }
#stage .attaque-menu .attaque-jouer::before { content:none; }
.attack-choix-campagne > b { color:#fff; border-radius:14px; background:var(--sm-azur-face); box-shadow:var(--sm-tranche), inset 0 2px 0 rgba(230,251,255,.95); text-shadow:0 2px 0 rgba(0,40,120,.6); isolation:auto; }
#stage .attack-choix-campagne > b::before { content:none; }
.attack-choix-campagne:active > b { box-shadow:var(--sm-tranche-appui), inset 0 2px 0 rgba(230,251,255,.95); filter:none; }
.attack-menace { color:var(--sm-rouge-s); }
#cap26-attack-menu .attack-lecture > .attack-garnison { color:var(--azur-clair); }
.cap26-attack-menu .attack-content > button .attack-lecture > .attack-garnison { background:none; box-shadow:none; }

/* ================================================================ 8. accueil avant l'ouverture de l'Invasion : les pastilles ivoire du socle, mêmes positions */
.screen.home::before { height:calc(var(--safe-t) + 70px); background:linear-gradient(to bottom, rgba(2,10,27,.38), rgba(2,10,27,0)); }
.home-head { top:calc(var(--safe-t) + 8px); left:10px; right:10px; gap:6px; }
.home-profil { min-height:44px; gap:0; }
.profile-seal { width:44px; height:44px; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); box-sizing:border-box; }
.profile-seal > .picon { width:34px; }
.home-profil:active .profile-seal { transform:translateY(2px); box-shadow:0 1px 0 #BFAE84, 0 3px 8px rgba(8,20,48,.28); }
.home-res, .home-head.serre .home-res { gap:6px; }
.home-res .bourse-pill, .home-head.serre .home-res .bourse-pill, .screen.home .home-res .bourse-pill { height:44px; padding:0 8px; gap:5px; transform:none; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); box-sizing:border-box; }
.home-res .bourse-pill > * { transform:none; }
.home-res .bourse-pill > .picon, .screen.home .home-res .bourse-pill > .picon { width:24px; }
.home-res .bourse-pill .val, .screen.home .home-res .bourse-pill .val { font:italic 900 21px/1 var(--f-titre); color:var(--sm-ink); text-shadow:none; }
.bourse-plus { width:44px; height:44px; margin:0 -14px 0 -8px; }
.bourse-plus::after { left:0; right:0; }
.bourse-plus::before, .screen.home .bourse-plus::before { width:20px; height:20px; margin:-10px 0 0 -10px; border-radius:6px; background:linear-gradient(var(--azur-haut), var(--azur)); box-shadow:0 2px 0 var(--azur-tranche); }
.bourse-plus > span, .screen.home .bourse-plus > span { font:900 17px/1 var(--f-texte); margin-top:0; }
.bourse-plus:active::before { transform:translateY(1px); filter:none; box-shadow:0 1px 0 var(--azur-tranche); }
.bourse-plus:focus-visible::before { outline:3px solid var(--azur); outline-offset:2px; }

/* le coffre de la Cité : son étiquette « Ouvrir » en pastille ivoire (plus de plaque nuit sur la Cité) */
.rail-entry#home-chest .rail-copy::before, .rail-entry#home-chest:disabled .rail-copy::before { transform:none; border-radius:8px; background:var(--sm-iv); box-shadow:0 2px 0 #BFAE84, 0 2px 6px rgba(8,20,48,.35); }
.rail-entry#home-chest .rail-copy > span, .rail-entry#home-chest:disabled .rail-copy > span { color:var(--sm-ink); text-shadow:none; }
.bchip::after, .bchip.locked::after { color:var(--sm-ink); text-shadow:none; clip-path:none; border-radius:7px; background:var(--sm-iv); box-shadow:0 2px 0 #BFAE84; }
.bchip.on::after { color:#fff; text-shadow:0 1px 0 rgba(0,40,120,.5); background:var(--sm-azur-face); box-shadow:0 2px 0 var(--azur-tranche); }
/* le reçu du coffre (src/cite/coffre-retour-ui.js injecte sa feuille au chargement : spécificité supérieure ici) : étiquette ivoire */
#stage > button.coffre-status, #stage > button.coffre-status[data-phase] > span, #stage > button.coffre-status[data-recu="true"] > span { color:var(--sm-ink); text-shadow:none; }
#stage > button.coffre-status > span::before, #stage > button.coffre-status[data-phase] > span::before, #stage > button.coffre-status[data-recu="true"] > span::before { transform:none; border-radius:8px; background:var(--sm-iv); box-shadow:0 2px 0 #BFAE84, 0 2px 6px rgba(8,20,48,.35); border:1.5px solid var(--sm-bord); }
#stage > button.coffre-status[data-phase="disponible"] > span { color:var(--sm-or-s); }
#stage > button.coffre-status[data-phase="disponible"] > span::after { border-bottom-color:var(--sm-iv); }
#stage > button.coffre-status[data-phase="attente"], #stage > button.coffre-status[data-phase="attente"] > span { color:var(--sm-ink2); }
/* Boutique : l'usage au départ (préparation-ravitaillement) sur le même papier */
.screen.panel[data-screen="shop"] .preparation-ravitaillement { border-top-color:var(--sm-bord); color:var(--sm-ink); }
.screen.panel[data-screen="shop"] .preparation-ravitaillement h4 { color:var(--sm-ink2); font:800 12px/1.2 var(--f-texte); letter-spacing:.1em; text-transform:uppercase; }
.screen.panel[data-screen="shop"] .preparation-ravitaillement p, .screen.panel[data-screen="shop"] .ravitaillement-ligne small { color:var(--sm-ink2); }

/* ================================================================ corrections après contre-lecture (14 octobre 2026, sceptique des menus du socle) */
/* résultats : la carte se centre si elle tient, sinon elle part du haut et défile (plus de titre coupé sous le bord) ; la victoire
   commence sous ses pastilles du haut (8 + 56 + 10) */
.screen.outcome, .screen.outcome.outcome-victory { justify-content:safe center; }
.screen.outcome.outcome-victory { padding-top:calc(var(--safe-t) + 74px); }
/* victoire : la pastille de série ne rétrécit plus (c'est la pastille Cité qui cède), ses deux lignes restent entières */
.outcome-victory .won-haut .serie { flex:none; padding:0 9px; }
#stage .outcome-victory .won-haut .serie::before { content:none; } /* le halo rond de D (inset -6 / -10) débordait la pastille */
.outcome-victory .won-haut .serie-copy b, .outcome-victory .won-haut .serie-copy small { white-space:nowrap; }
.won-haut .won-cite.garnison strong { white-space:nowrap; }
/* récompense du territoire : les pas au-dessus, la récompense dessous sur toute la largeur (deux lignes au plus) */
.won-marche.plaque-module, .outcome-victory .won-marche.plaque-module { flex-direction:column; align-items:stretch; gap:8px; padding:10px 12px; }
.won-marche .won-rec { min-width:120px; }
.won-rec-copy { flex:1; min-width:0; }
.won-rec-copy b, .won-rec-copy small, .outcome-victory .won-rec-copy small { white-space:normal; overflow:visible; }
/* « après le bonus d'adresse » passe à la ligne au lieu d'être coupé */
.won-video-apres, .outcome-victory .won-video-apres { flex:1 1 auto; min-width:0; max-width:none; white-space:normal; line-height:1.05; text-align:left; }
/* bandeaux d'état (sauvegarde, conseil du Champion, entraînement) : plaque ivoire droite, encre ; le bouton de reprise azur.
   #stage #id (2,0,x) passe devant #save-warning.autre-onglet.sur-accueil (1,2,x) de progression.css. */
#stage #save-warning, #stage #champion-guide, #stage #tutorial-replay { color:var(--sm-ink); text-shadow:none; }
#stage #save-warning::before, #stage #champion-guide::before, #stage #tutorial-replay::before { transform:none; inset:0; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); }
#stage #save-warning > span::before { background:var(--sm-rouge); }
#stage #save-warning.decor > span::before { background:var(--azur); }
#stage #save-warning > span::after { color:var(--sm-rouge-s); }
#stage #save-warning > button, #stage #champion-guide button, #stage #tutorial-replay button { border:0; border-radius:12px; color:#fff; text-shadow:0 2px 0 rgba(0,40,120,.6);
  background:var(--sm-azur-face); box-shadow:0 3px 0 var(--azur-tranche), inset 0 2px 0 rgba(230,251,255,.95); font:italic 900 16px/1.1 var(--f-titre); letter-spacing:.02em; }
#stage #save-warning > button:active, #stage #champion-guide button:active, #stage #tutorial-replay button:active { transform:translateY(2px); box-shadow:0 1px 0 var(--azur-tranche), inset 0 2px 0 rgba(230,251,255,.95); }
#stage #save-warning > button:focus-visible, #stage #champion-guide button:focus-visible, #stage #tutorial-replay button:focus-visible { outline:3px solid var(--azur); outline-offset:2px; }
/* la session suspendue à l'accueil (cite-cap26.css pose le bandeau dans .battle-row, sur une plaque nuit inclinée) */
#stage .screen.home.lecture-suspendue > .battle-row:has(> #save-warning.autre-onglet)::before { transform:none; inset:0 4px; border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); }
#stage .screen.home.lecture-suspendue .battle-row > #save-warning.autre-onglet.sur-accueil > span { color:var(--sm-ink); font:700 14px/1.25 var(--f-texte); }
#stage .screen.home.lecture-suspendue .battle-row > #save-warning.autre-onglet.sur-accueil > button { width:auto; min-width:118px; padding:0 12px; }
/* journal des attaques (I3) : « Ta garnison, Puissance 34, l'a repoussé » passe à la ligne au lieu d'être coupé */
.inv-att .inv-a-quoi { white-space:normal; overflow:visible; text-overflow:clip; }
/* l'écran du rival (I2) garde son fond nuit sous la scène, comme avant cette feuille */
.screen.panel.rival-screen { background:#2A3A52; }
/* toast : pastille ivoire, encre ; le conseil (#toast.guide) sur la même pastille */
#toast { border-radius:12px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); color:var(--sm-ink); font:700 14px/1.25 var(--f-texte); text-shadow:none; }
#toast .picon { color:var(--sm-or-s); }
#stage #toast.guide { padding:8px 16px; border-radius:12px; background:var(--sm-iv); box-shadow:var(--sm-ombre); color:var(--sm-ink); font:700 15px/1.2 var(--f-texte); text-shadow:none; isolation:auto; }
#stage #toast.guide::before { content:none; }
#stage #toast.guide .picon { color:var(--azur); }
/* écran de titre : la carte du profil et du nom en ivoire, encre ; « Jouer » reste le seul azur */
.title-profile, .title-nom-bloc, .title-reprise-note { border-radius:14px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre-carte); color:var(--sm-ink); }
.title-portrait { background:var(--sm-iv2); box-shadow:inset 0 0 0 1.5px var(--sm-bord); }
.title-portrait .picon { color:var(--sm-ink); }
.title-profile-copy strong, .title-profile-copy small b { color:var(--sm-ink); }
.title-profile-copy small, .title-level small { color:var(--sm-ink2); }
.title-level { border-left-color:var(--sm-bord); }
.title-level b, .title-nom-lbl { color:var(--sm-or-s); }
.title-screen .nom-champ { color:var(--sm-ink); box-shadow:inset 0 -2px 0 var(--sm-bord); }
.title-screen .nom-champ:focus { box-shadow:inset 0 -2px 0 var(--azur); }

/* ================================================================ offres (14 octobre 2026, docs/design/ECONOMIE_OFFRES.md §6)
   Un bouton d'une surface existante, jamais une fenêtre : la vidéo (bordé d'or sombre, comme « Vidéo ×2 » de la victoire), les gemmes
   (bordé d'encre, comme les boutons secondaires), la raison dite en une ligne quand l'offre est éteinte. Cibles de 52 points. */
.offre-bloc { display:flex; flex-direction:column; gap:8px; padding:10px 12px 10px; border-radius:14px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); min-width:0; }
.offre-tete { display:flex; align-items:center; gap:8px; min-width:0; }
.offre-tete .picon { flex:none; width:22px; color:var(--sm-rouge); }
.offre-tete b { flex:1 1 auto; min-width:0; font:italic 900 var(--fs-scene)/1.1 var(--f-titre); letter-spacing:.02em; color:var(--sm-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.offre-tete small { flex:none; font:700 var(--fs-legende)/1 var(--f-texte); color:var(--sm-ink2); white-space:nowrap; }
.offre-btns { display:flex; gap:8px; min-width:0; }
.menu-command.offre-btn { flex:1 1 0; min-width:0; min-height:52px; margin:0; padding:4px 8px; gap:6px; justify-content:center; text-align:left; }
.offre-btn > .picon { flex:none; width:22px; }
.offre-btn.or > .picon { background-color:var(--sm-ink); }
.offre-btn .command-copy { flex:1 1 auto; align-items:flex-start; gap:2px; }
.offre-btn .command-copy strong { max-width:100%; font:italic 900 15px/1.05 var(--f-titre); letter-spacing:.01em; white-space:normal; overflow-wrap:anywhere; }
.offre-btn .command-copy small { max-width:100%; font:700 var(--fs-legende)/1 var(--f-texte); white-space:nowrap; overflow:hidden; color:var(--sm-ink2); text-shadow:none; }
.offre-btn .command-copy small .picon { width:16px; }
.offre-btn .rival-brique { width:16px; height:12px; }
.menu-command.offre-btn:disabled { background:linear-gradient(#C9CFD8, #B3BAC6); color:var(--sm-gris-texte); box-shadow:0 3px 0 #8A93A5; }
.menu-command.offre-btn:disabled .command-copy small, .menu-command.offre-btn:disabled .command-copy strong { color:var(--sm-gris-texte); }
.menu-command.offre-btn:disabled > .picon:not(.pi-cristaux):not(.pi-or) { background-color:var(--sm-gris-texte); opacity:.8; }
.menu-command.offre-btn.or:disabled, .menu-command.raid-double:disabled { border:0; }
.menu-command.offre-btn:disabled > .pi-cristaux, .menu-command.offre-btn:disabled > .pi-or { opacity:.55; }
.offre-raison { margin:0; font:700 var(--fs-legende)/1.25 var(--f-texte); color:var(--sm-ink2); text-align:center; }
.offre-raison[hidden] { display:none; }
.offre-bloc.bas { order:9; }   /* au maximum : le bloc se retire sous la fiche, le Donjon reste d'abord un bâtiment */
.building-offre-pierre { flex:1 0 100%; order:-2; display:flex; flex-direction:column; gap:6px; min-width:0; padding:8px 10px; border-radius:14px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); box-sizing:border-box; }
.building-offre-pierre[hidden] { display:none; }
/* le coût de pierre du niveau dépasse le plafond du Donjon : la raison en une ligne, puis le chemin vers la fiche du Donjon (même écran, aucune fenêtre) */
.offre-lien { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; min-height:44px; margin:0; padding:4px 12px; box-sizing:border-box; border-radius:12px; border:1.5px solid var(--sm-ink2); background:var(--sm-iv); color:var(--sm-ink); font:italic 900 15px/1.1 var(--f-titre); letter-spacing:.01em; cursor:pointer; }
.offre-lien[hidden] { display:none; }
.offre-lien .picon { flex:none; width:22px; background-color:var(--sm-ink); }
.offre-lien:active { background:var(--sm-iv2); transform:translateY(1px); }
.offre-lien:focus-visible { outline:2px solid var(--azur-clair); outline-offset:2px; }
.offre-btns[hidden] { display:none; }
.building-actions { flex-wrap:wrap; }
.menu-command.raid-double { min-height:52px; width:100%; margin:0; padding:4px 14px; gap:10px; justify-content:center; }
.raid-double > .picon { flex:none; width:28px; background-color:var(--sm-ink); }
.raid-double .command-copy { align-items:flex-start; gap:3px; }
.raid-double .command-copy strong { font:italic 900 24px/1 var(--f-titre); }
.raid-double .command-copy small { color:var(--sm-ink2); font:700 var(--fs-libelle)/1 var(--f-texte); text-shadow:none; }
.raid-double .command-copy small .picon { width:18px; }
.menu-command.raid-double:disabled { background:linear-gradient(#C9CFD8, #B3BAC6); color:var(--sm-gris-texte); box-shadow:0 3px 0 #8A93A5; }
.menu-command.raid-double:disabled .command-copy small, .menu-command.raid-double:disabled .command-copy strong { color:var(--sm-gris-texte); }
.menu-command.raid-double:disabled > .picon { background-color:var(--sm-gris-texte); }
.raid-double-ok > .picon { background-color:var(--sm-or-s); width:22px; }
.raid-double-ok b { margin-left:auto; }
.shop-offre.plein .shop-payer .picon { display:none; }
/* un bouton de la Boutique éteint (faute de fonds, stock plein, maximum) garde un texte lisible : encre sombre sur gris clair, au lieu du bleu à moitié transparent (contraste mesuré sur les pixels, ≥ 4,5) */
.screen.panel[data-screen="shop"] .shop-payer:disabled { opacity:1; border-color:transparent; background:linear-gradient(#C9CFD8, #B3BAC6); color:var(--sm-gris-texte); box-shadow:0 3px 0 #8A93A5; }
.screen.panel[data-screen="shop"] .shop-payer:disabled .picon { opacity:.6; }
/* un bouton éteint par le plafond de vidéos (« Continuer », « Vidéo ×2 ») et « Améliorer » éteint sur la fiche : même gris clair et même encre sombre que les offres (contraste mesuré ≥ 4,5 ; avant : blanc sur gris, 2,8) */
.menu-command.or[aria-disabled="true"], .won-video[aria-disabled="true"], #over-revive[aria-disabled="true"], .screen.building .building-buy:disabled { opacity:1; background:linear-gradient(#C9CFD8, #B3BAC6); color:var(--sm-gris-texte); box-shadow:0 3px 0 #8A93A5; text-shadow:none; }
.won-video[aria-disabled="true"] .won-video-lbl, .won-video[aria-disabled="true"] .won-video-n b, .won-video[aria-disabled="true"] .won-video-apres, #over-revive[aria-disabled="true"] .cmd-main, #over-revive[aria-disabled="true"] strong, .screen.building .building-buy:disabled .cmd-main, .screen.building .building-buy:disabled .price { color:var(--sm-gris-texte); text-shadow:none; }
#over-revive[aria-disabled="true"] .picon, .won-video[aria-disabled="true"] .picon { background-color:var(--sm-gris-texte); }
.screen.building .building-buy:disabled .price-pierre.manque { color:var(--sm-rouge-s); }
/* la confirmation d'une offre se lit sur la surface du geste : à la Boutique elle se pose au-dessus de la barre basse (le haut porte les lignes) */
#stage:has(> .screen[data-screen="shop"]:not([hidden])) > #toast.offre { top:auto; bottom:calc(var(--nav-h) + 12px); }
/* et au résultat d'un raid, sous la carte : en haut il couvrirait le titre */
#stage:has(> .screen[data-screen="raid-result"]:not([hidden])) > #toast.offre { top:auto; bottom:calc(var(--safe-b) + 6px); }

/* ================================================================ cadres courts et étroits (après les règles de base) */
@media (max-height:700px) {
  .result-heading, .outcome .result-heading { font-size:38px; }
  .gain-heros .gain-n, .gain-n { font-size:44px; }
  .gain-heros .gain-piece, .gain-piece { width:40px; }
  .gain, .gain-heros { min-height:52px; }
  .result-panel { padding:12px 12px 12px; gap:7px; }
  .result-panel .result-body { gap:7px; }
  .screen.home .home-res .bourse-pill { background:var(--sm-iv); box-shadow:var(--sm-ombre); }
  .screen.home .profile-seal { box-shadow:var(--sm-ombre); }
  .menu-command.primary { min-height:52px; }
  #won-continue strong, #over-retry strong { font-size:32px; }
  .pause-card .menu-command.primary { min-height:54px; }
  .pause-card h2 { font-size:26px; }
  /* victoire à 320 × 640 : la carte tenait à 18 points près sous les pastilles du haut */
  .screen.outcome.outcome-victory { padding-top:calc(var(--safe-t) + 70px); }
  .victory-panel { padding-top:8px; }
  .won-marche.plaque-module, .outcome-victory .won-marche.plaque-module { gap:6px; padding:8px 10px; }
  .won-video { min-height:48px; }
}
@media (max-width:359px) {
  .panel-title, .screen.panel[data-screen="shop"] .head-titles .panel-title { font-size:20px; }
  .screen.panel > .head > .head-titles { padding:0 8px; }
  .screen.panel > .head > .purse > .purse-line { padding:0 6px 0 5px; gap:4px; }
  .purse .picon { width:18px; }
  .purse .val { font-size:15px; }
  .cap26-world-title { font-size:22px; padding:0 10px; }
  .home-res .bourse-pill .val { font-size:18px; }
  .won-video-apres, .outcome-victory .won-video-apres { display:none; }
  .won-haut .won-cite.garnison strong { font-size:19px; }
  .inv-barre .inv-num { font-size:17px; }
  .inv-barre .inv-chip { padding:0 6px; gap:4px; }
  .inv-barre .inv-chip > .picon { width:20px; }
  /* l'or part de sa largeur de contenu (invasion.css le fait partir de zéro, et hud.js descendait sa fonte à 11 points sans y tenir) */
  .inv-barre .inv-chip.inv-or { flex:2 1 auto; }
  .inv-barre .inv-chip.inv-pierre { flex:1 1 auto; }
  .inv-barre .inv-chip.inv-gemmes { width:auto; }
  .won-cite.garnison small { font-size:11px; }
}

/* le résultat du raid (corps, pied, coffre, vidéo) vit dans invasion.css depuis le lot 3 (18 octobre 2026) */

/* ================================================================ victoire et défaite allégées (17 octobre 2026)
   Retour de Bastien : « trop d'informations dans la page Victoire et Défaite ». UN seul héros par temps de la séquence
   (hud.js pose data-temps sur l'écran : titre, butin, coffre, adresse, repos) ; au repos : le titre, les étoiles, UN total d'or,
   la récompense sur UNE ligne, deux boutons (Continuer principal, la vidéo en secondaire à bord d'or). Le détail du butin est à la
   demande. Défaite : le titre, une phrase de cause, ce qu'on garde, UN bouton principal. Le DOM reste complet (les identifiants
   lus par les sondes) ; seule cette feuille décide de ce qui paraît. Aucun filter, aucun backdrop-filter. */
.outcome-victory .won-haut { transition:opacity 240ms var(--courbe), visibility 0s linear 0s; }
.outcome-victory:not([data-temps="repos"]) .won-haut { opacity:0; visibility:hidden; transition:opacity 160ms var(--courbe), visibility 0s linear 160ms; }
.outcome-victory:not([data-temps="repos"]) :is(.won-marche, .won-video, .victory-relic, .won-detail) { visibility:hidden; pointer-events:none; }
/* la Cité : une seule ligne courte, jamais deux phrases ; la série : une pastille d'une ligne */
/* la Cité : un bouton carré (l'icône), l'armée gardée en pastille numérique (la phrase est dans l'aria-label et le title) */
.outcome-victory .won-haut .won-cite, .outcome-victory .won-haut .won-cite.garnison { position:relative; width:48px; max-width:none; min-height:48px; padding:0; overflow:visible; justify-content:center; }
.outcome-victory .won-haut .won-cite.garnison strong { position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.outcome-victory .won-haut .won-cite.garnison small { position:absolute; right:-7px; top:-7px; min-width:24px; height:24px; padding:0 5px; box-sizing:border-box; display:grid; place-items:center; border-radius:12px; background:var(--azur); border:2px solid var(--sm-iv); color:#fff; font:900 13px/1 var(--f-texte); white-space:nowrap; }
.outcome-victory .won-haut .serie { height:48px; align-items:center; justify-content:center; }
.outcome-victory .won-haut .serie-tete { align-items:center; }
.outcome-victory .won-haut .serie-copy { flex-direction:row; align-items:baseline; gap:6px; }
.outcome-victory .won-haut .serie-copy b, .outcome-victory .won-haut .serie-copy small { text-shadow:none; }
/* la légende du butin : une seule ligne à la fois (la dernière source comptée), jamais une pile ; une source unique n'en a pas */
.won-sources:not(.liste) { flex-wrap:nowrap; }
.won-sources:not(.liste) .source { display:none; }
.won-sources:not(.liste) .source.on.derniere { display:flex; }
.won-sources.seule:not(.liste), .won-sources .source-extra:not(.on), .won-sources .source.zero { display:none; }
.won-sources:not(.liste) .source-lbl { font:700 15px/1.1 var(--f-texte); color:var(--sm-ink2); }
.won-sources:not(.liste) .source-n { font:italic 900 22px/1 var(--f-titre); color:var(--sm-or-s); }
.won-sources.liste { display:flex; flex-direction:column; flex-wrap:nowrap; align-items:stretch; gap:4px; width:100%; padding:6px 14px; box-sizing:border-box; border-radius:12px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); }
.won-sources.liste .source { display:none; justify-content:space-between; align-items:baseline; gap:10px; }
.won-sources.liste .source.on:not(.zero) { display:flex; }
.won-sources.liste .source-lbl { font:600 14px/1.15 var(--f-texte); color:var(--sm-ink2); }
.won-sources.liste .source-n { font:italic 900 18px/1 var(--f-titre); color:var(--sm-ink); }
/* un seul héros : pendant le coffre, le gain recule (sans bouger la mise en page) ; le coffre porte la scène */
.outcome-victory .gain { transition:transform 220ms var(--courbe), opacity 220ms var(--courbe); transform-origin:50% 50%; }
.outcome-victory[data-temps="coffre"] .gain { transform:scale(.62); opacity:.85; }
/* au repos, la récompense tient sur UNE ligne : l'icône, le nom (et son niveau si elle attend), la marche en petits losanges */
.won-marche.plaque-module, .outcome-victory .won-marche.plaque-module { flex-direction:row; align-items:center; justify-content:space-between; gap:10px; min-height:48px; padding:6px 12px; }
.outcome-victory .won-marche .marche-pas { flex:none; order:2; gap:7px; }
.outcome-victory .won-marche .marche-pas::before, .outcome-victory .won-marche .marche-pas::after { left:6px; }
.outcome-victory .won-marche .marche-pas::before { right:6px; }
.outcome-victory .won-marche .marche-pas::after { width:calc((100% - 12px) * var(--f, 0)); }
.outcome-victory .won-marche .pas { width:14px; height:14px; font-size:0; }
.outcome-victory .won-marche .pas .picon { display:none; }
.outcome-victory .won-marche .pas.cur { width:18px; height:18px; }
.outcome-victory .won-marche .won-rec { flex:1 1 auto; min-width:0; order:1; }
.outcome-victory .won-rec > .picon { width:28px; flex:none; }
.outcome-victory .won-rec-copy { flex-direction:row; flex-wrap:wrap; align-items:baseline; gap:2px 8px; }
.outcome-victory .won-rec-copy b { font-size:19px; white-space:normal; }
.outcome-victory .won-rec-copy small { display:inline; font:700 14px/1.1 var(--f-texte); }
.outcome-victory .won-rec.sans-note .won-rec-copy small { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
/* la vidéo : secondaire, à bord d'or sur fond clair, plus basse que Continuer ; le chiffre est ce qu'elle rapporte */
.outcome-victory .won-video { min-height:48px; padding:0 14px; gap:8px; }
.outcome-victory .won-video-lbl { font-size:22px; }
.outcome-victory .won-video-n b { font-size:24px; }
.outcome-victory .won-video-n .picon { width:26px; }
.outcome-victory .won-video > .picon { width:30px; height:23px; }
/* le seigneur tombé : la relique EST la récompense, elle remplace la ligne de la marche ; son nom et son effet tiennent sur deux lignes */
.outcome-victory.avec-relique .won-marche { display:none; }
.outcome-victory .victory-relic { min-height:48px; padding:6px 12px; gap:10px; }
.outcome-victory .victory-relic .picon { width:28px; flex:none; }
.outcome-victory .relic-copy { gap:1px; }
.outcome-victory .relic-copy small { font:700 12px/1 var(--f-texte); }
.outcome-victory .relic-copy strong { font-size:19px; }
.outcome-victory .relic-copy em { font:600 13px/1.15 var(--f-texte); }
/* la ligne du bonus d'adresse arrêté : une légende sans cadre sous le curseur, plus une pastille */
.outcome-victory .won-pris { display:none; }
.outcome-victory .won-actions { margin-top:6px; }

/* défaite : titre, une phrase, la jauge de la base, ce qu'on garde, le score en une ligne, UN bouton principal */
.outcome-defeat .result-heading::before { content:none; }
.outcome-defeat .result-heading { overflow:visible; text-align:center; }
.outcome-defeat .defeat-panel .result-body { gap:12px; }
.outcome-defeat .over-base { display:flex; flex-direction:column; align-items:stretch; gap:8px; width:100%; margin:0; }
.outcome-defeat .over-base-lbl { font:700 17px/1.25 var(--f-texte); color:var(--sm-ink); text-align:center; text-wrap:balance; }
.outcome-defeat .over-base .sangle { height:12px; }
.outcome-defeat .over-garde { margin:0; display:flex; align-items:center; justify-content:center; gap:8px; font:italic 900 26px/1.1 var(--f-titre); color:var(--sm-or-s); }
.outcome-defeat .over-garde .picon { width:30px; flex:none; }
.outcome-defeat .over-score { margin:0; display:flex; justify-content:center; align-items:baseline; gap:6px 18px; flex-wrap:wrap; padding:0; }
.outcome-defeat .over-cote { display:inline-flex; align-items:baseline; gap:6px; min-height:0; padding:0; border:0; background:none; box-shadow:none; }
.outcome-defeat .over-cote small { font:600 14px/1 var(--f-texte); color:var(--sm-ink2); text-shadow:none; }
.outcome-defeat .over-cote strong { font:italic 900 20px/1 var(--f-titre); color:var(--sm-ink); text-shadow:none; }
.outcome-defeat .over-cote.record.battu small, .outcome-defeat .over-cote.record.battu strong { color:var(--sm-or-s); }
.outcome-defeat .over-actions { display:flex; flex-direction:column; gap:14px; margin-top:6px; }
.outcome-defeat .over-second { display:flex; align-items:stretch; gap:10px; }
.outcome-defeat .over-second #over-revive { flex:1 1 auto; min-width:0; margin:0; min-height:56px; }
.outcome-defeat .over-cite { flex:none; width:64px; min-height:56px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; margin:0 auto; padding:2px 0; box-sizing:border-box; border-radius:16px; background:var(--sm-blanc); border:2px solid var(--sm-bord); box-shadow:0 3px 0 #D8C9A3; color:var(--sm-ink); font:inherit; }
.outcome-defeat .over-cite .picon { width:24px; color:var(--sm-ink); }
.outcome-defeat .over-cite small { font:800 12px/1 var(--f-texte); color:var(--sm-ink2); }
.outcome-defeat .over-cite:active { transform:translateY(2px); box-shadow:0 1px 0 #D8C9A3; }
.outcome-defeat .over-cite:focus-visible { outline:3px solid var(--azur); outline-offset:2px; }

/* Arène (même mot « Victoire » / « Défaite », même allègement) : le score et le record en UNE ligne discrète au lieu de deux tuiles ;
   à la défaite, la cause et la vie de la base ennemie en une phrase et sa jauge. */
.arena-outcome .arena-result-score, .arena-outcome.defaite .arena-result-score { display:flex; justify-content:center; align-items:baseline; gap:6px 18px; flex-wrap:wrap; padding:0; }
.arena-outcome .arena-result-score .plaque-module, .arena-outcome .arena-result-score .duel-cote,
.arena-outcome.defaite .arena-result-score .plaque-module, .arena-outcome.defaite .arena-result-score .duel-cote { display:inline-flex; flex-direction:row; align-items:baseline; gap:6px; min-height:0; padding:0; border:0; background:none; box-shadow:none; }
.arena-outcome .arena-result-score small, .arena-outcome.defaite .arena-result-score .duel-cote small, .arena-outcome.defaite .arena-result-score .plaque-module small { font:600 14px/1 var(--f-texte); color:var(--sm-ink2); }
.arena-outcome .arena-result-score strong, .arena-outcome.defaite .arena-result-score .duel-cote strong, .arena-outcome.defaite .arena-result-score .plaque-module strong { font:italic 900 20px/1 var(--f-titre); color:var(--sm-ink); }
.arena-outcome .arena-result-score .battu small, .arena-outcome .arena-result-score .battu strong, .arena-outcome.defaite .arena-result-score .battu small, .arena-outcome.defaite .arena-result-score .battu strong { color:var(--sm-or-s); }
.arena-outcome.defaite .over-base { gap:8px; margin:0; }
.arena-outcome.defaite .over-base-lbl { font:700 17px/1.25 var(--f-texte); color:var(--sm-ink); text-align:center; text-wrap:balance; }
.arena-outcome.defaite .over-base .sangle { height:12px; }
.arena-result-reward { font:italic 900 22px/1.1 var(--f-titre); color:var(--sm-or-s); }
.arena-outcome:not(.defaite) .arena-result-reward { font:700 14px/1.2 var(--f-texte); color:var(--sm-ink2); }

/* ================================================================ LOT 1 : FONDATIONS TRANSVERSES + MENUS (18 octobre 2026)
   Corrections de défauts relevées par le jury externe (docs/rapports/2026-10-18/astra_toutes_pages) : halos cyan réduits, une seule
   voix condensée italique pour les titres, chiffres et boutons, bleu = action principale seulement, badges de navigation sobres, contrastes.
   Feuille la dernière chargée : chaque règle repasse devant les couches d'avant ; aucune classe n'est renommée (les gabarits des autres
   lots gardent leurs sélecteurs). Aucun filter, aucun backdrop-filter. */
:root {
  /* halo cyan réduit : une tranche franche et une ombre courte, plus de lueur diffuse autour du bouton principal */
  --sm-tranche:0 4px 0 var(--azur-tranche), 0 6px 10px rgba(0,8,24,.30);
  --sm-tranche-appui:0 1px 0 var(--azur-tranche);
  --tranche-azur:0 4px 0 var(--azur-tranche), 0 6px 10px rgba(0,8,24,.30);
  --tranche-azur-appui:0 1px 0 var(--azur-tranche);
}
/* ---------- titre */
.title-wordmark.peint { width:min(272px, 78vw); margin-top:0; }
.title-nom-copy { gap:3px; }
.title-nom-lbl { color:var(--sm-or-s); }
.title-nom-saisie { display:flex; align-items:center; gap:8px; }
.title-nom-saisie .picon { flex:none; width:20px; color:var(--sm-ink2); }
.title-screen .nom-champ { flex:1; min-width:0; min-height:44px; padding:6px 10px; border:1.5px solid var(--sm-bord); border-radius:10px; background:var(--sm-blanc);
  font:700 20px/1.2 var(--f-texte); font-style:normal; color:var(--sm-ink); box-shadow:none; }
.title-screen .nom-champ::placeholder { color:#6B7488; font-weight:600; opacity:1; }
.title-screen .nom-champ:focus { border-color:var(--azur); box-shadow:0 0 0 2px rgba(8,121,248,.25); outline:none; }
.title-profile-copy strong { font-size:22px; line-height:1.1; }
.title-level small { font:700 12px/1 var(--f-texte); letter-spacing:.04em; text-transform:uppercase; }
.title-standard .title-continue { min-height:56px; }
.title-reprise-info { margin:0; padding:0 6px; text-align:center; font:600 14px/1.3 var(--f-texte); color:#fff; text-shadow:var(--ombre-texte-scene); }
.title-reprise-info[hidden] { display:none; }
.title-standard .title-continue.reprise { min-height:56px; }
.title-standard .title-continue.reprise strong { font-size:30px; }
#stage .title-standard .title-cite { align-self:stretch; display:flex; align-items:center; justify-content:center; min-height:48px; padding:0 16px; border-radius:14px; background:var(--sm-iv);
  border:1.5px solid var(--sm-bord); box-shadow:var(--sm-ombre); color:var(--sm-ink); text-shadow:none; text-decoration:none; font:800 16px/1 var(--f-texte); }
#stage .title-standard .title-cite:active { transform:translateY(2px); background:var(--sm-iv2); }
/* ---------- barre basse : pastille de nouveauté sobre sur Monde (un point d'or), le rouge reste aux Missions à réclamer */
#stage .nav #nav-carte-badge.badge.pastille { top:9px; right:calc(50% - 22px); min-width:12px; width:12px; height:12px; padding:0; border-radius:50%; font-size:0; line-height:0;
  background:var(--or); box-shadow:0 0 0 2px var(--sm-iv); }
/* ---------- Cité : bouton Attaquer plus bas, sous-titre en police de lecture ; étiquette du coffre reliée à l'objet */
#stage .screen.home #home-battle, #stage .screen.home.invasion #home-battle { min-height:64px; padding:6px 14px; gap:12px; }
#stage .screen.home #home-battle-main, #stage .screen.home.invasion #home-battle-main { font-size:36px; line-height:1; }
#stage .screen.home.invasion #home-battle-sub, #stage .screen.home #home-battle-sub { display:block; font:700 14px/1.1 var(--f-texte); }
#stage .screen.home #home-battle > .picon { width:34px; }
#stage .coffre-status > span { margin-top:7px; }
#stage .coffre-status > span::after { content:''; position:absolute; left:50%; top:-5px; z-index:0; width:9px; height:9px; margin-left:-5px; transform:rotate(45deg);
  background:var(--sm-iv); border-left:1.5px solid var(--sm-bord); border-top:1.5px solid var(--sm-bord); pointer-events:none; }
#stage .coffre-status[data-recu="true"] > span::after, #stage .coffre-status[data-phase="attente"] > span::after { content:none; }
/* ---------- menu Attaquer : voile plus franc sur la Cité, barre basse en retrait, fermeture de 44 points intégrée, une seule bordure à la campagne */
.cap26-attack-menu { background:linear-gradient(to top, rgba(6,16,30,.7) 0, rgba(6,16,30,.5) 55%, rgba(6,16,30,.32) 100%); }
#stage:has(> .screen.home > #cap26-attack-menu:not([hidden])) > #nav-rail { opacity:.5; }
#stage #cap26-attack-menu .cap26-attack-close.round-btn { width:44px; height:44px; min-height:0; margin:0 2px -41px 0; border:0; border-radius:50%; background:none; box-shadow:none; }
#stage #cap26-attack-menu .cap26-attack-close.round-btn::before { content:''; position:absolute; inset:0; z-index:-1; border-radius:50%; background:var(--sm-iv2); box-shadow:inset 0 0 0 1.5px var(--sm-bord); }
#stage #cap26-attack-menu .cap26-attack-close.round-btn .picon { width:18px; color:var(--sm-ink); }
.attack-choix:focus-visible, .attaque-menu .attaque-choix:focus-visible { outline:none; }
#stage #cap26-attack-menu .attaque-campagne:focus-visible::before { box-shadow:inset 4px 0 0 var(--or), 0 0 0 2px var(--azur); }
#stage #cap26-attack-menu #attack-campagne::before { box-shadow:inset 4px 0 0 var(--or); }
.attaque-resume { font:700 14px/1.3 var(--f-texte); color:var(--sm-ink2); }
.attaque-menu .attaque-campagne .attaque-progression > small, .attaque-menu .attaque-campagne .attaque-progression strong { font:600 14px/1.25 var(--f-texte); font-style:normal; }
.attaque-nom { font:italic 900 26px/1 var(--f-titre); }

/* ---------- Missions : UNE grille (icône, nom et objectif, jauge et compte) ; la récompense à droite ; l'état se lit à son traitement
   (à prendre : bouton or ; en cours : récompense en texte plat ; terminée : coche verte compacte) */
#stage .mission, #stage .screen.panel[data-screen="missions"] .mission { display:grid; grid-template-columns:44px minmax(0,1fr) auto; align-items:center; gap:2px 12px; min-height:0; padding:12px; }
#stage .mission .col { min-width:0; gap:3px; }
#stage .mission .name { font:800 17px/1.15 var(--f-texte); }
#stage .mission .desc { font:600 14px/1.3 var(--f-texte); color:var(--sm-ink2); }
#stage .mission .mprog { display:flex; align-items:center; gap:10px; margin-top:3px; }
#stage .mission .mprog .bar { flex:1; min-width:0; }
#stage .mission .prog { flex:none; min-width:40px; text-align:right; font:800 15px/1 var(--f-texte); font-style:normal; font-variant-numeric:tabular-nums; color:var(--sm-ink); }
#stage .mission .claim-txt { display:flex; flex-direction:column; align-items:center; gap:2px; }
#stage .mission .claim-lbl { display:none; font:800 12px/1 var(--f-texte); letter-spacing:.02em; text-transform:none; }
#stage .mission .claim { align-self:center; justify-self:end; min-width:72px; min-height:44px; margin:0; }
#stage .mission .claim:disabled, #stage .mission .claim:disabled:active { background:none; box-shadow:none; padding:0 2px; color:var(--sm-or-s); }
#stage .mission .claim:disabled .picon { opacity:1; }
#stage .mission.prete { border-color:var(--or); background:#FFFBEA; }
#stage .mission.prete .claim:not(:disabled) { min-width:92px; padding:4px 12px; }
#stage .mission.prete .claim-lbl { display:block; color:var(--or-texte); }
#stage .mission .claim.done, #stage .mission .claim.done:disabled { color:var(--sm-vert); font:800 14px/1.1 var(--f-texte); }
#stage .mission.finie { background:var(--sm-iv); }
#stage .mission.finie .claim-txt { flex-direction:row; }
#stage .mission.finie .reward-icon, #stage .mission .claim.done .reward-icon { display:none; }
#stage .mission.finie .bar i { background:var(--sm-vert); }
#stage .mission-coffre .claim:not(:disabled) { min-width:92px; padding:4px 12px; }
#stage .mission-coffre:has(#missions-chest:not(:disabled)) { border-color:var(--or); background:#FFFBEA; }
#stage .mission-coffre .mission-emblem { color:var(--sm-or-s); }
/* ---------- Boutique : le prix en rangée compacte « 30 or ou 2 gemmes », le stock en texte secondaire, le plein en statut */
.shop-row .tag, .shop-row .tag.owned { font:600 13px/1.2 var(--f-texte); color:var(--sm-ink2); }
.shop-row .desc { font:600 14px/1.3 var(--f-texte); }
#stage .shop-row .shop-paiements { display:flex; align-items:center; gap:8px; margin-top:6px; }
#stage .shop-row .shop-payer { flex:1 1 0; min-width:0; min-height:44px; margin:0; padding:0 8px; gap:6px; font:italic 900 18px/1 var(--f-titre); box-shadow:0 3px 0 var(--azur-tranche); }
#stage .shop-row .shop-payer .picon { width:22px; }
.shop-ou { flex:none; font:700 13px/1 var(--f-texte); color:var(--sm-ink2); }
#stage .shop-row.plein .shop-ou { display:none; }
#stage .shop-row.plein .shop-payer:disabled { flex:none; min-height:34px; padding:0 14px; border-radius:17px; background:var(--sm-iv2); color:var(--sm-ink2); box-shadow:inset 0 0 0 1.5px var(--sm-bord);
  font:800 14px/1 var(--f-texte); }
#stage .shop-row.plein .shop-payer:disabled .picon { display:none; }
/* utilisation en bataille : un panneau à part, une grille constante (nom et choix, explication du mode choisi dessous) */
[data-screen="shop"] .preparation-ravitaillement { margin:14px 0 0; padding:12px; border:1.5px solid var(--sm-bord); border-radius:14px; background:var(--sm-blanc); }
.screen.panel[data-screen="shop"] .preparation-ravitaillement { border-top:1.5px solid var(--sm-bord); }
.screen.panel[data-screen="shop"] .preparation-ravitaillement h4 { margin:0 0 2px; font:italic 900 20px/1.1 var(--f-titre); letter-spacing:0; text-transform:none; color:var(--sm-ink); }
.ravitaillement-chapeau { margin:0 0 6px; font:600 14px/1.3 var(--f-texte); color:var(--sm-ink2); }
.screen.panel[data-screen="shop"] .ravitaillement-ligne { grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); gap:2px 10px; margin:8px 0 0; padding-top:8px; border-top:1.5px solid var(--sm-bord); }
.screen.panel[data-screen="shop"] .ravitaillement-ligne:first-of-type { border-top:0; }
.screen.panel[data-screen="shop"] .ravitaillement-stock { font:800 15px/1.2 var(--f-texte); color:var(--sm-ink); }
.screen.panel[data-screen="shop"] .ravitaillement-ligne select { width:100%; max-width:none; min-height:44px; font:700 15px/1.2 var(--f-texte); }
.screen.panel[data-screen="shop"] .ravitaillement-ligne small, .ravitaillement-ligne small { grid-column:1 / -1; font:500 13px/1.35 var(--f-texte); color:var(--sm-ink2); }
/* ---------- Paramètres : un seul séparateur, plus de titre doublé (l'ombre décalée), Son et Vibrations sur deux lignes identiques */








#champion-appearance > p#champion-evolution, #champion-appearance > p#champion-owned, #champion-appearance > p#champion-appearance-hint { font:600 14px/1.3 var(--f-texte); font-style:normal; color:var(--sm-ink2); text-shadow:none; }
#champion-appearance > p#champion-evolution { margin:2px 0 8px; color:var(--sm-ink); }
#champion-appearance > p#champion-owned { margin:8px 0 0; }
#champion-appearance .profile-storage-actions > button[aria-pressed="true"]::after { left:auto; right:8px; top:8px; width:20px; height:20px; border-radius:50%; background:var(--azur); }
.nom-champ { font:700 20px/1.2 var(--f-texte); font-style:normal; }
/* ---------- Chronique : de l'encre sur le papier (plus de blanc sur crème), un seul en-tête, une page de lecture */
.chronique-screen .chron.head h3, #chron-rank { color:var(--sm-ink); text-shadow:none; font:italic 900 30px/1 var(--f-titre); }
.chronique-screen .mission-tabs [role="tab"], .chronique-screen .mission-tabs button { color:var(--sm-ink2); text-shadow:none; }
.chronique-screen .mission-tabs [aria-selected="true"] { color:var(--sm-ink); }
.chronique-screen > .head .mission-tabs [data-action="missions"] { color:var(--azur-appui); }
.chronique-screen .chron .meta, #chron-meta { white-space:pre-line; font:600 15px/1.35 var(--f-texte); color:var(--sm-ink2); }
.chron-prog { display:flex; flex-direction:column; align-items:flex-start; gap:6px; }
.chron-prog .lbl { font:700 13px/1.2 var(--f-texte); font-style:normal; color:var(--sm-ink2); text-shadow:none; }
.chron-prog strong { font:italic 900 34px/1 var(--f-titre); color:var(--sm-or-s); }
.chron-seg { display:grid; grid-template-columns:repeat(12, 1fr); gap:3px; width:100%; }
.chron-seg > i { height:8px; border-radius:2px; background:#DDD2B5; }
.chron-seg > i.on { background:var(--or); }
.chronique-screen .chron > h3 { font:italic 900 22px/1.1 var(--f-titre); }
.chronique-screen .chron-empty { margin:4px 0 0; font:500 14px/1.35 var(--f-texte); color:var(--sm-ink2); }
.chronique-screen #chron-list, .chronique-screen #relic-list { padding-top:10px; padding-bottom:10px; }
.chron-seneschal .meta { display:flex; gap:8px; margin:6px 0 0; white-space:normal; }
.chron-cellule { flex:1 1 0; display:flex; flex-direction:column; align-items:center; gap:3px; padding:8px 4px; border-radius:12px; background:var(--sm-blanc); border:1.5px solid var(--sm-bord); }
.chron-cellule b { font:italic 900 24px/1 var(--f-titre); color:var(--sm-ink); }
.chron-cellule small { font:700 12px/1 var(--f-texte); color:var(--sm-ink2); text-align:center; }
/* Guide : un numéro, un nom, un déblocage ; le détail est replié ; le statut n'est pas un lien */
.chronique-screen #chron-echelle-groupe > summary { display:flex; align-items:center; gap:8px; min-height:44px; font:italic 900 20px/1.1 var(--f-titre); color:var(--sm-ink); }
.chronique-screen #chron-echelle-groupe > summary::marker { content:''; }
.chronique-screen #chron-echelle-groupe > summary::after { content:''; margin-left:auto; width:10px; height:10px; border-right:2.5px solid var(--sm-ink2); border-bottom:2.5px solid var(--sm-ink2); transform:rotate(45deg); transition:transform 200ms var(--courbe); }
.chronique-screen #chron-echelle-groupe[open] > summary::after { transform:rotate(-135deg); }
.chron-guide-tete { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.chron-guide-tete strong { font:800 17px/1.2 var(--f-texte); color:var(--sm-ink); }
.chron-deblocage { display:block; margin-top:2px; font:700 15px/1.25 var(--f-texte); color:var(--sm-or-s); }
.chron-statut { flex:none; display:inline-flex; align-items:center; gap:3px; padding:2px 8px; border-radius:10px; font:700 12px/1.3 var(--f-texte); background:var(--sm-iv2); color:var(--sm-ink2); }
.chron-statut.repris { background:#E3F1DC; color:var(--sm-vert); }
.chron-statut.en-cours { background:var(--sm-ink); color:#fff; }
.chron-statut .picon { width:12px; }
.chron-detail-recompenses { margin-top:4px; }
.chron-detail-recompenses > summary { min-height:32px; display:flex; align-items:center; font:700 13px/1.2 var(--f-texte); color:var(--sm-ink2); cursor:pointer; }
.chron-detail-recompenses > ul { margin:2px 0 4px; padding:0 0 0 2px; list-style:none; }
.chron-detail-recompenses li { margin:0; padding:2px 0; font:500 14px/1.3 var(--f-texte); color:var(--sm-ink); }
.chronique-screen .chron-guide-texte > p { font:500 14px/1.35 var(--f-texte); }
/* Récit : une seule commande de chapitre, corps de lecture à 16,5 points, pied de navigation stable */
.chron-repere-lecture { padding:6px 0 8px; }
.chron-repere-lecture .chron-choix-lecture { display:block; margin:0; }
.chronique-screen #chron-chapitre { width:100%; min-height:48px; padding:0 14px; font:800 16px/1.2 var(--f-texte); color:var(--sm-ink); background:var(--sm-blanc); border:1.5px solid var(--sm-bord); border-radius:12px; }
.chronique-screen #chron-recit p, .chronique-screen .lore-entry p { font:500 16.5px/1.5 var(--f-texte); color:var(--sm-gris-texte); margin:0 0 12px; }
.chronique-screen #chron-recit .chron-recit-sujet > h4, .chronique-screen #chron-recit h4 { font:italic 900 22px/1.15 var(--f-titre); color:var(--sm-ink); }
.chronique-screen .chron-passages { display:flex; gap:8px; align-items:stretch; padding:8px 10px; }
.chronique-screen .chron-passages button { flex:1 1 0; min-height:52px; text-align:left; }
.chronique-screen .chron-passages #chron-suivant { flex:2 1 0; }
.chronique-screen .chron-passages button[hidden] { display:none; }
.chronique-screen .chron-passages button > small { display:block; font:700 12px/1.1 var(--f-texte); color:var(--sm-ink2); }
.chronique-screen .chron-passages button > strong { display:block; font:800 15px/1.2 var(--f-texte); color:var(--azur-appui); overflow-wrap:anywhere; }
.screen.building .building-level { font:800 14px/1 var(--f-texte); font-style:normal; letter-spacing:0; padding:6px 10px; }
.building-defense { padding:6px 10px; gap:8px; }
.building-defense-k { font:800 12px/1.2 var(--f-texte); font-style:normal; letter-spacing:.06em; text-transform:uppercase; }
.building-defense-t { font:600 14px/1.3 var(--f-texte); font-style:normal; }
.building-manque { margin:0 0 -2px; flex:1 0 100%; text-align:center; font:800 15px/1.2 var(--f-texte); color:var(--sm-rouge-s); }
.building-manque[hidden] { display:none; }
.building-resources .bourse-pill .rival-brique { width:24px; height:18px; }

/* ---------- Victoire (lot 1) : la carte suit son contenu et se pose au bas de l'écran, de sorte que « Continuer » ne bouge jamais ;
   ce qui n'est pas encore là n'occupe plus de place (display none, plus de visibility hidden) ; la vidéo se voit dès le coffre ;
   au repos le total vient sous les étoiles, son bonus d'adresse en texte secondaire dessous */
.screen.outcome.outcome-victory { justify-content:flex-end; padding-top:calc(var(--safe-t) + 74px); padding-bottom:calc(var(--safe-b) + 16px); }
.outcome-victory .victory-panel { padding-top:14px; gap:8px; }
#stage .outcome-victory:not([data-temps="repos"]) :is(.won-marche, .victory-relic, .won-detail) { display:none; }
#stage .outcome-victory:is([data-temps="titre"], [data-temps="butin"]) .won-video { display:none; }
.outcome-victory:is([data-temps="titre"], [data-temps="butin"], [data-temps="coffre"]) .won-video[hidden] { display:none; }
.outcome-victory[data-temps="titre"] :is(.won-gain-lbl, .gain, .won-fente) { display:none; }
.outcome-victory .won-fente > .off { display:none; }
.outcome-victory .won-fente > :not(.off) { animation:apparait 220ms var(--courbe) both; }
.outcome-victory .won-fente { order:4; }
.outcome-victory .won-gain-lbl { order:5; margin:6px 0 -2px; font:800 12px/1 var(--f-texte); letter-spacing:.1em; text-transform:uppercase; color:var(--sm-ink2); }
.outcome-victory .gain { order:6; }
.outcome-victory .won-pris { order:7; }
.outcome-victory[data-temps="repos"] .won-fente { order:7; }
.outcome-victory[data-temps="coffre"] .won-gain-lbl { display:none; }
.outcome-victory[data-temps="coffre"] .gain { margin-block:-14px; }
.outcome-victory .won-scene .won-plaque .result-heading { font-size:58px; }
.won-embleme { display:grid; place-items:center; width:44px; height:44px; margin:0 auto 2px; border-radius:50%; background:radial-gradient(circle at 50% 30%, var(--or-clair), var(--or) 72%);
  box-shadow:0 0 0 3px var(--sm-iv), 0 0 0 4.5px var(--or-tranche); }
.won-embleme[hidden] { display:none; }
.won-embleme .picon { width:26px; color:var(--or-texte); }
.outcome-victory[data-kind="clan"] .won-embleme { background:var(--sm-ink); box-shadow:0 0 0 3px var(--sm-iv), 0 0 0 4.5px var(--sm-ink2); }
.outcome-victory[data-kind="clan"] .won-embleme .picon { color:#fff; }
.outcome-victory[data-kind="free"] .won-embleme { width:54px; height:54px; box-shadow:0 0 0 3px var(--sm-iv), 0 0 0 4.5px var(--or-tranche), 0 0 0 12px rgba(232,182,76,.28); margin-top:6px; margin-bottom:8px; }
.outcome-victory[data-kind="free"] .won-embleme .picon { width:32px; }
.outcome-victory[data-kind="horde"] .won-embleme { box-shadow:0 0 0 3px var(--sm-iv), 0 0 0 4.5px var(--or-tranche), 0 0 0 9px rgba(232,182,76,.22); }
.outcome-victory .etoile-forme { width:44px; height:44px; }
.outcome-victory .etoile { min-width:0; }
.etoile-forme::before { background:#B7A47B; }
.etoile.gagnee .etoile-forme::before { background:var(--or-tranche); }
.etoile.gagnee .etoile-forme::after { background:linear-gradient(180deg, #FFE27A, #F2B52E); }
/* la Cité : l'icône et ce qu'elle garde, en un mot (« 13 gardés ») */
.outcome-victory .won-haut .won-cite.garnison { width:auto; min-width:48px; padding:0 12px 0 8px; gap:6px; flex-direction:row; align-items:center; overflow:visible; }
.outcome-victory .won-haut .won-cite.garnison .won-cite-copy { display:flex; align-items:center; }
.outcome-victory .won-haut .won-cite.garnison small { position:static; min-width:0; height:auto; padding:0; display:inline; border:0; border-radius:0; background:none; color:var(--sm-ink); font:800 14px/1 var(--f-texte); }
.outcome-victory .won-haut .won-cite.garnison small::after { content:' gardés'; }
/* la récompense du territoire : deux lignes stables (nom, puis ce qu'elle apporte) et la marche légendée */
.outcome-victory .won-marche.plaque-module { display:grid; grid-template-columns:minmax(0, 1fr) auto; align-items:center; column-gap:10px; row-gap:2px; }
.outcome-victory .won-marche .won-rec { grid-column:1; grid-row:1 / span 2; order:0; }
.outcome-victory .won-marche .marche-pas { grid-column:2; grid-row:1; justify-self:center; order:0; }
.won-pas-lbl { grid-column:2; grid-row:2; justify-self:center; font:700 12px/1 var(--f-texte); color:var(--sm-ink2); white-space:nowrap; }
.outcome-victory .won-rec-copy { flex-direction:column; flex-wrap:nowrap; align-items:flex-start; gap:1px; }
.outcome-victory .won-rec-copy b { font-size:20px; line-height:1.1; }
.outcome-victory .won-rec-copy small { font:700 14px/1.2 var(--f-texte); color:var(--sm-or-s); }
.outcome-victory .relic-copy em { font:600 14px/1.25 var(--f-texte); font-style:normal; color:var(--sm-ink2); }
.outcome-victory .relic-copy strong { font-size:22px; }
.outcome-victory .victory-relic { padding:10px 12px; }
/* le bonus d'adresse arrêté : « dont bonus d'adresse +328 » sous le total, en secondaire */
/* le curseur : un bloc délimité, la jauge d'abord ; « Continuer » recule le temps du geste */
/* la vidéo : secondaire, plus fine, jamais plus lourde que le total reçu */
.outcome-victory .won-video { min-height:46px; border-width:1.5px; box-shadow:none; }
.outcome-victory .won-video-lbl { font-size:20px; }
.outcome-victory .won-video-n b { font-size:20px; }
.outcome-victory .won-video.attend { opacity:.92; }
#won-continue strong { font-size:32px; }
/* ---------- Défaite (lot 1) */
.outcome-defeat .result-heading { font-size:40px; }
.outcome-defeat .over-base { gap:6px; }
.outcome-defeat .over-base-lbl { font:800 20px/1.2 var(--f-texte); color:var(--sm-ink); }
.outcome-defeat .over-base-n, .arena-outcome.defaite .over-base-n { order:2; font:700 15px/1.2 var(--f-texte); font-style:normal; color:var(--sm-rouge-s); text-align:center; }
.outcome-defeat .over-base-n[hidden], .arena-outcome.defaite .over-base-n[hidden] { display:none; }
.outcome-defeat .over-base .sangle, .arena-outcome.defaite .over-base .sangle { order:3; }
.arena-outcome.defaite .over-base-lbl { font:800 20px/1.2 var(--f-texte); }
.outcome-defeat .over-garde { font:italic 900 24px/1.1 var(--f-titre); }
#over-retry strong { font-size:32px; }
.outcome-defeat .over-actions { gap:10px; }
.outcome-defeat .over-second #over-revive { gap:8px; justify-content:center; }
.outcome-defeat #over-revive .command-copy { display:flex; flex-direction:column; align-items:flex-start; gap:2px; }
.outcome-defeat #over-revive .command-copy strong { font:italic 900 19px/1.05 var(--f-titre); }
.outcome-defeat #over-revive .command-copy small { display:flex; align-items:center; gap:4px; font:700 13px/1 var(--f-texte); color:var(--sm-ink2); }
.outcome-defeat #over-revive .command-copy small .picon { width:16px; }
.outcome-defeat .over-cite { border:2px solid var(--sm-ink); box-shadow:none; border-radius:16px; background:var(--sm-blanc); }
.outcome-defeat .over-cite:active { transform:translateY(2px); background:var(--sm-iv2); box-shadow:none; }
.outcome-defeat .over-cite small { color:var(--sm-ink); }
/* ---------- Résultat d'Arène (lot 1) : un titre plus petit, la récompense centrale, un score discret, une seule bordure au bouton principal */
.arena-outcome .result-heading, .arena-outcome .plaque-titre .result-heading { font-size:40px; }
.arena-outcome .arena-result-kicker { font:800 13px/1 var(--f-texte); letter-spacing:.08em; }
.arena-outcome .arena-result-reward { display:flex; align-items:center; justify-content:center; gap:6px; }
.arena-outcome .arena-result-reward .picon { width:22px; }
.arena-outcome.defaite .arena-result-reward { font:italic 900 22px/1.1 var(--f-titre); }
.arena-outcome .menu-command.primary strong { font-size:30px; }
.arena-outcome .arena-result-actions { gap:8px; }
.arena-outcome .arena-result-actions > .lien-action { min-height:44px; display:flex; align-items:center; margin-top:-2px; }
.arena-outcome .arena-result-score .battu small { font-weight:800; }
.arena-outcome:not(.defaite) .arena-result-reward { font:600 14px/1.3 var(--f-texte); }
/* ---------- Chargement (lot 1) : la préparation d'une bataille se dit et se groupe au centre ; l'erreur isole son panneau, sans commande venue de la Cité */
#loading { z-index:100; }
#stage:has(> #loading:not([hidden])) :is(.coffre-status, .coffre-recu, .coffre-gain) { visibility:hidden; pointer-events:none; }
#loading[data-mode="bataille"] { justify-content:center; padding-top:calc(var(--safe-t) + 24px); }
#loading[data-mode="bataille"] .loading-kicker { font-size:44px; }
#loading[data-mode="bataille"] .loading-title { margin-top:18px; font:italic 900 28px/1.1 var(--f-titre); }
#loading[data-mode="bataille"] #loading-detail { order:3; margin-top:2px; font:700 16px/1.2 var(--f-texte); color:var(--or-clair); }
#loading[data-mode="bataille"] #loading-text { margin-top:4px; font:600 14px/1.3 var(--f-texte); color:var(--gris); }
#loading[data-mode="bataille"] .loading-progress { margin-top:10px; }
#loading[data-mode="bataille"] .loading-error-actions { margin-top:22px; max-width:200px; }
#loading[data-mode="bataille"] #loading-home { min-height:44px; margin:0; font-size:16px; }
#loading[data-state="error"] .loading-error-mark, #loading[data-state="error"] .loading-error-rule, #loading[data-state="error"] .loading-kicker { display:none; }
#loading[data-state="error"] .loading-title { font-size:30px; }
#loading[data-state="error"] .loading-error-seal { width:56px; height:56px; }
#loading[data-state="error"] #loading-text { background:none; box-shadow:none; padding:4px 8px; font:600 16px/1.4 var(--f-texte); color:var(--ivoire); }
#loading[data-state="error"] .loading-error-actions { margin-top:12px; }
#stage #loading[data-state="error"] #loading-home { background:transparent; color:var(--ivoire); border:2px solid rgba(255,255,255,.6); box-shadow:none; text-shadow:none; }

/* ---------- lot 1, second jet (d'après les captures du premier) */
/* Missions : la grille gagne sur la règle des cadres étroits de cite-cap26.css (récompense à droite, jamais seule en bas) */
#stage .screen.panel[data-screen="missions"] .mission { grid-template-columns:44px minmax(0, 1fr) auto; column-gap:12px; padding:12px; }
#stage .screen.panel[data-screen="missions"] .mission .mission-emblem { grid-column:1; grid-row:1; width:44px; height:44px; align-self:center; }
#stage .screen.panel[data-screen="missions"] .mission .col { grid-column:2; grid-row:1; }
#stage .screen.panel[data-screen="missions"] .mission .claim { grid-column:3; grid-row:1; align-self:center; justify-self:end; }
#stage .screen.panel[data-screen="missions"] .mission .objective { flex-wrap:nowrap; }
/* Boutique : le panneau d'utilisation a ses marges, sa police de lecture, un nom et son stock sur deux lignes */
#stage .screen.panel[data-screen="shop"] .preparation-ravitaillement { margin:14px 0 8px; padding:12px 12px 10px; border:1.5px solid var(--sm-bord); border-radius:14px; background:var(--sm-blanc); }
#stage .preparation-ravitaillement p, #stage .preparation-ravitaillement small, #stage .ravitaillement-ligne select { font-family:var(--f-texte); font-style:normal; letter-spacing:0; }
#stage .ravitaillement-chapeau { font-size:14px; font-weight:600; line-height:1.3; color:var(--sm-ink2); }
#stage .ravitaillement-stock { display:flex; flex-direction:column; gap:1px; }
#stage .ravitaillement-stock b { font:800 16px/1.15 var(--f-texte); color:var(--sm-ink); }
#stage .ravitaillement-stock em { font:600 13px/1.2 var(--f-texte); font-style:normal; color:var(--sm-ink2); }
#stage .screen.panel[data-screen="shop"] .ravitaillement-ligne { grid-template-columns:minmax(0, 1fr) minmax(0, 1.2fr); align-items:center; }
/* Chronique : un seul séparateur sous le profil ; les groupes du Guide se lisent comme l'échelle (encre, chevron) */
.chronique-screen #chron-list { border-top:0; }
.chronique-screen .chron-guide-groupe > summary { display:flex; align-items:center; gap:8px; min-height:48px; font:italic 900 20px/1.1 var(--f-titre); color:var(--sm-ink); }
.chronique-screen .chron-guide-groupe > summary::marker { content:''; }
.chronique-screen .chron-guide-groupe > summary::-webkit-details-marker { display:none; }
.chronique-screen .chron-guide-groupe > summary::after { content:''; margin-left:auto; width:10px; height:10px; border-right:2.5px solid var(--sm-ink2); border-bottom:2.5px solid var(--sm-ink2); transform:rotate(45deg); transition:transform 200ms var(--courbe); }
.chronique-screen .chron-guide-groupe[open] > summary::after { transform:rotate(-135deg); }
.chronique-screen .chron-guide-groupe > summary .chron-guide-signe { display:none; }
.chron-guide-texte { display:flex; flex-direction:column; gap:2px; }
.chron-detail-recompenses { margin-top:0; }
.chron-detail-recompenses > summary { min-height:36px; }
.chronique-screen .chron > h3 { color:var(--sm-ink); }
.chronique-screen .chron-seneschal h3 { font:italic 900 22px/1.1 var(--f-titre); color:var(--sm-ink); }
/* Paramètres : la sélection de l'arme est une coche dans un coin réservé de sa tuile, plus un rond sur l'image */
#champion-appearance .profile-storage-actions > button[aria-pressed="true"]::after { content:''; left:auto; right:6px; top:6px; width:22px; height:22px; border-radius:50%; margin:0;
  background:var(--azur) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 12.5l4 4 8-9' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 14px no-repeat;
  -webkit-mask:none; mask:none; box-shadow:0 0 0 2px #fff; }
#champion-appearance .profile-storage-actions > button > img { margin-left:4px; }
/* Fiche de bâtiment : le manque se dit au-dessus du bouton, jamais sous lui */
#stage .building-actions .building-manque { order:1; }
#stage .building-actions .building-buy { order:2; }
/* menu Attaquer : un voile franc sur la Cité (le village se tait derrière la feuille), la barre basse voilée de la même encre, aucun anneau sans clavier */
.screen.home:has(> #cap26-attack-menu:not([hidden]))::before { height:100%; background:rgba(6,16,30,.5); z-index:1; }
#stage:has(> .screen.home > #cap26-attack-menu:not([hidden])) > #nav-rail { opacity:1; }
#stage:has(> .screen.home > #cap26-attack-menu:not([hidden])) > #nav-rail::after { content:''; display:block; position:absolute; inset:0; border-radius:inherit; background:rgba(6,16,30,.5); pointer-events:none; }
.attack-choix:focus-visible::before, .attaque-menu .attaque-choix:focus-visible::before { outline:none; }
html[data-clavier] .attack-choix:focus-visible::before, html[data-clavier] .attaque-menu .attaque-choix:focus-visible::before { outline:3px solid var(--azur); outline-offset:2px; }
#stage #cap26-attack-menu .attaque-campagne:focus-visible::before { box-shadow:inset 4px 0 0 var(--or); }
#stage #cap26-attack-menu .attack-head > .attack-tenue strong { font:800 15px/1.2 var(--f-texte); font-style:normal; }
#stage #cap26-attack-menu .attack-head > .attack-tenue small { font:600 14px/1.2 var(--f-texte); }
/* Cité : cadenas plus discrets (ils n'étaient pas la priorité d'un profil neuf) */
.bchip.locked, .bchip .picon.pi-verrou { opacity:.8; }
/* barre haute de la Cité : le plafond de pierre se lit à côté du compte (62 / 100), la jauge dessous le montre */
.inv-max { flex:none; margin-left:-3px; font:700 12px/1 var(--f-texte); color:var(--sm-ink2); white-space:nowrap; }
@media (max-width:359px) { .inv-max { display:none; } }

/* ---------- lot 1, troisième jet */
/* Missions : le compte garde sa largeur, la jauge prend le reste (même ligne pour toutes les cartes) */
#stage .mission .mprog .prog { flex:0 0 44px; width:44px; min-width:0; padding:0; margin:0; }
/* menu Attaquer : le voile de la barre basse n'hérite d'aucun cadre */
#stage:has(> .screen.home > #cap26-attack-menu:not([hidden])) > #nav-rail::after { inset:0; width:auto; height:auto; border:0; box-shadow:none; transform:none; margin:0; }
/* Boutique : éteint, un bouton de prix perd sa tranche bleue (le gris dit « indisponible », le bleu reste à l'action possible) */
#stage .shop-row .shop-payer:disabled { box-shadow:0 3px 0 #8A93A5; }
/* chargement de bataille : le territoire sous le titre, « Retour à l'accueil » discret */
#loading[data-mode="bataille"] .loading-kicker { order:0; }
#loading[data-mode="bataille"] .loading-title { order:1; }
#loading[data-mode="bataille"] #loading-detail { order:2; }
#loading[data-mode="bataille"] #loading-text { order:3; }
#loading[data-mode="bataille"] .loading-progress { order:4; }
#loading[data-mode="bataille"] .loading-error-actions { order:5; }
#stage #loading[data-mode="bataille"] #loading-home { background:transparent; color:var(--ivoire); border:1.5px solid rgba(255,255,255,.45); box-shadow:none; text-shadow:none; font:800 15px/1 var(--f-texte); min-height:44px; }
/* ---------- États de session et de sauvegarde : UN avis, à la même place partout (sous la barre haute, à la place du bandeau d'événement), titre, phrase, action */
#stage #save-warning { left:10px; right:10px; width:auto; min-height:0; padding:10px 10px 10px 14px; display:grid; grid-template-columns:minmax(0, 1fr) auto; grid-template-areas:"t b" "d b"; column-gap:10px; row-gap:2px; align-items:center; z-index:90; }
#stage #save-warning::before { border-radius:14px; border-left:4px solid var(--sm-rouge); }
#stage #save-warning.autre-onglet::before { border-left-color:var(--or); }
#stage #save-warning.decor::before { border-left-color:var(--azur); }
#stage #save-warning > span { grid-area:t; display:block; flex:none; font:800 16px/1.2 var(--f-texte); font-style:normal; white-space:normal; text-wrap:balance; overflow:visible; text-overflow:clip; color:var(--sm-ink); }
#stage #save-warning > span::before { display:inline-block; width:18px; height:18px; margin:0 6px 0 0; vertical-align:-3px; }
#stage #save-warning > span::after { display:none; }
#stage #save-warning > .sw-detail { grid-area:d; font:600 14px/1.3 var(--f-texte); font-style:normal; color:var(--sm-ink2); }
#stage #save-warning > button { grid-area:b; align-self:center; width:auto; min-width:112px; min-height:44px; margin:0; padding:0 12px; font:italic 900 17px/1 var(--f-titre); }
#stage #save-warning.sur-accueil { top:calc(var(--safe-t) + 56px); bottom:auto; }
/* seuls le dôme et la pastille « Sans bouclier » (juste sous le ruban) s'effacent sous l'avis ; bannières et dégâts du pillage, plus bas, restent visibles */
/* la session suspendue ne laisse aucun faux bouton : l'avis porte la seule action ; Attaquer, désactivé, s'efface */
#stage .screen.home.lecture-suspendue .battle-row { display:none; }
/* sauvegarde impossible : « Réessayer » prend l'accent, « Attaquer » et le coffre reculent */
#stage:has(> #save-warning:not([hidden]):not(.autre-onglet)) .screen.home #home-battle { background:var(--sm-blanc); color:var(--sm-ink); box-shadow:0 3px 0 #BFAE84; text-shadow:none; border:2px solid var(--sm-ink); }
#stage:has(> #save-warning:not([hidden]):not(.autre-onglet)) .screen.home #home-battle-sub { color:var(--sm-ink2); }
#stage:has(> #save-warning:not([hidden]):not(.autre-onglet)) .screen.home #home-battle > .picon { background-color:var(--sm-ink); filter:none; }
/* entraînement : une capsule (« Entraînement, sans récompense ») et un Quitter secondaire */
#stage #tutorial-replay { top:calc(var(--safe-t) + 54px); left:50%; right:auto; width:max-content; max-width:calc(100% - 20px); transform:translateX(-50%); min-height:44px; padding:0 4px 0 14px; gap:8px; border-radius:22px; }
#stage #tutorial-replay::before { border-radius:22px; background:rgba(8,16,30,.88); border:0; box-shadow:0 3px 10px rgba(0,5,17,.45); }
#stage #tutorial-replay > span { flex:none; font:800 14px/1 var(--f-texte); font-style:normal; color:#fff; }
#stage #tutorial-replay > small { flex:none; font:600 13px/1 var(--f-texte); color:#BFE3FF; }
#stage #tutorial-replay > button { min-height:44px; padding:0 14px; border:1.5px solid rgba(255,255,255,.55); border-radius:22px; background:transparent; box-shadow:none; color:#fff; text-shadow:none; font:800 14px/1 var(--f-texte); }

/* ---------- lot 1, quatrième jet */
/* victoire : la vidéo (secondaire) se voit dès le coffre et pendant le curseur ; l'ancien masque ne la couvre plus */
/* visible dès le coffre, mais NON touchable avant le repos : un toucher ouvrirait le coffre de force et solderait le curseur d'adresse (le geste serait perdu) ; aspect « bientôt » */
#stage .outcome-victory:is([data-temps="coffre"]) .won-video:not([hidden]) { visibility:visible; pointer-events:none; opacity:.6; }
#stage .outcome-victory:is([data-temps="coffre"]) .won-video { min-height:44px; }
/* avis de session et de sauvegarde dans les écrans à liste : la liste commence sous l'avis */
/* pages à en-tête : l'avis se pose au BAS, juste au-dessus de la barre (jamais sur l'en-tête ni sur les onglets Missions et Chronique) ; la liste lui réserve sa vraie
   hauteur (--avis-h, publiée par progression.js), de sorte que rien n'est recouvert à 360 comme à 390 */
#stage:has(> .screen.panel:is([data-screen="shop"], [data-screen="missions"], [data-screen="lore"], [data-screen="settings"]):not([hidden])) > #save-warning:not([hidden]) { top:auto; bottom:calc(var(--nav-h) + 8px); }
#stage:has(> #save-warning:not([hidden])) > .screen.panel:is([data-screen="shop"], [data-screen="missions"], [data-screen="lore"], [data-screen="settings"]) .scroll-area { margin-top:0; margin-bottom:var(--avis-h, 0px); padding-bottom:12px; }
#stage #save-warning { top:calc(var(--safe-t) + 74px); bottom:auto; }
#stage #save-warning.sur-accueil { top:calc(var(--safe-t) + 56px); }

/* la consigne de bataille (#toast.guide) appartient au HUD de bataille (lot 2) : rien ici */

/* ---------- lot 1, cinquième jet */
/* le seigneur tombé : la relique REMPLACE la ligne de la marche (la règle d'avant perdait contre la grille de la récompense) ; son médaillon est une hache dorée */
#stage .outcome-victory.avec-relique .won-marche { display:none; }
.victory-relic > .picon { width:34px; padding:6px; box-sizing:content-box; border-radius:50%; background:radial-gradient(circle at 50% 30%, var(--or-clair), var(--or) 72%); color:var(--or-texte); }
.outcome-victory .victory-relic .picon { width:26px; flex:none; }
.outcome-victory[data-kind="horde"] .victory-relic { border-color:var(--or); background:#FFFBEA; }
/* défaite et Arène : aucun texte doublé par une ombre */
.over-base-n, .outcome-defeat .over-base-n, .arena-outcome .over-base-n, .over-garde, .over-score { text-shadow:none; }
/* anneau de focus : seulement au clavier (un focus posé par script à l'ouverture d'un écran n'est pas un geste du joueur) */
.menu-command:focus-visible, .lien-action:focus-visible, .round-btn:focus-visible, .won-detail:focus-visible { outline:none; }
html[data-clavier] .menu-command:focus-visible, html[data-clavier] .lien-action:focus-visible, html[data-clavier] .round-btn:focus-visible, html[data-clavier] .won-detail:focus-visible { outline:3px solid var(--azur); outline-offset:2px; }
/* l'avis de session reprend EXACTEMENT la composition de l'avis de sauvegarde (les couches « Session v07 à v11 » de progression.css le réduisaient à une pastille de 280 points) */
#stage #save-warning.autre-onglet.sur-accueil:not([hidden]), #stage #save-warning.autre-onglet:not([hidden]) { display:grid; grid-template-columns:minmax(0, 1fr) auto; width:auto; max-width:none; left:10px; right:10px; transform:none;
  min-height:0; padding:10px 10px 10px 14px; gap:2px 10px; box-sizing:border-box; }
#stage #save-warning.autre-onglet::before { inset:0; transform:none; border-radius:14px; background:var(--sm-iv); border:1.5px solid var(--sm-bord); border-left:4px solid var(--or); box-shadow:var(--sm-ombre); }
#stage #save-warning.autre-onglet > span { font:800 16px/1.2 var(--f-texte); font-style:normal; color:var(--sm-ink); width:auto; flex:none; gap:0; }
#stage #save-warning.autre-onglet > span::before { background:var(--or-tranche); width:18px; height:18px; }
#stage #save-warning.autre-onglet > button { width:auto; min-width:112px; min-height:44px; padding:0 12px; font:italic 900 17px/1 var(--f-titre); color:#fff; }
#stage #save-warning.autre-onglet > button::before { inset:0; transform:none; border-radius:12px; background:var(--sm-azur-face); box-shadow:0 3px 0 var(--azur-tranche); border:0; }
/* la vidéo : « après le bonus d'adresse » en police de lecture */
.outcome-victory .won-video-apres, .won-video-apres { font:600 14px/1.15 var(--f-texte); font-style:normal; color:var(--sm-ink2); }
/* échelle du Guide : lignes serrées (le détail des récompenses ne rouvre pas un trou sous le déblocage) */
.chronique-screen .chron-guide .chron-guide-repere { padding:10px 0; align-items:start; }
.chronique-screen .chron-guide-repere .chron-detail-recompenses { margin:0; }
.chronique-screen .chron-guide-repere .chron-detail-recompenses > summary { min-height:44px; padding:0; margin:-6px 0 -6px; line-height:1.2; }
.chronique-screen .chron-guide-repere .chron-guide-signe { align-self:start; }
/* défaite et résultat d'Arène : la carte se pose au bas de l'écran comme la victoire (à portée du pouce, plus de vide sombre dessous) */
.screen.outcome.outcome-defeat, .screen.outcome.arena-outcome { justify-content:flex-end; padding-bottom:calc(var(--safe-b) + 16px); }
/* volet « Ennemi et terrain » : le terrain et la garnison sont posés sur la crème (plaque d'ennemi rouge sombre inchangée, ses textes clairs y sont lisibles) : encre sur crème, ≥ 4,5:1 */
#stage #cap26-attack-menu #attack-terrain { color:var(--sm-ink); font:800 15px/1.2 var(--f-texte); font-style:normal; }
#stage #cap26-attack-menu #attack-terrain-effet { color:var(--sm-ink2); font:600 13px/1.25 var(--f-texte); }
#stage #cap26-attack-menu .attack-terrain > .picon { color:var(--sm-ink2); }
#stage #cap26-attack-menu .attack-lecture > .attack-garnison, #stage #cap26-attack-menu .attaque-garnison { color:#6A4605; font:800 14px/1.25 var(--f-texte); font-style:normal; }
#stage #cap26-attack-menu .attack-head > .attack-tenue > span:last-child { display:flex; flex-direction:column; gap:1px; }
/* manque de ressource : de l'encre, jamais du rouge (le rouge est à l'ennemi et au danger) ; le niveau visé est neutre, le bleu reste à l'action */
.building-manque { color:var(--sm-ink); }
.screen.building .building-level { background:none; color:var(--sm-ink2); text-shadow:none; box-shadow:none; padding:6px 0; font-size:16px; }
.building-level::before { content:none; }
.screen.building .building-buy:disabled .price-pierre.manque, .building-buy .price-pierre.manque { color:var(--sm-ink); }
/* échelle du Guide : lignes de récompenses, contraste du déblocage (≥ 4,5:1) */
.chron-ligne-recompense { display:block; margin:0; padding:2px 0; font:500 14px/1.3 var(--f-texte); color:var(--sm-ink); }
.chron-detail-recompenses > p { margin:2px 0 4px; }
.chron-deblocage { color:#7A5200; }

/* barre haute de la Cité : la puce des gemmes s'élargit à ses chiffres (« 1 200 » ne se lit plus « 120 ») */
.inv-barre .inv-chip.inv-gemmes { width:auto; min-width:86px; flex:0 0 auto; }
/* victoire : la ligne de la source dit son nom, le chiffre est celui du total « Or reçu » juste dessous (plus de « +76 » deux fois) */
.won-sources:not(.liste) .source-n { display:none; }
/* « Pille un rival » : blanc sur le bleu du bouton, pas du bleu clair sur bleu */
#stage .screen.home #home-battle-sub, #stage .screen.home.invasion #home-battle-sub { color:#fff; text-shadow:0 1px 0 rgba(0,40,120,.6); }

/* ================================================================ TOUR 2 (18 octobre 2026) : typographie à trois rôles, fin de défilement, discipline du bleu, états, fiches, Cité, Boutique
   Même règle qu'avant : chaque règle repasse devant les couches d'avant (préfixe #stage), aucune classe renommée. */

/* ---------- 1. TYPOGRAPHIE À TROIS RÔLES
   affiche (--f-affiche) : titres courts et chiffre héros SEULEMENT ; action (--f-action) : les boutons ; lecture (--f-lecture) : tout le reste.
   Ce qui suit retire l'affiche italique de ce qui n'est ni un titre court, ni un chiffre héros, ni un bouton (valeurs des bourses, noms, onglets,
   sous-titres, étiquettes, données secondaires), dans les écrans du socle et les fiches. Les écrans Victoire, Défaite, Arène, bataille, Événements et
   Invasion ont leurs propres propriétaires et adoptent les mêmes jetons. */
#stage :is(.purse .val, .home-res .bourse-pill .val, .building-resources .bourse-pill .val, .won-total .val, .carte-compte .val, .carte-etoiles .val,
  .inv-num, .mission .prog, .cap26-world-count b, .cap26-world-count small, .chron-cellule b, .offre-tete b, .title-profile-copy strong,
  .attack-copy strong, .attaque-verrouille strong, .arena-contract strong, .chronique-screen .chron > h3, .chronique-screen .chron-seneschal h3,
  .preparation-ravitaillement h4, .chronique-screen #chron-recit .chron-recit-sujet > h4, .chronique-screen #chron-recit h4,
  .chronique-screen .chron-guide-groupe > summary, .chronique-screen #chron-echelle-groupe > summary, .chronique-screen .chron-guide > h3, .chronique-screen .chron-guide-titre,
  .attaque-nom-secondaire, .menu-feuille .shop-h, .chronique-screen .chron-recit > summary, #champion-appearance .set-head, [data-screen="settings"] .set-head,
  .building-defense-k, .attaque-resume, .cap26-world-status, .map-sheet-name, .carte-etoiles small, .carte-compte small) {
  font-family:var(--f-lecture); font-style:normal; letter-spacing:0; font-variant-numeric:tabular-nums; }
#stage :is(.purse .val, .home-res .bourse-pill .val, .building-resources .bourse-pill .val, .won-total .val, .inv-num, .mission .prog, .cap26-world-count b, .chron-cellule b, .carte-compte .val) { font-weight:800; font-size:18px; }
#stage :is(.chronique-screen .chron > h3, .chronique-screen .chron-seneschal h3, .chronique-screen #chron-recit .chron-recit-sujet > h4, .chronique-screen #chron-recit h4,
  .chronique-screen .chron-guide-groupe > summary, .chronique-screen #chron-echelle-groupe > summary, .preparation-ravitaillement h4) { font-weight:800; font-size:19px; line-height:1.2; }
#stage :is(.title-profile-copy strong, .attack-copy strong, .attaque-verrouille strong, .arena-contract strong, .offre-tete b) { font-weight:800; font-size:18px; }
/* les petits cartouches d'état et d'onglets sont de la lecture, en gras, sans ombre ni relief */
#stage :is(.mission-tabs [role="tab"], [role="tab"], .nav .nav-lbl, .tag, .shop-recu, .chron-statut, .chron-detail-recompenses > summary) { font-family:var(--f-lecture); font-style:normal; letter-spacing:0; }

/* ---------- 2. FIN DE DÉFILEMENT : toute liste réserve ce qui la recouvre (--fin-liste, voir tokens.css) */
#stage .scroll-area { padding-bottom:var(--fin-liste); scroll-padding-bottom:var(--fin-liste); }
#stage:has(> #save-warning:not([hidden])) > .screen.panel:is([data-screen="shop"], [data-screen="missions"], [data-screen="lore"], [data-screen="settings"]) .scroll-area { margin-bottom:0; padding-bottom:var(--fin-liste); }
#stage .screen.panel.carte-screen { padding-bottom:calc(var(--nav-h) + var(--avis-h)); }
/* les fiches de bâtiment : la zone qui défile réserve le pied d'actions, et l'avis s'il est là */
#stage .screen.building { padding-bottom:var(--avis-h); }
#stage .building-scroll { padding-bottom:12px; scroll-padding-bottom:12px; }

/* ---------- 3. AVIS DE SESSION ET DE SAUVEGARDE : UN seul emplacement (au bas, au-dessus de la barre), sur tous les écrans à barre basse */
#stage #save-warning.avis-bas.avis-bas:not([hidden]) { left:10px; right:10px; top:auto; bottom:calc(var(--nav-h) + 8px); width:auto; max-width:none; transform:none; z-index:90;
  display:grid; grid-template-columns:minmax(0, 1fr) auto; grid-template-areas:"t b" "d b"; gap:2px 10px; padding:8px 8px 8px 12px; min-height:0; box-sizing:border-box; }
/* fiche de bâtiment OUVERTE seulement (la fiche existe toujours dans le DOM, masquée) : pas de barre basse, l'avis descend */
#stage:has(> .screen.building:not([hidden])) > #save-warning.avis-bas.avis-bas:not([hidden]) { bottom:8px; }
#stage #save-warning.avis-bas > span { font:800 16px/1.2 var(--f-lecture); }
#stage #save-warning.avis-bas > .sw-detail { font:600 14px/1.25 var(--f-lecture); }
/* sur la Cité, ce que l'avis recouvrirait remonte au-dessus de lui (Attaquer) ; la sollicitation prioritaire est l'avis, le coffre se tait */
#stage .screen.home .battle-row, #stage .screen.home.invasion .battle-row { bottom:calc(var(--nav-h) + 8px + var(--avis-h)); }
#stage:has(> #save-warning:not([hidden])) .coffre-status, #stage:has(> #save-warning:not([hidden])) .coffre-recu { visibility:hidden; pointer-events:none; }

/* ---------- 4. DISCIPLINE DU BLEU : le bleu vif est l'action principale. Valeur future, conseil et sélection passent à l'encre ; l'état indisponible a UN code */
.effet-apres, .screen.building .effet-apres { color:var(--sm-ink); }
.effet-fleche { background:var(--sm-ink2); }
.effet-fleche::after { border-left-color:var(--sm-ink2); }
.building-copy .stat-line, .building-defense-t b { color:var(--sm-ink); }
.attaque-resume, .attaque-menu .attaque-resume { color:var(--sm-ink2); }
.shop-row .tag.owned { color:var(--sm-ink2); }
#champion-appearance .profile-storage-actions > button[aria-pressed="true"] { border-color:var(--sm-ink); background:#fff; box-shadow:inset 0 0 0 1.5px var(--sm-ink); }
#champion-appearance .profile-storage-actions > button[aria-pressed="true"]::after { background-color:var(--sm-ink); }
.l2-segment-b:focus-visible { outline-color:var(--sm-ink); }
/* indisponible : fond gris clair, encre grise sombre, jamais de texte en opacité */
#stage :is(.shop-payer:disabled, .menu-command:disabled, .menu-command[aria-disabled="true"], .mission .claim:disabled:not(.done), .building-buy:disabled, .offre-btn:disabled) { opacity:1; }
#stage :is(.shop-row .shop-payer:disabled, .screen.building .building-buy:disabled) { background:var(--indispo-fond); color:var(--indispo-texte); box-shadow:0 3px 0 var(--indispo-bord); text-shadow:none; }
#stage .l2-segment-b:disabled { opacity:1; color:var(--indispo-texte); background:var(--indispo-fond); text-decoration:none; }   /* #stage : lot2-monde-bataille.css se charge APRÈS ce fichier et posait opacity:.5 à égalité de spécificité */
#stage .ravitaillement-ligne .ravitaillement-raison { font:700 13px/1.3 var(--f-lecture); font-style:normal; color:var(--sm-ink); }
#stage .ravitaillement-ligne .ravitaillement-raison[hidden] { display:none; }
#stage .l2-segment-b:disabled::after { content:none; }
#stage .l2-segment-b[aria-checked="true"]:disabled { background:#fff; color:var(--sm-ink); }   /* le choix en cours reste lisible même figé */

/* ---------- 5. EN-TÊTES COMPACTS : le titre est du texte, les soldes des compteurs, seul le retour est un bouton */
#stage .screen.panel:not(.carte-screen):not(.arena-screen) > .head { gap:4px; padding-top:calc(var(--safe-t) + 6px); padding-bottom:4px; }
#stage .screen.panel:not(.carte-screen) > .head > .head-titles { height:44px; padding:0 4px; background:none; border:0; box-shadow:none; }
#stage .screen.panel:not(.carte-screen) > .head > .round-btn { width:44px; height:44px; border-radius:12px; box-shadow:0 2px 0 #BFAE84; }
#stage .screen.panel > .head > .purse > .purse-line { height:40px; padding:0 9px 0 7px; box-shadow:none; border:1.5px solid var(--sm-bord); background:var(--sm-iv); }
#stage .screen.panel > .head .panel-title { font-size:24px; }
#stage .screen.building .building-top .bourse-pill, #stage .building-resources .bourse-pill { height:44px; box-shadow:0 2px 0 #BFAE84; }


/* ---------- 6. MISSIONS : jauge de largeur constante, compteur aligné, plus de coffre répété dans le bouton */
/* la colonne de droite (récompense ou bouton) a UNE largeur pour toutes les lignes : la colonne du texte, donc la jauge, a la même largeur partout ;
   la jauge prend la place restante et le compteur garde la sienne (il ne passe plus sous le bouton) */
#stage .screen.panel[data-screen="missions"] .mission { grid-template-columns:44px minmax(0, 1fr) 92px; }
#stage .mission .mprog .bar { flex:1 1 0; width:auto; min-width:48px; }
#stage .mission .mprog { justify-content:flex-start; min-width:0; }
#stage .mission .prog { min-width:48px; }
#stage .mission .claim { min-width:0; min-height:48px; }
#stage .mission:not(.finie) .claim { width:92px; }
#stage .mission-coffre .claim .picon { display:none; }
#stage .mission .claim-txt { min-width:0; }
#stage .mission.prete .claim:not(:disabled), #stage .mission-coffre .claim:not(:disabled) { min-width:0; padding:6px 8px; }
#stage .mission .claim .reward-icon { width:24px; }
/* « Récupérer » prête : le libellé au-dessus, la pièce et le montant dessous (en ligne, l'icône recouvrait le début du mot dans 92 pt) */
#stage .mission.prete .claim:not(:disabled) { display:grid; grid-template-columns:auto auto; justify-content:center; align-items:center; column-gap:4px; row-gap:1px; padding:5px 6px; }
#stage .mission.prete .claim:not(:disabled) .claim-txt { display:contents; }
#stage .mission.prete .claim:not(:disabled) .claim-lbl { grid-area:1 / 1 / 2 / 3; text-align:center; white-space:nowrap; }
#stage .mission.prete .claim:not(:disabled) .reward-icon { grid-area:2 / 1; width:22px; }
#stage .mission.prete .claim:not(:disabled) .claim-txt > :not(.claim-lbl) { grid-area:2 / 2; white-space:nowrap; }

/* ---------- 7. BOUTIQUE : une grille d'offres comparables (nom et stock sur une ligne, effet, réglage, achat) ; or en action, gemmes en alternative */
#stage .shop-row.shop-ravitaillement { padding:10px 12px; }
#stage .shop-row.shop-ravitaillement .col { display:grid; grid-template-columns:minmax(0, 1fr) auto; align-items:baseline; column-gap:8px; row-gap:2px; }
#stage .shop-row.shop-ravitaillement .col .name { grid-column:1; }
#stage .shop-row.shop-ravitaillement .col .tag { grid-column:2; grid-row:1; white-space:nowrap; font:700 13px/1.2 var(--f-lecture); color:var(--sm-ink2); }
#stage .shop-row.shop-ravitaillement .col .desc, #stage .shop-row.shop-ravitaillement .col .shop-recu { grid-column:1 / -1; }
#stage .shop-paiements .shop-payer[data-devise="gems"] { background:var(--sm-blanc); color:var(--sm-ink); box-shadow:inset 0 0 0 2px var(--sm-ink), 0 3px 0 #BFAE84; text-shadow:none; }
#stage .shop-paiements .shop-payer[data-devise="gems"]:disabled { background:var(--indispo-fond); color:var(--indispo-texte); box-shadow:0 3px 0 var(--indispo-bord); }
#stage .l2-segment-b { font-size:14px; padding:0 4px; }
#stage .preparation-ravitaillement:not(:has(> .ravitaillement-ligne)) { display:none; }
.building-defense { padding:6px 10px; }
.building-defense-t { font:600 14px/1.3 var(--f-lecture); }
.building-manque { font:700 14px/1.3 var(--f-lecture); }

/* ---------- 9. CITÉ : une seule sollicitation prioritaire à la fois. Ordre : avis système, puis coffre prêt (halo local), puis Attaquer ; pastilles de navigation uniformes
   (même taille, même place ; le rouge est réservé à ce qui se réclame, l'encre à ce qui est nouveau) ; boutons « + » discrets */
#stage .nav #nav-carte-badge.badge.pastille { top:4px; right:calc(50% - 26px); min-width:18px; width:auto; height:18px; padding:0 5px; border-radius:9px; font:800 12px/18px var(--f-lecture); background:var(--sm-ink); box-shadow:0 0 0 2px var(--sm-iv); }
#stage .coffre-status[data-phase="disponible"] > span { font-size:15px; }
#stage .coffre-status[data-phase="disponible"]::before { content:''; position:absolute; left:50%; top:-62px; width:64px; height:64px; margin-left:-32px; border-radius:50%; pointer-events:none; box-shadow:0 0 0 3px rgba(255,214,102,.95), 0 0 14px 4px rgba(255,214,102,.55); }
#stage .bourse-plus::before, #stage .screen.home .bourse-plus::before { background:var(--sm-iv2); box-shadow:inset 0 0 0 1.5px var(--sm-bord); }
#stage .bourse-plus > span, #stage .screen.home .bourse-plus > span { color:var(--sm-ink); }
#stage .inv-barre .inv-plus { background:var(--sm-iv2); color:var(--sm-ink); box-shadow:inset 0 0 0 1.5px var(--sm-bord); }
#stage .screen.home #home-battle, #stage .screen.home.invasion #home-battle { min-height:60px; }

/* ---------- 10. CARTE RÉGIONALE : la sélection n'efface plus le rouge de l'ennemi. État hostile (rouge), sélection (anneau blanc extérieur), progression (étape) : trois codes */
#stage .cap26-carte #carte-nodes .map-node.cur:not(.done) .map-node-disc,
#stage .cap26-carte #carte-nodes .map-node.sel:not(.done):not(.recompense) .map-node-disc { background:radial-gradient(circle at 50% 26%, #FFB79A 0, #EE6A3C 48%, #9C2A10 100%); }
#stage .cap26-carte #carte-nodes .map-node.sel .map-node-disc, #stage .cap26-carte #carte-nodes .map-node.cur .map-node-disc {
  box-shadow:inset 0 2px 0 rgba(255,255,255,.55), inset 0 -4px 0 rgba(90,16,4,.45), 0 0 0 3px #fff, 0 0 0 5px #071226, 0 6px 5px rgba(0,5,17,.4); }
#stage .cap26-carte #carte-nodes .map-node.sel .map-node-disc { transform:scale(1.12); }

/* ---------- 11. CHRONIQUE : Récit plus calme, sélecteur compact, « Suivant » avec sa flèche */
.chronique-screen #chron-chapitre { min-height:44px; font:700 15px/1.2 var(--f-lecture); }
.chronique-screen .chron-passages button > strong::after { content:' →'; }
.chronique-screen .chron-passages #chron-precedent > strong::after { content:none; }
.chronique-screen .chron-passages #chron-precedent > strong::before { content:'← '; }
.chronique-screen .chron-passages button { text-align:left; padding:8px 12px; }
.chronique-screen #chron-recit .chron-recit-sujet > h4::after { content:none; }
.chronique-screen #chron-recit .chron-recit-route { display:none; }
.chron-guide-signe { font-family:var(--f-lecture); font-style:normal; }
.chron-prog strong { font-size:30px; }

/* ---------- TOUR 2 : titre et menu Attaquer */
#stage .title-nom-saisie { position:relative; }
#stage .title-nom-saisie .picon { position:absolute; right:12px; top:50%; margin-top:-10px; z-index:1; pointer-events:none; }
#stage .title-screen .nom-champ { padding-right:38px; color:var(--sm-ink); }
#stage .title-screen .nom-champ::placeholder { color:var(--sm-ink2); opacity:1; }
#stage .title-level { flex-direction:row; align-items:baseline; gap:4px; padding:5px 10px; border-left:0; border-radius:10px; background:var(--sm-iv2); }
#stage .title-level small { font:700 13px/1 var(--f-lecture); text-transform:none; letter-spacing:0; color:var(--sm-ink2); }
#stage .title-level b { font:800 20px/1 var(--f-lecture); font-style:normal; color:var(--sm-ink); }
#stage .title-reprise-info { padding:10px 12px; border-radius:12px; background:var(--sm-iv); color:var(--sm-ink); text-shadow:none; box-shadow:var(--sm-ombre); font:600 14px/1.3 var(--f-lecture); }
#stage .title-standard .title-continue.reprise strong { font-size:28px; }
#stage .title-standard .title-cite { min-height:44px; box-shadow:0 2px 0 #BFAE84; font:700 15px/1 var(--f-lecture); background:rgba(251,247,236,.94); }
#stage #cap26-attack-menu .attack-head > .attack-tenue strong { font:700 13px/1.2 var(--f-lecture); color:var(--sm-ink2); }
#stage #cap26-attack-menu .attack-head > .attack-tenue small { font:600 13px/1.2 var(--f-lecture); color:var(--sm-ink2); }
#stage #cap26-attack-menu .attack-head > .attack-tenue > .picon { width:16px; opacity:.8; }
/* fiche en manque d'or : l'action disponible (la vidéo qui comble) prend le premier plan, l'amélioration désactivée reste lisible sans dominer */
#stage .building-actions .building-manque { order:1; margin:0 0 -2px; }
#stage .building-actions #building-alms { order:2; flex:1 0 100%; min-height:48px; border:2px solid var(--sm-or-s); background:linear-gradient(#FFF0B0, #FFD24E 70%, #F0A91E); color:var(--sm-ink); box-shadow:0 3px 0 #94670F; font:italic 900 19px/1 var(--f-action); gap:8px; }
#stage .building-actions #building-alms .picon { width:22px; }
#stage .building-actions .building-buy { order:3; }
#stage .building-actions .building-buy:disabled { min-height:50px; }
#stage .building-actions .building-buy:disabled .cmd-main { font-size:24px; }
/* guide : numéros d'échelon en lecture grasse, plus petits ; segments de la Boutique sans coupe */
#stage .chronique-screen .chron-guide-signe { font:800 22px/1 var(--f-lecture); color:var(--sm-or-s); }
#stage .l2-segment-b { font-size:13px; padding:0 3px; line-height:1.1; }
/* menu Attaquer, sous-titres des destinations (Arènes, Forêt, Garde du Col) : à 12 pt les espaces de la Barlow se tassaient (« etrécompenses ») ; 13 pt, espace entre mots rouverte.
   La carte Campagne n'est PAS touchée (ses lignes 14 pt tiennent déjà sur deux lignes). */
#stage #cap26-attack-menu :is(.attaque-choix:not(.attaque-campagne) .attack-copy small, .attaque-verrouille small) { font:600 13px/1.3 var(--f-lecture); letter-spacing:0; word-spacing:.1em; text-rendering:optimizeLegibility; font-kerning:normal; }
