:root {
  color-scheme: light;
  /* --- surfaces : parchemin à la bougie --- */
  --cp-bg: #f7f4ef;
  --cp-bg-elevated: #fcfbf8;
  --cp-surface: #ffffff;
  --cp-surface-soft: #f0ece4;
  --cp-border: #928a7f;         /* limite d'interface — >=3:1 sur bg ET surface */
  --cp-border-strong: #7c7365;  /* champs & structure — >=4.2:1 */
  --cp-hairline: rgba(43, 38, 34, 0.10); /* filet purement décoratif */
  --cp-text: #242424;
  --cp-text-muted: #5c5c5c;
  --cp-text-soft: #6f6f6f;
  --cp-accent: #b11f4b;
  --cp-accent-hover: #9a1a41;
  --cp-accent-soft: rgba(177, 31, 75, 0.08);
  --cp-accent-fg: #ffffff;
  --cp-brass: #7d5a1e;          /* laiton — l'anneau de la marque */
  --cp-success: #166534;        /* >=4.5:1 sur blanc, bg et teinte */
  --cp-success-soft: #e6f4ec;
  --cp-danger: #b91c1c;         /* >=4.5:1 sur blanc, bg et teinte */
  --cp-danger-soft: #fbe2e2;
  --cp-warning: #8f5700;        /* >=4.5:1 sur blanc, bg et teinte */
  --cp-warning-soft: #faedcb;
  --cp-link: #0078d4;
  --cp-shadow: 0 18px 48px rgba(35, 25, 15, 0.14);
  --cp-shadow-soft: 0 1px 0 rgba(255, 255, 255, 0.7) inset, 0 1px 2px rgba(35, 25, 15, 0.07);
  --cp-overlay: rgba(247, 244, 239, 0.82);
  --cp-panel: rgba(255, 255, 255, 0.86);
  --cp-panel-strong: rgba(255, 255, 255, 0.96);
  --cp-sheen: rgba(255, 255, 255, 0.55);
  --cp-highlight: rgba(177, 31, 75, 0.12);
  --cp-candle: rgba(255, 214, 148, 0); /* halo chaud — neutre en thème clair */
  /* --- échelle typographique (base 16px ; planchers : donnée de carte 14, notice 16) --- */
  --fs-micro: .75rem;    /* 12px — le plus petit autorisé : étiquettes & mentions légales */
  --fs-caption: .875rem; /* 14px — plancher des données de carte */
  --fs-body: 1rem;       /* 16px */
  --fs-lg: 1.125rem;     /* 18px */
  --fs-xl: 1.25rem;      /* 20px */
  --lh-tight: 1.16;
  --lh-body: 1.55;
  /* --- rythme d'espacement --- */
  --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px; --sp-5: 24px; --sp-6: 32px; --sp-8: 48px;
  --radius: 14px; --radius-lg: 20px;
  /* --- socle pouce : barre d'action fixe + navigation, hauteurs déterministes --- */
  --safe-b: env(safe-area-inset-bottom, 0px);
  --nav-h: 64px;      /* navigation basse hors encoche (5 entrées, libellés sur 2 lignes possibles) */
  --thumb-h: 68px;    /* barre pouce hors encoche */
  --dock-h: calc(var(--nav-h) + var(--thumb-h) + var(--safe-b));
  /* --- silhouette plate de la marque (pour mask, adaptée au thème) --- */
  --mark: url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20192%20192'%3E%3Cg%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'9'%3E%3Ccircle%20cx%3D'96'%20cy%3D'96'%20r%3D'64'%2F%3E%3C%2Fg%3E%3Cg%20stroke%3D'black'%20stroke-width%3D'7'%20stroke-linecap%3D'round'%3E%3Cline%20x1%3D'96'%20y1%3D'38'%20x2%3D'96'%20y2%3D'48'%2F%3E%3Cline%20x1%3D'154'%20y1%3D'96'%20x2%3D'144'%20y2%3D'96'%2F%3E%3Cline%20x1%3D'96'%20y1%3D'154'%20x2%3D'96'%20y2%3D'144'%2F%3E%3Cline%20x1%3D'38'%20y1%3D'96'%20x2%3D'48'%20y2%3D'96'%2F%3E%3C%2Fg%3E%3Cg%20fill%3D'black'%3E%3Ccircle%20cx%3D'96'%20cy%3D'82'%20r%3D'17'%2F%3E%3Cpath%20d%3D'M89%2086%20H103%20L109%20126%20H83%20Z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
}
html[data-theme="dark"] {
  color-scheme: dark;
  --cp-bg: #3d3b3a;
  --cp-bg-elevated: #343231;
  --cp-surface: #292929;
  --cp-surface-soft: #333130;
  --cp-border: #8a857e;         /* >=3:1 sur bg ET surface */
  --cp-border-strong: #a09a90;  /* structure — >=3.9:1 */
  --cp-hairline: rgba(240, 230, 210, 0.08);
  --cp-text: #dedede;
  --cp-text-muted: #a8a8a8;     /* >=4.5:1 même posé sur bg */
  --cp-text-soft: #b0b0b0;
  --cp-accent: #fd8ea1;
  --cp-accent-hover: #fb7b91;
  --cp-accent-soft: rgba(253, 142, 161, 0.14);
  --cp-accent-fg: #1a1a1a;
  --cp-brass: #cdae7a;
  --cp-success: #4ade80;
  --cp-success-soft: #123420;
  --cp-danger: #fb8f8f;         /* remonté de #f87171 : >=4.5:1 sur bg */
  --cp-danger-soft: #3b1d1d;
  --cp-warning: #fbbf24;
  --cp-warning-soft: #3a2d10;
  --cp-link: #4da6ff;
  --cp-shadow: 0 18px 48px rgba(0, 0, 0, 0.42);
  --cp-shadow-soft: 0 1px 0 rgba(255, 255, 255, 0.04) inset, 0 1px 2px rgba(0, 0, 0, 0.4);
  --cp-overlay: rgba(18, 17, 16, 0.9);
  --cp-panel: rgba(41, 41, 41, 0.72);
  --cp-panel-strong: rgba(41, 41, 41, 0.96);
  --cp-sheen: rgba(255, 255, 255, 0.04);
  --cp-highlight: rgba(253, 142, 161, 0.12);
  --cp-candle: rgba(255, 190, 120, 0.05);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:radial-gradient(135% 90% at 50% -12%,var(--cp-candle),transparent 62%),var(--cp-bg);color:var(--cp-text);font:16px/var(--lh-body) "Segoe UI",Aptos,Calibri,-apple-system,BlinkMacSystemFont,sans-serif;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
button,input,textarea,select{font:inherit}
button,a,input,textarea,select{-webkit-tap-highlight-color:var(--cp-highlight)}
button{min-height:44px;border:1px solid var(--cp-border-strong);border-radius:.625rem;background:linear-gradient(var(--cp-surface),var(--cp-bg-elevated));color:var(--cp-text);padding:10px 16px;cursor:pointer;font-weight:600;box-shadow:var(--cp-shadow-soft);transition:background .15s,border-color .15s,transform .12s,box-shadow .15s}
button:hover{background:var(--cp-highlight);border-color:var(--cp-accent)}
button:active{transform:translateY(1px);box-shadow:none}
button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
button.primary{background:linear-gradient(180deg,var(--cp-accent),var(--cp-accent-hover));border-color:var(--cp-accent-hover);color:var(--cp-accent-fg)}
button.primary:hover{background:var(--cp-accent-hover)}
.danger{color:var(--cp-danger)}
a{color:var(--cp-link);text-underline-offset:3px}
:focus-visible{outline:3px solid var(--cp-accent);outline-offset:3px}
input,textarea,select{width:100%;padding:12px;border:1px solid var(--cp-border-strong);border-radius:.625rem;background:var(--cp-bg-elevated);color:var(--cp-text);min-height:44px}
textarea{resize:vertical;min-height:88px}
input[type=checkbox],input[type=radio]{width:22px;min-height:22px;accent-color:var(--cp-accent);flex-shrink:0}
label{display:grid;gap:6px;font-weight:600;font-size:.875rem;margin:12px 0}
.check{display:flex;align-items:center;gap:10px;min-height:44px;font-weight:400}
fieldset{border:0;padding:0;margin:8px 0}
legend{font-weight:600;margin-bottom:8px}
h1,h2,h3,p{margin-top:0}
h1{font-size:clamp(1.7rem,4vw,2.5rem);line-height:1.15;letter-spacing:-.04em;margin-bottom:12px}
h2{font-size:1.25rem;letter-spacing:-.02em;margin-bottom:12px}
h3{font-size:1rem;margin-bottom:8px}
small,.muted{color:var(--cp-text-muted)}
.small{font-size:var(--fs-caption)}
.eyebrow{font-size:var(--fs-micro);font-weight:700;text-transform:uppercase;letter-spacing:.19em;color:var(--cp-accent);margin-bottom:12px}
.app-header{height:76px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px max(20px,calc((100vw - 1120px)/2));background:linear-gradient(var(--cp-surface),var(--cp-bg-elevated));border-bottom:1px solid var(--cp-border);box-shadow:0 1px 0 var(--cp-hairline)}
.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--cp-text);font-size:1.3rem;line-height:1.1;font-weight:650}
.brand small{display:block;font-size:var(--fs-micro);letter-spacing:.16em;margin-top:4px;color:var(--cp-text-soft);font-weight:700}
.brand-seal{position:relative;width:42px;height:42px;border:1px solid var(--cp-border-strong);border-radius:50%;display:grid;place-items:center;color:transparent;font-size:0;overflow:hidden;background:radial-gradient(circle at 38% 30%,var(--cp-surface),var(--cp-bg-elevated));box-shadow:var(--cp-shadow-soft),0 0 0 3px var(--cp-accent-soft)}
.brand-seal::before{content:"";width:30px;height:30px;background:var(--cp-accent);-webkit-mask:var(--mark) center/contain no-repeat;mask:var(--mark) center/contain no-repeat}
.brand-seal:has(svg),.cover-clock:has(svg){background:none;border:0;box-shadow:none}
.brand-seal:has(svg)::before,.cover-clock:has(svg)::before{display:none}
.brand-mark{width:30px;height:30px;display:block}
.brand-mark .mk-ring{fill:none;stroke:var(--cp-brass)}
.brand-mark .mk-hour{stroke:var(--cp-accent)}
.brand-mark .mk-key{fill:var(--cp-text)}
.header-actions{display:flex;gap:8px;align-items:center}
.icon-button{width:44px;padding:6px;font-size:1.35rem}
.status{font-size:var(--fs-micro);color:var(--cp-text-muted)}
main{max-width:1120px;margin:auto;padding:32px 24px 48px;min-height:calc(100vh - 76px)}
/* le socle pouce n'existe qu'en partie : ne réserver l'espace que quand la nav est visible */
body:has(#nav:not([hidden])) #main{padding-bottom:calc(var(--dock-h) + 16px)}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 24px}
.section-head h1{margin:0}
.section-head p{margin:6px 0 0}
.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.spread{justify-content:space-between}
.grid{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}
.card{background:var(--cp-surface);border:1px solid var(--cp-border);border-radius:var(--radius);padding:24px;min-width:0;box-shadow:var(--cp-shadow-soft);background-image:linear-gradient(var(--cp-sheen),transparent 72px)}
.card p:last-child{margin-bottom:0}
.quiet-card{background:var(--cp-bg-elevated)}
.notice{padding:14px 16px;border-left:3px solid var(--cp-accent);border-radius:0 10px 10px 0;background:var(--cp-accent-soft);font-size:var(--fs-body);line-height:1.5;margin:16px 0}
.notice.warning{background:var(--cp-warning-soft);border-left-color:var(--cp-warning)}
.notice.error,.notice.danger{background:var(--cp-danger-soft);border-left-color:var(--cp-danger)}
.notice.success{background:var(--cp-success-soft);border-left-color:var(--cp-success)}
.warning{border-left-color:var(--cp-warning);color:var(--cp-text)}
.hero{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;align-items:center;padding:48px 0 40px}
.hero h1{font-size:clamp(2.7rem,6vw,4.6rem);line-height:1.02}
.hero p{font-size:1.08rem;color:var(--cp-text-soft);max-width:520px;margin:24px 0}
.hero .row{margin-top:28px}
.hero-art{aspect-ratio:1;border:1px solid var(--cp-border-strong);border-radius:50%;position:relative;background:radial-gradient(circle,var(--cp-highlight),var(--cp-surface));display:grid;place-items:center;margin:20px}
.hero-art::before{content:"";position:absolute;inset:15%;border:1px dashed var(--cp-border-strong);border-radius:50%}
.hero-art::after{content:"";position:absolute;inset:31%;border:1px solid var(--cp-accent);border-radius:50%}
.hero-center{text-align:center;z-index:1;line-height:1.1}
.hero-center strong{display:block;font-size:3.4rem;font-weight:300;color:var(--cp-accent)}
.orbit{position:absolute;width:64px;height:64px;border:1px solid var(--cp-border-strong);background:var(--cp-surface);border-radius:16px;display:grid;place-items:center;font-size:1.6rem;transform:translate(-50%,-50%) rotate(-6deg)}
.features{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0}
.features .card{padding:22px}
.feature-number{font-size:.75rem;color:var(--cp-accent);display:block;margin-bottom:16px}
.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--nav-h) + var(--safe-b));background:var(--cp-panel-strong);border-top:1px solid var(--cp-border);z-index:20;display:flex;justify-content:center;padding:8px 12px max(8px,var(--safe-b));gap:8px}
.bottom-nav button{border:0;background:none;min-width:110px;font-size:.75rem;display:grid;gap:2px;padding:6px 20px;color:var(--cp-text-muted)}
.bottom-nav button .nav-icon{font-size:1.3rem;line-height:1.1}
.bottom-nav button.active{color:var(--cp-accent);background:var(--cp-accent-soft)}
/* — barre pouce : les deux gestes urgents, à portée du pouce, au-dessus de la nav — */
#thumb-bar{position:fixed;left:0;right:0;bottom:calc(var(--nav-h) + var(--safe-b));z-index:19;height:var(--thumb-h);display:flex;align-items:stretch;gap:10px;padding:8px max(16px,calc((100vw - 1120px)/2));background:var(--cp-panel-strong);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-top:1px solid var(--cp-hairline);box-shadow:0 -6px 18px -12px rgba(0,0,0,.35)}
.thumb-main{flex:1 1 auto;min-height:52px;font-size:var(--fs-body);font-weight:700;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thumb-hide{flex:0 0 auto;width:56px;min-width:56px;min-height:52px;padding:6px}
.stats{display:flex;gap:16px;flex-wrap:wrap;margin:16px 0}
.stat{padding-right:18px;border-right:1px solid var(--cp-border);font-size:.75rem;color:var(--cp-text-muted)}
.stat:last-child{border:0}
.stat strong{display:block;font-size:1.4rem;color:var(--cp-text);font-weight:600}
.table-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(250px,1fr);gap:24px;align-items:start}
.table-layout>*{min-width:0}
/* — en-tête de table condensé : titre tronquable + deux commandes fixes — */
.table-bar{display:flex;align-items:center;gap:10px;margin:0 0 6px}
.table-bar-title{flex:1 1 auto;min-width:0}
.table-bar-title h1{margin:0;font-size:clamp(1.2rem,4.5vw,1.5rem);line-height:1.15;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.table-bar-title p{margin:2px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.table-bar .phase-pill,.table-bar .icon-button{flex:0 0 auto}
.phase-pill{min-height:44px;padding:6px 14px;border-radius:999px;font-size:var(--fs-caption);font-weight:600;white-space:nowrap;color:var(--cp-text);background:var(--cp-surface-soft);border:1px solid var(--cp-border-strong);box-shadow:none}
.phase-pill:hover{background:var(--cp-highlight);border-color:var(--cp-accent)}
.table-pulse{margin:0 0 14px;font-size:var(--fs-caption);color:var(--cp-text-muted);font-variant-numeric:tabular-nums}
/* — actions fréquentes de la table : une rangée compacte, moins de défilement avant la 1re carte — */
.quick-actions.row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 16px}
.quick-actions.row button{min-height:52px;padding:10px 8px;text-align:center;font-size:var(--fs-caption);line-height:1.2;overflow-wrap:anywhere}
/* — menu d'outils : chaque entrée = titre fort + explication réellement lisible — */
.menu-grid{display:grid;gap:10px;margin:4px 0}
.menu-item{display:flex;align-items:flex-start;gap:14px;width:100%;min-height:56px;text-align:left;padding:14px 16px;font-weight:400}
.menu-icon{flex:0 0 auto;width:28px;margin-top:1px;font-size:1.5rem;line-height:1.1;text-align:center}
.menu-text{display:block;min-width:0}
.menu-text strong{display:block;font-size:var(--fs-body);font-weight:650;line-height:1.25;color:var(--cp-text)}
.menu-text small{display:block;margin-top:3px;font-size:var(--fs-caption);font-weight:400;line-height:1.35;color:var(--cp-text-muted)}
/* — lignes-sièges denses : situation lisible d'un coup d'œil, 3 actions en pictogrammes —
   .player-card / .player-open sont conservés comme alias (tests) ; le style vit sur .seat* */
.player-grid{display:flex;flex-direction:column;gap:6px}
.player-card,.seat{position:relative;min-width:0;background:var(--cp-surface);border:1px solid var(--cp-border);border-radius:12px;overflow:hidden;box-shadow:var(--cp-shadow-soft)}
.seat{display:flex;align-items:stretch}
.seat-open{flex:1 1 auto;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:7px 10px;min-height:52px;text-align:left;border:0;border-radius:0;background:none;box-shadow:none}
.seat-open:hover{background:var(--cp-highlight)}
.seat-num{flex:0 0 auto;width:22px;text-align:center;font-size:var(--fs-micro);font-weight:700;color:var(--cp-text-muted);font-variant-numeric:tabular-nums}
.seat-body{flex:1 1 auto;min-width:0}
.seat-name{display:block;font-size:var(--fs-caption);font-weight:650;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seat-name em{font-style:normal;font-weight:700;font-size:var(--fs-micro);color:var(--cp-accent);text-transform:uppercase;letter-spacing:.07em;margin-left:5px}
.seat-flag{display:inline-block;font-size:var(--fs-micro);font-weight:600;color:var(--cp-text-muted);border:1px solid var(--cp-border);border-radius:6px;padding:0 5px;margin-left:5px;text-transform:uppercase;letter-spacing:.03em;vertical-align:middle}
.seat-claim{display:block;font-size:var(--fs-caption);color:var(--cp-text-muted);font-weight:400;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.seat-state{flex:0 0 auto;font-size:var(--fs-micro);color:var(--cp-text-muted);white-space:nowrap;text-align:right}
.seat [data-compact-estimate]{flex:1 1 100%;min-width:0}
.seat [data-compact-estimate]:empty{display:none}
.avatar{width:38px;height:38px;border-radius:50%;background:radial-gradient(circle at 38% 30%,var(--cp-highlight),var(--cp-accent-soft));border:1px solid var(--cp-border-strong);display:grid;place-items:center;color:var(--cp-accent);font-size:.85rem;font-weight:700;flex-shrink:0}
.seat-actions{flex:0 0 auto;display:flex;align-items:stretch;border-left:1px solid var(--cp-border)}
.seat-act{display:flex;align-items:center;justify-content:center;width:44px;min-width:44px;min-height:44px;padding:0;font-size:1.1rem;line-height:1;border:0;border-radius:0;background:var(--cp-surface);color:var(--cp-text);box-shadow:none}
.seat-act+.seat-act{border-left:1px solid var(--cp-hairline)}
.seat-act:hover{background:var(--cp-highlight);border-color:transparent}
/* mine : cadre accent complet + badge « moi » (repère textuel, pas seulement chromatique) */
.player-card.mine,.seat.mine{border-color:var(--cp-accent);box-shadow:inset 0 0 0 1px var(--cp-accent),var(--cp-shadow-soft)}
/* mort : fond assourdi + numéro barré + libellé d'état ; distinct sans dépendre de la couleur */
.player-card.dead,.seat.dead{background:var(--cp-bg-elevated)}
.seat.dead .seat-act{background:var(--cp-bg-elevated)}
.seat.dead .seat-num{text-decoration:line-through}
.seat.dead .seat-name{color:var(--cp-text-muted);font-weight:600}
/* confiance : ruban gauche à texture distincte (plein / pointillé / hachuré), couleur en renfort seulement */
.seat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;pointer-events:none;background:transparent}
.seat.trust-trusted::before{background:var(--cp-success)}
.seat.trust-watch::before{background:repeating-linear-gradient(180deg,var(--cp-warning) 0 4px,transparent 4px 9px)}
.seat.trust-suspect::before{background:repeating-linear-gradient(45deg,var(--cp-danger) 0 3px,transparent 3px 6px)}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--cp-border);border-radius:8px;padding:5px 10px;font-size:.8125rem;background:var(--cp-surface-soft);overflow-wrap:anywhere}
.chip.accent{color:var(--cp-accent);background:var(--cp-accent-soft);border-color:var(--cp-accent)}
.chip.warning{color:var(--cp-warning);background:var(--cp-warning-soft);border-color:var(--cp-warning);font-size:var(--fs-caption)}
.chip.danger{color:var(--cp-danger);background:var(--cp-danger-soft);border-color:var(--cp-danger);font-size:var(--fs-caption)}
.chip.success{color:var(--cp-success);background:var(--cp-success-soft);border-color:var(--cp-success);font-size:var(--fs-caption)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.quick-actions{display:grid;gap:8px;margin:20px 0}
.quick-actions button{text-align:left}
.timeline-item{border-left:1px solid var(--cp-border-strong);margin-left:8px;padding:0 0 24px 24px;position:relative;overflow-wrap:anywhere}
.timeline-item::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--cp-accent);position:absolute;left:-5px;top:6px}
.timeline-item h3{margin:4px 0}
.timeline-item .row{justify-content:space-between}
.timeline-item p{white-space:pre-wrap;margin:6px 0;font-size:.9rem}
.mini-timeline .timeline-item{padding-bottom:16px}
.role-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.role{padding:18px}
.role p{font-size:.85rem;color:var(--cp-text-soft);margin:10px 0}
.role .role-id{font-size:var(--fs-micro);color:var(--cp-text-muted)}
.search{margin:16px 0}
.filters{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px}
.filters button{white-space:nowrap;font-size:.8rem}
.filters button.selected{background:var(--cp-accent-soft);color:var(--cp-accent);border-color:var(--cp-accent)}
.empty{padding:44px 24px;text-align:center;color:var(--cp-text-muted);border:1px dashed var(--cp-border-strong);border-radius:var(--radius);background:var(--cp-bg-elevated);background-image:linear-gradient(var(--cp-sheen),transparent 80px)}
.empty::before{content:"";display:block;width:52px;height:52px;margin:0 auto 16px;opacity:.5;background:var(--cp-text-muted);-webkit-mask:var(--mark) center/contain no-repeat;mask:var(--mark) center/contain no-repeat}
.empty strong{display:block;color:var(--cp-text);margin-bottom:8px}
dialog{width:min(620px,calc(100% - 24px));max-height:90dvh;padding:0;border:1px solid var(--cp-border-strong);border-radius:20px;background:var(--cp-surface);color:var(--cp-text);box-shadow:var(--cp-shadow);overflow:auto}
dialog.masked{visibility:hidden}
dialog.masked::backdrop{visibility:hidden}
dialog::backdrop{background:var(--cp-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.dialog-head{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;background:var(--cp-surface);padding:18px 24px;border-bottom:1px solid var(--cp-border);z-index:2}
.dialog-head h2{margin:0;font-size:1.1rem}
.dialog-body{padding:8px 24px 24px}
.dialog-footer{display:flex;gap:8px;justify-content:flex-end;margin-top:20px;position:sticky;bottom:0;padding:12px 0;background:var(--cp-surface)}
.picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:260px;overflow:auto;margin:12px 0;padding:3px}
.picker button{text-align:left;display:flex;align-items:center;justify-content:space-between;font-weight:400;font-size:.85rem;gap:8px;min-height:48px}
.picker button[aria-pressed=true]{border-color:var(--cp-accent);background:var(--cp-accent-soft);color:var(--cp-accent)}
.picker button span{font-size:var(--fs-micro);flex-shrink:0}
.player-picker{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.player-picker button[aria-pressed=true]{border-color:var(--cp-accent);background:var(--cp-accent-soft);color:var(--cp-accent)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.count-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.count-grid label{font-size:var(--fs-micro)}
.count-grid input{padding:8px}
details{border-top:1px solid var(--cp-border);padding:12px 0}
summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600}
.domain-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--cp-border)}
.domain-row .grow{flex:1;min-width:0}
.domain-row .muted{font-size:.8rem}
.meter{height:5px;border-radius:4px;background:var(--cp-border);overflow:hidden;margin-top:8px}
.meter span{display:block;height:100%;background:var(--cp-accent)}
.result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.worlds-number{font-size:3rem;font-weight:300;color:var(--cp-accent);line-height:1.1}
.issue{padding:12px 0;border-bottom:1px solid var(--cp-border);font-size:.85rem}
.issue:last-child{border:0}
#toast{position:fixed;bottom:calc(var(--safe-b) + 24px);left:50%;transform:translateX(-50%);background:var(--cp-text);color:var(--cp-surface);padding:12px 20px;border-radius:12px;z-index:100;max-width:90%;box-shadow:var(--cp-shadow);font-size:.85rem;pointer-events:none}
body:has(#nav:not([hidden])) #toast{bottom:calc(var(--dock-h) + 16px)}
#banner{padding:10px 24px;text-align:center;background:var(--cp-accent-soft);font-size:.8rem}
#cover{position:fixed;inset:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;z-index:200;background:radial-gradient(120% 70% at 50% 30%,var(--cp-bg-elevated),var(--cp-surface));color:var(--cp-text);display:grid;place-items:center;border:0;border-radius:0;padding:0;overflow:hidden}
#cover:not([open]){display:none}
#cover::backdrop{background:var(--cp-surface)}
.cover-content{text-align:center;padding:24px;max-width:340px}
.cover-content h1{letter-spacing:-.03em}
.cover-clock{position:relative;width:132px;height:132px;margin:0 auto 32px;color:transparent;font-size:0;display:grid;place-items:center;border-radius:50%;border:1px solid var(--cp-border-strong);background:radial-gradient(circle at 40% 32%,var(--cp-surface),var(--cp-bg-elevated));box-shadow:var(--cp-shadow-soft),0 0 0 10px var(--cp-accent-soft),0 0 60px var(--cp-candle)}
.cover-clock::before{content:"";width:92px;height:92px;background:var(--cp-accent);-webkit-mask:var(--mark) center/contain no-repeat;mask:var(--mark) center/contain no-repeat}
.cover-mark{width:96px;height:96px;display:block}
.skip{position:fixed;top:-80px;left:12px;background:var(--cp-surface);padding:12px;z-index:300}
.skip:focus{top:8px}
.loading{text-align:center;padding-top:20vh}
.footer-note{font-size:.75rem;color:var(--cp-text-muted);margin:32px 0 0}
.nowrap{white-space:nowrap}
.full{width:100%}
.spaced{margin-top:24px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.guide{max-width:780px}
.role-check{display:flex;align-items:center;gap:10px;margin:0;padding:10px;border:1px solid var(--cp-border);border-radius:10px;font-size:.85rem;min-height:52px;cursor:pointer}
.role-check:has(input:checked){background:var(--cp-accent-soft);border-color:var(--cp-accent)}
.role-check small{display:block;font-size:var(--fs-micro);font-weight:400}
.probability-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--cp-border);font-size:.85rem}
.probability-row>strong{color:var(--cp-accent);white-space:nowrap;font-variant-numeric:tabular-nums}
.probability-row.outside{margin-top:8px;border-top:1px dashed var(--cp-border-strong);font-style:italic}
.probability-row>span:first-child{min-width:0;overflow-wrap:anywhere}
.probability-row .ghost{flex:0 0 auto;padding:6px 10px;min-height:44px;font-size:var(--fs-micro);background:transparent;border:1px solid var(--cp-border-strong);color:var(--cp-text-muted)}
.probability-row .ghost:hover{color:var(--cp-text);border-color:var(--cp-accent)}
.compact-probability{display:block;width:100%;font-size:var(--fs-micro);font-weight:400;margin:2px 0 0;color:var(--cp-text-muted)}
.compact-probability>span{display:flex;justify-content:space-between;gap:8px;margin:2px 0}
.compact-probability b{color:var(--cp-accent);white-space:nowrap}
.ballot-list{max-height:300px;overflow-y:auto;padding-right:6px}
.ballot-row{display:grid;grid-template-columns:minmax(0,1fr) auto 56px;gap:8px;align-items:center;margin:6px 0}
.ballot-row>span{overflow-wrap:anywhere;font-size:.85rem}
.ballot-row input{padding:6px;text-align:center}
.ballot-choice{display:flex;gap:0}
.ballot-choice button{min-width:46px;min-height:44px;padding:6px 8px;border-radius:0;font-size:.8rem;border-right-width:0}
.ballot-choice button:first-child{border-radius:.625rem 0 0 .625rem}
.ballot-choice button:last-child{border-radius:0 .625rem .625rem 0;border-right-width:1px}
.ballot-choice button[aria-pressed=true]{background:var(--cp-accent);border-color:var(--cp-accent);color:var(--cp-accent-fg)}
.ballot-bulk{margin:8px 0}
.ballot-bulk button{font-size:.8125rem;padding:8px 12px;min-height:44px}
/* — Pointage rapide : un tap par main levée pendant la nomination — */
.ballot-quick{margin:4px 0 14px}
.ballot-quick .muted{margin:0 0 10px}
.ballot-quick #ballot-summary{margin:12px 0 0}
.ballot-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;margin:10px 0 0}
.ballot-chip{display:flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:9px 10px;font-size:var(--fs-caption);font-weight:600;line-height:1.15;text-align:center;border:1px solid var(--cp-border-strong);border-radius:12px;background:linear-gradient(var(--cp-surface),var(--cp-bg-elevated));color:var(--cp-text);box-shadow:var(--cp-shadow-soft);overflow-wrap:anywhere;transition:background .12s,border-color .12s,box-shadow .12s}
.ballot-chip::before{content:"";flex:0 0 auto;width:16px;height:16px;border:2px solid var(--cp-border-strong);border-radius:50%;transition:none}
.ballot-chip[aria-pressed=true]{background:var(--cp-accent);border-color:var(--cp-accent);color:var(--cp-accent-fg);font-weight:800;box-shadow:inset 0 0 0 2px var(--cp-accent-fg)}
.ballot-chip[aria-pressed=true]::before{content:"\2713";display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:0;border-radius:50%;background:var(--cp-accent-fg);color:var(--cp-accent);font-size:12px;font-weight:900;line-height:1}
.roster-row{display:grid;grid-template-columns:36px minmax(0,1fr);gap:8px;padding:12px 0;border-bottom:1px solid var(--cp-border)}
.roster-name{margin:0}
.roster-controls{grid-column:2;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.roster-controls .check{font-size:.75rem;margin:0}
.roster-controls button{padding:6px 10px;font-size:.8rem}
.overview-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.graph-card{margin-top:20px}
.graph-scroll{width:100%;max-height:620px;overflow:auto;border:1px solid var(--cp-border);border-radius:12px;background:var(--cp-bg-elevated)}
.graph-scroll svg{display:block;min-width:900px;width:100%;height:auto}
.graph-heading{fill:var(--cp-text-muted);font-size:13px;letter-spacing:1px;font-weight:700}
.graph-edge{fill:none;stroke:var(--cp-border-strong);stroke-width:1.5;opacity:.7}
.graph-edge.source{stroke:var(--cp-text-soft)}
.graph-edge.weight,.graph-edge.strict,.graph-edge.conditional{stroke:var(--cp-accent);stroke-dasharray:5 5}
.graph-node rect{fill:var(--cp-surface);stroke:var(--cp-border-strong);stroke-width:1}
.graph-node text{fill:var(--cp-text);font-size:16px;font-weight:600;pointer-events:none}
.graph-node .sub{fill:var(--cp-text-soft);font-size:12px;font-weight:400}
.graph-node{cursor:pointer}
.graph-node:focus-visible{outline:none}
.graph-node:hover rect,.graph-node:focus-visible rect{stroke:var(--cp-accent);stroke-width:3}
.graph-node.assumed rect{stroke:var(--cp-accent)}
.graph-node.model rect{fill:var(--cp-accent-soft);stroke:var(--cp-accent)}
.graph-node.neutral rect{stroke-dasharray:3 3}
.graph-legend{display:flex;gap:12px;flex-wrap:wrap;color:var(--cp-text-soft);font-size:.75rem;margin-top:12px}
.overview-records,.overview-matrix{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.overview-records button{display:grid;gap:4px;text-align:left;font-weight:400;overflow-wrap:anywhere}
.overview-records button>span{font-size:.8rem}
.overview-matrix article{border:1px solid var(--cp-border);border-radius:12px;padding:16px;min-width:0}
.overview-matrix article p{font-size:.85rem;overflow-wrap:anywhere}
.overview-matrix .chips{margin-bottom:10px}
.coverage-row{padding:16px 0;border-bottom:1px solid var(--cp-border)}
.coverage-row h3{margin:10px 0}
.coverage-row p{font-size:.875rem}
.table-card{background:var(--cp-bg-elevated);border:1px solid var(--cp-border-strong);border-radius:14px;padding:18px;margin:12px 0}
.table-card ul{margin:10px 0}
.table-card li{margin-bottom:8px}
.onboarding{padding-left:20px}
.onboarding li{margin-bottom:16px}
.onboarding strong{color:var(--cp-accent)}
.guide section{margin:32px 0}
/* — mouvement discret : une seule fois, jamais en boucle ; neutralisé par prefers-reduced-motion — */
@keyframes cp-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes cp-fade{from{opacity:0}to{opacity:1}}
dialog[open]{animation:cp-rise .16s ease-out}
#cover{animation:cp-fade .2s ease-out}
.empty{animation:cp-fade .2s ease-out}
@media(min-width:1000px){.table-aside{position:sticky;top:24px}}
@media(max-width:760px){
  .app-header{height:64px;padding:10px 16px}.brand{font-size:1.1rem;gap:8px}.brand-seal{width:34px;height:34px}.header-actions{gap:4px}.status{display:none}
  main{padding:16px 16px 24px}.hero{grid-template-columns:1fr;gap:0;padding:16px 0}.hero-art{max-width:300px;width:80%;margin:32px auto}.hero p{margin:20px 0}.hero h1{font-size:3rem}
  .features{grid-template-columns:1fr}.table-layout{grid-template-columns:minmax(0,1fr);gap:12px}
  .table-aside .card{padding:14px}
  .section-head{gap:12px;margin-bottom:20px}.section-head h1{font-size:1.65rem}
  .table-bar-title h1{font-size:1.2rem}
  .stats{gap:12px;margin:12px 0 16px}.stat{font-size:var(--fs-micro);padding-right:12px}.stat strong{font-size:1.2rem}.stat strong small{font-size:var(--fs-micro)}
  .table-tools{flex-wrap:nowrap;overflow-x:auto;gap:6px;margin:0 0 10px;padding-bottom:2px}
  .table-tools button{white-space:nowrap;flex-shrink:0;font-size:.8125rem;padding:8px 12px;min-height:44px}
  .table-search{margin:4px 0 12px}
  .grid,.result-grid{grid-template-columns:1fr}.role-list{grid-template-columns:repeat(2,minmax(0,1fr))}.role{padding:14px}.role h3{font-size:.9rem}.role p{font-size:.8rem}
  .bottom-nav{gap:0;padding-left:4px;padding-right:4px}.bottom-nav button{min-width:0;width:20%;padding:6px 2px;font-size:var(--fs-micro);line-height:1.05;overflow-wrap:anywhere;hyphens:auto}.bottom-nav button .nav-icon{font-size:1.2rem}
  .overview-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.overview-records,.overview-matrix{grid-template-columns:1fr}.graph-scroll{max-height:350px}.graph-card{padding:14px}
  dialog{max-height:92dvh;width:calc(100% - 16px);border-radius:16px}.dialog-head{padding:12px 16px}.dialog-body{padding:8px 16px 16px}.card{padding:20px}.form-grid{gap:8px}
}
@media(max-width:350px){.brand small{letter-spacing:.2em}.brand-seal{display:none}.avatar{width:30px;height:30px}.count-grid{grid-template-columns:repeat(2,1fr)}.role-list{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.seat-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin:10px 2px 0;padding:0;font-size:var(--fs-micro);color:var(--cp-text-muted);line-height:1.5}
.seat-legend b{font-weight:650;color:var(--cp-text-soft)}

