@layer reset,tokens,base,startup,home,entry,dashboard,tabs,roles,circle,utilities,responsive,enhancements;

@layer reset {
  .lgv2-remote-audio{position:absolute;width:0;height:0;opacity:0;pointer-events:none}
  .lgv2,.lgv2 *,.lgv2 *::before,.lgv2 *::after{box-sizing:border-box}
  .lgv2 button,.lgv2 input,.lgv2 select,.lgv2 textarea{font:inherit}
  .lgv2 button{color:inherit}
  .lgv2 img{max-width:100%;display:block}
  .lgv2 fieldset{border:0;margin:0;padding:0;min-width:0}
  .lgv2 legend{padding:0}
  .lgv2 h1,.lgv2 h2,.lgv2 h3,.lgv2 p{margin:0}
}

@layer tokens {
  .lgv2{
    --wine:#7c1027;--wine-2:#98172f;--wine-3:#5f0a1e;
    --gold:#c8a164;--gold-dark:#a67a3f;
    --paper:#fbf2e4;--paper-2:#f6ead8;--paper-3:#fffaf1;
    --ink:#3d2d27;--muted:#6b5a4d;--line:#ddc6a0;--green:#6c984b;
    --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
    --sans:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
    --shadow:0 10px 28px rgba(74,42,25,.12);--soft-shadow:0 5px 15px rgba(74,42,25,.08)
  }
}

@layer base {
  .lgv2{position:fixed;inset:0;z-index:99999;width:100%;height:var(--lgvh,100dvh);max-height:var(--lgvh,100dvh);color:var(--ink);font-family:var(--sans);font-size:16px;background:var(--wine-3);overflow:hidden;overscroll-behavior:none}
  .lgv2 svg{width:21.6px;height:21.6px;fill:currentColor;display:block}
  .lgv2-screen{position:relative;width:auto;height:100%;min-height:0;margin-top:0;margin-bottom:0;margin-left:max(env(safe-area-inset-left,0px),calc(50% - 280px));margin-right:max(env(safe-area-inset-right,0px),calc(50% - 280px));background:var(--paper);overflow:hidden}
  .lgv2-boot{height:100%;display:grid;place-items:center;place-content:center;gap:10px;background:radial-gradient(circle at 50% 32%,#30223b 0,#141422 43%,#090b12 100%);color:#e6c884;font-weight:700;letter-spacing:.04em}
  .lgv2-spinner{width:28px;height:28px;border:3px solid rgba(227,199,132,.17);border-top-color:#e1bd73;border-radius:50%;animation:lgv2-spin .75s linear infinite}
  @keyframes lgv2-spin{to{transform:rotate(360deg)}}
  .lgv2.is-busy{cursor:progress}
  .lgv2.is-busy::after{content:"";position:fixed;inset:0;z-index:999;background:rgba(255,248,237,.2);backdrop-filter:blur(1px);pointer-events:all}
  .lgv2-orn{width:min(44%,180px);display:grid;grid-template-columns:1fr 10px 1fr;align-items:center;gap:8px;margin-inline:auto;color:var(--gold)}
  .lgv2-orn i{height:1px;background:linear-gradient(90deg,transparent,currentColor)}
  .lgv2-orn i:last-child{background:linear-gradient(90deg,currentColor,transparent)}
  .lgv2-orn b{width:10px;height:10px;background:var(--wine);border:2px solid var(--gold);transform:rotate(45deg)}
}

@layer startup {
  /* « L'APPEL DE LA MEUTE » — voir runStartupIntro pour la partition.
     Cinq actes pilotés par classes d'étape (is-night, is-moon, is-clouds,
     is-village, is-wolf, is-howl, is-forge, is-seal, is-title).
     SEULS transform et opacity sont animés. */
  .lgv2-startup{
    --sk-night:#050814;--sk-night-2:#0a1730;--sk-night-3:#101f3f;
    --sk-or:#efd9a6;--sk-or-2:#c8a164;--sk-grenat:#94203b;
    position:relative;isolation:isolate;overflow:hidden;
    height:var(--lgvh,100dvh);min-height:min(480px,var(--lgvh,100dvh));
    display:grid;grid-template-rows:minmax(0,1fr) auto;
    background:#020409;color:#f4e8d2}

  /* --- Acte 0 : la braise --------------------------------------------- */
  .lgv2-boot-ember{position:absolute;left:50%;top:46%;z-index:6;width:10px;height:10px;
    transform:translate(-50%,-50%) scale(.4);border-radius:50%;
    background:radial-gradient(circle,#ffb27a 0%,#c2354f 45%,rgba(148,32,59,0) 72%);
    opacity:0;animation:lgv2-boot-ember 1.05s ease-out .05s forwards;pointer-events:none}
  @keyframes lgv2-boot-ember{
    0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}
    28%{opacity:1;transform:translate(-50%,-50%) scale(1.25)}
    58%{opacity:.85;transform:translate(-50%,-50%) scale(.92)}
    100%{opacity:0;transform:translate(-50%,-50%) scale(3.4)}}
  .lgv2-startup.is-night .lgv2-boot-ember{animation-play-state:running}

  /* --- Le monde -------------------------------------------------------- */
  .lgv2-startup-world{position:absolute;inset:0;z-index:1;overflow:hidden}
  .lgv2-startup-night{position:absolute;inset:0;opacity:0;transition:opacity 1s ease;
    background:
      radial-gradient(130% 90% at 50% 0%,var(--sk-night-3) 0%,var(--sk-night-2) 46%,var(--sk-night) 100%)}
  .lgv2-startup.is-night .lgv2-startup-night{opacity:1}

  .lgv2-startup-stars{position:absolute;inset:0 0 34% 0;opacity:0;transition:opacity .9s ease .15s}
  .lgv2-startup.is-night .lgv2-startup-stars{opacity:1}
  .lgv2-startup-stars i{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;border-radius:50%;
    background:#fdf6e3;box-shadow:0 0 6px rgba(255,244,214,.9);
    animation:lgv2-boot-star var(--d) ease-in-out var(--delay) infinite alternate}
  .lgv2-startup-stars.is-far i{width:2px;height:2px;opacity:.7;box-shadow:0 0 4px rgba(255,244,214,.6)}
  @keyframes lgv2-boot-star{from{opacity:.25;transform:scale(.8)}to{opacity:1;transform:scale(1.15)}}

  .lgv2-boot-shooting{position:absolute;left:78%;top:9%;width:74px;height:2px;border-radius:2px;
    background:linear-gradient(90deg,rgba(255,246,214,0),#fff6d6);
    transform:rotate(-24deg) translateX(0);opacity:0;
    animation:lgv2-boot-shoot 1.5s ease-out 1.7s 1}
  @keyframes lgv2-boot-shoot{
    0%{opacity:0;transform:rotate(-24deg) translateX(0)}
    12%{opacity:1}
    100%{opacity:0;transform:rotate(-24deg) translateX(-52vw)}}

  .lgv2-startup-moonwrap{position:absolute;left:50%;top:5%;z-index:2;will-change:transform,opacity;width:min(21vw,100px);aspect-ratio:1;
    transform:translate(-50%,14%) scale(.92);opacity:0;
    transition:transform 1.4s cubic-bezier(.2,.7,.2,1),opacity .9s ease}
  .lgv2-startup.is-moon .lgv2-startup-moonwrap{opacity:1;transform:translate(-50%,0) scale(1)}
  .lgv2-startup-moon{width:100%;height:100%;object-fit:contain;
    filter:drop-shadow(0 0 26px rgba(190,214,255,.35))}
  .lgv2-startup-moonhalo{position:absolute;inset:-34%;border-radius:50%;
    background:radial-gradient(circle,rgba(198,220,255,.28),rgba(198,220,255,0) 66%);
    animation:lgv2-boot-halo 3.2s ease-in-out infinite alternate}
  @keyframes lgv2-boot-halo{from{opacity:.55;transform:scale(.94)}to{opacity:1;transform:scale(1.08)}}
  .lgv2-startup.is-howl .lgv2-startup-moonhalo{animation:lgv2-boot-flare 1.15s cubic-bezier(.2,.7,.3,1) 1}
  @keyframes lgv2-boot-flare{0%{opacity:.7;transform:scale(1)}30%{opacity:1;transform:scale(1.5)}100%{opacity:.8;transform:scale(1)}}

  .lgv2-startup-cloud{position:absolute;z-index:3;top:19%;width:64vw;max-width:330px;opacity:0}
  .lgv2-startup-cloud.is-left{left:-14vw;transition:opacity 1s ease}
  .lgv2-startup-cloud.is-right{right:-18vw;top:26%;width:52vw;transition:opacity 1s ease .2s;transform:scaleX(-1)}
  .lgv2-startup.is-clouds .lgv2-startup-cloud{opacity:.9}
  .lgv2-startup.is-clouds .lgv2-startup-cloud.is-left{animation:lgv2-boot-cloud-l 34s linear infinite}
  .lgv2-startup.is-clouds .lgv2-startup-cloud.is-right{animation:lgv2-boot-cloud-r 46s linear infinite}
  .lgv2-startup.is-howl .lgv2-startup-cloud.is-left{animation-duration:22s}
  .lgv2-startup.is-howl .lgv2-startup-cloud.is-right{animation-duration:30s}
  @keyframes lgv2-boot-cloud-l{from{transform:translateX(-8vw)}to{transform:translateX(118vw)}}
  @keyframes lgv2-boot-cloud-r{from{transform:scaleX(-1) translateX(-6vw)}to{transform:scaleX(-1) translateX(122vw)}}

  .lgv2-startup-villagewrap{position:absolute;left:0;right:0;bottom:0;z-index:4;will-change:transform,opacity;
    transform:translateY(9%);opacity:0;
    transition:transform 1.3s cubic-bezier(.2,.7,.2,1),opacity .9s ease}
  .lgv2-startup.is-village .lgv2-startup-villagewrap{opacity:1;transform:translateY(0)}
  .lgv2-startup-village{display:block;width:100%;height:auto;pointer-events:none}
  .lgv2-boot-light{position:absolute;left:var(--lx);top:var(--ly);width:5px;height:5px;border-radius:50%;
    background:#ffd98c;box-shadow:0 0 9px 3px rgba(255,196,110,.75);opacity:0;transform:scale(.4)}
  .lgv2-startup.is-village .lgv2-boot-light{
    animation:lgv2-boot-light .7s ease-out calc(.35s + var(--li) * .09s) forwards,
      lgv2-boot-light-breathe 2.8s ease-in-out calc(1.2s + var(--li) * .21s) infinite alternate}
  @keyframes lgv2-boot-light{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}
  @keyframes lgv2-boot-light-breathe{from{opacity:.75}to{opacity:1}}

  /* --- Acte II : le loup et l'appel ------------------------------------ */
      
  .lgv2-boot-wave{position:absolute;left:50%;top:11%;z-index:5;width:64px;height:64px;
    margin-left:-35px;border-radius:50%;border:1.5px solid rgba(255,226,160,.85);
    opacity:0;transform:scale(.5);pointer-events:none;will-change:transform,opacity}
  .lgv2-startup.is-howl .lgv2-boot-wave{animation:lgv2-boot-wave .95s cubic-bezier(.15,.65,.25,1) 1}
  .lgv2-startup.is-howl .lgv2-boot-wave.is-2{animation-delay:.22s;border-color:rgba(200,161,100,.6)}
  @keyframes lgv2-boot-wave{0%{opacity:.9;transform:scale(.55)}55%{opacity:.28}100%{opacity:0;transform:scale(3.1)}}

  .lgv2-startup.is-quake .lgv2-startup-world{animation:lgv2-boot-quake .62s cubic-bezier(.3,.6,.3,1) 1}
  @keyframes lgv2-boot-quake{
    0%,100%{transform:translate(0,0)}
    22%{transform:translate(2px,-2px)}
    44%{transform:translate(-2px,1px)}
    66%{transform:translate(1px,2px)}
    84%{transform:translate(-1px,-1px)}}

  .lgv2-startup-depth{position:absolute;inset:0;z-index:5;pointer-events:none;
    background:linear-gradient(180deg,rgba(2,4,9,.35) 0%,rgba(2,4,9,0) 26%,rgba(2,4,9,0) 58%,rgba(2,4,9,.62) 100%)}

  /* --- Cadre et bannières ----------------------------------------------- */
  .lgv2-startup-frame{position:absolute;inset:0;z-index:7;pointer-events:none;opacity:0;transition:opacity .9s ease .1s}
  .lgv2-startup.is-village .lgv2-startup-frame{opacity:1}
  .lgv2-startup-frame img{position:absolute;width:min(21vw,96px);height:auto;opacity:.92}
  .lgv2-startup-frame .is-tl{left:6px;top:6px}
  .lgv2-startup-frame .is-tr{right:6px;top:6px;transform:scaleX(-1)}
  .lgv2-startup-frame .is-bl{left:6px;bottom:6px}
  .lgv2-startup-frame .is-br{right:6px;bottom:6px;transform:scaleX(-1)}

  .lgv2-startup-heraldry{position:absolute;inset:0;z-index:7;pointer-events:none}
  .lgv2-startup-heraldry img{position:absolute;top:-6px;width:min(15vw,66px);opacity:0;
    transform:translateY(-24%);transition:transform 1s cubic-bezier(.2,.7,.2,1),opacity .7s ease}
  .lgv2-startup-heraldry .is-left{left:4vw}
  .lgv2-startup-heraldry .is-right{right:4vw;transform:translateY(-24%) scaleX(-1)}
  .lgv2-startup.is-village .lgv2-startup-heraldry img{opacity:.95;transform:translateY(0)}
  .lgv2-startup.is-village .lgv2-startup-heraldry .is-right{transform:translateY(0) scaleX(-1)}

  /* --- Acte III : la forge du sceau -------------------------------------- */
  .lgv2-boot-seal{position:absolute;left:50%;top:44%;z-index:8;width:min(52vw,236px);aspect-ratio:1;
    transform:translate(-50%,-50%);pointer-events:none}
  .lgv2-boot-sparks{position:absolute;inset:0}
  .lgv2-boot-sparks i{position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;
    background:var(--sk-or);box-shadow:0 0 8px rgba(239,217,166,.9);opacity:0;
    transform:rotate(var(--a)) translateY(-46vmin) scale(.6)}
  .lgv2-startup.is-forge .lgv2-boot-sparks i{
    animation:lgv2-boot-spark .85s cubic-bezier(.2,.65,.3,1) var(--sd) forwards}
  @keyframes lgv2-boot-spark{
    0%{opacity:0;transform:rotate(var(--a)) translateY(-46vmin) scale(.6)}
    18%{opacity:1}
    100%{opacity:0;transform:rotate(var(--a)) translateY(-9%) scale(1.1)}}

  .lgv2-boot-ring{position:absolute;inset:-5%;width:110%;height:110%;transform:rotate(-90deg)}
  .lgv2-boot-ring circle{fill:none;stroke:var(--sk-or-2);stroke-width:2.6;stroke-linecap:round;
    stroke-dasharray:100;stroke-dashoffset:100;opacity:0}
  .lgv2-startup.is-forge .lgv2-boot-ring circle{opacity:1;
    animation:lgv2-boot-ring 1.05s cubic-bezier(.3,.6,.2,1) .12s forwards}
  @keyframes lgv2-boot-ring{to{stroke-dashoffset:0}}

  .lgv2-boot-paw{position:absolute;inset:12%;width:76%;height:76%;object-fit:contain;
    opacity:0;transform:scale(1.5)}
  .lgv2-startup.is-seal .lgv2-boot-paw{
    animation:lgv2-boot-stamp .62s cubic-bezier(.2,.8,.25,1.15) forwards}
  @keyframes lgv2-boot-stamp{
    0%{opacity:0;transform:scale(1.5)}
    55%{opacity:1;transform:scale(.94)}
    78%{transform:scale(1.05)}
    100%{opacity:1;transform:scale(1)}}
  .lgv2-startup.is-seal .lgv2-boot-seal::after{content:"";position:absolute;inset:6%;border-radius:50%;
    background:radial-gradient(circle,rgba(255,214,140,.4),rgba(255,214,140,0) 62%);
    opacity:0;animation:lgv2-boot-stampglow .8s ease-out .12s 1}
  @keyframes lgv2-boot-stampglow{0%{opacity:0;transform:scale(.7)}35%{opacity:1}100%{opacity:0;transform:scale(1.35)}}

  .lgv2-boot-logo{position:absolute;left:50%;top:50%;width:min(74vw,336px);
    transform:translate(-50%,-50%) scale(1.28);
    opacity:0;filter:drop-shadow(0 10px 24px rgba(0,0,0,.6))}
  .lgv2-startup.is-title .lgv2-boot-logo{
    animation:lgv2-boot-logostamp .62s cubic-bezier(.2,.8,.25,1.12) forwards}
  @keyframes lgv2-boot-logostamp{
    0%{opacity:0;transform:translate(-50%,-50%) scale(1.28)}
    55%{opacity:1;transform:translate(-50%,-50%) scale(.96)}
    80%{transform:translate(-50%,-50%) scale(1.03)}
    100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}
  /* Le sceau cède la place au blason. */
  .lgv2-startup.is-title .lgv2-boot-paw{transition:opacity .4s ease,transform .5s ease;
    opacity:0;transform:scale(.72)}
  .lgv2-startup.is-title .lgv2-boot-ring circle{transition:opacity .4s ease;opacity:0}
  .lgv2-boot-tagline{position:absolute;left:50%;top:50%;
    transform:translate(-50%,calc(min(37vw,168px) + 10px));
    white-space:nowrap;opacity:0;color:#efdcb8;
    font:700 clamp(8.8px,2.9vw,10.88px)/1 var(--serif);letter-spacing:.24em;
    text-shadow:0 1px 4px rgba(0,0,0,.8)}
  .lgv2-startup.is-title .lgv2-boot-tagline{transition:transform .6s ease .3s,opacity .6s ease .3s;
    opacity:1;transform:translate(-50%,min(37vw,168px))}

  /* --- Le chargement (toujours en bas, jamais de bouton) ----------------- */
  .lgv2-startup-loader{position:absolute;left:0;right:0;bottom:0;z-index:9;display:grid;justify-items:center;gap:7px;
    padding:0 26px calc(20px + env(safe-area-inset-bottom));opacity:0;transform:translateY(10px);
    transition:opacity .7s ease,transform .7s ease;will-change:transform,opacity}
  .lgv2-startup.is-loader .lgv2-startup-loader{opacity:1;transform:translateY(0)}
  .lgv2-startup-loader__label{width:min(52vw,210px);height:auto;opacity:.95}
  .lgv2-startup-track{position:relative;width:min(78vw,330px);height:12px;border-radius:999px;
    background:rgba(10,16,34,.85);border:1px solid rgba(200,161,100,.55);
    box-shadow:inset 0 1px 3px rgba(0,0,0,.6),0 1px 0 rgba(255,236,190,.12);overflow:visible}
  .lgv2-startup-track__fill{position:absolute;inset:2px;border-radius:999px;transform-origin:left center;
    transform:scaleX(var(--startup-ratio,0));
    background:linear-gradient(90deg,#8f1d38 0%,#c8a164 55%,#f4dfae 100%);
    box-shadow:0 0 10px rgba(239,217,166,.45)}
  .lgv2-startup-track__thumb{position:absolute;top:50%;left:calc(2px + (100% - 4px) * var(--startup-ratio,0));
    width:26px;height:26px;transform:translate(-50%,-50%);border-radius:50%;
    background:radial-gradient(circle at 34% 30%,#a52a47,#5b0c22 74%);
    border:2px solid #caa15f;box-shadow:0 0 12px rgba(239,217,166,.5),inset 0 0 0 2px rgba(43,7,17,.5);
    display:grid;place-items:center}
  .lgv2-startup-track__paw{width:15px;height:15px;object-fit:contain;
    animation:lgv2-boot-pawpulse 1.4s ease-in-out infinite alternate}
  @keyframes lgv2-boot-pawpulse{from{transform:scale(.92)}to{transform:scale(1.08)}}
  .lgv2-startup-status{font:700 8.8px/1 var(--serif);letter-spacing:.14em;color:#d9c193;
    text-shadow:0 1px 3px rgba(0,0,0,.7)}
  .lgv2-startup.is-loaded .lgv2-startup-track__fill{box-shadow:0 0 16px rgba(255,229,168,.75)}

  /* --- Le rideau ---------------------------------------------------------- */
  .lgv2-startup.is-ready .lgv2-startup-world,
  .lgv2-startup.is-ready .lgv2-startup-frame,
  .lgv2-startup.is-ready .lgv2-startup-heraldry{transition:opacity .5s ease;opacity:.85}
  .lgv2-boot-landing{position:fixed;inset:0;z-index:100001;pointer-events:none;
    background:radial-gradient(130% 90% at 50% 0%,#101f3f 0%,#0a1730 46%,#050814 100%);
    opacity:1;transition:opacity .6s ease}
  .lgv2-boot-landing img{position:fixed;left:var(--bx);top:var(--by);width:var(--bs);height:var(--bs);
    object-fit:contain;filter:drop-shadow(0 10px 22px rgba(0,0,0,.5));
    transition:transform .62s cubic-bezier(.3,.7,.2,1),opacity .62s ease}
  .lgv2-boot-landing.is-go{opacity:0}
  .lgv2-boot-landing.is-go img{transform:translate(calc(50vw - var(--bx) - var(--bs)/2),calc(-1 * var(--by) + 9vh)) scale(.44);opacity:0}

  /* --- Mouvement réduit : la même scène, en fondu, sans parallaxe -------- */
  @media (prefers-reduced-motion: reduce){
    .lgv2-startup *,
    .lgv2-startup *::before,
    .lgv2-startup *::after{animation:none!important;transition-duration:.15s!important}
    .lgv2-boot-ember{display:none}
    .lgv2-startup .lgv2-boot-paw{opacity:1;transform:scale(1)}
    .lgv2-startup .lgv2-boot-ring circle{opacity:1;stroke-dashoffset:0}
    .lgv2-startup.is-title .lgv2-boot-logo,
    .lgv2-startup.is-title .lgv2-boot-tagline{opacity:1;transform:translate(-50%,0)}
  }

  @media (max-height:640px){
    .lgv2-boot-seal{width:min(46vw,190px);top:42%}
    .lgv2-boot-logo{width:min(62vw,250px)}
    .lgv2-boot-tagline{transform:translate(-50%,calc(min(32vw,128px) + 10px))}
    .lgv2-startup.is-title .lgv2-boot-tagline{transform:translate(-50%,min(32vw,128px))}
    .lgv2-startup-moonwrap{width:min(18vw,84px)}
  }
}

@layer home {
  /* Accueil calqué sur la maquette 50661 : cadre ornemental fin, titre
     grenat, devise à filets or, pile de QUATRE cartes à médaillon rond
     (Créer en grenat, les trois autres en ivoire), carte de reprise grenat
     avec pastille or « Rejoindre ». */
  .lgv2-home{position:relative;display:grid;grid-template-rows:minmax(205px,40dvh) minmax(0,1fr);background:linear-gradient(#fbf5eb,#f7ebda)}
  .lgv2-home::after{content:"";position:absolute;inset:7px;z-index:5;pointer-events:none;border:1px solid rgba(191,152,92,.55);border-radius:13px;box-shadow:inset 0 0 0 3px rgba(251,245,235,.55),inset 0 0 0 4px rgba(191,152,92,.28)}
  .lgv2-home__art{min-height:0;background:linear-gradient(to bottom,rgba(251,245,235,0) 55%,#f7ebda 100%),url('../images/village-hero.webp') center/cover no-repeat}
  .lgv2-home__content{position:relative;z-index:2;min-height:0;padding:0 18px calc(14px + env(safe-area-inset-bottom));margin-top:-10px;display:grid;align-content:start;justify-items:center;text-align:center;gap:5px}
  .lgv2-home h1{color:var(--wine);font:700 clamp(34.4px,10vw,62.4px)/.94 var(--serif);letter-spacing:.012em;white-space:nowrap}
  .lgv2-home p{display:flex;align-items:center;gap:9px;font:600 clamp(11.52px,3.1vw,13.76px)/1.2 var(--serif);letter-spacing:.09em;text-transform:uppercase;color:#6b5643}
  .lgv2-home p::before,.lgv2-home p::after{content:"";width:22px;height:1px;background:linear-gradient(90deg,transparent,#c8a164);flex:none}
  .lgv2-home p::after{background:linear-gradient(90deg,#c8a164,transparent)}
  .lgv2-home__actions{display:grid;gap:10px;margin-top:9px;width:100%}
  .lgv2-home-action{width:100%;min-height:74px;border:1px solid #d9bd90;border-radius:20px;background:linear-gradient(180deg,#fdf7ea,#f6ebd6);display:grid;grid-template-columns:52px minmax(0,1fr) 16px;align-items:center;gap:12px;padding:10px 14px;text-align:left;color:#4b2c22;box-shadow:0 6px 16px rgba(91,44,20,.10),inset 0 0 0 1px rgba(255,255,255,.65);cursor:pointer;transition:transform .16s ease}
  .lgv2-home-action:active{transform:scale(.985)}
  .lgv2-home-action.is-primary{background:linear-gradient(160deg,#8f1d38,var(--wine) 55%,#5c091f);border-color:#c39a58;color:#fff5df;box-shadow:0 10px 24px rgba(91,8,29,.35),inset 0 1px 0 rgba(255,226,178,.28)}
  .lgv2-home-action.is-auto{position:relative;overflow:hidden;isolation:isolate}
  .lgv2-home-action.is-auto::after{content:"";position:absolute;z-index:-1;inset:-80% auto -80% -28%;width:24%;transform:skewX(-20deg);background:linear-gradient(90deg,transparent,rgba(255,236,190,.75),transparent);animation:lgv2-auto-home-shine 6.5s ease-in-out infinite}
  @keyframes lgv2-auto-home-shine{0%,74%{left:-26%;opacity:0}80%{opacity:.7}96%,100%{left:120%;opacity:0}}
  /* Médaillon rond : disque grenat, double filet or. */
  .lgv2-home-action__icon,.lgv2-learn__sigil,.lgv2-resume__sigil{width:50px;height:50px;flex:none;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 34% 30%,#a52a47,#5b0c22 74%);border:2px solid #caa15f;box-shadow:inset 0 0 0 2px rgba(43,7,17,.55),0 3px 8px rgba(70,20,20,.3);color:#efd6a0}
  .lgv2-home-action__icon svg,.lgv2-learn__sigil svg{width:22px;height:22px;fill:currentColor}
  .lgv2-home-action b,.lgv2-learn__copy b{display:block;font:700 clamp(13.76px,4.3vw,16.8px)/1.05 var(--serif);letter-spacing:.045em;text-transform:uppercase}
  .lgv2-home-action small,.lgv2-learn__copy small{display:block;margin-top:3px;font:500 10.24px/1.15 var(--serif);opacity:.85}
  .lgv2-home-action>svg,.lgv2-learn>svg{width:15px;height:15px;color:#a67a3f;fill:currentColor}
  .lgv2-home-action.is-primary>svg{color:#f0d089}

  /* « Apprendre à jouer » : même carte ivoire que les autres, dans la pile. */
  .lgv2-learn{position:static;width:100%;min-height:74px;border:1px solid #d9bd90;border-radius:20px;background:linear-gradient(180deg,#fdf7ea,#f6ebd6);color:#4b2c22;display:grid;grid-template-columns:52px minmax(0,1fr) 14px 16px;align-items:center;gap:12px;padding:10px 14px;text-align:left;box-shadow:0 6px 16px rgba(91,44,20,.10),inset 0 0 0 1px rgba(255,255,255,.65);cursor:pointer;overflow:hidden;isolation:isolate;transition:transform .16s ease}
  .lgv2-learn.has-resume{margin-bottom:0}
  .lgv2-learn::before{content:"";position:absolute;z-index:-1;inset:-80% auto -80% -28%;width:25%;transform:skewX(-20deg);background:linear-gradient(90deg,transparent,rgba(255,236,190,.7),transparent);animation:lgv2-learn-shine 7s ease-in-out infinite}
  .lgv2-learn__copy{min-width:0}
  .lgv2-learn__spark{color:#b98a3d;font-size:12.8px;animation:lgv2-learn-spark 2.6s ease-in-out infinite}
  .lgv2-learn:active{transform:scale(.985)}

  /* Carte de reprise : grenat, pastille or « Rejoindre ». */
  .lgv2-resume{position:static;width:100%;margin-top:10px;min-height:66px;border:1px solid #c39a58;border-radius:18px;background:linear-gradient(160deg,#7e1730,#5c091f);color:#fff2d8;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:11px;padding:9px 12px;box-shadow:0 10px 24px rgba(91,8,29,.32),inset 0 1px 0 rgba(255,226,178,.24);cursor:pointer;text-align:left}
  .lgv2-resume__sigil{width:42px;height:42px}
  .lgv2-resume__sigil svg{width:19px;height:19px;fill:currentColor}
  .lgv2-resume__copy{min-width:0}
  .lgv2-resume__copy b{display:block;font:700 12.48px/1.05 var(--serif);letter-spacing:.05em;text-transform:uppercase}
  .lgv2-resume__copy small{display:block;margin-top:2px;font-size:9.6px;color:#f0d089}
  .lgv2-resume__cta{flex:none;padding:9px 15px;border-radius:999px;background:linear-gradient(180deg,#efd9a6,#c5935b);border:1px solid #8a5f2c;color:#3f1523;font:800 9.28px/1 var(--serif);letter-spacing:.12em;text-transform:uppercase;box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 3px 8px rgba(70,30,10,.3)}
  .lgv2-home.is-opening-guides .lgv2-home__art{transform:scale(1.035);filter:saturate(.78) brightness(.88);transition:transform .34s ease,filter .34s ease}
  .lgv2-home.is-opening-guides .lgv2-home__content{opacity:.16;transform:translateY(8px);transition:opacity .28s ease,transform .32s ease}
  @keyframes lgv2-learn-shine{0%,78%{left:-28%;opacity:0}82%{opacity:.8}98%,100%{left:125%;opacity:0}}
  @keyframes lgv2-learn-spark{0%,100%{transform:scale(.78) rotate(0);opacity:.45}50%{transform:scale(1.15) rotate(22deg);opacity:1}}
  @media(max-height:740px){.lgv2-home{grid-template-rows:minmax(170px,33dvh) minmax(0,1fr)}.lgv2-home-action,.lgv2-learn{min-height:62px}.lgv2-home__actions{gap:7px}.lgv2-resume{min-height:56px;margin-top:7px}}
  @media(prefers-reduced-motion:reduce){.lgv2-learn::before,.lgv2-learn__spark,.lgv2-home-action.is-auto::after{animation:none}.lgv2-home.is-opening-guides .lgv2-home__art,.lgv2-home.is-opening-guides .lgv2-home__content{transition:none}}
}

@layer entry {
  .lgv2-entry{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);padding:calc(8px + env(safe-area-inset-top)) 14px calc(8px + env(safe-area-inset-bottom));background:linear-gradient(rgba(251,242,228,.9),rgba(251,242,228,.91)),url('../images/village-hero.webp') center bottom/auto 70% no-repeat,linear-gradient(#f9efdf,#f6e5ce);border-inline:4px solid var(--wine)}
  .lgv2-entry::before{content:"";position:absolute;inset:6px;border:1.4px solid rgba(166,122,63,.72);border-radius:24px;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.5)}
  .lgv2-entry__topbar{position:relative;z-index:3;display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:7px;min-height:64px;padding:0 2px}
  .lgv2-entry__back{width:42px;height:42px;border-radius:50%;border:1.4px solid #c6a367;background:rgba(255,249,239,.95);display:grid;place-items:center;color:#55453b;box-shadow:0 4px 10px rgba(82,49,31,.09);cursor:pointer}
  .lgv2-entry__back svg{width:21px;height:21px}
  .lgv2-entry__heading{min-width:0;text-align:center;display:grid;gap:2px}
  .lgv2-entry__heading .lgv2-orn{width:96px;margin-bottom:1px}
  .lgv2-entry__heading h1{color:var(--wine);font:650 clamp(23.2px,6.3vw,32px)/.98 var(--serif);letter-spacing:.01em;white-space:nowrap}
  .lgv2-entry.is-join .lgv2-entry__heading h1{font-size:clamp(21.12px,5.7vw,29.12px)}
  .lgv2-entry__heading p{color:#806548;font:500 clamp(12.64px,3.5vw,15.68px)/1 var(--serif)}
  .lgv2-entry__balance{width:42px;height:42px}
  .lgv2-entry__form{position:relative;z-index:2;min-height:0;width:min(100%,500px);margin-inline:auto;padding:3px 8px 2px;display:grid;align-content:space-between;gap:clamp(5px,1.05dvh,9px)}
  .lgv2-entry-field{display:grid;gap:5px}
  .lgv2-entry-field>span,.lgv2-entry-field>legend{color:#4f211f;font:600 clamp(13.44px,3.8vw,16px)/1 var(--serif)}
  .lgv2-entry.is-join .lgv2-entry-field>span,.lgv2-entry.is-join .lgv2-entry-field>legend{text-align:center;color:var(--wine);font-size:clamp(13.44px,3.9vw,16px);letter-spacing:.02em}
  .lgv2-text-input{height:44px;border:1px solid #caa56e;border-radius:12px;background:rgba(255,250,242,.95);display:flex;align-items:center;padding:0 11px;gap:8px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.45),0 3px 7px rgba(71,44,28,.05)}
  .lgv2-text-input svg{color:#9e825d;width:18px}.lgv2-text-input input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:var(--ink);font:500 14.88px/1 var(--serif)}.lgv2-text-input input::placeholder{color:#a79b92;font-family:var(--sans);font-weight:400}
  .lgv2-dob-row{display:grid;grid-template-columns:1fr 15px 1fr 15px 1.14fr;align-items:center;gap:5px}
  .lgv2-dob-row input{height:44px;min-width:0;border:1px solid #caa56e;border-radius:11px;background:rgba(255,250,242,.95);text-align:center;outline:0;color:var(--ink);font:500 14.88px/1 var(--serif);box-shadow:inset 0 0 0 2px rgba(255,255,255,.45),0 3px 7px rgba(71,44,28,.05);font-variant-numeric:tabular-nums}
  .lgv2-dob-row input::placeholder{color:#aa9e92;font-family:var(--sans)}.lgv2-dob-row b{text-align:center;font:500 18.4px/1 var(--serif);color:#6b574a}
  .lgv2-genders{display:flex;justify-content:center;gap:24px}.lgv2-gender{position:relative;width:68px;aspect-ratio:1;border:0;border-radius:50%;padding:0;background:transparent;cursor:pointer;transition:transform .15s ease,filter .15s ease}.lgv2-gender img{width:100%;height:100%;border-radius:50%;object-fit:cover;filter:saturate(.9)}
  .lgv2-gender i{position:absolute;right:-1px;bottom:4px;width:19px;height:19px;border-radius:50%;display:grid;place-items:center;background:var(--wine);border:2px solid #fff6e6;color:white;opacity:0;transform:scale(.7);transition:.15s}.lgv2-gender i svg{width:10px;height:10px}.lgv2-gender.is-selected{transform:scale(1.04);filter:drop-shadow(0 4px 7px rgba(91,18,31,.17))}.lgv2-gender.is-selected i{opacity:1;transform:scale(1)}
  .lgv2-mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.lgv2-mode-card{min-height:91px;padding:7px 6px;border:1px solid #cfad78;border-radius:13px;background:rgba(255,249,240,.93);display:grid;grid-template-columns:34px 1fr;grid-template-rows:auto auto;column-gap:7px;align-items:center;text-align:left;box-shadow:0 4px 8px rgba(73,47,30,.05);cursor:pointer;transition:.15s}
  .lgv2-mode-card>span{grid-row:1/3;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--wine);color:var(--gold);border:1.5px solid #bf9456}.lgv2-mode-card>span svg{width:18px;height:18px}.lgv2-mode-card b{font:650 12.64px/1.05 var(--serif);color:#4d2e2a}.lgv2-mode-card small{font:400 9.12px/1.2 var(--serif);color:#6f5f55}.lgv2-mode-card.is-selected{border-color:var(--wine);box-shadow:0 0 0 2px rgba(124,16,39,.12),0 4px 8px rgba(73,47,30,.06)}
  .lgv2-code-cells{display:grid;grid-template-columns:repeat(6,1fr);gap:5px}.lgv2-code-cells input{min-width:0;height:45px;border:1px solid #c9a66e;border-radius:10px;background:rgba(255,250,242,.95);text-align:center;outline:0;font:600 17.6px/1 var(--serif);color:var(--wine);box-shadow:inset 0 0 0 2px rgba(255,255,255,.44),0 3px 7px rgba(71,44,28,.05)}
  .lgv2-code-cells input:placeholder-shown{background-image:radial-gradient(circle at center,#d5ba87 0 1.7px,transparent 2px),linear-gradient(45deg,transparent 46%,#d5ba87 47% 53%,transparent 54%),linear-gradient(-45deg,transparent 46%,#d5ba87 47% 53%,transparent 54%);background-size:15px 15px;background-position:center;background-repeat:no-repeat}
  .lgv2-consent{display:grid;grid-template-columns:22px 1fr;align-items:center;gap:8px;cursor:pointer;color:#4f3b31;font:500 10.56px/1.25 var(--serif)}.lgv2-consent input{position:absolute;opacity:0;pointer-events:none}.lgv2-consent i{width:21px;height:21px;border:1.5px solid #a47b47;border-radius:4px;background:rgba(255,250,242,.9);position:relative}.lgv2-consent input:checked+i{background:var(--wine);border-color:var(--wine)}.lgv2-consent input:checked+i::after{content:"";position:absolute;left:6px;top:2px;width:6px;height:11px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(42deg)}.lgv2-consent a{color:var(--wine);text-underline-offset:2px}
  .lgv2-entry-submit{min-height:51px;border:1.4px solid #c79d58;border-radius:25px;background:linear-gradient(145deg,var(--wine),#940f2a 62%,#6a081f);color:#fff3dc;font:600 clamp(15.68px,4.4vw,19.52px)/1 var(--serif);padding:0 13px;box-shadow:0 7px 16px rgba(89,9,29,.21),inset 0 1px rgba(255,255,255,.15);cursor:pointer;position:relative}.lgv2-entry-submit::before,.lgv2-entry-submit::after{content:"◆";position:absolute;top:50%;transform:translateY(-50%);color:#d6ad69;font-size:12px}.lgv2-entry-submit::before{left:-7px}.lgv2-entry-submit::after{right:-7px}.lgv2-entry-bottom-orn{display:block;text-align:center;color:var(--gold);font-size:15px;line-height:1}
}

@layer dashboard {
  .lgv2-dashboard{height:100%;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:5px;padding:calc(6px + env(safe-area-inset-top)) 7px calc(6px + env(safe-area-inset-bottom));background:linear-gradient(rgba(250,244,234,.95),rgba(248,238,223,.95)),url('../images/village-hero.webp') center/cover no-repeat;border-inline:4px solid var(--wine)}
  .lgv2-room-header{width:100%;margin-inline:auto;display:grid;grid-template-columns:40px 40px minmax(112px,1fr) auto 58px;align-items:center;gap:6px;min-height:66px;padding:6px 7px;border:1px solid rgba(181,139,78,.62);border-radius:19px;background:rgba(255,251,244,.96);box-shadow:var(--soft-shadow)}
  .lgv2-room-back{width:38px;height:38px;border-radius:50%;border:1px solid #dac397;background:#fffaf0;display:grid;place-items:center;color:#655548;cursor:pointer}
  .lgv2-sound-toggle{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;
    border:1px solid rgba(124,16,39,.18);background:rgba(255,252,244,.86);color:#7c1027;
    cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;
    transition:transform .15s ease,background-color .2s ease}
  .lgv2-sound-toggle svg{width:19px;height:19px}
  .lgv2-sound-toggle:active{transform:scale(.92)}
  /* Pendant la partie : posé en haut à droite, au-dessus du cercle, jamais sur un visage. */
  .lgv2-sound-toggle.is-floating{position:absolute;z-index:30;top:calc(10px + env(safe-area-inset-top));right:12px;
    background:rgba(20,14,26,.55);border-color:rgba(226,196,132,.4);color:#e8cf9a;backdrop-filter:none}
  /* --- Panneau de réglages sonores ---------------------------------- */
  .lgv2-sound-panel-root{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:22px}
  .lgv2-sound-scrim{position:absolute;inset:0;background:rgba(8,6,12,.55)}
  .lgv2-sound-panel{position:relative;width:min(92vw,360px);border-radius:16px;padding:16px 18px 18px;
    background:linear-gradient(178deg,#fffdf6,#f7efdd);border:1px solid rgba(124,16,39,.16);
    box-shadow:0 22px 60px rgba(20,8,14,.4),0 0 0 1px rgba(226,196,132,.25);color:#4a3a30}
  .lgv2-sound-panel header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
  .lgv2-sound-panel header b{font:700 9.92px/1 var(--sans);letter-spacing:.22em;color:#7c1027}
  .lgv2-sound-panel header button{width:30px;height:30px;border:none;border-radius:50%;background:rgba(124,16,39,.08);
    color:#7c1027;font-size:13.6px;cursor:pointer;-webkit-tap-highlight-color:transparent}
  .lgv2-sound-row{display:flex;align-items:center;justify-content:space-between;gap:14px;
    min-height:48px;border-top:1px solid rgba(124,16,39,.08);font:500 13.12px/1.3 var(--sans)}
  .lgv2-sound-row small{color:#9b8874;font-size:10.88px}
  .lgv2-sound-row.is-volume input{flex:1;max-width:56%;accent-color:#7c1027;height:30px}
  .lgv2-switch{position:relative;width:50px;height:28px;flex:none;border-radius:999px;border:none;cursor:pointer;
    background:rgba(101,85,72,.28);transition:background-color .2s ease;-webkit-tap-highlight-color:transparent}
  .lgv2-switch i{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;
    box-shadow:0 2px 6px rgba(0,0,0,.25);transition:transform .2s cubic-bezier(.2,.8,.3,1)}
  .lgv2-switch.is-on{background:#7c1027}
  .lgv2-switch.is-on i{transform:translateX(22px)}
  .lgv2-sound-test{width:100%;min-height:46px;margin-top:12px;border-radius:11px;cursor:pointer;
    border:1px solid rgba(226,196,132,.75);background:linear-gradient(177deg,#8e1a33,#5d0d22);
    color:#fdeec9;font:700 9.28px/1 var(--sans);letter-spacing:.2em;text-indent:.2em;
    -webkit-tap-highlight-color:transparent}
  .lgv2-sound-test:active{transform:translateY(1px)}
  .lgv2-sound-status{margin:10px 0 0;text-align:center;font:500 10.88px/1.4 var(--sans);color:#8a7660}

  .lgv2-circle-screen:not(.is-night-mode) .lgv2-sound-toggle.is-floating{background:rgba(255,252,244,.8);border-color:rgba(124,16,39,.2);color:#7c1027}
  /* 7.0.6 — Réglages : le médaillon visible devient plus petit sans sacrifier
     la cible tactile de 44 px. L'abaissement demandé de 0,5 cm est exprimé
     comme 4,59 % de la largeur du plateau pour rester identique physiquement. */
  .lgv2-circle-screen{--lg-settings-drop:calc(min(100vw,460px) * .0459)}
  .lgv2-host-settings-btn,.lgv2-player-settings-btn{position:absolute;z-index:32;top:calc(10px + env(safe-area-inset-top) + var(--lg-settings-drop));width:44px;height:44px;border:0;border-radius:14px;background:transparent;color:#7c1027;display:grid;place-items:center;box-shadow:none;cursor:pointer;-webkit-tap-highlight-color:transparent;isolation:isolate}
  .lgv2-host-settings-btn{right:10px}.lgv2-player-settings-btn{left:10px}
  .lgv2-host-settings-btn::before,.lgv2-player-settings-btn::before{content:"";position:absolute;inset:5px;z-index:-1;border:1px solid rgba(190,145,80,.72);border-radius:11px;background:linear-gradient(145deg,rgba(255,252,244,.97),rgba(244,229,201,.94));box-shadow:0 5px 13px rgba(76,45,24,.12),inset 0 1px rgba(255,255,255,.86)}
  .lgv2-host-settings-btn svg,.lgv2-player-settings-btn svg{width:17px;height:17px;position:relative;z-index:1;fill:currentColor}
  .lgv2-host-settings-btn:active,.lgv2-player-settings-btn:active{transform:scale(.94)}
  .lgv2-host-settings-btn em{position:absolute;right:1px;top:1px;z-index:3;min-width:17px;height:17px;padding:0 4px;border-radius:999px;display:grid;place-items:center;background:#95152f;border:2px solid #fff6e7;color:#fff;font:800 8px/1 var(--sans);font-style:normal;box-shadow:0 2px 7px rgba(75,8,24,.22)}
  .lgv2-circle-screen.is-night-mode .lgv2-host-settings-btn,.lgv2-circle-screen.is-night-mode .lgv2-player-settings-btn{color:#efd494}
  .lgv2-circle-screen.is-night-mode .lgv2-host-settings-btn::before,.lgv2-circle-screen.is-night-mode .lgv2-player-settings-btn::before{border-color:rgba(226,196,132,.5);background:linear-gradient(145deg,rgba(55,31,39,.94),rgba(25,18,28,.94));box-shadow:0 6px 16px rgba(0,0,0,.24),inset 0 1px rgba(255,255,255,.08)}
  .lgv2-room-back svg{width:19px;height:19px}
  .lgv2-room-codeblock{min-width:0;display:grid;align-content:center;gap:2px}.lgv2-room-codeblock>small{font:700 8.48px/1 var(--serif);letter-spacing:.16em;color:#6b5846;white-space:nowrap}.lgv2-room-codeblock>span{display:flex;align-items:center;gap:5px}.lgv2-room-codeblock b{font:700 clamp(21.6px,6.2vw,28.8px)/1 var(--serif);letter-spacing:.045em;color:var(--wine);font-variant-numeric:tabular-nums}.lgv2-room-codeblock button{width:28px;height:28px;border-radius:50%;border:1px solid #d0ae76;background:#fffaf0;display:grid;place-items:center;color:#6e5b49;cursor:pointer}.lgv2-room-codeblock button svg{width:14px;height:14px}
  .lgv2-room-open{display:flex;align-items:center;gap:6px;border-left:1px solid #e2cfad;padding-left:7px;white-space:nowrap;color:#74685c;font-size:9.92px}.lgv2-room-open i{width:8px;height:8px;border-radius:50%;background:#51a753;box-shadow:0 0 0 3px rgba(81,167,83,.08)}
  .lgv2-room-count{width:56px;height:52px;border-radius:15px;background:linear-gradient(150deg,#7c1027,#9a1731);border:1px solid #c59659;display:grid;place-items:center;align-content:center;color:#fff0d1;gap:2px;box-shadow:0 5px 11px rgba(91,10,29,.17)}.lgv2-room-count b{font:700 16.48px/1 var(--serif)}.lgv2-room-count small{font-size:7.2px;letter-spacing:.07em}
  .lgv2-village-title{width:100%;display:grid;grid-template-columns:38px minmax(0,1fr) auto 36px;align-items:center;gap:6px;min-height:44px;padding:0 2px}.lgv2-village-title__icon{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#8b1029,#6e0b20);color:#e6c17e;border:1px solid #c79c5c;box-shadow:0 4px 9px rgba(92,11,30,.13)}.lgv2-village-title__icon svg{width:18px;height:18px}.lgv2-village-title h2{min-width:0;color:var(--bp-encre);font:700 clamp(15.04px,4.5vw,18.88px)/1 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lgv2-village-title__count{min-height:30px;padding:0 8px;border-radius:999px;border:1px solid #d1ae79;background:#fffaf1;color:#6e1826;display:flex;align-items:center;justify-content:center;font-size:8.96px;white-space:nowrap}.lgv2-add-bot{width:34px;height:34px;border-radius:50%;border:1px solid #d1ae79;background:#fffaf1;color:#6b5948;display:grid;place-items:center;cursor:pointer}.lgv2-add-bot svg{width:17px;height:17px}
  .lgv2-dashboard-body{width:100%;min-height:0;overflow:hidden;display:grid}
  .lgv2-participants-panel{width:100%;height:100%;min-height:0;padding:8px;border:1px solid rgba(187,145,87,.52);border-radius:19px;background:rgba(255,251,244,.86);display:grid;grid-template-rows:auto minmax(0,1fr);box-shadow:inset 0 1px rgba(255,255,255,.7)}.lgv2-participants-panel>header{padding:0 2px 6px}.lgv2-participants-panel h3{display:flex;align-items:center;gap:6px;color:var(--bp-encre);font:700 14.08px/1 var(--serif)}.lgv2-participants-panel h3 i{width:6px;height:6px;background:#d1ad70;transform:rotate(45deg);display:block}.lgv2-participants-panel p{margin-top:4px;color:#5f4c40;font-size:9.44px}
  /* 7.0.7 — gestion des bots dans le salon automatique : une seule barre compacte,
     cibles tactiles 44 px, sans transformer la liste des joueurs en panneau d'administration. */
  .lgv2-participants-panel.has-auto-bots{grid-template-rows:auto auto minmax(0,1fr)}
  .lgv2-auto-bot-control{min-height:52px;margin:0 0 7px;padding:4px 6px;border:1px solid rgba(181,137,76,.58);border-radius:15px;background:linear-gradient(145deg,#fff9ed,#f5e6cf);display:grid;grid-template-columns:48px minmax(0,1fr) 48px;align-items:center;gap:7px;box-shadow:inset 0 1px rgba(255,255,255,.8)}
  .lgv2-auto-bot-control>button{width:44px;height:44px;justify-self:center;border-radius:13px;border:1px solid #c89d61;background:#fffaf0;color:#741027;display:grid;grid-template-rows:20px 10px;place-items:center;align-content:center;cursor:pointer;box-shadow:0 3px 8px rgba(80,43,24,.08);-webkit-tap-highlight-color:transparent}
  .lgv2-auto-bot-control>button.is-add{background:linear-gradient(145deg,#781027,#96162f);border-color:#bb844a;color:#fff0d0;box-shadow:0 4px 10px rgba(104,13,35,.15)}
  .lgv2-auto-bot-control>button b{font:800 20px/.8 var(--sans)}.lgv2-auto-bot-control>button span{font:800 6.8px/1 var(--sans);letter-spacing:.12em}
  .lgv2-auto-bot-control>button:disabled{opacity:.34;box-shadow:none;cursor:not-allowed}.lgv2-auto-bot-control>button:not(:disabled):active{transform:scale(.95)}
  .lgv2-auto-bot-control__count{text-align:center;min-width:0}.lgv2-auto-bot-control__count small{display:block;color:#79572d;font:800 7.2px/1 var(--serif);letter-spacing:.13em}.lgv2-auto-bot-control__count b{display:block;margin-top:2px;color:#641126;font:800 18px/.95 var(--serif);font-variant-numeric:tabular-nums}.lgv2-auto-bot-control__count span{display:block;margin-top:2px;color:#776556;font-size:7.2px}
  .lgv2-member-list{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#d2ad73 transparent;display:grid;align-content:start;gap:5px;padding:0 1px 1px}.lgv2-member-list::-webkit-scrollbar{width:4px}.lgv2-member-list::-webkit-scrollbar-thumb{background:#d2ad73;border-radius:99px}
  .lgv2-member{position:relative;width:100%;display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:7px;min-height:50px;padding:4px 7px;border-radius:15px;border:1px solid #e2cea8;background:rgba(255,252,246,.96);box-shadow:0 2px 5px rgba(69,42,25,.025)}.lgv2-member__avatar{width:38px;height:38px;border-radius:50%;overflow:hidden;border:2px solid #c79b5a;background:#eee0c9;box-shadow:0 2px 5px rgba(88,47,27,.11)}.lgv2-member__avatar img{width:100%;height:100%;object-fit:cover}.lgv2-member__copy{min-width:0}.lgv2-member__copy b{display:block;color:#362b24;font:700 13.92px/1 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lgv2-member__copy small{display:block;margin-top:3px;color:#5f4c40;font-size:8.48px}.lgv2-narrator-badge{min-height:32px;padding:0 9px;border-radius:11px;border:1px solid #d7b884;background:#fff9ed;color:#705429;display:flex;align-items:center;gap:5px}.lgv2-narrator-badge svg{width:13px;height:13px}.lgv2-narrator-badge b{font:700 8.48px/1 var(--serif);letter-spacing:.04em}.lgv2-ready{min-height:28px;padding:0 10px;border-radius:10px;border:1px solid #b9ca92;background:#f0f6e5;color:#5c7745;display:flex;align-items:center;font-size:9.44px}.lgv2-remove-player{position:absolute;left:31px;top:1px;width:16px;height:16px;border-radius:50%;border:1px solid #fff8ed;background:var(--wine);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:0 2px 5px rgba(92,11,30,.17);z-index:2}.lgv2-remove-player svg{width:9px;height:9px}
  .lgv2-launch-slot{width:100%;display:grid;gap:1px}.lgv2-launch{min-height:56px;width:100%;border-radius:18px;border:1px solid #bd8a4d;background:linear-gradient(150deg,#710b20 0%,#92142e 58%,#69091d 100%);color:#fff4db;display:grid;grid-template-columns:39px 1fr 15px;align-items:center;gap:7px;padding:5px 10px;box-shadow:0 6px 13px rgba(92,10,29,.2),inset 0 1px rgba(255,255,255,.13);cursor:pointer}.lgv2-launch:disabled{background:linear-gradient(150deg,#4c343c 0%,#3b272e 100%);border-color:rgba(200,168,116,.42);color:#ddcfbf;box-shadow:none;cursor:not-allowed}.lgv2-launch:disabled span:nth-child(2) small{color:#c8b5a3}.lgv2-launch:disabled .lgv2-launch__mark{background:#3b272e;border-color:rgba(200,168,116,.4);color:#c8b5a3}.lgv2-launch:disabled>i{color:#c8b5a3}.lgv2-launch__mark{width:38px;height:38px;border-radius:50%;border:1px solid #d0a25e;background:#681120;color:#dcb36c;display:grid;place-items:center}.lgv2-launch__mark svg{width:20px;height:20px}.lgv2-launch span:nth-child(2){text-align:center}.lgv2-launch span:nth-child(2) b{display:block;font:700 clamp(13.12px,4vw,16.8px)/1 var(--serif)}.lgv2-launch span:nth-child(2) small{display:block;margin-top:3px;color:#eccd95;font-size:8.32px}.lgv2-launch>i{font-style:normal;color:#f2c976;font-size:17px}.lgv2-launch-reason{text-align:center;color:#63493a;font-size:7.68px;min-height:8px}
  .lgv2-player-wait{min-height:55px;border:1px solid #dbc69f;border-radius:17px;background:rgba(255,250,242,.93);display:flex;align-items:center;gap:9px;padding:7px 10px}.lgv2-player-wait>i{width:8px;height:8px;border-radius:50%;background:#d5a56c;animation:lgv2-pulse 1.2s infinite alternate}.lgv2-player-wait b{display:block;font:700 11.52px/1 var(--serif)}.lgv2-player-wait small{display:block;margin-top:3px;color:var(--muted);font-size:8.32px}@keyframes lgv2-pulse{to{opacity:.35}}
  .lgv2-bottom-nav{width:100%;height:56px;border:1px solid #b47e48;border-radius:17px;background:linear-gradient(145deg,#741024,#94142f);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:3px;box-shadow:0 7px 14px rgba(92,10,29,.18)}.lgv2-bottom-nav button{min-width:0;border:0;border-radius:13px;background:transparent;color:#efd2a1;display:grid;place-items:center;align-content:center;gap:1px;cursor:pointer}.lgv2-bottom-nav button svg{width:18px;height:18px}.lgv2-bottom-nav button span{font-size:7.04px;font-weight:700;white-space:nowrap}.lgv2-bottom-nav button.is-active{background:#fffaf1;color:#7b1028}
  .lgv2-dashboard.is-auto-room .lgv2-room-open.is-auto{color:#6d4b25}.lgv2-dashboard.is-auto-room .lgv2-room-open.is-auto i{background:#d2a34e;box-shadow:0 0 0 3px rgba(210,163,78,.11),0 0 11px rgba(210,163,78,.23);animation:lgv2-auto-dot 1.7s ease-in-out infinite alternate}
  .lgv2-dashboard.is-auto-room .lgv2-member.is-auto-host{border-color:#d8b77e;background:linear-gradient(145deg,#fffaf0,#f5e7d1)}.lgv2-dashboard.is-auto-room .lgv2-member.is-auto-host .lgv2-member__avatar{border-color:#b88c4f;box-shadow:0 0 0 3px rgba(193,145,77,.08),0 3px 8px rgba(88,47,27,.12)}.lgv2-narrator-badge.is-auto{border-color:#caa25f;background:linear-gradient(145deg,#7a1129,#951832);color:#f3d18e;box-shadow:0 3px 8px rgba(104,15,37,.14)}
  .lgv2-ready.is-waiting{border-color:#ddc8a5;background:#f6efe4;color:#8b7b69}
  .lgv2-auto-ready{position:relative;min-height:76px;overflow:hidden;border:1px solid #cfaa70;border-radius:18px;background:linear-gradient(145deg,rgba(255,250,240,.98),rgba(247,235,214,.97));box-shadow:0 6px 14px rgba(91,50,26,.08),inset 0 1px rgba(255,255,255,.8);display:grid;grid-template-columns:minmax(0,1fr) minmax(124px,42%);align-items:center;gap:9px;padding:8px 9px}.lgv2-auto-ready::before{content:"";position:absolute;left:-45px;top:-65px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(208,166,92,.13),transparent 68%);pointer-events:none}.lgv2-auto-ready__copy{position:relative;z-index:1;min-width:0}.lgv2-auto-ready__copy>small{display:block;color:#7a5626;font:800 7.2px/1 var(--serif);letter-spacing:.13em}.lgv2-auto-ready__copy>b{display:block;margin-top:4px;color:#551b20;font:800 12.64px/1 var(--serif)}.lgv2-auto-ready__copy>p{margin-top:4px;color:#5f4c40;font-size:7.84px;line-height:1.25}.lgv2-auto-ready>button{position:relative;z-index:1;min-height:52px;border:1px solid #b67f45;border-radius:15px;background:linear-gradient(145deg,#761027,#971832 57%,#680a1e);color:#fff1d4;box-shadow:0 5px 12px rgba(102,12,34,.18),inset 0 1px rgba(255,255,255,.13);display:grid;place-items:center;align-content:center;gap:2px;padding:5px 8px;cursor:pointer}.lgv2-auto-ready>button>svg{width:16px;height:16px;color:#f1ca7c}.lgv2-auto-ready>button span{font:800 9.76px/1 var(--serif);letter-spacing:.04em}.lgv2-auto-ready>button small{font-size:6.88px;color:#e9c994}.lgv2-auto-ready.is-ready>button{background:linear-gradient(145deg,#52663f,#6e8053);border-color:#879664;color:#fff8e5}.lgv2-auto-ready.is-ready>button small{color:#dce2bd}
  .lgv2-auto-ready.is-countdown{grid-template-columns:60px minmax(0,1fr);background:linear-gradient(145deg,#651021,#8a152e 55%,#59101f);border-color:#c99a55;color:#fff1d2}.lgv2-auto-ready.is-countdown::before{left:auto;right:-28px;top:-64px;width:190px;height:190px;background:radial-gradient(circle,rgba(237,196,112,.2),transparent 67%);animation:lgv2-auto-orb-glow 1.6s ease-in-out infinite alternate}.lgv2-auto-ready.is-countdown>div:last-child{min-width:0}.lgv2-auto-ready.is-countdown>div:last-child>small{color:#e7be75;font:800 7.04px/1 var(--serif);letter-spacing:.14em}.lgv2-auto-ready.is-countdown>div:last-child>b{display:block;margin-top:4px;color:#fff4dc;font:800 13.44px/1 var(--serif)}.lgv2-auto-ready.is-countdown>div:last-child>p{margin-top:4px;color:#dfc7a7;font-size:7.84px;line-height:1.25}.lgv2-auto-ready__orb{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;align-content:center;border:1px solid #e0b66f;background:radial-gradient(circle,#921a35 0 47%,#671022 49% 100%);box-shadow:0 0 0 4px rgba(226,183,108,.08),0 0 18px rgba(226,183,108,.16);animation:lgv2-auto-countdown 1s ease-in-out infinite}.lgv2-auto-ready__orb b{font:800 21.12px/.9 var(--serif);font-variant-numeric:tabular-nums}.lgv2-auto-ready__orb small{margin-top:3px;color:#e6c27f;font-size:5.12px;letter-spacing:.11em}
  .lgv2-dashboard.is-auto-room .lgv2-bottom-nav{grid-template-columns:repeat(3,minmax(0,1fr))}.lgv2-dashboard.is-auto-room .lgv2-bottom-nav button span{font-size:7.68px}
  @keyframes lgv2-auto-dot{to{opacity:.48;transform:scale(.82)}}@keyframes lgv2-auto-orb-glow{to{opacity:.62;transform:scale(1.08)}}@keyframes lgv2-auto-countdown{50%{transform:scale(1.035);box-shadow:0 0 0 5px rgba(226,183,108,.11),0 0 24px rgba(226,183,108,.22)}}
}

@layer tabs {
  .lgv2-tab-panel{width:100%;height:100%;min-height:0;border:1px solid rgba(187,145,87,.52);border-radius:19px;background:rgba(255,251,244,.89);overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr)}
  .lgv2-tab-heading{min-height:54px;padding:7px 9px;display:grid;grid-template-columns:34px 1fr;align-items:center;gap:8px;border-bottom:1px solid #eadbc4}.lgv2-tab-heading>span{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--wine);color:var(--gold)}.lgv2-tab-heading>span svg{width:16px}.lgv2-tab-heading h3{font:700 14.72px/1 var(--serif);color:var(--bp-encre)}.lgv2-tab-heading p{margin-top:3px;color:var(--muted);font-size:8.96px}
  .lgv2-setting-list{padding:8px;display:grid;gap:6px;align-content:start;overflow-y:auto}.lgv2-setting-list article{min-height:56px;border:1px solid #e2cfad;border-radius:14px;background:#fffaf2;padding:7px;display:grid;grid-template-columns:34px 1fr;gap:8px;align-items:center}.lgv2-setting-list article>span{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#f4e5d2;color:var(--wine)}.lgv2-setting-list article>span svg{width:16px}.lgv2-setting-list b{display:block;font:700 12.32px/1 var(--serif)}.lgv2-setting-list small{display:block;margin-top:3px;color:var(--muted);font-size:8.8px}
  .lgv2-placeholder-tab{place-items:center;place-content:center;text-align:center;padding:22px;grid-template-rows:none}.lgv2-placeholder-icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--wine);color:var(--gold);box-shadow:var(--soft-shadow)}.lgv2-placeholder-icon svg{width:27px;height:27px}.lgv2-placeholder-tab h3{margin-top:10px;font:700 20px/1 var(--serif);color:var(--wine)}.lgv2-placeholder-tab p{margin-top:6px;max-width:280px;color:var(--muted);font-size:10.56px;line-height:1.4}
}

@layer roles {
  .lgv2-role-manager{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:5px;padding:calc(6px + env(safe-area-inset-top)) 7px calc(6px + env(safe-area-inset-bottom));background:linear-gradient(rgba(250,244,234,.97),rgba(248,238,223,.97)),url('../images/village-hero.webp') center/cover no-repeat;border-inline:4px solid var(--wine)}
  .lgv2-role-manager__bar{min-height:42px;display:grid;grid-template-columns:38px minmax(0,1fr) 38px;align-items:center}.lgv2-role-manager__bar button{width:36px;height:36px;border-radius:50%;border:1px solid #d6b77f;background:#fffaf0;color:#625245;display:grid;place-items:center;cursor:pointer}.lgv2-role-manager__bar button svg{width:18px;height:18px}.lgv2-role-manager__bar h1{text-align:center;color:var(--wine);font:700 20.48px/1 var(--serif);letter-spacing:.04em}
  .lgv2-role-wall{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px 1px 5px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;align-content:start;scrollbar-width:thin;scrollbar-color:#cda66a transparent}.lgv2-role-wall::-webkit-scrollbar{width:4px}.lgv2-role-wall::-webkit-scrollbar-thumb{background:#cda66a;border-radius:99px}
  .lgv2-role-tile{position:relative;min-width:0;aspect-ratio:2/3;border:1px solid #d8ba88;border-radius:10px;background:#fff8ed;overflow:hidden;cursor:pointer;box-shadow:0 3px 8px rgba(73,43,27,.08);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease;isolation:isolate}.lgv2-role-tile img{width:100%;height:100%;object-fit:cover;pointer-events:none}.lgv2-role-tile:active{transform:scale(.97)}.lgv2-role-tile.is-selected{border:2px solid var(--wine);box-shadow:0 0 0 2px rgba(200,161,100,.7),0 5px 12px rgba(91,10,29,.18)}
  .lgv2-role-count{position:absolute;right:4px;top:4px;z-index:3;min-width:22px;height:22px;padding:0 5px;border-radius:999px;background:linear-gradient(145deg,#9f1833,#6f0c22);border:2px solid #f5d390;color:#fff7e8;display:grid;place-items:center;font:800 11.04px/1 var(--sans);box-shadow:0 3px 7px rgba(85,8,26,.26);pointer-events:none}
  .lgv2-role-minus{position:absolute;left:4px;top:4px;z-index:4;width:22px;height:22px;border-radius:50%;border:2px solid #f5d390;background:#7b1028;color:#fff7e8;display:grid;place-items:center;font:800 16px/1 var(--sans);padding:0;box-shadow:0 3px 7px rgba(85,8,26,.24);cursor:pointer}
}

@layer circle {
  .lgv2-circle-screen{height:100%;display:grid;grid-template-rows:minmax(0,1fr);gap:0;padding:calc(2px + env(safe-area-inset-top)) 8px calc(2px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#fbf1df 0%,#f7e7cd 100%);border-inline:4px solid var(--wine);overflow:hidden}
  .lgv2-circle-stage{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);align-content:start;gap:8px;padding:4px 0 10px;overflow:hidden;overflow-x:clip}.lgv2-circle-stage::-webkit-scrollbar{display:none}
  .lgv2-player-ring{--ring:min(84vw,304px);--radius:calc(var(--ring) * .40);--avatar:clamp(46px,12vw,66px);position:relative;flex:none;width:var(--ring);height:var(--ring);margin:-2px auto 0;border-radius:50%;background:radial-gradient(circle,rgba(206,164,96,.13),transparent 55%),radial-gradient(circle at center,rgba(255,255,255,.82) 0 39%,transparent 40%);border:1px solid rgba(186,144,82,.22)}
  .lgv2-circle-player{position:absolute;left:50%;top:50%;width:var(--avatar);text-align:center;transform:translate(-50%,-50%) rotate(var(--angle)) translateY(calc(var(--radius) * -1)) rotate(calc(var(--angle) * -1));transform-origin:center;z-index:4}.lgv2-circle-player.is-selected{z-index:60}
  .lgv2-circle-avatar{position:relative;width:var(--avatar);height:var(--avatar);display:block;appearance:none;border:0;padding:0;border-radius:50%;background:transparent;cursor:pointer;filter:drop-shadow(0 4px 7px rgba(73,43,27,.13))}.lgv2-circle-player.is-selected .lgv2-circle-avatar{filter:drop-shadow(0 8px 16px rgba(73,43,27,.2))}.lgv2-circle-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}.lgv2-circle-avatar i{position:absolute;right:1px;bottom:3px;width:13px;height:13px;border-radius:50%;background:#45a660;border:2px solid #fff7e8;box-shadow:0 1px 3px rgba(0,0,0,.18)}.lgv2-circle-avatar i.is-offline{background:#b7b7b7}
  .lgv2-circle-player>b{display:block;margin-top:2px;max-width:86px;transform:translateX(calc((86px - var(--avatar))/ -2));width:86px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:700 clamp(9.92px,2.6vw,13.12px)/1 var(--serif);color:#3f2c27;text-shadow:0 1px #fff8ec}.lgv2-circle-player.is-selected>b{position:relative;z-index:61}
  .lgv2-circle-stage.is-crowded .lgv2-player-ring{--ring:min(94vw,350px);--radius:calc(var(--ring) * .43);--avatar:clamp(31px,8vw,36px)}.lgv2-circle-stage.is-crowded .lgv2-circle-player>b{margin-top:2px;width:46px;max-width:46px;transform:translateX(calc((46px - var(--avatar))/ -2));font:700 clamp(6.88px,1.75vw,8.8px)/1.02 var(--serif)}.lgv2-circle-stage.is-crowded .lgv2-circle-avatar i{width:10px;height:10px;right:-1px;bottom:1px;border-width:2px}.lgv2-circle-stage.is-very-crowded .lgv2-player-ring{--ring:min(95vw,354px);--radius:calc(var(--ring) * .435);--avatar:clamp(29px,7.5vw,33px)}.lgv2-circle-stage.is-very-crowded .lgv2-circle-player>b{width:40px;max-width:40px;transform:translateX(calc((40px - var(--avatar))/ -2));font-size:clamp(6.4px,1.6vw,7.84px);letter-spacing:-.015em}
  .lgv2-player-pop-floating{position:fixed;z-index:180;display:grid;justify-items:center;gap:4px;min-width:122px;max-width:150px;padding:10px 12px;border:1px solid #cfb07b;border-radius:15px;background:rgba(255,250,241,.99);box-shadow:0 16px 34px rgba(45,25,18,.24),0 0 0 1px rgba(255,255,255,.65);pointer-events:none;text-align:center;animation:lgv2-pop-in .16s ease-out}.lgv2-player-pop-floating b{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:700 10.88px/1 var(--serif);color:#4c332b}.lgv2-player-pop-floating small{font-size:8.8px;line-height:1.18;color:#7d6e60}@keyframes lgv2-pop-in{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
  .lgv2-fire{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:98px;height:98px;border-radius:50%;background:radial-gradient(circle at 50% 54%,rgba(255,244,158,.98) 0 8%,rgba(255,179,67,.95) 9% 18%,rgba(241,112,28,.94) 19% 28%,rgba(120,58,26,.94) 29% 37%,rgba(61,46,37,.92) 38% 44%,rgba(173,151,120,.55) 45% 52%,transparent 53%);box-shadow:0 0 28px rgba(238,141,41,.38),0 0 70px rgba(232,130,32,.22);z-index:2}.lgv2-fire::before,.lgv2-fire::after,.lgv2-fire>i{content:"";position:absolute;left:50%;bottom:42px;transform-origin:50% 100%;border-radius:65% 35% 65% 35%;background:linear-gradient(#ffd669,#f47c25 60%,#ad321d);filter:drop-shadow(0 0 8px rgba(255,163,48,.52))}.lgv2-fire::before{width:24px;height:56px;transform:translateX(-50%) rotate(45deg);animation:lgv2-flame-a .75s ease-in-out infinite alternate}.lgv2-fire::after{width:18px;height:43px;transform:translateX(-21px) rotate(35deg);animation:lgv2-flame-b .88s ease-in-out infinite alternate}.lgv2-fire>i:nth-child(1){width:17px;height:44px;transform:translateX(9px) rotate(50deg);animation:lgv2-flame-c .67s ease-in-out infinite alternate}.lgv2-fire>i:nth-child(2){width:13px;height:33px;transform:translateX(-7px) rotate(45deg);background:linear-gradient(#fff1a3,#ffb53c 62%,#ef6b24)}.lgv2-fire>i:nth-child(3){display:none}.lgv2-fire>b{position:absolute;left:50%;bottom:25px;width:54px;height:9px;background:#603720;border-radius:8px;transform:translateX(-50%) rotate(20deg);box-shadow:0 10px 0 #6e4325}.lgv2-fire>b::after{content:"";position:absolute;inset:0;background:#62391f;border-radius:8px;transform:rotate(-42deg)}
  @keyframes lgv2-flame-a{to{transform:translateX(-50%) rotate(38deg) scale(.92,1.07)}}@keyframes lgv2-flame-b{to{transform:translateX(-21px) rotate(42deg) scale(.95,1.1)}}@keyframes lgv2-flame-c{to{transform:translateX(9px) rotate(43deg) scale(1.05,.92)}}

  .lgv2-mayor-stage{position:relative;isolation:isolate;min-height:0;align-self:stretch;width:100%;max-width:460px;margin:0 auto;padding:8px 10px 5px;display:grid;align-content:start;justify-items:stretch;gap:8px;overflow:visible;border-radius:20px;color:#4b342d}.lgv2-mayor-stage::before{content:"";position:absolute;inset:0;z-index:-2;border:1px solid rgba(200,163,102,.38);border-radius:20px;background:linear-gradient(180deg,rgba(255,251,242,.88),rgba(252,240,220,.64));box-shadow:0 8px 22px rgba(85,50,29,.07)}
  .lgv2-mayor-stage.is-arriving{animation:lgv2-mayor-stage-in .55s cubic-bezier(.2,.75,.22,1) both}.lgv2-mayor-stage.is-arriving .lgv2-mayor-emblem{animation:lgv2-mayor-emblem-in .65s cubic-bezier(.18,.8,.22,1.16) .08s both}
  .lgv2-mayor-emblem{width:43px;height:43px;border-radius:50%;display:grid;place-items:center;flex:none;border:1px solid #d4b77f;background:radial-gradient(circle,#fff7e8 0 55%,#efe0c8 57%);color:var(--wine);box-shadow:0 4px 12px rgba(96,46,30,.1)}.lgv2-mayor-emblem svg{width:22px;height:22px;fill:currentColor}
  .lgv2-mayor-host-copy{display:flex;align-items:center;gap:10px;padding:1px 2px}.lgv2-mayor-host-copy>div{min-width:0}.lgv2-mayor-host-copy small,.lgv2-mayor-phase-head small,.lgv2-mayor-player-head small,.lgv2-mayor-stage.is-waiting small{display:block;font:800 8.32px/1 var(--serif);letter-spacing:.12em;color:#9a6b38}.lgv2-mayor-host-copy h2,.lgv2-mayor-phase-head h2,.lgv2-mayor-stage.is-waiting h2{margin:4px 0 0;font:700 15.36px/1.05 var(--serif);color:var(--wine)}.lgv2-mayor-host-copy p,.lgv2-mayor-stage.is-waiting p{margin:4px 0 0;color:#887567;font-size:8.64px;line-height:1.3}
  .lgv2-mayor-launch{position:relative;isolation:isolate;overflow:hidden;min-height:50px;width:100%;display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:8px;padding:0 11px;border:1px solid #bd894d;border-radius:16px;background:linear-gradient(135deg,#761128,#9b1735 48%,#701025);box-shadow:0 8px 18px rgba(110,16,40,.2),inset 0 1px 0 rgba(255,230,179,.18);color:#fff0d1;cursor:pointer;touch-action:manipulation}.lgv2-mayor-launch>span{width:31px;height:31px;border:1px solid rgba(244,206,135,.38);border-radius:10px;display:grid;place-items:center;background:rgba(255,244,220,.08);color:#f1c873}.lgv2-mayor-launch>span svg{width:18px;height:18px;fill:currentColor}.lgv2-mayor-launch>b{text-align:left;font:800 10.56px/1 var(--serif);letter-spacing:.055em}.lgv2-mayor-launch>em{font-style:normal;font-size:8px;font-weight:800;color:#e6c88e;white-space:nowrap}.lgv2-mayor-launch__shine{position:absolute;inset:-70% auto -70% -35%;z-index:-1;width:24%;transform:rotate(18deg);background:linear-gradient(90deg,transparent,rgba(255,241,193,.28),transparent);animation:lgv2-mayor-shine 2.8s ease-in-out infinite}.lgv2-mayor-launch:not(:disabled):active{transform:scale(.985)}.lgv2-mayor-launch:disabled{cursor:default;opacity:.72}
  .lgv2-mayor-reserved{min-height:35px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;color:#a58d73}.lgv2-mayor-reserved span{height:1px;background:linear-gradient(90deg,transparent,#d9bc8b)}.lgv2-mayor-reserved span:last-child{background:linear-gradient(90deg,#d9bc8b,transparent)}.lgv2-mayor-reserved small{font-size:7.68px;white-space:nowrap}
  .lgv2-mayor-phase-head{display:grid;grid-template-columns:43px minmax(0,1fr) auto;align-items:center;gap:9px}.lgv2-mayor-phase-head>div{min-width:0}.lgv2-mayor-phase-head>strong{display:flex;align-items:baseline;gap:2px;padding:6px 8px;border:1px solid #dbc18f;border-radius:11px;background:#fff8ec;color:var(--wine);font:800 14.4px/1 var(--serif)}.lgv2-mayor-phase-head>strong i{font-style:normal;color:#b69a72;font-size:9.28px}
  .lgv2-mayor-candidates{min-height:70px;display:flex;align-items:flex-start;justify-content:center;gap:8px;padding:3px 2px 1px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.lgv2-mayor-candidates::-webkit-scrollbar{display:none}.lgv2-mayor-candidate{width:54px;flex:0 0 54px;display:grid;justify-items:center;gap:3px;text-align:center}.lgv2-mayor-candidate.is-new{animation:lgv2-mayor-candidate-in .5s cubic-bezier(.16,.82,.26,1.12) both}.lgv2-mayor-candidate__avatar{position:relative;width:43px;height:43px;border-radius:50%;display:block;border:2px solid #d3a968;background:#f4e5ce;box-shadow:0 4px 10px rgba(79,42,27,.11)}.lgv2-mayor-candidate.is-me .lgv2-mayor-candidate__avatar{border-color:#8a1730;box-shadow:0 0 0 3px rgba(139,24,49,.08),0 4px 10px rgba(79,42,27,.11)}.lgv2-mayor-candidate__avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}.lgv2-mayor-candidate__avatar i{position:absolute;right:-4px;top:-4px;min-width:17px;height:17px;padding:0 3px;border-radius:999px;display:grid;place-items:center;background:var(--wine);border:2px solid #fff6e6;color:#ffe0a5;font:800 7.2px/1 var(--sans)}.lgv2-mayor-candidate>b{width:54px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:700 8.16px/1 var(--serif);color:#56362f}.lgv2-mayor-seat{width:43px;height:43px;flex:0 0 43px;margin-top:1px;border:1px dashed #d8c099;border-radius:50%;display:grid;place-items:center;background:rgba(255,248,236,.52);color:#b5a089}.lgv2-mayor-seat i{font-style:normal;font:700 8.32px/1 var(--serif)}
  .lgv2-mayor-status,.lgv2-mayor-notice{margin:0;text-align:center;font-size:8px;line-height:1.3;color:#f0e2ca;text-shadow:0 1px 3px rgba(0,0,0,.85)}.lgv2-mayor-notice.is-late{color:#8b2736;font-weight:750}
  .lgv2-mayor-stage.is-full::after{content:"";position:absolute;inset:auto 18% -20px;z-index:-1;height:48px;border-radius:50%;background:rgba(214,163,79,.14);filter:blur(14px)}
  .lgv2-mayor-stage.is-waiting{grid-template-columns:48px minmax(0,1fr);align-items:center;align-content:center;min-height:106px;padding-block:12px}.lgv2-mayor-wait-seal{width:45px;height:45px;border-radius:50%;display:grid;place-items:center;background:rgba(127,22,44,.08);color:var(--wine)}.lgv2-mayor-wait-seal svg{width:22px;height:22px;fill:currentColor}
  .lgv2-mayor-player-head{position:relative;z-index:2;display:grid;justify-items:center;text-align:center;gap:3px;padding-top:2px}.lgv2-mayor-player-head>span{width:34px;height:34px;margin-bottom:1px;border-radius:50%;display:grid;place-items:center;border:1px solid #d2aa69;background:linear-gradient(#fff8e9,#f0dcc0);color:var(--wine);box-shadow:0 0 0 5px rgba(203,158,91,.07)}.lgv2-mayor-player-head>span svg{width:18px;height:18px;fill:currentColor}.lgv2-mayor-player-head h2{margin:2px 0 0;font:800 16.96px/1 var(--serif);letter-spacing:.04em;color:var(--wine)}.lgv2-mayor-player-head p{margin:2px 0 0;font-size:8.96px;color:#857163}.lgv2-mayor-player-head p b{color:#684238}
  .lgv2-mayor-magic{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}.lgv2-mayor-magic::before{content:"";position:absolute;left:50%;top:27%;width:190px;height:90px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(217,168,80,.2),transparent 68%);filter:blur(3px);animation:lgv2-mayor-glow 2.2s ease-in-out infinite alternate}.lgv2-mayor-magic i{position:absolute;width:4px;height:4px;border-radius:50%;background:#d9a84f;box-shadow:0 0 7px rgba(205,145,58,.65);opacity:.18}.lgv2-mayor-magic i:nth-child(1){left:18%;top:22%;animation:lgv2-mayor-spark 2.7s ease-in-out infinite}.lgv2-mayor-magic i:nth-child(2){right:18%;top:35%;animation:lgv2-mayor-spark 3.1s ease-in-out .6s infinite}.lgv2-mayor-magic i:nth-child(3){left:50%;top:12%;animation:lgv2-mayor-spark 2.4s ease-in-out 1.1s infinite}
  .lgv2-mayor-candidate-btn{justify-self:center;min-width:230px;min-height:43px;padding:0 17px;border:1px solid #bd894d;border-radius:14px;display:flex;align-items:center;justify-content:center;gap:9px;background:linear-gradient(135deg,#7a112a,#9a1735 54%,#6c0d24);box-shadow:0 8px 17px rgba(112,17,42,.18),inset 0 1px 0 rgba(255,233,187,.17);color:#fff0d0;font:800 9.92px/1 var(--serif);letter-spacing:.05em;cursor:pointer;transition:transform .14s ease,opacity .18s ease,filter .18s ease}.lgv2-mayor-candidate-btn svg{width:17px;height:17px;fill:currentColor;color:#f1c873}.lgv2-mayor-candidate-btn:not(:disabled):active{transform:scale(.98)}.lgv2-mayor-candidate-btn:disabled{cursor:default;opacity:.48;filter:saturate(.55)}.lgv2-mayor-candidate-btn.is-done{opacity:.9;background:linear-gradient(135deg,#5f6e43,#758451);border-color:#aeb579;color:#fff5d8;filter:none}
  .lgv2-mayor-progress{justify-self:center;width:min(76%,280px);height:12px;position:relative;border-radius:999px;background:#eadbc4;box-shadow:inset 0 1px 3px rgba(80,46,28,.08);overflow:hidden}.lgv2-mayor-progress>span{position:absolute;inset:0 auto 0 0;width:var(--progress);border-radius:inherit;background:linear-gradient(90deg,#8c1730,#c7924d);transition:width .45s cubic-bezier(.2,.75,.25,1)}.lgv2-mayor-progress small{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:2px 8px;border-radius:999px;background:linear-gradient(160deg,#8f1d38,#5c091f);border:1px solid #caa15f;font-size:6.72px;font-weight:850;color:#fdf3dd;text-shadow:none}
  @keyframes lgv2-mayor-stage-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes lgv2-mayor-emblem-in{from{opacity:0;transform:scale(.72) rotate(-8deg)}to{opacity:1;transform:none}}@keyframes lgv2-mayor-candidate-in{from{opacity:0;transform:translateY(9px) scale(.84)}to{opacity:1;transform:none}}@keyframes lgv2-mayor-shine{0%,58%{transform:translateX(-20px) rotate(18deg);opacity:0}68%{opacity:1}92%,100%{transform:translateX(430px) rotate(18deg);opacity:0}}@keyframes lgv2-mayor-glow{to{transform:translate(-50%,-50%) scale(1.12);opacity:.62}}@keyframes lgv2-mayor-spark{0%,100%{opacity:.12;transform:translateY(5px) scale(.8)}50%{opacity:.75;transform:translateY(-6px) scale(1.15)}}
  @media (max-height:780px){.lgv2-player-ring{--ring:min(74vw,276px)}.lgv2-mayor-stage{gap:6px;padding-top:6px}.lgv2-mayor-candidates{min-height:62px}.lgv2-mayor-candidate__avatar{width:39px;height:39px}.lgv2-mayor-candidate{width:50px;flex-basis:50px}.lgv2-mayor-candidate>b{width:50px}.lgv2-mayor-launch{min-height:45px}.lgv2-mayor-stage.is-waiting{min-height:92px}}
  @media (max-width:390px){.lgv2-player-ring{--ring:min(84vw,292px)}.lgv2-player-pop-floating{min-width:112px;max-width:136px;padding:8px 9px}.lgv2-circle-stage.is-crowded .lgv2-player-ring{--ring:min(95vw,336px);--avatar:clamp(29px,7.4vw,34px)}.lgv2-circle-stage.is-crowded .lgv2-circle-player>b{width:43px;max-width:43px;font-size:7.04px}.lgv2-circle-stage.is-very-crowded .lgv2-circle-player>b{width:38px;max-width:38px;font-size:6.4px}.lgv2-mayor-stage{padding-inline:8px}.lgv2-mayor-player-head h2{font-size:15.36px}.lgv2-mayor-candidate-btn{min-width:210px}.lgv2-mayor-host-copy h2,.lgv2-mayor-phase-head h2{font-size:14.08px}}
}
@layer utilities {
  .lgv2-toast{position:fixed;left:50%;bottom:calc(12px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:1000;width:min(calc(100% - 20px),430px);padding:9px 12px;border-radius:13px;background:#2d2926;color:white;text-align:center;font-size:10.88px;font-weight:750;box-shadow:0 10px 24px rgba(0,0,0,.22)}.lgv2-toast.is-error{background:#7d2330}.lgv2-empty{text-align:center;color:var(--muted);padding:16px;font-size:10.88px}
}

@layer responsive {
  @media (max-width:390px){
    .lgv2-home__content{padding-inline:12px}.lgv2-resume{left:12px;right:12px}
    .lgv2-entry{padding-inline:10px}.lgv2-entry__topbar{grid-template-columns:40px minmax(0,1fr) 40px}.lgv2-entry__back,.lgv2-entry__balance{width:38px;height:38px}.lgv2-entry__form{padding-inline:5px}.lgv2-genders{gap:19px}.lgv2-gender{width:64px}.lgv2-mode-card{min-height:85px}.lgv2-mode-card small{font-size:8.48px}
    .lgv2-room-header{grid-template-columns:36px 36px minmax(96px,1fr) 52px;gap:5px}.lgv2-room-open{display:none}.lgv2-room-back{width:36px;height:36px}.lgv2-room-count{width:54px;height:49px}.lgv2-village-title h2{font-size:14.56px}.lgv2-village-title__count{padding-inline:6px;font-size:8.16px}.lgv2-bottom-nav button span{font-size:6.4px}.lgv2-member{grid-template-columns:38px minmax(0,1fr) auto}.lgv2-member__avatar{width:36px;height:36px}.lgv2-member__copy b{font-size:13.12px}.lgv2-narrator-badge b{display:none}.lgv2-narrator-badge{width:31px;padding:0;justify-content:center}
    .lgv2-role-wall{gap:4px}
  }
  @media (max-height:700px){
    .lgv2-home{grid-template-rows:minmax(180px,37dvh) minmax(0,1fr)}.lgv2-home__content{gap:5px}.lgv2-home h1{font-size:34.4px}.lgv2-home__actions{gap:6px;margin-top:4px}.lgv2-home-action{min-height:54px}.lgv2-home-action__icon{width:34px;height:34px}
    .lgv2-entry__topbar{min-height:55px}.lgv2-entry__heading h1{font-size:22.72px}.lgv2-entry.is-join .lgv2-entry__heading h1{font-size:20.48px}.lgv2-entry__heading p{font-size:12.16px}.lgv2-entry__form{gap:4px}.lgv2-text-input,.lgv2-dob-row input{height:40px}.lgv2-gender{width:58px}.lgv2-mode-card{min-height:76px}.lgv2-mode-card>span{width:30px;height:30px}.lgv2-mode-card>span svg{width:15px;height:15px}.lgv2-mode-card b{font-size:11.52px}.lgv2-mode-card small{font-size:8px}.lgv2-entry-submit{min-height:45px}.lgv2-code-cells input{height:40px}.lgv2-consent{font-size:9.76px}.lgv2-consent i{width:19px;height:19px}
    .lgv2-dashboard{gap:4px}.lgv2-room-header{min-height:60px}.lgv2-village-title{min-height:40px}.lgv2-member{min-height:45px}.lgv2-member__avatar{width:34px;height:34px}.lgv2-launch{min-height:50px}.lgv2-bottom-nav{height:51px}.lgv2-role-manager__bar{min-height:38px}.lgv2-role-manager .lgv2-bottom-nav{height:51px}
    .lgv2-auto-ready{min-height:68px;padding:6px 8px}.lgv2-auto-ready>button{min-height:46px}.lgv2-auto-ready__copy>p,.lgv2-auto-ready.is-countdown>div:last-child>p{font-size:7.36px}.lgv2-auto-ready__orb{width:48px;height:48px}.lgv2-auto-ready.is-countdown{grid-template-columns:54px minmax(0,1fr)}
  }
  @media (min-width:561px){
    .lgv2{background:linear-gradient(145deg,#5f0a1e,#2f0712)}.lgv2-screen{box-shadow:0 30px 90px rgba(0,0,0,.32)}
  }
  @media (prefers-reduced-motion:reduce){.lgv2 *{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
}

/* WordPress admin-bar compatibility without reintroducing page scrolling. */
body.admin-bar .lgv2{top:32px;height:calc(100dvh - 32px);max-height:calc(100dvh - 32px)}
@media (max-width:782px){body.admin-bar .lgv2{top:46px;height:calc(100dvh - 46px);max-height:calc(100dvh - 46px)}}
@media (max-height:620px){
  .lgv2-home{grid-template-rows:165px minmax(0,1fr)}.lgv2-home__content{padding-bottom:50px}.lgv2-home h1{font-size:30.4px}.lgv2-home p{font-size:12.16px}.lgv2-home-action{min-height:49px}.lgv2-resume{min-height:36px;bottom:6px}
  .lgv2-entry{padding-top:4px;padding-bottom:4px}.lgv2-entry__topbar{min-height:49px}.lgv2-entry__back{width:34px;height:34px}.lgv2-entry__heading .lgv2-orn{display:none}.lgv2-entry__heading h1{font-size:20px}.lgv2-entry.is-join .lgv2-entry__heading h1{font-size:18.4px}.lgv2-entry__heading p{font-size:11.2px}.lgv2-entry__form{gap:3px}.lgv2-entry-field{gap:3px}.lgv2-entry-field>span,.lgv2-entry-field>legend{font-size:12.16px}.lgv2-text-input,.lgv2-dob-row input{height:36px}.lgv2-gender{width:52px}.lgv2-mode-card{min-height:66px;padding:4px}.lgv2-mode-card b{font-size:10.56px}.lgv2-mode-card small{font-size:7.36px}.lgv2-consent{font-size:8.96px}.lgv2-entry-submit{min-height:40px}.lgv2-entry-bottom-orn{display:none}
}

@layer enhancements {
/* Role cards and game components */
.lgv2-role-wall{
  grid-template-columns:repeat(4,minmax(0,76px));
  justify-content:space-between;
  column-gap:4px;
  row-gap:6px;
  padding-inline:3px;
}
.lgv2-role-tile{
  width:100%;
  aspect-ratio:2/3;
  overflow:visible;
  border-radius:9px;
  background:#fff8ed;
}
.lgv2-role-add{
  display:block;
  width:100%;
  height:100%;
  padding:0;
  margin:0;
  border:0;
  border-radius:8px;
  overflow:hidden;
  background:#fff8ed;
  cursor:pointer;
  appearance:none;
}
.lgv2-role-add img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center;
  pointer-events:none;
}
.lgv2-role-tile:active{transform:none}
.lgv2-role-add:active{transform:scale(.975)}
.lgv2-role-tile.is-selected .lgv2-role-add{box-shadow:inset 0 0 0 2px var(--wine)}
.lgv2-role-count{
  right:-3px;
  top:-3px;
  min-width:22px;
  height:22px;
  z-index:8;
}
.lgv2-role-minus{
  left:-3px;
  top:auto;
  bottom:-3px;
  width:24px;
  height:24px;
  z-index:9;
  touch-action:manipulation;
}
@media (min-width:391px){
  .lgv2-role-wall{grid-template-columns:repeat(4,minmax(0,82px));justify-content:space-around}
}
@media (max-width:350px){
  .lgv2-role-wall{grid-template-columns:repeat(4,minmax(0,70px));gap:3px;padding-inline:1px}
}


/* Réglages de la partie — calqués sur la maquette 50662 : en-tête à
   médaillon loup, groupes ivoire à double filet et titre à filets or,
   médaillons ronds grenat, bascules et pas-à-pas ivoire/grenat, grand
   appel « COMMENCER LA PARTIE ». Dimensionné pour tenir SANS défilement
   sur un écran de 800 px de haut et plus. */
.lgv2-settings-panel{grid-template-rows:auto minmax(0,1fr)}
.lgv2-settings-hero{position:relative;display:grid;justify-items:center;gap:1px;padding:6px 8px 7px}
.lgv2-settings-hero__seal{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 34% 30%,#a52a47,#5b0c22 74%);border:2px solid #caa15f;box-shadow:inset 0 0 0 2px rgba(43,7,17,.55),0 3px 8px rgba(70,20,20,.28);color:#efd6a0}
.lgv2-settings-hero__seal svg{width:21px;height:21px;fill:currentColor}
.lgv2-settings-hero h2{font:800 20.48px/1 var(--serif);letter-spacing:.06em;color:var(--wine)}
.lgv2-settings-hero>small{font:700 8.8px/1 var(--serif);letter-spacing:.3em;color:#6b5643}
.lgv2-settings-save{position:absolute;top:6px;right:6px;display:flex;align-items:center;gap:5px;padding:4px 8px;border:1px solid #e1cda9;border-radius:999px;background:#fff9ef;color:#4d6b3f;font-size:7.04px;font-weight:700}
.lgv2-settings-save i{width:6px;height:6px;border-radius:50%;background:#58a65b;box-shadow:0 0 0 2px rgba(88,166,91,.14)}
.lgv2-settings-scroll{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px 8px calc(8px + env(safe-area-inset-bottom));display:grid;gap:8px;align-content:start;scrollbar-width:thin;scrollbar-color:#c69d62 transparent}
.lgv2-settings-group{display:grid;gap:6px;padding:8px;border:1px solid #d9bd90;border-radius:18px;background:linear-gradient(180deg,#fdf7ea,#f7edd9);box-shadow:0 5px 16px rgba(78,45,28,.08),inset 0 0 0 1px rgba(255,255,255,.65)}
.lgv2-settings-group__title{display:flex;align-items:center;justify-content:center;gap:10px;padding:1px 2px 2px}
.lgv2-settings-group__title b{font:800 10.88px/1 var(--serif);letter-spacing:.09em;text-transform:uppercase;color:#6f1226;white-space:nowrap}
.lgv2-settings-group__title::before,.lgv2-settings-group__title::after{content:"";height:1px;flex:1;max-width:56px;background:linear-gradient(90deg,transparent,#c8a164)}
.lgv2-settings-group__title::after{background:linear-gradient(90deg,#c8a164,transparent)}
.lgv2-setting-card{min-height:50px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:6px 8px;border:0;border-top:1px solid rgba(200,161,100,.35);border-radius:0;background:none}
.lgv2-settings-group>.lgv2-setting-card:first-of-type{border-top:0}
.lgv2-setting-toggle-card,.lgv2-setting-mode-card{grid-template-columns:44px minmax(0,1fr) auto}
.lgv2-setting-card__icon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 34% 30%,#a52a47,#5b0c22 74%);border:2px solid #caa15f;box-shadow:inset 0 0 0 2px rgba(43,7,17,.55),0 2px 6px rgba(70,20,20,.25);color:#efd6a0}
.lgv2-setting-card__icon svg{width:18px;height:18px;fill:currentColor}
.lgv2-setting-card__copy{min-width:0}
.lgv2-setting-card__copy b{display:block;font:700 11.52px/1.05 var(--serif);letter-spacing:.05em;text-transform:uppercase;color:#40251c}
.lgv2-setting-card__copy small{display:block;margin-top:2px;color:#63493a;font-size:8.48px;line-height:1.2}
.lgv2-game-toggle{width:52px;height:28px;border:1px solid #b8894e;border-radius:999px;background:#e9dfcf;padding:2px;cursor:pointer;transition:.18s ease;box-shadow:inset 0 1px 3px rgba(80,50,25,.18)}
.lgv2-game-toggle i{display:block;width:22px;height:22px;border-radius:50%;background:#fffaf1;box-shadow:0 2px 5px rgba(61,39,27,.25);transition:.18s ease}
.lgv2-game-toggle.is-on{background:linear-gradient(160deg,#8f1d38,#5c091f);border-color:#caa15f}
.lgv2-game-toggle.is-on i{transform:translateX(24px);background:#fdf3dd}
.lgv2-setting-mode-card{gap:8px}
.lgv2-segmented{display:grid;grid-template-columns:1fr 1fr;padding:3px;border:1px solid #c8a164;border-radius:12px;background:#f2e8d8;box-shadow:inset 0 1px 3px rgba(80,50,25,.14)}
.lgv2-segmented button{min-width:58px;height:32px;border:0;border-radius:9px;background:transparent;color:#6b5340;font:800 9.28px/1 var(--serif);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}
.lgv2-segmented button.is-active{background:linear-gradient(160deg,#8f1d38,#5c091f);color:#fdf3dd;box-shadow:0 3px 8px rgba(111,21,41,.3),inset 0 1px 0 rgba(255,226,178,.3)}
.lgv2-settings-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}
.lgv2-setting-step-card.is-column{grid-template-columns:minmax(0,1fr);justify-items:center;text-align:center;gap:4px;min-height:0;padding:4px 2px;border-top:0;border-left:1px solid rgba(200,161,100,.35);border-radius:0}
.lgv2-settings-grid>.lgv2-setting-step-card.is-column:first-child{border-left:0}
.lgv2-setting-step-card.is-column .lgv2-setting-card__icon{width:38px;height:38px}
.lgv2-setting-step-card.is-column .lgv2-setting-card__copy b{font-size:9.6px;letter-spacing:.06em}
.lgv2-setting-step-card.is-column .lgv2-setting-card__copy small{font-size:7.04px;line-height:1.18}
.lgv2-setting-step-card.has-icon:not(.is-column){grid-template-columns:44px minmax(0,1fr) auto}
.lgv2-game-stepper{display:grid;grid-template-columns:auto minmax(30px,auto) auto auto;align-items:center;justify-content:end;gap:3px}
.lgv2-game-stepper button{width:30px;height:30px;border:1px solid #d3b783;border-radius:10px;background:linear-gradient(180deg,#fbf2df,#efe0c4);color:#7c142d;font-size:16.8px;line-height:1;font-weight:800;cursor:pointer;box-shadow:0 2px 5px rgba(80,50,25,.14),inset 0 1px 0 rgba(255,255,255,.7)}
.lgv2-game-stepper button:active{transform:translateY(1px);filter:brightness(.94)}
.lgv2-game-stepper strong{min-width:30px;text-align:center;font:800 13.12px/1 var(--serif);color:#40251c}
.lgv2-game-stepper em{font-style:normal;font-size:7.36px;color:#8a6c4d}
.lgv2-game-stepper.is-fixed{grid-template-columns:auto auto;min-height:30px;padding:0 10px;border:1px solid #d3b783;border-radius:10px;background:linear-gradient(180deg,#fbf2df,#efe0c4);box-shadow:inset 0 1px rgba(255,255,255,.7)}
.lgv2-game-stepper.is-fixed strong{min-width:24px;color:#7c142d}
.lgv2-setting-step-card>.lgv2-game-stepper{justify-self:end}
.lgv2-setting-step-card.is-column>.lgv2-game-stepper{justify-self:center;grid-template-columns:auto minmax(26px,auto) auto auto;gap:2px}
.lgv2-setting-step-card.is-column .lgv2-game-stepper button{width:26px;height:26px}
/* Le grand appel, même famille que le système de boutons du plateau. */
.lgv2-settings-launch{width:100%;min-height:58px;border:1px solid #caa15f;border-radius:16px;background:linear-gradient(160deg,#8f1d38,#75132c 55%,#570d20);color:#fdf3dd;display:grid;justify-items:center;align-content:center;gap:2px;padding:8px 14px;cursor:pointer;box-shadow:0 12px 26px rgba(91,8,29,.35),inset 0 1px 0 rgba(255,226,178,.28);transition:transform .15s ease,filter .18s ease}
.lgv2-settings-launch b{font:800 clamp(14.4px,4.6vw,17.92px)/1 var(--serif);letter-spacing:.07em;text-transform:uppercase;text-shadow:0 1px 2px rgba(0,0,0,.5)}
.lgv2-settings-launch small{font-size:8.32px;color:#f0d089}
.lgv2-settings-launch:not(:disabled):active{transform:translateY(1px) scale(.99);filter:brightness(.93)}
.lgv2-settings-launch:disabled{background:linear-gradient(160deg,#4c343c,#3b272e);border-color:rgba(200,168,116,.42);color:#ddcfbf;box-shadow:none;cursor:default}
.lgv2-settings-launch:disabled small{color:#c8b5a3}
.lgv2-settings-launch:focus-visible{outline:3px solid #ffd98c;outline-offset:2px}
@media(max-height:840px){
  .lgv2-settings-hero{padding-block:2px 3px;gap:0}
  .lgv2-settings-hero__seal{width:32px;height:32px;border-width:1px}
  .lgv2-settings-hero__seal svg{width:16px;height:16px}
  .lgv2-settings-hero h2{font-size:16px}
  .lgv2-settings-hero>small{font-size:7.68px}
  .lgv2-setting-card{min-height:40px;padding-block:3px;gap:8px}
  .lgv2-setting-card__icon{width:32px;height:32px;border-width:1px}
  .lgv2-setting-card__icon svg{width:15px;height:15px}
  .lgv2-setting-card__copy b{font-size:10.24px}
  .lgv2-setting-card__copy small{font-size:7.68px}
  .lgv2-setting-step-card.is-column .lgv2-setting-card__icon{width:30px;height:30px}
  .lgv2-setting-step-card.is-column .lgv2-setting-card__copy small{display:none}
  .lgv2-game-toggle{width:46px;height:25px}
  .lgv2-game-toggle i{width:19px;height:19px}
  .lgv2-game-toggle.is-on i{transform:translateX(21px)}
  .lgv2-game-stepper button{width:26px;height:26px}
  .lgv2-segmented button{height:28px;min-width:52px}
  .lgv2-settings-scroll{gap:5px;padding-bottom:calc(4px + env(safe-area-inset-bottom))}
  .lgv2-settings-group{padding:5px;gap:3px}
  .lgv2-settings-group__title b{font-size:9.6px}
  .lgv2-settings-launch{min-height:46px}
  .lgv2-settings-launch b{font-size:13.76px}
}
/* L'onglet Réglages porte son propre en-tête et son propre appel :
   le titre contextuel et la barre de pied du salon disparaissent ici,
   c'est ce qui permet de tenir SANS défilement. */
.lgv2-dashboard.is-tab-settings{grid-template-rows:auto minmax(0,1fr) auto;gap:4px;padding-top:calc(2px + env(safe-area-inset-top));padding-bottom:calc(2px + env(safe-area-inset-bottom))}
.lgv2-dashboard.is-tab-settings .lgv2-room-header{grid-row:1}
.lgv2-dashboard.is-tab-settings .lgv2-dashboard-body{grid-row:2;min-height:0}
.lgv2-dashboard.is-tab-settings .lgv2-bottom-nav{grid-row:3;margin:0}
.lgv2-dashboard.is-tab-settings .lgv2-settings-scroll{padding-bottom:6px}
.lgv2-dashboard.is-tab-settings .lgv2-village-title{display:none}
.lgv2-dashboard.is-tab-settings .lgv2-auto-ready,
.lgv2-dashboard.is-tab-settings .lgv2-launch-slot,
.lgv2-dashboard.is-tab-settings .lgv2-player-wait{display:none}
/* Narrateur d'un salon automatique : la nav garde ses 5 onglets sur UNE
   rangée (la règle 3 colonnes ne vaut que pour les joueurs, qui n'ont que
   3 onglets) — corrige le retour à la ligne MESSAGES/APPEL. */
.lgv2-dashboard.is-auto-room.is-host .lgv2-bottom-nav{grid-template-columns:repeat(5,minmax(0,1fr))}

@media(max-width:390px){
  .lgv2-settings-scroll{padding-inline:6px}
  .lgv2-settings-grid{grid-template-columns:1fr 1fr;gap:6px}
  .lgv2-setting-step-card.is-column{border-left:0;border-top:1px solid rgba(200,161,100,.3)}
  .lgv2-settings-grid>.lgv2-setting-step-card.is-column:nth-child(-n+2){border-top:0}
  .lgv2-segmented button{min-width:50px}
}


/* Secret-role reveal */
.lgv2-role-cinematic{
  position:relative;isolation:isolate;overflow:hidden;height:100%;min-height:0;
  display:grid;grid-template-rows:auto minmax(0,1fr) auto;align-items:center;
  padding:calc(14px + env(safe-area-inset-top)) 14px calc(16px + env(safe-area-inset-bottom));
  background:
    radial-gradient(circle at 50% 43%,rgba(193,127,53,.22),transparent 25%),
    radial-gradient(circle at 50% 42%,rgba(94,10,30,.9),transparent 58%),
    linear-gradient(180deg,#241817 0%,#420a19 46%,#6b0f26 70%,#2c1718 100%);
  color:#fff5e5;text-align:center
}
.lgv2-role-cinematic::before{content:"";position:absolute;inset:0;z-index:-3;opacity:.24;background-image:url('../images/village-hero.webp');background-position:center bottom;background-size:cover;filter:sepia(.55) saturate(.8) brightness(.38)}
.lgv2-role-cinematic::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,rgba(0,0,0,.28),transparent 20% 80%,rgba(0,0,0,.28)),linear-gradient(180deg,rgba(0,0,0,.18),transparent 28%,rgba(0,0,0,.22))}
.lgv2-reveal-atmosphere{position:absolute;inset:0;z-index:-2;overflow:hidden;pointer-events:none}
.lgv2-reveal-atmosphere>span{position:absolute;left:50%;top:43%;width:min(82vw,430px);aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(255,201,94,.18) 0 12%,rgba(187,111,40,.12) 27%,transparent 61%);filter:blur(4px);animation:lgv2-reveal-breathe 2.7s ease-in-out infinite alternate}
.lgv2-reveal-atmosphere>i{position:absolute;left:calc(7% + (var(--p) * 6.3%));bottom:9%;width:3px;height:3px;border-radius:50%;background:#ffd983;box-shadow:0 0 8px #eaa34e;opacity:.18;animation:lgv2-reveal-particle calc(3.4s + (var(--p) * .13s)) linear infinite;animation-delay:calc(var(--p) * -.41s)}
.lgv2-reveal-head{position:relative;z-index:4;align-self:start;display:grid;justify-items:center;gap:5px;padding-top:2px}
.lgv2-reveal-head .lgv2-orn{filter:brightness(1.5);opacity:.8}
.lgv2-reveal-head small{font:800 8.96px/1 var(--serif);letter-spacing:.22em;color:#d9b56e}
.lgv2-reveal-head h1{margin:0;font:700 clamp(21.6px,5.4vw,29.6px)/1.02 var(--serif);letter-spacing:.035em;color:#fff0d4;text-shadow:0 2px 14px rgba(0,0,0,.38)}
.lgv2-reveal-head p{margin:0;max-width:300px;font-size:10.56px;line-height:1.35;color:#d8c6b5}
.lgv2-reveal-card{position:relative;width:min(67vw,280px);aspect-ratio:0.655;appearance:none;border:0;padding:0;background:transparent;cursor:pointer;perspective:1200px;touch-action:manipulation;-webkit-tap-highlight-color:transparent;filter:drop-shadow(0 20px 34px rgba(0,0,0,.35));transition:filter .4s ease,transform .35s ease}
.lgv2-reveal-card:disabled{cursor:default}
.lgv2-reveal-card:not(:disabled):active{transform:scale(.985)}
.lgv2-reveal-card3d{position:absolute;inset:0;display:block;transform-style:preserve-3d;transition:transform .9s cubic-bezier(.2,.78,.2,1.02);will-change:transform}
.lgv2-role-cinematic.is-flipped .lgv2-reveal-card3d{transform:rotateY(180deg)}
.lgv2-reveal-face{position:absolute;inset:0;display:grid;place-items:center;border-radius:20px;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:inset 0 0 0 1px rgba(255,225,163,.5),inset 0 0 0 5px rgba(97,12,34,.82),0 0 0 1px #c49a58}
.lgv2-reveal-face.is-back{align-content:center;gap:12px;padding:24px;background:
  radial-gradient(circle at center,rgba(220,174,95,.18),transparent 34%),
  repeating-radial-gradient(circle at 50% 50%,transparent 0 18px,rgba(203,158,84,.09) 19px 20px),
  linear-gradient(145deg,#40101d,#74132c 52%,#390b18);border:1px solid #cba562}
.lgv2-reveal-face.is-back::before,.lgv2-reveal-face.is-back::after{content:"";position:absolute;inset:10px;border:1px solid rgba(225,187,115,.52);border-radius:14px;pointer-events:none}
.lgv2-reveal-face.is-back::after{inset:19px;border-color:rgba(225,187,115,.18);border-radius:10px}
.lgv2-card-back-seal{position:relative;z-index:2;width:112px;height:112px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,rgba(132,29,54,.62) 0 44%,rgba(67,13,29,.82) 45% 63%,rgba(187,142,74,.72) 64% 66%,transparent 67%);box-shadow:0 0 0 1px rgba(235,198,128,.30),0 0 38px rgba(217,150,63,.13),inset 0 0 24px rgba(16,3,8,.28)}
.lgv2-card-back-seal .lgv2-card-wolf-mark{width:82px;height:86px;display:block;background:url('../images/wolf-emblem.webp') center/contain no-repeat;opacity:.56;filter:brightness(1.08) contrast(1.04) drop-shadow(0 0 12px rgba(239,200,119,.25));mix-blend-mode:screen}
.lgv2-reveal-face.is-back>b{position:relative;z-index:2;font:700 16.48px/1 var(--serif);letter-spacing:.14em;color:#ffedc2;text-shadow:0 1px 3px rgba(0,0,0,.55)}
.lgv2-reveal-face.is-back>small{position:relative;z-index:2;font-size:8.32px;letter-spacing:.04em;color:#efe0cd;text-shadow:0 1px 3px rgba(0,0,0,.5)}
.lgv2-reveal-face.is-front{transform:rotateY(180deg);background:#efe0ca}
.lgv2-reveal-face.is-front img{width:100%;height:100%;display:block;object-fit:contain;background:#efe0ca}
.lgv2-reveal-loading{color:#5f0a1e;font:700 12.8px/1 var(--serif)}
.lgv2-reveal-aura{position:absolute;inset:-16%;z-index:-2;border-radius:32%;opacity:.3;background:radial-gradient(circle,rgba(255,211,102,.55),rgba(235,105,30,.18) 31%,transparent 68%);filter:blur(14px);transform:scale(.78);animation:lgv2-reveal-aura 2.2s ease-in-out infinite alternate}
.lgv2-role-cinematic.is-revealing .lgv2-reveal-aura{opacity:.95;animation:lgv2-reveal-flash 1.05s ease-out both}
.lgv2-role-cinematic.is-revealed .lgv2-reveal-aura{opacity:.3;transform:scale(1)}
.lgv2-reveal-flames{position:absolute;inset:-18px;z-index:-1;pointer-events:none;opacity:0;transition:opacity .25s ease}
.lgv2-role-cinematic.is-revealing .lgv2-reveal-flames{opacity:1}
.lgv2-reveal-flames i{position:absolute;width:14px;height:38px;border-radius:70% 30% 64% 36%;background:linear-gradient(180deg,#fff0a3 0%,#ffbc47 25%,#f07425 65%,rgba(143,39,25,.2) 100%);filter:drop-shadow(0 0 8px rgba(255,145,42,.62));transform-origin:50% 100%;animation:lgv2-reveal-flame .48s ease-in-out infinite alternate}
.lgv2-reveal-flames i:nth-child(1){left:5%;bottom:12%;transform:rotate(-18deg)}
.lgv2-reveal-flames i:nth-child(2){left:29%;bottom:-2%;height:31px;animation-delay:-.18s}
.lgv2-reveal-flames i:nth-child(3){right:5%;bottom:12%;transform:rotate(18deg);animation-delay:-.31s}
.lgv2-reveal-flames i:nth-child(4){right:21%;top:1%;height:27px;transform:rotate(162deg);animation-delay:-.11s}
.lgv2-reveal-flames i:nth-child(5){left:17%;top:3%;height:24px;transform:rotate(198deg);animation-delay:-.38s}
.lgv2-reveal-flames i:nth-child(6){right:-1%;top:43%;height:30px;transform:rotate(88deg);animation-delay:-.24s}
.lgv2-reveal-copy{position:relative;z-index:4;display:grid;justify-items:center;gap:8px;align-self:end;min-height:92px}
.lgv2-reveal-tap{display:inline-flex;align-items:center;justify-content:center;min-height:25px;padding:0 12px;border:1px solid rgba(218,178,105,.42);border-radius:999px;background:rgba(41,17,21,.45);font-size:8.32px;font-weight:850;letter-spacing:.13em;color:#e4c786;transition:opacity .3s ease}
.lgv2-reveal-roletext{display:grid;gap:4px;opacity:0;transform:translateY(5px);transition:opacity .38s ease .14s,transform .38s ease .14s}
.lgv2-role-cinematic.is-revealed .lgv2-reveal-roletext{opacity:1;transform:none}
.lgv2-reveal-roletext h2{margin:0;font:700 18.88px/1 var(--serif);color:#ffe1aa}
.lgv2-reveal-roletext p{margin:0;max-width:320px;font-size:9.28px;line-height:1.35;color:#d6c1ae}
.lgv2-reveal-confirm{display:flex;align-items:center;justify-content:center;gap:8px;min-width:190px;min-height:43px;padding:0 18px;border:1px solid #c49452;border-radius:14px;background:linear-gradient(180deg,#7d1530,#5c0c22);box-shadow:0 8px 20px rgba(0,0,0,.18);color:#fff0d4;font:800 11.2px/1 var(--serif);letter-spacing:.05em;opacity:1;transition:opacity .3s ease,transform .2s ease}
.lgv2-reveal-confirm svg{width:17px;height:17px;fill:currentColor}
.lgv2-reveal-confirm:disabled{opacity:0;pointer-events:none;transform:translateY(4px)}
@keyframes lgv2-reveal-breathe{to{transform:translate(-50%,-50%) scale(1.08);opacity:.78}}
@keyframes lgv2-reveal-particle{0%{transform:translateY(0) scale(.7);opacity:0}15%{opacity:.55}75%{opacity:.24}100%{transform:translateY(-82vh) translateX(12px) scale(1.4);opacity:0}}
@keyframes lgv2-reveal-aura{to{transform:scale(.92);opacity:.5}}
@keyframes lgv2-reveal-flash{0%{transform:scale(.72);opacity:.32}44%{transform:scale(1.16);opacity:1}72%{transform:scale(1.02);opacity:.74}100%{transform:scale(.95);opacity:.38}}
@keyframes lgv2-reveal-flame{to{height:48px;filter:drop-shadow(0 0 12px rgba(255,145,42,.75));opacity:.78}}
@media (max-height:720px){
  .lgv2-role-cinematic{padding-top:calc(8px + env(safe-area-inset-top));padding-bottom:calc(8px + env(safe-area-inset-bottom));grid-template-rows:auto minmax(0,1fr) auto}
  .lgv2-reveal-head{gap:3px}.lgv2-reveal-head h1{font-size:19.52px}.lgv2-reveal-head p{font-size:9.28px}
  .lgv2-reveal-card{width:min(54vw,220px)}.lgv2-reveal-copy{gap:5px;min-height:76px}.lgv2-reveal-confirm{min-height:38px}.lgv2-reveal-roletext p{font-size:8.32px}
}
@media (max-width:370px){.lgv2-reveal-card{width:min(66vw,245px)}.lgv2-reveal-head h1{font-size:20px}}
@media (prefers-reduced-motion:reduce){
  .lgv2-reveal-atmosphere>span,.lgv2-reveal-atmosphere>i,.lgv2-reveal-aura,.lgv2-reveal-flames i{animation:none!important}
  .lgv2-reveal-card3d{transition-duration:.08s!important}.lgv2-reveal-roletext{transition-duration:.08s!important}
}


/* Pack reveal and village entry */
.lgv2-role-cinematic.has-pack{grid-template-rows:auto minmax(170px,.82fr) auto;overflow:hidden}
.lgv2-role-cinematic.has-pack .lgv2-reveal-card{width:min(55vw,230px)}
.lgv2-role-cinematic.has-pack .lgv2-reveal-copy{width:min(100%,430px);gap:6px;min-height:0}
.lgv2-pack-reveal{width:min(100%,390px);display:grid;gap:7px;margin-top:1px;padding:9px 10px 10px;border:1px solid rgba(213,172,99,.42);border-radius:16px;background:linear-gradient(180deg,rgba(47,17,25,.84),rgba(28,13,18,.78));box-shadow:inset 0 1px 0 rgba(255,236,191,.07),0 10px 28px rgba(0,0,0,.16);opacity:0;transform:translateY(8px);transition:opacity .45s ease .2s,transform .45s ease .2s}
.lgv2e2-sc.lgv2e2-t5 .lgv2-pack-reveal{opacity:1;transform:none}
.lgv2-pack-heading{display:flex;align-items:center;justify-content:center;gap:8px;text-align:left}.lgv2-pack-heading>span{display:grid;place-items:center;width:29px;height:29px;border:1px solid rgba(227,187,111,.42);border-radius:50%;background:rgba(111,19,43,.55);color:#efc678}.lgv2-pack-heading svg{width:16px;height:16px;fill:currentColor}.lgv2-pack-heading div{display:grid;gap:2px}.lgv2-pack-heading small{font:800 7.52px/1 var(--serif);letter-spacing:.17em;color:#bda078}.lgv2-pack-heading b{font:700 10.72px/1 var(--serif);letter-spacing:.045em;color:#f5d9a7}
.lgv2-pack-members{display:flex;justify-content:center;flex-wrap:wrap;gap:7px 9px;padding:2px 0}
.lgv2-pack-member{width:64px;display:grid;justify-items:center;gap:3px;opacity:0;transform:translateY(10px) scale(.9)}
.lgv2e2-sc.lgv2e2-t5 .lgv2-pack-member{animation:lgv2-pack-enter .48s cubic-bezier(.2,.75,.26,1.1) forwards;animation-delay:calc(.25s + (var(--pack-delay) * .23s))}
.lgv2-pack-member>span{position:relative;width:39px;height:39px;border:1.5px solid #c89a52;border-radius:50%;padding:2px;background:#2d171b;box-shadow:0 0 0 2px rgba(113,19,42,.55),0 5px 12px rgba(0,0,0,.2)}.lgv2-pack-member img{width:100%;height:100%;object-fit:cover;border-radius:50%}.lgv2-pack-member>span::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:1px solid rgba(239,192,106,.16);animation:lgv2-pack-pulse 1.8s ease-in-out infinite alternate}.lgv2-pack-member b{width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:700 8.64px/1 var(--serif);color:#ffe4b8}.lgv2-pack-member small{font-size:6.56px;line-height:1;color:#ad9585;white-space:nowrap}
.lgv2-pack-strength{display:flex;align-items:center;justify-content:center;gap:8px;padding-top:6px;border-top:1px solid rgba(231,197,133,.14);opacity:0;transform:translateY(6px)}
.lgv2e2-sc.lgv2e2-t5 .lgv2-pack-strength{animation:lgv2-pack-strength .46s ease forwards;animation-delay:calc(.62s + (var(--pack-count) * .23s))}
.lgv2-pack-strength>span{display:grid;place-items:center;width:27px;height:27px;color:#e9b85e}.lgv2-pack-strength svg{width:22px;height:22px;fill:currentColor}.lgv2-pack-strength>div{display:grid;gap:2px;text-align:left}.lgv2-pack-strength b{font:800 8.16px/1.1 var(--serif);letter-spacing:.055em;color:#f4cf8a}.lgv2-pack-strength small{font-size:6.88px;line-height:1.25;color:#bda996}.lgv2-pack-solo{margin:0;text-align:center;font-size:7.68px;line-height:1.35;color:#bda996}
.lgv2e2-sc.is-pack-static .lgv2-pack-member,.lgv2e2-sc.is-pack-static .lgv2-pack-strength{opacity:1;transform:none;animation:none!important}
@keyframes lgv2-pack-enter{to{opacity:1;transform:none}}@keyframes lgv2-pack-strength{to{opacity:1;transform:none}}@keyframes lgv2-pack-pulse{to{transform:scale(1.08);opacity:.45}}

/* ==================================================================
   ENTRÉE DANS LE VILLAGE — générique centré.

   Méthode d'affichage : les répliques prennent le centre à tour de rôle,
   apparaissent en fondu et s'effacent EN MONTANT. Le décor reste fixe.
   Typographie volontairement allégée : capitales fines très espacées
   plutôt qu'un gras massif, qui faisait titre de journal.
   Seuls transform et opacity sont animés.
   ================================================================== */
.lgv2-village-intro{position:relative;isolation:isolate;overflow:hidden;display:block;
  min-height:100dvh;height:100dvh;background:#05070e;color:#f4e7cd}

/* --- Décor : image de nuit portrait, poussée lente et continue --- */
.lgv2-intro-scene{position:absolute;inset:0;z-index:0;overflow:hidden;
  /* Version PORTRAIT : l'illustration d'origine est en paysage et `cover`
     n'en montrerait que 22 % de la largeur sur un écran de téléphone. */
  background:url('../images/village-night-portrait.webp') center top/cover no-repeat;
  transform:scale(1.1);opacity:0;
  transition:transform 12s cubic-bezier(.14,.62,.2,1),opacity 1.6s ease}
.lgv2-village-intro.is-live .lgv2-intro-scene{transform:scale(1);opacity:1}

/* --- Oiseaux : traversées lentes derrière le texte --- */
.lgv2-intro-birds{position:absolute;z-index:1;inset:0 0 auto;height:52%;pointer-events:none;overflow:hidden}
.lgv2-intro-bird{position:absolute;left:-12%;top:calc(14% + var(--b) * 6.5%);
  width:calc(13px + var(--b) * 2.4px);opacity:0;
  animation:lgv2-bird-fly calc(15s + var(--b) * 2.6s) calc(.3s + var(--b) * 1.15s) linear infinite}
.lgv2-intro-bird svg{display:block;width:100%;height:auto;fill:none;
  stroke:rgba(232,236,255,.5);stroke-width:1.5;stroke-linecap:round;
  /* Battement d'ailes : un simple écrasement vertical suffit à distance. */
  animation:lgv2-bird-flap calc(.3s + var(--b) * .045s) ease-in-out infinite alternate}

/* Voile de lecture : assombrit le centre juste assez pour le texte. */
.lgv2-intro-shade{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:
    radial-gradient(ellipse 92% 30% at 50% 44%,rgba(4,6,12,.6) 0,rgba(4,6,12,.34) 46%,rgba(4,6,12,.08) 74%,transparent 90%),
    linear-gradient(180deg,rgba(5,7,14,.34) 0,rgba(5,7,14,0) 22%,rgba(4,6,12,.28) 72%,rgba(3,5,10,.78) 91%,#04060c 100%)}

/* --- Brume et braises, très discrètes --- */
.lgv2-intro-fog{position:absolute;z-index:3;left:-30%;width:160%;height:24%;bottom:14%;
  border-radius:50%;background:rgba(150,164,205,.05);filter:blur(30px);opacity:0}
.lgv2-village-intro.is-live .lgv2-intro-fog{opacity:1;transition:opacity 2.4s .6s ease}
.lgv2-intro-fog.is-a{animation:lgv2-intro-fog 21s ease-in-out infinite alternate}
.lgv2-intro-fog.is-b{bottom:26%;height:16%;animation:lgv2-intro-fog 27s 1.8s ease-in-out infinite alternate-reverse}
.lgv2-intro-embers{position:absolute;z-index:3;inset:auto 0 6%;height:30%;pointer-events:none}
.lgv2-intro-embers i{position:absolute;bottom:0;left:calc(10% + var(--e) * 9%);
  width:3px;height:3px;border-radius:50%;background:#f0b467;opacity:0;
  box-shadow:0 0 8px rgba(240,164,86,.8);
  animation:lgv2-intro-ember calc(10s + var(--e) * .9s) calc(var(--e) * 1.2s) linear infinite}

/* --- La scène : tout se superpose au centre pour permettre le fondu --- */
.lgv2-intro-stage{position:absolute;z-index:6;inset:0;display:grid;place-items:center;
  padding:0 clamp(26px,8vw,44px) 4vh}
.lgv2-intro-cue,.lgv2-intro-final{grid-area:1/1;width:100%;justify-self:center}

/* Une réplique : entre en fondu, sort en montant. */
.lgv2-intro-cue{margin:0;text-align:center;opacity:0;transform:translateY(18px);
  transition:opacity .85s ease,transform 1s cubic-bezier(.16,.86,.24,1)}
.lgv2-intro-cue.is-one{font:500 11.52px/1.6 var(--sans);letter-spacing:.34em;
  text-transform:uppercase;color:#e0c491;text-indent:.34em}
.lgv2-intro-cue.is-two{font:400 16.32px/1.62 var(--serif);letter-spacing:.012em;
  color:#f0e4cd;max-width:22ch;margin-inline:auto}
.lgv2-village-intro.is-cue1 .lgv2-intro-cue.is-one,
.lgv2-village-intro.is-cue2 .lgv2-intro-cue.is-two{opacity:1;transform:translateY(0)}
.lgv2-village-intro.is-cue1-out .lgv2-intro-cue.is-one,
.lgv2-village-intro.is-cue2-out .lgv2-intro-cue.is-two{opacity:0;transform:translateY(-30px)}

/* --- Composition finale, centrée --- */
.lgv2-intro-final{display:grid;justify-items:center;text-align:center;gap:0;
  opacity:0;transform:translateY(22px);
  transition:opacity 1s ease,transform 1.1s cubic-bezier(.16,.86,.24,1)}
.lgv2-village-intro.is-final .lgv2-intro-final{opacity:1;transform:translateY(0)}

.lgv2-intro-seal{position:relative;width:50px;height:50px;display:grid;place-items:center;
  border-radius:50%;background:radial-gradient(circle at 38% 32%,#a3203c,#6d0f24 62%,#4a0a18);
  border:1px solid rgba(232,197,128,.55);color:#f4d18a;
  box-shadow:0 10px 26px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,224,168,.26);
  transform:scale(2.2);opacity:0;
  transition:transform .5s cubic-bezier(.2,1.65,.36,1),opacity .26s ease}
.lgv2-intro-seal svg{width:23px;height:23px}
.lgv2-intro-seal::after{content:"";position:absolute;inset:-11px;border-radius:50%;
  border:1px solid rgba(232,197,128,.45);opacity:0;transform:scale(.6)}
.lgv2-village-intro.is-final .lgv2-intro-seal{opacity:1;transform:scale(1)}
.lgv2-village-intro.is-final .lgv2-intro-seal::after{animation:lgv2-intro-seal-ring 1s .18s cubic-bezier(.2,.8,.3,1) forwards}

.lgv2-intro-kicker{margin-top:20px;font:600 8px/1 var(--sans);letter-spacing:.36em;
  color:#d3ab6b;text-indent:.36em}
/* Titre : capitales fines et largement espacées. Le gras massif précédent
   donnait un rendu de manchette de presse, pas de générique. */
.lgv2-intro-title{margin-top:16px;font:400 clamp(32px,10.5vw,48px)/1.02 var(--serif);
  letter-spacing:.19em;color:#fbf1de;text-indent:.19em;
  text-shadow:0 4px 30px rgba(0,0,0,.6)}
.lgv2-intro-rule{width:74px;height:1px;margin-top:18px;transform:scaleX(0);
  background:linear-gradient(90deg,transparent,rgba(226,190,120,.9),transparent);
  transition:transform 1.1s .35s cubic-bezier(.16,.85,.24,1)}
.lgv2-village-intro.is-final .lgv2-intro-rule{transform:scaleX(1)}
.lgv2-intro-sub{margin-top:16px;font:400 9.28px/1 var(--sans);letter-spacing:.34em;
  color:#c8ab7c;text-indent:.34em}

/* --- Le bouton -----------------------------------------------------------
   Un filet nu faisait pauvre et ne se voyait pas comme une action. Celui-ci
   est construit en couches, comme un vrai objet : matière bordeaux profonde,
   liseré d'or, lumière interne en haut, ombre portée, et un reflet qui balaie
   lentement la surface. Tout est en transform/opacity ou en couleur, rien qui
   déclenche un recalcul de mise en page. */
.lgv2-intro-act{position:relative;margin-top:36px;display:inline-flex;align-items:center;
  justify-content:center;gap:14px;min-height:56px;padding:0 34px;overflow:hidden;
  border:none;border-radius:3px;cursor:pointer;touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;opacity:0;
  color:#fdeec9;font:700 9.28px/1 var(--sans);letter-spacing:.26em;text-indent:.26em;
  background:linear-gradient(177deg,#8e1a33 0%,#71122a 46%,#530b1e 100%);
  box-shadow:
    0 0 0 1px rgba(233,199,133,.62),
    0 1px 0 0 rgba(255,232,186,.30) inset,
    0 -10px 22px -12px rgba(0,0,0,.85) inset,
    0 14px 30px -12px rgba(0,0,0,.75),
    0 0 34px -10px rgba(196,142,64,.4);
  transition:opacity .8s .5s ease,transform .16s cubic-bezier(.2,.8,.3,1),box-shadow .2s ease}
.lgv2-intro-act svg{width:15px;height:15px;flex:none;opacity:.9;
  transition:transform .3s cubic-bezier(.2,.9,.3,1)}
/* Reflet qui balaie la surface : la seule chose qui bouge au repos. */
.lgv2-intro-act::after{content:"";position:absolute;top:0;bottom:0;width:44%;
  left:-60%;pointer-events:none;transform:skewX(-18deg);
  background:linear-gradient(90deg,transparent,rgba(255,236,196,.16) 44%,rgba(255,240,206,.26) 52%,transparent);
  animation:lgv2-act-sheen 5.2s 2s cubic-bezier(.4,0,.5,1) infinite}
.lgv2-intro-act:active{transform:translateY(1px) scale(.985);
  box-shadow:
    0 0 0 1px rgba(233,199,133,.8),
    0 2px 10px -4px rgba(0,0,0,.7),
    0 0 26px -12px rgba(196,142,64,.5)}
.lgv2-intro-act:active svg{transform:translateX(3px)}
.lgv2-intro-act:focus-visible{outline:2px solid rgba(240,212,152,.9);outline-offset:3px}
.lgv2-village-intro.is-final .lgv2-intro-act{opacity:1}
@keyframes lgv2-act-sheen{0%,62%{left:-60%}100%{left:118%}}

@keyframes lgv2-intro-fog{to{transform:translateX(11%)}}
@keyframes lgv2-intro-ember{
  0%{opacity:0;transform:translateY(0) translateX(0)}
  14%{opacity:.8}
  72%{opacity:.45}
  100%{opacity:0;transform:translateY(-190px) translateX(20px)}}
@keyframes lgv2-intro-seal-ring{0%{opacity:.75;transform:scale(.6)}100%{opacity:0;transform:scale(1.8)}}
@keyframes lgv2-bird-fly{
  0%{opacity:0;transform:translate(0,0)}
  7%{opacity:.55}
  88%{opacity:.42}
  100%{opacity:0;transform:translate(128vw,-9vh)}}
@keyframes lgv2-bird-flap{from{transform:scaleY(1)}to{transform:scaleY(.4)}}

@media(max-height:700px){
  .lgv2-intro-title{font-size:clamp(27.2px,9vw,36.8px)}
  .lgv2-intro-seal{width:42px;height:42px}
  .lgv2-intro-act{margin-top:24px}
  .lgv2-intro-kicker{margin-top:14px}
}
@media(prefers-reduced-motion:reduce){
  .lgv2-intro-scene{transition:opacity .3s ease!important;transform:none!important}
  .lgv2-village-intro.is-live .lgv2-intro-scene{transform:none!important}
  .lgv2-intro-fog,.lgv2-intro-embers,.lgv2-intro-birds{display:none}
  .lgv2-intro-cue,.lgv2-intro-final,.lgv2-intro-seal,.lgv2-intro-act{
    transition:opacity .25s ease!important;transform:none!important}
  .lgv2-intro-cue{opacity:0!important}
  .lgv2-intro-rule{transform:scaleX(1)!important;transition:none!important}
  .lgv2-intro-seal::after{animation:none!important;opacity:0!important}
  .lgv2-intro-act::after{animation:none!important;opacity:0!important}
}


/* Mayor speeches, live audio and sequential ballot */
@layer circle {
  .lgv2-remote-audio{position:fixed;width:1px;height:1px;opacity:0;pointer-events:none;left:-9999px;top:-9999px}
  .lgv2-speech-stage,.lgv2-vote-stage,.lgv2-election-result{padding:10px 11px 9px;gap:9px}
  .lgv2-speech-stage::before,.lgv2-vote-stage::before{background:linear-gradient(180deg,rgba(255,252,245,.96),rgba(250,238,218,.9));border-color:rgba(190,145,77,.5);box-shadow:0 10px 26px rgba(80,42,27,.08)}
  .lgv2-speech-head,.lgv2-ballot-head{display:grid;grid-template-columns:43px minmax(0,1fr) auto;gap:9px;align-items:center}
  .lgv2-speech-head>div,.lgv2-ballot-head>div{min-width:0}.lgv2-speech-head small,.lgv2-ballot-head small,.lgv2-speech-player-call small,.lgv2-speech-listen-head small,.lgv2-election-result>small{display:block;font:800 7.84px/1 var(--serif);letter-spacing:.13em;color:#a1723d}
  .lgv2-speech-head h2,.lgv2-ballot-head h2,.lgv2-speech-player-call h2,.lgv2-speech-listen-head h2{margin:4px 0 0;color:var(--wine);font:800 14.72px/1.02 var(--serif);letter-spacing:.015em}.lgv2-speech-head p,.lgv2-ballot-head p,.lgv2-speech-player-call p,.lgv2-speech-listen-head p{margin:4px 0 0;color:#887567;font-size:8.16px;line-height:1.28}
  .lgv2-live-pill{height:25px;padding:0 8px;border:1px solid #c99765;border-radius:999px;background:#7c112a;color:#fff0d5;display:flex;align-items:center;gap:5px;font:850 7.2px/1 var(--sans);letter-spacing:.08em}.lgv2-live-pill i{width:6px;height:6px;border-radius:50%;background:#ffcf83;box-shadow:0 0 0 4px rgba(255,205,126,.12);animation:lgv2-live-dot .85s ease-in-out infinite alternate}
  .lgv2-mayor-candidates.is-interactive{min-height:0;overflow:visible;padding-top:5px}.lgv2-mayor-candidates.is-interactive .lgv2-mayor-candidate{position:relative;cursor:pointer;z-index:2}.lgv2-mayor-candidates.is-interactive .lgv2-mayor-candidate:focus-visible{outline:2px solid #8a1730;outline-offset:4px;border-radius:12px}.lgv2-mayor-candidate.is-speaking{z-index:5}.lgv2-mayor-candidate.is-speaking .lgv2-mayor-candidate__avatar{border-color:#8c1730;box-shadow:0 0 0 4px rgba(139,24,49,.09),0 0 18px rgba(148,33,54,.18)}.lgv2-mayor-candidate.has-spoken:not(.is-speaking){opacity:.72}.lgv2-mayor-candidate__avatar>em{position:absolute;left:-5px;bottom:-4px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#86172f;border:2px solid #fff6e6;color:#ffe1a6;box-shadow:0 3px 7px rgba(70,22,27,.2)}.lgv2-mayor-candidate__avatar>em svg{width:10px;height:10px;fill:currentColor}.lgv2-mayor-candidate__avatar>em.is-done{background:#6c7d4c;color:#fff5d8}
  .lgv2-mayor-candidates-wrap{display:grid;gap:7px;min-width:0}.lgv2-candidate-pop{position:relative;z-index:6;display:flex;justify-content:center;width:100%;padding:0;border:0;background:transparent;box-shadow:none}.lgv2-candidate-pop button{width:min(230px,100%);min-height:44px;border:1px solid #c59a58;border-radius:999px;background:linear-gradient(180deg,#fffaf0,#f2e4cc);color:#4d3629;display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 14px;font:800 8.48px/1.14 var(--serif);letter-spacing:.035em;cursor:pointer;white-space:normal;text-align:center;box-shadow:0 6px 14px rgba(70,36,23,.13),inset 0 1px #fff}.lgv2-candidate-pop svg{width:14px;height:14px;fill:currentColor;color:#a78345}
  .lgv2-speech-host-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:9px;padding-top:3px;border-top:1px solid rgba(202,170,119,.28)}.lgv2-speech-host-actions p{margin:0;color:#8b7869;font-size:7.84px;line-height:1.25}.lgv2-speech-host-actions button{min-height:39px;padding:7px 11px;border:1px solid #bd894d;border-radius:12px;background:linear-gradient(135deg,#741128,#94172f);color:#fff1d4;display:flex;align-items:center;justify-content:center;gap:6px;font:800 clamp(7.04px,1.9vw,8.16px)/1.15 var(--serif);letter-spacing:.025em;cursor:pointer;white-space:normal;text-align:center}.lgv2-speech-host-actions button svg{width:14px;height:14px;fill:currentColor}.lgv2-speech-host-actions button:disabled{opacity:.38;filter:saturate(.5);cursor:default}
  .lgv2-speech-player-call{position:relative;display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;align-content:start;text-align:center;gap:6px;padding:4px 8px 2px}.lgv2-speech-player-call>span{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(#8a1731,#650d23);border:1px solid #d0a05e;color:#f3cb7c;box-shadow:0 0 0 6px rgba(124,18,43,.07),0 7px 16px rgba(95,17,34,.15)}.lgv2-speech-player-call>span svg{width:20px;height:20px;fill:currentColor}.lgv2-speech-player-call h2{font-size:16.48px;letter-spacing:.04em}
  .lgv2-speech-aura{position:absolute;inset:0;z-index:-1;overflow:hidden;border-radius:20px;pointer-events:none}.lgv2-speech-aura::before{content:"";position:absolute;left:50%;top:33%;width:180px;height:95px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(210,158,71,.24),transparent 70%);filter:blur(4px);animation:lgv2-speech-glow 1.8s ease-in-out infinite alternate}.lgv2-speech-aura i{position:absolute;width:3px;height:3px;border-radius:50%;background:#d8a149;box-shadow:0 0 8px #d8a149;opacity:.3}.lgv2-speech-aura i:nth-child(1){left:18%;top:27%;animation:lgv2-speech-spark 2.3s ease-in-out infinite}.lgv2-speech-aura i:nth-child(2){right:19%;top:22%;animation:lgv2-speech-spark 2.7s .5s ease-in-out infinite}.lgv2-speech-aura i:nth-child(3){left:50%;top:12%;animation:lgv2-speech-spark 2.1s .9s ease-in-out infinite}
  .lgv2-live-mic{--bp-btn-1:#21824f;--bp-btn-2:#16653d;--bp-btn-encre:#fff;--bp-or:#eefcf4;--bp-lueur:rgba(255,255,255,.20);justify-self:center;position:relative;min-width:222px;min-height:43px;border:1px solid #bd894d;border-radius:14px;background:linear-gradient(135deg,var(--bp-accent),#9d1a36 55%,#721027);box-shadow:0 9px 20px rgba(112,17,42,.19),inset 0 1px 0 rgba(255,233,184,.16);color:#fff0d1;display:flex;align-items:center;justify-content:center;gap:9px;font:800 9.6px/1 var(--serif);letter-spacing:.045em;cursor:pointer}.lgv2-live-mic>svg{width:18px;height:18px;fill:#f0c571}.lgv2-live-mic.is-live{background:linear-gradient(135deg,#8d1933,#b22943);box-shadow:0 0 0 5px rgba(151,29,52,.07),0 9px 20px rgba(112,17,42,.2)}.lgv2-live-mic.is-live>i{width:7px;height:7px;border-radius:50%;background:#ffd08a;animation:lgv2-live-dot .8s ease-in-out infinite alternate}.lgv2-live-mic:disabled{cursor:default}.lgv2-live-mic:disabled:not(.is-live){opacity:.48}
  .lgv2-speech-listen-head{display:grid;grid-template-columns:43px minmax(0,1fr);gap:9px;align-items:center}.lgv2-speech-listen-head>span{width:43px;height:43px;border-radius:50%;display:grid;place-items:center;border:1px solid #d7b57c;background:#f5e7d2;color:#8a1730}.lgv2-speech-listen-head>span svg{width:20px;height:20px;fill:currentColor}.lgv2-speech-listen-head>span.is-live{background:#81152e;color:#f1cb7c;box-shadow:0 0 0 5px rgba(129,21,46,.07);animation:lgv2-listen-pulse 1.1s ease-in-out infinite alternate}.lgv2-audio-unlock{justify-self:center;min-height:34px;padding:0 12px;border:1px solid #c89d60;border-radius:11px;background:#fff7e8;color:#74132a;display:flex;align-items:center;gap:7px;font:800 7.84px/1 var(--serif);cursor:pointer}.lgv2-audio-unlock svg{width:14px;height:14px;fill:currentColor}

  .lgv2-ballot-head>span{width:43px;height:43px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 34% 30%,#a52a47,#5b0c22 74%);border:2px solid #caa15f;box-shadow:inset 0 0 0 2px rgba(43,7,17,.5);color:#efd6a0}.lgv2-ballot-head>span svg{width:21px;height:21px;fill:currentColor}.lgv2-ballot-head>strong{display:flex;align-items:baseline;gap:2px;padding:6px 8px;border:1px solid #d6bc8e;border-radius:10px;background:#fff9ef;color:var(--wine);font:850 13.28px/1 var(--serif)}.lgv2-ballot-head>strong i{font-style:normal;font-size:8px;color:#b39a76}
  .lgv2-current-voter{min-height:42px;display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:8px;padding:5px 7px;border:1px solid #dfc8a3;border-radius:13px;background:rgba(255,250,241,.83)}.lgv2-current-voter>img{width:33px;height:33px;border-radius:50%;object-fit:cover}.lgv2-current-voter>span{display:grid;gap:2px}.lgv2-current-voter small{font-size:6.72px;font-weight:850;letter-spacing:.08em;color:#a27c50}.lgv2-current-voter b{font:750 10.56px/1 var(--serif);color:#56332f}.lgv2-current-voter em{font-style:normal;padding:5px 7px;border-radius:999px;background:#efe1ce;color:#816d5c;font-size:6.4px;font-weight:850}.lgv2-current-voter em:first-letter{}.lgv2-vote-stage.is-my-turn .lgv2-current-voter em{background:#81152d;color:#fff0d3}.lgv2-vote-stage.is-vote-waiting .lgv2-current-voter em{background:#efe1ce;color:#816d5c}
  .lgv2-ballot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-items:start;padding:2px 0}.lgv2-ballot-grid.is-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.lgv2-ballot-grid.is-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.lgv2-ballot-grid.is-1{grid-template-columns:minmax(0,160px);justify-content:center}
  .lgv2-ballot-candidate{position:relative;min-width:0;display:grid;justify-items:center;gap:4px;padding:7px 4px 6px;border:1px solid #dfc49a;border-radius:15px;background:linear-gradient(180deg,#fffaf1,#f6e6cf);box-shadow:0 5px 12px rgba(76,41,26,.06);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,opacity .16s ease}.lgv2-ballot-candidate.is-choosable{cursor:pointer}.lgv2-ballot-candidate.is-choosable:active{transform:scale(.98)}.lgv2-ballot-candidate.is-selected{border-color:#8c1730;box-shadow:0 0 0 3px rgba(140,23,48,.08),0 8px 17px rgba(80,35,28,.09);transform:translateY(-2px)}.lgv2-ballot-candidate.is-voted{border-color:#7d8a58;background:linear-gradient(180deg,#fffbef,#edf0dc)}.lgv2-ballot-candidate.is-ineligible{opacity:.38;filter:saturate(.45)}
  .lgv2-ballot-avatar{position:relative;width:52px;height:52px;border-radius:50%;display:block;border:2px solid #d0a668;background:#f3e2ca;box-shadow:0 5px 12px rgba(76,39,25,.1)}.lgv2-ballot-avatar>img{width:100%;height:100%;border-radius:50%;object-fit:cover}.lgv2-ballot-avatar>i{position:absolute;left:-5px;top:-5px;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;background:#7d132b;border:2px solid #fff6e5;color:#ffe0a7;font:850 7.68px/1 var(--sans);font-style:normal}.lgv2-ballot-avatar>strong{position:absolute;right:-6px;bottom:-4px;min-width:24px;height:20px;padding:0 5px;border-radius:999px;display:grid;place-items:center;background:#3f3029;border:2px solid #fff6e5;color:#fff0d6;font:850 7.52px/1 var(--sans)}.lgv2-ballot-candidate h3{max-width:100%;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#542f2c;font:750 9.76px/1 var(--serif)}
  .lgv2-ballot-voters{width:100%;min-height:31px;display:flex;flex-wrap:wrap;justify-content:center;gap:3px}.lgv2-ballot-voters>span{max-width:58px;display:flex;align-items:center;gap:2px;padding:2px 4px 2px 2px;border-radius:999px;background:#eee0cb}.lgv2-ballot-voters img{width:15px;height:15px;border-radius:50%;object-fit:cover}.lgv2-ballot-voters b{max-width:37px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:5.92px;color:#6b5749}.lgv2-ballot-voters.is-empty{align-items:center}.lgv2-ballot-voters.is-empty small{font-size:6.08px;color:#aa9784;text-align:center}
  .lgv2-vote-confirm{position:relative;z-index:20;margin-top:1px;padding:9px;border:1px solid #caa467;border-radius:14px;background:#fff9ee;box-shadow:0 12px 27px rgba(74,36,24,.15);display:grid;justify-items:center;text-align:center;gap:4px}.lgv2-vote-confirm>small{font:850 6.88px/1 var(--serif);letter-spacing:.11em;color:#a2743c}.lgv2-vote-confirm>b{font:750 11.52px/1 var(--serif);color:var(--wine)}.lgv2-vote-confirm>p{margin:0;font-size:7.04px;color:#8e7c6d}.lgv2-vote-confirm>div{display:flex;gap:6px;margin-top:3px}.lgv2-vote-confirm button{min-height:32px;padding:6px 12px;border-radius:10px;font:800 7.04px/1.14 var(--serif);cursor:pointer;white-space:normal;text-align:center}.lgv2-vote-confirm button:first-child{border:1px solid #d9c2a0;background:#f3e7d6;color:#735e50}.lgv2-vote-confirm button:last-child{border:1px solid #b9874d;background:#7f142c;color:#fff1d3;display:flex;align-items:center;gap:5px}.lgv2-vote-confirm svg{width:12px;height:12px;fill:currentColor}
  .lgv2-vote-waiting{margin:0;text-align:center;color:#8d7b6c;font-size:8.16px}
  .lgv2-runoff-btn{justify-self:center;min-height:40px;padding:0 14px;border:1px solid #bd894d;border-radius:13px;background:linear-gradient(135deg,#751229,#961830);color:#fff1d4;display:flex;align-items:center;gap:7px;font:800 8.16px/1 var(--serif);letter-spacing:.04em;cursor:pointer}.lgv2-runoff-btn svg{width:14px;height:14px;fill:currentColor}
  .lgv2-election-result{justify-items:center;text-align:center;overflow:hidden;min-height:190px;align-content:center;background:radial-gradient(circle at 50% 42%,rgba(226,179,86,.22),transparent 34%)}.lgv2-election-result::before{background:linear-gradient(180deg,#fffaf0,#f4e2c6);border-color:#c8a064}.lgv2-winner-rays{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden;border-radius:20px}.lgv2-winner-rays::before{content:"";position:absolute;left:50%;top:46%;width:250px;height:250px;transform:translate(-50%,-50%);background:repeating-conic-gradient(from 0deg,rgba(210,160,71,.11) 0 8deg,transparent 8deg 19deg);animation:lgv2-rays 18s linear infinite}.lgv2-winner-crown{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--bp-accent);color:#f0c36c;border:1px solid #c89955;box-shadow:0 0 0 6px rgba(184,128,59,.07)}.lgv2-winner-crown svg{width:22px;height:22px;fill:currentColor}.lgv2-election-result h2{margin:1px 0 0;color:var(--wine);font:800 20.48px/1 var(--serif)}.lgv2-election-result>p{margin:0;color:#8b7667;font-size:8.8px}.lgv2-winner-avatar{width:66px;height:66px;border-radius:50%;padding:3px;background:linear-gradient(145deg,#d8b36f,var(--bp-accent));box-shadow:0 9px 20px rgba(84,40,27,.15)}.lgv2-winner-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;border:2px solid #fff6e4}.lgv2-winner-seal{display:flex;align-items:center;gap:5px;padding:5px 9px;border:1px solid #c99e60;border-radius:999px;background:#fff5e3;color:#7a132b}.lgv2-winner-seal svg{width:13px;height:13px;fill:currentColor}.lgv2-winner-seal b{font:850 7.04px/1 var(--serif);letter-spacing:.08em}
  @keyframes lgv2-live-dot{to{opacity:.35;transform:scale(.75)}}@keyframes lgv2-speech-glow{to{transform:translate(-50%,-50%) scale(1.12);opacity:.65}}@keyframes lgv2-speech-spark{0%,100%{opacity:.12;transform:translateY(4px)}50%{opacity:.75;transform:translateY(-6px)}}@keyframes lgv2-listen-pulse{to{box-shadow:0 0 0 8px rgba(129,21,46,.03),0 0 18px rgba(129,21,46,.14)}}@keyframes lgv2-rays{to{transform:translate(-50%,-50%) rotate(360deg)}}
  @media(max-height:720px){.lgv2-speech-stage,.lgv2-vote-stage{gap:6px;padding-block:7px}.lgv2-speech-head h2,.lgv2-ballot-head h2{font-size:13.12px}.lgv2-ballot-avatar{width:46px;height:46px}.lgv2-ballot-candidate{padding-block:5px}.lgv2-ballot-voters{min-height:24px}.lgv2-mayor-candidates.is-interactive{min-height:91px}}
  @media(max-width:390px){.lgv2-speech-head,.lgv2-ballot-head{grid-template-columns:39px minmax(0,1fr) auto}.lgv2-speech-head>.lgv2-mayor-emblem,.lgv2-ballot-head>span{width:39px;height:39px}.lgv2-speech-host-actions{grid-template-columns:1fr}.lgv2-speech-host-actions button{justify-self:stretch;justify-content:center}.lgv2-ballot-grid.is-4{gap:3px}.lgv2-ballot-grid.is-4 .lgv2-ballot-candidate{padding-inline:2px}.lgv2-ballot-grid.is-4 .lgv2-ballot-avatar{width:42px;height:42px}.lgv2-ballot-grid.is-4 .lgv2-ballot-voters b{display:none}.lgv2-ballot-grid.is-4 .lgv2-ballot-voters>span{padding-right:2px}.lgv2-live-mic{min-width:205px}}
}


@layer game-v29 {
  /* Role selection privacy: one canonical grid for narrator and players. */
  .lgv2-role-manager{grid-template-rows:auto minmax(0,1fr) auto auto;gap:6px}.lgv2-role-manager.has-custom{grid-template-rows:auto minmax(0,1fr) minmax(0,128px) auto auto}.lgv2-role-manager .lgv2-role-grid{grid-row:2}.lgv2-role-manager.has-custom .lgv2-custom-role-editor{min-height:0;max-height:128px;overflow:auto;overscroll-behavior:contain}
  .lgv2-role-manager-head{min-height:56px;display:grid;grid-template-columns:38px minmax(0,1fr);gap:9px;align-items:center;padding:2px 1px}
  .lgv2-role-manager-head>button{width:36px;height:36px;border-radius:50%;border:1px solid #d3b57d;background:#fffaf0;color:#6b5143;display:grid;place-items:center;cursor:pointer}.lgv2-role-manager-head>button svg{width:17px;height:17px}.lgv2-role-manager-head>div{min-width:0}.lgv2-role-manager-head small{font:800 6.72px/1 var(--serif);letter-spacing:.11em;color:#7a5626}.lgv2-role-manager-head h1{margin:2px 0 0;color:var(--wine);font:800 17.28px/1 var(--serif);letter-spacing:.05em}.lgv2-role-manager-head p{margin:3px 0 0;color:#5f4c40;font-size:8px;line-height:1.25}
  .lgv2-role-grid{min-height:0;overflow-y:auto;overscroll-behavior:contain;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-content:start;gap:6px;padding:2px 1px 7px}
  .lgv2-role-tile{position:relative;min-width:0;aspect-ratio:.655;border-radius:9px;background:#ead9c0;box-shadow:0 4px 10px rgba(68,42,26,.08);overflow:visible}.lgv2-role-add{width:100%;height:100%;display:block;border:1px solid #d8c09a;border-radius:9px;background:#f4e7d4;padding:0;overflow:hidden;cursor:pointer}.lgv2-role-add:disabled{cursor:default}.lgv2-role-add img{display:block;width:100%;height:100%;object-fit:contain;border-radius:8px;background:#efe0c8}.lgv2-role-tile.is-selected .lgv2-role-add{border-color:#a72b42;box-shadow:0 0 0 2px rgba(130,20,45,.10),0 7px 14px rgba(92,20,42,.11)}
  .lgv2-role-count{position:absolute;right:-4px;top:-5px;z-index:4;min-width:21px;height:21px;padding:0 5px;border:2px solid #fff6e8;border-radius:999px;background:#92162f;color:#fff;display:grid;place-items:center;font:800 8.32px/1 var(--sans);box-shadow:0 3px 7px rgba(92,11,30,.2);pointer-events:none}
  .lgv2-role-minus{position:absolute;left:-4px;bottom:-5px;z-index:4;width:22px;height:22px;border:2px solid #fff6e8;border-radius:50%;background:#751127;color:#fff;display:grid;place-items:center;font:800 16px/1 var(--sans);box-shadow:0 3px 7px rgba(92,11,30,.2);cursor:pointer}
  .lgv2-role-present{position:absolute;right:-4px;top:-5px;z-index:4;width:21px;height:21px;border:2px solid #fff6e8;border-radius:50%;background:#6d8e55;color:#fff;display:grid;place-items:center;box-shadow:0 3px 7px rgba(55,90,44,.18)}.lgv2-role-present svg{width:11px;height:11px;fill:currentColor}
  .lgv2-role-manager-foot{min-height:38px;border:1px solid #ddc69f;border-radius:13px;background:rgba(255,250,241,.95);padding:6px 9px;display:flex;align-items:center;justify-content:space-between;gap:8px}.lgv2-role-manager-foot small{font-size:7.52px;color:#63493a}.lgv2-role-manager-foot b{font:700 8px/1.15 var(--serif);color:#6f2431;text-align:right}.lgv2-role-manager-foot.is-private b{color:#6f5c49}

  /* Persistent circle statuses. Dead players keep their seat; mayor keeps a crown. */
  .lgv2-circle-player.is-dead .lgv2-circle-avatar img{filter:grayscale(.82) sepia(.06) saturate(.52) brightness(.84);opacity:.78}.lgv2-circle-player.is-dead .lgv2-circle-avatar{cursor:default!important;filter:drop-shadow(0 4px 8px rgba(25,21,24,.14));box-shadow:0 0 0 1.5px rgba(111,98,88,.5),0 0 0 3px rgba(244,232,211,.34)}.lgv2-circle-player.is-dead>b{text-decoration:none;opacity:.72;color:#62584f}
  .lgv2-avatar-dead{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);z-index:8;width:63%;height:63%;border-radius:50%;display:grid;place-items:center;background:rgba(20,20,24,.66);border:1px solid rgba(255,245,226,.65);color:#fff1dc;font-style:normal;font-size:clamp(11.52px,3.3vw,16.8px);line-height:1;box-shadow:0 4px 14px rgba(0,0,0,.24)}
  .lgv2-avatar-crown{position:absolute;z-index:10;left:50%;top:-13px;transform:translateX(-50%) rotate(-3deg);width:25px;height:21px;display:grid;place-items:center;color:#f1c96e;filter:drop-shadow(0 2px 3px rgba(67,37,18,.28));pointer-events:none}.lgv2-avatar-crown svg{width:25px;height:21px;fill:currentColor}.lgv2-circle-player.is-mayor .lgv2-circle-avatar{box-shadow:0 0 0 2px rgba(214,168,76,.52),0 0 15px rgba(214,168,76,.22)}

  /* Live speech focus follows the current speaker in the ring. */
  .lgv2-speaking-waves{position:absolute;inset:-8px;z-index:-1;border-radius:50%;pointer-events:none}.lgv2-speaking-waves i{position:absolute;inset:0;border:2px solid rgba(128,23,50,.48);border-radius:50%;animation:lgv2-speech-ring 1.35s ease-out infinite}.lgv2-speaking-waves i:nth-child(2){animation-delay:.34s}.lgv2-speaking-waves i:nth-child(3){animation-delay:.68s}.lgv2-circle-player.is-speaking-live{z-index:24}.lgv2-circle-player.is-speaking-live .lgv2-circle-avatar{animation:lgv2-speaker-breathe .7s ease-in-out infinite alternate;box-shadow:0 0 0 3px #891a34,0 0 0 7px rgba(137,26,52,.10),0 0 23px rgba(137,26,52,.25)}

  /* Sequential public elimination voting. */
  .lgv2-circle-player.is-day-vote-targetable .lgv2-circle-avatar{cursor:pointer}.lgv2-circle-player.is-day-vote-targetable .lgv2-circle-avatar::after{content:"";position:absolute;inset:-5px;border:1px solid rgba(130,25,49,.32);border-radius:50%;animation:lgv2-vote-target 1.25s ease-in-out infinite alternate}.lgv2-circle-player.is-day-vote-pending .lgv2-circle-avatar{box-shadow:0 0 0 3px #86172f,0 0 0 7px rgba(134,23,47,.12),0 0 22px rgba(134,23,47,.24)}
  .lgv2-day-vote-count{position:absolute;right:-7px;top:-7px;z-index:12;min-width:22px;height:22px;padding:0 5px;border-radius:999px;border:2px solid #fff6e8;background:linear-gradient(145deg,#781126,#a8223d);color:#fff;display:grid;place-items:center;font:800 8.32px/1 var(--sans);font-style:normal;box-shadow:0 4px 10px rgba(98,16,39,.24)}

  /* Day flow: one compact component area between the ring and fixed bottom bar. */
  .lgv2-circle-screen.is-day-flow{background:linear-gradient(180deg,#f8eee0 0%,#fff9ef 44%,#f4e4ce 100%)}.lgv2-circle-screen.is-day-flow::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 20%,rgba(255,246,214,.82),transparent 32%);z-index:0}.lgv2-circle-screen.is-day-flow .lgv2-circle-stage{position:relative;z-index:1}
  .lgv2-day-panel{position:relative;width:100%;min-height:138px;padding:11px;border:1px solid #dcc29b;border-radius:19px;background:linear-gradient(180deg,rgba(255,251,244,.98),rgba(249,238,222,.98));box-shadow:0 10px 23px rgba(93,60,34,.08),inset 0 1px rgba(255,255,255,.8);color:#563b32;display:grid;gap:9px;align-content:start;overflow:hidden;animation:lgv2-day-panel-in .38s cubic-bezier(.2,.75,.2,1) both}.lgv2-day-panel::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 8% 4%,rgba(206,157,76,.09),transparent 28%)}
  .lgv2-day-panel>header{position:relative;z-index:1;display:grid;grid-template-columns:43px minmax(0,1fr) auto;gap:9px;align-items:center}.lgv2-day-panel>header>span{width:43px;height:43px;border-radius:50%;display:grid;place-items:center;background:#86152e;color:#edc979;border:1px solid #c99857;box-shadow:0 5px 12px rgba(102,24,44,.13)}.lgv2-day-panel>header>span svg{width:21px;height:21px;fill:currentColor}.lgv2-day-panel>header>div{min-width:0;display:grid;gap:2px}.lgv2-day-panel>header small,.lgv2-day-panel>small{font:800 6.72px/1 var(--serif);letter-spacing:.11em;color:#a27243}.lgv2-day-panel>header h2,.lgv2-day-panel>h2{margin:0;color:#74152a;font:800 14.08px/1.05 var(--serif)}.lgv2-day-panel>header p,.lgv2-day-panel>p{margin:0;color:#887567;font-size:8px;line-height:1.35}.lgv2-day-panel>header>strong{min-width:43px;height:27px;padding:0 8px;border:1px solid #d9bc90;border-radius:999px;background:#fff9ef;color:#7d2332;display:grid;place-items:center;font:800 8.8px/1 var(--serif)}
  .lgv2-day-glow{position:absolute;right:-40px;top:-55px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(240,191,89,.22),transparent 66%);pointer-events:none}.lgv2-day-wait{position:relative;z-index:1;padding:7px 9px;border:1px solid #e4d1b2;border-radius:11px;background:rgba(255,255,255,.48);text-align:center!important;color:var(--bp-encre-douce,#6E5B45)!important}.lgv2-day-rule-alert{position:relative;z-index:1;padding:8px 10px;border:1px solid #d9b884;border-radius:12px;background:#fff4df;display:grid;gap:3px;text-align:center}.lgv2-day-rule-alert b{font:800 8.8px/1 var(--serif);color:#82192d}.lgv2-day-rule-alert small{font-size:7.52px;line-height:1.3;color:#63493a}
  .lgv2-day-primary{position:relative;z-index:1;min-height:45px;width:100%;border:1px solid #b8864f;border-radius:14px;background:linear-gradient(145deg,#731128,#971a37 55%,#6b1026);color:#fff0d5;display:grid;grid-template-columns:27px minmax(0,1fr) 14px;align-items:center;gap:7px;padding:7px 11px;box-shadow:0 8px 17px rgba(104,15,42,.16),inset 0 1px rgba(255,255,255,.11);cursor:pointer;overflow:visible;white-space:normal}.lgv2-day-primary:disabled{opacity:.48;filter:saturate(.5);cursor:not-allowed}.lgv2-day-primary>svg{width:18px;height:18px;fill:#edc577}.lgv2-day-primary>span{display:grid;gap:3px;text-align:left;min-width:0;white-space:normal}.lgv2-day-primary>span>small{font:700 6.08px/1 var(--sans);letter-spacing:.08em;color:#d6b98d}.lgv2-day-primary>span>b,.lgv2-day-primary>span:not(:has(b)){font:800 clamp(7.52px,2vw,8.96px)/1.18 var(--serif);letter-spacing:.018em;white-space:normal;overflow-wrap:anywhere}.lgv2-day-primary.is-night{background:linear-gradient(145deg,#26172c,#501733 55%,#701a38)}
  .lgv2-day-orbit{position:relative;width:49px;height:49px;margin:0 auto;border-radius:50%;display:grid;place-items:center;background:#84162f;color:#efca7d;border:1px solid #c99a58;box-shadow:0 0 0 6px rgba(147,87,43,.05)}.lgv2-day-orbit svg{width:23px;height:23px;fill:currentColor}.lgv2-day-panel.is-waiting,.lgv2-day-panel.is-first-done,.lgv2-day-panel.is-tie,.lgv2-day-panel.is-result{justify-items:center;text-align:center;align-content:center}.lgv2-day-panel.is-first-done{align-content:start}.lgv2-day-panel.is-waiting p,.lgv2-day-panel.is-first-done>p,.lgv2-day-panel.is-tie>p,.lgv2-day-panel.is-result>p{max-width:330px}
  .lgv2-direction-choice{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:7px}.lgv2-direction-choice button{min-width:0;min-height:76px;border:1px solid #d7bc91;border-radius:14px;background:#fff9ef;color:#6d3b34;display:grid;grid-template-columns:28px 1fr;grid-template-rows:auto auto;align-items:center;text-align:left;column-gap:7px;padding:8px;cursor:pointer;box-shadow:0 5px 12px rgba(84,57,31,.05)}.lgv2-direction-choice button>i{grid-row:1/3;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#86152e;color:#f1cd7e;font:800 16px/1 var(--sans);font-style:normal}.lgv2-direction-choice b{font:800 7.68px/1 var(--serif);color:#78172c}.lgv2-direction-choice small{font-size:6.72px;line-height:1.25;color:#8e7a6b}
  .lgv2-day-speaker{position:relative;z-index:1;display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 8px;border:1px solid #e0caaa;border-radius:13px;background:#fff9ef}.lgv2-day-speaker-avatar{position:relative;width:46px;height:46px;border-radius:50%;display:block}.lgv2-day-speaker-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;border:2px solid #c9a46d}.lgv2-day-speaker-avatar>i{position:absolute;left:50%;top:-11px;transform:translateX(-50%);width:21px;height:17px;color:#e2b753}.lgv2-day-speaker-avatar>i svg{width:100%;height:100%;fill:currentColor}.lgv2-day-speaker-avatar.is-talking::after{content:"";position:absolute;inset:-6px;border:2px solid rgba(135,24,49,.42);border-radius:50%;animation:lgv2-speaker-breathe .7s ease-in-out infinite alternate}.lgv2-day-speaker>b{font:800 10.56px/1 var(--serif);color:#6d2430}.lgv2-day-speaker>strong{min-width:52px;height:31px;border-radius:999px;background:#84152e;color:#fff3db;display:grid;place-items:center;font:800 12px/1 var(--serif)}.lgv2-day-speaker>strong.is-urgent{animation:lgv2-urgent .55s ease-in-out infinite alternate}
  .lgv2-live-pill{align-self:start;min-width:47px;height:23px;border-radius:999px;background:#8e1630;color:#fff;display:flex;align-items:center;justify-content:center;gap:4px;font:800 6.4px/1 var(--sans);letter-spacing:.07em}.lgv2-live-pill i{width:6px;height:6px;border-radius:50%;background:#ffb9ae;animation:lgv2-live-dot .7s ease-in-out infinite alternate}
  .lgv2-day-pass{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}.lgv2-day-pass>small{font-size:6.88px;color:#8c796b}.lgv2-day-pass button{min-height:37px;border:1px solid #c5935b;border-radius:11px;background:#7c142d;color:#fff1d8;padding:7px 10px;display:flex;align-items:center;justify-content:center;gap:6px;font:800 clamp(6.72px,1.8vw,7.68px)/1.15 var(--serif);white-space:normal;text-align:center}.lgv2-day-pass button:disabled{opacity:.42}.lgv2-day-pass svg{width:14px;height:14px;fill:#e9c77f}
  .lgv2-second-request{position:relative;z-index:1;width:100%;min-height:43px;border:1px solid #c59b68;border-radius:13px;background:#fff8eb;color:#731a2d;display:grid;grid-template-columns:28px 1fr;align-items:center;gap:7px;padding:5px 9px;text-align:left}.lgv2-second-request>svg{width:18px;height:18px;fill:#8b1a32}.lgv2-second-request span{display:grid;gap:2px}.lgv2-second-request b{font:800 7.84px/1 var(--serif)}.lgv2-second-request small{font-size:6.4px;color:#927d6d}.lgv2-second-own{position:relative;z-index:1;padding:6px 9px;border:1px solid #ddc7a6;border-radius:10px;background:#fff9ef!important;font-size:7.2px!important}.lgv2-second-own.is-refused{color:#944653!important}.lgv2-second-own.is-done{color:#6b7861!important}
  .lgv2-second-decisions{position:relative;z-index:2;width:100%;display:grid;gap:5px}.lgv2-second-decisions>small{font:800 6.4px/1 var(--serif);letter-spacing:.08em;color:#9f7448}.lgv2-second-decisions article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center;padding:5px 7px;border:1px solid #dfc8a5;border-radius:11px;background:#fff9ef}.lgv2-second-decisions article>span{display:flex;align-items:center;gap:6px;min-width:0}.lgv2-second-decisions img{width:28px;height:28px;border-radius:50%;object-fit:cover}.lgv2-second-decisions b{font:700 8.16px/1 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lgv2-second-decisions article>div{display:flex;gap:4px}.lgv2-second-decisions button{min-height:28px;border:1px solid #cda977;border-radius:8px;background:#7d172e;color:#fff2d9;padding:5px 7px;font:800 5.92px/1.12 var(--sans);white-space:normal;text-align:center}.lgv2-second-decisions button:last-child{background:#fff7ea;color:#845e52}
  .lgv2-second-history{position:relative;z-index:1;width:100%;display:flex;gap:5px;overflow-x:auto;padding-bottom:1px}.lgv2-second-history>span{flex:0 0 auto;display:grid;grid-template-columns:24px auto;grid-template-rows:auto auto;column-gap:5px;align-items:center;padding:4px 7px;border:1px solid #dec8a7;border-radius:10px;background:#fff9ef}.lgv2-second-history img{grid-row:1/3;width:24px;height:24px;border-radius:50%;object-fit:cover}.lgv2-second-history b{font:700 6.88px/1 var(--serif)}.lgv2-second-history em{font:800 4.96px/1 var(--sans);font-style:normal;color:#9a7b64}.lgv2-second-history .is-accepted em,.lgv2-second-history .is-done em{color:#66805b}.lgv2-second-history .is-refused em{color:#a34d5a}.lgv2-day-vote-locked{position:relative;z-index:1;padding:5px 8px;border-radius:10px;background:rgba(30,15,12,.62)!important;color:#f0e2ca!important;text-align:center!important;font-size:6.88px!important}.lgv2-tie-players{display:flex;justify-content:center;flex-wrap:wrap;gap:6px}.lgv2-tie-players>span{display:flex;align-items:center;gap:5px;padding:4px 7px;border:1px solid #d9c09a;border-radius:999px;background:#fff8ed}.lgv2-tie-players img{width:28px;height:28px;border-radius:50%;object-fit:cover}.lgv2-tie-players b{font:700 7.36px/1 var(--serif);color:#722033}

  .lgv2-day-panel.is-runoff{border-color:#c99b61;background:linear-gradient(180deg,#fff9ee,#f7e7cf)}
  .lgv2-runoff-banner{position:relative;z-index:1;display:grid;justify-items:center;gap:5px;padding:7px;border:1px solid #d7b684;border-radius:13px;background:#fff7e9}.lgv2-runoff-banner>small{font:800 6.4px/1 var(--serif);letter-spacing:.11em;color:#9a6638}.lgv2-runoff-banner>div{display:flex;justify-content:center;gap:9px;flex-wrap:wrap}.lgv2-runoff-banner span{display:grid;grid-template-columns:32px minmax(0,1fr) 22px;align-items:center;gap:5px;min-width:112px;padding:4px 6px;border:1px solid #ddc39e;border-radius:999px;background:#fffdf7}.lgv2-runoff-banner img{width:32px;height:32px;border-radius:50%;object-fit:cover;border:1px solid #c78e51}.lgv2-runoff-banner b{font:700 7.36px/1 var(--serif);color:#721a30}.lgv2-runoff-banner em{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#81162e;color:#fff;font:800 7.84px/1 var(--sans);font-style:normal}
  .lgv2-circle-player.is-day-runoff-muted .lgv2-circle-avatar{filter:grayscale(1) saturate(.12) brightness(.72);opacity:.48;box-shadow:none}.lgv2-circle-player.is-day-runoff-muted>b{opacity:.45;color:#8e8982}.lgv2-circle-player.is-day-runoff-finalist{z-index:12}.lgv2-circle-player.is-day-runoff-finalist .lgv2-circle-avatar{box-shadow:0 0 0 3px #f4dfad,0 0 0 5px #8a1832,0 8px 22px rgba(122,20,47,.26);filter:none;opacity:1}.lgv2-circle-player.is-day-runoff-finalist>b{color:#77162c;opacity:1;font-weight:800}
  .lgv2-vote-local-hint{position:fixed;z-index:1200;min-height:38px;padding:8px 10px;border:1px solid #c8995a;border-radius:12px;background:rgba(51,28,29,.97);box-shadow:0 12px 28px rgba(28,12,16,.28);color:#fff0d6;text-align:center;font:700 7.68px/1.28 var(--serif);animation:lgv2-vote-hint-in .22s ease-out both;pointer-events:none}.lgv2-vote-local-hint.is-leaving{animation:lgv2-vote-hint-out .3s ease-in both}@keyframes lgv2-vote-hint-in{from{opacity:0;transform:translateY(5px) scale(.97)}to{opacity:1;transform:none}}@keyframes lgv2-vote-hint-out{to{opacity:0;transform:translateY(-5px) scale(.98)}}
  @keyframes lgv2-day-panel-in{from{opacity:0;transform:translateY(7px) scale(.99)}to{opacity:1;transform:none}}
  @keyframes lgv2-speech-ring{0%{opacity:.7;transform:scale(.86)}100%{opacity:0;transform:scale(1.42)}}
  @keyframes lgv2-speaker-breathe{to{transform:scale(1.045);filter:brightness(1.05)}}
  @keyframes lgv2-live-dot{to{opacity:.28;transform:scale(.78)}}
  @keyframes lgv2-vote-target{to{transform:scale(1.08);opacity:.7}}
  @keyframes lgv2-vote-feed-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

  @media(max-width:390px){.lgv2-role-grid{gap:5px}.lgv2-role-manager-head{min-height:50px}.lgv2-role-manager-head p{font-size:7.36px}.lgv2-day-panel{padding:9px;gap:7px;border-radius:17px;min-height:126px}.lgv2-day-panel>header{grid-template-columns:39px minmax(0,1fr) auto;gap:7px}.lgv2-day-panel>header>span{width:39px;height:39px}.lgv2-day-panel>header h2{font-size:12.48px}.lgv2-direction-choice{gap:5px}.lgv2-direction-choice button{min-height:68px;padding:6px}.lgv2-direction-choice small{font-size:6.08px}.lgv2-day-primary{min-height:42px}.lgv2-day-speaker{grid-template-columns:42px minmax(0,1fr) auto}.lgv2-day-speaker-avatar{width:40px;height:40px}}
  @media(max-height:720px){.lgv2-day-panel{min-height:112px;padding-block:7px;gap:6px}.lgv2-day-panel>header>span{width:37px;height:37px}.lgv2-day-panel>header{grid-template-columns:37px minmax(0,1fr) auto}.lgv2-day-primary{min-height:39px}.lgv2-direction-choice button{min-height:59px}.lgv2-second-history{max-height:38px}}
  @media(prefers-reduced-motion:reduce){.lgv2-speaking-waves i,
.lgv2-circle-player.is-speaking-live .lgv2-circle-avatar,
.lgv2-circle-player.is-day-vote-targetable .lgv2-circle-avatar::after,
.lgv2-day-panel,
.lgv2-live-pill i,
.lgv2-private-audio-pill i,
.lgv2-day-speaker-avatar.is-talking::after{animation:none!important}}
}

/* Night engine — first-class game phase components (V2.9.1) */
.lgv2-night-start{margin-top:8px;min-height:48px;width:min(100%,310px);border:1px solid #b98a4d;border-radius:15px;background:linear-gradient(135deg,#28172d,#4b1735 48%,#721b3a);color:#fff0d6;display:grid;grid-template-columns:36px minmax(0,1fr) 18px;align-items:center;gap:8px;padding:7px 10px;box-shadow:0 10px 24px rgba(55,23,42,.18),inset 0 1px 0 rgba(255,232,179,.12);cursor:pointer;overflow:hidden;position:relative}.lgv2-night-start::before{content:"";position:absolute;inset:-70% auto -70% -35%;width:38%;background:linear-gradient(90deg,transparent,rgba(255,231,175,.2),transparent);transform:rotate(18deg);animation:lgv2-night-shine 3.6s ease-in-out infinite}.lgv2-night-start>svg{width:24px;height:24px;fill:#e8bd6c}.lgv2-night-start>span{display:grid;gap:2px;text-align:left}.lgv2-night-start small{font-size:6.4px;letter-spacing:.08em;color:#cdbbba}.lgv2-night-start b{font:800 9.28px/1 var(--serif);letter-spacing:.04em}.lgv2-night-start>svg:last-child{width:14px}.lgv2-night-await{margin:6px 0 0!important;font-size:7.68px!important;color:#e6d8c0!important}
.lgv2-circle-screen.is-night-mode{background:linear-gradient(180deg,#10172a 0%,#151c32 35%,#12172b 100%);color:#edf0fa}.lgv2-circle-screen.is-night-mode::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 30%,rgba(93,115,165,.22),transparent 33%),linear-gradient(180deg,rgba(4,8,20,.06),rgba(4,8,20,.28));z-index:0}.lgv2-circle-screen.is-night-mode .lgv2-circle-stage{position:relative;z-index:2}.lgv2-night-atmosphere{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}.lgv2-night-atmosphere>span{position:absolute;right:7%;top:3%;width:72px;height:72px;border-radius:50%;background:radial-gradient(circle at 38% 34%,#f1ebce,#aab5cd 70%);box-shadow:0 0 30px rgba(191,207,240,.18);opacity:.55}.lgv2-night-atmosphere>i{position:absolute;width:3px;height:3px;border-radius:50%;background:#dfe9ff;box-shadow:0 0 8px #dfe9ff;opacity:.38}.lgv2-night-atmosphere>i:nth-child(1){left:15%;top:12%}.lgv2-night-atmosphere>i:nth-child(2){left:73%;top:19%}.lgv2-night-atmosphere>i:nth-child(3){left:34%;top:7%}.lgv2-circle-screen.is-night-mode .lgv2-player-ring{border-color:rgba(168,181,211,.22);background:radial-gradient(circle,rgba(54,68,103,.12),transparent 69%)}.lgv2-circle-screen.is-night-mode .lgv2-circle-player>b{color:#eee6df;text-shadow:0 1px 7px rgba(0,0,0,.5)}.lgv2-circle-screen.is-night-mode .lgv2-circle-avatar{box-shadow:0 5px 15px rgba(0,0,0,.28)}.lgv2-fire.is-night-fire{filter:saturate(.7) brightness(.72);opacity:.88}.lgv2-circle-player.is-night-targetable .lgv2-circle-avatar{cursor:pointer;animation:lgv2-night-target-pulse 1.5s ease-in-out infinite alternate}.lgv2-circle-player.is-night-targetable .lgv2-circle-avatar::after{content:"";position:absolute;inset:-5px;border:1px solid rgba(218,201,156,.45);border-radius:50%}.lgv2-circle-player.is-night-selected .lgv2-circle-avatar{box-shadow:0 0 0 3px #9e2846,0 0 0 7px rgba(158,40,70,.15),0 0 24px rgba(190,51,88,.34)}.lgv2-circle-player.is-night-protected .lgv2-circle-avatar{box-shadow:0 0 0 3px #5ca46d,0 0 0 7px rgba(80,161,103,.16),0 0 28px rgba(87,185,119,.38)}.lgv2-circle-player.is-night-protected .lgv2-circle-avatar::before{content:"";position:absolute;inset:-10px;border:1px solid rgba(104,212,137,.48);border-radius:50%;animation:lgv2-shield-ring 1.9s ease-in-out infinite}.lgv2-circle-player.is-night-wolf-final .lgv2-circle-avatar{box-shadow:0 0 0 3px #ad2a34,0 0 0 8px rgba(173,42,52,.13),0 0 28px rgba(213,54,61,.3)}.lgv2-circle-player.is-night-seer-target .lgv2-circle-avatar{box-shadow:0 0 0 3px #8d72cb,0 0 0 7px rgba(141,114,203,.15),0 0 30px rgba(155,125,223,.34)}.lgv2-night-vote-count{position:absolute;left:-6px;top:-6px;min-width:20px;height:20px;padding:0 4px;border-radius:999px;display:grid;place-items:center;background:#9e2846;border:2px solid #f0e5d2;color:#fff;font:800 7.52px/1 var(--sans);font-style:normal;z-index:5}
.lgv2-night-panel,.lgv2-morning-panel{position:relative;width:100%;min-height:142px;padding:12px;border:1px solid var(--bp-or-doux);border-radius:20px;background:linear-gradient(180deg,var(--bp-champ-1) 0%,var(--bp-champ-2) 100%);box-shadow:var(--bp-ombre),inset 0 1px 0 var(--bp-lueur);color:var(--bp-encre);display:grid;gap:10px;align-content:start;overflow:hidden}.lgv2-night-panel::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 12% 10%,rgba(208,178,117,.09),transparent 24%)}.lgv2-night-panel.is-arriving{animation:lgv2-night-panel-in .5s cubic-bezier(.2,.75,.2,1) both}.lgv2-night-panel header{position:relative;z-index:1;display:grid;grid-template-columns:44px minmax(0,1fr);gap:10px;align-items:center}.lgv2-night-panel header>span{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--bp-or-doux);background:radial-gradient(120% 120% at 32% 22%,var(--bp-medaille-1),var(--bp-medaille-2));color:var(--bp-or-fort)}.lgv2-night-panel header>span svg{width:22px;height:22px;fill:currentColor}.lgv2-night-panel header>div{display:grid;gap:3px;min-width:0}.lgv2-night-panel header small,.lgv2-morning-panel>small{font:800 6.88px/1 var(--serif);letter-spacing:.11em;color:var(--bp-sourcil)}.lgv2-night-panel header h2,.lgv2-morning-panel h2{margin:0;font:800 14.4px/1.05 var(--serif);color:#fff0d6}.lgv2-night-panel header p,.lgv2-morning-panel p{margin:0;font-size:8.32px;line-height:1.35;color:var(--bp-encre-douce)}.lgv2-night-queue{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.lgv2-night-queue>span{min-width:0;display:grid;justify-items:center;gap:3px;padding:6px 2px;border:1px solid rgba(166,154,147,.2);border-radius:10px;background:rgba(255,255,255,.025);opacity:.5}.lgv2-night-queue>span.is-done{opacity:.82;border-color:rgba(111,166,128,.36);background:rgba(73,121,87,.11)}.lgv2-night-queue>span.is-active,.lgv2-night-queue>span.is-ready{opacity:1;border-color:rgba(219,183,112,.44);background:rgba(124,71,84,.16)}.lgv2-night-queue i{width:20px;height:20px;display:grid;place-items:center;color:#d5b97c}.lgv2-night-queue svg{width:14px;height:14px;fill:currentColor}.lgv2-night-queue b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:6.24px;color:#d9d6d4}.lgv2-night-primary{position:relative;z-index:1;min-height:44px;border:1px solid #bb8d54;border-radius:14px;background:linear-gradient(135deg,#5d1733,#7d1d3c 55%,#48142d);box-shadow:0 8px 18px rgba(0,0,0,.17),inset 0 1px 0 rgba(255,235,193,.09);color:#fff0d2;display:grid;grid-template-columns:28px minmax(0,1fr) 15px;align-items:center;gap:7px;padding:7px 11px;font:800 clamp(7.36px,1.9vw,8.48px)/1.16 var(--serif);letter-spacing:.025em;white-space:normal;text-align:center}.lgv2-night-primary>svg,.lgv2-night-primary>span>svg{width:18px;height:18px;fill:#e6c178}.lgv2-night-primary.is-dawn{background:linear-gradient(135deg,#72512e,#a36b36 56%,#764029)}.lgv2-night-host-wait,.lgv2-night-secret,.lgv2-night-choice,.lgv2-night-rule{position:relative;z-index:1;margin:0;text-align:center;font-size:7.68px;line-height:1.3;color:#9fa4b2}.lgv2-night-secret{color:#9fd6ad;display:flex;justify-content:center;align-items:center;gap:5px}.lgv2-night-secret svg{width:14px;height:14px;fill:currentColor}.lgv2-night-live{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:9px}.lgv2-night-live strong{min-width:52px;height:32px;border-radius:999px;display:grid;place-items:center;border:1px solid rgba(210,172,108,.46);background:rgba(91,29,51,.45);color:#f1cf88;font:800 12.16px/1 var(--serif)}.lgv2-night-live strong.is-urgent{background:#8d1f35;color:#fff0db;animation:lgv2-urgent .55s ease-in-out infinite alternate}.lgv2-night-live span{font-size:7.52px;color:#aeb1bf}.lgv2-night-panel.is-sleeping{min-height:132px;justify-items:center;align-content:center;text-align:center;gap:5px}.lgv2-sleep-moon{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;color:#dfc686;background:rgba(90,72,104,.2);border:1px solid rgba(213,185,126,.35)}.lgv2-sleep-moon svg{width:22px;height:22px;fill:currentColor}.lgv2-night-panel.is-sleeping h2{margin:0;font:800 14.4px/1 var(--serif);color:#f0e5d5}.lgv2-night-panel.is-sleeping p{margin:0;max-width:300px;font-size:8px;line-height:1.4;color:#999eae}.lgv2-witch-victim{display:flex;justify-content:center;align-items:center;gap:8px}.lgv2-witch-victim img{width:42px;height:42px;border-radius:50%;object-fit:cover;border:2px solid #d2a56a}.lgv2-witch-victim b{font:700 10.88px/1 var(--serif);color:#f1e2d1}.lgv2-witch-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.lgv2-witch-actions button{min-height:40px;border:1px solid rgba(196,154,91,.5);border-radius:12px;background:#6d1734;color:#fff0d6;display:flex;align-items:center;justify-content:center;gap:6px;font:800 6.88px/1 var(--serif)}.lgv2-witch-actions button:last-child{background:rgba(255,255,255,.04);color:#c7c4c5}.lgv2-witch-actions svg{width:16px;height:16px;fill:#e7c06f}.lgv2-witch-victim>span{display:grid;gap:2px}.lgv2-witch-victim>span small{font:800 6.08px/1 var(--serif);letter-spacing:.09em;color:#bf9860}.lgv2-witch-victim.is-doomed{padding:7px 9px;border:1px solid rgba(199,88,94,.36);border-radius:14px;background:rgba(116,29,46,.14)}.lgv2-witch-victim.is-death{position:relative;padding:7px 36px 7px 9px;border:1px solid rgba(199,88,94,.45);border-radius:14px;background:rgba(116,29,46,.18)}.lgv2-witch-victim.is-death>em{position:absolute;right:9px;top:50%;transform:translateY(-50%);width:23px;height:23px;border-radius:50%;display:grid;place-items:center;background:#941f3b;border:2px solid #f0d08c;color:#fff;font:800 8.8px/1 var(--sans);font-style:normal}.lgv2-witch-question{display:grid;gap:6px}.lgv2-witch-question>small{text-align:center;font:800 6.4px/1 var(--serif);letter-spacing:.11em;color:#c6a670}.lgv2-witch-question>div{display:grid;grid-template-columns:1fr 1fr;gap:7px}.lgv2-witch-question button,.lgv2-witch-confirm button{min-height:42px;padding:7px 9px;border:1px solid rgba(196,154,91,.5);border-radius:12px;background:rgba(255,255,255,.04);color:#ded4cb;display:flex;align-items:center;justify-content:center;gap:6px;text-align:center;font:800 clamp(6.4px,1.8vw,7.52px)/1.16 var(--serif);white-space:normal}.lgv2-witch-question button.is-life{background:linear-gradient(135deg,#28543c,#38704f);color:#f0f4df}.lgv2-witch-question button.is-death,.lgv2-witch-confirm button.is-confirm{background:linear-gradient(135deg,#67162e,#8d1c38);color:#fff0d6}.lgv2-witch-question svg,.lgv2-witch-confirm svg{width:15px;height:15px;fill:currentColor}.lgv2-witch-summary{display:flex;justify-content:center;align-items:center;min-height:38px}.lgv2-witch-summary>span{display:grid;grid-template-columns:32px auto;column-gap:6px;align-items:center}.lgv2-witch-summary img{grid-row:1/3;width:32px;height:32px;border-radius:50%;object-fit:cover}.lgv2-witch-summary b{font:700 8.32px/1 var(--serif);color:#eee1d0}.lgv2-witch-summary small{font-size:5.76px;color:#a7b5aa}.lgv2-witch-confirm{display:grid;grid-template-columns:.8fr 1.2fr;gap:7px}.lgv2-wolf-own-choice{display:grid;grid-template-columns:42px minmax(0,1fr) 28px;align-items:center;gap:8px;padding:7px;border:1px solid rgba(202,155,86,.42);border-radius:14px;background:rgba(105,24,46,.17)}.lgv2-wolf-own-choice img{width:42px;height:42px;border-radius:50%;object-fit:cover;border:2px solid #d3a660}.lgv2-wolf-own-choice span{display:grid;gap:2px}.lgv2-wolf-own-choice small{font:800 5.76px/1 var(--serif);letter-spacing:.08em;color:#c09a64}.lgv2-wolf-own-choice b{font:800 9.28px/1 var(--serif);color:#f1e0cf}.lgv2-wolf-own-choice em{font-size:6.08px;color:#a7aab5;font-style:normal}.lgv2-wolf-own-choice>i{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#8c1834;border:2px solid #e6c379;color:#fff;font:800 8.8px/1 var(--sans);font-style:normal}.lgv2-wolf-instruction{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px;border:1px dashed rgba(209,170,101,.35);border-radius:13px;color:#d9bc7c}.lgv2-wolf-instruction>svg{width:23px;height:23px;fill:currentColor}.lgv2-wolf-instruction>span{display:grid;gap:2px}.lgv2-wolf-instruction b{font:800 7.2px/1.1 var(--serif);color:#ead6ba}.lgv2-wolf-instruction small{font-size:6.08px;line-height:1.25;color:#9fa3b0}.lgv2-wolf-majority{margin:0;text-align:center;color:#aca9b3;font-size:6.88px}.lgv2-wolf-majority b{color:#efc675;font-size:9.92px}.lgv2-night-live.is-wolf-live{justify-content:space-between;padding:0 4px}
.lgv2-seer-card{display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px;align-items:center;padding:7px;border:1px solid rgba(168,137,206,.42);border-radius:14px;background:linear-gradient(135deg,rgba(104,77,142,.21),rgba(38,31,66,.38))}.lgv2-seer-card>img{width:88px;aspect-ratio:.655;object-fit:contain;border-radius:8px;background:#e8d9c3}.lgv2-seer-card>div{display:grid;gap:3px}.lgv2-seer-card small{font-size:6.4px;letter-spacing:.08em;color:#ae98d6}.lgv2-seer-card b{font:800 11.84px/1 var(--serif);color:#f2e9ff}.lgv2-seer-card p{margin:0;font-size:7.52px;line-height:1.3;color:#b9b1c8}
.lgv2-morning-panel{background:linear-gradient(180deg,#fff7e8,#f4e2c9);border-color:#cfaa72;color:#563a33;justify-items:center;text-align:center;align-content:center}.lgv2-morning-panel>span{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#8c1932;color:#f2ca79}.lgv2-morning-panel>span svg{width:22px;height:22px;fill:currentColor}.lgv2-morning-panel h2{color:#7b1730}.lgv2-morning-panel p{color:#8d7969}.lgv2-morning-victim{display:flex;align-items:center;gap:8px;padding:5px 10px;border:1px solid #d8bb8d;border-radius:999px;background:#fff9ef}.lgv2-morning-victim img{width:32px;height:32px;border-radius:50%;object-fit:cover}.lgv2-morning-victim b{font:700 10.4px/1 var(--serif);color:#5c3933}
@keyframes lgv2-night-shine{0%,55%{transform:translateX(-160%) rotate(18deg)}85%,100%{transform:translateX(560%) rotate(18deg)}}@keyframes lgv2-night-target-pulse{to{transform:scale(1.035);filter:brightness(1.08)}}@keyframes lgv2-shield-ring{0%{opacity:.2;transform:scale(.92)}65%{opacity:.65}100%{opacity:0;transform:scale(1.17)}}@keyframes lgv2-night-panel-in{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}@keyframes lgv2-urgent{to{box-shadow:0 0 0 5px rgba(183,45,67,.12)}}
@media(max-width:390px){.lgv2-night-panel,.lgv2-morning-panel{padding:9px;gap:8px;border-radius:17px}.lgv2-night-panel header{grid-template-columns:39px minmax(0,1fr);gap:8px}.lgv2-night-panel header>span{width:39px;height:39px}.lgv2-night-panel header h2{font-size:12.8px}.lgv2-night-queue{gap:3px}.lgv2-night-queue>span{padding-inline:1px}.lgv2-witch-actions{grid-template-columns:1fr}.lgv2-witch-question>div,.lgv2-witch-confirm{grid-template-columns:1fr}.lgv2-runoff-banner span{min-width:100px}.lgv2-seer-card{grid-template-columns:74px minmax(0,1fr)}.lgv2-seer-card>img{width:74px}}
@media(max-height:720px){.lgv2-night-panel,.lgv2-morning-panel{min-height:116px;padding-block:8px}.lgv2-night-panel header>span{width:38px;height:38px}.lgv2-night-panel header{grid-template-columns:38px minmax(0,1fr)}.lgv2-night-queue>span{padding-block:4px}}
@media(prefers-reduced-motion:reduce){.lgv2-night-start::before,.lgv2-circle-player.is-night-targetable .lgv2-circle-avatar,.lgv2-circle-player.is-night-protected .lgv2-circle-avatar::before,.lgv2-night-live strong.is-urgent{animation:none!important}}

@layer game-v30 {
  /* V3.0 role-power components. These are dedicated components, not masks over older screens. */
  .lgv2-custom-role-editor{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.8fr) minmax(0,1.2fr);gap:7px;align-items:end;padding:8px 9px;border:1px solid #dac092;border-radius:14px;background:linear-gradient(180deg,#fff9ef,#f5e5cf);box-shadow:0 5px 13px rgba(73,43,27,.06)}
  .lgv2-custom-role-editor>div{min-width:0;align-self:center}.lgv2-custom-role-editor small{display:block;font:850 6.24px/1 var(--serif);letter-spacing:.11em;color:#a27843}.lgv2-custom-role-editor b{display:block;margin-top:3px;color:var(--bp-encre);font:750 9.12px/1 var(--serif)}.lgv2-custom-role-editor p{margin-top:3px;color:#8a7868;font-size:6.56px;line-height:1.25}.lgv2-custom-role-editor label{display:grid;gap:3px;color:#816d5d;font-size:6.4px;font-weight:800}.lgv2-custom-role-editor input,.lgv2-custom-role-editor textarea{width:100%;min-width:0;border:1px solid #d8bf98;border-radius:9px;background:#fffaf2;color:#4e3930;outline:0;font-size:7.68px}.lgv2-custom-role-editor input{height:32px;padding:0 8px}.lgv2-custom-role-editor textarea{height:46px;padding:7px 8px;resize:none;line-height:1.25}.lgv2-custom-role-editor input:focus,.lgv2-custom-role-editor textarea:focus{border-color:#9b3950;box-shadow:0 0 0 2px rgba(124,16,39,.08)}

  .lgv2-role-channel{height:100%;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:8px;padding:8px 8px 5px}.lgv2-role-channel>header{display:grid;grid-template-columns:40px minmax(0,1fr);gap:8px;align-items:center;padding:7px 8px;border:1px solid #ddc69f;border-radius:14px;background:#fff9ef}.lgv2-role-channel>header>span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--bp-accent);color:#f0c571;font-size:16.8px}.lgv2-role-channel>header small{font:850 6.24px/1 var(--serif);letter-spacing:.11em;color:#a27642}.lgv2-role-channel>header h3{margin:3px 0 0;color:var(--bp-encre);font:800 11.52px/1 var(--serif)}.lgv2-role-channel>header p{margin:3px 0 0;color:#8b796a;font-size:6.88px}.lgv2-role-channel-members{display:flex;gap:5px;overflow-x:auto;padding:1px 2px}.lgv2-role-channel-members>span{display:flex;align-items:center;gap:4px;flex:0 0 auto;padding:3px 6px 3px 3px;border:1px solid #dcc498;border-radius:999px;background:#f9ecda}.lgv2-role-channel-members img{width:24px;height:24px;border-radius:50%;object-fit:cover}.lgv2-role-channel-members b{font:750 6.88px/1 var(--serif);color:#65463a}.lgv2-role-channel-feed{min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:6px;border:1px solid #e0ccb0;border-radius:14px;background:rgba(255,250,242,.72)}.lgv2-role-channel-feed article{max-width:82%;align-self:flex-start;padding:6px 8px;border-radius:11px 11px 11px 4px;background:#efe0ca}.lgv2-role-channel-feed article.is-me{align-self:flex-end;border-radius:11px 11px 4px 11px;background:#7c1730;color:#fff4df}.lgv2-role-channel-feed small{display:block;margin-bottom:2px;font-size:5.76px;font-weight:850;opacity:.72}.lgv2-role-channel-feed p{font-size:7.52px;line-height:1.3}.lgv2-role-channel-empty{margin:auto;text-align:center;color:#9a8878;font-size:7.36px}.lgv2-role-channel-compose{display:grid;grid-template-columns:minmax(0,1fr) 34px;gap:6px}.lgv2-role-channel-compose input{height:34px;border:1px solid #d8c09a;border-radius:11px;background:#fffaf2;padding:0 10px;color:#4d382f;outline:0;font-size:7.68px}.lgv2-role-channel-compose button{width:34px;height:34px;border:1px solid #a46c45;border-radius:10px;background:var(--bp-accent);color:#f7d68f;display:grid;place-items:center;cursor:pointer}.lgv2-role-channel-compose button svg{width:15px;height:15px;fill:currentColor}
  /* Bandeau vocal des canaux privés de nuit. Même grammaire visuelle que le
     canal texte : parchemin, bordeaux, or ancien. Aucune surcouche : c'est la
     règle source du composant, elle n'écrase rien. */
  .lgv2-private-audio{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 8px;border:1px solid #ddc69f;border-radius:13px;background:#fff9ef}
  .lgv2-private-audio-mark{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--bp-accent);color:#f0c571;font-size:13.6px}.lgv2-private-audio-mark svg{width:16px;height:16px}
  .lgv2-private-audio-body small{display:block;font:850 5.76px/1 var(--serif);letter-spacing:.11em;color:#a27642}
  .lgv2-private-audio-body b{display:block;margin-top:3px;font:800 8px/1.15 var(--serif);color:var(--bp-encre)}
  .lgv2-private-audio button{min-height:28px;padding:0 11px;border:1px solid #a46c45;border-radius:9px;background:var(--bp-accent);color:#f7d68f;font:800 6.72px/1 var(--serif);letter-spacing:.06em;cursor:pointer;touch-action:manipulation}
  .lgv2-private-audio button[disabled]{opacity:.55;cursor:default}
  .lgv2-private-audio-unlock{background:#fff7e8;color:#74132a;border-color:#c89d60}
  .lgv2-private-audio-pill{display:flex;align-items:center;gap:5px;height:23px;padding:0 9px;border-radius:999px;background:#8e1630;color:#fff;font:800 6.4px/1 var(--sans);letter-spacing:.07em}
  .lgv2-private-audio-pill i{width:6px;height:6px;border-radius:50%;background:#ffb9ae;animation:lgv2-live-dot .7s ease-in-out infinite alternate}
  .lgv2-private-audio.is-live{border-color:#c08a4f;box-shadow:0 0 0 3px rgba(140,26,50,.06)}
  .lgv2-circle-screen.is-night-mode .lgv2-private-audio{margin:0 0 7px;background:linear-gradient(135deg,#2a1820,#171116);border-color:#8e6546}
  .lgv2-circle-screen.is-night-mode .lgv2-private-audio-body small{color:#c9a273}
  .lgv2-circle-screen.is-night-mode .lgv2-private-audio-body b{color:#f0cb82}
  .lgv2-circle-screen.is-night-mode .lgv2-private-audio-mark{background:#4f1128}
  .lgv2-circle-screen.is-night-mode .lgv2-private-audio-unlock{background:#f3e2c4;color:#5d1024}
  .lgv2-role-channel.is-wolves .lgv2-private-audio{background:linear-gradient(135deg,#2a1820,#171116);border-color:#8e6546}
  .lgv2-role-channel.is-wolves .lgv2-private-audio-body b{color:#f0cb82}
  .lgv2-role-channel.is-wolves .lgv2-private-audio-mark{background:#4f1128}

.lgv2-role-channel.is-wolves>header{background:linear-gradient(135deg,#2a1820,#171116);border-color:#8e6546;color:#f3dfbd}.lgv2-role-channel.is-wolves>header>span{background:#4f1128;box-shadow:0 0 0 4px rgba(124,28,53,.09)}.lgv2-role-channel.is-wolves>header h3{color:#f0cb82}.lgv2-role-channel.is-wolves>header p{color:#b8a99e}.lgv2-role-channel.is-wolves .lgv2-role-channel-feed{background:linear-gradient(180deg,#25191f,#171116);border-color:#705743}.lgv2-role-channel.is-wolves .lgv2-role-channel-feed article{background:#3a2928;color:#eadbc8}.lgv2-role-channel.is-wolves .lgv2-role-channel-feed article.is-me{background:#6f1832}.lgv2-role-channel.is-wolves .lgv2-role-channel-empty{color:#a99a91}.lgv2-role-channel.is-wolves .lgv2-role-channel-members>span{background:#322126;border-color:#765a47}.lgv2-role-channel.is-wolves .lgv2-role-channel-members b{color:#eadbc8}

  .lgv2-role-private-result{position:relative;z-index:1;display:grid;grid-template-columns:35px minmax(0,1fr);gap:8px;align-items:center;padding:7px 8px;border:1px solid rgba(201,168,108,.35);border-radius:12px;background:rgba(255,246,225,.055)}.lgv2-role-private-result>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(128,34,61,.42);color:#efc879}.lgv2-role-private-result>div{min-width:0}.lgv2-role-private-result small{display:block;font-size:6.08px;font-weight:850;letter-spacing:.08em;color:#c5a871}.lgv2-role-private-result b{display:block;margin-top:2px;color:#fff0d6;font:750 9.28px/1 var(--serif)}.lgv2-role-private-result p{margin-top:3px;color:#aaaab5;font-size:6.88px;line-height:1.28}
  .lgv2-role-glyph{position:relative;z-index:1;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;margin-inline:auto;border:1px solid rgba(210,177,112,.45);background:radial-gradient(circle,#79203c,#401528);color:#f0ca7c;font-size:19.2px;box-shadow:0 0 0 5px rgba(185,142,77,.06)}.lgv2-role-glyph svg{width:23px;height:23px}.lgv2-camp-choice button>svg{width:19px;height:19px}.lgv2-night-host-secrets>span{display:inline-flex;align-items:center;gap:4px}.lgv2-night-host-secrets i{display:grid;place-items:center}.lgv2-night-host-secrets svg{width:12px;height:12px;color:#d9b56d}.lgv2-dictator-power>span svg,.lgv2-day-orbit svg{width:20px;height:20px}
  .lgv2-camp-choice{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:7px}.lgv2-camp-choice button{min-height:45px;padding:7px;border:1px solid rgba(196,155,93,.45);border-radius:13px;background:rgba(255,255,255,.04);color:#d9d4d0;display:grid;justify-items:center;gap:3px;cursor:pointer}.lgv2-camp-choice button:first-child{background:linear-gradient(145deg,rgba(101,20,45,.78),rgba(68,18,35,.72));color:#f2d098}.lgv2-camp-choice button:last-child{background:linear-gradient(145deg,rgba(86,99,78,.42),rgba(45,55,48,.55));color:#deead9}.lgv2-camp-choice b{font:800 8.48px/1 var(--serif)}.lgv2-camp-choice small{font-size:6.08px;opacity:.78}
  .lgv2-brother-cards{position:relative;z-index:1;display:flex;justify-content:center;gap:9px}.lgv2-brother-cards>span{width:78px;display:grid;justify-items:center;gap:4px}.lgv2-brother-cards img{width:45px;height:45px;border-radius:50%;object-fit:cover;border:2px solid #c89e5d;box-shadow:0 5px 12px rgba(0,0,0,.2)}.lgv2-brother-cards b{max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#f0e7df;font:700 7.68px/1 var(--serif)}
  .lgv2-role-guess{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:7px;align-items:end}.lgv2-role-guess>span{min-height:39px;display:flex;align-items:center;gap:6px;padding:5px 7px;border:1px solid rgba(202,174,120,.3);border-radius:11px;background:rgba(255,255,255,.035)}.lgv2-role-guess img{width:28px;height:28px;border-radius:50%;object-fit:cover}.lgv2-role-guess b{font:700 7.36px/1.15 var(--serif);color:#e7ddd4}.lgv2-role-guess label{display:grid;gap:3px;font-size:6.08px;font-weight:800;color:#c4ac81}.lgv2-role-guess select{height:39px;min-width:0;border:1px solid rgba(202,174,120,.36);border-radius:10px;background:#201929;color:#f2e7d3;padding:0 7px;font-size:6.88px;outline:0}
  .lgv2-night-picked{position:relative;z-index:1;min-height:34px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:5px}.lgv2-night-picked>span{display:flex;align-items:center;gap:4px;padding:3px 6px 3px 3px;border:1px solid rgba(205,170,105,.36);border-radius:999px;background:rgba(255,255,255,.045)}.lgv2-night-picked img{width:24px;height:24px;border-radius:50%;object-fit:cover}.lgv2-night-picked b{font:700 6.56px/1 var(--serif);color:#eee3d8}.lgv2-night-picked>small{font-size:6.72px;color:#9fa3af}.lgv2-night-pass,.lgv2-night-secondary{position:relative;z-index:1;min-height:34px;border:1px solid rgba(190,164,121,.28);border-radius:11px;background:rgba(255,255,255,.035);color:#c5bdb8;font:800 6.56px/1 var(--serif);letter-spacing:.04em;cursor:pointer}.lgv2-night-rule{display:block!important;padding:7px;text-align:center;border:1px dashed rgba(198,163,105,.25);border-radius:10px;color:#a8a2aa!important}.lgv2-night-host-secrets{position:relative;z-index:1;display:flex;flex-wrap:wrap;justify-content:center;gap:4px}.lgv2-night-host-secrets>span{padding:4px 6px;border-radius:999px;border:1px solid rgba(196,162,103,.23);background:rgba(255,255,255,.03);color:#b8b1ae;font-size:6.08px}.lgv2-night-host-secrets b{color:#e4c681;font-weight:850}.lgv2-night-host-wait{padding:5px 7px;border-radius:10px;background:rgba(255,255,255,.025)}

  .lgv2-circle-player.is-night-wolf-guarded .lgv2-circle-avatar{box-shadow:0 0 0 3px #a67646,0 0 0 7px rgba(168,118,70,.14),0 0 25px rgba(198,141,72,.28)}.lgv2-circle-player.is-night-frozen .lgv2-circle-avatar{box-shadow:0 0 0 3px #7ca7bd,0 0 0 7px rgba(124,167,189,.14),0 0 25px rgba(124,167,189,.3)}.lgv2-circle-player.is-night-frozen .lgv2-circle-avatar::before{content:none}.lgv2-circle-player.is-night-blocked .lgv2-circle-avatar{box-shadow:0 0 0 3px #67626f,0 0 0 7px rgba(85,80,96,.15);filter:saturate(.58)}.lgv2-circle-player.is-night-blocked .lgv2-circle-avatar::before{content:none}.lgv2-circle-player.is-role-interrupt-targetable .lgv2-circle-avatar,.lgv2-circle-player.is-dictator-targetable .lgv2-circle-avatar{cursor:pointer;box-shadow:0 0 0 2px rgba(139,25,52,.3)}.lgv2-circle-player.is-role-interrupt-selected .lgv2-circle-avatar,.lgv2-circle-player.is-dictator-selected .lgv2-circle-avatar{box-shadow:0 0 0 3px #8e1833,0 0 0 8px rgba(142,24,51,.13),0 0 24px rgba(142,24,51,.3)}

  .lgv2-role-interrupt,.lgv2-role-gameover{position:relative;width:100%;min-height:145px;padding:12px;border:1px solid #d9bd90;border-radius:19px;background:linear-gradient(180deg,#fff9ee,#f3e1c8);box-shadow:0 11px 25px rgba(72,42,27,.09);display:grid;justify-items:center;align-content:center;text-align:center;gap:6px;overflow:hidden}.lgv2-role-interrupt>span,.lgv2-role-gameover>span{width:43px;height:43px;border-radius:50%;display:grid;place-items:center;background:#78152e;color:#efc876;font-size:17.28px;border:1px solid #c79a5b}.lgv2-role-interrupt>small,.lgv2-role-gameover>small{font:850 6.56px/1 var(--serif);letter-spacing:.12em;color:#a06f3d}.lgv2-role-interrupt h2,.lgv2-role-gameover h2{margin:0;color:#72152a;font:800 13.76px/1.05 var(--serif)}.lgv2-role-interrupt p,.lgv2-role-gameover p{max-width:315px;color:#887568;font-size:7.68px;line-height:1.35}.lgv2-interrupt-choice,.lgv2-gameover-winner{display:flex;align-items:center;gap:6px;padding:4px 8px 4px 4px;border:1px solid #d6b783;border-radius:999px;background:#fff8ec}.lgv2-interrupt-choice img,.lgv2-gameover-winner img{width:31px;height:31px;border-radius:50%;object-fit:cover}.lgv2-interrupt-choice b,.lgv2-gameover-winner b{color:#634038;font:750 8px/1 var(--serif)}.lgv2-role-gameover{background:radial-gradient(circle at 50% 20%,rgba(216,169,77,.18),transparent 32%),linear-gradient(180deg,#251419,#130d10);border-color:#8f6a3e;color:#f4dec0}.lgv2-role-gameover h2{color:#f1c978;font-size:16.32px}.lgv2-role-gameover p{color:#b7a79c}.lgv2-role-gameover>small{color:#bd9e69}.lgv2-gameover-aura{position:absolute;left:50%;top:50%;width:210px;height:210px;border-radius:50%;transform:translate(-50%,-50%);background:repeating-conic-gradient(rgba(211,166,86,.08) 0 8deg,transparent 8deg 18deg);animation:lgv2-v30-aura 18s linear infinite;pointer-events:none}.lgv2-role-gameover>*:not(.lgv2-gameover-aura){position:relative;z-index:1}

  .lgv2-dictator-power{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:7px;align-items:center;padding:7px 8px;border:1px solid #d5b37e;border-radius:13px;background:linear-gradient(135deg,#fff7e8,#f2dec1)}.lgv2-dictator-power>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#77142d;color:#efca77}.lgv2-dictator-power>div{min-width:0}.lgv2-dictator-power small{display:block;font:850 5.76px/1 var(--serif);letter-spacing:.08em;color:#a27241}.lgv2-dictator-power b{display:block;margin-top:2px;color:#71162a;font:750 8.32px/1 var(--serif)}.lgv2-dictator-power p{margin-top:2px;color:#8a7767;font-size:6.24px;line-height:1.25}.lgv2-dictator-power>button,.lgv2-dictator-choice button{min-height:31px;padding:6px 8px;border:1px solid #9e623b;border-radius:9px;background:#7b142c;color:#fff0d4;font:800 6.08px/1.12 var(--serif);cursor:pointer;white-space:normal;text-align:center}.lgv2-dictator-choice{display:flex;align-items:center;gap:4px}.lgv2-dictator-choice img{width:27px;height:27px;border-radius:50%;object-fit:cover}.lgv2-dictator-choice b{max-width:58px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:6.4px}

  .lgv2-morning-victims{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.lgv2-morning-victims .lgv2-morning-victim{display:flex;flex:0 0 auto}
  @keyframes lgv2-v30-aura{to{transform:translate(-50%,-50%) rotate(360deg)}}
  @media(max-width:390px){.lgv2-custom-role-editor{grid-template-columns:1fr 1fr}.lgv2-custom-role-editor>div{grid-column:1/-1}.lgv2-role-guess{grid-template-columns:1fr}.lgv2-dictator-power{grid-template-columns:32px minmax(0,1fr)}.lgv2-dictator-power>button,.lgv2-dictator-choice{grid-column:1/-1;justify-self:stretch}.lgv2-dictator-choice{justify-content:center}.lgv2-role-channel{padding-inline:5px}}
  @media(max-height:700px){.lgv2-custom-role-editor{padding-block:6px}.lgv2-role-interrupt,.lgv2-role-gameover{min-height:122px;padding-block:8px}.lgv2-role-glyph{width:42px;height:42px}.lgv2-role-channel-feed{padding-block:4px}}
  @media(prefers-reduced-motion:reduce){.lgv2-gameover-aura{animation:none!important}}
}

/* Unified wolf card backs */
.lgv2-role-cinematic:not(.is-revealed) .lgv2-card-back-seal .lgv2-card-wolf-mark{animation:lgv2-wolf-mark-breathe 2.6s ease-in-out infinite alternate}
@keyframes lgv2-wolf-mark-breathe{from{opacity:.43;filter:brightness(1.05) contrast(1.03) drop-shadow(0 0 7px rgba(235,194,112,.16))}to{opacity:.62;filter:brightness(1.12) contrast(1.05) drop-shadow(0 0 15px rgba(239,200,119,.30))}}
@media(prefers-reduced-motion:reduce){.lgv2-card-wolf-mark{animation:none!important}}

/* Death spectator, grave chat, vote defence and victories */
.lgv2-death-cinematic{position:fixed;inset:0;z-index:200;display:grid;place-items:center;align-content:center;gap:10px;padding:24px;text-align:center;background:radial-gradient(circle at 50% 28%,rgba(119,23,38,.28),transparent 34%),linear-gradient(180deg,#0d1018,#17101a 55%,#09080d);color:#f8ead5;overflow:hidden}.lgv2-death-cinematic>*{position:relative;z-index:2}.lgv2-death-fog{position:absolute;inset:0;opacity:.55}.lgv2-death-fog i{position:absolute;width:70vw;height:18vh;border-radius:50%;background:rgba(221,207,190,.12);filter:blur(26px);animation:lgv2GraveFog 7s ease-in-out infinite alternate}.lgv2-death-fog i:nth-child(1){left:-15vw;top:20%}.lgv2-death-fog i:nth-child(2){right:-15vw;top:45%;animation-delay:-2s}.lgv2-death-fog i:nth-child(3){left:10vw;bottom:5%;animation-delay:-4s}.lgv2-death-skull{font-size:60.8px;filter:drop-shadow(0 0 20px rgba(166,31,55,.6));animation:lgv2DeathPulse 2s ease-in-out infinite}.lgv2-death-cinematic>small{font-size:10.88px;letter-spacing:.18em;color:#cba879}.lgv2-death-cinematic h1{font:800 clamp(32px,10vw,54.4px)/.95 var(--serif);color:#efe0c9;text-shadow:0 5px 24px #000}.lgv2-death-cinematic p{max-width:330px;color:#c9b7aa;font-size:13.12px}.lgv2-death-role{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid rgba(203,168,121,.42);border-radius:15px;background:rgba(255,255,255,.05)}.lgv2-death-role img{width:44px;height:60px;object-fit:cover;border-radius:7px}.lgv2-death-role span{text-align:left}.lgv2-death-role small{display:block;font-size:8px;color:#a98e72}.lgv2-death-role b{font:700 14.08px/1 var(--serif)}.lgv2-death-grave{margin-top:5px;padding:12px 15px;border-radius:18px;background:rgba(91,15,31,.32);border:1px solid rgba(177,72,91,.45)}.lgv2-death-grave b{display:block;color:#dba5ae;font:800 12.8px/1 var(--serif);letter-spacing:.06em}.lgv2-death-grave small{display:block;margin-top:5px;color:#c7b9ae;font-size:9.92px}@keyframes lgv2DeathPulse{50%{transform:scale(1.06);filter:drop-shadow(0 0 34px rgba(195,48,74,.75))}}@keyframes lgv2GraveFog{to{transform:translateX(12vw) scale(1.12)}}
/* 7.0.67 — LA TOMBE : palette ivoire/or/ardoise et ouverture unique. */
.lgv2-grave-drawer{position:fixed;left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));z-index:100;height:min(62dvh,520px);display:grid;grid-template-rows:auto auto 1fr auto;border:2px solid var(--bp-rim);border-radius:22px;background:linear-gradient(180deg,var(--bp-champ-1),var(--bp-champ-2));box-shadow:0 18px 44px rgba(61,35,20,.30),inset 0 0 0 3px var(--bp-or);overflow:hidden;color:#3D2D27}
.lgv2-grave-drawer.is-opening{animation:lgv2GraveUp .22s cubic-bezier(.2,.8,.2,1)}
.lgv2-grave-drawer header{display:grid;grid-template-columns:36px 1fr 34px;align-items:center;gap:8px;padding:11px 12px;border-bottom:1px solid rgba(239,217,166,.28);background:linear-gradient(180deg,#4B5160,#3A404D)}
.lgv2-grave-drawer header>span{font-size:21.6px;color:#C9A96B}.lgv2-grave-drawer header>span svg{fill:currentColor}
.lgv2-grave-drawer header small{display:block;color:#EFD9A6;font-size:7.68px;letter-spacing:.13em}.lgv2-grave-drawer header h3{margin:2px 0 0;font:800 14.4px/1 var(--serif);color:#F4E9D6}.lgv2-grave-drawer header button{border:1px solid rgba(239,217,166,.35);background:rgba(255,255,255,.08);color:#EFD9A6;font-size:21.6px}
.lgv2-grave-members{display:flex;gap:6px;padding:7px 10px;overflow:auto;border-bottom:1px solid rgba(201,169,107,.26)}/* 7.6.2 — Les pastilles des joueurs morts portaient #3D2D27, l'encre du
   theme CLAIR, posee sur le tiroir SOMBRE de la tombe : des noms delaves,
   presque illisibles. Elles reprennent la creme deja utilisee par l'en-tete
   du tiroir, sur un fond de pastille assez tenu pour la porter.
   Contrastes MESURES sur le fond compose #392E23 (pire cas, le haut du
   degrade du tiroir) : #F4E9D6 = 11.00:1, #EFD9A6 = 9.53:1. */
.lgv2-grave-members span{display:flex;align-items:center;gap:5px;flex:0 0 auto;padding:4px 7px;border-radius:999px;background:rgba(239,217,166,.10);border:1px solid rgba(239,217,166,.28);color:#F4E9D6}.lgv2-grave-members img{width:23px;height:23px;border-radius:50%;object-fit:cover;filter:grayscale(.70);box-shadow:0 0 0 2px #4B5160}.lgv2-grave-members b{font-size:8.32px;color:#EFD9A6}
.lgv2-grave-feed{min-height:0;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:7px}.lgv2-grave-feed article{align-self:flex-start;max-width:78%;padding:7px 9px;border-radius:14px 14px 14px 4px;background:#FBF3E3;border:1px solid rgba(201,169,107,.35);color:#3D2D27}.lgv2-grave-feed article.is-me{align-self:flex-end;border-radius:14px 14px 4px 14px;background:linear-gradient(180deg,#F1DFB5,#E8D09A);border-color:rgba(201,169,107,.55)}.lgv2-grave-feed article small{display:block;margin-bottom:3px;color:#88681F;font-size:7.36px;font-variant:small-caps}.lgv2-grave-feed article small time,.lgv2-grave-feed article time{color:#7E6D5C}.lgv2-grave-feed article p{margin:0;color:#3D2D27;font-size:10.72px;line-height:1.3}.lgv2-grave-empty{margin:auto;color:#6F6254;font-size:10.4px}.lgv2-grave-typing{display:flex;align-items:center;gap:4px;color:#6F6254;font-size:8.64px}.lgv2-grave-typing i{width:5px;height:5px;border-radius:50%;background:#C9A96B;animation:lgv2Typing 1s infinite}.lgv2-grave-typing i:nth-child(2){animation-delay:.15s}.lgv2-grave-typing i:nth-child(3){animation-delay:.3s}
.lgv2-grave-compose{display:grid;grid-template-columns:minmax(0,1fr) 42px 42px;gap:7px;padding:8px 9px;background:transparent;border-top:1px solid rgba(201,169,107,.32)}.lgv2-grave-compose input{min-width:0;height:40px;padding:0 13px;border:1px solid rgba(201,169,107,.45);border-radius:999px;background:#FFFBF2;color:#3D2D27;outline:none}.lgv2-grave-compose input::placeholder{color:#7E6D5C;opacity:1}.lgv2-grave-compose input:focus{border-color:#C9A96B;box-shadow:0 0 0 3px rgba(201,169,107,.16)}.lgv2-grave-compose>button[type="submit"]{border:1px solid rgba(201,169,107,.72);border-radius:50%;background:linear-gradient(180deg,var(--lg-btn-or-1),var(--lg-btn-or-2));color:#3F1523}.lgv2-grave-compose svg{width:18px;height:18px;fill:currentColor}
@keyframes lgv2GraveUp{from{transform:translateY(18px);opacity:0}to{transform:none;opacity:1}}@keyframes lgv2Typing{50%{transform:translateY(-3px);opacity:.45}}
.lgv2-day-panel.is-speech .lgv2-day-speaker-avatar.is-talking{box-shadow:0 0 0 4px rgba(143,28,52,.12),0 0 28px rgba(143,28,52,.26)}
.lgv2-role-gameover.is-wolves,.lgv2-role-gameover.is-village{position:relative;overflow:hidden;min-height:310px;text-align:center;border-radius:24px;padding:24px 16px}.lgv2-role-gameover.is-wolves{background:radial-gradient(circle at 50% 18%,rgba(202,62,67,.26),transparent 31%),linear-gradient(180deg,#170d16,#35101b 68%,#160a10);color:#f5e8db}.lgv2-role-gameover.is-village{background:radial-gradient(circle at 50% 10%,rgba(255,229,150,.8),transparent 35%),linear-gradient(180deg,#fff2c8,#efd9a4 60%,#f6e8c8);color:#4a3524}.lgv2-role-gameover.is-village h2{color:#7c142d}.lgv2-role-gameover.is-village>small{color:#6b4420}.lgv2-role-gameover.is-village p{color:#4a3524}.lgv2-victory-mark{position:relative;z-index:2;display:block;font-size:48px;margin:4px auto 8px;animation:lgv2VictoryMark 1.8s ease-in-out infinite}.lgv2-role-gameover.is-wolves h2,.lgv2-role-gameover.is-village h2{position:relative;z-index:2;font:900 clamp(27.2px,7vw,41.6px)/1 var(--serif);margin:7px 0}.lgv2-role-gameover.is-wolves small,.lgv2-role-gameover.is-village small,.lgv2-role-gameover.is-wolves p,.lgv2-role-gameover.is-village p{position:relative;z-index:2}.lgv2-victory-moon{position:absolute;width:170px;height:170px;border-radius:50%;left:50%;top:-72px;transform:translateX(-50%);background:radial-gradient(circle at 40% 38%,#ffd3ac,#d86567 42%,#7f2639 68%,#35101d);box-shadow:0 0 60px rgba(207,77,82,.34)}.lgv2-victory-sun{position:absolute;width:150px;height:150px;border-radius:50%;left:50%;top:-74px;transform:translateX(-50%);background:#fff1ad;box-shadow:0 0 75px #ffd978}.lgv2-victory-rays{position:absolute;inset:-20%;background:repeating-conic-gradient(from 0deg,rgba(255,255,255,.2) 0 7deg,transparent 7deg 18deg);animation:lgv2VictorySpin 28s linear infinite}.lgv2-victory-cta{position:relative;z-index:2;margin-top:16px}.lgv2-victory-cta button{min-height:52px;padding:0 26px;border:1px solid rgba(236,204,142,.72);border-radius:999px;background:linear-gradient(177deg,#94203b 0%,#75132c 52%,#570d20 100%);color:#fdf3dd;text-shadow:0 1px 2px rgba(0,0,0,.55);box-shadow:0 10px 24px -10px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,232,186,.24);font:800 10.56px/1 var(--serif);letter-spacing:.06em}@keyframes lgv2VictorySpin{to{transform:rotate(360deg)}}@keyframes lgv2VictoryMark{50%{transform:scale(1.08)}}

/* 4.4 production refinements */
/* 7.0.6 — style joueur unifié avec le bouton Narrateur dans @layer dashboard. */
.lgv2-avatar-panel-root{position:fixed;inset:0;z-index:190;display:grid;place-items:end center;padding:10px 10px calc(10px + env(safe-area-inset-bottom))}.lgv2-avatar-scrim{position:absolute;inset:0;border:0;background:rgba(8,5,10,.54)}.lgv2-avatar-panel{position:relative;width:min(100%,430px);max-height:min(74dvh,620px);display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid #c69b60;border-radius:24px;background:linear-gradient(180deg,#fffaf0,#f3e3cb);box-shadow:0 28px 70px rgba(20,8,12,.42);animation:lgv2-avatar-up .26s cubic-bezier(.2,.8,.2,1)}.lgv2-avatar-panel header{display:grid;grid-template-columns:42px minmax(0,1fr) 32px;align-items:center;gap:9px;padding:12px 13px;border-bottom:1px solid rgba(143,100,54,.15)}.lgv2-avatar-panel header>span{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#78152e;color:#efcf8b}.lgv2-avatar-panel header>span svg{width:20px;height:20px}.lgv2-avatar-panel header small{display:block;color:#9d7546;font-size:7.2px;letter-spacing:.12em}.lgv2-avatar-panel header h3{margin:2px 0 0;font:800 14.72px/1 var(--serif);color:#5f1729}.lgv2-avatar-panel header p{margin-top:3px;color:#897567;font-size:8.48px}.lgv2-avatar-panel header>button{width:31px;height:31px;border:0;border-radius:50%;background:#efe1cc;color:#6b5041;display:grid;place-items:center}.lgv2-avatar-panel header>button svg{width:16px;height:16px}.lgv2-avatar-grid{min-height:0;overflow:auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:11px}.lgv2-avatar-option{position:relative;aspect-ratio:1;border:2px solid transparent;border-radius:50%;padding:2px;background:#e6cfac;box-shadow:0 4px 12px rgba(64,35,24,.1);overflow:visible}.lgv2-avatar-option img{width:100%;height:100%;border-radius:50%;object-fit:cover}.lgv2-avatar-option.is-active{border-color:#8b1731;box-shadow:0 0 0 3px rgba(139,23,49,.12),0 6px 14px rgba(91,20,37,.14)}.lgv2-avatar-option i{position:absolute;right:-2px;bottom:-1px;width:21px;height:21px;border-radius:50%;background:#7d1730;color:#f8dc99;border:2px solid #fff4df;display:grid;place-items:center}.lgv2-avatar-option i svg{width:12px;height:12px}@keyframes lgv2-avatar-up{from{transform:translateY(18px);opacity:0}}
.lgv2-night-state-badge{position:absolute;z-index:12;right:-8px;top:-9px;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;border:2px solid #f3ead9;box-shadow:0 3px 7px rgba(0,0,0,.2)}.lgv2-night-state-badge svg{width:12px;height:12px}.lgv2-night-state-badge.is-frozen{background:#557f9a;color:#e7f8ff}.lgv2-night-state-badge.is-blocked{background:#4e4757;color:#eee8f2}
.lgv2-avatar-dead{position:absolute;z-index:14;right:-7px;top:-7px;width:17px;height:17px;display:grid;place-items:center;border-radius:50%;background:linear-gradient(145deg,#665c57,#302b2d);border:1.4px solid #fff3df;color:#f0d6a6;box-shadow:0 3px 7px rgba(18,12,12,.28)}.lgv2-avatar-dead svg{width:9px;height:9px;fill:currentColor}
.lgv2-death-skull{width:74px;height:74px;display:grid;place-items:center;color:#d9a2a9}.lgv2-death-skull svg{width:62px;height:62px;filter:drop-shadow(0 0 20px rgba(166,31,55,.58))}.lgv2-death-killer{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:8px;min-width:205px;padding:8px 11px;border:1px solid rgba(206,146,106,.3);border-radius:14px;background:rgba(122,24,43,.14);text-align:left}.lgv2-death-killer>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--bp-accent);color:#e9bf82}.lgv2-death-killer svg{width:20px;height:20px}.lgv2-death-killer small{display:block;color:#b89885;font-size:7.2px;letter-spacing:.11em}.lgv2-death-killer b{display:block;margin-top:2px;color:#f1dcc8;font:750 10.88px/1.1 var(--serif)}.lgv2-death-grave b{display:flex;align-items:center;justify-content:center;gap:6px}.lgv2-death-grave b svg{width:17px;height:17px}
.lgv2-grave-drawer header>span{width:27px;height:27px;display:grid;place-items:center}.lgv2-grave-drawer header>span svg{width:23px;height:23px}.lgv2-grave-drawer header button{display:grid;place-items:center}.lgv2-grave-drawer header button svg{width:18px;height:18px}
.lgv2-communications-empty,.lgv2-call-status{height:100%;min-height:0;display:grid;justify-items:center;align-content:center;gap:8px;padding:18px;text-align:center;border:1px solid rgba(185,142,85,.45);border-radius:20px;background:linear-gradient(180deg,rgba(255,251,244,.93),rgba(247,234,215,.9));box-shadow:inset 0 1px rgba(255,255,255,.75)}.lgv2-communications-orb,.lgv2-call-orb{position:relative;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#7a1129,#981833);color:#f1ce8b;border:1px solid #c6995c;box-shadow:0 9px 19px rgba(92,13,31,.18)}.lgv2-communications-orb svg,.lgv2-call-orb svg{width:27px;height:27px}.lgv2-communications-empty>small,.lgv2-call-status>small{font:850 7.2px/1 var(--serif);letter-spacing:.14em;color:#a37743}.lgv2-communications-empty h3,.lgv2-call-status h3{font:800 16px/1.05 var(--serif);color:#621a2a}.lgv2-communications-empty p,.lgv2-call-status p{max-width:320px;color:#817165;font-size:9.92px;line-height:1.4}.lgv2-communications-points{display:flex;gap:7px;flex-wrap:wrap;justify-content:center}.lgv2-communications-points span{display:flex;align-items:center;gap:5px;padding:6px 8px;border:1px solid #ddc5a0;border-radius:999px;background:#fff9ee;color:#6f5d4e}.lgv2-communications-points svg{width:14px;height:14px;color:#7c1027}.lgv2-communications-points b{font-size:7.84px}.lgv2-call-status.is-live .lgv2-call-orb i{position:absolute;right:1px;bottom:2px;width:13px;height:13px;border-radius:50%;background:#49a762;border:2px solid #fff6e7;box-shadow:0 0 0 3px rgba(73,167,98,.13)}.lgv2-call-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;width:min(100%,300px)}.lgv2-call-metrics span{padding:8px 5px;border:1px solid #ddc49f;border-radius:12px;background:#fff9ef}.lgv2-call-metrics b{display:block;color:#71192b;font:800 10.08px/1 var(--serif)}.lgv2-call-metrics small{display:block;margin-top:3px;color:#8b796b;font-size:6.88px}
.lgv2-victory-screen{isolation:isolate;display:grid;place-items:center;padding:calc(18px + env(safe-area-inset-top)) 14px calc(18px + env(safe-area-inset-bottom));overflow:hidden;background:#100b10}.lgv2-victory-backdrop{position:absolute;inset:0;transform:scale(1.04);filter:saturate(.82);animation:lgv2-victory-backdrop 8s ease-out both}.lgv2-victory-screen.is-wolves .lgv2-victory-backdrop{background:radial-gradient(circle at 50% 17%,rgba(118,12,34,.12),transparent 32%),linear-gradient(rgba(8,7,12,.44),rgba(30,5,16,.82)),url('../images/village-night-portrait.webp') center/cover no-repeat;filter:saturate(.9) contrast(1.04) brightness(.72)}.lgv2-victory-screen.is-village .lgv2-victory-backdrop{background:radial-gradient(circle at 50% 12%,rgba(255,226,145,.28),transparent 34%),linear-gradient(rgba(255,244,210,.08),rgba(96,53,24,.28)),url('../images/village-hero.webp') center/cover no-repeat;filter:saturate(.82) brightness(.88)}.lgv2-victory-screen.is-special .lgv2-victory-backdrop{background:linear-gradient(rgba(11,9,14,.48),rgba(11,9,14,.8)),url('../images/village-night-portrait.webp') center/cover no-repeat}.lgv2-victory-screen .lgv2-role-gameover{width:min(100%,430px);min-height:min(76dvh,650px);display:grid;grid-template-rows:1fr auto auto auto auto;justify-items:center;align-content:center;gap:10px;padding:30px 20px;border-radius:28px;box-shadow:0 28px 75px rgba(0,0,0,.4);animation:lgv2-victory-enter .65s cubic-bezier(.16,.82,.2,1)}.lgv2-victory-screen .lgv2-role-gameover.is-wolves{background:radial-gradient(circle at 50% 18%,rgba(202,62,67,.3),transparent 32%),linear-gradient(180deg,rgba(25,12,22,.96),rgba(57,14,29,.96) 68%,rgba(16,8,15,.98))}.lgv2-victory-screen .lgv2-role-gameover.is-village{background:radial-gradient(circle at 50% 12%,rgba(255,234,160,.88),transparent 36%),linear-gradient(180deg,rgba(255,244,209,.98),rgba(239,217,164,.97) 64%,rgba(248,234,201,.98))}.lgv2-victory-screen .lgv2-victory-mark{width:72px;height:72px;display:grid;place-items:center}.lgv2-victory-screen .lgv2-victory-mark svg{width:64px;height:64px}.lgv2-victory-fog{position:absolute;inset:0;overflow:hidden;pointer-events:none}.lgv2-victory-fog i{position:absolute;width:84%;height:15%;left:-12%;border-radius:50%;background:rgba(222,208,196,.08);filter:blur(24px);animation:lgv2-victory-fog 8s ease-in-out infinite alternate}.lgv2-victory-fog i:nth-child(1){top:28%}.lgv2-victory-fog i:nth-child(2){top:54%;left:24%;animation-delay:-2.6s}.lgv2-victory-fog i:nth-child(3){top:72%;left:-4%;animation-delay:-5s}.lgv2-victory-screen .lgv2-victory-cta{align-self:end}.lgv2-victory-screen .lgv2-victory-cta button{min-height:48px;padding-inline:24px}@keyframes lgv2-victory-enter{from{opacity:0;transform:translateY(18px) scale(.97)}}@keyframes lgv2-victory-backdrop{from{transform:scale(1.1);opacity:.35}to{transform:scale(1.04);opacity:1}}@keyframes lgv2-victory-fog{to{transform:translateX(22%) scale(1.08)}}
@media(max-width:390px){.lgv2-avatar-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.lgv2-room-open{display:none}.lgv2-room-header{grid-template-columns:36px 36px minmax(0,1fr) 52px}.lgv2-room-codeblock b{font-size:19.52px}.lgv2-victory-screen .lgv2-role-gameover{min-height:min(74dvh,590px);padding-inline:14px}}
@media(max-height:700px){.lgv2-circle-stage{gap:6px}.lgv2-player-ring{--ring:min(76vw,274px)}.lgv2-circle-stage.is-crowded .lgv2-player-ring{--ring:min(88vw,318px)}.lgv2-circle-stage.is-very-crowded .lgv2-player-ring{--ring:min(92vw,326px)}.lgv2-avatar-panel{max-height:82dvh}.lgv2-victory-screen .lgv2-role-gameover{min-height:min(82dvh,540px)}}

}
/* ========================================================================
   V4.5 — Préparation vocale, santé SFU et lisibilité réseau
   Nouveaux composants uniquement : aucune surcharge d'un composant ancien.
   ======================================================================== */
@layer components {
  .lgv2-speech-preflight {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: grid;
    place-items: center;
    padding: 24px;
    overflow: hidden;
    opacity: 1;
    background: radial-gradient(circle at 50% 42%, rgba(60,20,28,.55) 0%, rgba(8,6,10,.92) 78%);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    animation: lgv2PreflightIn .24s ease-out both;
    transition: opacity 220ms ease;
  }

  .lgv2-speech-preflight::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0;
    background: rgba(241,207,130,.35);
  }
  .lgv2-speech-preflight.is-live::before { animation: lgv2PreflightLiveFlash 120ms ease-out both; }
  .lgv2-speech-preflight.is-exiting { animation:none; opacity: 0; pointer-events: none; }

  .lgv2-speech-preflight__halo {
    position: absolute;
    width: min(72vw, 310px);
    aspect-ratio: 1;
    border-radius: 50%;
    border: 1px solid rgba(201,169,107,.28);
    box-shadow: 0 0 0 22px rgba(124,16,39,.08), 0 0 84px rgba(124,16,39,.22), inset 0 0 60px rgba(241,207,130,.06);
    animation: lgv2PreflightHalo 2.4s ease-in-out infinite;
  }
  .lgv2-speech-preflight__halo::after {
    content: "";
    position: absolute;
    left: 50%; top: 50%;
    width: 72px; height: 72px;
    margin: -36px 0 0 -36px;
    border-radius: 50%;
    border: 2px solid rgba(201,169,107,.35);
    opacity: 0;
    transform: scale(.9);
    pointer-events: none;
  }
  .lgv2-speech-preflight.is-tick .lgv2-speech-preflight__halo::after { animation: lgv2PreflightWave 900ms ease-out both; }

  .lgv2-speech-preflight__content {
    position: relative;
    width: min(86vw, 360px);
    min-height: 300px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: #f7ead0;
  }

  .lgv2-speech-preflight__medallion {
    position: relative;
    width: 76px;
    height: 76px;
    display: grid;
    place-items: center;
    margin-bottom: 18px;
  }
  .lgv2-speech-preflight__medallion > span {
    width: 62px;
    height: 62px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    color: #F1CF82;
    background: radial-gradient(circle at 35% 30%, #B33049, #7C1027 60%, #4E0A1B);
    border: 2px solid #C9A96B;
    box-shadow: 0 14px 34px rgba(0,0,0,.45), inset 0 0 0 1px rgba(255,236,190,.35);
  }
  .lgv2-speech-preflight__medallion > span svg {
    width: 28px;
    height: 28px;
    fill: currentColor;
  }
  .lgv2-speech-preflight__ring {
    position: absolute;
    inset: 2px;
    width: 72px;
    height: 72px;
    overflow: visible;
    transform: rotate(-90deg);
    pointer-events: none;
  }
  .lgv2-speech-preflight__ring circle {
    fill: none;
    stroke: #C9A96B;
    stroke-width: 3px;
    stroke-linecap: round;
  }

  .lgv2-speech-preflight__content small {
    max-width: 280px;
    font: 700 11px/1.45 ui-sans-serif, system-ui, sans-serif;
    letter-spacing: .18em;
    color: #EFD9A6;
  }

  .lgv2-speech-preflight__content strong {
    margin: 6px 0 2px;
    font: 700 clamp(72px, 24vw, 118px)/.95 Georgia, serif;
    letter-spacing: -.04em;
    color: #fff5df;
    text-shadow: 0 8px 40px rgba(162, 22, 56, .55);
  }
  .lgv2-speech-preflight__content strong.is-tick { animation: lgv2PreflightTick 600ms cubic-bezier(.2,.72,.2,1) both; }
  .lgv2-speech-preflight.is-live .lgv2-speech-preflight__content strong { color: #F1CF82; }

  .lgv2-speech-preflight__content b {
    max-width: 300px;
    font: 500 14px/1.5 ui-sans-serif, system-ui, sans-serif;
    color: #E8DAC2;
  }

  .lgv2-hearing-status {
    width: 100%;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 11px;
    margin: 10px 0 12px;
    padding: 10px 12px;
    border: 1px solid rgba(175, 145, 81, .34);
    border-radius: 18px;
    background: rgba(255, 251, 242, .72);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.72);
  }

  .lgv2-hearing-status > div {
    min-width: 0;
  }

  .lgv2-hearing-status small {
    display: block;
    margin-bottom: 1px;
    font: 700 9px/1.2 ui-sans-serif, system-ui, sans-serif;
    letter-spacing: .11em;
    color: #8a735e;
  }

  .lgv2-hearing-status b {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font: 700 13px/1.25 Georgia, serif;
    color: #4d2a27;
  }

  .lgv2-hearing-status > strong {
    min-width: 52px;
    padding: 7px 9px;
    text-align: center;
    border-radius: 999px;
    background: #efe6d5;
    color: #6b5040;
    font: 800 12px/1 ui-sans-serif, system-ui, sans-serif;
  }

  .lgv2-hearing-status.is-all > strong {
    background: #e2f0df;
    color: #2e743d;
  }

  .lgv2-hearing-status.is-partial > strong {
    background: #fff0cf;
    color: #9a6816;
  }

  .lgv2-hearing-pulse {
    display: inline-flex;
    align-items: flex-end;
    gap: 3px;
    width: 27px;
    height: 20px;
  }

  .lgv2-hearing-pulse i {
    width: 5px;
    border-radius: 99px;
    background: #a30f36;
    transform-origin: bottom;
    animation: lgv2HearBars .78s ease-in-out infinite alternate;
  }
  .lgv2-hearing-pulse i:nth-child(1){height:9px}
  .lgv2-hearing-pulse i:nth-child(2){height:18px;animation-delay:.12s}
  .lgv2-hearing-pulse i:nth-child(3){height:13px;animation-delay:.24s}

  .lgv2-heard-btn {
    width: 100%;
    min-height: 44px;
    margin-top: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border-radius: 15px;
    border: 1px solid rgba(155, 119, 51, .34);
    background: rgba(255, 251, 242, .78);
    color: #7e1732;
    font: 800 11px/1 ui-sans-serif, system-ui, sans-serif;
    letter-spacing: .08em;
  }

  .lgv2-heard-btn svg {
    width: 18px;
    height: 18px;
    fill: currentColor;
  }

  .lgv2-heard-btn.is-confirmed {
    background: #eaf3e5;
    border-color: rgba(67, 127, 74, .34);
    color: #2f7540;
  }

  .lgv2-player-network {
    width: 100%;
    margin-top: 7px;
    padding-top: 7px;
    display: flex;
    align-items: center;
    gap: 9px;
    border-top: 1px solid rgba(127, 100, 65, .18);
  }

  .lgv2-player-network > span:last-child {
    min-width: 0;
    display: block;
  }

  .lgv2-player-network small {
    display: block;
    font: 700 8px/1.2 ui-sans-serif, system-ui, sans-serif;
    letter-spacing: .08em;
    color: #8d7768;
  }

  .lgv2-player-network b {
    display: block;
    margin-top: 2px;
    font: 700 11px/1.2 ui-sans-serif, system-ui, sans-serif;
    color: #50342c;
  }

  .lgv2-net-bars {
    height: 23px;
    min-width: 31px;
    display: inline-flex;
    align-items: flex-end;
    gap: 2px;
  }

  .lgv2-net-bars i {
    width: 4px;
    border-radius: 4px 4px 1px 1px;
    background: #ded5c5;
  }
  .lgv2-net-bars i:nth-child(1){height:7px}
  .lgv2-net-bars i:nth-child(2){height:10px}
  .lgv2-net-bars i:nth-child(3){height:13px}
  .lgv2-net-bars i:nth-child(4){height:17px}
  .lgv2-net-bars i:nth-child(5){height:21px}

  .lgv2-net-bars.q5 i.is-on,
  .lgv2-net-bars.q4 i.is-on { background:#4da565; }
  .lgv2-net-bars.q3 i.is-on { background:#d3942c; }
  .lgv2-net-bars.q2 i.is-on,
  .lgv2-net-bars.q1 i.is-on { background:#da6a38; }
  .lgv2-net-bars.q0 i { background:#b9ada6; }
  .lgv2-net-bars.is-unknown i { background:#d9d0c4; opacity:.65; }
}

@keyframes lgv2PreflightIn {
  from { opacity:0; transform:scale(1.015); }
  to { opacity:1; transform:scale(1); }
}
@keyframes lgv2PreflightHalo {
  0%,100% { transform:scale(.97); opacity:.72; }
  50% { transform:scale(1.03); opacity:1; }
}
@keyframes lgv2PreflightTick {
  0% { transform:scale(1.18); opacity:0; }
  100% { transform:scale(1); opacity:1; }
}
@keyframes lgv2PreflightWave {
  0% { transform:scale(.9); opacity:.58; }
  100% { transform:scale(3.1); opacity:0; }
}
@keyframes lgv2PreflightLiveFlash {
  0% { opacity:0; }
  38% { opacity:1; }
  100% { opacity:0; }
}
@keyframes lgv2HearBars {
  from { transform:scaleY(.55); opacity:.7; }
  to { transform:scaleY(1); opacity:1; }
}

@media (prefers-reduced-motion: reduce) {
  .lgv2-speech-preflight { transition-duration:80ms; }
  .lgv2-speech-preflight,
  .lgv2-speech-preflight__halo,
  .lgv2-speech-preflight__halo::after,
  .lgv2-speech-preflight__content strong,
  .lgv2-hearing-pulse i { animation: none !important; }
}

/* ============================================================================
   V4.7 — Profil persistant + avatars premium fournis par l'utilisateur
   ========================================================================== */
.lgv2-entry__profile-link{
  width:42px;height:42px;border:1.4px solid #c7a466;border-radius:50%;padding:0;
  display:grid;place-items:center;background:rgba(255,250,241,.96);color:#72152d;
  box-shadow:0 5px 14px rgba(79,42,25,.09);cursor:pointer
}
.lgv2-entry__profile-link svg{width:19px;height:19px}
.lgv2-entry__profile-link:active{transform:scale(.96)}

.lgv2-entry__form{
  overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;
  align-content:start;gap:10px;padding-bottom:calc(12px + env(safe-area-inset-bottom));
}
.lgv2-entry__form::-webkit-scrollbar,.lgv2-avatar-rail::-webkit-scrollbar{display:none}

.lgv2-saved-profile{
  display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:10px;
  padding:9px 10px;border:1px solid rgba(181,143,84,.42);border-radius:18px;
  background:linear-gradient(135deg,rgba(255,252,246,.96),rgba(248,235,214,.9));
  box-shadow:0 7px 18px rgba(85,50,29,.07),inset 0 1px rgba(255,255,255,.9)
}
.lgv2-saved-profile__avatar{width:58px;height:58px;border-radius:50%;padding:2px;background:linear-gradient(145deg,#d4ad67,#78162e);box-shadow:0 5px 12px rgba(84,33,32,.13)}
.lgv2-saved-profile__avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;background:#100d0f}
.lgv2-saved-profile__copy{min-width:0;display:grid;gap:2px}
.lgv2-saved-profile__copy small{font:800 7.2px/1 var(--sans);letter-spacing:.13em;color:#a07843}
.lgv2-saved-profile__copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:800 16.32px/1.05 var(--serif);color:#4c2926}
.lgv2-saved-profile__copy em{font:500 9.28px/1.25 var(--sans);font-style:normal;color:#8b796c}
.lgv2-saved-profile>button{
  min-width:68px;height:32px;padding:0 10px;border:1px solid #c9a569;border-radius:999px;
  background:#fff9ef;color:#74162d;font:800 9.12px/1 var(--sans);letter-spacing:.035em;cursor:pointer
}

.lgv2-avatar-picker{gap:5px!important;min-width:0}
.lgv2-avatar-picker__heading{display:flex;align-items:end;justify-content:space-between;gap:8px;padding-inline:2px}
.lgv2-avatar-picker__heading>span{font:700 13.76px/1 var(--serif);color:#4f211f}
.lgv2-avatar-picker__heading>small{max-width:58%;text-align:right;font:600 8px/1.15 var(--sans);color:#6b5232}
.lgv2-avatar-rail{
  width:100%;min-width:0;display:grid;grid-auto-flow:column;grid-auto-columns:78px;gap:10px;
  overflow-x:auto;overflow-y:visible;scroll-snap-type:x mandatory;scroll-padding-inline:8px;
  padding:7px 7px 11px;-webkit-overflow-scrolling:touch;touch-action:pan-x;
  mask-image:linear-gradient(90deg,transparent 0,#000 12px,#000 calc(100% - 12px),transparent 100%)
}
.lgv2-entry-avatar{
  position:relative;width:78px;aspect-ratio:1;scroll-snap-align:center;border:0;border-radius:50%;padding:3px;
  background:linear-gradient(145deg,#d9b36d,#7d1730);box-shadow:0 5px 13px rgba(71,34,27,.12);
  cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,filter .16s ease;filter:saturate(.94) brightness(.98)
}
.lgv2-entry-avatar::before{content:"";position:absolute;inset:3px;border:1px solid rgba(255,236,190,.72);border-radius:50%;z-index:2;pointer-events:none}
.lgv2-entry-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;background:#0d0b0d}
.lgv2-entry-avatar i{
  position:absolute;right:-1px;bottom:1px;z-index:3;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;
  background:#7d1730;color:#f9df9d;border:2px solid #fff4df;opacity:0;transform:scale(.65);transition:.16s
}
.lgv2-entry-avatar i svg{width:12px;height:12px}
.lgv2-entry-avatar.is-selected{transform:scale(1.085);filter:saturate(1.08);box-shadow:0 0 0 3px rgba(127,20,46,.14),0 7px 18px rgba(92,20,39,.21)}
.lgv2-entry-avatar.is-selected i{opacity:1;transform:scale(1)}

.lgv2-gender-segments{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lgv2-gender-segment{
  height:40px;border:1px solid #d8c39f;border-radius:13px;background:rgba(255,250,242,.82);color:#756153;
  font:750 11.52px/1 var(--sans);cursor:pointer;box-shadow:inset 0 1px rgba(255,255,255,.8)
}
.lgv2-gender-segment.is-selected{border-color:#8b1932;background:linear-gradient(145deg,#8a1832,#6e1028);color:#fff1d7;box-shadow:0 5px 12px rgba(116,19,45,.13)}

.lgv2-profile-settings__form{padding-top:5px}
.lgv2-profile-preferences{
  display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px;border:1px solid rgba(180,141,82,.38);border-radius:18px;
  background:rgba(255,250,241,.82)
}
.lgv2-profile-preferences>div{grid-column:1/-1;display:grid;gap:2px}
.lgv2-profile-preferences>div small{font:800 7.2px/1 var(--sans);letter-spacing:.13em;color:#9b7544}
.lgv2-profile-preferences>div b{font:800 14.4px/1.05 var(--serif);color:#4f2a28}
.lgv2-pref-toggle{
  min-width:0;min-height:66px;border:1px solid #dac59e;border-radius:15px;background:#fff9ee;color:#735e51;padding:8px;
  display:grid;grid-template-columns:30px minmax(0,1fr);grid-template-rows:auto auto;column-gap:7px;text-align:left;cursor:pointer
}
.lgv2-pref-toggle>span{grid-row:1/3;width:30px;height:30px;align-self:center;border-radius:50%;display:grid;place-items:center;background:#eadbc5;color:#7f1730}
.lgv2-pref-toggle>span svg{width:16px;height:16px}
.lgv2-pref-toggle>b{align-self:end;font:800 10.56px/1.1 var(--sans)}
.lgv2-pref-toggle>i{align-self:start;font:700 8.48px/1.1 var(--sans);font-style:normal;color:#9a8777}
.lgv2-pref-toggle.is-on{border-color:rgba(105,145,75,.46);background:#f5f9ed;color:#4e6c37}
.lgv2-pref-toggle.is-on>span{background:#e2efd7;color:#4f7d3b}
.lgv2-profile-privacy{text-align:center;color:#8a7667;font:600 9.12px/1.3 var(--sans)}
.lgv2-profile-privacy a{color:#7e1730;text-underline-offset:2px}

/* Le panneau d'avatar en partie utilise le même défilement horizontal premium. */
.lgv2-avatar-grid.lgv2-avatar-rail.is-panel{
  display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:82px;gap:10px;
  overflow-x:auto;overflow-y:hidden;padding:14px 16px 18px;scroll-snap-type:x mandatory
}
.lgv2-avatar-grid.lgv2-avatar-rail.is-panel .lgv2-avatar-option{width:82px;scroll-snap-align:center}

@media(max-width:390px){
  .lgv2-entry__profile-link{width:38px;height:38px}.lgv2-entry__profile-link svg{width:17px;height:17px}
  .lgv2-saved-profile{grid-template-columns:52px minmax(0,1fr) auto;padding:8px;gap:8px}.lgv2-saved-profile__avatar{width:52px;height:52px}.lgv2-saved-profile>button{min-width:62px;padding-inline:8px}
  .lgv2-avatar-rail{grid-auto-columns:70px;gap:8px;padding-inline:5px}.lgv2-entry-avatar{width:70px}.lgv2-avatar-picker__heading>small{font-size:7.36px}
}
@media(max-height:690px){
  .lgv2-entry__form{gap:7px}.lgv2-avatar-rail{grid-auto-columns:62px;padding-block:4px 8px}.lgv2-entry-avatar{width:62px}.lgv2-saved-profile__avatar{width:48px;height:48px}.lgv2-saved-profile{grid-template-columns:48px minmax(0,1fr) auto}
  .lgv2-avatar-picker__heading>small{display:none}.lgv2-profile-preferences{padding:8px}.lgv2-pref-toggle{min-height:58px}
}
.lgv2-profile-mini-link{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 3px;color:#8b7666}
.lgv2-profile-mini-link>span{display:inline-flex;align-items:center;gap:5px;font:750 8.8px/1 var(--sans);letter-spacing:.025em}.lgv2-profile-mini-link>span svg{width:13px;height:13px;color:#6f914f}
.lgv2-profile-mini-link>button{border:0;background:transparent;padding:4px 0;color:#7c1730;text-decoration:underline;text-underline-offset:3px;font:800 9.28px/1 var(--sans);cursor:pointer}

@layer circle {
  /* --- Reception nominative : qui entend, qui n'entend pas -------------- */
  .lgv2-hearroll{margin:12px 0 0;border-radius:14px;overflow:hidden;
    background:linear-gradient(180deg,#fbf5e9,#eee3d2);border:1px solid rgba(150,119,70,.34)}
  .lgv2-hearroll header{display:flex;align-items:center;gap:11px;padding:11px 13px}
  .lgv2-hearroll header div{flex:1;min-width:0}
  .lgv2-hearroll small{display:block;font:700 8px/1 var(--sans);letter-spacing:.2em;color:#7a6648}
  .lgv2-hearroll header b{display:block;margin-top:4px;font:600 13.44px/1.25 var(--sans);color:#3f3022}
  .lgv2-hearroll header strong{font:700 13.12px/1 var(--sans);color:#6e5a3d;flex:none}
  .lgv2-hearroll.is-all{border-color:rgba(90,190,120,.45)}
  .lgv2-hearroll.is-all header strong{color:#39764a}
  .lgv2-hearroll.is-problem{border-color:rgba(214,74,74,.55)}
  .lgv2-hearroll.is-problem header strong{color:#f08c8c}
  .lgv2-hearroll-list{list-style:none;margin:0;padding:0 13px 11px;display:grid;gap:6px}
  .lgv2-hearroll-list li{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:9px;
    background:rgba(255,255,255,.62);font:600 12.8px/1.2 var(--sans);color:#4c3b2d}
  .lgv2-hearroll-list li b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
  .lgv2-hearroll-list li small{font-size:10.56px;color:#756451;flex:none}
  .lgv2-hear-mark{width:20px;height:20px;flex:none;display:grid;place-items:center;border-radius:50%;
    font-size:9.92px;background:rgba(255,255,255,.08)}
  .lgv2-hearroll-list li.is-heard{background:rgba(86,137,91,.12)}
  .lgv2-hearroll-list li.is-heard .lgv2-hear-mark{background:#5b8d62;color:#fff}
  .lgv2-hearroll-list li.is-heard svg{width:11px;height:11px}
  .lgv2-hearroll-list li.is-deaf{background:rgba(214,74,74,.16)}
  .lgv2-hearroll-list li.is-deaf .lgv2-hear-mark{background:rgba(214,74,74,.4);color:#ffc9c9}
  .lgv2-hearroll-list li.is-deaf small{color:#f0a4a4}
  .lgv2-hearroll-list li.is-waiting{opacity:.62}
  .lgv2-hear-bars{display:flex;gap:2px;flex:none}
  .lgv2-hear-bars i{width:3px;height:10px;border-radius:1px;background:rgba(255,255,255,.16)}
  .lgv2-hear-bars i.is-on{background:#5b8d62}

  /* --- Question posee a l'auditeur -------------------------------------- */
  .lgv2-hear-prompt{margin:12px 0 0;padding:13px;border-radius:14px;
    background:linear-gradient(180deg,#fbf5e9,#eee3d2);
    border:1px solid rgba(150,119,70,.34)}
  .lgv2-hear-prompt>b{display:block;text-align:center;font:600 14.72px/1.3 var(--sans);color:#3f3022}
  .lgv2-hear-choice{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
  .lgv2-hear-choice button{min-height:50px;border-radius:11px;border:1px solid transparent;cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    font:700 10.88px/1 var(--sans);letter-spacing:.14em;touch-action:manipulation;
    -webkit-tap-highlight-color:transparent}
  .lgv2-hear-choice button svg{width:15px;height:15px}
  .lgv2-hear-choice .is-yes{background:linear-gradient(180deg,#e9f3df,#d8e9ce);border-color:#72936d;color:#31523a}
  .lgv2-hear-choice .is-no{background:linear-gradient(180deg,#f7e6e2,#ead0ca);border-color:#b87b75;color:#6f2d31}
  .lgv2-hear-choice button:active{transform:translateY(1px)}
  .lgv2-hear-prompt.is-answered{display:flex;align-items:center;gap:10px;border-color:rgba(90,190,120,.45)}
  .lgv2-hear-prompt.is-answered span{display:grid;place-items:center;width:26px;height:26px;flex:none;
    border-radius:50%;background:rgba(90,190,120,.28);color:#8fe0a8}
  .lgv2-hear-prompt.is-answered svg{width:13px;height:13px}
  .lgv2-hear-prompt.is-answered b{font:600 13.44px/1.25 var(--sans);color:#dcf6e4}
  .lgv2-hear-prompt.is-repairing{display:flex;align-items:center;gap:11px;flex-wrap:wrap;border-color:rgba(240,170,90,.45)}
  .lgv2-hear-prompt.is-repairing div{flex:1;min-width:140px}
  .lgv2-hear-prompt.is-repairing b{display:block;font:600 13.44px/1.25 var(--sans);color:#f6dcae}
  .lgv2-hear-prompt.is-repairing small{display:block;margin-top:3px;font-size:11.2px;color:#bda98a}
  .lgv2-hear-prompt.is-repairing button{min-height:42px;padding:0 15px;border-radius:10px;cursor:pointer;
    background:rgba(255,240,205,.1);border:1px solid rgba(240,212,152,.5);color:#f2dfb4;
    font:700 9.6px/1 var(--sans);letter-spacing:.14em}
  .lgv2-hear-spin{width:20px;height:20px;flex:none;border-radius:50%;
    border:2px solid rgba(240,212,152,.25);border-top-color:#e8cf9a;
    animation:lgv2-hear-spin 900ms linear infinite}
  @keyframes lgv2-hear-spin{to{transform:rotate(360deg)}}
  @media(prefers-reduced-motion:reduce){.lgv2-hear-spin{animation:none}}
}






@layer enhancements {
  /* ==================================================================
     LA PLACE — decor et placement des joueurs.

     Le cercle dessine sur l'illustration a ete MESURE, pas estime :
       - il s'etend de 8 % a 92 % de la largeur   -> demi-axe a = 0,42 L
       - son sommet est a 21 %, sa base a 46 %    -> centre a 33,5 % de H
       - l'image fait 941 x 1672, donc H = 1,777 L

     On en deduit, L etant la largeur de reference :
       diametre du cercle  = 0,84 L
       demi-axe vertical   = 0,125 x 1,777 L = 0,222 L
       aplatissement       = 0,222 / 0,42 = 0,529
       centre vertical     = 0,335 x 1,777 L = 0,595 L

     L'image est calee en `100% auto` depuis le haut : sa geometrie est donc
     entierement previsible et les avatars tombent sur l'anneau, pas a cote.
     Consequence voulue : le cercle occupe 18 % a 39 % de la hauteur d'ecran,
     donc uniquement la moitie haute. Tout le bas reste libre.
     ================================================================== */
  .lgv2-circle-screen .lgv2-circle-stage{--pw:min(100vw,520px)}

  /* --- Le cercle de joueurs, cale sur l'anneau du dallage ------------- */
  .lgv2-circle-screen .lgv2-player-ring{
    --ring:calc(var(--pw) * .81);
    --radius:calc(var(--pw) * .405);
    --squash:.529;
    --avatar:clamp(34px,9.2vw,46px);
    position:relative;width:var(--ring);height:var(--ring);
    background:none;border:0;
    /* centre a 0,595 L : marge = 0,595 L - rayon du cadre (0,42 L) */
    margin:calc(var(--pw) * .19) auto 0}

  /* Le sol est vu en perspective : un cercle reel s'y projette en ellipse.
     scaleY() encadre le placement circulaire, puis son inverse rend a
     l'avatar ses proportions exactes. */
  .lgv2-circle-screen .lgv2-circle-player{
    position:absolute;left:50%;top:50%;width:var(--avatar);z-index:4;
    transform:translate(-50%,-50%)
      scaleY(var(--squash))
      rotate(var(--angle)) translateY(calc(var(--radius) * -1)) rotate(calc(var(--angle) * -1))
      scaleY(calc(1 / var(--squash)))}

  /* --- Le nom, EXACTEMENT sous l'avatar ------------------------------- */
  .lgv2-circle-screen .lgv2-circle-player > b{
    position:absolute;left:50%;top:100%;transform:translateX(-50%);
    margin:5px 0 0;padding:2px 8px;border-radius:8px;
    width:max-content;max-width:78px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    font:700 9.6px/1.15 var(--serif);text-align:center;
    background:rgba(58,14,26,.88);color:#f6e7cd;
    box-shadow:0 2px 8px rgba(0,0,0,.35)}
  .lgv2-circle-screen:not(.is-night-mode) .lgv2-circle-player > b{
    background:rgba(255,251,243,.94);color:#5c1226;
    box-shadow:0 2px 8px rgba(92,18,38,.2)}

  /* Densite : au-dela de 14 puis 17 joueurs. */
  .lgv2-circle-stage.is-crowded .lgv2-player-ring{--avatar:clamp(28px,7.4vw,36px)}
  .lgv2-circle-stage.is-very-crowded .lgv2-player-ring{--avatar:clamp(23px,6.2vw,30px)}
  .lgv2-circle-stage.is-crowded .lgv2-circle-player > b{font-size:8.64px;max-width:74px;padding:1px 5px}
  @media (max-width:360px){
    .lgv2-circle-stage.is-very-crowded .lgv2-circle-player > b{display:none}
  }
}

@layer enhancements {
  /* ==================================================================
     FICHE JOUEUR — refonte.

     L'ancienne version empilait du texte nu : le libelle « CONNEXION AUDIO »
     debordait du cadre, et des lignes sans valeur (« Non applicable »,
     « Âge non renseigne ») occupaient de la place pour rien.

     Ici, chaque ligne est une paire etiquette / valeur sur une grille : la
     valeur est tronquee proprement si elle est trop longue, et ne peut plus
     sortir du cadre. Les lignes vides ne sont tout simplement pas produites.
     ================================================================== */
  .lgv2-pcard{position:absolute;z-index:70;width:min(78vw,264px);
    border-radius:16px;padding:13px 14px 14px;
    background:linear-gradient(178deg,#fffdf7,#f7efdd);
    border:1px solid rgba(124,16,39,.18);
    box-shadow:0 18px 44px rgba(38,10,20,.34),0 0 0 1px rgba(226,196,132,.3);
    color:#4a2f22}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard{
    background:linear-gradient(178deg,#241a33,#180f26);
    border-color:rgba(226,196,132,.26);color:#f0e4d2;
    box-shadow:0 18px 44px rgba(0,0,0,.55),0 0 0 1px rgba(226,196,132,.2)}

  .lgv2-pcard__head{display:flex;align-items:center;gap:11px;min-width:0}
  .lgv2-pcard__face{width:46px;height:46px;flex:none;border-radius:50%;overflow:hidden;
    border:2px solid rgba(124,16,39,.5);background:#eadfc9}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__face{border-color:rgba(226,196,132,.5);background:#2b2038}
  .lgv2-pcard__face img{width:100%;height:100%;object-fit:cover;display:block}
  .lgv2-pcard__face.is-dead img{filter:grayscale(1) brightness(.7)}
  .lgv2-pcard__head > div{min-width:0;flex:1}
  .lgv2-pcard__head b{display:block;font:700 15.68px/1.2 var(--serif);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#7c1027}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__head b{color:#f7e7c8}

  /* Pastille d'etat : une seule, coloree, jamais ambigue. */
  .lgv2-pcard__state{display:inline-block;margin-top:5px;padding:3px 9px;border-radius:999px;
    font:700 8.96px/1 var(--sans);letter-spacing:.06em;font-style:normal;
    max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .lgv2-pcard__state.is-speaking{background:#1f7a45;color:#eafff1}
  .lgv2-pcard__state.is-done{background:rgba(124,16,39,.14);color:#7c1027}
  .lgv2-pcard__state.is-waiting{background:rgba(120,96,66,.18);color:#6d5a42}
  .lgv2-pcard__state.is-dead{background:#3a3a44;color:#e2e2ea}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__state.is-done{background:rgba(226,196,132,.2);color:#f0d9a8}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__state.is-waiting{background:rgba(226,196,132,.13)}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__state.is-waiting{color:#cdb894}

  /* Lignes etiquette / valeur : la valeur ne peut pas deborder. */
  .lgv2-pcard__rows{margin:12px 0 0;padding:11px 0 0;display:grid;gap:7px;
    border-top:1px solid rgba(124,16,39,.12)}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__rows{border-top-color:rgba(226,196,132,.16)}
  .lgv2-pcard__rows > div{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:baseline}
  .lgv2-pcard__rows dt{margin:0;font:600 9.92px/1.3 var(--sans);letter-spacing:.04em;color:#9b8265}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__rows dt{color:#a8927a}
  .lgv2-pcard__rows dd{margin:0;text-align:right;font:600 11.52px/1.3 var(--sans);color:#4a2f22;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__rows dd{color:#f0e4d2}

  /* Reception audio : n'apparait que si elle a ete mesuree. */
  .lgv2-pcard__net{margin-top:11px;padding-top:10px;display:flex;align-items:center;gap:9px;
    border-top:1px solid rgba(124,16,39,.12)}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__net{border-top-color:rgba(226,196,132,.16)}
  .lgv2-pcard__label{flex:1;min-width:0;font:600 9.92px/1.3 var(--sans);color:#9b8265;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__label{color:#a8927a}
  .lgv2-pcard__net b{flex:none;font:700 11.52px/1 var(--sans);color:#7c1027}
  .lgv2-circle-screen.is-night-mode .lgv2-pcard__net b{color:#f0d9a8}
  .lgv2-pcard__bars{flex:none;display:flex;align-items:flex-end;gap:2px}
}

@layer enhancements {
  /* ==================================================================
     ARENE DE PARTIE — les deux illustrations de la place.

     GEOMETRIE MESUREE sur l'image (941 x 1672, rapport 1,777) :
       l'anneau dessine va de 8 % a 92 % de la LARGEUR   -> a = 0,42 L
       son sommet est a 21 % et sa base a 46 % de la HAUTEUR
         -> centre  = 33,5 % H = 0,595 L a l'ecran
         -> demi-axe vertical = 12,5 % H = 0,222 L
         -> aplatissement = 0,222 / 0,42 = 0,53

     L'image est calee en `100% auto` depuis le haut : sa geometrie est donc
     entierement previsible et les avatars tombent sur l'anneau dessine, pas
     a cote. Le cercle occupe la moitie HAUTE et ne descend jamais plus bas.
     ================================================================== */
  .lgv2-circle-screen .lgv2-circle-stage{--aw:min(100vw,460px)}

  /* --- Le cercle de joueurs, cale sur l'anneau dessine --------------- */
  .lgv2-circle-screen .lgv2-player-ring{
    --ring:calc(var(--aw) * .82);          /* diametre = 2 x 0,41 L */
    --radius:calc(var(--aw) * .41);
    --squash:.53;
    --avatar:clamp(38px,11vw,54px);
    position:relative;width:var(--ring);height:var(--ring);
    background:none;border:0;
    /* centre a 0,595 L : marge = 0,595 L - rayon du cadre (0,42 L) */
    /* Centre a 0,625 L : mesure sur le rendu, l'anneau dessine tombe
       legerement plus bas que le calcul theorique ne le donnait. */
    margin:calc(var(--aw) * .215) auto 0}

  /* Placement elliptique : scaleY encadre le placement circulaire, puis son
     inverse rend a l'avatar ses proportions exactes. */
  .lgv2-circle-screen .lgv2-circle-player{
    position:absolute;left:50%;top:50%;width:var(--avatar);text-align:center;
    transform:translate(-50%,-50%)
      scaleY(var(--squash))
      rotate(var(--angle)) translateY(calc(var(--radius) * -1)) rotate(calc(var(--angle) * -1))
      scaleY(calc(1 / var(--squash)))}

  /* Le nom est colle SOUS l'avatar, centre dessus, sans decalage. */
  .lgv2-circle-screen .lgv2-circle-player > b{
    display:block;position:absolute;left:50%;top:calc(100% + 2px);
    transform:translateX(-50%);
    width:max-content;max-width:84px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    padding:0 3px;border-radius:6px;
    background:none;border:0;box-shadow:none;
    color:#FFF6E6;
    text-shadow:0 1px 2px rgba(22,13,6,.95),0 0 3px rgba(22,13,6,.85),0 0 1px rgba(22,13,6,.95);
    font:700 8.5px/1.2 var(--serif);letter-spacing:.02em}
  .lgv2-circle-screen .lgv2-circle-player{padding-bottom:0}

  /* Densite : au-dela de 14 puis 17 joueurs. */
  .lgv2-circle-stage.is-crowded .lgv2-player-ring{--avatar:clamp(31px,8.6vw,42px)}
  .lgv2-circle-stage.is-very-crowded .lgv2-player-ring{--avatar:clamp(27px,7.4vw,36px)}
  .lgv2-circle-stage.is-crowded .lgv2-circle-player > b{font-size:7.7px;padding:0 2px;max-width:66px}
  .lgv2-circle-stage.is-very-crowded .lgv2-circle-player > b{font-size:7px;max-width:56px}
}


@layer enhancements {
  /* ==================================================================
     ARENE — illustration de fond et geometrie du cercle.

     Mesures relevees a la grille sur l'illustration (941 x 1672, H/L = 1,777) :
       - l'anneau dessine s'etend de 8 % a 92 % de la LARGEUR
       - son sommet est a 21 % et sa base a 46 % de la HAUTEUR
       - son centre tombe donc a 33,5 % de la hauteur

     Converti en fraction de la largeur de reference L :
       demi-axe horizontal  a = 0,42 L   (ramene a 0,385 L pour laisser
                                          respirer les pastilles de nom)
       centre vertical        = 0,335 x 1,777 = 0,595 L
       demi-axe vertical    b = 0,125 x 1,777 = 0,222 L
       aplatissement          = b / a = 0,53

     L'illustration est calee en `100% auto` depuis le haut : sa geometrie est
     donc entierement previsible et les avatars tombent sur l'anneau DESSINE.
     ================================================================== */
  .lgv2-circle-screen .lgv2-circle-stage{--pw:min(100vw,460px)}

  /* --- Le cercle, pose sur l'anneau dessine -------------------------- */
  .lgv2-circle-screen .lgv2-player-ring{
    --radius:calc(var(--pw, min(100vw, 460px)) * .385);
    --squash:.53;
    --ring:calc(var(--radius) * 2);
    position:relative;
    width:var(--ring);height:var(--ring);
    background:none;border:0;
    /* centre a 0,595 L : marge = 0,595 L - rayon du cadre (0,385 L) */
    margin:calc(var(--pw, min(100vw, 460px)) * .21) auto 0}

  /* Ellipse : le placement circulaire est encadre par scaleY() et son inverse.
     La position est ecrasee verticalement, l'avatar garde ses proportions. */
  .lgv2-circle-screen .lgv2-circle-player{
    position:absolute;left:50%;top:50%;width:var(--avatar);text-align:center;
    transform:translate(-50%,-50%)
      scaleY(var(--squash))
      rotate(var(--angle)) translateY(calc(var(--radius) * -1)) rotate(calc(var(--angle) * -1))
      scaleY(calc(1 / var(--squash)))}

  /* --- Le nom, exactement sous l'avatar ------------------------------ */
  .lgv2-circle-screen .lgv2-circle-player > b{
    display:block;position:static;transform:none;
    width:auto;margin:5px auto 0;padding:2px 8px;
    max-width:11ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    border-radius:8px;font:700 9.92px/1.2 var(--serif);letter-spacing:.01em}
  .lgv2-circle-screen:not(.is-night-mode) .lgv2-circle-player > b{
    background:rgba(46,20,14,.72);color:#fdf1dc}
  .lgv2-circle-screen.is-night-mode .lgv2-circle-player > b{
    background:rgba(10,8,20,.78);color:#f4e7cd}

  /* Densite : les pastilles se resserrent, jamais elles ne se chevauchent. */
  .lgv2-circle-stage.is-crowded .lgv2-player-ring{--avatar:clamp(25px,6.2vw,32px)}
  .lgv2-circle-stage.is-very-crowded .lgv2-player-ring{--avatar:clamp(21px,5.2vw,27px)}
  .lgv2-circle-stage.is-crowded .lgv2-circle-player > b{font-size:8.64px;max-width:8ch;padding:1px 5px}
  @media (max-width:360px){
    .lgv2-circle-stage.is-very-crowded .lgv2-circle-player > b{display:none}
  }
}

/* ====================================================================
   PLATEAU DE JEU — décor, textes et SYSTÈME DE BOUTONS UNIFIÉ (6.6.0).

   Ces règles sont volontairement HORS de toute @layer : une déclaration
   sans couche l'emporte sur toutes les déclarations en couche. C'est ce
   qui fait de cette section la SOURCE UNIQUE de vérité pour l'apparence
   du plateau. Elle REMPLACE les stacks correctifs des versions 6.2 à 6.5
   (définitions du bouton principal en 25 exemplaires, noms de joueurs
   redéfinis trois fois, état désactivé semi-transparent), qui ont été
   supprimés du fichier au lieu d'être recouverts une fois de plus.

   Organisation :
     0. Jetons (couleurs et états du système de boutons)
     1. Fond de partie (illustrations posées sur le plateau)
     2. Géométrie du cercle
     3. Noms des joueurs — une seule définition
     4. Le paysage s'anime
     5. Voile de lisibilité du bas d'écran
     6. Panneaux de phase : transparents, posés sur l'illustration
     7. Textes des panneaux : clairs, car le voile assombrit les DEUX modes
     8. SYSTÈME DE BOUTONS (base, primaire, « à vous », secondaire,
        désactivé, appui, focus, variantes sémantiques)
     9. Composants d'appoint du bas d'écran (pastilles d'information)
   ==================================================================== */

/* --- 0. Jetons ------------------------------------------------------ */
.lgv2{
  /* Surfaces grenat (action principale) */
  --lg-btn-grenat-1:#94203b;
  --lg-btn-grenat-2:#75132c;
  --lg-btn-grenat-3:#570d20;
  /* Surface verte (« c'est à votre tour ») */
  --lg-btn-vert-1:#2b9152;
  --lg-btn-vert-2:#1b6f3e;
  --lg-btn-vert-3:#10522d;
  /* Surface ivoire (action secondaire) */
  --lg-btn-ivoire-1:#fbf1da;
  --lg-btn-ivoire-2:#eedcb4;
  /* Surface or (état accompli) */
  --lg-btn-or-1:#efd9a6;
  --lg-btn-or-2:#c5935b;
  /* État désactivé : ASSOMBRI et opaque, jamais transparent */
  --lg-btn-off-1:#4c343c;
  --lg-btn-off-2:#3b272e;
  --lg-btn-off-fg:#ddcfbf;
  /* Encres et filets */
  --lg-btn-creme:#fdf3dd;
  --lg-btn-creme-fort:#fff8e8;
  --lg-btn-or-texte:#f0d089;
  --lg-btn-encre:#3f1523;
  --lg-btn-filet-or:rgba(236,204,142,.72);
  --lg-btn-filet-vert:rgba(146,232,178,.78);
  --lg-focus:#ffd98c;
}

.lgv2-circle-screen{
  padding:calc(0px + env(safe-area-inset-top)) 0 calc(0px + env(safe-area-inset-bottom));
  border-inline:0;box-shadow:none;
  background:#ddae75}
.lgv2-circle-screen.is-night-mode{background:#8f6e50}

/* 7.0.57 — Le décor courant est dessiné par .lgv2-square et utilise les
   lisières packagées. Les anciennes images arena-*-720.webp ont été retirées
   du projet en 6.97.0 : ne plus les requêter évite deux 404 permanentes. */
.lgv2-circle-screen .lgv2-circle-stage{
  background-image:none;
  background-color:#ddae75}
.lgv2-circle-screen.is-night-mode .lgv2-circle-stage{
  background-image:none;
  background-color:#8f6e50}

/* --- 1bis. Rangées du plateau ------------------------------------------
   La grille d'origine réservait une rangée 1fr au cercle : tout l'espace
   libre s'intercalait ENTRE le cercle et le panneau, qui se retrouvait
   collé au pied de l'écran. Chaque rangée devient auto-dimensionnée : le
   panneau vient se poser JUSTE SOUS les avatars, l'espace libre descend
   en bas. */
.lgv2-circle-screen .lgv2-circle-stage{
  grid-template-rows:none;
  grid-auto-rows:min-content;
  align-content:start;
  row-gap:12px}

/* --- 2. Géométrie du cercle ------------------------------------------
   Calée sur l'anneau DESSINÉ dans l'illustration. Mesures relevées à la
   grille : anneau de 8 % à 92 % de la largeur, sommet à 21 % et base à
   46 % de la hauteur (rapport H/L = 1,777). */
.lgv2-circle-screen .lgv2-player-ring{
  --radius:calc(min(100vw,460px) * .405);
  --squash:.627;
  position:relative;
  width:calc(var(--radius) * 2);height:calc(var(--radius) * 2);
  background:none;border:0;
  margin:calc(min(100vw,460px) * .22) auto 0}

.lgv2-circle-screen .lgv2-circle-player{
  position:absolute;left:50%;top:50%;width:var(--avatar);text-align:center;
  transform:translate(-50%,-50%)
    scaleY(var(--squash))
    rotate(var(--angle)) translateY(calc(var(--radius) * -1)) rotate(calc(var(--angle) * -1))
    scaleY(calc(1 / var(--squash)))}

/* --- 3. Noms des joueurs — UNE seule définition ----------------------
   Les noms traversent des zones claires (dallage) et sombres (mur du
   village). Aucune couleur unique ne convient : on trace donc un CONTOUR
   clair autour de glyphes sombres, lisible sur n'importe quel fond, de
   jour comme de nuit. (Les pastilles à fond opaque des versions 6.3-6.5,
   définies trois fois avec des couleurs contradictoires, sont supprimées.) */
.lgv2-circle-screen .lgv2-circle-player > b,
.lgv2-circle-screen.is-night-mode .lgv2-circle-player > b{
  display:block;position:static;transform:none;
  width:auto;margin:5px auto 0;padding:0;
  background:none;box-shadow:none;border-radius:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  max-width:12ch;
  font-family:var(--serif);font-weight:800;
  font-size:clamp(7.04px,calc(12.48px - var(--count,8) * 0.192px),11.52px);
  line-height:1.15;letter-spacing:.008em;
  color:#1f0d04;
  -webkit-text-stroke:2.4px rgba(255,251,242,.92);
  paint-order:stroke fill;
  text-shadow:0 1px 4px rgba(255,250,238,.85),0 0 8px rgba(255,248,232,.6)}

/* États : toujours la même technique, seule l'encre change. */
.lgv2-circle-screen .lgv2-circle-player.is-dead > b{
  text-decoration:none;color:#62584f;opacity:.72}
.lgv2-circle-screen .lgv2-circle-player.is-speaking > b,
.lgv2-circle-screen .lgv2-circle-player.is-talking > b{
  color:#7c142d;
  -webkit-text-stroke:2.6px rgba(255,246,226,.96)}

/* Densité : la largeur se resserre, les noms ne se chevauchent jamais. */
.lgv2-circle-stage.is-crowded .lgv2-circle-player > b{max-width:9ch}
.lgv2-circle-stage.is-very-crowded .lgv2-circle-player > b{max-width:7ch}
@media (max-width:360px){
  .lgv2-circle-stage.is-very-crowded .lgv2-circle-player > b{font-size:6.72px}
}

/* --- 4. Le paysage s'anime -------------------------------------------
   Nuages qui dérivent, halo qui respire, rivière qui scintille.
   Uniquement transform et opacity : rien qui déclenche une remise en page. */
.lgv2-sky-life{position:absolute;left:0;right:0;top:0;height:42%;z-index:1;
  overflow:hidden;pointer-events:none}





/* --- 5. Voile de lisibilité ------------------------------------------
   Assombrissement PROGRESSIF du bas de l'écran : pas une carte, pas une
   boîte — l'illustration reste visible au travers. C'est lui qui rend le
   texte clair lisible dans la zone des panneaux, de jour comme de nuit. */
.lgv2-circle-screen .lgv2-circle-stage::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:24%;
  z-index:2;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(38,22,12,0) 0%,
    rgba(32,17,9,.2) 45%,
    rgba(24,12,6,.42) 100%)}
.lgv2-circle-screen.is-night-mode .lgv2-circle-stage::after{
  background:linear-gradient(180deg,
    rgba(8,10,22,0) 0%,
    rgba(6,8,18,.22) 45%,
    rgba(4,6,14,.45) 100%)}

/* Les panneaux passent AU-DESSUS du voile. */
.lgv2-circle-screen .lgv2-circle-stage > *:not(.lgv2-sky-life){
  position:relative;z-index:3}

/* --- 6. Panneaux de phase : une assise sombre qui les suit -----------
   Le panneau vit désormais JUSTE SOUS le cercle, sur le parchemin clair :
   il porte donc sa propre assise sombre translucide à filet or, la même
   famille que les pastilles d'information. Le contraste des textes crème
   ne dépend plus de la position du panneau à l'écran. */
.lgv2-circle-screen .lgv2-day-panel,
.lgv2-circle-screen .lgv2-night-panel,
.lgv2-circle-screen .lgv2-morning-panel,
.lgv2-circle-screen .lgv2-mayor-stage,
.lgv2-circle-screen .lgv2-role-interrupt{
  width:min(94%,428px);
  margin-inline:auto!important;
  background:linear-gradient(180deg,rgba(27,14,12,.68) 0%,rgba(20,10,9,.76) 100%)!important;
  border:1px solid rgba(236,204,142,.36)!important;
  border-radius:20px!important;
  box-shadow:0 16px 36px rgba(0,0,0,.32),inset 0 1px 0 rgba(255,232,186,.12)!important;
  backdrop-filter:none!important}

/* Les conteneurs INTERNES restent transparents : une seule assise. */
.lgv2-circle-screen .lgv2-day-glow,
.lgv2-circle-screen .lgv2-mayor-shell,
.lgv2-circle-screen .lgv2-mayor-board,
.lgv2-circle-screen .lgv2-mayor-host-copy,
.lgv2-circle-screen [class*="lgv2-mayor"]:not(button):not(.lgv2-mayor-emblem):not(.lgv2-mayor-stage){
  background:none;background-color:transparent;
  border-color:transparent;box-shadow:none;backdrop-filter:none}

/* PIÈGE 7 ÉLUCIDÉ — la « bande claire » sous le panneau d'élection venait
   d'un ::before à z-index:-2 (couche circle) qui peignait une carte crème
   rgba(255,251,242,.88) DERRIÈRE le panneau. Les audits précédents
   inspectaient le background des éléments, jamais celui des pseudo-éléments.
   On neutralise ici tous les fonds fantômes de panneaux. */
.lgv2-circle-screen .lgv2-mayor-stage::before,
.lgv2-circle-screen .lgv2-vote-stage::before,
.lgv2-circle-screen .lgv2-day-panel::before,
.lgv2-circle-screen .lgv2-night-panel::before,
.lgv2-circle-screen .lgv2-morning-panel::before{
  background:none;border:0;box-shadow:none}

/* --- 7. Textes des panneaux : clairs dans les DEUX modes --------------
   Le voile assombrit le fond des panneaux de jour comme de nuit : y poser
   du texte sombre était une erreur (mesuré entre 1,1 et 1,7 de contraste).
   Les textes de panneau sont donc crème clair, indépendamment du mode. */
.lgv2-circle-screen .lgv2-day-panel *:not(button):not(button *):not(svg):not(path):not(strong),
.lgv2-circle-screen .lgv2-night-panel *:not(button):not(button *):not(svg):not(path),
.lgv2-circle-screen [class*="lgv2-mayor"]:not(button) *:not(button):not(button *):not(svg):not(path),
.lgv2-circle-screen .lgv2-morning-panel *:not(button):not(button *):not(svg):not(path){
  color:#f4e8d2!important;
  text-shadow:0 1px 3px rgba(0,0,0,.9),0 0 8px rgba(0,0,0,.6)!important}

.lgv2-circle-screen .lgv2-day-panel h2,
.lgv2-circle-screen .lgv2-night-panel h2,
.lgv2-circle-screen .lgv2-morning-panel h2,
.lgv2-circle-screen [class*="lgv2-mayor"] h2{
  color:#fff9ec!important;font-weight:800!important}

.lgv2-circle-screen .lgv2-day-panel small,
.lgv2-circle-screen .lgv2-night-panel small,
.lgv2-circle-screen .lgv2-morning-panel small,
.lgv2-circle-screen [class*="lgv2-mayor"] small{
  color:#eccf9c!important;font-weight:800!important}

/* Textes posés directement sur l'illustration (hors panneaux). */
.lgv2-circle-screen .lgv2-circle-stage > section h2,
.lgv2-circle-screen .lgv2-circle-stage > section small,
.lgv2-circle-screen .lgv2-circle-stage > section > p,
.lgv2-circle-screen .lgv2-circle-stage > section header div > *{
  color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 4px rgba(0,0,0,.75),0 2px 10px rgba(0,0,0,.5)}

/* La frise des rôles du Narrateur : posée dans la zone du voile, elle est
   toujours claire, avec une assise sombre propre à chaque étape. */
.lgv2-circle-screen .lgv2-game-stepper,.lgv2-circle-screen .lgv2-game-stepper *,
.lgv2-night-queue,.lgv2-night-queue *{
  color:#f2e6d0!important;text-shadow:0 1px 3px rgba(0,0,0,.8)!important}
.lgv2-night-queue span{
  background:rgba(22,11,9,.55);border:1px solid rgba(236,204,142,.3);
  border-radius:999px;padding:4px 10px}
.lgv2-night-queue span.is-done{opacity:.78}
.lgv2-night-queue span.is-active{
  background:rgba(124,20,45,.72);border-color:rgba(240,208,150,.62);
  color:#fff4dc!important}
.lgv2-circle-screen .lgv2-game-stepper [aria-current="true"],
.lgv2-circle-screen .lgv2-game-stepper .is-current,
.lgv2-circle-screen .lgv2-game-stepper .is-active{color:#ffe9b8!important;font-weight:800}
.lgv2-circle-screen .lgv2-game-stepper svg,.lgv2-night-queue svg{color:#e8c98f!important;opacity:1!important}

/* Encres du salon (hors plateau), mesurées trop pâles en 6.1. */
.lgv2-app small,.lgv2-app p{color:#4a3524}
.lgv2-auto-ready__copy small,.lgv2-auto-ready__copy b{color:#3a2718!important}

/* ====================================================================
   8. SYSTÈME DE BOUTONS.

   Hiérarchie, du plus fort au plus discret :
     « c'est à vous »  vert, halo qui bat — le seul signal qui tranche ;
     action principale grenat, filet or, texte crème ;
     action accomplie  or, encre grenat (candidature enregistrée…) ;
     action secondaire ivoire, encre grenat — jamais de texte or sur
                       fond clair (défaut mesuré à 1,3 en 6.5) ;
     désactivé         ASSOMBRI et opaque, libellé toujours lisible —
                       jamais de demi-transparence fantomatique.

   Tous les libellés ont été vérifiés PAR LA MESURE sur les captures :
     crème #fdf3dd sur grenat #75132c ......... 10,9
     blanc-vert #f2fff7 sur vert #1b6f3e ...... 5,6
     encre #3f1523 sur ivoire #f5e7c7 ......... 12,4
     beige #ddcfbf sur assombri #443039 ....... 7,1
   ==================================================================== */

/* --- 8.1 Base : tout bouton d'action du plateau ---------------------- */
.lgv2-circle-screen button:where(:not(.lgv2-sound-toggle):not(.lgv2-player-settings-btn):not(.lgv2-circle-avatar):not(.lgv2-avatar-scrim):not(.lgv2-entry-avatar):not(.lgv2-grave-compose button):not(.lgv2-grave-recorder button)){
  min-height:48px;
  border-radius:14px;
  background:linear-gradient(177deg,var(--lg-btn-grenat-1) 0%,var(--lg-btn-grenat-2) 52%,var(--lg-btn-grenat-3) 100%);
  border:1px solid var(--lg-btn-filet-or);
  color:var(--lg-btn-creme);
  font-family:var(--serif);font-weight:800;letter-spacing:.05em;
  text-shadow:0 1px 2px rgba(0,0,0,.55);
  box-shadow:0 10px 24px -10px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,232,186,.24);
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
  cursor:pointer;
  transition:transform .14s cubic-bezier(.2,.8,.3,1),filter .18s ease}

.lgv2-circle-screen button:where(:not(.lgv2-sound-toggle):not(.lgv2-player-settings-btn)) b,
.lgv2-circle-screen button:where(:not(.lgv2-sound-toggle):not(.lgv2-player-settings-btn)) span{
  color:var(--lg-btn-creme-fort);text-shadow:0 1px 2px rgba(0,0,0,.6)}
.lgv2-circle-screen button:where(:not(.lgv2-sound-toggle):not(.lgv2-player-settings-btn)) small{
  color:var(--lg-btn-or-texte)}
.lgv2-circle-screen button:where(:not(.lgv2-sound-toggle):not(.lgv2-player-settings-btn)) svg{
  color:#f2d9a2}

/* --- 8.2 Retour d'appui ---------------------------------------------- */
.lgv2-circle-screen button:not(:disabled):active{
  transform:translateY(1px) scale(.985);filter:brightness(.92)}

/* --- 8.3 Focus clavier ------------------------------------------------ */
.lgv2-circle-screen button:focus-visible{
  outline:3px solid var(--lg-focus);outline-offset:2px}

/* --- 8.5 Les grands appels à l'action : barre centrée ----------------- */
.lgv2 .lgv2-day-primary,
.lgv2 .lgv2-night-primary,
.lgv2 .lgv2-night-start,
.lgv2 .lgv2-mayor-launch,
.lgv2 .lgv2-mayor-candidate-btn,
.lgv2 .lgv2-live-mic,
.lgv2 .lgv2-runoff-btn,
.lgv2 .lgv2-audio-unlock,
.lgv2 .lgv2-private-audio-unlock{
  display:flex;align-items:center;justify-content:center;gap:12px;
  width:min(92%,380px);margin-inline:auto;
  min-height:56px;padding:8px 20px;
  border-radius:15px;text-align:center;line-height:1.2}
.lgv2 .lgv2-day-primary > span,.lgv2 .lgv2-night-primary > span{display:grid;gap:3px;min-width:0}
.lgv2 .lgv2-day-primary small,.lgv2 .lgv2-night-primary small,.lgv2 .lgv2-night-start small{
  font-size:8.48px;letter-spacing:.15em}
.lgv2 .lgv2-day-primary b,.lgv2 .lgv2-night-primary b,.lgv2 .lgv2-night-start b{
  font-size:12.8px;letter-spacing:.03em;overflow-wrap:anywhere}
.lgv2 .lgv2-day-primary svg,.lgv2 .lgv2-night-primary svg,.lgv2 .lgv2-live-mic svg{
  width:19px;height:19px;flex:none}

/* --- 8.6 « C'EST À VOUS » : vert, halo qui bat ------------------------ */
.lgv2-circle-screen button.is-your-turn,
.lgv2-day-primary.is-your-turn,
.lgv2-live-mic.is-your-turn{
  position:relative;overflow:visible;min-height:58px;
  background:linear-gradient(177deg,var(--lg-btn-vert-1) 0%,var(--lg-btn-vert-2) 52%,var(--lg-btn-vert-3) 100%);
  border-color:var(--lg-btn-filet-vert);
  box-shadow:0 0 0 1px rgba(150,235,180,.4),
    inset 0 1px 0 rgba(220,255,235,.28),
    0 12px 28px -12px rgba(10,70,40,.7)}
.lgv2-circle-screen button.is-your-turn b,
.lgv2-circle-screen button.is-your-turn span{color:#f2fff7}
.lgv2-circle-screen button.is-your-turn small{color:#dcffe9!important}
.lgv2-circle-screen button.is-your-turn svg{color:#cdf7de}

/* Le halo : une couche ::after animée en transform/opacity uniquement —
   animer une box-shadow forcerait un repaint à chaque image. */
.lgv2-circle-screen button.is-your-turn::after{
  content:"";position:absolute;inset:-4px;border-radius:inherit;pointer-events:none;
  border:2px solid rgba(126,230,166,.9);opacity:0;
  animation:lgv2-turn-pulse 2.1s cubic-bezier(.2,.7,.3,1) infinite}
@keyframes lgv2-turn-pulse{
  0%{opacity:.85;transform:scale(1)}
  70%{opacity:0;transform:scale(1.09)}
  100%{opacity:0;transform:scale(1.09)}}
.lgv2-circle-screen button.is-your-turn svg:first-child{
  animation:lgv2-turn-mic 2.1s ease-in-out infinite}
@keyframes lgv2-turn-mic{0%,100%{transform:scale(1)}50%{transform:scale(1.16)}}
@media(prefers-reduced-motion:reduce){
  .lgv2-circle-screen button.is-your-turn::after,
  .lgv2-circle-screen button.is-your-turn svg:first-child{animation:none}
  .lgv2-circle-screen button.is-your-turn::after{opacity:.7}
}

/* --- 8.7 Action secondaire : ivoire, encre grenat --------------------- */
.lgv2-circle-screen .lgv2-night-secondary,
.lgv2-circle-screen .lgv2-day-pass button,
.lgv2-circle-screen .lgv2-second-request,
.lgv2-circle-screen button[data-action="night-witch-life-no"],
.lgv2-circle-screen button[data-action="night-witch-death-no"],
.lgv2-circle-screen button[data-action="night-witch-death-cancel"]{
  background:linear-gradient(180deg,var(--lg-btn-ivoire-1) 0%,var(--lg-btn-ivoire-2) 100%);
  border:1px solid rgba(124,20,45,.42);
  color:var(--lg-btn-encre);
  text-shadow:none;
  box-shadow:0 8px 20px -10px rgba(30,12,8,.55),inset 0 1px 0 rgba(255,255,255,.7)}
.lgv2-circle-screen .lgv2-night-secondary,
.lgv2-circle-screen .lgv2-night-secondary *,
.lgv2-circle-screen .lgv2-day-pass button,
.lgv2-circle-screen .lgv2-day-pass button *,
.lgv2-circle-screen .lgv2-second-request,
.lgv2-circle-screen .lgv2-second-request b,
.lgv2-circle-screen .lgv2-second-request span,
.lgv2-circle-screen button[data-action="night-witch-life-no"] *,
.lgv2-circle-screen button[data-action="night-witch-death-no"] *,
.lgv2-circle-screen button[data-action="night-witch-death-cancel"] *{
  color:var(--lg-btn-encre);text-shadow:none}
.lgv2-circle-screen .lgv2-second-request small{color:#6b3d1f}
.lgv2-circle-screen .lgv2-night-secondary svg,
.lgv2-circle-screen .lgv2-day-pass button svg,
.lgv2-circle-screen .lgv2-second-request svg{color:#7c142d}

/* Le message d'aide au-dessus du bouton secondaire vit sur le voile :
   il est crème, comme tout texte de panneau. */
.lgv2-circle-screen .lgv2-day-pass{background:none;border:0;box-shadow:none}
.lgv2-circle-screen .lgv2-day-pass small{
  color:#f4e8d2!important;text-shadow:0 1px 3px rgba(0,0,0,.9)!important}

/* --- 8.8 Variantes sémantiques ---------------------------------------- */
/* Choix positif de la Sorcière : la potion de vie est verte. */
.lgv2-circle-screen button.is-life{
  background:linear-gradient(177deg,var(--lg-btn-vert-1) 0%,var(--lg-btn-vert-2) 52%,var(--lg-btn-vert-3) 100%);
  border-color:var(--lg-btn-filet-vert)}
.lgv2-circle-screen button.is-life,
.lgv2-circle-screen button.is-life *{color:#f2fff7}
.lgv2-circle-screen button.is-life svg{color:#cdf7de}
/* Choix funeste : grenat profond, presque noir. */
.lgv2-circle-screen button.is-death{
  background:linear-gradient(177deg,#5c0d22 0%,#420716 60%,#2e0410 100%);
  border-color:rgba(255,140,160,.5)}
.lgv2-circle-screen button.is-death,
.lgv2-circle-screen button.is-death *{color:#ffe3e9}
/* État accompli (candidature enregistrée…) : or, encre grenat. */
.lgv2-circle-screen button.is-done:disabled,
.lgv2-circle-screen button.is-done{
  background:linear-gradient(180deg,var(--lg-btn-or-1) 0%,var(--lg-btn-or-2) 100%);
  border-color:rgba(124,20,45,.5);box-shadow:inset 0 1px 0 rgba(255,255,255,.55)}
.lgv2-circle-screen button.is-done:disabled,
.lgv2-circle-screen button.is-done:disabled *,
.lgv2-circle-screen button.is-done,
.lgv2-circle-screen button.is-done *{
  color:#3f1523;text-shadow:none}
.lgv2-circle-screen button.is-done svg,
.lgv2-circle-screen button.is-done:disabled svg{color:#5c1024}

/* --- 8.4 Désactivé : assombri, opaque, toujours lisible --------------- */
.lgv2-circle-screen button:disabled{
  background:linear-gradient(177deg,var(--lg-btn-off-1) 0%,var(--lg-btn-off-2) 100%);
  border-color:rgba(200,168,116,.42);
  box-shadow:none;
  opacity:1;filter:none;cursor:default}
.lgv2-circle-screen button:disabled,
.lgv2-circle-screen button:disabled *{
  color:var(--lg-btn-off-fg);text-shadow:0 1px 2px rgba(0,0,0,.45)}
.lgv2-circle-screen button:disabled small{color:#c8b5a3}
.lgv2-circle-screen button:disabled svg{color:#c8b5a3}

/* --- 9. Pastilles d'information du bas d'écran ------------------------
   Compteurs,
choix de la Meute,
victime de la Sorcière,
progression des
   candidatures : une même assise sombre translucide{
  background:rgba(22,11,9,.5);
  border:1px solid rgba(236,204,142,.28);
  border-radius:12px}
.lgv2-circle-screen .lgv2-day-wait{padding:10px 14px}


/* =====================================================================
   6.11.0 — PANNEAUX PREMIUM DE GAMEPLAY
   Objectif : conserver strictement le cercle + les illustrations jour/nuit
   et refaire uniquement la partie d'action sous le plateau.
   ===================================================================== */

/* ---------- ÉLECTION DU MAIRE : ivoire / or / grenat ---------------- */
.lgv2-circle-screen .lgv2-mayor-stage.is-player.is-open.is-premium-election{
  width:min(94%,430px)!important;
  margin:0 auto 8px!important;
  padding:20px 14px 14px!important;
  gap:11px!important;
  border:2px solid rgba(193,151,79,.68)!important;
  border-radius:24px!important;
  background:
    radial-gradient(circle at 50% -25%,rgba(255,255,255,.98),transparent 44%),
    linear-gradient(180deg,#fffaf0 0%,#f7ead0 100%)!important;
  box-shadow:
    0 18px 44px rgba(61,35,20,.30),
    inset 0 0 0 1px rgba(255,255,255,.75),
    inset 0 0 0 6px rgba(206,171,104,.08)!important;
  color:#4d3028!important;
  overflow:visible;
}
.lgv2-circle-screen .lgv2-mayor-stage.is-player.is-open.is-premium-election::before{
  content:""!important;
  position:absolute!important;
  inset:7px!important;
  border:1px solid rgba(192,148,77,.34)!important;
  border-radius:18px!important;
  background:
    linear-gradient(90deg,transparent 0 47%,rgba(153,111,54,.18) 47% 53%,transparent 53%) top/76% 1px no-repeat!important;
  box-shadow:none!important;
  pointer-events:none!important;
}
/* 7.0.61 — CABOCHON GRENAT SUPPRIME. Il ecrivait dans le meme `::after` que
   le cadre or de la plaque (regle a ID, donc gagnante sur inset / border /
   border-radius) : il en resultait un disque grenat de 17 px pousse a moitie
   hors du bord gauche par son propre translateX(-50%). Le pseudo-element
   redevient le cadre or, identique aux autres plaques. */
.lgv2-circle-screen .is-premium-election .lgv2-mayor-magic{display:none!important}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-player-head{
  gap:5px!important;
  padding:2px 8px 3px!important;
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-player-head>span{
  width:46px!important;height:46px!important;
  margin:-7px auto 2px!important;
  border:2px solid #c89c52!important;
  background:radial-gradient(circle at 35% 30%,#fff7dc,#e8c879 62%,#9a6c28)!important;
  color:var(--bp-encre)!important;
  box-shadow:0 0 0 6px rgba(211,171,91,.10),0 6px 18px rgba(88,48,27,.16)!important;
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-player-head>span svg{width:24px!important;height:24px!important}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-player-head small{
  color:var(--bp-sourcil)!important;
  text-shadow:none!important;
  font:850 13.12px/1 var(--serif)!important;
  letter-spacing:.08em!important;
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-player-head h2{
  margin:3px 0 0!important;
  color:#4c342d!important;
  text-shadow:none!important;
  font:700 clamp(15.04px,3.8vw,17.28px)/1.18 var(--serif)!important;
  letter-spacing:0!important;
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-player-head p{
  max-width:340px!important;
  margin:2px auto 0!important;
  color:#715b4e!important;
  text-shadow:none!important;
  font-size:10.88px!important;
  line-height:1.35!important;
}
.lgv2 .lgv2-circle-screen .is-premium-election .lgv2-mayor-candidate-btn{
  position:relative!important;
  width:min(96%,390px)!important;
  min-height:64px!important;
  padding:10px 18px!important;
  border:2px solid #d0aa62!important;
  border-radius:16px!important;
  background:
    linear-gradient(100deg,rgba(255,255,255,.07),transparent 34%),
    linear-gradient(180deg,#a20f34 0%,#781129 55%,#5e0c21 100%)!important;
  box-shadow:0 11px 22px rgba(91,16,37,.26),inset 0 1px 0 rgba(255,233,186,.30)!important;
  color:#fff1d0!important;
  font:850 clamp(12.48px,3vw,14.72px)/1.1 var(--serif)!important;
  letter-spacing:.035em!important;
  text-shadow:0 1px 2px rgba(0,0,0,.45)!important;
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-candidate-btn svg{
  width:29px!important;height:29px!important;color:#f1cf7d!important;fill:currentColor!important;flex:none!important
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-candidate-btn.is-done{
  background:linear-gradient(180deg,#6d7e4e,#52623c)!important;
  border-color:#d8c77d!important;
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-progress{
  width:min(68%,265px)!important;height:9px!important;background:#ead9b7!important;
  border:1px solid rgba(170,124,55,.16)!important
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-progress>span{
  background:linear-gradient(90deg,#7d102c,#a91c40 55%,#d0a14c)!important
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-progress small{
  color:#fff9e9!important;text-shadow:0 1px 2px rgba(70,24,23,.42)!important
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-candidates{
  min-height:auto!important;
  gap:6px!important;
  justify-content:center!important;
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-candidate{
  width:44px!important;flex-basis:44px!important;gap:2px!important
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-candidate__avatar{
  width:36px!important;height:36px!important;border-color:#c9a25e!important
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-candidate>b{
  width:44px!important;max-width:44px!important;
  color:#51362e!important;text-shadow:none!important;font-size:6.72px!important
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-seat{
  width:36px!important;height:36px!important;background:rgba(141,104,49,.07)!important;border-color:rgba(158,112,49,.26)!important
}
.lgv2-circle-screen .is-premium-election .lgv2-mayor-notice{
  margin:0!important;color:#806c5c!important;text-shadow:none!important;
  text-align:center!important;font-size:8.48px!important;line-height:1.3!important
}

/* ---------- PROTECTEUR : bleu nuit / or / bouton royal ------------- */
.lgv2-circle-screen .lgv2-night-panel.is-player.is-protector.is-premium-protector{
  width:min(94%,430px)!important;
  margin:0 auto 8px!important;
  padding:20px 14px 15px!important;
  gap:12px!important;
  border:2px solid rgba(208,171,99,.58)!important;
  border-radius:24px!important;
  background:
    radial-gradient(circle at 50% -10%,var(--bp-or-doux),transparent 42%),
    linear-gradient(180deg,#0f2746 0%,#091a31 54%,#071426 100%)!important;
  box-shadow:0 20px 46px rgba(0,0,0,.44),inset 0 1px 0 rgba(255,240,199,.12),inset 0 0 0 6px rgba(201,162,88,.035)!important;
  overflow:visible!important;
}
.lgv2-circle-screen .lgv2-night-panel.is-player.is-protector.is-premium-protector::before{
  content:""!important;
  position:absolute!important;
  inset:7px!important;
  border:1px solid rgba(214,178,107,.23)!important;
  border-radius:18px!important;
  background:
    radial-gradient(circle at 50% 0%,rgba(70,129,218,.12),transparent 35%)!important;
  box-shadow:none!important;
  pointer-events:none!important;
}
.lgv2-circle-screen .lgv2-premium-protector-head{
  display:grid!important;
  grid-template-columns:1fr!important;
  justify-items:center!important;
  text-align:center!important;
  gap:5px!important;
}
.lgv2-circle-screen .lgv2-premium-protector-head>span{
  width:62px!important;height:62px!important;
  margin:-34px auto 2px!important;
  border:3px solid var(--bp-or)!important;
  border-radius:50%!important;
  background:radial-gradient(circle at 35% 30%,var(--bp-medaille-1),var(--bp-medaille-2) 58%,var(--bp-rim))!important;
  color:var(--bp-or-fort)!important;
  box-shadow:0 0 0 7px rgba(211,169,88,.11),0 8px 25px rgba(0,0,0,.33),inset 0 1px 0 rgba(255,255,255,.15)!important;
}
.lgv2-circle-screen .lgv2-premium-protector-head>span svg{width:31px!important;height:31px!important;fill:currentColor!important}
.lgv2-circle-screen .lgv2-premium-protector-head small{
  color:#e2c47f!important;text-shadow:0 1px 3px #000!important;
  font:850 12.48px/1 var(--serif)!important;letter-spacing:.25em!important
}
.lgv2-circle-screen .lgv2-premium-protector-head h2{
  max-width:370px!important;margin:3px auto 0!important;
  color:#fff4d9!important;text-shadow:0 2px 7px rgba(0,0,0,.55)!important;
  font:750 clamp(16.32px,4vw,19.52px)/1.2 var(--serif)!important
}
.lgv2-circle-screen .lgv2-premium-protector-head p{
  max-width:360px!important;margin:1px auto 0!important;
  color:#bfc9d9!important;text-shadow:0 1px 3px rgba(0,0,0,.55)!important;
  font-size:9.76px!important;line-height:1.38!important
}
.lgv2-circle-screen .lgv2-premium-protector-status{
  position:relative;z-index:2;
  width:min(94%,380px);margin:auto;
  display:grid;grid-template-columns:56px minmax(0,1fr);gap:9px;align-items:center;
  padding:8px 9px;border:1px solid rgba(74,119,78,.34);border-radius:14px;
  background:rgba(255,255,255,.55);
}
.lgv2-circle-screen .lgv2-premium-protector-status>strong{
  width:52px;height:34px;border-radius:999px;display:grid;place-items:center;
  background:#477C54;border:1px solid #6F9A70;
  color:#F7FFF1;font:850 12px/1 var(--serif)
}
.lgv2-circle-screen .lgv2-premium-protector-status>strong.is-urgent{
  background:#7f1630;color:#fff0d6;animation:lgv2-urgent .55s ease-in-out infinite alternate
}
.lgv2-circle-screen .lgv2-premium-protector-status>span{
  display:grid;grid-template-columns:38px minmax(0,1fr);column-gap:8px;align-items:center;min-width:0
}
.lgv2-circle-screen .lgv2-premium-protector-status>span img{
  grid-row:1/3;width:38px;height:38px;border-radius:50%;object-fit:cover;
  border:2px solid #d3ac65;box-shadow:0 4px 10px rgba(0,0,0,.28)
}
.lgv2-circle-screen .lgv2-premium-protector-status>span b{
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--bp-encre)!important;text-shadow:none!important;font:800 10.56px/1 var(--serif)
}
.lgv2-circle-screen .lgv2-premium-protector-status>span small{
  color:var(--bp-encre-douce)!important;text-shadow:none!important;font-size:6.4px!important;letter-spacing:.08em!important
}
.lgv2-circle-screen .lgv2-premium-protector-status>span.is-empty svg{
  grid-row:1/3;width:30px;height:30px;justify-self:center;color:#d7b369;fill:currentColor
}
.lgv2 .lgv2-circle-screen .lgv2-protect-confirm{
  position:relative!important;
  width:min(96%,390px)!important;
  min-height:68px!important;
  padding:10px 20px!important;
  border:2px solid var(--bp-or)!important;
  border-radius:18px!important;
  background:
    linear-gradient(100deg,rgba(255,255,255,.08),transparent 32%),
    linear-gradient(180deg,#1763b4 0%,#0c4487 52%,#082d62 100%)!important;
  box-shadow:0 13px 26px rgba(0,20,60,.40),0 0 0 1px rgba(70,143,233,.28),inset 0 1px 0 rgba(255,255,255,.17)!important;
  color:#f9d987!important;
  font:900 clamp(15.2px,4vw,17.92px)/1 var(--serif)!important;
  letter-spacing:.07em!important;
  text-shadow:0 2px 3px rgba(0,0,0,.55)!important;
}
.lgv2-circle-screen .lgv2-protect-confirm svg{width:27px!important;height:27px!important;color:#f2cf7a!important;fill:currentColor!important}
.lgv2-circle-screen .lgv2-protect-confirm span{color:#f9d987!important;text-shadow:0 2px 3px rgba(0,0,0,.55)!important}
.lgv2-circle-screen .lgv2-protect-confirm:disabled{
  opacity:1!important;
  filter:saturate(.42) brightness(.64)!important;
  color:#cabd9e!important;
}
.lgv2-circle-screen .lgv2-premium-night-secondary{
  width:min(78%,300px);margin:auto;
}
.lgv2-circle-screen .lgv2-premium-night-secondary button{
  width:100%;min-height:44px!important;padding:7px 12px!important;
  border:1px solid rgba(209,174,103,.54)!important;border-radius:999px!important;
  background:rgba(3,12,29,.55)!important;color:#efd59c!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04)!important;
  text-shadow:none!important;font:800 9.12px/1 var(--serif)!important
}
.lgv2-circle-screen .lgv2-premium-night-secondary button span{color:#efd59c!important;text-shadow:none!important}
.lgv2-circle-screen .lgv2-premium-night-secondary button svg{width:19px!important;height:19px!important;color:#efd59c!important;fill:currentColor!important}

/* Le cercle confirme la sélection du Protecteur sans modifier sa géométrie. */
.lgv2-circle-screen.is-night-mode .lgv2-circle-player.is-night-selected .lgv2-circle-avatar{
  border-color:#f2cf77!important;
  box-shadow:0 0 0 3px rgba(44,117,216,.78),0 0 0 6px rgba(224,184,99,.34),0 0 28px rgba(42,111,216,.48)!important;
  transform:scale(1.055)!important
}

/* ---------- Aperçu des rôles sélectionnés --------------------------- */
.lgv2-role-overview-root{position:fixed;inset:0;z-index:12000;display:grid;place-items:end center}
.lgv2-role-overview-scrim{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-height:0!important;border:0!important;border-radius:0!important;background:rgba(4,7,14,.66)!important;box-shadow:none!important}
.lgv2-role-overview{
  position:relative;z-index:1;width:min(100%,520px);max-height:min(78dvh,690px);
  padding:14px 14px calc(15px + env(safe-area-inset-bottom));
  border:1px solid #d0aa65;border-radius:24px 24px 0 0;
  background:linear-gradient(180deg,#fffaf0,#f1dfbd);
  box-shadow:0 -20px 50px rgba(0,0,0,.36);overflow:auto
}
.lgv2-role-overview header{display:grid;grid-template-columns:44px minmax(0,1fr) 40px;gap:10px;align-items:center;margin-bottom:12px}
.lgv2-role-overview header>span{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#80152f;color:#f2cf7a;border:2px solid #d4aa62}
.lgv2-role-overview header>span svg{width:22px;height:22px;fill:currentColor}
.lgv2-role-overview header>div{min-width:0}.lgv2-role-overview header small{display:block;color:#936b36;font:800 7.68px/1 var(--serif);letter-spacing:.1em}
.lgv2-role-overview header h3{margin:4px 0 2px;color:#74152d;font:800 16px/1 var(--serif)}
.lgv2-role-overview header p{margin:0;color:#756354;font-size:8.32px;line-height:1.3}
.lgv2-role-overview header>button{width:38px!important;height:38px!important;min-height:38px!important;padding:0!important;border-radius:50%!important;background:#fff7e8!important;color:#74152d!important;border:1px solid #caa15d!important;box-shadow:none!important}
.lgv2-role-overview-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lgv2-role-overview-card{position:relative;min-width:0;display:grid;grid-template-columns:46px minmax(0,1fr);gap:8px;align-items:center;padding:8px;border:1px solid rgba(177,133,70,.28);border-radius:14px;background:rgba(255,255,255,.55)}
.lgv2-role-overview-card img{width:46px;height:62px;object-fit:cover;border-radius:9px;border:1px solid rgba(141,96,42,.28)}
.lgv2-role-overview-card span{min-width:0;display:grid;gap:3px}.lgv2-role-overview-card b{color:#4e342c;font:800 9.76px/1 var(--serif);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lgv2-role-overview-card small{color:#77675c;font-size:6.4px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lgv2-role-overview-card em{position:absolute;right:6px;top:6px;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;background:#81162f;color:#fff0d2;font:800 7.36px/1 var(--sans);font-style:normal}
.lgv2-role-overview-empty{grid-column:1/-1;margin:12px;text-align:center;color:#705c4f}

/* ---------- Responsive : aucun débordement des libellés ------------- */
@media(max-width:390px){
  .lgv2-circle-screen .lgv2-mayor-stage.is-player.is-open.is-premium-election,
  .lgv2-circle-screen .lgv2-night-panel.is-player.is-protector.is-premium-protector{padding-inline:10px!important}
  .lgv2-circle-screen .lgv2-premium-protector-head h2{font-size:15.68px!important}
  .lgv2-role-overview-grid{grid-template-columns:1fr}
}
@media(max-width:340px){
  .lgv2-circle-screen .is-premium-election .lgv2-mayor-candidate-btn{min-height:58px!important;font-size:11.52px!important}
}
@media(max-height:720px){
  .lgv2-circle-screen .lgv2-mayor-stage.is-player.is-open.is-premium-election{padding-top:15px!important;gap:7px!important}
  .lgv2-circle-screen .is-premium-election .lgv2-mayor-player-head>span{width:39px!important;height:39px!important}
  .lgv2-circle-screen .is-premium-election .lgv2-mayor-candidate-btn{min-height:53px!important}
  .lgv2-circle-screen .lgv2-night-panel.is-player.is-protector.is-premium-protector{padding-top:16px!important;gap:8px!important}
  .lgv2-circle-screen .lgv2-premium-protector-head>span{width:52px!important;height:52px!important;margin-top:-28px!important}
  .lgv2 .lgv2-circle-screen .lgv2-protect-confirm{min-height:56px!important}
}
@media(prefers-reduced-motion:reduce){
  .lgv2-circle-screen .is-premium-election,
  .lgv2-circle-screen .is-premium-protector{animation:none!important}
}

/* =====================================================================
   6.12.0 — ACCUEIL PREMIUM FIDÈLE À LA MAQUETTE VALIDÉE
   Toute l'interface reste interactive : le visuel de référence n'est utilisé
   que pour l'illustration haute et les cinq médaillons d'icônes.
   ===================================================================== */
.lgv2 .lgv2-home.is-premium-home{
  position:relative!important;
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
  display:grid!important;
  grid-template-rows:36.8dvh minmax(0,1fr)!important;
  background:
    radial-gradient(circle at 50% 52%,rgba(255,255,255,.76),transparent 33%),
    linear-gradient(180deg,#fffaf1 0%,#f8eddb 52%,#f2dfc2 100%)!important;
  color:#4d342b!important;
  isolation:isolate!important;
}
.lgv2 .lgv2-home.is-premium-home::before{
  content:""!important;
  position:absolute!important;
  inset:2px!important;
  z-index:8!important;
  pointer-events:none!important;
  border:2px solid rgba(126,13,41,.86)!important;
  border-radius:0!important;
  box-shadow:inset 0 0 0 1px rgba(228,197,130,.75)!important;
}
.lgv2 .lgv2-home.is-premium-home::after{
  content:""!important;
  position:absolute!important;
  inset:10px!important;
  z-index:9!important;
  pointer-events:none!important;
  border:1px solid rgba(194,150,77,.72)!important;
  border-radius:13px!important;
  box-shadow:
    inset 0 0 0 3px rgba(255,250,239,.52),
    inset 0 0 0 4px rgba(195,151,76,.16)!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__art{
  min-height:0!important;
  position:relative!important;
  z-index:1!important;
  background-image:url('../images/home/home-hero-reference.webp')!important;
  background-repeat:no-repeat!important;
  background-position:center top!important;
  background-size:cover!important;
  filter:none!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__art::after{
  content:"";
  position:absolute;
  inset:auto 0 -1px;
  height:19%;
  pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(249,238,220,.72) 54%,#f8eddb 100%);
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__content{
  position:relative!important;
  z-index:3!important;
  min-height:0!important;
  margin:0!important;
  padding:0 clamp(22px,8.1vw,68px) calc(22px + env(safe-area-inset-bottom))!important;
  display:grid!important;
  grid-template-rows:auto auto auto!important;
  align-content:start!important;
  justify-items:stretch!important;
  gap:0!important;
  text-align:left!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__heading{
  display:grid!important;
  justify-items:center!important;
  text-align:center!important;
  padding-top:clamp(2px,.45dvh,7px)!important;
  margin:0 0 clamp(8px,1.05dvh,14px)!important;
}
.lgv2 .lgv2-home.is-premium-home h1{
  margin:0!important;
  color:#7d0c2a!important;
  font:700 clamp(32px,4.25dvh,61.6px)/.98 var(--serif)!important;
  letter-spacing:.012em!important;
  white-space:nowrap!important;
  text-shadow:0 1px 0 rgba(255,255,255,.75)!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__heading p{
  margin:clamp(5px,.72dvh,10px) 0 0!important;
  padding:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:9px!important;
  color:#4d4034!important;
  font:650 clamp(9.92px,1.28dvh,14.88px)/1.05 var(--serif)!important;
  letter-spacing:.055em!important;
  text-transform:uppercase!important;
  white-space:nowrap!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__heading p::before,
.lgv2 .lgv2-home.is-premium-home .lgv2-home__heading p::after{
  content:""!important;
  width:clamp(15px,4.5vw,42px)!important;
  height:1px!important;
  flex:none!important;
  background:linear-gradient(90deg,transparent,#c99c52)!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__heading p::after{
  background:linear-gradient(90deg,#c99c52,transparent)!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__actions{
  width:100%!important;
  margin:0!important;
  display:grid!important;
  gap:clamp(6px,.72dvh,10px)!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action,
.lgv2 .lgv2-home.is-premium-home .lgv2-learn{
  position:relative!important;
  isolation:isolate!important;
  width:100%!important;
  min-height:clamp(60px,8.55dvh,86px)!important;
  height:auto!important;
  padding:clamp(7px,.9dvh,11px) clamp(12px,3vw,22px)!important;
  display:grid!important;
  grid-template-columns:clamp(48px,7.3dvh,68px) minmax(0,1fr) clamp(15px,2.15dvh,21px)!important;
  align-items:center!important;
  gap:clamp(10px,2.6vw,20px)!important;
  border:1px solid #c9a15e!important;
  border-radius:clamp(11px,1.7dvh,17px)!important;
  background:linear-gradient(180deg,#fffdf8 0%,#f9eddb 100%)!important;
  color:#4a3027!important;
  box-shadow:
    0 clamp(4px,.7dvh,8px) clamp(11px,1.7dvh,18px) rgba(93,56,27,.16),
    inset 0 0 0 1px rgba(255,255,255,.75)!important;
  text-align:left!important;
  overflow:hidden!important;
  cursor:pointer!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action::before,
.lgv2 .lgv2-home.is-premium-home .lgv2-learn::after{
  content:""!important;
  position:absolute!important;
  inset:5px!important;
  z-index:-1!important;
  pointer-events:none!important;
  border:1px solid rgba(197,153,79,.28)!important;
  border-radius:calc(clamp(11px,1.7dvh,17px) - 4px)!important;
  background:none!important;
  animation:none!important;
  opacity:1!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action.is-primary{
  border-color:#c99446!important;
  background:
    linear-gradient(90deg,rgba(255,255,255,.075),transparent 34%),
    linear-gradient(155deg,#a01438 0%,#820e2e 51%,#650a25 100%)!important;
  color:#fff3d8!important;
  box-shadow:
    0 clamp(7px,1dvh,12px) clamp(16px,2.3dvh,26px) rgba(93,7,31,.31),
    inset 0 1px 0 rgba(255,232,185,.26)!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action.is-primary::before{
  border-color:rgba(238,197,111,.43)!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action.is-primary::after,
.lgv2 .lgv2-home.is-premium-home .lgv2-resume::after{
  content:""!important;
  position:absolute!important;
  right:clamp(34px,8vw,72px)!important;
  top:50%!important;
  width:clamp(44px,7.2dvh,68px)!important;
  height:clamp(44px,7.2dvh,68px)!important;
  transform:translateY(-50%)!important;
  background:url('../images/wolf-emblem.webp') center/contain no-repeat!important;
  opacity:.11!important;
  filter:sepia(1) saturate(.35) brightness(1.8)!important;
  pointer-events:none!important;
  animation:none!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action.is-auto::after{
  display:none!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action__icon,
.lgv2 .lgv2-home.is-premium-home .lgv2-learn__sigil,
.lgv2 .lgv2-home.is-premium-home .lgv2-resume__sigil{
  width:clamp(48px,7.3dvh,68px)!important;
  height:clamp(48px,7.3dvh,68px)!important;
  padding:0!important;
  display:grid!important;
  place-items:center!important;
  border:0!important;
  border-radius:50%!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.lgv2 .lgv2-home.is-premium-home .is-reference-icon img{
  width:100%!important;
  height:100%!important;
  display:block!important;
  object-fit:contain!important;
  filter:drop-shadow(0 3px 4px rgba(58,25,13,.24))!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action__copy,
.lgv2 .lgv2-home.is-premium-home .lgv2-learn__copy{
  min-width:0!important;
  align-self:center!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action b,
.lgv2 .lgv2-home.is-premium-home .lgv2-learn__copy b{
  display:block!important;
  color:inherit!important;
  font:750 clamp(13.44px,1.9dvh,18.24px)/1.03 var(--serif)!important;
  letter-spacing:.025em!important;
  text-transform:uppercase!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action small,
.lgv2 .lgv2-home.is-premium-home .lgv2-learn__copy small{
  display:block!important;
  margin-top:clamp(2px,.35dvh,4px)!important;
  color:inherit!important;
  opacity:.83!important;
  font:500 clamp(9.28px,1.17dvh,12.16px)/1.05 var(--serif)!important;
  letter-spacing:0!important;
  text-transform:none!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action>svg,
.lgv2 .lgv2-home.is-premium-home .lgv2-learn>svg{
  width:clamp(15px,2.05dvh,20px)!important;
  height:clamp(15px,2.05dvh,20px)!important;
  color:#a67231!important;
  fill:currentColor!important;
  justify-self:end!important;
  z-index:2!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home-action.is-primary>svg{
  color:#e9c56d!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-learn__spark{display:none!important}

/* Reprendre : carte grenat séparée, fidèle à la référence. */
.lgv2 .lgv2-home.is-premium-home .lgv2-resume{
  position:relative!important;
  width:100%!important;
  min-height:clamp(58px,7.7dvh,78px)!important;
  margin:clamp(8px,.95dvh,12px) 0 0!important;
  padding:clamp(6px,.75dvh,9px) clamp(12px,2.7vw,20px)!important;
  display:grid!important;
  grid-template-columns:clamp(45px,6.8dvh,62px) minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:clamp(9px,2.25vw,17px)!important;
  border:1px solid #c58f45!important;
  border-radius:clamp(11px,1.55dvh,16px)!important;
  background:linear-gradient(155deg,#8d1232 0%,#760d2b 58%,#5f0822 100%)!important;
  color:#fff1d5!important;
  box-shadow:0 8px 20px rgba(85,9,29,.30),inset 0 1px 0 rgba(255,229,176,.24)!important;
  text-align:left!important;
  overflow:hidden!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-resume::before{
  content:"";
  position:absolute;
  inset:5px;
  border:1px solid rgba(232,190,99,.32);
  border-radius:calc(clamp(11px,1.55dvh,16px) - 4px);
  pointer-events:none;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-resume__sigil{
  width:clamp(45px,6.8dvh,62px)!important;
  height:clamp(45px,6.8dvh,62px)!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-resume__copy{min-width:0!important;position:relative;z-index:2!important}
.lgv2 .lgv2-home.is-premium-home .lgv2-resume__copy b{
  display:block!important;
  color:#fff2d8!important;
  font:750 clamp(11.52px,1.62dvh,15.68px)/1.04 var(--serif)!important;
  letter-spacing:.025em!important;
  text-transform:uppercase!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-resume__copy small{
  margin-top:clamp(3px,.4dvh,5px)!important;
  display:flex!important;
  align-items:center!important;
  gap:7px!important;
  color:#ecd8b8!important;
  font:500 clamp(8.64px,1.04dvh,11.04px)/1 var(--serif)!important;
  white-space:nowrap!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-resume__copy small>i{
  width:1px!important;height:13px!important;background:rgba(223,183,108,.46)!important;display:block!important
}
.lgv2 .lgv2-home.is-premium-home .lgv2-resume__population{
  display:inline-flex!important;align-items:center!important;gap:3px!important;color:#d9b66d!important
}
.lgv2 .lgv2-home.is-premium-home .lgv2-resume__population svg{
  width:12px!important;height:12px!important;fill:currentColor!important
}
.lgv2 .lgv2-home.is-premium-home .lgv2-resume__population b{
  font:650 inherit!important;color:#d9b66d!important;text-transform:none!important;letter-spacing:0!important
}
.lgv2 .lgv2-home.is-premium-home .lgv2-resume__cta{
  position:relative!important;z-index:2!important;
  padding:clamp(7px,.85dvh,10px) clamp(13px,3vw,22px)!important;
  border:1px solid #8c5c27!important;
  border-radius:999px!important;
  background:linear-gradient(180deg,#f4dd9f 0%,#d9af69 55%,#bd8847 100%)!important;
  color:#4a221d!important;
  font:800 clamp(7.68px,.95dvh,10.24px)/1 var(--serif)!important;
  letter-spacing:.075em!important;
  text-transform:uppercase!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.66),0 3px 7px rgba(57,24,11,.28)!important;
}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__bottom-orn{
  position:absolute!important;
  z-index:4!important;
  left:50%!important;
  bottom:max(1px,env(safe-area-inset-bottom))!important;
  width:clamp(108px,25vw,180px)!important;
  height:auto!important;
  transform:translateX(-50%)!important;
  opacity:.94!important;
  pointer-events:none!important;
  mix-blend-mode:multiply!important;
}
.lgv2 .lgv2-home.is-premium-home button:active{
  transform:translateY(1px) scale(.992)!important;
}
.lgv2 .lgv2-home.is-premium-home button:focus-visible{
  outline:2px solid #8e1732!important;
  outline-offset:2px!important;
}

/* Les écrans d'environ 360×800 conservent exactement la composition visée. */
@media(max-width:390px){
  .lgv2 .lgv2-home.is-premium-home .lgv2-home__content{padding-inline:clamp(20px,7.8vw,30px)!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-home-action,
  .lgv2 .lgv2-home.is-premium-home .lgv2-learn{grid-template-columns:clamp(46px,7.1dvh,58px) minmax(0,1fr) 16px!important;gap:10px!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-resume{grid-template-columns:clamp(43px,6.6dvh,54px) minmax(0,1fr) auto!important;gap:9px!important}
}
@media(max-height:720px){
  .lgv2 .lgv2-home.is-premium-home{grid-template-rows:34.8dvh minmax(0,1fr)!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-home__heading{margin-bottom:6px!important}
  .lgv2 .lgv2-home.is-premium-home h1{font-size:clamp(28.8px,4.05dvh,39.2px)!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-home__actions{gap:5px!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-home-action,
  .lgv2 .lgv2-home.is-premium-home .lgv2-learn{min-height:clamp(52px,7.8dvh,61px)!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-resume{min-height:clamp(50px,7.1dvh,57px)!important;margin-top:6px!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-home__bottom-orn{width:100px!important}
}
@media(max-height:620px){
  .lgv2 .lgv2-home.is-premium-home{grid-template-rows:31.5dvh minmax(0,1fr)!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-home__content{padding-inline:18px!important;padding-bottom:8px!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-home__heading p{font-size:8.64px!important;margin-top:3px!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-home-action,
  .lgv2 .lgv2-home.is-premium-home .lgv2-learn{min-height:48px!important;padding-block:4px!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-resume{min-height:46px!important;padding-block:4px!important}
  .lgv2 .lgv2-home.is-premium-home .lgv2-home__bottom-orn{display:none!important}
}
@media(prefers-reduced-motion:reduce){
  .lgv2 .lgv2-home.is-premium-home *,
  .lgv2 .lgv2-home.is-premium-home::before,
  .lgv2 .lgv2-home.is-premium-home::after{animation:none!important;transition:none!important}
}


/* =====================================================================
   6.12.1 — AJUSTEMENT FIN ACCUEIL VALIDÉ
   ===================================================================== */
.lgv2 .lgv2-home.is-premium-home{grid-template-rows:35.8dvh minmax(0,1fr)!important}
.lgv2 .lgv2-home.is-premium-home::before{display:none!important;content:none!important;border:0!important;box-shadow:none!important}
.lgv2 .lgv2-home.is-premium-home::after{inset:8px 10px 9px!important;border:1px solid rgba(184,139,68,.54)!important;border-radius:14px!important;box-shadow:inset 0 0 0 2px rgba(255,251,242,.48)!important}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__content{margin-top:-4px!important;padding-bottom:max(7px,env(safe-area-inset-bottom))!important}
.lgv2 .lgv2-home.is-premium-home .lgv2-home__bottom-orn{position:relative!important;left:auto!important;right:auto!important;bottom:auto!important;transform:none!important;justify-self:center!important;align-self:start!important;display:block!important;width:clamp(88px,21vw,132px)!important;height:auto!important;max-height:20px!important;object-fit:contain!important;margin:clamp(3px,.45dvh,6px) auto 0!important;opacity:.84!important;mix-blend-mode:multiply!important}
@media(max-height:740px){.lgv2 .lgv2-home.is-premium-home{grid-template-rows:34.5dvh minmax(0,1fr)!important}.lgv2 .lgv2-home.is-premium-home .lgv2-home__content{margin-top:-5px!important}.lgv2 .lgv2-home.is-premium-home .lgv2-home__bottom-orn{width:88px!important;max-height:16px!important;margin-top:2px!important}}
@media(max-height:650px){.lgv2 .lgv2-home.is-premium-home{grid-template-rows:31.8dvh minmax(0,1fr)!important}.lgv2 .lgv2-home.is-premium-home .lgv2-home__bottom-orn{display:none!important}}


/* =====================================================================
   6.12.2 — CORRECTION CONTRASTE NARRATEUR
   Cause réelle : plusieurs sous-cartes claires du plateau Narrateur
   héritaient du forçage crème global de .lgv2-circle-screen .lgv2-day-panel *,
   ce qui créait du texte ivoire sur fond ivoire (ex. « Le village n’a plus
   de Maire », demandes de 2e parole, égalités, Dictateur).
   On harmonise ces surfaces en cartes sombres premium pour garder le même
   langage visuel que le reste du plateau et un contraste stable.
   ===================================================================== */
.lgv2-circle-screen .lgv2-day-rule-alert,
.lgv2-circle-screen .lgv2-second-own,
.lgv2-circle-screen .lgv2-second-history>span,
.lgv2-circle-screen .lgv2-second-decisions article,
.lgv2-circle-screen .lgv2-runoff-banner span,
.lgv2-circle-screen .lgv2-tie-players>span,
.lgv2-circle-screen .lgv2-dictator-power{
  background:linear-gradient(180deg,rgba(39,20,14,.86) 0%,rgba(24,11,9,.92) 100%)!important;
  border:1px solid rgba(236,204,142,.34)!important;
  box-shadow:0 8px 22px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,243,214,.08)!important
}
.lgv2-circle-screen .lgv2-day-rule-alert,
.lgv2-circle-screen .lgv2-day-rule-alert b,
.lgv2-circle-screen .lgv2-day-rule-alert small,
.lgv2-circle-screen .lgv2-second-own,
.lgv2-circle-screen .lgv2-second-own b,
.lgv2-circle-screen .lgv2-second-history>span,
.lgv2-circle-screen .lgv2-second-history>span b,
.lgv2-circle-screen .lgv2-second-history>span em,
.lgv2-circle-screen .lgv2-second-decisions article,
.lgv2-circle-screen .lgv2-second-decisions article>span b,
.lgv2-circle-screen .lgv2-runoff-banner span,
.lgv2-circle-screen .lgv2-runoff-banner span b,
.lgv2-circle-screen .lgv2-tie-players>span,
.lgv2-circle-screen .lgv2-tie-players>span b,
.lgv2-circle-screen .lgv2-dictator-power,
.lgv2-circle-screen .lgv2-dictator-power small,
.lgv2-circle-screen .lgv2-dictator-power b,
.lgv2-circle-screen .lgv2-dictator-power p,
.lgv2-circle-screen .lgv2-dictator-choice b{
  color:#f4e8d2!important;
  text-shadow:0 1px 3px rgba(0,0,0,.92),0 0 8px rgba(0,0,0,.48)!important
}
.lgv2-circle-screen .lgv2-day-rule-alert small,
.lgv2-circle-screen .lgv2-second-history>span em,
.lgv2-circle-screen .lgv2-dictator-power small,
.lgv2-circle-screen .lgv2-dictator-power p{color:#e3cfa8!important}
.lgv2-circle-screen .lgv2-day-rule-alert b,
.lgv2-circle-screen .lgv2-second-own b,
.lgv2-circle-screen .lgv2-second-history>span b,
.lgv2-circle-screen .lgv2-second-decisions article>span b,
.lgv2-circle-screen .lgv2-runoff-banner span b,
.lgv2-circle-screen .lgv2-tie-players>span b,
.lgv2-circle-screen .lgv2-dictator-power b,
.lgv2-circle-screen .lgv2-dictator-choice b{color:#fff6e5!important}
.lgv2-circle-screen .lgv2-second-own.is-refused,
.lgv2-circle-screen .lgv2-second-history .is-refused em{color:#ffb6c5!important}
.lgv2-circle-screen .lgv2-second-own.is-done,
.lgv2-circle-screen .lgv2-second-history .is-accepted em,
.lgv2-circle-screen .lgv2-second-history .is-done em{color:#b9e0b5!important}
.lgv2-circle-screen .lgv2-runoff-banner span em{
  background:#8b1a32!important;
  color:#fff3df!important;
  text-shadow:none!important;
  border:1px solid rgba(239,207,136,.42)
}
.lgv2-circle-screen .lgv2-dictator-power>span{
  background:var(--bp-accent)!important;
  color:#efca77!important;
  box-shadow:0 0 0 4px rgba(188,144,76,.1)!important
}


/* ====================================================================
   6.15 — CLARTÉ & CÉRÉMONIES
   1. Encres sombres dans les pastilles claires (fini le blanc détouré
      de noir sur fond ivoire, mesuré entre 1,0 et 1,9).
   2. La nuit racontée aux dormeurs (ordre des réveils public).
   3. Le rite de mort : la carte du défunt se retourne.
   4. La distribution : suspense avant de découvrir sa carte.
   ==================================================================== */

/* --- 1. Pastilles claires : encre sombre, zéro ombre -------------------
   La règle générique d'encre crème des panneaux (couche mayor, (0,2,3))
   bat toute règle plus courte : chaque sélecteur ici est volontairement
   porté à (0,3,·) et plus par le préfixe .lgv2-circle-screen. */
.lgv2-circle-screen .lgv2-vote-stage .lgv2-ballot-candidate h3,
.lgv2-circle-screen .lgv2-ballot-candidate .lgv2-ballot-voters b,
.lgv2-circle-screen .lgv2-ballot-candidate .lgv2-ballot-voters.is-empty small,
.lgv2-circle-screen .lgv2-vote-stage .lgv2-ballot-head strong,
.lgv2-circle-screen .lgv2-vote-stage .lgv2-current-voter b,
.lgv2-circle-screen .lgv2-vote-stage .lgv2-current-voter small,
.lgv2-circle-screen .lgv2-vote-stage .lgv2-vote-confirm b,
.lgv2-circle-screen .lgv2-vote-stage .lgv2-vote-confirm small,
.lgv2-circle-screen .lgv2-vote-stage .lgv2-vote-confirm p{
  color:#40251c!important;
  text-shadow:none!important;
  -webkit-text-stroke:0!important;
  paint-order:normal!important}
.lgv2-circle-screen .lgv2-vote-stage .lgv2-current-voter small{color:#7a5626!important}
.lgv2-circle-screen .lgv2-vote-stage .lgv2-current-voter em{font-style:normal;padding:4px 9px;border-radius:999px;
  background:linear-gradient(160deg,#8f1d38,#5c091f)!important;border:1px solid #caa15f;
  color:#fdf3dd!important;text-shadow:none!important;font:800 8px/1 var(--serif);letter-spacing:.08em}
.lgv2-circle-screen .lgv2-ballot-candidate .lgv2-ballot-voters span{
  background:rgba(120,76,34,.1);border:1px solid rgba(124,20,45,.24);
  border-radius:999px;padding:2px 8px 2px 2px}
.lgv2-circle-screen .lgv2-ballot-candidate .lgv2-ballot-voters span b{color:#40251c!important;text-shadow:none!important}
.lgv2-circle-screen .lgv2-ballot-candidate .lgv2-ballot-avatar i{color:#fdf3dd!important;text-shadow:none!important}
.lgv2-circle-screen .lgv2-ballot-candidate .lgv2-ballot-avatar strong{
  background:linear-gradient(160deg,#8f1d38,#5c091f)!important;
  border:1px solid #caa15f!important;color:#fdf3dd!important;text-shadow:none!important}

/* Notice de candidatures sur carte parchemin : encre brune, zéro ombre
   (la crème venait de la règle générique battue ici à (0,3,0)). */
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-notice{
  color:#5f4633!important;
  text-shadow:none!important}

/* --- 2. La nuit racontée --------------------------------------------- */
.lgv2-night-ticker{width:100%;display:grid;gap:8px;justify-items:center;margin-top:4px}
.lgv2-night-ticker__now{display:flex;align-items:center;gap:10px;max-width:100%;
  padding:9px 14px;border-radius:16px;
  background:rgba(120,76,34,.1);border:1px solid rgba(124,20,45,.24)}
.lgv2-night-ticker__now p{margin:0;font:600 10.88px/1.35 var(--serif);color:#4a3524;text-align:left}
.lgv2-night-ticker__now b{color:#6f1226;font-weight:800;letter-spacing:.02em}
.lgv2-night-ticker__seal{width:38px;height:38px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 34% 30%,#a52a47,#5b0c22 74%);
  border:2px solid #caa15f;box-shadow:inset 0 0 0 2px rgba(43,7,17,.5);color:#efd6a0}
.lgv2-night-ticker__seal svg{width:17px;height:17px;fill:currentColor}
.lgv2-night-ticker__now.is-awake .lgv2-night-ticker__seal{animation:lgv2-seal-breathe 1.6s ease-in-out infinite alternate}
@keyframes lgv2-seal-breathe{from{transform:scale(.94)}to{transform:scale(1.06)}}
.lgv2-ticker-dots u{text-decoration:none;animation:lgv2-tickdot 1.2s ease-in-out infinite}
.lgv2-ticker-dots u:nth-child(2){animation-delay:.2s}
.lgv2-ticker-dots u:nth-child(3){animation-delay:.4s}
@keyframes lgv2-tickdot{0%,60%,100%{opacity:.25}30%{opacity:1}}
.lgv2-night-ticker__done{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;max-width:100%}
.lgv2-night-ticker__done span{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;
  border-radius:999px;background:rgba(120,76,34,.07);border:1px solid rgba(124,20,45,.16);opacity:.85}
.lgv2-night-ticker__done svg{width:12px;height:12px;fill:#8a6c4d}
.lgv2-night-ticker__done b{font:700 8px/1 var(--serif);color:#5f4c40}
.lgv2-night-ticker__done em{font-style:normal;font-size:7.04px;color:#7a6450}
.lgv2-night-ticker__left{font:700 8px/1 var(--serif);letter-spacing:.08em;color:#7a5626}
.lgv2-sleep-note{max-width:330px}
@media (prefers-reduced-motion: reduce){
  .lgv2-night-ticker__now.is-awake .lgv2-night-ticker__seal,.lgv2-ticker-dots u{animation:none}}

/* --- 4. La distribution ------------------------------------------------ */
.lgv2-deal-ghosts{position:absolute;left:50%;top:42%;width:min(40vw,150px);aspect-ratio:2/3;
  transform:translate(-50%,-50%);pointer-events:none;z-index:1;opacity:0}
.lgv2-role-cinematic.is-dealing .lgv2-deal-ghosts{opacity:1}
.lgv2-deal-ghosts i{position:absolute;inset:0;border-radius:14px;
  background:radial-gradient(circle at 50% 32%,#571026,#2a0511 80%);
  border:1px solid rgba(220,180,110,.45);box-shadow:0 14px 30px rgba(0,0,0,.5)}
.lgv2-role-cinematic.is-dealing .lgv2-deal-ghosts i{animation:lgv2-deal-shuffle 1.5s cubic-bezier(.4,.1,.3,1) infinite}
.lgv2-role-cinematic.is-dealing .lgv2-deal-ghosts i:nth-child(2){animation-delay:.16s}
.lgv2-role-cinematic.is-dealing .lgv2-deal-ghosts i:nth-child(3){animation-delay:.32s}
@keyframes lgv2-deal-shuffle{
  0%{transform:translate(0,0) rotate(0)}
  25%{transform:translate(-46%,-3%) rotate(-9deg)}
  50%{transform:translate(0,-6%) rotate(0)}
  75%{transform:translate(46%,-3%) rotate(9deg)}
  100%{transform:translate(0,0) rotate(0)}}
.lgv2-role-cinematic.is-dealing .lgv2-reveal-card{opacity:0;transform:scale(.86) translateY(26px);pointer-events:none}
.lgv2-role-cinematic.is-offered .lgv2-deal-ghosts{opacity:0;transition:opacity .3s ease}
.lgv2-role-cinematic.is-offered .lgv2-reveal-card{
  transition:opacity .5s ease,transform .7s cubic-bezier(.2,.8,.25,1.08);
  opacity:1;transform:scale(1) translateY(0)}
.lgv2-role-cinematic:not(.is-revealed).is-offered .lgv2-reveal-card3d{
  animation:lgv2-deal-heartbeat 2.1s ease-in-out .8s infinite}
@keyframes lgv2-deal-heartbeat{0%,58%,100%{transform:scale(1)}64%{transform:scale(1.022)}72%{transform:scale(.995)}80%{transform:scale(1.014)}}
.lgv2-deal-embers{position:absolute;left:50%;top:42%;width:0;height:0;pointer-events:none;z-index:1}
.lgv2-role-cinematic.is-offered .lgv2-deal-embers i{position:absolute;width:4px;height:4px;border-radius:50%;
  background:#efd9a6;box-shadow:0 0 8px rgba(239,217,166,.9);opacity:0;
  animation:lgv2-deal-ember 2.6s ease-out infinite}
.lgv2-role-cinematic.is-offered .lgv2-deal-embers i:nth-child(1){animation-delay:.1s;--ex:-58px}
.lgv2-role-cinematic.is-offered .lgv2-deal-embers i:nth-child(2){animation-delay:.5s;--ex:44px}
.lgv2-role-cinematic.is-offered .lgv2-deal-embers i:nth-child(3){animation-delay:.9s;--ex:-24px}
.lgv2-role-cinematic.is-offered .lgv2-deal-embers i:nth-child(4){animation-delay:1.3s;--ex:66px}
.lgv2-role-cinematic.is-offered .lgv2-deal-embers i:nth-child(5){animation-delay:1.7s;--ex:-70px}
.lgv2-role-cinematic.is-offered .lgv2-deal-embers i:nth-child(6){animation-delay:2.1s;--ex:18px}
@keyframes lgv2-deal-ember{
  0%{opacity:0;transform:translate(var(--ex,0),90px) scale(.6)}
  16%{opacity:1}
  100%{opacity:0;transform:translate(var(--ex,0),-120px) scale(1.05)}}
@media (prefers-reduced-motion: reduce){
  .lgv2-deal-ghosts,.lgv2-deal-embers{display:none}
  .lgv2-role-cinematic.is-dealing .lgv2-reveal-card{opacity:1;transform:none;pointer-events:auto}
  .lgv2-role-cinematic:not(.is-revealed).is-offered .lgv2-reveal-card3d{animation:none}}


/* ====================================================================
   6.15 — LA DONNE : les vraies cartes du jeu dans l'ouverture.
   Cinq illustrations de rôles volent depuis le bas, s'éventaillent en
   main de jeu, la carte centrale se dévoile un instant, puis toutes
   remontent en spirale vers la lune — où l'Appel les emporte.
   Seuls transform et opacity sont animés.
   ==================================================================== */
.lgv2-boot-deal{position:absolute;left:50%;top:47%;z-index:6;width:0;height:0;pointer-events:none}
.lgv2-boot-card{position:absolute;left:0;top:0;width:min(27vw,106px);aspect-ratio:2/3;
  margin-left:calc(min(27vw,106px) / -2);margin-top:calc(min(27vw,106px) * -.75);
  transform-origin:50% 118%;
  transform:translateY(120vh) rotate(calc((var(--ci) - 2) * 4deg));
  opacity:0;will-change:transform,opacity;
  transition:transform .9s cubic-bezier(.2,.75,.25,1.06) calc(var(--ci) * .11s),
    opacity .5s ease calc(var(--ci) * .11s)}
.lgv2-boot-cardflip{position:absolute;inset:0;transform-style:preserve-3d;
  transition:transform .7s cubic-bezier(.3,.7,.2,1)}
.lgv2-boot-cardflip i,
.lgv2-boot-cardflip img{position:absolute;inset:0;border-radius:12px;backface-visibility:hidden;
  border:1px solid rgba(224,184,112,.7);box-shadow:0 14px 30px rgba(0,0,0,.55)}
.lgv2-boot-cardflip i{display:block;
  background:radial-gradient(circle at 50% 34%,#5c1026,#2c0511 78%);}
.lgv2-boot-cardflip i::after{content:"";position:absolute;inset:12%;
  background:url('../images/wolf-emblem.webp') center/contain no-repeat;
  opacity:.55;mix-blend-mode:screen}
.lgv2-boot-cardflip img{width:100%;height:100%;object-fit:cover;transform:rotateY(180deg)}

/* La main : position de chaque carte dans l'éventail. */
.lgv2-boot-card:nth-child(1){--fx:-82px;--fy:24px;--fr:-23deg}
.lgv2-boot-card:nth-child(2){--fx:-42px;--fy:7px;--fr:-11deg}
.lgv2-boot-card:nth-child(3){--fx:0px;--fy:0px;--fr:0deg}
.lgv2-boot-card:nth-child(4){--fx:42px;--fy:7px;--fr:11deg}
.lgv2-boot-card:nth-child(5){--fx:82px;--fy:24px;--fr:23deg}
/* Entrée en éventail. */
.lgv2-startup.is-deal .lgv2-boot-card{opacity:1;
  transform:translate(var(--fx),var(--fy)) rotate(var(--fr))}
/* Respiration de la main pendant qu'elle est tenue. */
.lgv2-startup.is-deal:not(.is-gather) .lgv2-boot-deal{animation:lgv2-deal-hold 3.4s ease-in-out infinite alternate}
@keyframes lgv2-deal-hold{from{transform:translateY(0)}to{transform:translateY(-6px)}}
/* La carte centrale se dévoile un instant, ses voisines s'écartent. */
.lgv2-startup.is-peek .lgv2-boot-card:nth-child(3) .lgv2-boot-cardflip{transform:rotateY(180deg)}
.lgv2-startup.is-peek .lgv2-boot-card:nth-child(3){transform:translate(0,-16px) rotate(0deg) scale(1.1)}
.lgv2-startup.is-peek .lgv2-boot-card:nth-child(2){transform:translate(-58px,10px) rotate(-15deg)}
.lgv2-startup.is-peek .lgv2-boot-card:nth-child(4){transform:translate(58px,10px) rotate(15deg)}
.lgv2-startup.is-peek .lgv2-boot-card:nth-child(1){transform:translate(-104px,30px) rotate(-26deg)}
.lgv2-startup.is-peek .lgv2-boot-card:nth-child(5){transform:translate(104px,30px) rotate(26deg)}
/* La spirale vers la lune. */
.lgv2-startup.is-gather .lgv2-boot-card{
  transition:transform .85s cubic-bezier(.5,.05,.3,1) calc(var(--ci) * .07s),
    opacity .6s ease calc(.25s + var(--ci) * .07s);
  transform:translate(0,-38vh) rotate(calc(540deg + var(--ci) * 40deg)) scale(.08);
  opacity:0}
.lgv2-startup.is-gather .lgv2-boot-cardflip{transform:rotateY(0)}
@media (max-height:640px){.lgv2-boot-card{width:min(23vw,88px)}}
@media (prefers-reduced-motion: reduce){
  .lgv2-boot-deal{display:none}}


/* =====================================================================
   6.16.1 — VERROU D'ALIGNEMENT DE LA CARTE « REPRENDRE LA PARTIE »
   Constatée déviée/rétrécie sur appareil (capture 50971) : la carte est
   désormais verrouillée sur la géométrie EXACTE des quatre cartes du
   dessus, quels que soient l'état, l'héritage ou la taille d'écran.
   Seul l'appui conserve son léger enfoncement.
   ===================================================================== */
.lgv2 .lgv2-home .lgv2-home__actions,
.lgv2 .lgv2-home.is-premium-home .lgv2-home__actions{
  width:100%!important;max-width:none!important;
  margin-inline:0!important;justify-self:stretch!important}
.lgv2 .lgv2-home .lgv2-resume,
.lgv2 .lgv2-home.is-premium-home .lgv2-resume{
  width:100%!important;max-width:none!important;min-width:0!important;
  margin-inline:0!important;justify-self:stretch!important;
  transform:none!important;scale:none!important;translate:none!important;
  left:auto!important;right:auto!important}
.lgv2 .lgv2-home .lgv2-resume:active,
.lgv2 .lgv2-home.is-premium-home .lgv2-resume:active{
  transform:translateY(1px) scale(.992)!important}

/* 6.17.1 — Indicateur du moteur d'appel dans le panneau son. */
.lgv2-sound-engine{margin:2px 14px 6px;padding:6px 10px;border-radius:10px;
  font:700 8.8px/1.3 var(--serif);letter-spacing:.04em;
  background:rgba(120,76,34,.12);border:1px solid rgba(124,20,45,.22);color:#6b5340}
.lgv2-sound-engine.is-sfu{background:rgba(63,105,63,.14);border-color:rgba(79,124,62,.4);color:#3f6a33}


/* ====================================================================
   6.18 — LA TOMBE & LA PAGE DE MORT
   ==================================================================== */

/* Page de mort personnelle : mise en scène v2 (10 s, carte retournée). */
.lgv2-death-cinematic.is-v2{display:grid;place-items:center;padding:22px;
  min-height:var(--lgvh,100dvh);
  background:radial-gradient(120% 90% at 50% 10%,#241220 0%,#120912 52%,#070409 100%)}
.lgv2-me-death{position:relative;z-index:2;display:grid;justify-items:center;gap:8px;
  width:min(92vw,368px);text-align:center;opacity:0;transform:translateY(16px) scale(.97);
  transition:opacity .55s ease .1s,transform .6s cubic-bezier(.2,.75,.25,1) .1s}
.lgv2-death-cinematic.is-named .lgv2-me-death{opacity:1;transform:translateY(0) scale(1)}
.lgv2-death-cinematic.is-v2 .lgv2-death-skull{width:56px;height:56px;border-radius:50%;
  display:grid;place-items:center;color:#e8c9a2;
  background:radial-gradient(circle at 34% 30%,#5a2338,#2a0d1c 76%);
  border:2px solid rgba(202,161,95,.6);box-shadow:0 0 26px rgba(148,32,59,.35)}
.lgv2-death-cinematic.is-v2 .lgv2-death-skull svg{width:26px;height:26px;fill:currentColor}
.lgv2-death-cinematic.is-v2 small{font:800 8.32px/1 var(--serif);letter-spacing:.26em;color:#c98f6a}
.lgv2-death-cinematic.is-v2 h1{font:800 clamp(22.4px,7vw,30.4px)/1 var(--serif);
  color:#fdf0da;text-shadow:0 2px 12px rgba(0,0,0,.65)}
.lgv2-me-death__label{margin:0;font:600 10.56px/1.4 var(--serif);color:#d9bfae;max-width:300px}
.lgv2-me-death__card{position:relative;width:min(44vw,158px);aspect-ratio:2/3;margin-top:4px;perspective:900px}
.lgv2-me-death__face{position:absolute;inset:0;border-radius:14px;backface-visibility:hidden;overflow:hidden;
  border:1px solid rgba(220,180,110,.6);box-shadow:0 18px 40px rgba(0,0,0,.55);
  transition:transform .8s cubic-bezier(.3,.7,.2,1)}
.lgv2-me-death__face.is-back{display:grid;place-items:center;
  background:radial-gradient(circle at 50% 34%,#5c1026,#2c0511 78%);transform:rotateY(0)}
.lgv2-me-death__face.is-back .lgv2-card-wolf-mark{width:64%;height:64%;display:block;
  background:url('../images/wolf-emblem.webp') center/contain no-repeat;opacity:.6;mix-blend-mode:screen}
.lgv2-me-death__face.is-front{transform:rotateY(180deg);background:#1b0d12}
.lgv2-me-death__face.is-front img{width:100%;height:100%;object-fit:cover}
.lgv2-death-cinematic.is-flipped .lgv2-me-death__face.is-back{transform:rotateY(-180deg)}
.lgv2-death-cinematic.is-flipped .lgv2-me-death__face.is-front{transform:rotateY(0)}
.lgv2-me-death__role{font:800 clamp(15.2px,4.6vw,19.2px)/1.1 var(--serif);letter-spacing:.06em;
  text-transform:uppercase;color:#f7dfae;opacity:0;transform:translateY(6px);
  transition:opacity .5s ease .35s,transform .5s ease .35s}
.lgv2-death-cinematic.is-flipped .lgv2-me-death__role{opacity:1;transform:translateY(0)}
.lgv2-death-cinematic.is-v2 .lgv2-death-killer,
.lgv2-death-cinematic.is-v2 .lgv2-death-grave{opacity:0;transition:opacity .5s ease .55s}
.lgv2-death-cinematic.is-flipped .lgv2-death-killer,
.lgv2-death-cinematic.is-flipped .lgv2-death-grave{opacity:1}
.lgv2-me-death__go{margin-top:8px;min-height:50px;display:inline-flex;align-items:center;gap:9px;
  padding:0 22px;border-radius:999px;border:1px solid #caa15f;
  background:linear-gradient(160deg,#94203b,#5c091f);color:#fdf3dd;
  font:800 10.24px/1 var(--serif);letter-spacing:.09em;cursor:pointer;
  box-shadow:0 12px 26px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,226,178,.25);
  opacity:0;transform:translateY(8px);transition:opacity .45s ease .8s,transform .45s ease .8s}
.lgv2-death-cinematic.is-flipped .lgv2-me-death__go{opacity:1;transform:translateY(0)}
.lgv2-me-death__go svg{width:16px;height:16px;fill:currentColor}
.lgv2-me-death__go em{font-style:normal;min-width:26px;padding:4px 8px;border-radius:999px;
  background:rgba(0,0,0,.32);border:1px solid rgba(255,226,178,.3);font-size:9.28px}
.lgv2-me-death__go:active{transform:translateY(1px) scale(.98)}

/* La Tombe : clavier mobile sans sauts, fil défilable, saisie ancrée. */
.lgv2-grave-drawer{height:min(58dvh,500px)!important;
  max-height:calc(var(--lgvh,100dvh) - 90px)!important;
  overscroll-behavior:contain}
.lgv2-grave-feed{overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth;
  scrollbar-width:thin}
.lgv2-grave-compose{position:relative}
.lgv2-grave-compose input{font-size:16px!important} /* bloque le zoom iOS à la mise au point */
@media (prefers-reduced-motion: reduce){
  .lgv2-death-cinematic.is-v2 *{transition-duration:.1s!important;animation:none!important}
  .lgv2-grave-drawer.is-opening{animation:none!important}
}


/* ====================================================================
   6.19 — VERROUS DES BOUTONS + AMBRE DU RITE
   1. AUCUNE ombre de texte dans AUCUN bouton du jeu : les fonds des
      boutons du système portent seuls le contraste — c'est l'ombre
      héritée qui fabriquait le rendu « blanc détouré » dénoncé.
   2. Boutons secondaires ivoire : l'encre grenat est verrouillée jusque
      dans leurs enfants (span/svg), aucune règle crème héritée ne peut
      plus les repeindre.
   ==================================================================== */
.lgv2 button,
.lgv2 button *{
  text-shadow:none!important;
  -webkit-text-stroke:0!important;
  paint-order:normal!important}
/* Filet générique : tout bouton « secondaire » à fond ivoire du plateau. */
.lgv2-circle-screen [class*="secondary"] button[class=""] ,
.lgv2-circle-screen [class*="secondary"] button:not([class]) { color:#68162d!important }
.lgv2-circle-screen [class*="secondary"] button:not([class]) *{ color:inherit!important }

/* 6.19.1 — la couronne du scrutin est VISIBLE, quoi qu'il arrive. */
.lgv2-circle-screen .lgv2-vote-stage .lgv2-ballot-head>span svg{
  width:20px!important;height:20px!important;fill:currentColor!important;color:#efd6a0!important}


/* ====================================================================
   6.21 — LOT VISUEL VALIDÉ
   ==================================================================== */

/* Le cercle est FIXE : le panneau défile en interne s'il est trop haut. */
.lgv2-circle-screen .lgv2-circle-stage > section{
  min-height:0;max-height:100%;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}
.lgv2-circle-screen .lgv2-circle-stage > section::-webkit-scrollbar{display:none}
.lgv2-circle-screen .lgv2-player-ring{flex:none!important}

/* « MAIRE ÉLU » : encre VERTE sur ivoire, zéro ombre (demande validée). */
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-winner-seal,
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-winner-seal b,
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-winner-seal svg{
  color:#2f6b3a!important;fill:currentColor!important;
  text-shadow:none!important;-webkit-text-stroke:0!important}
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-winner-seal{
  background:#fdfaf1!important;border:1px solid #7ea877!important}

/* Bannière verte « C'EST VOTRE TOUR DE VOTER ». */
.lgv2-turn-banner{display:flex;align-items:center;gap:10px;margin:6px 0 2px;
  padding:10px 13px;border-radius:14px;
  background:linear-gradient(177deg,#1f6b3a,#134526);
  border:1px solid rgba(150,225,170,.55);
  box-shadow:0 10px 22px rgba(15,58,30,.35),inset 0 1px 0 rgba(220,255,230,.22);
  animation:lgv2-turn-pulse 1.8s ease-in-out infinite alternate}
.lgv2-turn-banner svg{width:20px;height:20px;flex:none;fill:#dcf6e4}
.lgv2-turn-banner b{display:block;font:800 9.6px/1.1 var(--serif);letter-spacing:.08em;color:#eafff0;text-shadow:none}
.lgv2-turn-banner small{display:block;margin-top:2px;font:600 8px/1.3 var(--serif);color:#c8ecd2;text-shadow:none}
@keyframes lgv2-turn-pulse{from{box-shadow:0 10px 22px rgba(15,58,30,.35),inset 0 1px 0 rgba(220,255,230,.22)}
  to{box-shadow:0 10px 26px rgba(24,94,48,.55),0 0 0 3px rgba(63,140,84,.25),inset 0 1px 0 rgba(220,255,230,.22)}}

/* Cibles du vote du maire : avatars DORÉS, mêmes codes que le vote du jour. */
.lgv2-circle-player.is-mayor-vote-targetable .lgv2-circle-avatar{cursor:pointer}
.lgv2-circle-player.is-mayor-vote-targetable .lgv2-circle-avatar::after{
  content:"";position:absolute;inset:-6px;border-radius:50%;
  border:2px solid rgba(239,209,140,.95);
  animation:lgv2-target-breathe 1.5s ease-in-out infinite alternate}
@keyframes lgv2-target-breathe{from{transform:scale(.97);opacity:.75}to{transform:scale(1.05);opacity:1}}

/* Protecteur & Sorcière : la personne protégée / sauvée EN VERT cette nuit. */
.lgv2-circle-player.is-night-blessed .lgv2-circle-avatar::after{
  content:"";position:absolute;inset:-6px;border-radius:50%;
  border:2.5px solid #57b06a;box-shadow:0 0 12px rgba(87,176,106,.65);
  animation:lgv2-bless-breathe 2s ease-in-out infinite alternate}
.lgv2-circle-player.is-night-blessed .lgv2-circle-avatar img{
  box-shadow:0 0 0 2px rgba(87,176,106,.5)}
@keyframes lgv2-bless-breathe{from{opacity:.7;transform:scale(.98)}to{opacity:1;transform:scale(1.04)}}

/* --- ÉCRANS DE VICTOIRE PREMIUM ---------------------------------------- */
.lgv2-victory-screen .lgv2-role-gameover{
  background:none!important;border:0!important;box-shadow:none!important;
  backdrop-filter:none!important;border-radius:0!important}
.lgv2-victory-screen .lgv2-victory-backdrop{display:none!important}
.lgv2-victory-screen{position:relative;display:grid;place-items:center;overflow:hidden;
  min-height:var(--lgvh,100dvh)}
.lgv2-victory-screen.is-wolves{background:radial-gradient(130% 95% at 50% 0%,#1b1030 0%,#120a1e 46%,#070410 100%)}
.lgv2-victory-screen.is-village{background:
  radial-gradient(120% 80% at 50% 0%,#ffedbe 0%,#f7d488 38%,#e8b45e 72%,#c98d3f 100%)}
.lgv2-role-gameover{position:relative;z-index:1;display:grid;justify-items:center;gap:10px;
  width:min(92vw,392px);padding:26px 18px;text-align:center}
.lgv2-vic-stars i{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;border-radius:50%;
  background:#fdf6e3;box-shadow:0 0 6px rgba(255,244,214,.9);
  animation:lgv2-boot-star var(--d) ease-in-out infinite alternate}
.lgv2-vic-moon{position:absolute;left:50%;top:6%;width:min(20vw,92px);height:min(20vw,92px);
  transform:translateX(-50%);border-radius:50%;
  background:radial-gradient(circle at 38% 34%,#f6ead0,#d9c39a 58%,#b39a70 100%);
  box-shadow:0 0 34px rgba(233,215,178,.5)}
.lgv2-vic-emblem{display:block;width:min(46vw,190px);height:min(46vw,190px);opacity:0;transform:scale(1.3);
  transition:opacity .7s ease .25s,transform .8s cubic-bezier(.2,.8,.25,1.1) .25s}
.lgv2-vic-emblem.is-wolves{background:#efe0c2;
  -webkit-mask:url('../images/wolf-emblem.webp') center/contain no-repeat;
  mask:url('../images/wolf-emblem.webp') center/contain no-repeat;
  filter:drop-shadow(0 0 26px rgba(148,32,59,.55))}
.lgv2-vic-emblem.is-village{display:grid;place-items:center;color:#7a5a19;
  background:radial-gradient(circle at 34% 30%,#fff7df,#eccf92 74%);
  border-radius:50%;border:3px solid #b98a3c;
  box-shadow:0 18px 40px rgba(120,80,20,.35),inset 0 2px 0 #fff}
.lgv2-vic-emblem.is-village svg{width:44%;height:44%;fill:currentColor}
.lgv2-victory-screen.is-on .lgv2-vic-emblem{opacity:1;transform:scale(1)}
.lgv2-vic-heart{display:grid;justify-items:center;gap:7px;opacity:0;transform:translateY(14px);
  transition:opacity .6s ease .55s,transform .6s cubic-bezier(.2,.75,.25,1) .55s}
.lgv2-victory-screen.is-on .lgv2-vic-heart{opacity:1;transform:translateY(0)}
.lgv2-vic-heart small{font:800 8.8px/1 var(--serif);letter-spacing:.26em}
.lgv2-victory-screen.is-wolves .lgv2-vic-heart small{color:#d79fb2}
.lgv2-victory-screen.is-village .lgv2-vic-heart small{color:#8a5c14;text-shadow:none}
.lgv2-vic-heart h2{font:800 clamp(25.6px,8.4vw,35.2px)/1.06 var(--serif);letter-spacing:.02em}
.lgv2-victory-screen.is-wolves .lgv2-vic-heart h2{color:#fdeeda;text-shadow:0 2px 14px rgba(0,0,0,.6)}
.lgv2-victory-screen.is-village .lgv2-vic-heart h2{color:#5c3305;text-shadow:0 1px 0 rgba(255,246,220,.8)}
.lgv2-vic-ribbon{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:999px;
  font:800 8.8px/1 var(--serif);letter-spacing:.14em;color:#fdf0da;
  border:1px solid rgba(220,180,110,.6)}
.lgv2-vic-ribbon svg{width:15px;height:15px;fill:currentColor}
.lgv2-vic-ribbon.is-loups{background:linear-gradient(160deg,#7e1730,#4a0817)}
.lgv2-vic-ribbon.is-village{background:linear-gradient(160deg,#4f6a3e,#2f4526)}
.lgv2-vic-heart p{max-width:300px;font:600 10.56px/1.5 var(--serif)}
.lgv2-victory-screen.is-wolves .lgv2-vic-heart p{color:#cbb4c2}
.lgv2-victory-screen.is-village .lgv2-vic-heart p{color:#6d4712;text-shadow:none}
.lgv2-vic-sun{position:absolute;left:50%;top:7%;width:min(23vw,104px);height:min(23vw,104px);transform:translateX(-50%);
  border-radius:50%;background:radial-gradient(circle at 40% 36%,#fff9e0,#ffd671 62%,#f2a93b 100%);
  box-shadow:0 0 46px rgba(255,205,105,.85)}
.lgv2-vic-rays{position:absolute;left:50%;top:calc(7% + min(11.5vw,52px));width:min(150vw,700px);height:min(150vw,700px);
  transform:translate(-50%,-50%);opacity:.5;pointer-events:none;
  background:repeating-conic-gradient(rgba(255,236,180,.28) 0 7deg,rgba(255,236,180,0) 7deg 24deg);
  -webkit-mask:radial-gradient(circle,#000 0 62%,transparent 70%);
  mask:radial-gradient(circle,#000 0 62%,transparent 70%);
  animation:lgv2-vic-rays 34s linear infinite}
@keyframes lgv2-vic-rays{to{transform:translate(-50%,-50%) rotate(360deg)}}
.lgv2-vic-doves i{position:absolute;width:16px;height:7px;opacity:.85;
  border-radius:60% 60% 0 0/100% 100% 0 0;
  border-top:2.5px solid #6d4712;background:transparent}
.lgv2-vic-doves i:nth-child(1){left:16%;top:14%;animation:lgv2-dove 9s linear infinite}
.lgv2-vic-doves i:nth-child(2){left:64%;top:9%;animation:lgv2-dove 12s linear 2s infinite}
.lgv2-vic-doves i:nth-child(3){left:38%;top:19%;animation:lgv2-dove 10s linear 4s infinite}
@keyframes lgv2-dove{from{transform:translateX(0)}to{transform:translateX(46vw)}}
.lgv2-victory-cta{margin-top:12px;opacity:0;transform:translateY(10px);
  transition:opacity .5s ease .95s,transform .5s ease .95s}
.lgv2-victory-screen.is-on .lgv2-victory-cta{opacity:1;transform:translateY(0)}
.lgv2-victory-cta button{display:inline-flex;align-items:center;gap:9px;min-height:52px;padding:0 26px;
  border-radius:999px;border:1px solid #caa15f;cursor:pointer;
  background:linear-gradient(160deg,#94203b,#5c091f);color:#fdf3dd;
  font:800 10.56px/1 var(--serif);letter-spacing:.1em;
  box-shadow:0 14px 30px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,226,178,.25)}
.lgv2-victory-cta button svg{width:16px;height:16px;fill:currentColor}
.lgv2-victory-cta button:active{transform:translateY(1px) scale(.98)}
@media (prefers-reduced-motion: reduce){
  .lgv2-vic-rays,.lgv2-vic-doves i,.lgv2-turn-banner,
  .lgv2-circle-player.is-mayor-vote-targetable .lgv2-circle-avatar::after,
  .lgv2-circle-player.is-night-blessed .lgv2-circle-avatar::after{animation:none!important}
  .lgv2-vic-emblem,.lgv2-vic-heart,.lgv2-victory-cta{opacity:1!important;transform:none!important;transition:none!important}}


/* ====================================================================
   6.22 — RÈGLES SERVEUR : mains du Narrateur & verrou des cartes
   ==================================================================== */
/* Cartes en attente (Narrateur) : qui n'a pas encore appuyé J'AI COMPRIS. */
.lgv2-rolewait{position:fixed;left:50%;top:calc(10px + env(safe-area-inset-top));transform:translateX(-50%);
  z-index:60;display:flex;align-items:center;gap:10px;width:min(92vw,392px);
  padding:10px 13px;border-radius:14px;
  background:linear-gradient(165deg,#4a3113,#2e1d0a);border:1px solid #caa15f;
  box-shadow:0 12px 26px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,226,178,.2)}
.lgv2-rolewait svg{width:19px;height:19px;flex:none;fill:#efd6a0}
.lgv2-rolewait b{display:block;font:800 9.28px/1.1 var(--serif);letter-spacing:.08em;color:#f7e2b6}
.lgv2-rolewait small{display:block;margin-top:2px;font:600 8px/1.35 var(--serif);color:#dcc294}

/* Compte à rebours de parole (30 s), rouge sous 10 s. */
.lgv2-speech-count{margin-left:6px;padding:4px 9px;border-radius:999px;font-style:normal;
  font:800 8.8px/1 var(--serif);letter-spacing:.05em;
  background:linear-gradient(160deg,#8f1d38,#5c091f);border:1px solid #caa15f;color:#fdf3dd}
.lgv2-speech-count.is-urgent{background:linear-gradient(160deg,#b3202c,#7c0f18);
  animation:lgv2-count-urgent 1s ease-in-out infinite alternate}
@keyframes lgv2-count-urgent{from{transform:scale(1)}to{transform:scale(1.08)}}

/* Mains du Narrateur : passer parole / vote. */
.lgv2-host-skip{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  width:100%;min-height:44px;margin:6px 0 2px;padding:0 14px;border-radius:999px;cursor:pointer;
  border:1px solid rgba(209,174,103,.54);background:rgba(3,12,29,.55);color:#efd59c;
  font:800 8.8px/1 var(--serif);letter-spacing:.1em}
.lgv2-host-skip svg{width:14px;height:14px;fill:currentColor}
.lgv2-host-skip:active{transform:translateY(1px)}

/* Réglages du narrateur pendant la partie. */
.lgv2-host-settings-root{position:fixed;inset:0;z-index:125;display:grid;place-items:end center;padding:18px 12px calc(14px + env(safe-area-inset-bottom));}
.lgv2-host-settings-scrim{position:absolute;inset:0;border:none;background:rgba(8,6,12,.58)}
.lgv2-host-settings-sheet{position:relative;width:min(100%,640px);max-height:min(88vh,780px);overflow:hidden;border-radius:26px;border:1px solid rgba(209,174,103,.38);background:linear-gradient(180deg,rgba(255,252,246,.985),rgba(248,239,226,.972));box-shadow:0 26px 70px rgba(8,6,12,.46)}
.lgv2-host-settings-head{display:flex;align-items:flex-start;gap:12px;padding:16px 16px 10px;border-bottom:1px solid rgba(124,16,39,.08)}
.lgv2-host-settings-head>span{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;background:linear-gradient(145deg,#8b1029,#6e0b20);color:#e6c17e;border:1px solid #c79c5c;box-shadow:0 5px 12px rgba(92,11,30,.15)}
.lgv2-host-settings-head>span svg{width:19px;height:19px}
.lgv2-host-settings-head div{min-width:0;flex:1}.lgv2-host-settings-head small{display:block;color:#826f5e;font:700 9.28px/1 var(--sans);letter-spacing:.18em;margin-bottom:4px}.lgv2-host-settings-head h3{margin:0;color:var(--bp-encre);font:700 16.8px/1.05 var(--serif)}.lgv2-host-settings-head p{margin:4px 0 0;color:#7d6b5c;font-size:10.88px;line-height:1.35}
.lgv2-host-settings-head button{width:34px;height:34px;flex:none;border:none;border-radius:50%;background:rgba(124,16,39,.08);color:#7c1027;display:grid;place-items:center;cursor:pointer}.lgv2-host-settings-head button svg{width:15px;height:15px}
.lgv2-host-settings-sheet .lgv2-settings-panel{height:calc(min(88vh,780px) - 78px);background:transparent;border:none;box-shadow:none;border-radius:0;padding:0}.lgv2-host-settings-sheet .lgv2-settings-panel .lgv2-settings-hero{display:none}.lgv2-host-settings-sheet .lgv2-settings-scroll{padding:0 12px 14px;max-height:100%;overflow:auto}
.lgv2-host-settings-priority{padding:0 12px 10px}
.lgv2-setting-shortcut-card{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px}.lgv2-setting-shortcut{min-height:36px;padding:0 12px;border-radius:999px;border:1px solid rgba(201,161,96,.72);background:linear-gradient(177deg,#8e1a33,#5d0d22);color:#fdeec9;font:700 8.96px/1 var(--sans);letter-spacing:.16em;cursor:pointer;text-transform:uppercase}
@media (prefers-reduced-motion: reduce){.lgv2-speech-count.is-urgent{animation:none}}


/* ====================================================================
   6.24 — LE CIEL VIVANT (bandeau HAUT uniquement)
   Nuages en dérive et oiseaux — chauves-souris la nuit — qui traversent
   la face supérieure de l'écran, moitié vers la droite, moitié vers la
   gauche. Seuls transform et opacity sont animés : rien à télécharger,
   aucun canvas, tout passe par le GPU. Le calque reste DERRIÈRE le
   cercle et les panneaux, et ne capte aucun toucher.
   ==================================================================== */
.lgv2-sky{position:absolute;left:0;right:0;top:6%;height:min(21vh,168px);
  z-index:2;pointer-events:none;overflow:hidden;
  -webkit-mask:linear-gradient(180deg,#000 0 68%,transparent 100%);
  mask:linear-gradient(180deg,#000 0 68%,transparent 100%)}
.lgv2-circle-screen .lgv2-circle-stage{position:relative;z-index:2}

/* --- Nuages : formes douces en dérive lente ------------------------- */
.lgv2-sky-cloud{position:absolute;top:var(--t,8%);left:0;
  width:112px;height:26px;border-radius:999px;filter:blur(7px);
  transform:translateX(-40vw) scale(var(--s,1));
  will-change:transform;
  animation:lgv2-sky-drift var(--d,130s) linear infinite}
.lgv2-sky-cloud.is-rtl{left:auto;right:0;
  transform:translateX(40vw) scale(var(--s,1));
  animation-name:lgv2-sky-drift-rtl}
.lgv2-sky-cloud::before,
.lgv2-sky-cloud::after{content:"";position:absolute;border-radius:999px;background:inherit}
.lgv2-sky-cloud::before{left:20px;top:-10px;width:56px;height:32px}
.lgv2-sky-cloud::after{right:16px;top:-6px;width:40px;height:24px}
.lgv2-sky.is-day .lgv2-sky-cloud{background:rgba(255,255,255,.34)}
.lgv2-sky.is-night .lgv2-sky-cloud{background:rgba(120,140,190,.26)}
@keyframes lgv2-sky-drift{
  from{transform:translateX(-40vw) scale(var(--s,1))}
  to{transform:translateX(140vw) scale(var(--s,1))}}
@keyframes lgv2-sky-drift-rtl{
  from{transform:translateX(40vw) scale(var(--s,1))}
  to{transform:translateX(-140vw) scale(var(--s,1))}}

/* --- Oiseaux : traversée + battement d'ailes ------------------------ */
.lgv2-sky-bird{position:absolute;top:var(--t,10%);left:0;
  display:block;width:calc(15px * var(--s,1));height:calc(7px * var(--s,1));
  transform:translateX(-20vw);will-change:transform;
  animation:lgv2-sky-fly var(--d,26s) linear infinite;
  animation-delay:var(--delay,0s)}
.lgv2-sky-bird.is-rtl{left:auto;right:0;transform:translateX(20vw) scaleX(-1);
  animation-name:lgv2-sky-fly-rtl}
.lgv2-sky-bird svg{position:absolute;inset:0;width:100%;height:100%;
  transform-origin:50% 60%;
  animation:lgv2-sky-flap 1.15s ease-in-out infinite}
.lgv2-sky-bird svg:nth-child(2){left:150%;top:42%;width:74%;height:74%;
  animation-delay:.28s;opacity:.85}
.lgv2-sky.is-day .lgv2-sky-bird svg{fill:rgba(58,46,34,.42)}
.lgv2-sky.is-night .lgv2-sky-bird svg{fill:rgba(12,16,34,.6)}
@keyframes lgv2-sky-fly{
  from{transform:translateX(-20vw) translateY(0)}
  50%{transform:translateX(60vw) translateY(-9px)}
  to{transform:translateX(140vw) translateY(0)}}
@keyframes lgv2-sky-fly-rtl{
  from{transform:translateX(20vw) scaleX(-1) translateY(0)}
  50%{transform:translateX(-60vw) scaleX(-1) translateY(-9px)}
  to{transform:translateX(-140vw) scaleX(-1) translateY(0)}}
@keyframes lgv2-sky-flap{
  0%,100%{transform:scaleY(1)}
  50%{transform:scaleY(.45)}}

@media (max-height:640px){.lgv2-sky{height:min(17vh,120px)}}
@media (prefers-reduced-motion: reduce){
  .lgv2-sky-cloud,.lgv2-sky-bird,.lgv2-sky-bird svg{animation:none!important}
  .lgv2-sky-bird{display:none}
  .lgv2-sky-cloud{transform:translateX(18vw) scale(var(--s,1))}
  .lgv2-sky-cloud.is-rtl{transform:translateX(-18vw) scale(var(--s,1))}}


/* ====================================================================
   6.24.2 — Écran des candidatures : couronne lisible, compteur vert,
   textes sans ombre parasite (capture 51042).
   ==================================================================== */
/* La couronne était ivoire sur médaillon ivoire : médaillon grenat, or. */
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-emblem{
  background:radial-gradient(circle at 34% 30%,#a52a47,#5b0c22 74%)!important;
  border:2px solid #caa15f!important;
  box-shadow:inset 0 0 0 2px rgba(43,7,17,.5)!important;
  color:#efd6a0!important}
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-emblem svg{
  fill:currentColor!important;color:#efd6a0!important}

/* Le compteur de candidatures passe au VERT, encre lisible, zéro ombre. */
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-phase-head>strong{
  background:linear-gradient(177deg,#1f6b3a,#134526)!important;
  border:1px solid rgba(150,225,170,.6)!important;
  color:#eafff0!important;
  text-shadow:none!important;
  box-shadow:0 6px 14px rgba(15,58,30,.3),inset 0 1px 0 rgba(220,255,230,.2)!important}
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-phase-head>strong i{
  color:#a9dcbb!important;font-style:normal;opacity:.9}

/* Les textes du panneau ne portent plus d'ombre sur fond sombre uni. */
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-status,
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-phase-head small,
.lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-phase-head h2{
  text-shadow:none!important;-webkit-text-stroke:0!important}


/* ====================================================================
   6.24.3 — LA PAGE RESTE FIXE, LE PANNEAU DESCEND
   Cause du texte coupé : le plateau était une grille à 2 rangées alors
   qu'il porte 4 enfants ; le panneau tombait dans une rangée implicite,
   donc « max-height:100% » ne le contraignait plus et le bas était
   rogné. Le plateau devient une COLONNE : le cercle garde sa taille, le
   panneau prend exactement la place restante et défile en interne.
   ==================================================================== */
.lgv2-circle-screen .lgv2-circle-stage{
  display:flex!important;flex-direction:column!important;
  min-height:0!important;overflow:hidden!important}
/* Décors : hors du flux, ils ne mangent plus de hauteur. */
/* 6.97.0 — le decor n'est plus cache : la place dessinee remplace les images d'arene. */
.lgv2-circle-screen .lgv2-circle-stage > .lgv2-sky-life{position:absolute;inset:0;pointer-events:none}
/* Le cercle garde sa géométrie exacte. */
.lgv2-circle-screen .lgv2-circle-stage > .lgv2-player-ring{flex:0 0 auto!important}
/* Le panneau brun prend le reste et défile seul, jamais la page. */
.lgv2-circle-screen .lgv2-circle-stage > section{
  flex:1 1 auto!important;min-height:0!important;max-height:none!important;
  overflow-y:auto!important;overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  padding-bottom:calc(10px + env(safe-area-inset-bottom))}
.lgv2-circle-screen .lgv2-circle-stage > section::-webkit-scrollbar{display:none}
/* Aucun bloc interne ne rogne plus son contenu : c'est le panneau, et
   lui seul, qui défile. */
.lgv2-circle-screen .lgv2-circle-stage > section .lgv2-hearroll{
  overflow:visible!important;max-height:none!important}
.lgv2-circle-screen .lgv2-circle-stage > section .lgv2-hearroll-list{
  max-height:none!important;overflow:visible!important}

/* Repère discret : le panneau s'estompe en bas tant qu'il reste à lire. */
.lgv2-circle-screen .lgv2-circle-stage > section{
  -webkit-mask:linear-gradient(180deg,#000 0 calc(100% - 14px),transparent 100%);
  mask:linear-gradient(180deg,#000 0 calc(100% - 14px),transparent 100%)}


/* ====================================================================
   6.25 — LA TOMBE : en-tête compact, clavier, messages vocaux
   + les encres pâles des écrans de deuxième parole (captures 51047-51050)
   ==================================================================== */

/* 1. En-tête d'une seule ligne : le titre et le X cessent de manger l'écran. */
.lgv2-grave-drawer header.is-compact{
  display:flex!important;align-items:center;gap:9px;
  padding:7px 10px!important;grid-template-columns:none!important}
.lgv2-grave-drawer header.is-compact>span{font-size:16px!important;line-height:1;flex:none}
.lgv2-grave-drawer header.is-compact h3{margin:0!important;flex:1;min-width:0;
  font:800 11.84px/1 var(--serif)!important;letter-spacing:.06em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lgv2-grave-drawer header.is-compact>button{
  width:32px;height:32px;min-height:0;flex:none;border-radius:10px;display:grid;place-items:center;border:1px solid rgba(239,217,166,.35)!important;background:rgba(255,255,255,.08)!important;color:#EFD9A6!important}
.lgv2-grave-drawer header.is-compact>button svg{width:14px;height:14px}

/* 2. Le clavier ne masque plus la saisie : le tiroir se pose dessus. */
.lgv2-grave-drawer{bottom:calc(var(--lgkb,0px))!important;
  transition:bottom .18s ease}
html.is-keyboard .lgv2-grave-drawer{
  height:min(52dvh,420px)!important;
  max-height:calc(var(--lgvh,100dvh) - var(--lgkb,0px) - 12px)!important}
html.is-keyboard .lgv2-grave-members{display:none}

/* 3. Messages vocaux : bouton micro, barre d'enregistrement, bulles. */
.lgv2-grave-compose{grid-template-columns:1fr 42px 42px!important}
.lgv2-grave-compose.is-hidden{display:none!important}
.lgv2-grave-mic{width:42px;height:40px;border-radius:999px;display:grid;place-items:center;
  border:1px solid rgba(75,81,96,.45);background:#4B5160;color:#F4E9D6;cursor:pointer}
.lgv2-grave-mic svg{width:17px;height:17px;fill:currentColor}
.lgv2-grave-mic:active{transform:translateY(1px)}

.lgv2-grave-recorder{display:flex;align-items:center;gap:9px;
  padding:8px 9px;background:#F6E9C9;border-top:1px solid rgba(201,169,107,.45)}
.lgv2-grave-recorder[hidden]{display:none}
.lgv2-grave-rec-dot{width:9px;height:9px;border-radius:50%;background:#d33;flex:none;
  animation:lgv2-rec-blink 1s steps(2,end) infinite}
@keyframes lgv2-rec-blink{50%{opacity:.25}}
.lgv2-grave-recorder b{font:800 9.92px/1 var(--serif);color:#3D2D27;min-width:34px}
.lgv2-grave-rec-wave{flex:1;display:flex;align-items:center;gap:3px;height:22px}
.lgv2-grave-rec-wave u{flex:1;background:rgba(201,169,107,.58);border-radius:2px;
  animation:lgv2-rec-wave .9s ease-in-out infinite alternate}
.lgv2-grave-rec-wave u:nth-child(2){animation-delay:.1s}
.lgv2-grave-rec-wave u:nth-child(3){animation-delay:.2s}
.lgv2-grave-rec-wave u:nth-child(4){animation-delay:.3s}
.lgv2-grave-rec-wave u:nth-child(5){animation-delay:.15s}
.lgv2-grave-rec-wave u:nth-child(6){animation-delay:.25s}
.lgv2-grave-rec-wave u:nth-child(7){animation-delay:.05s}
@keyframes lgv2-rec-wave{from{height:22%}to{height:100%}}
.lgv2-grave-recorder button{width:38px;height:38px;flex:none;border-radius:999px;
  display:grid;place-items:center;cursor:pointer;
  border:1px solid rgba(75,81,96,.45);background:#4B5160;color:#F4E9D6}
.lgv2-grave-recorder button.is-send{background:linear-gradient(180deg,var(--lg-btn-or-1),var(--lg-btn-or-2));
  border-color:rgba(201,169,107,.72);color:#3F1523}
.lgv2-grave-recorder button svg{width:15px;height:15px;fill:currentColor}

.lgv2-grave-voice{display:flex;align-items:center;gap:9px;min-width:172px}
.lgv2-grave-voice>button{width:32px;height:32px;flex:none;border-radius:50%;
  display:grid;place-items:center;cursor:pointer;
  border:1px solid rgba(201,169,107,.72);background:#4B5160;color:#F4E9D6}
.lgv2-grave-voice>button svg{width:13px;height:13px;fill:currentColor}
.lgv2-grave-voice-wave{flex:1;display:flex;align-items:center;gap:2px;height:22px}
.lgv2-grave-voice-wave u{flex:1;height:var(--h,50%);border-radius:2px;background:rgba(201,169,107,.45)}
.lgv2-grave-voice.is-playing .lgv2-grave-voice-wave u{
  animation:lgv2-voice-play .8s ease-in-out infinite alternate}
.lgv2-grave-voice.is-playing .lgv2-grave-voice-wave u:nth-child(2n){animation-delay:.12s}
.lgv2-grave-voice.is-playing .lgv2-grave-voice-wave u:nth-child(3n){animation-delay:.24s}
@keyframes lgv2-voice-play{from{background:rgba(201,169,107,.35);transform:scaleY(.7)}
  to{background:rgba(201,169,107,.95);transform:scaleY(1.1)}}
.lgv2-grave-voice em{font-style:normal;font-size:7.36px;letter-spacing:.08em;color:#6F6254;flex:none}
.lgv2-grave-feed article.is-voice p{display:none}

/* 4. Encres pâles des écrans de deuxième parole (captures 51047-51050). */
.lgv2-circle-screen .lgv2-day-panel .lgv2-second-state,
.lgv2-circle-screen .lgv2-day-panel .lgv2-second-hint,
.lgv2-circle-screen .lgv2-day-panel .lgv2-day-second small,
.lgv2-circle-screen .lgv2-day-panel button small{
  color:#5a4330!important;text-shadow:none!important;-webkit-text-stroke:0!important}
.lgv2-circle-screen .lgv2-day-panel .lgv2-second-state b,
.lgv2-circle-screen .lgv2-day-panel .lgv2-second-state em{
  font-style:normal;color:#7a4a12!important;text-shadow:none!important}
.lgv2-circle-screen .lgv2-day-panel h2,
.lgv2-circle-screen .lgv2-day-panel header small,
.lgv2-circle-screen .lgv2-day-panel>p{text-shadow:none!important}
/* ACCEPTER en vert, REFUSER en grenat : plus de confusion possible. */
.lgv2-circle-screen .lgv2-day-panel [data-action*="second-accept"],
.lgv2-circle-screen .lgv2-day-panel [data-action*="accept"]{
  background:linear-gradient(177deg,#1f6b3a,#134526)!important;
  border-color:rgba(150,225,170,.6)!important;color:#eafff0!important;text-shadow:none!important}
@media (prefers-reduced-motion: reduce){
  .lgv2-grave-rec-dot,.lgv2-grave-rec-wave u,.lgv2-grave-voice.is-playing .lgv2-grave-voice-wave u{animation:none!important}}


/* 6.25.1 — Envoi instantané : la bulle apparaît avant la réponse du
   serveur, légèrement estompée, puis se fixe. Le fil n'est plus jamais
   reconstruit, donc plus aucun clignotement ni saut du défilement. */
.lgv2-grave-feed article.is-new{animation:lgv2-grave-bubble-in .18s ease-out both}
@keyframes lgv2-grave-bubble-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.lgv2-grave-feed article.is-pending{opacity:.62}
.lgv2-grave-feed article.is-pending::after{
  content:"";position:absolute;right:8px;bottom:6px;width:7px;height:7px;border-radius:50%;
  border:1.5px solid rgba(230,199,155,.7);border-top-color:transparent;
  animation:lgv2-bubble-spin .7s linear infinite}
@keyframes lgv2-bubble-spin{to{transform:rotate(360deg)}}
.lgv2-grave-feed article{position:relative}
/* Défilement doux et sans à-coups sur mobile. */
.lgv2-grave-feed{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;contain:layout paint}
@media (prefers-reduced-motion: reduce){
  .lgv2-grave-feed{scroll-behavior:auto}
  .lgv2-grave-feed article.is-new{animation:none}
  .lgv2-grave-feed article.is-pending::after{animation:none}}
/* La lune du plateau de nuit reprend la même illustration. */
.lgv2-night-atmosphere>span{
  background:url('../images/startup-premium/moon.webp') center/contain no-repeat!important;
  box-shadow:0 0 34px rgba(198,216,255,.24)!important;opacity:.9!important}

/* 2. Entrée directe : plus de bouton, une jauge fine annonce le passage. */
.lgv2-cine-progress{display:block;width:min(58vw,220px);height:3px;margin:14px auto 0;
  border-radius:999px;background:rgba(255,255,255,.16);overflow:hidden}
.lgv2-cine-progress u{display:block;height:100%;width:0;border-radius:999px;
  background:linear-gradient(90deg,#caa15f,#f3dcae);
  animation:lgv2-cine-fill 2.5s linear forwards}
@keyframes lgv2-cine-fill{to{width:100%}}

/* 3. La malédiction de l'Ancien : la carte retombe sur Villageois. */
.lgv2-curse-rite{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;padding:22px}
.lgv2-curse-veil{position:absolute;inset:0;opacity:0;transition:opacity .45s ease;
  background:radial-gradient(120% 90% at 50% 12%,rgba(30,20,14,.92),rgba(8,6,4,.96))}
.lgv2-curse-stage{position:relative;z-index:1;display:grid;justify-items:center;gap:8px;
  width:min(92vw,360px);text-align:center;opacity:0;transform:translateY(14px) scale(.97);
  transition:opacity .5s ease .1s,transform .55s cubic-bezier(.2,.75,.25,1) .1s}
.lgv2-curse-rite.is-named .lgv2-curse-veil{opacity:1}
.lgv2-curse-rite.is-named .lgv2-curse-stage{opacity:1;transform:none}
.lgv2-curse-rite.is-leaving .lgv2-curse-veil,
.lgv2-curse-rite.is-leaving .lgv2-curse-stage{opacity:0;transition:opacity .3s ease}
.lgv2-curse-seal{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 34% 30%,#6a4a1e,#2c1c08 74%);
  border:2px solid rgba(202,161,95,.7);color:#efd6a0}
.lgv2-curse-seal svg{width:24px;height:24px;fill:currentColor}
.lgv2-curse-rite small{font:800 8px/1.3 var(--serif);letter-spacing:.18em;color:#d8b578;max-width:300px}
.lgv2-curse-rite h2{font:800 clamp(18.4px,5.8vw,24px)/1.1 var(--serif);color:#fdf0da}
.lgv2-curse-card{position:relative;width:min(44vw,158px);aspect-ratio:2/3;perspective:900px;margin-top:4px}
.lgv2-curse-face{position:absolute;inset:0;border-radius:14px;backface-visibility:hidden;overflow:hidden;
  border:1px solid rgba(220,180,110,.6);box-shadow:0 18px 40px rgba(0,0,0,.55);
  transition:transform .8s cubic-bezier(.3,.7,.2,1)}
.lgv2-curse-face.is-back{display:grid;place-items:center;
  background:radial-gradient(circle at 50% 34%,#5c1026,#2c0511 78%)}
.lgv2-curse-face.is-back .lgv2-card-wolf-mark{width:64%;height:64%;display:block;
  background:url('../images/wolf-emblem.webp') center/contain no-repeat;opacity:.6;mix-blend-mode:screen}
.lgv2-curse-face.is-front{transform:rotateY(180deg);background:#1b0d12}
.lgv2-curse-face.is-front img{width:100%;height:100%;object-fit:cover}
.lgv2-curse-rite.is-flipped .lgv2-curse-face.is-back{transform:rotateY(-180deg)}
.lgv2-curse-rite.is-flipped .lgv2-curse-face.is-front{transform:rotateY(0)}
.lgv2-curse-role{font:800 clamp(16px,5vw,20px)/1 var(--serif);letter-spacing:.1em;color:#f7dfae;
  opacity:0;transition:opacity .5s ease .35s}
.lgv2-curse-rite.is-flipped .lgv2-curse-role{opacity:1}
.lgv2-curse-rite p{max-width:310px;font:600 10.24px/1.45 var(--serif);color:#d9c3a4;
  opacity:0;transition:opacity .5s ease .5s}
.lgv2-curse-rite.is-flipped p{opacity:1}
.lgv2-curse-go{margin-top:8px;min-height:48px;padding:0 24px;border-radius:999px;cursor:pointer;
  border:1px solid #caa15f;background:linear-gradient(160deg,#94203b,#5c091f);color:#fdf3dd;
  font:800 10.24px/1 var(--serif);letter-spacing:.1em;
  opacity:0;transition:opacity .45s ease .75s}
.lgv2-curse-rite.is-flipped .lgv2-curse-go{opacity:1}

/* 4. L'Alien : choix initial clair, deux actions seulement. */
.lgv2-alien-choice{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}
.lgv2-alien-choice button{display:flex;align-items:center;justify-content:center;gap:7px;
  min-height:50px;padding:8px 10px;border-radius:13px;cursor:pointer;
  font:800 9.12px/1.15 var(--serif);letter-spacing:.055em;text-align:center;
  box-shadow:0 8px 18px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.12)}
.lgv2-alien-choice button svg{width:18px;height:18px;fill:currentColor;flex:none}
.lgv2-alien-choice .is-yes{background:linear-gradient(177deg,#2b7a48,#18532f);
  border:1px solid rgba(161,232,180,.72);color:#effff2}
.lgv2-alien-choice .is-no{background:linear-gradient(177deg,#7b2435,#531323);
  border:1px solid rgba(237,167,167,.52);color:#fff0f0}
.lgv2-alien-choice button:active{transform:translateY(1px)}

@media (prefers-reduced-motion: reduce){
  .lgv2-cine-progress u{animation-duration:.6s}
  .lgv2-curse-rite *{transition-duration:.12s!important}}


/* =====================================================================
   ANDROID AUTONOME 2.0.4 — PLEIN ÉCRAN RÉEL DU PLATEAU
   Le décor couvre la dalle complète. Les contrôles seuls respectent
   l'encoche via env(safe-area-inset-top), sans double marge Android.
   ===================================================================== */
html.lg-android-native,
html.lg-android-native body,
html.lg-android-native #lg-v2,
html.lg-android-native .lgv2{
  width:100%!important;
  height:100dvh!important;
  min-height:100dvh!important;
  margin:0!important;
}
html.lg-android-native .lgv2-circle-screen{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  padding-top:0!important;
  padding-bottom:0!important;
  margin:0!important;
}
html.lg-android-native .lgv2-circle-screen .lgv2-circle-stage{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  margin:0!important;
  /* 7.0.63 — `padding-top:0!important` RETIRE. Il datait de l'epoque ou la
     place etait une IMAGE de fond ; depuis 6.97, c'est le padding-top du
     stage (lot 7.0.3x, sans !important) qui reserve la hauteur du cercle
     au-dessus des plaques. Ce zero forcait la plaque a demarrer en haut de
     l'ecran et a recouvrir l'anneau et le decor : dans l'application, on ne
     voyait plus que la plaque. Mesure au banc (393x800) : plaque a 0 px au
     lieu de 350 px, centre du cercle occupe par la plaque. */
  background-position:center top!important;
}
html.lg-android-native .lgv2-circle-screen .lgv2-sound-toggle.is-floating,
html.lg-android-native .lgv2-circle-screen .lgv2-player-settings-btn,
html.lg-android-native .lgv2-circle-screen .lgv2-host-settings-btn{
  top:calc(10px + env(safe-area-inset-top))!important;
}

/* ====================================================================
   Android 2.0.6 — PARAMÈTRES NARRATEUR PLEIN ÉCRAN
   Écran dédié (pas un modal) : proportions compactes et régulières.
   ==================================================================== */
.lgv2-host-settings-page{
  position:absolute;inset:0;z-index:120;height:100%;min-height:0;overflow:hidden;
  display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:7px;
  padding:calc(8px + env(safe-area-inset-top)) 10px calc(8px + env(safe-area-inset-bottom));
  background:
    linear-gradient(180deg,rgba(247,235,213,.965),rgba(241,220,186,.975)),
    url('../images/village-hero.webp') center/cover no-repeat;
  color:#40251c;
}
.lgv2-host-settings-page::before{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 0 3px #7c1027,inset 0 0 0 4px rgba(205,166,99,.7)}
.lgv2-host-settings-page__head{position:relative;z-index:1;min-height:57px;display:grid;grid-template-columns:40px minmax(0,1fr) 38px;align-items:center;gap:9px;padding:5px 7px;border:1px solid rgba(194,151,84,.62);border-radius:17px;background:rgba(255,250,240,.94);box-shadow:0 5px 14px rgba(78,45,28,.09)}
.lgv2-host-settings-page__gear{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(145deg,#8e1732,#670b22);border:1px solid #c99c59;color:#f0d28d;box-shadow:inset 0 0 0 1px rgba(255,225,171,.12)}
.lgv2-host-settings-page__gear svg{width:18px;height:18px;fill:currentColor}
.lgv2-host-settings-page__head>div{min-width:0}.lgv2-host-settings-page__head small{display:block;font:800 7.68px/1 var(--sans);letter-spacing:.2em;color:#846c56;margin-bottom:2px}.lgv2-host-settings-page__head h1{margin:0;font:800 clamp(14.72px,4.2vw,18.88px)/1.05 var(--serif);color:#68152a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lgv2-host-settings-page__head p{margin:3px 0 0;font-size:8.16px;color:#7d6957}
.lgv2-host-settings-page__close{width:36px;height:36px;border-radius:50%;border:1px solid #d2b278;background:#fff8ea;color:#7c1027;display:grid;place-items:center;cursor:pointer;box-shadow:0 3px 8px rgba(69,38,23,.08)}.lgv2-host-settings-page__close svg{width:15px;height:15px}

.lgv2-host-settings-page__body{position:relative;z-index:1;min-height:0;overflow:auto;overscroll-behavior:contain;display:grid;grid-template-rows:auto auto auto auto;align-content:start;gap:7px;scrollbar-width:none}.lgv2-host-settings-page__body::-webkit-scrollbar{display:none}
.lgv2-host-settings-page__assist{min-height:72px;display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:9px;padding:9px 10px;border:1px solid #c69857;border-radius:17px;background:linear-gradient(155deg,#8c1530,#691025);color:#fff1da;box-shadow:0 7px 15px rgba(87,10,28,.18),inset 0 1px 0 rgba(255,225,171,.16)}
.lgv2-host-settings-page__assist.is-on{background:linear-gradient(155deg,#1d6638,#174c2c);border-color:#8bc69b}.lgv2-host-settings-page__assist>span{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);color:#f3d58f}.lgv2-host-settings-page__assist>span svg{width:17px;height:17px;fill:currentColor}.lgv2-host-settings-page__assist div{min-width:0}.lgv2-host-settings-page__assist small{display:block;font:800 7.2px/1 var(--sans);letter-spacing:.16em;opacity:.83}.lgv2-host-settings-page__assist b{display:block;margin-top:4px;font:800 13.28px/1 var(--serif)}.lgv2-host-settings-page__assist p{margin:3px 0 0;font-size:8px;line-height:1.2;opacity:.88}.lgv2-host-settings-page__assist>button{min-width:84px;height:34px;padding:0 10px;border:1px solid rgba(238,205,141,.72);border-radius:11px;background:rgba(75,7,25,.28);color:#fff0cd;font:800 7.84px/1 var(--serif);letter-spacing:.08em;cursor:pointer}.lgv2-host-settings-page__assist.is-on>button{background:rgba(7,48,24,.3)}

.lgv2-host-settings-page__group{padding:6px 7px 7px;border:1px solid rgba(194,151,84,.55);border-radius:17px;background:rgba(255,249,237,.92);box-shadow:0 4px 12px rgba(78,45,28,.06),inset 0 0 0 1px rgba(255,255,255,.55)}
.lgv2-host-settings-page__group>h2{margin:0 0 3px;display:flex;align-items:center;justify-content:center;gap:8px;font:800 9.12px/1 var(--serif);letter-spacing:.11em;color:#6d1429;white-space:nowrap}.lgv2-host-settings-page__group>h2::before,.lgv2-host-settings-page__group>h2::after{content:"";height:1px;flex:1;max-width:62px;background:linear-gradient(90deg,transparent,#c8a164)}.lgv2-host-settings-page__group>h2::after{background:linear-gradient(90deg,#c8a164,transparent)}

/* Générales : petites icônes 32px et bascules 46x25. */
.lgv2-host-settings-page__rows{display:grid;gap:0}.lgv2-host-settings-page__rows .lgv2-setting-card{min-height:44px;grid-template-columns:35px minmax(0,1fr) auto;gap:8px;padding:4px 6px;border-top:1px solid rgba(200,161,100,.26)}.lgv2-host-settings-page__rows .lgv2-setting-card:first-child{border-top:0}.lgv2-host-settings-page__rows .lgv2-setting-card__icon{width:32px;height:32px;border-width:1px;box-shadow:inset 0 0 0 1px rgba(43,7,17,.45),0 2px 5px rgba(70,20,20,.16)}.lgv2-host-settings-page__rows .lgv2-setting-card__icon svg{width:14px;height:14px}.lgv2-host-settings-page__rows .lgv2-setting-card__copy b{font-size:9.76px;letter-spacing:.04em}.lgv2-host-settings-page__rows .lgv2-setting-card__copy small{font-size:7.36px;margin-top:2px}.lgv2-host-settings-page__rows .lgv2-game-toggle{width:46px;height:25px;padding:2px}.lgv2-host-settings-page__rows .lgv2-game-toggle i{width:19px;height:19px}.lgv2-host-settings-page__rows .lgv2-game-toggle.is-on i{transform:translateX(21px)}.lgv2-host-settings-page__rows .lgv2-setting-shortcut{min-width:68px;height:30px;min-height:30px;padding:0 8px;border-radius:10px;font-size:7.52px;letter-spacing:.09em}

/* Durées : 2 × 2, petits médaillons et boutons carrés 28px. */
.lgv2-host-settings-page__timer-grid{display:grid;grid-template-columns:1fr 1fr;gap:3px 6px}.lgv2-host-settings-page__timer-grid .lgv2-setting-step-card.is-column{min-height:66px;padding:3px 2px 5px;gap:2px;border:0;border-top:1px solid rgba(200,161,100,.24)}.lgv2-host-settings-page__timer-grid .lgv2-setting-step-card.is-column:nth-child(-n+2){border-top:0}.lgv2-host-settings-page__timer-grid .lgv2-setting-card__icon{width:30px;height:30px;border-width:1px}.lgv2-host-settings-page__timer-grid .lgv2-setting-card__icon svg{width:13px;height:13px}.lgv2-host-settings-page__timer-grid .lgv2-setting-card__copy b{font-size:8.8px}.lgv2-host-settings-page__timer-grid .lgv2-setting-card__copy small{display:none}.lgv2-host-settings-page__timer-grid .lgv2-game-stepper{grid-template-columns:28px minmax(26px,auto) auto 28px;gap:3px;justify-self:center}.lgv2-host-settings-page__timer-grid .lgv2-game-stepper button{width:28px;height:28px;border-radius:9px;background:linear-gradient(160deg,#8f1d38,#650b24);border-color:#caa15f;color:#fbe7b7;font-size:14.4px}.lgv2-host-settings-page__timer-grid .lgv2-game-stepper strong{min-width:26px;font-size:11.52px}.lgv2-host-settings-page__timer-grid .lgv2-game-stepper em{font-size:6.72px}

/* Règles : deux rangées fines pour garder toute la page visible. */
.lgv2-host-settings-page__rule-grid{display:grid;gap:0}.lgv2-host-settings-page__rule-grid .lgv2-setting-step-card{min-height:45px;grid-template-columns:35px minmax(0,1fr) auto;gap:8px;padding:4px 6px;border-top:1px solid rgba(200,161,100,.26)}.lgv2-host-settings-page__rule-grid .lgv2-setting-step-card:first-child{border-top:0}.lgv2-host-settings-page__rule-grid .lgv2-setting-card__icon{width:32px;height:32px;border-width:1px}.lgv2-host-settings-page__rule-grid .lgv2-setting-card__icon svg{width:14px;height:14px}.lgv2-host-settings-page__rule-grid .lgv2-setting-card__copy b{font-size:9.28px}.lgv2-host-settings-page__rule-grid .lgv2-setting-card__copy small{font-size:6.88px}.lgv2-host-settings-page__rule-grid .lgv2-game-stepper{grid-template-columns:28px minmax(24px,auto) 28px;gap:4px}.lgv2-host-settings-page__rule-grid .lgv2-game-stepper em{display:none}.lgv2-host-settings-page__rule-grid .lgv2-game-stepper button{width:28px;height:28px;border-radius:9px;background:linear-gradient(160deg,#8f1d38,#650b24);border-color:#caa15f;color:#fbe7b7;font-size:14.4px}.lgv2-host-settings-page__rule-grid .lgv2-game-stepper strong{min-width:24px;font-size:11.52px}

.lgv2-host-settings-page__foot{position:relative;z-index:1;min-height:42px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}.lgv2-host-settings-page__foot .lgv2-settings-save{position:static;justify-self:start;padding:5px 8px;background:rgba(255,249,237,.9);font-size:6.88px}.lgv2-host-settings-page__foot>button{height:36px;padding:0 16px;border:1px solid #caa15f;border-radius:12px;background:linear-gradient(160deg,#8f1d38,#650b24);color:#fff0cf;font:800 8.8px/1 var(--serif);letter-spacing:.08em;cursor:pointer;box-shadow:0 4px 9px rgba(91,8,29,.16)}

/* Les anciens styles de modal 2.0.5 ne doivent jamais agir sur cette page. */
.lgv2-host-settings-page .lgv2-host-settings-root,.lgv2-host-settings-page .lgv2-host-settings-sheet{display:none!important}

/* Sur les écrans très courts, on conserve les mêmes proportions et on autorise
   uniquement le corps central à défiler, jamais l'en-tête ni le retour. */
@media(max-height:700px){
  .lgv2-host-settings-page{gap:4px;padding-top:calc(5px + env(safe-area-inset-top));padding-bottom:calc(5px + env(safe-area-inset-bottom))}
  .lgv2-host-settings-page__head{min-height:50px}.lgv2-host-settings-page__assist{min-height:62px;padding-block:6px}.lgv2-host-settings-page__group{padding-block:4px}.lgv2-host-settings-page__rows .lgv2-setting-card{min-height:39px}.lgv2-host-settings-page__timer-grid .lgv2-setting-step-card.is-column{min-height:58px}.lgv2-host-settings-page__rule-grid .lgv2-setting-step-card{min-height:40px}
}

/* 2.0.7 — réglages Narrateur réellement interactifs pendant la partie. */
.lgv2-host-settings-page button{touch-action:manipulation;-webkit-tap-highlight-color:transparent;pointer-events:auto}
.lgv2-host-settings-page__rule-grid .is-setting-locked{opacity:.52;filter:saturate(.65)}
.lgv2-host-settings-page__rule-grid .is-setting-locked .lgv2-game-stepper button{cursor:not-allowed}
.lgv2-host-settings-page__hint{margin:5px 4px 0;text-align:center;color:#826f5f;font:600 6.88px/1.25 var(--sans)}

/* ====================================================================
   6.26.4 / Android 2.0.8 — Gestion premium de la partie (Narrateur)
   ==================================================================== */
.lgv2-room-management-shortcut .lgv2-setting-shortcut{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:5px}
.lgv2-room-management-shortcut .lgv2-setting-shortcut em{min-width:17px;height:17px;padding:0 5px;border-radius:999px;background:#f4d58d;color:#671026;font:800 7.36px/17px var(--sans);font-style:normal}

.lgv2-room-admin-page{position:relative;width:100%;height:100%;min-height:0;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:7px;padding:calc(6px + env(safe-area-inset-top)) 7px calc(6px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#faf3e5 0%,#f6e7cc 100%);border-inline:3px solid #7c1027;color:#4d382e}
.lgv2-room-admin-page::before{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(200,161,100,.72)}
.lgv2-room-admin-head{position:relative;z-index:1;min-height:58px;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:9px;padding:6px 8px;border:1px solid rgba(194,151,84,.62);border-radius:17px;background:rgba(255,250,240,.96);box-shadow:0 5px 14px rgba(78,45,28,.09)}
.lgv2-room-admin-head>button{width:36px;height:36px;border:1px solid #d2b278;border-radius:50%;background:#fff8ea;color:#7c1027;display:grid;place-items:center;cursor:pointer}.lgv2-room-admin-head>button svg{width:16px;height:16px}
.lgv2-room-admin-head>div{min-width:0}.lgv2-room-admin-head small{display:block;font:800 7.52px/1 var(--sans);letter-spacing:.19em;color:#846c56;margin-bottom:2px}.lgv2-room-admin-head h1{margin:0;color:#68152a;font:800 clamp(15.2px,4.2vw,18.88px)/1.05 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lgv2-room-admin-head p{margin:3px 0 0;color:#7d6957;font-size:8px}
.lgv2-room-admin-head__status{height:28px;padding:0 8px;border:1px solid rgba(67,141,82,.32);border-radius:999px;background:#f5fbf4;color:#3d7548;display:flex;align-items:center;gap:5px;font:800 6.88px/1 var(--sans);letter-spacing:.1em}.lgv2-room-admin-head__status i{width:7px;height:7px;border-radius:50%;background:#55ad64;box-shadow:0 0 0 3px rgba(85,173,100,.12)}

.lgv2-room-admin-body{position:relative;z-index:1;min-height:0;overflow:auto;overscroll-behavior:contain;display:grid;align-content:start;gap:7px;scrollbar-width:none}.lgv2-room-admin-body::-webkit-scrollbar{display:none}
.lgv2-room-admin-code{min-height:76px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;border:1px solid #c99d5c;border-radius:18px;background:linear-gradient(150deg,#7c1027,#961a36);color:#fff1d6;box-shadow:0 7px 17px rgba(92,10,30,.18)}
.lgv2-room-admin-code>div small{display:block;font:800 7.2px/1 var(--sans);letter-spacing:.18em;opacity:.8}.lgv2-room-admin-code>div b{display:block;margin-top:3px;font:800 24.8px/1 var(--serif);letter-spacing:.08em;font-variant-numeric:tabular-nums}.lgv2-room-admin-code>div span{display:block;margin-top:4px;font-size:7.68px;opacity:.82}.lgv2-room-admin-code>button{width:70px;height:48px;border:1px solid rgba(242,211,151,.75);border-radius:13px;background:rgba(74,7,25,.3);color:#fff0ca;display:grid;place-items:center;align-content:center;gap:3px;cursor:pointer}.lgv2-room-admin-code>button svg{width:16px;height:16px}.lgv2-room-admin-code>button b{font:800 6.88px/1 var(--sans);letter-spacing:.1em}

.lgv2-room-admin-section{padding:7px;border:1px solid rgba(194,151,84,.55);border-radius:18px;background:rgba(255,249,237,.94);box-shadow:0 4px 12px rgba(78,45,28,.06),inset 0 0 0 1px rgba(255,255,255,.55)}
.lgv2-room-admin-section>header{min-height:35px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 4px 5px}.lgv2-room-admin-section>header small{display:block;color:#947a60;font:800 6.72px/1 var(--sans);letter-spacing:.17em;margin-bottom:2px}.lgv2-room-admin-section>header h2{margin:0;color:#69162a;font:800 11.52px/1 var(--serif)}.lgv2-room-admin-section>header>span{min-width:31px;height:25px;padding:0 7px;border:1px solid #d2b278;border-radius:999px;background:#fff9ed;color:#7c1027;display:grid;place-items:center;font:800 8.8px/1 var(--serif)}
.lgv2-room-admin-lock{margin:0 3px 6px;padding:6px 8px;border-radius:10px;background:#f6eadc;color:#8a5a3a;font-size:7.68px;line-height:1.25}
.lgv2-room-admin-request-list{display:grid;gap:5px;max-height:210px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#d0aa70 transparent}
.lgv2-room-admin-request{min-height:54px;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:8px;padding:5px 6px;border-top:1px solid rgba(200,161,100,.23)}.lgv2-room-admin-request:first-child{border-top:0}
.lgv2-room-admin-avatar{position:relative;width:36px;height:36px;border-radius:50%;padding:2px;background:linear-gradient(#d6ae6a,#7c1027)}.lgv2-room-admin-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;background:#eee}.lgv2-room-admin-avatar i{position:absolute;right:0;bottom:0;width:9px;height:9px;border-radius:50%;border:2px solid #fff6e7;background:#51ae68}.lgv2-room-admin-avatar i.is-offline{background:#aa9384}
.lgv2-room-admin-request>div:nth-child(2){min-width:0}.lgv2-room-admin-request>div:nth-child(2) b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#4e332b;font:800 9.92px/1.1 var(--serif)}.lgv2-room-admin-request>div:nth-child(2) small{display:block;margin-top:3px;color:#887361;font-size:7.04px}
.lgv2-room-admin-request__actions{display:flex;align-items:center;gap:5px}.lgv2-room-admin-request__actions button{height:32px;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px}.lgv2-room-admin-request__actions button svg{width:13px;height:13px}.lgv2-room-admin-request__actions .is-reject{width:32px;border:1px solid #d7b88a;background:#fff8ec;color:#7c1027}.lgv2-room-admin-request__actions .is-approve{min-width:78px;padding:0 9px;border:1px solid #b88e50;background:linear-gradient(155deg,#17703c,#215b37);color:#eef9ef;font:800 6.88px/1 var(--sans);letter-spacing:.08em}.lgv2-room-admin-request__actions button:disabled{opacity:.42;cursor:not-allowed}
.lgv2-room-admin-empty{min-height:72px;display:grid;place-items:center;align-content:center;gap:4px;text-align:center;color:#8b7563}.lgv2-room-admin-empty svg{width:22px;height:22px;color:#b38a55}.lgv2-room-admin-empty b{font:800 9.28px/1 var(--serif);color:#684c3e}.lgv2-room-admin-empty small{font-size:7.04px}

.lgv2-room-admin-danger{min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;border:1px solid rgba(148,32,51,.28);border-radius:16px;background:linear-gradient(180deg,#fff8ef,#f9eadf)}.lgv2-room-admin-danger>div{min-width:0;display:flex;align-items:center;gap:8px}.lgv2-room-admin-danger>div>span{width:34px;height:34px;flex:none;border-radius:11px;display:grid;place-items:center;background:#f3d9d9;color:#89182c}.lgv2-room-admin-danger>div>span svg{width:15px;height:15px}.lgv2-room-admin-danger b{display:block;color:#781528;font:800 9.92px/1 var(--serif)}.lgv2-room-admin-danger small{display:block;margin-top:3px;color:#8b6b61;font-size:6.88px}.lgv2-room-admin-danger>button{height:32px;padding:0 12px;border:1px solid #b58360;border-radius:10px;background:linear-gradient(155deg,#7c1027,#5b0b1d);color:#fff0d4;font:800 7.04px/1 var(--sans);letter-spacing:.08em;cursor:pointer}
.lgv2-room-admin-foot{position:relative;z-index:1;min-height:39px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:7px}.lgv2-room-admin-foot>span{display:flex;align-items:center;gap:6px;color:#6f8065;font-size:6.88px}.lgv2-room-admin-foot>span i{width:7px;height:7px;border-radius:50%;background:#56ac64}.lgv2-room-admin-foot>button{height:35px;padding:0 13px;border:1px solid #caa15f;border-radius:11px;background:linear-gradient(160deg,#8f1d38,#650b24);color:#fff0cf;font:800 7.84px/1 var(--serif);letter-spacing:.07em;cursor:pointer}

.lgv2-room-close-confirm{position:fixed;inset:0;z-index:220;display:grid;place-items:center;padding:22px}.lgv2-room-close-confirm__scrim{position:absolute;inset:0;background:rgba(17,7,12,.64)}.lgv2-room-close-confirm>section{position:relative;width:min(92vw,350px);padding:20px 18px 17px;border:1px solid #d0a45e;border-radius:20px;background:linear-gradient(180deg,#fffaf0,#f7e9d6);text-align:center;box-shadow:0 25px 70px rgba(20,5,10,.45)}.lgv2-room-close-confirm>section>span{width:46px;height:46px;margin:0 auto 10px;border-radius:50%;display:grid;place-items:center;background:#7c1027;color:#f5d58d}.lgv2-room-close-confirm>section>span svg{width:20px;height:20px}.lgv2-room-close-confirm small{display:block;color:#a18160;font:800 7.2px/1 var(--sans);letter-spacing:.18em}.lgv2-room-close-confirm h2{margin:7px 0 5px;color:#68152a;font:800 16px/1.1 var(--serif)}.lgv2-room-close-confirm p{margin:0;color:#776151;font-size:9.12px;line-height:1.4}.lgv2-room-close-confirm>section>div{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:15px}.lgv2-room-close-confirm>section>div button{height:38px;border-radius:11px;font:800 7.68px/1 var(--sans);letter-spacing:.07em;cursor:pointer}.lgv2-room-close-confirm>section>div button:first-child{border:1px solid #d2b68b;background:#fffaf1;color:#6d5445}.lgv2-room-close-confirm>section>div .is-danger{border:1px solid #a96f50;background:linear-gradient(155deg,#8e1832,#5d0d20);color:#fff0d5}

.lgv2-admission-screen{width:100%;height:100%;display:grid;place-items:center;padding:calc(18px + env(safe-area-inset-top)) 16px calc(18px + env(safe-area-inset-bottom));background:radial-gradient(circle at 50% 18%,rgba(178,132,72,.18),transparent 34%),linear-gradient(180deg,#0b0e18,#070910);color:#f4e6c9}.lgv2-admission-card{width:min(100%,390px);padding:23px 18px 18px;border:1px solid rgba(213,172,98,.56);border-radius:25px;background:linear-gradient(180deg,rgba(31,22,28,.96),rgba(17,13,20,.97));box-shadow:0 28px 80px rgba(0,0,0,.42);text-align:center}.lgv2-admission-card__seal{width:58px;height:58px;margin:0 auto 12px;border-radius:19px;display:grid;place-items:center;background:linear-gradient(145deg,#8e1732,#5e0b20);border:1px solid #d0a75e;color:#f0d18a}.lgv2-admission-card__seal svg{width:24px;height:24px}.lgv2-admission-card>small{display:block;color:#c8a568;font:800 7.84px/1 var(--sans);letter-spacing:.2em}.lgv2-admission-card h1{margin:8px 0 7px;font:800 21.6px/1.08 var(--serif);color:#fff0d0}.lgv2-admission-card>p{margin:0 auto;max-width:310px;color:#cfc2ae;font-size:10.08px;line-height:1.5}
.lgv2-admission-profile{margin:17px 0 9px;padding:8px 10px;display:grid;grid-template-columns:42px minmax(0,1fr) 9px;align-items:center;gap:9px;border:1px solid rgba(213,172,98,.24);border-radius:15px;background:rgba(255,255,255,.035);text-align:left}.lgv2-admission-profile img{width:40px;height:40px;border-radius:50%;object-fit:cover;border:2px solid #c9a05a}.lgv2-admission-profile b{display:block;color:#f4e2bf;font:800 11.2px/1 var(--serif)}.lgv2-admission-profile small{display:block;margin-top:3px;color:#9d8f7c;font-size:7.68px}.lgv2-admission-profile i{width:9px;height:9px;border-radius:50%;background:#54b26b;box-shadow:0 0 0 4px rgba(84,178,107,.09)}
.lgv2-admission-code{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px 11px;border-radius:15px;background:#f8edd9;color:#5a3a2d;text-align:left}.lgv2-admission-code small{display:block;color:#8e775d;font:800 6.72px/1 var(--sans);letter-spacing:.15em}.lgv2-admission-code b{display:block;margin-top:3px;color:#781629;font:800 17.6px/1 var(--serif);letter-spacing:.08em}.lgv2-admission-code button{width:67px;height:42px;border:1px solid #c79d5c;border-radius:11px;background:linear-gradient(155deg,#8f1833,#630b22);color:#fff0ce;display:grid;place-items:center;align-content:center;gap:2px}.lgv2-admission-code button svg{width:14px;height:14px}.lgv2-admission-code button span{font:800 6.4px/1 var(--sans);letter-spacing:.08em}
.lgv2-admission-live{margin:12px 0;display:flex;align-items:center;justify-content:center;gap:7px;color:#aeb7a6;font-size:8px}.lgv2-admission-live i{width:8px;height:8px;border-radius:50%;background:#55ad65;box-shadow:0 0 0 4px rgba(85,173,101,.08);animation:lg-admission-pulse 1.5s ease-in-out infinite}.lgv2-admission-cancel,.lgv2-admission-home{width:100%;height:42px;border-radius:12px;border:1px solid rgba(210,170,101,.52);background:rgba(124,16,39,.2);color:#f2ddba;font:800 8.32px/1 var(--sans);letter-spacing:.1em;cursor:pointer}.lgv2-admission-home{margin-top:17px;background:linear-gradient(155deg,#8e1832,#5d0d20)}.lgv2-admission-screen.is-rejected .lgv2-admission-card__seal{background:#5e1b25}.lgv2-admission-screen.is-closed .lgv2-admission-card__seal{background:#473724}
@keyframes lg-admission-pulse{50%{opacity:.45;transform:scale(.88)}}
@media (prefers-reduced-motion:reduce){.lgv2-admission-live i{animation:none}}

@media (max-height:690px){
  .lgv2-room-admin-page{gap:4px;padding-top:calc(4px + env(safe-area-inset-top));padding-bottom:calc(4px + env(safe-area-inset-bottom))}
  .lgv2-room-admin-head{min-height:51px}.lgv2-room-admin-code{min-height:64px;padding-block:7px}.lgv2-room-admin-request-list{max-height:145px}.lgv2-room-admin-danger{min-height:49px}.lgv2-room-admin-foot{min-height:34px}
}

/* 6.27.0 — Gestion Narrateur / modération mobile-first */
.lgv2-room-admin-page{height:100%;min-height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:linear-gradient(180deg,#fff9ed,#f7e8cb);overflow:hidden;padding:calc(8px + env(safe-area-inset-top)) 8px calc(8px + env(safe-area-inset-bottom));box-sizing:border-box}
.lgv2-room-admin-head{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid #d6b67b;border-radius:20px;background:#fffaf0}.lgv2-room-admin-head>button{width:42px;height:42px;border-radius:50%;border:1px solid #d4b779;background:#fff8e8;color:#7c1027}.lgv2-room-admin-head h1{font-size:clamp(18.4px,5.2vw,24.8px);margin:0;color:#6c1726}.lgv2-room-admin-head p,.lgv2-room-admin-head small{margin:2px 0 0;color:#806d5a}.lgv2-room-admin-head__status{padding:8px 10px;border-radius:999px;background:#edf7ee;color:#43824b;font-weight:700;font-size:11.2px}.lgv2-room-admin-head__status i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#55b866;margin-right:5px}
.lgv2-room-admin-body{min-height:0;overflow-y:auto;overflow-x:hidden;display:grid;align-content:start;gap:10px;padding:10px 0 14px}.lgv2-room-admin-code{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:14px 16px;border-radius:20px;background:linear-gradient(145deg,#9b1733,#761025);color:#fff2da;border:1px solid #c89f5d}.lgv2-room-admin-code small,.lgv2-room-admin-code span{display:block}.lgv2-room-admin-code b{font:700 clamp(28.8px,9vw,40px)/1 var(--serif);letter-spacing:.08em}.lgv2-room-admin-code button{min-width:88px;min-height:44px;border-radius:14px;border:1px solid #d8b36c;background:#fff2d4;color:#741126;font-weight:800}.lgv2-room-admin-code button svg{width:16px;height:16px}
.lgv2-room-admin-section{border:1px solid #dbc393;border-radius:20px;background:rgba(255,251,242,.96);padding:12px}.lgv2-room-admin-section>header{display:flex;align-items:center;justify-content:space-between;padding:0 2px 10px}.lgv2-room-admin-section>header h2{margin:2px 0 0;color:#6b1b29;font:700 16.8px/1 var(--serif)}.lgv2-room-admin-section>header small{color:#9b8264;font-weight:800;letter-spacing:.15em}.lgv2-room-admin-section>header>span{min-width:34px;height:28px;border-radius:999px;background:#7c1027;color:#fff2da;display:grid;place-items:center;font-weight:800}.lgv2-room-admin-request-list{display:grid;gap:8px}.lgv2-admin-person{display:grid;grid-template-columns:48px minmax(0,1fr);gap:9px;align-items:center;padding:10px;border-radius:16px;background:#fffdf8;border:1px solid rgba(124,16,39,.10)}.lgv2-admin-person__avatar{position:relative;width:46px;height:46px}.lgv2-admin-person__avatar img{width:46px;height:46px;border-radius:50%;object-fit:cover;border:2px solid #9c773c}.lgv2-admin-person__copy{min-width:0}.lgv2-admin-person__copy b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#502d27}.lgv2-admin-person__copy small{display:block;color:#8a7768;font-size:10.88px;line-height:1.25;margin-top:2px}.lgv2-admin-person__actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:7px}.lgv2-admin-person__actions button{min-height:40px;border-radius:12px;font-weight:800;font-size:10.88px;letter-spacing:.08em}.lgv2-admin-person__actions .is-approve{background:#287a49;color:#fff;border:1px solid #1f623b}.lgv2-admin-person__actions .is-reject,.lgv2-admin-person__actions .is-eject{background:#8b1730;color:#fff;border:1px solid #6f1026}.lgv2-admin-person__actions .is-warn{background:#f2c84b;color:#4d3810;border:1px solid #c89d23}.lgv2-card-badge.is-yellow{position:absolute;right:-7px;top:-4px;background:#ffd84d;color:#4b3500;border:1px solid #b88b12;border-radius:4px;padding:2px 3px;font:900 6.72px/1 var(--sans);box-shadow:0 2px 5px rgba(0,0,0,.22)}
.lgv2-room-admin-danger{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:12px;border-radius:18px;background:#fff0ef;border:1px solid #e8b2ad}.lgv2-room-admin-danger>div{display:flex;align-items:center;gap:9px}.lgv2-room-admin-danger>button{min-height:40px;padding:0 12px;border-radius:12px;background:#8b1730;color:#fff;border:none;font-weight:800}.lgv2-room-admin-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:7px}.lgv2-room-admin-foot>button{min-height:44px;padding:0 18px;border-radius:14px;background:#8b1730;color:#fff4df;border:1px solid #c79c5c;font-weight:800}.lgv2-room-admin-foot>span{font-size:10.4px;color:#73826b}.lgv2-room-admin-foot i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#57b568;margin-right:5px}
.lgv2-avatar-yellow-card{position:absolute;right:-4px;top:2px;width:10px;height:15px;border-radius:2px;background:#ffd836;border:1px solid #9d7600;box-shadow:0 2px 4px rgba(0,0,0,.35);z-index:8}.lgv2-moderation-banner{position:fixed;left:8px;right:8px;top:calc(8px + env(safe-area-inset-top));z-index:110;display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:14px;background:#9e162e;color:#fff4ea;box-shadow:0 8px 22px rgba(80,5,20,.35);font-size:11.52px}.lgv2-moderation-banner b{white-space:nowrap;color:#ffd84d}.lgv2-moderation-strikes{margin:14px 0;padding:12px;border-radius:14px;background:#fff0e9;border:1px solid #e7b4a8;color:#7c1027}.lgv2-moderation-strikes b,.lgv2-moderation-strikes small{display:block}
@media(min-width:560px){.lgv2-admin-person{grid-template-columns:52px minmax(0,1fr) auto}.lgv2-admin-person__actions{grid-column:auto;display:flex}.lgv2-admin-person__actions button{min-width:92px}}

/* ====================================================================
   6.27.1 — Admissions après lancement + modération visible
   Mobile-first : aucun contenu horizontal ne doit sortir de l'écran.
   ==================================================================== */
.lgv2-room-admin-page{border-inline:0!important;padding-inline:max(8px,env(safe-area-inset-left)) max(8px,env(safe-area-inset-right))!important}
.lgv2-room-admin-body{width:100%;max-width:720px;margin:0 auto;box-sizing:border-box}
.lgv2-room-admin-head,.lgv2-room-admin-foot{width:100%;max-width:720px;margin-inline:auto;box-sizing:border-box}
.lgv2-room-admin-section>header p{margin:4px 0 0;color:#8a7460;font-size:9.92px;line-height:1.2}
.lgv2-admin-person{width:100%;box-sizing:border-box;grid-template-columns:48px minmax(0,1fr);overflow:hidden}
.lgv2-admin-person__actions{width:100%;min-width:0}
.lgv2-admin-person__actions.is-admission-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:7px}
.lgv2-admin-person__actions.is-admission-actions .is-reject{grid-column:1/-1}
.lgv2-admin-person__actions.is-admission-actions button{width:100%;min-width:0;min-height:42px;padding:0 8px;border-radius:12px;font:800 10.56px/1 var(--sans);letter-spacing:.07em;display:flex;align-items:center;justify-content:center;gap:6px}
.lgv2-admin-person__actions.is-admission-actions button svg{width:15px;height:15px;flex:none}
.lgv2-admin-person__actions.is-admission-actions .is-play{background:linear-gradient(155deg,#227747,#185d37);color:#fff;border:1px solid #17532f}
.lgv2-admin-person__actions.is-admission-actions .is-watch{background:linear-gradient(155deg,#69502f,#4e3920);color:#fff3d6;border:1px solid #947044}
.lgv2-admin-person__actions.is-admission-actions .is-reject{background:linear-gradient(155deg,#941b36,#711027);color:#fff;border:1px solid #681026}
.lgv2-admin-person__actions.is-admission-actions button:disabled{filter:grayscale(.45);opacity:.45}
.lgv2-admin-person__note{grid-column:1/-1;display:block;padding:2px 4px 0;color:#8a6b50;font-size:9.28px;line-height:1.35}
.lgv2-admin-person__actions.is-moderation-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:7px}
.lgv2-admin-person__actions.is-moderation-actions button{min-height:40px;width:100%;border-radius:12px;font-size:10.4px}
.lgv2-admin-person.is-spectator{background:linear-gradient(180deg,#fffdf8,#f7f0e4)}
.lgv2-room-admin-empty{width:100%;min-width:0;padding:18px 10px;box-sizing:border-box;overflow:hidden}
.lgv2-room-admin-empty b,.lgv2-room-admin-empty small{max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:center}
.lgv2-room-admin-code{width:100%;box-sizing:border-box;overflow:hidden}
.lgv2-room-admin-code>div{min-width:0}.lgv2-room-admin-code>div span{white-space:normal}
.lgv2-card-badge.is-yellow,.lgv2-avatar-yellow-card{background:#ffd82f!important;border:1px solid #8c6800!important;box-shadow:0 2px 6px rgba(0,0,0,.34)!important}
.lgv2-avatar-yellow-card{right:-6px!important;top:-1px!important;width:13px!important;height:19px!important;border-radius:2px!important;transform:rotate(7deg)}
.lgv2-moderation-banner{left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));top:calc(8px + env(safe-area-inset-top));padding:9px 11px;border-radius:14px;background:linear-gradient(145deg,#a01630,#7b1026);display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:9px;color:#fff7ee;box-shadow:0 8px 24px rgba(81,5,20,.38)}
.lgv2-moderation-banner__card{display:block;width:13px;height:19px;border-radius:2px;background:#ffd82f;border:1px solid #8c6800;transform:rotate(-5deg);box-shadow:0 2px 4px rgba(0,0,0,.28)}
.lgv2-moderation-banner div{min-width:0}.lgv2-moderation-banner b{display:block;color:#ffe16e;font:900 9.92px/1.15 var(--sans);letter-spacing:.06em;white-space:normal}.lgv2-moderation-banner small{display:block;margin-top:3px;color:#fff6ed;font-size:9.76px;line-height:1.3}
.lgv2-spectator-banner{position:fixed;z-index:42;left:50%;transform:translateX(-50%);top:calc(9px + env(safe-area-inset-top));width:min(calc(100% - 112px),420px);min-height:40px;padding:7px 11px;border-radius:14px;border:1px solid rgba(221,187,122,.5);background:rgba(16,18,27,.82);color:#f1d59a;display:flex;align-items:center;gap:8px;box-shadow:0 8px 20px rgba(0,0,0,.26);pointer-events:none}
.lgv2-spectator-banner svg{width:17px;height:17px;flex:none}.lgv2-spectator-banner span{min-width:0}.lgv2-spectator-banner b{display:block;font:800 8.96px/1 var(--sans);letter-spacing:.12em}.lgv2-spectator-banner small{display:block;margin-top:3px;font-size:8.32px;line-height:1.2;color:#e7dbc6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:390px){
  .lgv2-room-admin-head{grid-template-columns:40px minmax(0,1fr) auto;padding:8px}.lgv2-room-admin-head__status{padding:7px;font-size:9.92px}
  .lgv2-room-admin-code{grid-template-columns:minmax(0,1fr) 72px;padding:12px}.lgv2-room-admin-code button{min-width:68px!important;width:68px!important}
  .lgv2-admin-person{grid-template-columns:42px minmax(0,1fr);padding:8px}.lgv2-admin-person__avatar,.lgv2-admin-person__avatar img{width:40px;height:40px}
  .lgv2-admin-person__actions.is-admission-actions button{font-size:9.76px;letter-spacing:.04em;padding:0 5px}
  .lgv2-room-admin-foot>span{display:none}.lgv2-room-admin-foot>button{width:100%}
  .lgv2-spectator-banner{width:min(calc(100% - 102px),390px)}
}
.lgv2-host-settings-btn{position:absolute}.lgv2-host-settings-btn>em{position:absolute;right:-5px;top:-5px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:#d8203f;color:#fff;border:2px solid #fff6e8;display:grid;place-items:center;font:900 8.8px/1 var(--sans);font-style:normal;box-shadow:0 3px 8px rgba(87,4,22,.3)}


/* 6.27.2 — Carton jaune synchronisé globalement sur tous les écrans. */
.lgv2-global-moderation-banner{position:fixed;z-index:9999;top:calc(8px + env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));min-height:54px;display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:10px;padding:10px 12px;border:1px solid rgba(255,218,99,.42);border-radius:15px;background:linear-gradient(145deg,#a41631,#741025);color:#fff8ef;box-shadow:0 10px 30px rgba(73,4,18,.42);pointer-events:none;animation:lgv2-warning-in .24s ease-out}
.lgv2-global-moderation-banner .lgv2-moderation-banner__card{display:block;width:14px;height:20px;border-radius:2px;background:#ffda32;border:1px solid #896400;transform:rotate(-5deg);box-shadow:0 2px 5px rgba(0,0,0,.3)}
.lgv2-global-moderation-banner div{min-width:0}.lgv2-global-moderation-banner b{display:block;color:#ffe67d;font:900 10.08px/1.2 var(--sans);letter-spacing:.055em}.lgv2-global-moderation-banner small{display:block;margin-top:3px;color:#fff7ee;font-size:9.92px;line-height:1.35;white-space:normal;overflow-wrap:anywhere}
@keyframes lgv2-warning-in{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.lgv2-global-moderation-banner{animation:none}}

/* =====================================================================
   6.28.0 — SYSTÈME DE LISIBILITÉ ET BOUTONS PREMIUM
   Couche finale volontairement centralisée : elle neutralise les anciennes
   surcharges de couleur qui pouvaient rendre les libellés secondaires
   illisibles, sans modifier la logique ni le balisage des phases de jeu.
   ===================================================================== */
.lgv2{
  --lg-action-red-top:#9b1838;
  --lg-action-red-bottom:#620b24;
  --lg-action-red-text:#fffaf0;
  --lg-action-red-muted:#f7dfc2;
  --lg-action-gold:#f1cf82;
  --lg-action-green-top:#247b48;
  --lg-action-green-bottom:#14542f;
  --lg-action-disabled-top:#4f4141;
  --lg-action-disabled-bottom:#352b2e;
  --lg-action-disabled-text:#eee2d1;
}

/* Les libellés interactifs restent nets, multilignes et non tronqués. */
#lg-v2 button,
#lg-v2 button *{
  box-sizing:border-box;
  text-shadow:none!important;
  -webkit-text-stroke:0!important;
}
#lg-v2 button b,
#lg-v2 button span,
#lg-v2 button small{
  max-width:100%;
  white-space:normal;
  overflow-wrap:anywhere;
}
#lg-v2 button svg{fill:currentColor!important}

/* Choix du sens de parole : contraste AA sur toute la surface grenat. */
.lgv2-circle-screen .lgv2-direction-choice{
  gap:10px;
}
.lgv2-circle-screen .lgv2-direction-choice button{
  min-height:88px;
  padding:11px 10px;
  grid-template-columns:36px minmax(0,1fr);
  grid-template-rows:auto auto;
  column-gap:9px;
  row-gap:5px;
  border:1px solid rgba(241,207,130,.78)!important;
  background:linear-gradient(165deg,var(--lg-action-red-top),var(--lg-action-red-bottom))!important;
  color:var(--lg-action-red-text)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.13),0 8px 18px rgba(57,4,18,.24)!important;
}
.lgv2-circle-screen .lgv2-direction-choice button>i{
  grid-row:1/3;
  width:36px;
  height:36px;
  background:rgba(72,5,24,.34)!important;
  border:1px solid rgba(255,225,159,.16);
  color:var(--lg-action-gold)!important;
  font-size:20.8px;
}
.lgv2-circle-screen .lgv2-direction-choice button>b{
  color:var(--lg-action-red-text)!important;
  font:800 clamp(10.08px,2.65vw,12.16px)/1.18 var(--serif)!important;
  letter-spacing:.075em;
}
.lgv2-circle-screen .lgv2-direction-choice button>small{
  color:var(--lg-action-red-muted)!important;
  font:650 clamp(9.28px,2.35vw,10.88px)/1.32 var(--sans)!important;
  opacity:1!important;
}

/* Les actions grenat/vertes gardent une encre claire, y compris leurs aides. */
.lgv2-circle-screen .lgv2-day-primary,
.lgv2-circle-screen .lgv2-day-pass button,
.lgv2-circle-screen .lgv2-speech-host-actions button,
.lgv2-circle-screen button.is-death,
.lgv2-circle-screen .lgv2-mayor-vote-btn,
.lgv2-circle-screen .lgv2-mayor-candidate-btn:not(.is-done),
.lgv2-room-admin-danger>button,
.lgv2-room-admin-foot>button,
.lgv2-room-close-confirm .is-danger,
.lgv2-admission-home{
  color:var(--lg-action-red-text)!important;
}
.lgv2-circle-screen .lgv2-day-primary small,
.lgv2-circle-screen .lgv2-day-pass button small,
.lgv2-circle-screen .lgv2-speech-host-actions button small,
.lgv2-circle-screen button.is-death small,
.lgv2-circle-screen .lgv2-mayor-vote-btn small,
.lgv2-circle-screen .lgv2-mayor-candidate-btn:not(.is-done) small,
.lgv2-room-admin-danger>button small,
.lgv2-room-admin-foot>button small,
.lgv2-room-close-confirm .is-danger small,
.lgv2-admission-home small{
  color:var(--lg-action-red-muted)!important;
  opacity:1!important;
}
.lgv2 .is-approve,
.lgv2 .is-play,
.lgv2 [data-action*="accept"]{
  color:#f4fff7!important;
}
.lgv2 .is-approve small,
.lgv2 .is-play small,
.lgv2 [data-action*="accept"] small{
  color:#e6f8eb!important;
  opacity:1!important;
}

/* Un bouton désactivé reste identifiable au lieu de devenir transparent. */
.lgv2-circle-screen button:disabled,
.lgv2-room-admin-page button:disabled,
.lgv2-admission-screen button:disabled{
  opacity:1!important;
  filter:none!important;
  cursor:not-allowed!important;
}
.lgv2-circle-screen button:disabled:not(.is-done),
.lgv2-room-admin-page button:disabled,
.lgv2-admission-screen button:disabled{
  background:linear-gradient(165deg,var(--lg-action-disabled-top),var(--lg-action-disabled-bottom))!important;
  border-color:rgba(221,193,145,.46)!important;
  color:var(--lg-action-disabled-text)!important;
}
.lgv2-circle-screen button:disabled:not(.is-done) *,
.lgv2-room-admin-page button:disabled *,
.lgv2-admission-screen button:disabled *{
  color:var(--lg-action-disabled-text)!important;
  opacity:1!important;
}

/* États clavier/tactile visibles, sans décaler les composants. */
#lg-v2 button:focus-visible{
  outline:3px solid #ffe28b!important;
  outline-offset:3px!important;
}
@media(hover:hover){
  #lg-v2 button:not(:disabled){transition:filter .16s ease,box-shadow .16s ease,transform .16s ease}
  #lg-v2 button:not(:disabled):hover{filter:brightness(1.08)}
}
#lg-v2 button:not(:disabled):active{transform:translateY(1px)}

/* Adaptation étroite : une colonne lisible vaut mieux que deux cartes tassées. */
@media(max-width:350px){
  .lgv2-circle-screen .lgv2-direction-choice{grid-template-columns:1fr}
  .lgv2-circle-screen .lgv2-direction-choice button{min-height:74px}
}
@media(max-height:720px) and (min-width:351px){
  .lgv2-circle-screen .lgv2-direction-choice button{min-height:78px;padding-block:9px}
}
@media(prefers-reduced-motion:reduce){
  #lg-v2 button{transition:none!important}
}

/* =====================================================================
   6.28.1 — CORRECTION DÉFINITIVE DES ENCRES D'ACTION
   La règle historique `.lgv2-day-panel button small` possédait davantage
   de spécificité que certaines surcharges 6.28.0. Les sélecteurs ci-dessous
   reprennent le balisage réel et gagnent explicitement la cascade.
   ===================================================================== */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice > button{
  background:linear-gradient(165deg,#9b1838 0%,#620b24 100%)!important;
  border-color:rgba(241,207,130,.82)!important;
  touch-action:manipulation;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice > button.is-pending{
  background:linear-gradient(165deg,#b47a20 0%,#6d3d09 100%)!important;
  box-shadow:0 0 0 2px rgba(255,225,155,.34),0 10px 24px rgba(0,0,0,.32)!important;
  opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice > button > b{
  color:#fffaf0!important;
  opacity:1!important;
  text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice > button > small{
  color:#f7dfc2!important;
  opacity:1!important;
  text-shadow:none!important;
  font-size:clamp(9.6px,2.45vw,11.2px)!important;
  line-height:1.3!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary{
  background:linear-gradient(165deg,#9b1838 0%,#620b24 100%)!important;
  border-color:rgba(241,207,130,.82)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary > span > small{
  color:#f5d99f!important;
  opacity:1!important;
  text-shadow:none!important;
  font-size:clamp(9.28px,2.35vw,10.88px)!important;
  line-height:1.2!important;
  letter-spacing:.11em!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary > span > b{
  color:#fffaf0!important;
  opacity:1!important;
  text-shadow:none!important;
  font-size:clamp(12.16px,3.15vw,14.72px)!important;
  line-height:1.18!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary > svg{
  color:#f4d58e!important;
  fill:currentColor!important;
  opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary:disabled{
  background:linear-gradient(165deg,#5a4248 0%,#392d31 100%)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary:disabled > span > small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary:disabled > span > b{
  color:#f1e5d2!important;
  opacity:1!important;
}

/* ========================================================================
   6.30.0 — TOMBE : BOUTON ENVOYER · TABLEAU DE VOTE COMPLET
   ======================================================================== */

/* 1. LA TOMBE — bouton « envoyer » déformé quand le clavier est ouvert.
      Cause : le tiroir est une grille `auto auto 1fr auto` (entête, membres,
      fil, saisie). Clavier ouvert, la règle `.lgv2-grave-members{display:none}`
      retire la bande des membres du flux : tous les enfants suivants remontent
      d'une rangée. Le fil hérite alors de la rangée `auto` (il s'écrase) et le
      FORMULAIRE hérite de la rangée `1fr` — il s'étire sur toute la hauteur
      libre. L'input et le micro ont une hauteur fixe et restent normaux ; le
      bouton d'envoi, lui, n'en avait aucune : il s'étirait sur 163 px.
      Deux verrous, pour que le défaut ne puisse pas revenir autrement. */
html.is-keyboard .lgv2-grave-drawer{
  /* Le tiroir sait qu'il n'a plus que trois rangées visibles. */
  grid-template-rows:auto minmax(0,1fr) auto!important;
}
.lgv2-grave-compose{
  /* Aucun enfant ne s'étire, quelle que soit la hauteur de la rangée. */
  align-items:center!important;
}
.lgv2-grave-compose>button{
  width:42px!important;
  height:40px!important;
  flex:none;
  align-self:center!important;
  display:grid!important;
  place-items:center!important;
  border-radius:999px!important;
}
.lgv2-grave-recorder>button{
  width:38px;height:38px;flex:none;align-self:center;
  display:grid;place-items:center;border-radius:999px;
}

/* 2. TABLEAU DE VOTE — tout le village{
  max-height:min(38dvh,260px)!important;
  overflow-y:auto!important;
  overscroll-behavior:contain;
  gap:4px;
  padding-right:2px;
  -webkit-overflow-scrolling:touch;
}

/* ========================================================================
   6.33.0 — MAIRE · MARQUES PUBLIQUES · CARTES RÉVÉLÉES
   ======================================================================== */

/* 1. COURONNE DU MAIRE — refonte.
      L'ancienne était un tracé plat, or doux, posé directement sur l'avatar :
      sur le parchemin clair du jour elle se noyait dans le décor. La nouvelle
      est un médaillon circulaire grenat bordé d'or, lisible sur n'importe quel
      fond, avec une couronne perlée à trois pointes. */
.lgv2-avatar-crown{
  position:absolute;z-index:12;left:50%;top:-19px;
  transform:translateX(-50%);
  width:16px;height:16px;
  display:grid;place-items:center;
  pointer-events:none;
  filter:drop-shadow(0 2px 4px rgba(40,14,10,.48));
}
.lgv2-avatar-crown::before{
  content:"";position:absolute;inset:0;
  border-radius:50%;
  background:radial-gradient(circle at 38% 30%,#8c1e36,#4b0f1d 72%);
  border:1.2px solid #f2cd83;
  box-shadow:0 2px 6px rgba(30,8,6,.5),inset 0 1px 0 rgba(255,238,199,.4);
}
.lgv2-avatar-crown svg{
  position:relative;width:9.5px;height:9.5px;margin-top:0;
  color:#ffd97a;
}
.lgv2-avatar-crown svg path,
.lgv2-avatar-crown svg rect{fill:#ffd97a}
.lgv2-avatar-crown svg circle{fill:#fff6e0}
.lgv2-circle-player.is-mayor .lgv2-circle-avatar{
  box-shadow:0 0 0 2.5px #f0c469,0 0 0 4.5px rgba(122,20,42,.85),0 6px 16px rgba(40,14,10,.32);
}

/* 2. MARQUES PUBLIQUES — gel et fiente du Corbeau.
      Plus réservées au Narrateur : elles changent la journée de tout le monde
      (le gelé ne parle ni ne vote, la fiente ajoute deux voix), donc tout le
      village les voit. Deux ancrages distincts pour qu'elles coexistent. */
.lgv2-night-state-badge.is-frozen{
  background:linear-gradient(160deg,#7fb9d6,#3d6f8f);
  color:#f2fbff;border-color:#eaf7ff;
  box-shadow:0 3px 8px rgba(20,52,72,.45);
}
.lgv2-night-state-badge.is-ravened{
  left:-8px;right:auto;top:auto;bottom:-7px;
  background:linear-gradient(160deg,#8a6244,#4a2e1c);
  color:#f6e4cf;border-color:#f3ead9;
  box-shadow:0 3px 8px rgba(40,22,10,.5);
}
.lgv2-night-state-badge.is-ravened svg{width:13px;height:13px;fill:currentColor}

/* 3. VERDICT DU VILLAGE — une seule liste compacte, lisible par tous.
   6.99.5 : les anciennes grandes cartes répétaient « VOTE VALIDÉ » sous
   chaque portrait et forçaient 4/6 colonnes. Le verdict devient un registre
   unique : petit portrait, nom, coche ; le ×2 du Maire est le seul badge. */
.lgv2-day-panel.is-vote-verdict{align-content:start;justify-items:stretch;text-align:center;gap:8px;overflow:hidden}
.lgv2-day-panel.is-vote-verdict>.lgv2-day-orbit{justify-self:center}
.lgv2-day-panel.is-vote-verdict>.lgv2-result-intro{margin:0 auto;max-width:340px;color:#6d5b4c;font-size:9.2px;line-height:1.35}
.lgv2-day-panel.is-vote-verdict>.lgv2-result-intro>b{display:block;color:#5d3426;font:800 10.8px/1.18 var(--serif)}
.lgv2-result-weighted{display:block;margin-top:3px;color:#9a7447;font-size:6.7px;letter-spacing:.04em}
.lgv2-result-voters{width:100%;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid #d5b77f;border-radius:15px;background:linear-gradient(180deg,#fffaf0,#f3e4cd);box-shadow:inset 0 1px 0 rgba(255,255,255,.95),0 7px 18px rgba(75,46,24,.08);text-align:left}
.lgv2-result-voters>header{min-height:42px;display:grid;grid-template-columns:29px minmax(0,1fr) auto;gap:7px;align-items:center;padding:6px 8px;border-bottom:1px solid rgba(153,109,54,.18);background:rgba(255,255,255,.38)}
.lgv2-result-voters>header>span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(160deg,#8e2039,#651126);color:#f5d392}
.lgv2-result-voters>header>span svg{width:14px;height:14px;fill:currentColor}
.lgv2-result-voters>header small{display:block;color:#9a7447;font-size:5.8px;letter-spacing:.15em;font-weight:850}
.lgv2-result-voters>header b{display:block;margin-top:2px;min-width:0;white-space:normal;overflow:visible;color:#5f1b2b;font:850 9.6px/1.08 var(--serif)}
.lgv2-result-voters>header>em{min-width:27px;height:24px;padding:0 7px;border-radius:999px;display:grid;place-items:center;background:#ede0c8;border:1px solid #dac092;color:#76552f;font:850 8px/1 var(--serif);font-style:normal}
.lgv2-result-voters__grid{min-height:0;max-height:min(27dvh,205px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-content:start;gap:4px;padding:6px}
.lgv2-result-voter{position:relative;min-width:0;min-height:31px;display:grid;grid-template-columns:23px minmax(0,1fr);align-items:center;gap:3px;padding:3px;border:1px solid rgba(194,155,97,.34);border-radius:10px;background:rgba(255,255,255,.52);box-shadow:inset 0 1px 0 rgba(255,255,255,.75);animation:lgv2-result-voter-in .28s cubic-bezier(.2,.75,.25,1) both}
.lgv2-result-voter__avatar{position:relative;width:23px;height:23px;display:block}
.lgv2-result-voter__avatar>img{width:23px;height:23px;border-radius:50%;object-fit:cover;border:1.5px solid #d1a85f}
.lgv2-result-voter__avatar>i{position:absolute;right:-2px;bottom:-2px;width:11px;height:11px;border-radius:50%;display:grid;place-items:center;background:#638c5f;color:#fff;border:1.5px solid #fff6e7}
.lgv2-result-voter__avatar>i svg{width:6px;height:6px;fill:currentColor}
.lgv2-result-voter>b{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;color:#4e3025;font:800 7px/1.05 var(--serif)}
.lgv2-result-voter>em{position:absolute;right:2px;top:2px;min-width:17px;height:12px;padding:0 3px;border-radius:999px;display:grid;place-items:center;background:#7d1830;color:#ffe8ba;font:850 5.4px/1 var(--sans);font-style:normal}
.lgv2-result-voter.is-mayor-double>b{padding-right:15px}
.lgv2-result-voters.is-empty{display:grid;place-items:center;min-height:72px;padding:10px}.lgv2-result-voters.is-empty p{margin:0;color:#7a6656;font-size:8.5px;text-align:center}
.lgv2-result-reveal-btn{width:100%;margin-top:1px;min-height:54px}
.lgv2-result-reveal-btn span{min-width:0}.lgv2-result-reveal-btn span b{white-space:normal;line-height:1.05}
.lgv2-day-panel.is-reveal-transition{align-content:center;opacity:.22;pointer-events:none}
.lgv2-day-panel.is-verdict-complete{align-content:center;gap:10px}
.lgv2-day-wait.is-reveal{display:flex;align-items:center;justify-content:center;gap:7px}.lgv2-day-wait.is-reveal i{width:7px;height:7px;border-radius:50%;background:#8d1b35;animation:lgv2-result-wait 1.15s ease-in-out 4}
@keyframes lgv2-result-wait{50%{opacity:.3;transform:scale(.72)}}
@keyframes lgv2-result-voter-in{from{opacity:0;transform:translateY(4px) scale(.98)}}
@media(max-width:350px){.lgv2-result-voters__grid{gap:3px;padding:5px}.lgv2-result-voter{grid-template-columns:21px minmax(0,1fr);gap:2px;padding:3px 2px}.lgv2-result-voter__avatar,.lgv2-result-voter__avatar>img{width:21px;height:21px}.lgv2-result-voter>b{font-size:6.5px}}
@media(max-height:720px){.lgv2-result-voters__grid{max-height:min(24dvh,168px)}.lgv2-result-voters>header{min-height:39px}.lgv2-result-reveal-btn{min-height:50px}}
@media(prefers-reduced-motion:reduce){.lgv2-day-wait.is-reveal i{animation:none;transition-duration:.01ms}}

/* 3. CARTE RÉVÉLÉE — éliminé du vote, Chasseur, Contagieux. */
.lgv2-revealed-card{
  display:flex;align-items:center;gap:11px;
  margin:11px 0 3px;padding:10px 12px;border-radius:14px;
  border:1.5px solid var(--bp-or-doux);
  background:linear-gradient(150deg,rgba(38,20,14,.92),rgba(24,12,9,.94));
  box-shadow:inset 0 1px 0 rgba(255,236,196,.16),0 6px 16px rgba(20,8,6,.3);
  text-align:left;
}
.lgv2-revealed-card__avatar{
  width:46px;height:46px;flex:none;border-radius:50%;object-fit:cover;
  border:2px solid rgba(240,196,105,.75);
}
.lgv2-revealed-card__copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.lgv2-revealed-card__copy small{font-size:7.04px;letter-spacing:.12em;color:#e6c48c;font-weight:800}
.lgv2-revealed-card__copy b{font:800 13.12px/1.15 var(--serif);color:#fbf0dc}
.lgv2-revealed-card__copy span{font-size:8px;line-height:1.4;color:#e0cfb5}
.lgv2-revealed-card.is-loups{border-color:rgba(226,128,116,.65)}
.lgv2-revealed-card.is-loups .lgv2-revealed-card__copy small{color:#f5b3a7}
.lgv2-revealed-card.is-loups .lgv2-revealed-card__avatar{border-color:rgba(226,128,116,.85)}
.lgv2-revealed-card.is-solo{border-color:rgba(176,158,228,.65)}
.lgv2-revealed-card.is-solo .lgv2-revealed-card__copy small{color:#cfc0f5}
.lgv2-revealed-card.is-solo .lgv2-revealed-card__avatar{border-color:rgba(176,158,228,.85)}

/* 4. ATTENTE PENDANT UN POUVOIR À LA MORT. */
.lgv2-interrupt-waiting{
  display:flex;align-items:center;gap:8px;
  margin-top:9px;padding:8px 11px;border-radius:11px;
  border:1px solid rgba(236,204,142,.3);
  background:rgba(28,14,10,.6);
  font-size:8.32px;line-height:1.45;color:#f0e2ca;text-align:left;
}
.lgv2-interrupt-waiting i{
  width:8px;height:8px;flex:none;border-radius:50%;background:#e9ad55;
  animation:lgv2-interrupt-blink 1.3s ease-in-out infinite;
}
@keyframes lgv2-interrupt-blink{0%,100%{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}

/* ========================================================================
   6.34.0 — CONFORMITE GOOGLE PLAY
   Divulgation micro · Signalement · Blocage · Effacement des données
   ======================================================================== */

/**
 * FENETRES BLOQUANTES — divulgation micro, signalement, effacement.
 *
 * BUG CORRIGE ICI. Elles etaient a z-index:9000, alors que le jeu monte
 * jusqu'a 100001. Elles s'affichaient donc DERRIERE le cercle du village :
 * le joueur appuyait sur « prendre la parole », la fenetre s'ouvrait sans
 * qu'il la voie, la promesse restait en attente, et rien ne se passait.
 * Puis le delai de parole expirait et l'ecran changeait tout seul —
 * exactement le « ca clique pas, puis tout disparait » signale.
 *
 * On passe au-dessus de tout, definitivement.
 */
.lgv2-mic-notice,
.lgv2-report-overlay{
  position:fixed;inset:0;z-index:2147483000;
  display:grid;place-items:center;padding:20px;
  background:rgba(14,6,4,.72);
  backdrop-filter:blur(3px);
}
.lgv2-mic-notice__card,
.lgv2-report-card{
  width:100%;max-width:330px;
  padding:20px 18px 16px;border-radius:20px;
  border:1.5px solid var(--bp-or-doux);
  background:linear-gradient(155deg,#2a1610,#1a0d09);
  box-shadow:0 20px 48px rgba(10,4,3,.6),inset 0 1px 0 rgba(255,236,196,.18);
  text-align:left;color:#f3e6d0;
}
.lgv2-mic-notice__seal{
  display:grid;place-items:center;width:44px;height:44px;margin-bottom:10px;
  border-radius:50%;background:radial-gradient(circle at 38% 30%,#8c1e36,#4b0f1d 72%);
  border:1.5px solid #f2cd83;
}
.lgv2-mic-notice__seal svg{width:22px;height:22px;fill:#ffd97a}
.lgv2-mic-notice__card small,
.lgv2-report-card small{display:block;font-size:7.04px;letter-spacing:.13em;color:#e6c48c;font-weight:800;margin-bottom:5px}
.lgv2-mic-notice__card h2,
.lgv2-report-card h2{font:800 16px/1.2 var(--serif);color:#fbf0dc;margin:0 0 8px}
.lgv2-mic-notice__card p,
.lgv2-report-card p{font-size:8.96px;line-height:1.55;color:#e6d5bb;margin:0 0 8px}
.lgv2-mic-notice__card ul,
.lgv2-erase-list{margin:0 0 12px;padding-left:16px}
.lgv2-mic-notice__card li,
.lgv2-erase-list li{font-size:8.64px;line-height:1.6;color:#e0cfb5}
.lgv2-erase-note{font-size:8px!important;color:#cbb99e!important;font-style:italic}
.lgv2-mic-notice__actions,
.lgv2-report-actions{display:flex;gap:8px;margin-top:12px}
.lgv2-mic-notice__actions button,
.lgv2-report-actions button{
  flex:1;padding:11px 8px;border-radius:11px;cursor:pointer;
  border:1.5px solid rgba(236,204,142,.42);
  background:rgba(48,24,17,.9);color:#f0dfc4;
  font:800 8px/1 var(--sans,inherit);letter-spacing:.06em;
}
.lgv2-mic-notice__actions button.is-primary,
.lgv2-report-actions button.is-primary{
  background:linear-gradient(180deg,#8f2038,#5d1122);border-color:#f2cd83;color:#fff3d9;
}
.lgv2-report-actions button.is-danger{
  background:linear-gradient(180deg,#8d2a1c,#571409);border-color:#e79a72;color:#ffe6d6;
}
.lgv2-report-reasons{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}
.lgv2-report-reasons label{
  display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;
  border:1px solid rgba(236,204,142,.24);background:rgba(38,20,14,.6);
  font-size:8.64px;color:#ecdcc2;cursor:pointer;
}
.lgv2-report-reasons input{accent-color:#c8a05a;flex:none}
.lgv2-report-card textarea{
  width:100%;min-height:64px;padding:9px 10px;border-radius:10px;resize:vertical;
  border:1px solid rgba(236,204,142,.3);background:rgba(20,10,8,.75);
  color:#f2e5cf;font-size:8.8px;font-family:inherit;
}
.lgv2-pcard__safety{display:flex;gap:7px;margin-top:11px}
.lgv2-pcard__safety-btn{
  flex:1;padding:9px 6px;border-radius:10px;cursor:pointer;
  border:1.5px solid rgba(236,204,142,.4);
  background:rgba(44,22,16,.85);color:#f0dfc4;
  font:800 7.36px/1 var(--sans,inherit);letter-spacing:.07em;
}
.lgv2-pcard__safety-btn.is-report{border-color:rgba(226,128,116,.55);color:#f7c8bd}
.lgv2-pcard__safety-btn[disabled]{opacity:.5;cursor:default}
.lgv2-privacy-block{
  margin:12px 14px 4px;padding:12px;border-radius:13px;
  border:1px solid rgba(236,204,142,.28);background:rgba(30,15,11,.5);
}
.lgv2-privacy-block b{display:block;font:800 9.28px/1.2 var(--serif);color:#f5e7cf;margin-bottom:4px}
.lgv2-privacy-block p{font-size:8px;line-height:1.5;color:#dcc9ad;margin:0 0 9px}
.lgv2-privacy-block a{color:#e9c37e;text-decoration:underline}
.lgv2-erase-btn{
  width:100%;padding:10px;border-radius:10px;cursor:pointer;
  border:1.5px solid rgba(226,128,116,.5);background:rgba(70,22,16,.6);color:#f7c8bd;
  font:800 7.68px/1 var(--sans,inherit);letter-spacing:.07em;
}

/* ========================================================================
   6.39.0 — LA PLACE DU VILLAGE (mode écrit)
   ======================================================================== */

/* Onglet fermé : discret, mais visible quand c'est à vous de parler. */
.lgv2-village-tab{
  position:fixed;left:12px;bottom:74px;z-index:60;
  display:flex;align-items:center;gap:7px;
  padding:9px 13px;border-radius:999px;cursor:pointer;
  border:1.5px solid var(--bp-or-doux);
  background:linear-gradient(180deg,rgba(58,30,20,.95),rgba(34,17,12,.95));
  color:var(--bp-btn-encre);font:800 8px/1 var(--sans,inherit);letter-spacing:.07em;
  box-shadow:0 6px 18px rgba(20,8,6,.4);
}
.lgv2-village-tab svg{width:15px;height:15px;fill:#e9c37e}
.lgv2-village-tab i{
  font-style:normal;font-size:7.04px;padding:2px 6px;border-radius:999px;
  background:#7c142d;color:#ffe9c9;
}
.lgv2-village-tab.is-speaking{
  border-color:#f0c469;
  background:linear-gradient(180deg,#8f2038,#5d1122);
  color:#fff3d9;
  animation:lgv2-village-call 2.2s ease-in-out infinite;
}
@keyframes lgv2-village-call{0%,100%{box-shadow:0 6px 18px rgba(20,8,6,.4)}50%{box-shadow:0 6px 26px rgba(240,196,105,.55)}}

.lgv2-village-drawer{
  position:fixed;left:0;right:0;bottom:0;z-index:70;
  display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;
  height:min(64dvh,540px);
  border-radius:20px 20px 0 0;
  border:1.5px solid rgba(236,204,142,.45);border-bottom:0;
  background:linear-gradient(180deg,#2b1710,#180c08);
  box-shadow:0 -14px 40px rgba(10,4,3,.6);
}
.lgv2-village-drawer>header{
  display:flex;align-items:center;gap:10px;padding:13px 14px 11px;
  border-bottom:1px solid rgba(236,204,142,.24);
}
.lgv2-village-drawer>header span svg{width:20px;height:20px;fill:#e9c37e}
.lgv2-village-drawer>header small{display:block;font-size:6.72px;letter-spacing:.13em;color:#e0b978;font-weight:800}
.lgv2-village-drawer>header h3{margin:0;font:800 13.44px/1.1 var(--serif);color:#fbf0dc}
.lgv2-village-drawer>header button{
  margin-left:auto;width:34px;height:34px;flex:none;border-radius:50%;
  display:grid;place-items:center;cursor:pointer;
  border:1.5px solid rgba(236,204,142,.4);background:rgba(48,24,17,.9);color:#f0dfc4;
}
.lgv2-village-feed{
  overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  padding:12px 13px;display:flex;flex-direction:column;gap:9px;
}
.lgv2-village-empty{
  margin:auto;text-align:center;font-size:8.64px;line-height:1.5;color:#c9b699;font-style:italic;
}
.lgv2-village-msg{display:flex;gap:9px;align-items:flex-start}
.lgv2-village-msg img{width:31px;height:31px;flex:none;border-radius:50%;object-fit:cover;border:1.5px solid rgba(236,204,142,.4)}
.lgv2-village-msg>div{
  flex:1;min-width:0;padding:8px 11px;border-radius:13px;
  border:1px solid rgba(236,204,142,.24);background:rgba(44,23,16,.72);
}
.lgv2-village-msg small{display:block;font-size:7.04px;letter-spacing:.06em;color:#e0b978;font-weight:800;margin-bottom:3px}
.lgv2-village-msg p{margin:0;font-size:9.28px;line-height:1.5;color:#f2e5cf;word-break:break-word}
.lgv2-village-msg.is-me>div{background:rgba(124,20,45,.5);border-color:rgba(240,196,105,.42)}
/* Un mort qui a parlé de son vivant reste lisible, mais on voit qu'il est parti. */
.lgv2-village-msg.is-dead img{filter:grayscale(1);opacity:.6}
.lgv2-village-msg.is-dead>div{opacity:.72}

.lgv2-village-hint{
  margin:0;padding:7px 13px;font-size:7.68px;line-height:1.4;
  color:#cdbb9e;font-style:italic;border-top:1px solid rgba(236,204,142,.18);
}
.lgv2-village-hint.is-mine{color:#f3d9a4;font-style:normal;font-weight:700}

.lgv2-village-compose{
  display:grid;grid-template-columns:1fr 42px 42px;gap:7px;
  align-items:center!important;padding:10px 12px 14px;
}
.lgv2-village-compose.is-hidden{display:none}
.lgv2-village-compose input{
  height:40px;padding:0 13px;border-radius:999px;
  border:1.5px solid rgba(236,204,142,.42);background:rgba(20,10,8,.8);
  color:#f4e8d3;font-size:9.28px;font-family:inherit;
}
.lgv2-village-compose>button{
  width:42px!important;height:40px!important;flex:none;align-self:center!important;
  display:grid!important;place-items:center!important;border-radius:999px!important;
  cursor:pointer;border:1.5px solid rgba(236,204,142,.45);
  background:linear-gradient(180deg,#8f2038,#5d1122);color:#ffe9c9;
}
.lgv2-village-compose>button svg{width:17px;height:17px;fill:currentColor}
.lgv2-village-recorder{
  display:flex;align-items:center;gap:9px;padding:10px 12px 14px;
}

/* ========================================================================
   6.39.1 — CHOIX DU TYPE DE PARTIE : ÉTAT SÉLECTIONNÉ VISIBLE
   ========================================================================
   Le clic fonctionnait : la classe « is-selected » était bien posée et le
   champ game_mode bien mis à jour. Mais AUCUNE règle CSS ne stylait cet
   état — contrairement au genre, aux avatars et aux bulletins de vote, qui
   l'ont tous. Rien ne changeait à l'écran : impossible de savoir quel mode
   était choisi, et le joueur en concluait, à raison, que ça ne marchait pas.
   ======================================================================== */
.lgv2-mode-card{
  position:relative;
  /* La bordure passe de 1px à 2px quand on sélectionne : sans réserver la
     place tout de suite, la carte sauterait d'un pixel au clic. */
  border-width:2px;
  border-color:#dcc09a;
}
.lgv2-mode-card:active{transform:scale(.985)}

.lgv2-mode-card.is-selected{
  border-color:var(--wine,#7c142d);
  background:linear-gradient(165deg,#fffaf1,#f7e9d4);
  box-shadow:0 0 0 3px rgba(124,20,45,.14),0 6px 14px rgba(73,47,30,.14);
  transform:translateY(-1px);
}
.lgv2-mode-card.is-selected>span{
  background:linear-gradient(180deg,#8f2038,#5d1122);
  border-color:#f0c469;
  box-shadow:0 2px 7px rgba(93,17,34,.4);
}
.lgv2-mode-card.is-selected b{color:#5b121f}

/* Pastille de confirmation : le repère le plus lisible d'un coup d'œil. */
.lgv2-mode-card.is-selected::after{
  content:"";
  position:absolute;top:-7px;right:-7px;
  width:22px;height:22px;border-radius:50%;
  background:var(--wine,#7c142d);
  border:2px solid #fffaf1;
  box-shadow:0 2px 6px rgba(60,20,15,.35);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffe9c9'%3E%3Cpath d='M9.6 16.2 5.4 12l-1.4 1.4 5.6 5.6L20.2 8.4l-1.4-1.4z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:center;background-size:14px;
}

/* Repli d'accessibilité : si la classe venait à manquer, aria-pressed
   suffirait à afficher l'état. Deux verrous valent mieux qu'un. */
.lgv2-mode-card[aria-pressed="true"]{
  border-color:var(--wine,#7c142d);
}

/* ========================================================================
   6.40.0 — BARRE DU BAS · PANNEAU DES RÔLES · CORRECTIFS DISCUSSION
   ======================================================================== */

/* 1. L'ENREGISTREUR VOCAL RESTAIT AFFICHÉ EN PERMANENCE.
      Le bloc porte bien l'attribut « hidden », mais la règle
      « display:flex » écrasait le display:none du navigateur. La Tombe avait
      déjà sa parade (.lgv2-grave-recorder[hidden]) ; celle de la place
      manquait. Il ne s'ouvre plus que sur appui du bouton micro. */
.lgv2-village-recorder{display:none}
.lgv2-village-recorder:not([hidden]){
  display:flex;align-items:center;gap:9px;
  padding:9px 12px 13px;
  animation:lgv2-rec-in .18s ease-out;
}
@keyframes lgv2-rec-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* 2. EN-TÊTE DE LA DISCUSSION : une seule ligne au lieu de deux.
      « CANAL PUBLIC » sur une ligne + le titre sur une autre mangeait une
      hauteur précieuse sur un écran de téléphone. */
.lgv2-village-drawer{grid-template-rows:auto minmax(0,1fr) auto auto}
.lgv2-village-drawer>header{padding:9px 12px 8px}
.lgv2-village-drawer>header h3{
  margin:0;font:800 11.2px/1.1 var(--serif);color:#fbf0dc;flex:1;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.lgv2-village-drawer>header span svg{width:17px;height:17px}
/* L'ancienne regle compacte forçait 30x30 et l'emportait sur le nouveau
   bouton de fermeture : elle ne s'applique plus qu'aux autres boutons
   eventuels de l'entete. */
.lgv2-village-drawer>header button:not(.lgv2-drawer-close){width:30px;height:30px}

/* 3. BARRE FIXE DU BAS — deux accès permanents, sans manger le cercle. */
.lgv2-bottom-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  display:grid;grid-template-columns:1fr 1fr;gap:8px;
  padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px));
  /* 6.97.0 — AUCUN FOND : la pierre de la place reste nue derriere les
     boutons. Chaque bouton porte son propre fond ; la section, RIEN. */
  background:none;
  pointer-events:none;
}
.lgv2-bottom-btn{
  pointer-events:auto;position:relative;
  display:flex;align-items:center;justify-content:center;gap:7px;
  height:44px;border-radius:14px;cursor:pointer;
  border:1.5px solid var(--bp-or-doux);
  background:linear-gradient(180deg,var(--bp-btn-1),var(--bp-btn-2));
  color:var(--bp-btn-encre);font:800 8.8px/1 var(--sans,inherit);letter-spacing:.05em;
  box-shadow:0 5px 14px rgba(14,6,4,.42);
}
.lgv2-bottom-btn svg{width:17px;height:17px;fill:#e9c37e;flex:none}
.lgv2-bottom-btn:active{transform:scale(.97)}
.lgv2-bottom-btn i{
  position:absolute;top:-5px;right:8px;font-style:normal;
  font-size:6.72px;padding:2px 6px;border-radius:999px;
  background:#7c142d;color:#ffe9c9;border:1.5px solid #f3ead9;
}
/* C'est à vous de parler : le bouton se signale sans être criard. */
.lgv2-bottom-btn.is-speaking{
  border-color:#f0c469;
  background:linear-gradient(180deg,#8f2038,#5d1122);color:#fff3d9;
}
.lgv2-bottom-btn.is-speaking svg{fill:#ffe9c9}

/* 4. PANNEAU DES RÔLES — trois blocs empilés. */
.lgv2-roles-drawer{
  position:fixed;left:0;right:0;bottom:0;z-index:70;
  display:grid;grid-template-rows:auto minmax(0,1fr);
  /* Le panneau s'adapte a son contenu plutot que d'occuper 70% de l'ecran
     en permanence : le cercle du village reste visible derriere. */
  height:auto;max-height:min(72dvh,620px);
  border-radius:20px 20px 0 0;
  border:1.5px solid rgba(236,204,142,.45);border-bottom:0;
  background:linear-gradient(180deg,#2b1710,#180c08);
  box-shadow:0 -14px 40px rgba(10,4,3,.6);
}
.lgv2-roles-drawer>header{
  display:flex;align-items:center;gap:9px;padding:11px 12px 9px;
  border-bottom:1px solid rgba(236,204,142,.24);
}
.lgv2-roles-drawer>header span svg{width:18px;height:18px;fill:#e9c37e}
.lgv2-roles-drawer>header h3{margin:0;flex:1;font:800 11.84px/1.1 var(--serif);color:#fbf0dc}
.lgv2-roles-drawer>header button{
  width:31px;height:31px;flex:none;border-radius:50%;display:grid;place-items:center;
  cursor:pointer;border:1.5px solid rgba(236,204,142,.4);background:rgba(48,24,17,.9);color:#f0dfc4;
}
.lgv2-roles-body{
  overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  padding:12px 13px calc(16px + env(safe-area-inset-bottom,0px));
}
.lgv2-roles-body h4{
  margin:13px 0 6px;font:800 7.36px/1 var(--sans,inherit);
  letter-spacing:.14em;color:#e0b978;text-transform:uppercase;
}
.lgv2-roles-mine{
  display:grid;justify-items:center;gap:8px;text-align:center;
  padding:12px 10px;border-radius:14px;
  border:1.5px solid rgba(240,196,105,.5);
  background:linear-gradient(150deg,rgba(58,30,20,.95),rgba(30,15,10,.95));
}
.lgv2-roles-mine img{
  width:78px;height:104px;object-fit:cover;
  border-radius:9px;border:1.5px solid rgba(240,196,105,.6);
  box-shadow:0 4px 12px rgba(12,5,3,.5);
}
.lgv2-roles-mine>div{min-width:0;max-width:290px;text-align:center}
.lgv2-roles-mine small{display:block;font-size:7.04px;letter-spacing:.13em;color:#e6c48c;font-weight:800;margin-bottom:3px}
.lgv2-roles-mine b{display:block;font:800 13.6px/1.15 var(--serif);color:#fbf0dc}
.lgv2-roles-mine p{margin:5px 0 0;font-size:8px;line-height:1.4;color:#e0cfb5}
.lgv2-roles-mine.is-loups{border-color:rgba(226,128,116,.7)}
.lgv2-roles-mine.is-loups b{color:#f7c8bd}
.lgv2-roles-mine.is-solo{border-color:rgba(176,158,228,.7)}
.lgv2-roles-mine.is-solo b{color:#cfc0f5}
.lgv2-roles-mine.is-pending{opacity:.8}
/* 7.0.65 — « Voir les rôles » réutilise le composant visuel de la meute. */
.lgv2-roles-pack{display:grid;gap:8px;margin-top:9px;padding:9px 10px 10px;border:1px solid rgba(213,172,99,.42);border-radius:16px;background:linear-gradient(180deg,rgba(47,17,25,.84),rgba(28,13,18,.78));box-shadow:inset 0 1px 0 rgba(255,236,191,.07),0 10px 28px rgba(0,0,0,.16)}
.lgv2-roles-pack>small{font:800 7.52px/1 var(--serif);letter-spacing:.17em;color:#bda078;text-align:center}
.lgv2-roles-pack .lgv2-pack-member{opacity:1;transform:none;animation:none}
.lgv2-roles-pack .lgv2-pack-member>span::after{animation:none}
.lgv2-roles-pack .lgv2-pack-solo{color:#d9c6ad}

/* GRILLE DE CARTES — on reconnaît un rôle à son visuel bien plus vite
   qu'on ne lit son nom.
   CINQ par ligne, pas quatre : à quatre, la composition dépassait la
   hauteur visible (661 px de contenu pour 410 px d'écran) et il fallait
   faire défiler pour voir le village entier. À cinq, tout tient. */
.lgv2-roles-grid{
  display:grid;grid-template-columns:repeat(5,1fr);gap:5px;
}
.lgv2-rolecard{
  position:relative;margin:0;
  display:flex;flex-direction:column;align-items:center;gap:4px;
}
.lgv2-rolecard img{
  width:100%;aspect-ratio:3/4;object-fit:cover;
  border-radius:8px;
  border:1.5px solid rgba(236,204,142,.4);
  box-shadow:0 3px 8px rgba(12,5,3,.42);
  background:rgba(30,15,11,.6);
}
.lgv2-rolecard figcaption{
  font-size:5.76px;line-height:1.15;text-align:center;color:#e4d3b8;
  width:100%;
}
.lgv2-rolecard figcaption b{display:block;font:800 6.4px/1.15 var(--serif);color:#f3e3c8}
.lgv2-rolecard figcaption span{display:block;font-size:5.6px;color:#e0b978;font-weight:700}
/* Le multiplicateur : deux Loups-Garous, ce n'est pas deux cartes. */
.lgv2-rolecard em{
  position:absolute;top:-5px;right:-4px;
  font-style:normal;font-size:5.76px;font-weight:800;
  padding:1px 5px;border-radius:999px;
  background:#7c142d;color:#ffe9c9;border:1.5px solid #f3ead9;
  box-shadow:0 2px 5px rgba(20,8,6,.4);
}
.lgv2-rolecard.is-loups img{border-color:rgba(226,128,116,.65)}
.lgv2-rolecard.is-solo img{border-color:rgba(176,158,228,.65)}

/* Les tombés : carte grisée, le joueur est parti. */
.lgv2-roles-grid.is-fallen .lgv2-rolecard img{filter:grayscale(.85);opacity:.72}
.lgv2-roles-empty{margin:0;font-size:8.32px;color:#c3b096;font-style:italic}

/* 5. BOUTON DE LA TOMBE — remonté au-dessus de la barre, et il change de
      couleur quand le joueur peut y écrire (une discussion s'y est ouverte). */


/* La barre n'est de toute facon rendue que lorsqu'aucun panneau n'est
   ouvert : le combinateur « ~ » masquait aussi les cas ou l'ordre du DOM
   plaçait le panneau avant, et la barre disparaissait a tort. Le controle
   se fait cote JavaScript, la ou l'etat est connu. */

/* Numéro de version visible : savoir en un coup d'œil ce qui tourne
   réellement sur l'appareil, sans ouvrir la console. */
.lgv2-roles-version{
  margin:18px 0 0;text-align:center;
  font-size:7.04px;letter-spacing:.1em;color:#8f7a61;
}

/* ========================================================================
   6.43.0 — LA BARRE DU BAS RECOUVRAIT LE CONTENU
   ========================================================================
   Défaut trouvé à l'audit visuel : la barre fixe « Discussion / Mon rôle »
   introduite en 6.40.0 se pose PAR-DESSUS l'écran de jeu. Sur l'écran des
   candidatures, elle masquait la barre de progression et les emplacements
   de candidats ; sur le vote, la dernière ligne du tableau.

   Un élément fixe en bas doit toujours réserver sa place dans le flux,
   sinon il mange le dernier tiers de chaque panneau.
   ======================================================================== */
.lgv2-circle-screen{
  /* 60px de barre + la zone gestuelle du téléphone + une marge de confort. */
  padding-bottom:calc(68px + env(safe-area-inset-bottom,0px))!important;
}
/* Les panneaux qui défilent doivent aussi finir au-dessus de la barre. */
.lgv2-day-panel,
.lgv2-night-panel,
.lgv2-mayor-stage,
.lgv2-morning-panel,
.lgv2-role-interrupt{
  scroll-margin-bottom:72px;
}
/* Le bouton de La Tombe remonte au-dessus de la barre, pas dessus. */
/* ========================================================================
   6.44.1 — ZONES TACTILES : CORRECTION D'UNE REGRESSION GRAVE
   ========================================================================
   La version 6.44.0 imposait « position:relative » a une liste de boutons
   pour y ancrer une zone tactile invisible. Or plusieurs de ces boutons
   sont « position:absolute » : le reglage du Narrateur et celui du joueur
   sont epingles dans les coins de l'ecran, le bouton de son flotte.

   Les forcer en relative les a fait retomber DANS LE FLUX : ils se sont mis
   a occuper de la place, poussant tout le jeu vers le bas. La moitie haute
   de l'ecran devenait un vide beige, le bouton de son se retrouvait a moitie
   hors cadre, et le panneau du bas passait sous la barre.

   LA LECON : on ne touche jamais au « position » d'un element existant pour
   un besoin cosmetique. On elargit donc la zone tactile par du remplissage
   compense par une marge negative — la surface sensible grandit, la position
   et l'encombrement ne bougent pas d'un pixel.
   ======================================================================== */
.lgv2-copy-code,
.lgv2-sound-toggle,
.lgv2-player-settings-btn,
.lgv2-host-settings-btn,
.lgv2-dashboard-leave{
  /* +6px de surface sensible tout autour, annules par la marge : aucun
     deplacement, aucun changement de taille apparente. */
  padding:6px;
  margin:-6px;
  background-clip:content-box;
}

/* ========================================================================
   6.45.0 — TABLE DES RÔLES DU NARRATEUR
   ========================================================================
   Le Narrateur ne joue pas : il n'a pas de carte. Au lieu d'un bloc
   « Votre rôle » vide de sens, il voit qui joue quoi — avatar, nom, carte.
   Une ligne par joueur, assez compacte pour qu'un village de 18 tienne
   sans faire défiler pendant qu'il anime.
   ======================================================================== */
.lgv2-roles-table{display:flex;flex-direction:column;gap:5px}

.lgv2-roles-row{
  display:grid;
  grid-template-columns:34px minmax(0,1fr) 30px minmax(0,auto);
  align-items:center;gap:8px;
  padding:6px 9px;border-radius:11px;
  border:1px solid rgba(236,204,142,.22);
  background:rgba(44,23,16,.62);
}
.lgv2-roles-row__face{
  width:34px;height:34px;border-radius:50%;object-fit:cover;
  border:1.5px solid rgba(236,204,142,.42);
}
.lgv2-roles-row__who{min-width:0;display:flex;flex-direction:column;gap:1px}
.lgv2-roles-row__who b{
  font:800 9.6px/1.15 var(--serif);color:#f5e7cf;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.lgv2-roles-row__who em{
  font-style:normal;font-size:5.76px;letter-spacing:.08em;
  color:#bda98d;text-transform:uppercase;
}
.lgv2-roles-row__who i{
  font-style:normal;font-size:5.76px;letter-spacing:.08em;
  color:#e0908a;text-transform:uppercase;
}
.lgv2-roles-row__card{
  width:30px;height:40px;object-fit:cover;border-radius:5px;
  border:1px solid rgba(236,204,142,.35);
  background:rgba(28,14,10,.6);
}
.lgv2-roles-row__role{
  font:800 8.32px/1.15 var(--serif);color:#e9d7b8;text-align:right;
  max-width:104px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* Le camp se lit à la couleur, sans avoir à déchiffrer le nom du rôle. */
.lgv2-roles-row.is-loups{border-color:rgba(226,128,116,.55);background:rgba(74,24,20,.6)}
.lgv2-roles-row.is-loups .lgv2-roles-row__role{color:#f7c8bd}
.lgv2-roles-row.is-loups .lgv2-roles-row__card{border-color:rgba(226,128,116,.7)}
.lgv2-roles-row.is-solo{border-color:rgba(176,158,228,.55);background:rgba(48,36,74,.55)}
.lgv2-roles-row.is-solo .lgv2-roles-row__role{color:#cfc0f5}

.lgv2-roles-row.is-dead{opacity:.58}
.lgv2-roles-row.is-dead .lgv2-roles-row__face,
.lgv2-roles-row.is-dead .lgv2-roles-row__card{filter:grayscale(1)}
.lgv2-roles-row.is-dead .lgv2-roles-row__who b{text-decoration:line-through}

.lgv2-roles-body h4.is-first{margin-top:0}

/* ========================================================================
   6.46.0 — SUCCESSION DU MAIRE : L'INTERFACE QUI MANQUAIT
   ========================================================================
   Le serveur gérait la phase depuis la 6.32.0, mais le client ne la
   connaissait pas : quand le Maire mourait, le joueur tombait sur un écran
   que rien ne savait dessiner.
   ======================================================================== */
.lgv2-succession-list{
  display:flex;flex-direction:column;gap:7px;margin-top:12px;
}
.lgv2-succession-pick{
  display:grid;grid-template-columns:40px minmax(0,1fr) 20px;
  align-items:center;gap:11px;
  padding:9px 12px;border-radius:13px;cursor:pointer;
  border:1.5px solid rgba(236,204,142,.42);
  background:linear-gradient(150deg,rgba(58,30,20,.9),rgba(32,16,11,.92));
  color:#f3e3c8;text-align:left;
}
.lgv2-succession-pick img{
  width:40px;height:40px;border-radius:50%;object-fit:cover;
  border:1.5px solid rgba(240,196,105,.6);
}
.lgv2-succession-pick b{font:800 11.2px/1.15 var(--serif);color:#fbf0dc;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgv2-succession-pick svg{width:19px;height:19px;fill:#e9c37e}
.lgv2-succession-pick:active{transform:scale(.985)}

.lgv2-succession-wait{
  display:flex;align-items:center;gap:9px;margin-top:10px;
  padding:9px 12px;border-radius:12px;
  border:1px solid rgba(236,204,142,.28);background:rgba(28,14,10,.55);
  font-size:8.64px;line-height:1.45;color:#ecdcc2;text-align:left;
}
.lgv2-succession-wait i{
  width:8px;height:8px;flex:none;border-radius:50%;background:#e9ad55;
  animation:lgv2-interrupt-blink 1.3s ease-in-out infinite;
}

/* L'écharpe change d'épaules : un moment de jeu, pas une ligne de journal. */
.lgv2-succession-scene{
  position:fixed;inset:0;z-index:2147482000;
  display:grid;place-items:center;padding:24px;
  background:radial-gradient(circle at 50% 45%,rgba(60,20,32,.72),rgba(12,6,4,.9));
  animation:lgv2-succ-in .4s ease-out;
}
.lgv2-succession-scene.is-leaving{animation:lgv2-succ-out .55s ease-in forwards}
@keyframes lgv2-succ-in{from{opacity:0}to{opacity:1}}
@keyframes lgv2-succ-out{to{opacity:0}}
.lgv2-succession-card{
  display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:26px 30px;border-radius:22px;
  border:1.5px solid rgba(240,196,105,.6);
  background:linear-gradient(160deg,rgba(52,26,18,.96),rgba(26,13,9,.97));
  box-shadow:0 24px 60px rgba(8,3,2,.7);
  animation:lgv2-succ-card .6s cubic-bezier(.2,.9,.25,1);
}
@keyframes lgv2-succ-card{from{transform:translateY(22px) scale(.92);opacity:0}to{transform:none;opacity:1}}
.lgv2-succession-crown{
  display:grid;place-items:center;width:52px;height:52px;border-radius:50%;
  background:radial-gradient(circle at 38% 30%,#8c1e36,#4b0f1d 72%);
  border:2px solid #f2cd83;
  animation:lgv2-succ-crown 1.6s ease-in-out infinite;
}
.lgv2-succession-crown svg{width:26px;height:26px;fill:#ffd97a}
@keyframes lgv2-succ-crown{0%,100%{box-shadow:0 0 0 0 rgba(240,196,105,.5)}50%{box-shadow:0 0 0 12px rgba(240,196,105,0)}}
.lgv2-succession-card small{font-size:7.04px;letter-spacing:.14em;color:#e6c48c;font-weight:800}
.lgv2-succession-card img{
  width:74px;height:74px;border-radius:50%;object-fit:cover;
  border:2.5px solid #f0c469;box-shadow:0 6px 18px rgba(10,4,3,.5);
}
.lgv2-succession-card b{font:800 18.4px/1.1 var(--serif);color:#fbf0dc}
.lgv2-succession-card em{font-style:normal;font-size:8.96px;color:#e0cfb5}

/* Confirmation de la cible par la meute. */
.lgv2-wolf-confirm__who{
  display:flex;align-items:center;gap:11px;
  margin:10px 0;padding:9px 12px;border-radius:13px;
  border:1.5px solid rgba(226,128,116,.5);
  background:linear-gradient(150deg,rgba(74,24,20,.85),rgba(34,14,11,.9));
}
.lgv2-wolf-confirm__who img{
  width:42px;height:42px;border-radius:50%;object-fit:cover;
  border:2px solid rgba(226,128,116,.75);
}
.lgv2-wolf-confirm__who b{font:800 13.12px/1.1 var(--serif);color:#f7c8bd}

/* ========================================================================
   6.46.0 — LA MEUTE VOIT QUI VISE QUI
   ======================================================================== */
.lgv2-wolf-ballots{
  display:flex;flex-direction:column;gap:5px;margin-top:10px;
}
.lgv2-wolf-ballot{
  display:flex;align-items:center;gap:7px;
  padding:6px 10px;border-radius:11px;
  border:1px solid rgba(226,128,116,.28);
  background:rgba(48,20,16,.55);
  font-size:8px;color:#e8d5c4;
}
.lgv2-wolf-ballot img{
  width:24px;height:24px;flex:none;border-radius:50%;object-fit:cover;
  border:1.5px solid rgba(226,128,116,.5);
}
.lgv2-wolf-ballot img.is-prey{border-color:rgba(240,196,105,.65)}
.lgv2-wolf-ballot b{font:800 8.64px/1.1 var(--serif);color:#f7dcc9;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:88px}
.lgv2-wolf-ballot span{font-size:7.04px;color:#c9a08f;letter-spacing:.05em}
.lgv2-wolf-ballot em{font-style:italic;font-size:7.36px;color:#b79b8c}
.lgv2-wolf-ballot.is-waiting{opacity:.66}

/* Annonce reservee a la meute : un nouveau membre. */
.lgv2-pack-news{
  display:flex;align-items:flex-start;gap:9px;
  margin-top:10px;padding:9px 12px;border-radius:12px;
  border:1.5px solid rgba(240,196,105,.45);
  background:linear-gradient(150deg,rgba(84,28,22,.85),rgba(38,16,12,.9));
  font-size:8.32px;line-height:1.45;color:#f5e2cf;text-align:left;
}
.lgv2-pack-news svg{width:18px;height:18px;flex:none;fill:#f0c469;margin-top:1px}
.lgv2-pack-news b{color:#ffd9a8}

/* Note du Narrateur : role d'origine et cible de l'Enfant sauvage. */
.lgv2-roles-row__role i{
  display:block;font-style:normal;font-weight:600;
  font-size:6.08px;line-height:1.25;color:#c6ae8d;margin-top:2px;
  white-space:normal;
}

/* ========================================================================
   6.47.0 — TROIS BOUTONS FIXES · BOUTON DE FERMETURE · CARTE DE LA VOYANTE
   ======================================================================== */

/* 1. La barre passe à trois colonnes. Le bouton flottant de La Tombe est
      supprimé : un élément flottant finit toujours par recouvrir quelque
      chose. Ici chacun a sa place et la barre réserve sa hauteur. */
.lgv2-bottom-bar.is-three{grid-template-columns:1fr 1fr 1fr;gap:6px}
.lgv2-bottom-bar.is-three .lgv2-bottom-btn{font-size:8px;gap:5px}
.lgv2-bottom-bar.is-three .lgv2-bottom-btn svg{width:16px;height:16px}
.lgv2-bottom-btn.is-grave svg{fill:#cbb9a2}
/* La Tombe s'allume dès que le joueur peut y écrire. */
.lgv2-bottom-btn.is-grave.is-live{
  border-color:#8ad0e8;
  background:linear-gradient(180deg,#1f5f7a,#123c50);
  color:#e9fbff;
}
.lgv2-bottom-btn.is-grave.is-live svg{fill:#bfeaf8}

/* 2. BOUTON DE FERMETURE des tiroirs — il était trop petit et mal centré.
      Cercle net, icône centrée, zone tactile confortable. */
.lgv2-drawer-close{
  margin-left:auto;
  width:34px;height:34px;flex:none;
  display:grid;place-items:center;
  border-radius:50%;cursor:pointer;
  border:1.5px solid var(--bp-or-doux);
  background:rgba(58,30,20,.92);
  color:#f3e3c8;
  padding:0;
  -webkit-tap-highlight-color:transparent;
}
.lgv2-drawer-close svg{width:15px;height:15px;fill:currentColor;display:block}
.lgv2-drawer-close:active{transform:scale(.92);background:rgba(124,20,45,.75)}
/* Zone sensible élargie sans déplacer le bouton ni changer sa taille. */
.lgv2-drawer-close::after{
  content:"";position:absolute;
  width:48px;height:48px;border-radius:50%;
}

/* 3. LA CARTE DE LA VOYANTE SE RETOURNE.
      Elle lisait son résultat dans une ligne de texte, alors que c'est LE
      moment de sa nuit. */
.lgv2-vision-scene{
  position:fixed;inset:0;z-index:2147482500;
  display:grid;place-items:center;padding:26px;
  background:radial-gradient(circle at 50% 42%,rgba(30,22,58,.82),rgba(8,5,14,.94));
  animation:lgv2-succ-in .35s ease-out;
}
.lgv2-vision-flip{
  display:flex;flex-direction:column;align-items:center;gap:16px;
  /* Sans perspective, la rotation est un simple miroir plat : la carte ne
     « tourne » pas, elle se retourne comme une image inversée. */
  perspective:1100px;
}
.lgv2-vision-card{
  width:150px;aspect-ratio:3/4;
  position:relative;transform-style:preserve-3d;
  transition:transform .85s cubic-bezier(.3,.9,.25,1);
  /* PAS de filter ici : un filtre force l'aplatissement du contexte 3D, et
     le dos de la carte restait visible après la rotation. L'ombre est
     portée par les faces elles-mêmes. */
}
.lgv2-vision-card.is-turned{transform:rotateY(180deg)}
.lgv2-vision-face{
  position:absolute;inset:0;border-radius:12px;
  backface-visibility:hidden;-webkit-backface-visibility:hidden;
  display:grid;place-items:center;overflow:hidden;
  border:2px solid rgba(240,196,105,.6);
  box-shadow:0 18px 40px rgba(4,2,10,.7);
}
.lgv2-vision-face.is-back{
  background:linear-gradient(150deg,#3a2464,#1a1030);
}
.lgv2-vision-face.is-back span svg{width:48px;height:48px;fill:#c9b6f5;opacity:.85}
.lgv2-vision-face.is-front{transform:rotateY(180deg);background:#1a0e0a}
.lgv2-vision-face.is-front img{width:100%;height:100%;object-fit:cover}

.lgv2-vision-verdict{
  margin:0;text-align:center;display:flex;flex-direction:column;gap:2px;
  animation:lgv2-vision-text .5s ease-out 1s both;
}
@keyframes lgv2-vision-text{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.lgv2-vision-verdict b{font:800 15.2px/1.15 var(--serif);color:#fbf0dc}
.lgv2-vision-verdict span{font-size:8px;letter-spacing:.14em;color:#b7a8dd;text-transform:uppercase}
.lgv2-vision-verdict strong{font:800 20.8px/1.1 var(--serif);color:#d9c6ff}

.lgv2-vision-ok{
  padding:12px 34px;border-radius:999px;cursor:pointer;
  border:1.5px solid rgba(217,198,255,.6);
  background:linear-gradient(180deg,#4a2f86,#2a1a52);
  color:#efe6ff;font:800 9.28px/1 var(--sans,inherit);letter-spacing:.09em;
  animation:lgv2-vision-text .5s ease-out 1.3s both;
}
.lgv2-vision-ok:active{transform:scale(.96)}
.lgv2-throne-fly{position:absolute;left:50%;top:-6px;width:46px;height:46px;
  transform:translate(-50%,-40px) scale(.6);color:#f0cd7a;opacity:0;
  animation:lgv2-throne-drop 1.1s cubic-bezier(.25,1.2,.4,1) both .3s}
.lgv2-throne-fly svg{width:100%;height:100%}
@keyframes lgv2-throne-drop{
  0%{transform:translate(-50%,-90px) scale(.5) rotate(-18deg);opacity:0}
  60%{opacity:1}
  100%{transform:translate(-50%,26px) scale(1) rotate(0);opacity:1}}
@media (prefers-reduced-motion:reduce){
  .lgv2-throne-fly{animation-duration:.01ms!important}}

/* ==========================================================================
   ALIEN — chasse nocturne multi-identifications (7.0.10)
   Cible -> vraies cartes visibles -> confirmation -> verdict.
   ========================================================================== */
.lgv2-night-panel.is-alien-intent,.lgv2-night-panel.is-alien,.lgv2-night-panel.is-alien-result{
  border-color:rgba(87,214,126,.68);box-shadow:0 18px 42px rgba(0,0,0,.28),inset 0 1px 0 rgba(225,255,234,.18)}
.lgv2-night-panel.is-alien{grid-template-rows:auto auto minmax(0,1fr) auto;align-content:stretch;overflow-y:auto;gap:8px}
.lgv2-alien-target{display:flex;align-items:center;justify-content:center;gap:10px;min-height:54px;margin:0;padding:6px 10px;border-radius:13px;background:linear-gradient(180deg,#e8f5e8,#dcefdc);border:1.5px solid #7ca982;color:#284d35}
.lgv2-alien-target img{width:44px;height:44px;border-radius:50%;object-fit:cover;border:2px solid #3d9b5d;box-shadow:0 0 0 3px rgba(74,190,111,.15)}
.lgv2-alien-target span{display:grid;gap:2px;text-align:left;min-width:0}.lgv2-alien-target small{font:800 8.32px/1 var(--sans);letter-spacing:.11em}.lgv2-alien-target b{font:800 14.08px/1.1 var(--serif);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lgv2-alien-target>em{margin-left:auto;max-width:42%;padding:5px 8px;border-radius:999px;background:#fffdf5;border:1px solid #b7cfaa;font:800 clamp(8px,2.2vw,10px)/1 var(--serif);font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgv2-alien-picker{min-height:0;display:grid;grid-template-rows:auto auto minmax(150px,1fr);gap:7px;padding:8px;border:1.5px solid #b6cda9;border-radius:16px;background:linear-gradient(180deg,rgba(255,254,247,.98),rgba(239,248,235,.98));box-shadow:inset 0 1px 0 #fff,0 6px 18px rgba(38,73,47,.08)}
.lgv2-alien-picker-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.lgv2-alien-picker-head>span{min-width:0;display:grid;gap:3px}.lgv2-alien-picker-head small{font:850 8px/1 var(--sans);letter-spacing:.12em}.lgv2-alien-picker-head b{font:800 clamp(12px,3.1vw,14px)/1.1 var(--serif);white-space:normal}.lgv2-alien-picker-head>em{flex:none;min-width:54px;height:30px;padding:0 8px;border-radius:999px;display:grid;place-items:center;background:#2f7b4a;color:#fff;font:850 9px/1 var(--sans);font-style:normal}
.lgv2-alien-hint{margin:0;font:600 clamp(8.5px,2.35vw,10px)/1.28 var(--sans);text-align:center}
.lgv2-alien-grid{min-height:150px;max-height:min(31dvh,250px);overflow-y:auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;gap:7px;padding:3px 3px 7px;margin:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.lgv2-alien-card{--bp-btn-encre:#3e2a20;--bp-or:#278a4c;position:relative;display:grid;grid-template-rows:auto auto;align-content:start;gap:4px;min-width:0;min-height:122px;padding:4px;border:1.5px solid #c7ad75;border-radius:11px;cursor:pointer;background:#fff8e9;color:#3c2c22;box-shadow:0 4px 10px rgba(56,37,20,.10);font:inherit;text-align:center;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease}
.lgv2-alien-card>img{display:block;width:100%;aspect-ratio:2/3;min-height:92px;object-fit:cover;border-radius:7px;background:#2a1820;box-shadow:0 5px 11px rgba(0,0,0,.18)}
.lgv2-alien-card>span{display:block;padding:2px 1px 1px}.lgv2-alien-card b{display:block;font:800 clamp(8px,2.1vw,9.5px)/1.08 var(--serif);white-space:normal;overflow:visible;text-overflow:clip}.lgv2-alien-card:active{transform:scale(.965)}
.lgv2-alien-card.is-picked{--bp-btn-encre:#225a35;border-color:#278a4c;background:#eef9ed;box-shadow:0 0 0 2px rgba(39,138,76,.22),0 8px 16px rgba(33,99,57,.15)}
.lgv2-alien-card.is-picked::after{content:"✓";position:absolute;right:7px;top:7px;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;background:#2f9d59;color:white;font:900 11px/1 var(--sans);box-shadow:0 3px 10px rgba(0,0,0,.35)}
.lgv2-alien-grid-empty{min-height:150px;display:grid;place-items:center;align-content:center;gap:5px;text-align:center;border:1px dashed #b9c7ad;border-radius:12px;color:#526557;background:#f6faf3}.lgv2-alien-grid-empty b{font:800 11px/1 var(--serif)}.lgv2-alien-grid-empty span{max-width:28ch;font:600 9px/1.3 var(--sans)}
.lgv2-alien-actions{display:grid;grid-template-columns:1fr;gap:6px;padding-top:2px}.lgv2-alien-actions .lgv2-night-primary,.lgv2-alien-actions .lgv2-night-secondary{margin:0;min-height:48px}
.lgv2-night-panel.lgv2-alien-result{display:grid;justify-items:center;text-align:center;gap:7px;padding-top:13px}.lgv2-alien-verdict-mark{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#43b96c,#1d713d);border:1px solid #9aebb3;color:#fff;box-shadow:0 0 0 6px rgba(77,205,119,.12),0 12px 26px rgba(0,0,0,.25)}
.lgv2-alien-verdict-mark svg{width:25px;height:25px;fill:currentColor}.lgv2-alien-result>small{font:900 8.8px/1 var(--sans);letter-spacing:.14em}.lgv2-alien-result>h2{margin:0;font:800 19.2px/1.08 var(--serif)}.lgv2-alien-result>p{margin:0;max-width:330px;font:600 10.4px/1.4 var(--sans)}
.lgv2-alien-verdict-pair{width:100%;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:9px;margin:5px 0 2px}.lgv2-alien-verdict-player,.lgv2-alien-verdict-role{display:grid;justify-items:center;gap:5px;min-width:0}.lgv2-alien-verdict-player img{width:58px;height:58px;border-radius:50%;object-fit:cover;border:2px solid #6ad68f}.lgv2-alien-verdict-role img{width:54px;aspect-ratio:2/3;object-fit:cover;border-radius:8px;border:1px solid rgba(212,175,90,.55)}.lgv2-alien-verdict-pair b{max-width:100%;font:800 9.6px/1.1 var(--serif);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lgv2-alien-verdict-arrow{color:#d4af5a;font:900 19.2px/1 var(--serif)}
.lgv2-alien-next{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:5px}.lgv2-alien-next button{min-height:46px;border-radius:12px;padding:7px 8px;display:flex;align-items:center;justify-content:center;gap:6px;font:850 8.64px/1.15 var(--serif);letter-spacing:.045em}.lgv2-alien-next button svg{width:16px;height:16px;fill:currentColor}.lgv2-alien-next .is-continue{--bp-btn-encre:#f1fff5;background:linear-gradient(165deg,#2d8f53,#195f36);border:1px solid #73da96;color:#f1fff5}.lgv2-alien-next .is-stop{--bp-btn-encre:#fff2f3;background:linear-gradient(165deg,#7c2437,#521322);border:1px solid rgba(232,159,170,.55);color:#fff2f3}.lgv2-alien-next.is-single{grid-template-columns:1fr}
.lgv2-role-private-result.is-alien-fail{display:grid;justify-items:center;text-align:center;gap:5px;border-color:#b53a46;background:linear-gradient(180deg,#6e1527,#42101d);color:#fff3eb}.lgv2-role-private-result.is-alien-fail>span{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#a62539;color:#fff;border:1px solid #e39097}.lgv2-role-private-result.is-alien-fail>span svg{width:20px;height:20px;fill:currentColor}
@media(max-width:359px){.lgv2-alien-grid{grid-template-columns:repeat(3,minmax(0,1fr));max-height:min(30dvh,230px)}.lgv2-alien-card{min-height:126px}.lgv2-alien-next{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.lgv2-alien-card{transition-duration:.01ms}}

/* ==========================================================================
   PRISE DE PAROLE D'UN BOT — bulle au-dessus de la partie (6.55.0)
   ========================================================================== */
.lgv2-bot-bubble{position:fixed;left:50%;top:calc(env(safe-area-inset-top,0px) + 66px);
  transform:translateX(-50%);z-index:9450;width:min(92vw,400px);pointer-events:none;
  animation:lgv2-bubble-in .38s cubic-bezier(.2,1.2,.4,1) both}
@keyframes lgv2-bubble-in{from{opacity:0;transform:translate(-50%,-14px) scale(.94)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
.lgv2-bot-bubble.is-out{animation:lgv2-bubble-out .4s ease both}
@keyframes lgv2-bubble-out{to{opacity:0;transform:translate(-50%,-10px) scale(.96)}}
.lgv2-bot-bubble-card{display:flex;gap:12px;align-items:flex-start;padding:12px 16px 13px;
  border-radius:18px;color:#f6ecdc;
  background:linear-gradient(160deg,rgba(52,34,14,.97),rgba(26,17,9,.98));
  border:1px solid rgba(212,175,90,.5);
  box-shadow:0 18px 46px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,230,180,.14)}
.lgv2-bot-bubble-avatar{position:relative;flex:none;width:44px;height:44px;border-radius:50%;
  overflow:visible;border:2px solid #d4af5a;display:grid;place-items:center;background:#2a1c0d}
.lgv2-bot-bubble-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.lgv2-bot-bubble-avatar i{position:absolute;right:-5px;bottom:-5px;width:18px;height:18px;
  border-radius:50%;background:#d4af5a;color:#241505;display:grid;place-items:center;
  animation:lgv2-mic-pulse 1.1s ease-in-out infinite}
.lgv2-bot-bubble-avatar i svg{width:11px;height:11px}
@keyframes lgv2-mic-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
.lgv2-bot-bubble-card b{display:block;font-size:12.48px;letter-spacing:.05em;color:#e9c986;margin-bottom:3px}
.lgv2-bot-bubble-card p{margin:0;font-size:14.4px;line-height:1.42}
.lgv2-player-ring .is-bot-speaking{filter:drop-shadow(0 0 12px rgba(232,201,138,.85));transform:scale(1.06);transition:all .25s ease}

/* « Untel réfléchit… » au vote */
.lgv2-bot-thinking{display:flex;align-items:center;gap:10px;margin:10px 0;padding:10px 14px;
  border-radius:14px;background:rgba(212,175,90,.1);border:1px dashed rgba(212,175,90,.4);
  font-size:14.08px;color:#efdcb4}
.lgv2-bot-thinking .lgv2-bot-bubble-avatar{width:32px;height:32px;border-width:2px}
.lgv2-dots u{text-decoration:none;animation:lgv2-dot 1.2s infinite}
.lgv2-dots u:nth-child(2){animation-delay:.2s}.lgv2-dots u:nth-child(3){animation-delay:.4s}
@keyframes lgv2-dot{0%,60%,100%{opacity:.25}30%{opacity:1}}
@media (prefers-reduced-motion:reduce){.lgv2-bot-bubble,.lgv2-bot-bubble-avatar i{animation-duration:.01ms!important}}

/* ==========================================================================
   LES SIGNES DU NARRATEUR (6.56.0) — son cercle raconte la nuit
   ========================================================================== */
.is-host .lgv2-circle-player.is-host-awake .lgv2-circle-avatar{
  box-shadow:0 0 0 3px rgba(74,222,128,.85),0 0 22px rgba(74,222,128,.55);
  border-color:#4ade80}
.is-host .lgv2-circle-player.is-host-awake b{color:#a7f3c8}
.lgv2-circle-player.is-own-night-awake{z-index:25}
.lgv2-circle-player.is-own-night-awake .lgv2-circle-avatar{
  border-color:#4F9A61;box-shadow:0 0 0 3px #4F9A61,0 0 0 7px rgba(79,154,97,.18),0 0 26px rgba(79,154,97,.42)
}
.lgv2-circle-player.is-own-night-awake>b{color:#DFF3D9;text-shadow:0 2px 5px rgba(0,0,0,.72)}
.lgv2-host-mark{position:absolute;width:20px;height:20px;border-radius:50%;
  display:grid;place-items:center;border:1.5px solid rgba(0,0,0,.35);
  box-shadow:0 3px 8px rgba(0,0,0,.45);z-index:4}
.lgv2-host-mark svg{width:12px;height:12px}
.lgv2-host-mark.is-seer{left:-6px;top:-4px;background:#7dd3fc;color:#082f49}
.lgv2-host-mark.is-saved{right:-6px;top:-4px;background:#4ade80;color:#052e16}
.lgv2-host-mark.is-poisoned{right:-6px;top:-4px;background:#ef4444;color:#fff;
  animation:lgv2-mark-pulse 1.4s ease-in-out infinite}
.lgv2-host-mark.is-wild{left:-6px;bottom:8px;background:#fbbf24;color:#451a03}
.lgv2-host-mark.is-alien{right:-6px;bottom:8px;background:#c084fc;color:#2e1065}
.lgv2-host-mark.is-thief{left:-6px;top:14px;background:#e2c290;color:#3b2405}
@keyframes lgv2-mark-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
/* Bot qui parle : le meme vert qu'un joueur connecte au micro */
.lgv2-circle-player.is-bot-speaking .lgv2-circle-avatar{
  box-shadow:0 0 0 3px rgba(74,222,128,.9),0 0 24px rgba(74,222,128,.6)!important;
  border-color:#4ade80!important}
.lgv2-circle-player.is-bot-speaking .lgv2-circle-avatar i{background:#4ade80!important}

/* 6.56.0 — la tirade s'affiche EN ENTIER, toujours lisible */
.lgv2-bot-bubble{width:min(94vw,440px);max-height:42vh}
.lgv2-bot-bubble-card{max-height:42vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.lgv2-bot-bubble-card p{white-space:normal;word-break:break-word;overflow:visible;
  display:block;-webkit-line-clamp:unset;font-size:15.04px;line-height:1.5}

/* ==========================================================================
   6.58.0 — le votant courant en VERT, le signe du Renard, la liste des votants
   ========================================================================== */
.lgv2-circle-player.is-current-voter .lgv2-circle-avatar{
  box-shadow:0 0 0 3px rgba(74,222,128,.9),0 0 26px rgba(74,222,128,.55);
  border-color:#4ade80;animation:lgv2-voter-pulse 1.4s ease-in-out infinite}
.lgv2-circle-player.is-current-voter b{color:#a7f3c8}
@keyframes lgv2-voter-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
@keyframes lgv2-death-in{from{opacity:0}to{opacity:1}}
.lgv2-host-mark.is-fox{right:16px;top:-6px;background:#fb923c;color:#431407}
.lgv2-day-vote-count{cursor:pointer;pointer-events:auto}
.lgv2-vote-detail{position:fixed;inset:0;z-index:9500;display:grid;place-items:center;
  background:rgba(8,5,3,.72);animation:lgv2-death-in .25s ease both;padding:20px}
.lgv2-vote-detail-card{width:min(92vw,360px);max-height:64vh;overflow-y:auto;border-radius:20px;
  padding:16px;color:#f4e9d8;background:linear-gradient(160deg,rgba(54,34,14,.98),rgba(24,15,8,.99));
  border:1px solid rgba(212,175,90,.5);box-shadow:0 24px 60px rgba(0,0,0,.6)}
.lgv2-vote-detail-card header{display:flex;align-items:center;gap:12px;margin-bottom:12px;
  padding-bottom:12px;border-bottom:1px solid rgba(212,175,90,.25)}
.lgv2-vote-detail-card header img{width:46px;height:46px;border-radius:50%;object-fit:cover;border:2px solid #d4af5a}
.lgv2-vote-detail-card header small{display:block;font-size:9.6px;letter-spacing:.14em;color:#d9b666}
.lgv2-vote-detail-card header strong{margin-left:auto;font-size:20.8px;color:#eecf8d}
.lgv2-vote-detail-card p{display:flex;align-items:center;gap:10px;margin:0;padding:7px 2px;font-size:14.72px}
.lgv2-vote-detail-card p img{width:32px;height:32px;border-radius:50%;object-fit:cover;border:1.5px solid rgba(212,175,90,.5)}
.lgv2-vote-detail-card p.is-empty{color:rgba(240,225,200,.6);font-size:13.6px}
.lgv2-vote-detail-card button{margin-top:12px;width:100%;padding:11px;border-radius:12px;border:1px solid rgba(212,175,90,.5);
  background:rgba(212,175,90,.14);color:#f0dcae;font:inherit;letter-spacing:.1em;font-size:12.48px}


/* ==========================================================================
   6.63.0 — LA BULLE DU BOT PASSE AU-DESSUS DE TOUT
   Sur l'ecran d'un joueur, le panneau du bas couvrait la bulle : il ne
   voyait jamais qui parlait. Elle s'affiche desormais par-dessus, bien
   lisible, quel que soit l'ecran ouvert.
   ========================================================================== */
.lgv2-bot-bubble{z-index:9400!important}
.lgv2-bot-bubble .lgv2-bot-bubble-card{box-shadow:0 22px 60px rgba(0,0,0,.6)}

/* ==========================================================================
   6.77.0 — HABILLAGE DU BAS D'ÉCRAN · PLAQUE DE PARCHEMIN
   ==========================================================================

   PÉRIMÈTRE STRICT : la moitié basse de l'écran de partie. Le cercle du
   village,
son décor,
les médaillons,
les plaques de nom,
la couronne du
   Maire et le marquage des morts NE SONT PAS TOUCHÉS.

   CE QUI CHANGE. Le bas d'écran était un voile sombre translucide posé sur
   l'illustration,
avec des boutons grenat pleins. Il devient une PLAQUE :
   un cadre à trois filets (liseré sombre, biseau clair, filet or) sur un
   champ de parchemin,
et des boutons en pilule ivoire à double filet or,
texte serif à l'encre. Le grenat quitte le remplissage et ne sert plus
   que d'accent.

   DEUX MODES,
UN SEUL DESSIN. La nuit ne reçoit pas un autre design : elle
   reçoit les mêmes formes avec un jeu de jetons sombre. L'or reste
   identique dans les deux modes — c'est lui qui fait la continuité.

   POURQUOI CETTE SECTION EST SANS COUCHE ET AVEC `!important`. Les versions
   6.12 à 6.28 ont empilé des correctifs de contraste qui imposent déjà
   `!important` sur le fond,
la couleur et l'ombre du texte de ces mêmes
   éléments. Vérification faite en navigateur : une déclaration sans couche
   l'emporte,
mais À SPÉCIFICITÉ ÉGALE OU SUPÉRIEURE seulement. Les sélecteurs
   ci-dessous reprennent donc la chaîne complète `#lg-v2.lgv2
   .lgv2-circle-screen …` et le sélecteur d'élément (`button.lgv2-day-primary`)
   utilisés par ces correctifs. C'est la raison,
et la seule,
de leur longueur.

   RECTIFICATIF (6.84.0). La phrase ci-dessus était incomplète,
et ça m'a coûté
   un défaut. « Sans couche l'emporte » ne vaut que pour les déclarations
   NORMALES. Pour les déclarations `!important`,
l'ordre des couches est
   INVERSÉ : une règle en couche l'emporte alors sur une règle hors couche,
quelle que soit leur longueur. La bonne
   réponse dans ce cas n'est pas d'empiler un correctif de plus mais de
   corriger la déclaration À LA SOURCE,
ce qui a été fait.

   Organisation :
     0. Jetons jour / nuit
     1. Ornements réutilisables (étoile à quatre branches, volute de coin)
     2. La plaque : cadre à trois filets
     3. Typographie de la plaque
     4. Médaillon d'icône et cartouche compteur
     5. Bouton principal (pilule ivoire à double filet)
     6. Bouton secondaire et bouton « passer »
     7. Cartes de choix (sens de la parole, camps)
     8. Sous-cartes : orateur, liste des votes, pastilles d'information
     9. Séparateur à losange
    10. Barre fixe du bas
   ========================================================================== */

/* --- 0. Jetons ----------------------------------------------------------
   Valeurs relevées sur la maquette (médianes, pas des pipettes isolées).   */
#lg-v2.lgv2 .lgv2-circle-screen{
  --bp-champ-1:#F1E8DC; --bp-champ-2:#E4D9C9;
  --bp-rim:#6A5642; --bp-lueur:#FBF6EC;
  --bp-or:#C9A96B; --bp-or-fort:#E7CB94; --bp-or-doux:rgba(160,130,78,.40);
  --bp-encre:#392817; --bp-encre-douce:#6E5B45; --bp-sourcil:#6B563C;
  --bp-btn-1:#FBF3E4; --bp-btn-2:#E9DECA; --bp-btn-encre:#33251A;
  --bp-carte-1:#EFE7DB; --bp-carte-2:#E8DFD1;
  --bp-medaille-1:#9A7C55; --bp-medaille-2:#6F5738;
  --bp-accent:#7A2033;
  --bp-icone-gap:8px;
  --bp-ombre:0 14px 34px rgba(48,30,16,.30);
}
/* La nuit : mêmes formes, jetons sombres. L'or ne bouge pas. */
#lg-v2.lgv2 .lgv2-circle-screen.is-night-mode{
  --bp-champ-1:#251B14; --bp-champ-2:#150F0B;
  --bp-rim:#0B0705; --bp-lueur:rgba(255,240,208,.13);
  --bp-or:#C9A96B; --bp-or-fort:#EEDAAA; --bp-or-doux:rgba(201,169,107,.34);
  --bp-encre:#F7EDDA; --bp-encre-douce:#CDB99C; --bp-sourcil:#DCC084;
  --bp-btn-1:#37271B; --bp-btn-2:#1D140E; --bp-btn-encre:#F9EFDB;
  --bp-carte-1:#38281C; --bp-carte-2:#20160F;
  --bp-medaille-1:#6E5636; --bp-medaille-2:#3E2F1D;
  --bp-accent:#8E2438;
  --bp-icone-gap:8px;
  --bp-ombre:0 14px 34px rgba(0,0,0,.52);
}
/* Quand C'EST LE TOUR DU JOUEUR, la plaque ne reste pas brun/noir.
   Ces jetons sont posés sur le composant lui-même : pas de seconde feuille,
   pas de surcouche. Toutes les règles existantes lisent ces valeurs. */
#lg-v2.lgv2 .lgv2-circle-screen.is-night-mode .lgv2-night-panel.is-player.is-awake-turn{
  --bp-champ-1:#F3F7EA; --bp-champ-2:#DFE9D5;
  --bp-rim:#355F42; --bp-lueur:#FBFFF4;
  --bp-or:#78A06F; --bp-or-fort:#E9F4D8; --bp-or-doux:rgba(66,111,73,.34);
  --bp-encre:#203627; --bp-encre-douce:#49604E; --bp-sourcil:#3E774D;
  --bp-btn-1:#FAFDF3; --bp-btn-2:#DDEAD4; --bp-btn-encre:#24422D;
  --bp-carte-1:#EDF4E5; --bp-carte-2:#DCE8D4;
  --bp-medaille-1:#719B72; --bp-medaille-2:#3C6849;
  --bp-accent:#397A4D;
  --bp-ombre:0 14px 34px rgba(10,35,18,.34);
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel.is-player.is-awake-turn>header::before{
  content:"À VOUS DE JOUER";grid-column:1/-1;justify-self:start;
  padding:4px 8px;border-radius:999px;background:#3F7E50;color:#F8FFF3;
  font:850 7px/1 var(--sans);letter-spacing:.14em;box-shadow:0 3px 9px rgba(29,73,40,.18)
}

/* --- 1. Ornements -------------------------------------------------------
   L'étoile à quatre branches et la volute de coin sont dessinées, pas
   importées : elles suivent la couleur du mode sans second fichier à
   charger, à purger et à versionner.                                      */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-bp-etoile{
  position:absolute; top:50%; width:11px; height:11px; margin-top:-5.5px;
  background:var(--bp-or); pointer-events:none;
  clip-path:polygon(50% 0%,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0% 50%,40% 40%);
}

/* --- 2. La plaque -------------------------------------------------------
   Trois filets concentriques, relevés au pixel sur la maquette : liseré
   sombre à l'extérieur, biseau clair, filet or. Le quatrième trait (le
   cadre intérieur en retrait) est porté par ::before, avec la volute.     */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel{
  position:relative;
  width:min(96%,436px); margin-inline:auto!important;
  padding:16px 15px 15px!important;
  border:2px solid var(--bp-rim)!important;
  border-radius:20px!important;
  background:linear-gradient(180deg,var(--bp-champ-1) 0%,var(--bp-champ-2) 100%)!important;
  box-shadow:
    inset 0 0 0 1.5px var(--bp-lueur),
    inset 0 0 0 3px var(--bp-or),
    var(--bp-ombre)!important;
  color:var(--bp-encre)!important;
  isolation:isolate;
}
/* Cadre intérieur en retrait + volutes de coin. Purement décoratif :
   `aria-hidden` n'existe pas sur un pseudo-élément, d'où pointer-events. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel::after,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel::after,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage::after,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel::after{
  content:""; position:absolute; inset:8px; z-index:0; pointer-events:none;
  border:1px solid var(--bp-or-doux); border-radius:13px;
}
/* Le contenu passe au-dessus du cadre décoratif. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>*:not(.lgv2-day-glow),
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>*,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>*,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel>*{position:relative; z-index:1}
/* L'ancien voile radial du panneau de jour n'a plus lieu d'être. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel::before{background:none!important}

/* --- 3. Typographie -----------------------------------------------------
   Serif partout, y compris sur les boutons : c'est ce qui distingue le plus
   nettement la maquette de l'ancien habillage, qui mêlait Inter et serif.
   Les ombres portées de l'ancien voile sont annulées explicitement, sans
   quoi elles baveraient sur le parchemin clair.                           */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage p{
  text-shadow:none!important; -webkit-text-stroke:0!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header small{
  font:600 clamp(9.28px,2.4vw,10.56px)/1 var(--sans)!important;
  letter-spacing:.20em!important; text-transform:uppercase;
  color:var(--bp-sourcil)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header h2{
  font:700 clamp(16.32px,4.6vw,21.12px)/1.14 var(--serif)!important;
  letter-spacing:.005em!important;
  color:var(--bp-encre)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header p{
  font:400 clamp(11.52px,3vw,13.44px)/1.38 var(--serif)!important;
  color:var(--bp-encre-douce)!important; text-shadow:none!important;
}

/* --- 4. Médaillon d'icône et cartouche compteur -------------------------
   Le médaillon passe du disque grenat au bronze cerclé d'or. Le compteur
   passe de la pilule au cartouche à coins coupés : c'est la forme qui le
   distingue d'un bouton, puisqu'il ne se touche pas.                      */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header>span,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header>span,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header>span{
  width:52px!important; height:52px!important; border-radius:50%!important;
  background:radial-gradient(circle at 34% 28%,var(--bp-medaille-1),var(--bp-medaille-2))!important;
  border:2px solid var(--bp-or)!important;
  box-shadow:inset 0 0 0 2px var(--bp-lueur),0 5px 13px rgba(40,24,10,.34)!important;
  color:var(--bp-or-fort)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header>span svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header>span svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header>span svg{
  width:25px!important; height:25px!important; fill:currentColor!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header>strong:not(.lgv2-live-pill),
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header>strong:not(.lgv2-live-pill){
  min-width:52px!important; height:44px!important; padding:0 10px!important;
  border:2px solid var(--bp-or)!important;
  border-radius:11px!important;
  background:linear-gradient(180deg,var(--bp-btn-1),var(--bp-btn-2))!important;
  color:var(--bp-encre)!important;
  font:600 clamp(15.2px,4vw,18.4px)/1 var(--serif)!important;
  box-shadow:inset 0 0 0 1.5px var(--bp-lueur)!important; text-shadow:none!important;
}

/* --- 5. Bouton principal ------------------------------------------------
   Pilule ivoire, double filet or, encre serif en capitales, étoile à chaque
   extrémité. Le remplissage grenat disparaît : c'est le changement le plus
   visible de toute la refonte.                                            */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-start,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch{
  position:relative;
  display:flex!important; align-items:center; justify-content:center; gap:11px;
  width:100%!important; min-height:56px!important;
  margin:4px 0 2px!important; padding:9px 34px!important;
  border:2.5px solid var(--bp-or)!important; border-radius:999px!important;
  background:linear-gradient(180deg,var(--bp-btn-1) 0%,var(--bp-btn-2) 100%)!important;
  color:var(--bp-btn-encre)!important;
  box-shadow:
    inset 0 0 0 2px var(--bp-lueur),
    inset 0 2px 0 rgba(255,255,255,.45),
    0 7px 16px rgba(48,30,16,.22)!important;
  text-shadow:none!important; cursor:pointer;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary::before,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary::after,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary::before,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary::after,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip::before,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip::after{
  content:""; position:absolute; top:50%; width:11px; height:11px; margin-top:-5.5px;
  background:var(--bp-or); pointer-events:none;
  clip-path:polygon(50% 0%,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0% 50%,40% 40%);
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary::before,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary::before,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip::before{left:14px}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary::after,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary::after,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip::after{right:14px}

#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary>span>b,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary>span>b,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary>b,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip>span,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary>span,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-start>span{
  font:700 clamp(12.48px,3.3vw,15.04px)/1.18 var(--serif)!important;
  letter-spacing:.055em!important; text-transform:uppercase;
  color:var(--bp-btn-encre)!important; text-shadow:none!important; opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary>span>small,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary>span>small,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary small{
  font:600 clamp(8.8px,2.3vw,10.08px)/1.2 var(--sans)!important;
  letter-spacing:.17em!important;
  color:var(--bp-encre-douce)!important; text-shadow:none!important; opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary>svg,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary>svg,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary>svg,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip>svg{
  width:20px!important; height:20px!important; flex:none;
  color:var(--bp-or)!important; fill:currentColor!important; opacity:1!important;
}
/* Désactivé : on éteint l'or et on grise l'encre, sans jouer sur
   l'opacité globale — un bouton à demi transparent laissait voir le décor
   au travers et devenait illisible. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button.lgv2-day-primary:disabled,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary:disabled,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary:disabled,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip:disabled{
  opacity:1!important; filter:none!important; cursor:not-allowed;
  border-color:var(--bp-or-doux)!important;
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  box-shadow:inset 0 0 0 2px var(--bp-lueur)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary:disabled *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary:disabled *{
  color:var(--bp-encre-douce)!important; opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary:active,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary:active,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip:active{transform:translateY(1px)}
#lg-v2.lgv2 .lgv2-circle-screen button:focus-visible{outline:3px solid var(--bp-or-fort); outline-offset:3px}

/* --- 6. Bouton secondaire et « passer » ---------------------------------
   Même famille, un cran plus discret : filet simple, hauteur réduite.     */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass button,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-second-request{
  min-height:44px!important; padding:8px 18px!important;
  border:1.5px solid var(--bp-or)!important; border-radius:999px!important;
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  color:var(--bp-encre)!important;
  box-shadow:inset 0 0 0 1.5px var(--bp-lueur)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass button *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary *{
  font-family:var(--serif)!important; font-weight:700!important; letter-spacing:.05em!important;
  color:var(--bp-encre)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass button svg,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary svg{color:var(--bp-or)!important; fill:currentColor!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass>small{
  color:var(--bp-encre-douce)!important; text-shadow:none!important;
  font:400 clamp(10.88px,2.8vw,12.48px)/1.3 var(--serif)!important;
}

/* --- 7. Cartes de choix -------------------------------------------------
   Le sens de la parole et les choix de camp : deux cartes de parchemin, et
   non deux blocs grenat. L'état « choix enregistré » vire à l'or, seul
   signal chaud de la plaque, donc impossible à manquer.                   */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice>button,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel .lgv2-direction-choice>button,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-direction-choice>button,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-camp-choice>button{
  border:1.5px solid var(--bp-or)!important; border-radius:16px!important;
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  box-shadow:inset 0 0 0 1.5px var(--bp-lueur)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice>button>i,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-direction-choice>button>i{
  background:radial-gradient(circle at 34% 28%,var(--bp-medaille-1),var(--bp-medaille-2))!important;
  border:1.5px solid var(--bp-or)!important; color:var(--bp-or-fort)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice>button>b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-direction-choice>button>b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-camp-choice>button b{
  font-family:var(--serif)!important; font-weight:700!important;
  color:var(--bp-encre)!important; text-shadow:none!important; opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice>button>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-direction-choice>button>small{
  font-family:var(--serif)!important; font-weight:400!important;
  color:var(--bp-encre-douce)!important; text-shadow:none!important; opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice>button.is-pending,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-direction-choice>button.is-pending{
  background:linear-gradient(180deg,#E8C98B,#C9A45C)!important;
  border-color:var(--bp-or-fort)!important;
  box-shadow:inset 0 0 0 1.5px rgba(255,248,230,.6),0 0 0 2px var(--bp-or-doux)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-direction-choice>button.is-pending>b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-direction-choice>button.is-pending>small{color:#33251A!important}

/* --- 8. Sous-cartes -----------------------------------------------------
   Orateur,
liste des votes,
pastilles d'information. Toutes reprennent le
   même carton de parchemin cerclé d'un filet or,
comme sur la maquette.   */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-wait,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-rule-alert,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-vote-locked,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-live,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-choice{
  border:1px solid var(--bp-or-doux)!important; border-radius:12px!important;
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  color:var(--bp-encre)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker>b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-rule-alert b{
  font-family:var(--serif)!important; font-weight:700!important;
  color:var(--bp-encre)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-rule-alert small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-wait,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-vote-locked{
  font-family:var(--serif)!important;
  color:var(--bp-encre-douce)!important; text-shadow:none!important;
}
/* La ligne de celui dont c'est le tour : l'or{
  border-color:var(--bp-or)!important;
  background:linear-gradient(180deg,var(--bp-btn-1),var(--bp-btn-2))!important;
  box-shadow:inset 0 0 0 1px var(--bp-lueur)!important; opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker>strong,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-live>strong{
  background:radial-gradient(circle at 34% 28%,var(--bp-medaille-1),var(--bp-medaille-2))!important;
  border:1.5px solid var(--bp-or)!important; color:var(--bp-or-fort)!important;
  font-family:var(--serif)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker-avatar img{border:2px solid var(--bp-or)!important}
/* Le badge LIVE reste grenat : c'est le seul accent chaud autorisé, et il
   doit se lire comme une alerte, pas comme un ornement. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-live-pill{
  background:var(--bp-accent)!important; border:1.5px solid var(--bp-or)!important;
  color:#FFF3DC!important;
}

/* --- 9. Séparateur ------------------------------------------------------ */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-bp-separateur{
  position:relative; height:1px; margin:12px 6px 4px;
  background:linear-gradient(90deg,transparent,var(--bp-or-doux) 18%,var(--bp-or-doux) 82%,transparent);
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-bp-separateur::after{
  content:""; position:absolute; left:50%; top:50%; width:10px; height:10px;
  margin:-5px 0 0 -5px; background:var(--bp-or);
  clip-path:polygon(50% 0%,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0% 50%,40% 40%);
}

/* --- 10. Barre fixe du bas ---------------------------------------------
   Trois accès permanents. Ils prennent la même pilule que les boutons de
   la plaque, pour que le bas d'écran se lise comme un seul objet.        */
#lg-v2.lgv2 button.lgv2-bottom-btn{
  height:48px!important; border-radius:999px!important;
  border:2px solid var(--bp-or,#C9A96B)!important;
  background:linear-gradient(180deg,var(--bp-btn-1,#FBF3E4),var(--bp-btn-2,#E9DECA))!important;
  color:var(--bp-btn-encre,#33251A)!important;
  box-shadow:inset 0 0 0 1.5px var(--bp-lueur,#FBF6EC),0 5px 13px rgba(40,24,10,.30)!important;
  text-shadow:none!important;
}
#lg-v2.lgv2 button.lgv2-bottom-btn span{
  font:700 clamp(9.92px,2.6vw,11.52px)/1 var(--serif)!important;
  letter-spacing:.05em!important; color:var(--bp-btn-encre,#33251A)!important;
}
#lg-v2.lgv2 button.lgv2-bottom-btn svg{fill:var(--bp-or,#C9A96B)!important; color:var(--bp-or,#C9A96B)!important}
#lg-v2.lgv2 button.lgv2-bottom-btn i{
  background:var(--bp-accent,#7A2033)!important; color:#FFF0D6!important;
  border:1.5px solid var(--bp-or-fort,#E7CB94)!important;
}
/* « C'est à vous de parler » : le seul bouton de la barre qui s'allume. */
#lg-v2.lgv2 button.lgv2-bottom-btn.is-speaking{
  border-color:var(--bp-or-fort,#E7CB94)!important;
  background:linear-gradient(180deg,#E8C98B,#C9A45C)!important;
}

/* --- 11. Reprises après audit visuel -----------------------------------
   Chaque règle ci-dessous corrige un défaut CONSTATÉ sur capture, pas un
   défaut supposé. Le commentaire dit lequel.                             */

/* Le médaillon des panneaux centrés (résultat, égalité, attente) était
   resté grenat : il n'est pas dans un <header>, la règle 4 le manquait. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-day-orbit,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel .lgv2-role-glyph{
  width:56px!important; height:56px!important;
  background:radial-gradient(circle at 34% 28%,var(--bp-medaille-1),var(--bp-medaille-2))!important;
  border:2px solid var(--bp-or)!important;
  box-shadow:inset 0 0 0 2px var(--bp-lueur),0 5px 13px rgba(40,24,10,.34)!important;
  color:var(--bp-or-fort)!important;
}

/* Textes secondaires encore crème + ombre portée, hérités du voile
   sombre : illisibles sur le parchemin. On les ramène à l'encre. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-live>span,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-choice,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-host-wait,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-second-state,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-rule-alert,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-rule-alert small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-wolf-majority{
  color:var(--bp-encre-douce)!important;
  text-shadow:none!important; -webkit-text-stroke:0!important;
  font-family:var(--serif)!important;
}

/* L'anneau de l'orateur qui parle était rose (rgba grenat) sur fond clair.
   Il devient or : c'est la couleur de signal de toute la plaque. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker-avatar.is-talking::after{
  border-color:var(--bp-or)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel.is-speech .lgv2-day-speaker-avatar.is-talking{
  box-shadow:0 0 0 3px var(--bp-or-doux),0 0 22px rgba(201,169,107,.42)!important;
}

#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip>span{
  font-size:clamp(10.88px,2.9vw,13.12px)!important; line-height:1.2!important;
  letter-spacing:.04em!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip{padding:9px 38px!important}

/* Le bouton secondaire portait encore une graisse minuscule héritée. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass button *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary *{
  font-size:clamp(10.88px,2.8vw,12.48px)!important; letter-spacing:.05em!important;
}

/* ==========================================================================
   6.78.0 — LA PLAQUE COUVRE TOUS LES PANNEAUX DU BAS
   ==========================================================================

   CE QUI S'EST PASSÉ EN 6.77.0. J'avais habillé les panneaux de jour, de nuit
   et du matin, mais utilisé un ancien nom pour le panneau du Maire. Le client
   émet `.lgv2-mayor-stage`. J'avais donc écrit du CSS pour une classe fantôme et
   laissé l'élection du Maire sur l'ancien fond sombre, tandis que son bouton,
   lui, passait bien en ivoire — d'où un libellé crème devenu illisible sur
   fond ivoire.

   LA CAUSE PROFONDE n'est pas l'oubli, c'est la méthode : j'avais deviné les
   noms de conteneurs au lieu de les relever dans le client. La liste ci-dessous
   est désormais l'inventaire exact des `<section class="lgv2-…">` produits par
   assets/js/app.js sur l'écran de partie, et le banc d'essai
   tests/v6780-couverture-panneaux.php ÉCHOUE si le client en émet un qui
   n'est pas couvert ici. La classe d'erreur est fermée, pas seulement le cas.

   Organisation :
     1. Les conteneurs manquants rejoignent la plaque
     2. Aucune encre claire ne peut survivre dans un bouton clair
     3. Composants propres à l'élection du Maire
     4. Composants propres aux pouvoirs interrompus
   ========================================================================== */

/* --- 1. Conteneurs manquants -------------------------------------------- */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt{
  position:relative; isolation:isolate;
  width:min(96%,436px); max-width:none!important; margin-inline:auto!important;
  padding:16px 15px 15px!important;
  border:2px solid var(--bp-rim)!important;
  border-radius:20px!important;
  background:linear-gradient(180deg,var(--bp-champ-1) 0%,var(--bp-champ-2) 100%)!important;
  box-shadow:
    inset 0 0 0 1.5px var(--bp-lueur),
    inset 0 0 0 3px var(--bp-or),
    var(--bp-ombre)!important;
  color:var(--bp-encre)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage::after,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt::after{
  content:""; position:absolute; inset:8px; z-index:0; pointer-events:none;
  border:1px solid var(--bp-or-doux); border-radius:13px;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>*,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt>*{position:relative; z-index:1}
/* L'ancienne carte crème du Maire était peinte par un ::before à z-index:-2.
   La plaque peint désormais le fond elle-même : ce calque doit disparaître,
   sinon deux cadres se superposent au pixel près. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage::before{
  content:none!important; background:none!important; border:0!important; box-shadow:none!important;
}

/* --- 2. Aucune encre claire dans un bouton clair -------------------------
   C'EST LA RÈGLE QUI FERME LE DÉFAUT. Les correctifs 6.19–6.28 posent une
   encre crème sur TOUT descendant de bouton du plateau, avec `!important`.
   Tant qu'on ne recolorait que les enfants nommés un par un, chaque nouveau
   bouton repartait avec du crème sur de l'ivoire. On prend donc le problème
   par le contenant : à l'intérieur d'un bouton habillé, TOUT descendant passe
   à l'encre, et les SVG à l'or. Aucun enfant ne peut y échapper.           */
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-start *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-candidate-btn *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass button *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary *,
#lg-v2.lgv2 .lgv2-bottom-bar button.lgv2-bottom-btn *{
  color:var(--bp-btn-encre,#33251A)!important;
  text-shadow:none!important; -webkit-text-stroke:0!important; opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary svg,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary svg,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-start svg,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip svg,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass button svg,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary svg,
#lg-v2.lgv2 .lgv2-bottom-bar button.lgv2-bottom-btn svg{
  color:var(--bp-or,#C9A96B)!important; fill:currentColor!important; opacity:1!important;
}

/* --- 3. Élection du Maire ------------------------------------------------ */
/* Le bouton reprend la pilule, avec sa grille à trois colonnes conservée :
   pastille de couronne, libellé, nombre de places. */
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch{
  display:grid!important; grid-template-columns:38px minmax(0,1fr) auto!important;
  align-items:center; gap:11px!important; overflow:visible!important;
  min-height:56px!important; padding:9px 20px!important;
  border:2.5px solid var(--bp-or)!important; border-radius:999px!important;
  background:linear-gradient(180deg,var(--bp-btn-1) 0%,var(--bp-btn-2) 100%)!important;
  box-shadow:inset 0 0 0 2px var(--bp-lueur),inset 0 2px 0 rgba(255,255,255,.45),0 7px 16px rgba(48,30,16,.22)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch>span{
  width:38px!important; height:38px!important; border-radius:50%!important;
  background:radial-gradient(circle at 34% 28%,var(--bp-medaille-1),var(--bp-medaille-2))!important;
  border:1.5px solid var(--bp-or)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch>span svg{
  color:var(--bp-or-fort)!important; fill:currentColor!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch>b{
  font:700 clamp(12.16px,3.2vw,14.4px)/1.18 var(--serif)!important;
  letter-spacing:.05em!important; text-align:left;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch>em{
  font:600 clamp(9.92px,2.6vw,11.52px)/1 var(--serif)!important;
  color:var(--bp-encre-douce)!important;
}
/* Le reflet animé traversait un bouton sombre. Sur l'ivoire il ne fait que
   salir la surface : on l'éteint. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-launch__shine{display:none!important}

/* L'emblème passe au bronze cerclé d'or, comme tous les médaillons d'icône
   de la plaque. La règle 6.24.2 lui imposait un grenat en `!important` :
   on la reprend à la même profondeur de sélecteur. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-emblem,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-emblem{
  width:52px!important; height:52px!important; border-radius:50%!important;
  background:radial-gradient(circle at 34% 28%,var(--bp-medaille-1),var(--bp-medaille-2))!important;
  border:2px solid var(--bp-or)!important;
  box-shadow:inset 0 0 0 2px var(--bp-lueur),0 5px 13px rgba(40,24,10,.34)!important;
  color:var(--bp-or-fort)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-emblem svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-emblem svg{
  width:25px!important; height:25px!important; color:currentColor!important; fill:currentColor!important;
}

#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-host-copy small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-phase-head small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-player-head small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt>small{
  font:600 clamp(9.28px,2.4vw,10.56px)/1 var(--sans)!important;
  letter-spacing:.20em!important; text-transform:uppercase;
  color:var(--bp-sourcil)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt h2{
  font:700 clamp(16.32px,4.6vw,21.12px)/1.14 var(--serif)!important;
  color:var(--bp-encre)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-notice,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-status,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-reserved,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-reserved small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt p{
  font-family:var(--serif)!important;
  color:var(--bp-encre-douce)!important; text-shadow:none!important; -webkit-text-stroke:0!important;
}
/* Les deux filets du séparateur « Les candidats apparaîtront ici ». */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-reserved>span{
  background:linear-gradient(90deg,transparent,var(--bp-or-doux))!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-reserved>span:last-child{
  background:linear-gradient(90deg,var(--bp-or-doux),transparent)!important;
}
/* Sièges, candidats et bulletins : le même carton de parchemin que les
   lignes de vote, pour que toute la plaque se lise comme un seul objet. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-seat,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-candidate,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-progress,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-notice,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-status{
  border:1px solid var(--bp-or-doux)!important; border-radius:12px!important;
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  color:var(--bp-encre)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-candidate img,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-seat img{border:2px solid var(--bp-or)!important}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-candidate-btn{
  min-height:46px!important; border-radius:999px!important;
  border:2px solid var(--bp-or)!important;
  background:linear-gradient(180deg,var(--bp-btn-1),var(--bp-btn-2))!important;
  box-shadow:inset 0 0 0 1.5px var(--bp-lueur)!important; text-shadow:none!important;
}

/* --- 4. Pouvoirs interrompus -------------------------------------------- */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt>span{
  width:52px!important; height:52px!important;
  background:radial-gradient(circle at 34% 28%,var(--bp-medaille-1),var(--bp-medaille-2))!important;
  border:2px solid var(--bp-or)!important;
  box-shadow:inset 0 0 0 2px var(--bp-lueur),0 5px 13px rgba(40,24,10,.34)!important;
  color:var(--bp-or-fort)!important;
}

/* Reprise après capture : « LANCER LES CANDIDATURES » passait sur deux
   lignes à 412 px de large. On resserre la graisse plutôt que de tronquer. */
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch>b{
  font-size:clamp(10.88px,2.85vw,13.12px)!important; letter-spacing:.035em!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch{padding:9px 16px!important; gap:9px!important}

/* --- 5. Les enfants d'un SVG ne sont pas du texte -----------------------
   DÉFAUT MESURÉ, PAS SUPPOSÉ. La règle universelle du point 2 recolore
   « tout descendant de bouton ». Or un <path> EST un descendant. Il héritait
   donc de l'encre, et comme la feuille pose `fill:currentColor` sur les
   icônes, le tracé se peignait à l'encre : icônes noires sur les boutons,
   alors que `getComputedStyle(svg).fill` renvoyait bien de l'or — la couleur
   était juste résolue sur le mauvais élément.

   On rend donc son `color` au contenu des SVG. Les sélecteurs répètent la
   chaîne complète : à une classe de moins, la règle d'encre l'emporterait à
   nouveau, et l'icône redeviendrait noire.                                */
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary svg *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary svg *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-start svg *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip svg *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch svg *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-candidate-btn svg *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass button svg *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary svg *,
#lg-v2.lgv2 .lgv2-bottom-bar button.lgv2-bottom-btn svg *{
  color:inherit!important; fill:currentColor!important; stroke:inherit!important;
}
/* La couronne du bouton du Maire vit dans une pastille bronze : son tracé
   doit suivre l'or clair de la pastille, pas l'or du bouton. */
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch>span svg,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch>span svg *{
  color:var(--bp-or-fort)!important; fill:currentColor!important;
}

/* ==========================================================================
   6.79.0 — LA PLAQUE PAR DÉFAUT, PLUS PAR ÉNUMÉRATION
   ==========================================================================

   TROISIÈME FOIS LE MÊME DÉFAUT, DONC LA MÉTHODE EST EN CAUSE. En 6.77.0
   j'avais oublié un conteneur ; en 6.78.0 j'avais fermé ce trou mais oublié
   les sous-titres et les boutons anonymes. L'écran des discours du Maire le
   montrait : `.lgv2-speech-head` gardait une encre crème à ombre portée sur
   du parchemin, les noms des candidats aussi, et le bouton « PASSER AU VOTE »
   — un simple <button> sans classe dans `.lgv2-speech-host-actions` — restait
   grenat plein.

   La cause commune : j'habillais en ÉNUMÉRANT les éléments connus. Tout
   élément non listé repartait avec les valeurs des correctifs 6.19-6.28.

   RENVERSEMENT. À partir d'ici, l'habillage s'applique PAR DÉFAUT à tout ce
   qui vit dans une plaque : tout texte prend l'encre, tout bouton prend la
   pilule. Les règles nommées des sections précédentes ne servent plus qu'à
   affiner. Un composant ajouté demain est habillé sans qu'on y pense.

   ORDRE VOLONTAIRE. Les règles génériques ci-dessous ont la même spécificité
   que les règles d'encre des boutons de la 6.78.0. À égalité, la dernière
   écrite l'emporte : la section 4 REDÉCLARE donc l'encre des boutons pour
   qu'elle reste maîtresse. Ce n'est pas une redite, c'est la résolution.

   Organisation :
     1. Tout texte d'une plaque prend l'encre
     2. Tout bouton d'une plaque prend la pilule
     3. Candidats, sièges et actions de discours
     4. Reprise de l'encre des boutons (voir ORDRE VOLONTAIRE)
     5. Bouton des réglages : tuile octogonale
   ========================================================================== */

/* --- 1. Tout texte d'une plaque prend l'encre --------------------------- */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt *{
  text-shadow:none!important; -webkit-text-stroke:0!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel h3,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel h3,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage h3,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt b{
  color:var(--bp-encre)!important; font-family:var(--serif)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel em,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel em,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage em,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt p{
  color:var(--bp-encre-douce)!important; font-family:var(--serif)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt small{
  color:var(--bp-sourcil)!important;
}

/* --- 2. Tout bouton d'une plaque prend la pilule ------------------------ */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel button,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage button,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel button,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt button{
  border:2px solid var(--bp-or)!important; border-radius:999px!important;
  background:linear-gradient(180deg,var(--bp-btn-1),var(--bp-btn-2))!important;
  color:var(--bp-btn-encre)!important;
  box-shadow:inset 0 0 0 1.5px var(--bp-lueur),0 5px 13px rgba(40,24,10,.22)!important;
  text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button:disabled,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel button:disabled,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage button:disabled,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel button:disabled,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt button:disabled{
  opacity:1!important; filter:none!important;
  border-color:var(--bp-or-doux)!important;
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
}

/* --- 3. Candidats, sièges et actions de discours ------------------------ */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-candidate,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-seat{
  border:1.5px solid var(--bp-or)!important; border-radius:14px!important;
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  box-shadow:inset 0 0 0 1px var(--bp-lueur)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-candidate b{
  font:700 clamp(11.2px,2.9vw,12.8px)/1.15 var(--serif)!important;
  color:var(--bp-encre)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-candidate img{border:2px solid var(--bp-or)!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-seat>i{
  color:var(--bp-or)!important; font-style:normal; opacity:.8;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-head small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-listen-head small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-player-call small{
  font:600 clamp(9.28px,2.4vw,10.56px)/1 var(--sans)!important;
  letter-spacing:.20em!important; text-transform:uppercase;
  color:var(--bp-sourcil)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-host-actions{
  display:grid; gap:9px; align-items:center;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-host-actions>p{
  color:var(--bp-encre-douce)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-host-actions>button,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-live-mic,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-heard-btn,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-audio-unlock{
  min-height:52px!important; padding:9px 22px!important;
  border:2.5px solid var(--bp-or)!important; border-radius:999px!important;
  background:linear-gradient(180deg,var(--bp-btn-1),var(--bp-btn-2))!important;
  box-shadow:inset 0 0 0 2px var(--bp-lueur),0 7px 16px rgba(48,30,16,.22)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-host-actions>button span,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-live-mic span,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-heard-btn span{
  font:700 clamp(12.16px,3.2vw,14.4px)/1.18 var(--serif)!important;
  letter-spacing:.05em!important; text-transform:uppercase;
}

/* --- 4. Reprise de l'encre des boutons (voir ORDRE VOLONTAIRE) ---------- */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel button *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage button *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel button *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt button *{
  color:var(--bp-btn-encre)!important; text-shadow:none!important; opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button svg *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel button svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel button svg *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage button svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage button svg *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel button svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel button svg *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt button svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt button svg *{
  color:var(--bp-or)!important; fill:currentColor!important;
}
/* La pastille bronze du bouton du Maire garde son or clair : elle vit sur un
   fond sombre, pas sur l'ivoire. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage button.lgv2-mayor-launch>span svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage button.lgv2-mayor-launch>span svg *{
  color:var(--bp-or-fort)!important; fill:currentColor!important;
}

/* --- 5. Bouton des réglages : tuile octogonale --------------------------
   La maquette pose une tuile à coins coupés, cadre or, engrenage or, à la
   place du carré arrondi grenat.

   DEUX PIÈGES ÉVITÉS ICI.

   1) La zone tactile. La 6.44.1 élargit la surface sensible de ces boutons
      par `padding:6px; margin:-6px`. Mon premier jet posait `padding:0` et
      supprimait donc cette surface sans le dire. Le remplissage est conservé,
      et `box-sizing:content-box` lui rend son effet : sous `border-box`,
      hérité du reset, le remplissage RÉTRÉCISSAIT le bouton au lieu de
      l'agrandir — la marge négative le décalait alors vers le coin sans rien
      gagner en surface. La cible fait maintenant 56 px pour une tuile de 44,
      ce que la 6.44.1 visait.

   2) Le découpage. `clip-path` rogne TOUT le contenu, pastille de compteur
      comprise : elle disparaissait à moitié. Le découpage est donc porté par
      deux pseudo-éléments — ::before pour le cadre or, ::after pour le champ
      ivoire en retrait de 2,5 px — et le bouton lui-même n'est pas rogné.
      L'engrenage et le compteur passent au-dessus, intacts.                */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-host-settings-btn,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-player-settings-btn{
  box-sizing:content-box!important;
  width:44px!important; height:44px!important;
  padding:6px!important; margin:-6px!important;
  border:0!important; border-radius:0!important;
  background:none!important; box-shadow:none!important;
  display:grid!important; place-items:center; overflow:visible!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-host-settings-btn::before,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-player-settings-btn::before,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-host-settings-btn::after,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-player-settings-btn::after{
  content:""; position:absolute; pointer-events:none;
  clip-path:polygon(29% 0,71% 0,100% 29%,100% 71%,71% 100%,29% 100%,0 71%,0 29%);
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-host-settings-btn::before,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-player-settings-btn::before{
  inset:6px; z-index:0;
  background:linear-gradient(160deg,var(--bp-or-fort),var(--bp-or) 52%,#8F7444);
  filter:drop-shadow(0 5px 12px rgba(40,24,10,.34));
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-host-settings-btn::after,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-player-settings-btn::after{
  inset:8.5px; z-index:1;
  background:linear-gradient(180deg,var(--bp-btn-1),var(--bp-btn-2));
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-host-settings-btn svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-player-settings-btn svg{
  position:relative; z-index:2;
  width:23px!important; height:23px!important;
  color:#9A7C48!important; fill:currentColor!important;
}
/* La pastille d'admissions sort de la tuile : elle n'est plus rognée. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-host-settings-btn>em{
  z-index:3; background:var(--bp-accent)!important;
  border:2px solid var(--bp-or-fort)!important; color:#FFF0D6!important;
}

/* ==========================================================================
   6.80.0 — NOUVELLE PLACE DU VILLAGE, ET LE CERCLE RECALÉ DESSUS
   ==========================================================================

   L'illustration de jour est remplacée. Sa place n'a pas la même perspective
   que la précédente : son anneau est nettement MOINS aplati. Le cercle des
   joueurs doit donc être recalé, sinon les avatars tombent à côté du dallage.

   MESURES, PAS ESTIMATIONS. L'ellipse cible a été relevée sur la maquette
   fournie, qui est rendue sur cette illustration exacte : les neuf médaillons
   ont été détectés par leur anneau doré, puis une ellipse a été ajustée aux
   moindres carrés sur leurs centres, l'axe vertical forcé au milieu de
   l'image puisque la place y est centrée.

     centre       x = 50,00 % de la largeur   y = 33,07 % de la hauteur
     demi-axe     A = 39,82 % de la largeur
                  B = 29,40 % de la largeur
     aplatissement B/A = 0,738   (l'ancienne place : 0,618)

   La géométrie rendue a ensuite été mesurée dans le navigateur à 360, 412,
   430, 560 et 720 px, et les constantes ajustées jusqu'à retomber sur ces
   valeurs. Le banc tests/v6800-geometrie-cercle.php refait ce calcul.

   UN DÉFAUT TROUVÉ EN MESURANT. Le rayon était exprimé en `min(100vw,460px)`
   alors que le plateau — et donc l'illustration, posée en `background-size:
   100% auto` — fait `min(100vw,560px)`. Au-delà de 460 px de large, l'anneau
   cessait de suivre l'image : mesuré, le demi-axe tombait de 39,9 % à 32,8 %
   de la largeur et le centre remontait de 34,1 % à 28,1 % de la hauteur. Les
   avatars se retrouvaient massés au centre de la place. Le défaut ne se voyait
   pas sur un téléphone courant (360–430 px), seulement sur les grands écrans
   et en paysage. L'unité est corrigée : c'est la MÊME que celle de l'image.
   ========================================================================== */

#lg-v2.lgv2 .lgv2-circle-screen .lgv2-player-ring{
  /* Unité = largeur réelle du plateau, celle qui met l'illustration à
     l'échelle. Toute autre valeur désolidarise le cercle du décor. */
  --plateau:min(100vw,560px);
  --radius:calc(var(--plateau) * .420);
  --squash:.520;
  width:calc(var(--radius) * 2)!important;
  height:calc(var(--radius) * 2)!important;
  /* 6.83.0 — L'anneau est remonté de 0,5 cm : .218 - .0459 = .1721.
     Le décalage est exprimé en FRACTION du plateau, pas en centimètres.
     L'illustration est posée en `background-size:100% auto` : elle grandit
     avec la largeur. Un décalage figé en cm resterait constant pendant que
     le décor grandit, et l'anneau se remettrait à glisser sur la place dès
     qu'on change de téléphone. 4,59 % vaut 0,50 cm sur un plateau de 412 px,
     et reste entre 0,48 et 0,52 cm sur toute la gamme des téléphones. */
  margin:calc(var(--plateau) * .1721) auto 0!important;
}

/* --- La NUIT garde son ellipse tant qu'elle garde son illustration ------
   Seule la place de JOUR est remplacée dans cette version. La place de nuit
   est encore l'ancienne, dont l'anneau est bien plus aplati (0,627 contre
   0,739). Lui appliquer la géométrie du jour décollerait les avatars du
   dallage de nuit : elle conserve donc EXACTEMENT les constantes livrées
   jusqu'ici.

   Une seule chose change pour elle, et c'est une correction : l'unité. Elle
   passe de `min(100vw,460px)` à la largeur réelle du plateau, comme le jour.
   En dessous de 460 px de large les deux valent la même chose — donc aucun
   téléphone courant ne voit de différence — et au-delà, la nuit cesse enfin
   de se décoller de son décor.

   À SUPPRIMER dès que la place de nuit sera remplacée : les deux modes
   partageront alors la géométrie mesurée au-dessus.                      */
#lg-v2.lgv2 .lgv2-circle-screen.is-night-mode .lgv2-player-ring{
  --radius:calc(var(--plateau) * .405);
  --squash:.627;
  margin:calc(var(--plateau) * .220) auto 0!important;
}

/* ==========================================================================
   6.81.0 — LES AVATARS OCCUPENT LA PLACE QUE LE CERCLE LEUR LAISSE
   ========================================================================== */

/* --- La taille des avatars suit l'écartement réel sur l'ellipse --------
   MESURE. Sur une ellipse aplatie, l'écartement entre deux voisins n'est pas
   uniforme : il vaut Δθ·A au sommet et Δθ·B sur les côtés. Le MINIMUM est
   donc sur les côtés et vaut 2π·B/n, soit ici 1,848 × largeur du plateau ÷ n.
   Vérifié au navigateur : à 22 joueurs sur 412 px, l'écartement minimal
   mesuré est de 34,1 px pour 34,6 px calculés.

   Les paliers de densité fixaient une taille par tranche : 26 px à partir de
   14 joueurs, 21 px à partir de 17, sans distinguer 17 de 22. À 14 joueurs
   l'écartement laissait pourtant 54 px : un avatar de 26 px y perdait la
   moitié de la place disponible, et le visage devenait illisible pour rien.

   La taille se déduit maintenant de l'écartement, avec une marge constante
   de 10 px entre deux médaillons. Mesuré, cela donne 44 px à 14 joueurs
   (contre 26), 35 px à 17 (contre 21) et 25 px à 22 (contre 21), sans jamais
   de chevauchement. Le plafond de 48 px garde les petites parties sobres.  */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-player-ring{
  --pas:calc(1.372 * var(--plateau) / var(--count, 8));
  --avatar:clamp(18px, calc(var(--pas) - 8px), 48px);
}

/* La pastille de présence suivait des paliers fixes : 13 px, puis 10 px à
   partir de 14 joueurs. Sur un médaillon de 25 px elle en couvrait le tiers
   et cachait le visage. Elle se déduit maintenant du médaillon lui-même —
   26 % de son diamètre, borné pour rester touchable — soit 12 px à 48 et
   6,5 px à 25. Le liseré suit la même proportion. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-avatar i{
  width:clamp(6px, calc(var(--avatar) * .26), 13px)!important;
  height:clamp(6px, calc(var(--avatar) * .26), 13px)!important;
  border-width:clamp(1.5px, calc(var(--avatar) * .042), 2.5px)!important;
  right:0!important; bottom:0!important;
}

/* ==========================================================================
   6.82.0 — LE CERCLE EST RECALÉ SUR LA BONNE ILLUSTRATION
   ==========================================================================

   ERREUR CORRIGÉE ICI. En 6.80.0 l'ellipse avait été ajustée sur les
   médaillons de la MAQUETTE fournie. Or la maquette n'est pas rendue sur
   l'illustration livrée : ce sont deux dessins différents de la même place,
   avec des perspectives très différentes. Comparaison pixel à pixel des deux
   moitiés hautes : écart moyen 46,7/255. J'avais donc mesuré une place et
   calé le cercle sur l'autre.

   Conséquence visible : l'aplatissement valait 0,739 alors que le dallage
   réel est à 0,44. Les avatars du haut montaient sur la balustrade et ceux du
   bas descendaient sur le dallage vide.

   NOUVELLE MESURE, SUR LA BONNE IMAGE. Le disque ornementé a été segmenté par
   sa TEXTURE (écart-type local sur 11x11 : le motif sculpté est nettement plus
   texturé que le dallage lisse), puis son bord ajusté par balayage d'ellipses
   en maximisant le contraste dedans/dehors. Les trois meilleures solutions
   concordent :

     centre       y = 34,93 % de la hauteur
     demi-axes    A = 40,38 %   B = 17,75 % de la largeur
     aplatissement 0,44

   CE QUI EST LIVRÉ, ET POURQUOI CE N'EST PAS EXACTEMENT CETTE ELLIPSE.
   Les médaillons ne sont pas posés au sol : ils représentent des personnes
   debout autour de la place. Les visages du fond apparaissent donc plus haut
   que leur point d'appui, ce qui arrondit légèrement l'anneau des visages par
   rapport à l'ellipse du dallage. Quatre jeux de constantes ont été rendus sur
   l'illustration et comparés : 0,44 colle au dallage mais tasse les avatars
   sur l'ornement, 0,739 les décolle complètement. Retenu : A = 0,420,
   aplatissement 0,520, marge 0,218 — l'anneau encercle le disque ornementé en
   restant sur le dallage clair, sans toucher la balustrade ni les jardinières.

   L'écartement minimal suit : 2π x 0,420 x 0,520 = 1,372. Le coefficient de
   la 6.81.0 est mis à jour en conséquence, sans quoi les avatars se
   chevaucheraient sur les côtés dès 14 joueurs.
   ========================================================================== */

/* ==========================================================================
   6.84.0 — LE BAS D'ÉCRAN GAGNE DE LA PLACE
   ==========================================================================

   1) LE PANNEAU REMONTE SOUS LES NOMS.
   L'anneau est un CARRÉ de côté 2×rayon, mais les avatars n'en occupent que
   la bande elliptique du milieu : sous le dernier nom, il restait la hauteur
   morte rayon×(1−aplatissement), soit 83 px sur un plateau de 412. Mesuré au
   navigateur, l'écart entre le dernier nom et le panneau allait de 62 px
   (6 joueurs) à 107 px (3 joueurs) — de la place perdue à chaque partie.

   La marge basse de l'anneau récupère cette hauteur, à 0,1 cm près du dernier
   nom. Elle n'est PAS proportionnelle au plateau : le médaillon est plafonné
   à 48 px, donc la hauteur morte grandit plus vite que lui. Un pourcentage
   fixe provoquait un chevauchement de 8 px à 360 px de large — mesuré avant
   d'écrire cette ligne. La formule soustrait donc la demi-hauteur réelle du
   médaillon.

   2) LE PANNEAU LUI-MÊME EST COMPACTÉ.
   Icônes, titres, boutons et cartes réduits d'environ un cinquième, gouttières
   resserrées, libellés d'action tenus sur une ligne. Le dessin ne change pas :
   seule l'échelle bouge, pour que tout tienne sans défilement.
   ========================================================================== */

/* --- 1. L'anneau rend la hauteur morte --------------------------------- */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-player-ring{
  margin-bottom:calc(var(--avatar) / 2 + 0.74px - var(--plateau) * .2016)!important;
}

/* --- 2. Échelle compacte du panneau ------------------------------------ */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt{
  padding:11px 12px 12px!important; gap:8px!important;
}
/* 6.96.0 — CETTE REGLE EST FAITE POUR L'EN-TETE DU NARRATEUR : medaillon,
   texte, action — trois colonnes. L'en-tete du JOUEUR a quatre enfants
   EMPILES (medaillon, sur-titre, titre, phrase). Elle l'attrapait quand meme :
   le medaillon, le sur-titre et le titre se retrouvaient SUR LA MEME LIGNE —
   le sur-titre passait SOUS le medaillon, d'ou le point grenat qui depassait —
   et la phrase tombait dans la colonne de 42 px, en escalier.
   On EXCLUT l'en-tete du joueur, plutot que d'ajouter une contre-regle. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header:not(.lgv2-mayor-player-head),
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header:not(.lgv2-mayor-player-head),
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header:not(.lgv2-mayor-player-head){
  grid-template-columns:42px minmax(0,1fr) auto!important; gap:9px!important;
}
/* Médaillon d'icône : 52 → 42 px. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header>span,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header>span,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header>span,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-emblem,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-emblem,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-day-orbit,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt>span{
  width:42px!important; height:42px!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header>span svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header>span svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header>span svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-emblem svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-orbit svg{
  width:20px!important; height:20px!important;
}
/* Titres et sur-titres : une taille en dessous, pour tenir sur une ligne. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt h2{
  font-size:clamp(12.48px,3.25vw,15.36px)!important; line-height:1.16!important;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%;
}
/* Une personne qui parle doit être nommée en entier : jamais « au villa… ». */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel.is-speech h2{
  white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;
}
/* Le sur-titre seulement : un <small> descriptif ne doit JAMAIS etre coupe.
   Premier jet : le selecteur descendant attrapait aussi « Le voisin vivant a
   votre gauche commence. », reduit a « Le voisin vivant… ». Constate sur
   capture, corrige en ciblant les enfants directs de l'en-tete. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-host-copy small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt>small{
  font-size:clamp(8px,2.05vw,9.12px)!important; letter-spacing:.16em!important;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
/* Les textes explicatifs des cartes de choix restent lisibles en entier. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice>button>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-direction-choice>button>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-camp-choice>button small{
  font-size:clamp(8.96px,2.3vw,10.4px)!important; letter-spacing:0!important;
  line-height:1.28!important;
  white-space:normal!important; overflow:visible!important; text-overflow:clip!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt p{
  font-size:clamp(9.92px,2.6vw,11.52px)!important; line-height:1.32!important;
}
/* Cartouche compteur : 44 → 36 px de haut. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header>strong:not(.lgv2-live-pill),
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header>strong:not(.lgv2-live-pill){
  min-width:44px!important; height:36px!important; padding:0 8px!important;
  border-radius:9px!important; font-size:clamp(13.12px,3.4vw,15.36px)!important;
}

/* --- 3. Boutons : plus bas, libellé sur une ligne ----------------------- */
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-start,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-host-actions>button,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-live-mic,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-heard-btn,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-audio-unlock{
  min-height:46px!important; padding:6px 28px!important; gap:8px!important;
  margin:2px 0 0!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch{padding:6px 13px!important; gap:8px!important}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch>span{width:32px!important; height:32px!important}
/* L'ornement se rapproche du bord : le libellé récupère la largeur. */
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary::before,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary::before,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip::before{left:10px; width:9px; height:9px; margin-top:-4.5px}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary::after,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary::after,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip::after{right:10px; width:9px; height:9px; margin-top:-4.5px}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary>span>b,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary>b,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary>span,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch>b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-host-actions>button span,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-live-mic span{
  font-size:clamp(10.88px,2.85vw,12.8px)!important; letter-spacing:.04em!important;
  line-height:1.15!important;
}
/* « PASSER LE VOTE DE … » : une seule ligne. Le prénom est déjà affiché en
   toutes lettres dans le titre au-dessus, une coupure ici ne perd rien. */
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-host-skip>span{
  font-size:clamp(10.24px,2.7vw,12.16px)!important; letter-spacing:.03em!important;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-day-primary>span>small,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-primary small,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-mayor-launch>em{
  font-size:clamp(8px,2.1vw,9.28px)!important; letter-spacing:.13em!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel button svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel button svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage button svg{
  width:17px!important; height:17px!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass button,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary{
  min-height:46px!important; padding:7px 14px!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass button *,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary,
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-night-secondary *{
  font-size:clamp(9.92px,2.5vw,11.2px)!important; white-space:nowrap;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker{padding:5px 7px!important; gap:7px!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker-avatar{width:38px!important; height:38px!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker>strong,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-live>strong{min-width:46px!important; height:28px!important; font-size:12.48px!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-direction-choice>button,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice>button{
  min-height:66px!important; padding:8px!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-candidate,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-seat{border-radius:12px!important}

/* --- 5. Barre du bas ---------------------------------------------------- */
#lg-v2.lgv2 button.lgv2-bottom-btn{height:42px!important; gap:6px!important}
#lg-v2.lgv2 button.lgv2-bottom-btn span{font-size:clamp(9.28px,2.4vw,10.88px)!important; white-space:nowrap}
#lg-v2.lgv2 button.lgv2-bottom-btn svg{width:15px!important; height:15px!important}
#lg-v2.lgv2 .lgv2-bottom-bar{padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px))!important}

/* --- 6. Deux contrastes remontés après audit ---------------------------
   Sonde automatique du rapport de contraste sur chaque texte des panneaux,
à 360,
412 et 430 px. Deux points sous le seuil AA de 4,
5:1 pour du petit
   texte :

   • le sur-titre (« VOTE DU VILLAGE · TOUR 1 ») était à 4,
14:1. L'encre passe
     de #7A6449 à #6B563C, soit 5,08:1, sans changer la famille de couleur ;
   • la ligne de vote ne portait pas d'encre propre : ses enfants étaient bien
     recolorés,
mais un futur texte posé directement dans le <p> serait reparti
     en crème. On lui en donne une explicitement.

   La nuit était déjà au-dessus du seuil (sur-titre à 10:1 sur le champ sombre).
   Le vert n'est toujours pas touché.                                       */
/* Une seule gouttière horizontale pour toute paire icône/libellé. `gap` était
   redéfini avec !important par plusieurs boutons compacts ; column-gap doit
   donc porter la même importance pour remplacer seulement l'axe utile. */
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) button,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-bottom-bar button.lgv2-bottom-btn{
  column-gap:var(--bp-icone-gap)!important;
  min-width:0;
}

/* Les titres et libellés d'action restent sur une ligne. Les <small>
   descriptifs sont volontairement absents : leurs phrases doivent continuer
   à se déployer en entier. Le conteneur intermédiaire reçoit min-width:0,
   condition nécessaire pour que l'ellipse fonctionne dans une grille. */
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) :is(h2,h3){
  min-width:0;
  max-width:100%;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) button>:is(span,b,em){min-width:0;max-width:100%}

#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) button>b,
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) button>span>b,
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) button>span:not(:has(*)){
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Les quelques actions dont le gabarit contient du texte direct n'ont aucun
   span sur lequel porter l'ellipse. Elles n'ont pas non plus d'ornement qui
   déborde : overflow:hidden ne peut donc pas rogner un compteur flottant. */
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) button:not(:has(>span,>b,>small,>em)){
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Un panneau ne coupe pas ses ornements, mais ses enfants de grille doivent
   pouvoir rétrécir à 320 px au lieu d'imposer leur largeur intrinsèque. */
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
),
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
)>*{
  min-width:0;
  max-width:100%;
}

/* L'état désactivé utilise les sous-cartes opaques. L'encre est reprise APRÈS
   la règle générique `button *`, puis les SVG APRÈS l'encre : cet ordre évite
   à la fois le décor visible au travers et les <path> peints comme du texte. */
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) :is(button:disabled,button[aria-disabled="true"]){
  opacity:1!important;
  filter:none!important;
  border-color:var(--bp-rim)!important;
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  color:var(--bp-encre-douce)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) :is(button:disabled,button[aria-disabled="true"]) *{
  color:var(--bp-encre-douce)!important;
  opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) :is(button:disabled,button[aria-disabled="true"]) svg,
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt
) :is(button:disabled,button[aria-disabled="true"]) svg *{
  color:var(--bp-rim)!important;
  fill:currentColor!important;
}

/* Le focus couvre aussi les cartes dotées de role=button et les champs de La
   Tombe. L'outline, extérieur à la boîte, ne réduit ni ne déplace la cible. */
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-panel,
  .lgv2-night-panel,
  .lgv2-mayor-stage,
  .lgv2-morning-panel,
  .lgv2-role-interrupt,
  .lgv2-grave-drawer
) :is(button,input,select,textarea,[role="button"][tabindex]):focus-visible,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-bottom-bar button:focus-visible{
  outline:3px solid var(--bp-or-fort);
  outline-offset:3px;
}

/* ==========================================================================
   6.86.0 — CEREMONIE PREMIUM DU NOUVEAU MAIRE
   ========================================================================== */

/* Après la cérémonie, le Narrateur retrouve une synthèse compacte et l'action
   de nuit. L'ancien grand résultat statique n'est plus rendu. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage.lgv2-mayor-after{
  min-height:0!important;display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;
  align-items:center!important;gap:8px 12px!important;padding:9px 10px!important;
}
#lg-v2.lgv2 .lgv2-mayor-after__head{min-width:0;display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:9px}
#lg-v2.lgv2 .lgv2-mayor-after__head>span{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;color:var(--bp-or-fort);background:var(--bp-grenat);border:1px solid var(--bp-or)}
#lg-v2.lgv2 .lgv2-mayor-after__head>span svg{width:20px;height:20px;fill:currentColor}
#lg-v2.lgv2 .lgv2-mayor-after__head small{display:block;color:var(--bp-encre-douce)!important;font-size:7.68px!important;letter-spacing:.16em}
#lg-v2.lgv2 .lgv2-mayor-after__head h2{margin:2px 0 1px!important;color:var(--bp-encre)!important;font-size:16px!important}
#lg-v2.lgv2 .lgv2-mayor-after__head p{color:var(--bp-encre-douce)!important;font-size:8.32px!important}
#lg-v2.lgv2 .lgv2-mayor-after__identity{display:flex;align-items:center;gap:7px}
#lg-v2.lgv2 .lgv2-mayor-after__identity>span{width:40px;height:40px;padding:2px;border-radius:50%;background:linear-gradient(145deg,var(--bp-or-fort),var(--bp-grenat))}
#lg-v2.lgv2 .lgv2-mayor-after__identity>span img{width:100%;height:100%;object-fit:cover;border-radius:50%;border:1px solid var(--bp-carte-1)}
#lg-v2.lgv2 .lgv2-mayor-after__identity>div{display:flex;align-items:center;gap:4px;padding:5px 7px;border:1px solid var(--bp-or-doux);border-radius:999px;color:var(--bp-encre-douce)!important;background:var(--bp-carte-1)}
#lg-v2.lgv2 .lgv2-mayor-after__identity>div svg{width:11px;height:11px;fill:currentColor}
#lg-v2.lgv2 .lgv2-mayor-after__identity>div b{font-size:6.72px;letter-spacing:.08em;white-space:nowrap}
#lg-v2.lgv2 .lgv2-mayor-after .lgv2-night-start,
#lg-v2.lgv2 .lgv2-mayor-after .lgv2-night-await{grid-column:1/-1;margin:0!important}

/* `lgv2-succession-scene` reste un alias de compatibilité pour une partie
   ouverte avec l'ancien client ; aucun ancien gabarit n'est encore émis. */
.lgv2-mayor-ceremony.lgv2-succession-scene{
  --mc-wine:#741631;--mc-deep:#300611;--mc-gold:#d7ad5e;--mc-gold-light:#ffe8ad;--mc-cream:#fff7e8;
  position:fixed;inset:0;z-index:2147483000;display:block;padding:0;color:var(--mc-cream);
  background:rgba(8,3,5,.76);overflow:hidden;opacity:0;isolation:isolate;
  font-family:Georgia,"Times New Roman",serif;-webkit-tap-highlight-color:transparent;animation:none;
}
.lgv2-mayor-ceremony.is-live{animation:lgv2-mayor-ceremony-in .55s ease-out both}
.lgv2-mayor-ceremony.is-leaving{animation:lgv2-mayor-ceremony-out .45s ease-in both}
.lgv2-mayor-ceremony *{box-sizing:border-box}
.lgv2-mayor-ceremony button{font:inherit;color:inherit;cursor:pointer}
.lgv2-mayor-ceremony__viewport{position:relative;width:min(100%,560px);height:100%;min-height:min(480px,var(--lgvh,100dvh));margin:0 auto;overflow:hidden;background:transparent;box-shadow:0 0 80px rgba(0,0,0,.65)}
.lgv2-mayor-ceremony__veil,.lgv2-mayor-ceremony__bloom,.lgv2-mayor-ceremony__rays,.lgv2-mayor-ceremony__rings,.lgv2-mayor-ceremony__sparks{position:absolute;inset:0;pointer-events:none}
.lgv2-mayor-ceremony__veil{z-index:1;opacity:0;background:radial-gradient(circle at 50% 39%,rgba(93,25,45,.2) 0 17%,rgba(24,6,12,.53) 49%,rgba(6,2,4,.94) 100%),linear-gradient(180deg,rgba(10,4,6,.58),rgba(53,8,22,.72));-webkit-backdrop-filter:saturate(.76) brightness(.68) blur(1px);backdrop-filter:saturate(.76) brightness(.68) blur(1px)}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__veil{animation:lgv2-mayor-veil-in .75s ease-out both}
.lgv2-mayor-ceremony__bloom{z-index:2;inset:4% -28% -2%;opacity:0;transform:scale(.42);filter:blur(4px);background:radial-gradient(circle at 50% 43%,rgba(255,236,177,.5) 0 3%,rgba(212,161,70,.23) 14%,rgba(108,20,48,.13) 34%,transparent 64%)}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__bloom{animation:lgv2-mayor-bloom 5.6s cubic-bezier(.18,.77,.22,1) .38s both}
.lgv2-mayor-ceremony__rays{z-index:2;inset:-28%;opacity:0;background:repeating-conic-gradient(from 8deg at 50% 43%,rgba(255,223,145,.17) 0 3deg,transparent 3deg 17deg);-webkit-mask-image:radial-gradient(circle at 50% 43%,#000 0 11%,transparent 64%);mask-image:radial-gradient(circle at 50% 43%,#000 0 11%,transparent 64%)}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__rays{animation:lgv2-mayor-rays-in 5.8s ease-out .45s both,lgv2-mayor-rays-turn 22s linear .45s infinite}
.lgv2-mayor-ceremony__rings{z-index:3;display:grid;place-items:center;transform:translateY(-1.5%)}
.lgv2-mayor-ceremony__rings i{position:absolute;width:118px;aspect-ratio:1;border:1px solid rgba(255,226,157,.78);border-radius:50%;opacity:0;box-shadow:0 0 18px rgba(235,186,89,.18)}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__rings i:nth-child(1){animation:lgv2-mayor-ring 1.7s cubic-bezier(.16,.76,.24,1) 1.32s both}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__rings i:nth-child(2){animation:lgv2-mayor-ring 1.9s cubic-bezier(.16,.76,.24,1) 1.68s both}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__rings i:nth-child(3){animation:lgv2-mayor-ring 2.1s cubic-bezier(.16,.76,.24,1) 2.02s both}
.lgv2-mayor-ceremony__sparks{z-index:4}
.lgv2-mayor-ceremony__sparks i{position:absolute;left:50%;top:45%;width:var(--size);height:calc(var(--size)*.36);border-radius:999px;opacity:0;background:linear-gradient(90deg,transparent,var(--mc-gold-light),#fff,var(--mc-gold));box-shadow:0 0 8px rgba(255,222,141,.82)}
.lgv2-mayor-ceremony__sparks i:nth-child(3n){height:var(--size);border-radius:50%}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__sparks i{animation:lgv2-mayor-spark-burst var(--duration) cubic-bezier(.12,.63,.18,1) var(--delay) both}
.lgv2-mayor-ceremony__stage{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:74px 22px 116px;text-align:center;pointer-events:none}
.lgv2-mayor-ceremony__overline{margin:0 0 11px;color:var(--mc-gold-light);opacity:0;font:800 clamp(10.56px,2.8vw,13.76px)/1 Arial,Helvetica,sans-serif;letter-spacing:.28em;text-indent:.28em;text-transform:uppercase;text-shadow:0 2px 14px rgba(0,0,0,.95)}
.lgv2-mayor-ceremony__overline::before,.lgv2-mayor-ceremony__overline::after{content:"";display:inline-block;width:clamp(22px,7vw,42px);height:1px;margin:0 9px 3px;background:linear-gradient(90deg,transparent,currentColor)}
.lgv2-mayor-ceremony__overline::after{background:linear-gradient(90deg,currentColor,transparent)}
.lgv2-mayor-ceremony .lgv2-throne-fly{position:relative;left:auto;top:auto;z-index:2;width:62px;height:50px;display:grid;place-items:center;margin-bottom:-4px;color:var(--mc-gold-light);opacity:0;filter:drop-shadow(0 10px 12px rgba(0,0,0,.64))}
.lgv2-mayor-ceremony .lgv2-throne-fly svg{width:58px;height:48px;fill:currentColor}
.lgv2-mayor-ceremony.is-live .lgv2-throne-fly{animation:lgv2-mayor-crown-drop 1.25s cubic-bezier(.15,.86,.23,1.15) .7s both,lgv2-mayor-crown-float 2.6s ease-in-out 2s infinite}
.lgv2-mayor-ceremony__portrait{position:relative;width:clamp(98px,31vw,142px);aspect-ratio:1;border-radius:50%;opacity:0;transform:scale(.48);filter:drop-shadow(0 16px 24px rgba(0,0,0,.64))}
.lgv2-mayor-ceremony__portrait::before,.lgv2-mayor-ceremony__portrait::after{content:"";position:absolute;border-radius:50%;pointer-events:none}
.lgv2-mayor-ceremony__portrait::before{inset:-8px;padding:5px;background:conic-gradient(from 18deg,#8b5723,#ffe7a1 18%,#bc7e32 39%,#fff1bd 58%,#7d451d 78%,#e8bf6d);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;box-shadow:0 0 0 3px rgba(105,15,39,.95)}
.lgv2-mayor-ceremony__portrait::after{inset:-27px;border:1px solid rgba(255,226,156,.34);box-shadow:0 0 24px rgba(224,174,82,.2)}
.lgv2-mayor-ceremony__portrait img{width:100%;height:100%;object-fit:cover;border:3px solid #f8d78e;border-radius:50%;background:#092a40}
.lgv2-mayor-ceremony__laurel{position:absolute;top:35%;z-index:-1;color:#dfba69;font-size:74px;line-height:1;opacity:.82;text-shadow:0 0 12px rgba(229,184,98,.22)}
.lgv2-mayor-ceremony__laurel.is-left{right:80%;transform:rotate(-34deg)}
.lgv2-mayor-ceremony__laurel.is-right{left:80%;transform:scaleX(-1) rotate(-34deg)}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__portrait{animation:lgv2-mayor-portrait-in 1.05s cubic-bezier(.14,.84,.21,1.12) 1.3s both}
.lgv2-mayor-ceremony__stage h1{max-width:92%;margin:19px 0 0;color:var(--mc-cream);opacity:0;font:800 clamp(34.4px,10.8vw,72px)/.9 Georgia,"Times New Roman",serif;letter-spacing:.035em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 2px 0 #45101e,0 9px 22px rgba(0,0,0,.88),0 0 22px rgba(218,166,73,.24)}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__stage h1{animation:lgv2-mayor-name-in .86s cubic-bezier(.18,.76,.18,1) 2.05s both}
.lgv2-mayor-ceremony__title{margin:9px 0 0;color:var(--mc-gold-light);opacity:0;font:800 clamp(11.52px,3.5vw,16.8px)/1 Arial,Helvetica,sans-serif;letter-spacing:.27em;text-indent:.27em;text-shadow:0 3px 14px rgba(0,0,0,.9)}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__title{animation:lgv2-mayor-letter-in .72s ease-out 2.65s both}
.lgv2-mayor-ceremony__decree{margin:15px 0 0;color:rgba(255,247,230,.88);opacity:0;font:400 clamp(12.48px,3.25vw,17.28px)/1.38 Georgia,"Times New Roman",serif;letter-spacing:.02em;text-shadow:0 2px 10px rgba(0,0,0,.92)}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__decree{animation:lgv2-mayor-soft-rise .72s ease-out 3.15s both}
.lgv2-mayor-ceremony__seal{display:inline-flex;align-items:center;gap:8px;margin-top:16px;padding:9px 18px;border:1px solid rgba(255,225,155,.7);border-radius:999px;color:#fff1c8;opacity:0;background:linear-gradient(180deg,rgba(116,22,49,.9),rgba(54,7,20,.94));box-shadow:inset 0 0 0 2px rgba(255,230,171,.07),0 8px 22px rgba(0,0,0,.45)}
.lgv2-mayor-ceremony__seal svg{width:17px;height:17px;fill:currentColor}
.lgv2-mayor-ceremony__seal b{font:800 clamp(9.28px,2.45vw,12.48px)/1 Arial,Helvetica,sans-serif;letter-spacing:.18em}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__seal{animation:lgv2-mayor-seal-in .72s cubic-bezier(.16,.78,.24,1.12) 3.65s both}
.lgv2-mayor-ceremony__sound,.lgv2-mayor-ceremony__skip{position:absolute;top:max(14px,env(safe-area-inset-top,0px));z-index:20;min-width:44px;min-height:44px;border:1px solid rgba(255,229,171,.48);color:#fff2d0;background:rgba(42,8,17,.72);box-shadow:0 6px 18px rgba(0,0,0,.28);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0}
.lgv2-mayor-ceremony__sound{left:14px;display:grid;place-items:center;padding:0;border-radius:50%}
.lgv2-mayor-ceremony__sound svg{width:20px;height:20px;fill:none}
.lgv2-mayor-ceremony__skip{right:14px;padding:0 14px;border-radius:999px;font:700 9.92px/1 Arial,Helvetica,sans-serif;letter-spacing:.12em}
.lgv2-mayor-ceremony.is-live :is(.lgv2-mayor-ceremony__sound,.lgv2-mayor-ceremony__skip){animation:lgv2-mayor-soft-rise .45s ease-out .35s both}
.lgv2-mayor-ceremony__actions{position:absolute;left:16px;right:16px;bottom:max(18px,calc(env(safe-area-inset-bottom,0px) + 10px));z-index:20;display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;opacity:0;transform:translateY(16px);pointer-events:none}
.lgv2-mayor-ceremony.is-live .lgv2-mayor-ceremony__actions{animation:lgv2-mayor-actions-in .55s ease-out 4.8s both}
.lgv2-mayor-ceremony__actions button{min-height:48px;display:flex;align-items:center;justify-content:center;gap:8px;padding:0 15px;border:1px solid rgba(255,230,175,.7);border-radius:999px;background:rgba(52,9,22,.86);color:#fff0cb;box-shadow:0 9px 24px rgba(0,0,0,.38);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);font:800 10.72px/1 Arial,Helvetica,sans-serif;letter-spacing:.13em}
.lgv2-mayor-ceremony__actions button:last-child{color:#380916;background:linear-gradient(180deg,#fff7de,#e9c985 55%,#c69547);box-shadow:inset 0 2px 3px rgba(255,255,255,.72),0 9px 24px rgba(0,0,0,.38)}
.lgv2-mayor-ceremony__actions button svg{width:18px;height:18px;fill:currentColor}
.lgv2-mayor-ceremony__actions button:active{transform:scale(.975)}
.lgv2-mayor-ceremony button:focus-visible{outline:3px solid #fff2bd;outline-offset:3px}
.lgv2-mayor-ceremony__live{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

@keyframes lgv2-mayor-ceremony-in{from{opacity:0}to{opacity:1}}
@keyframes lgv2-mayor-ceremony-out{to{opacity:0;filter:blur(2px)}}
@keyframes lgv2-mayor-veil-in{from{opacity:0}to{opacity:1}}
@keyframes lgv2-mayor-bloom{0%{opacity:0;transform:scale(.4)}24%{opacity:1}58%{opacity:.76;transform:scale(1.08)}100%{opacity:.58;transform:scale(1)}}
@keyframes lgv2-mayor-rays-in{0%{opacity:0}22%{opacity:.72}100%{opacity:.42}}
@keyframes lgv2-mayor-rays-turn{to{transform:rotate(1turn)}}
@keyframes lgv2-mayor-ring{0%{opacity:0;transform:scale(.35)}16%{opacity:.72}100%{opacity:0;transform:scale(4.5)}}
@keyframes lgv2-mayor-spark-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(0)}12%{opacity:1}68%{opacity:.86}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.72) rotate(var(--turn))}}
@keyframes lgv2-mayor-crown-drop{0%{opacity:0;transform:translateY(-34vh) rotate(-10deg) scale(.68)}62%{opacity:1}82%{transform:translateY(5px) rotate(2deg) scale(1.07)}100%{opacity:1;transform:none}}
@keyframes lgv2-mayor-crown-float{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-5px) rotate(1deg)}}
@keyframes lgv2-mayor-portrait-in{0%{opacity:0;transform:scale(.45) rotate(-8deg);filter:blur(10px) drop-shadow(0 12px 20px rgba(0,0,0,.5))}70%{opacity:1;transform:scale(1.07) rotate(1deg);filter:blur(0) drop-shadow(0 16px 24px rgba(0,0,0,.64))}100%{opacity:1;transform:none}}
@keyframes lgv2-mayor-name-in{0%{opacity:0;transform:scale(.78) translateY(12px);filter:blur(8px)}70%{opacity:1;transform:scale(1.04);filter:none}100%{opacity:1;transform:none}}
@keyframes lgv2-mayor-letter-in{from{opacity:0;transform:translateY(10px);filter:blur(5px);letter-spacing:.46em}to{opacity:1;transform:none;filter:none}}
@keyframes lgv2-mayor-soft-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes lgv2-mayor-seal-in{from{opacity:0;transform:scale(.8) translateY(8px)}to{opacity:1;transform:none}}
@keyframes lgv2-mayor-actions-in{to{opacity:1;transform:none;pointer-events:auto}}

@media(max-height:720px){
  .lgv2-mayor-ceremony__stage{padding-top:58px;padding-bottom:92px}
  .lgv2-mayor-ceremony__overline{margin-bottom:7px}
  .lgv2-mayor-ceremony .lgv2-throne-fly{width:50px;height:40px;margin-bottom:-3px}
  .lgv2-mayor-ceremony .lgv2-throne-fly svg{width:48px;height:39px}
  .lgv2-mayor-ceremony__portrait{width:clamp(82px,25vw,112px)}
  .lgv2-mayor-ceremony__stage h1{margin-top:14px;font-size:clamp(28.8px,9.2vw,51.2px)}
  .lgv2-mayor-ceremony__decree{margin-top:11px;font-size:12.16px}
  .lgv2-mayor-ceremony__seal{margin-top:11px;padding-block:7px}
  .lgv2-mayor-ceremony__actions button{min-height:44px}
}
@media(max-width:350px){
  .lgv2-mayor-ceremony__overline::before,.lgv2-mayor-ceremony__overline::after{width:16px;margin-inline:6px}
  .lgv2-mayor-ceremony__actions{grid-template-columns:46px minmax(0,1fr)}
  .lgv2-mayor-ceremony__actions button:first-child{padding:0;font-size:0}
  .lgv2-mayor-ceremony__actions button:first-child svg{width:20px;height:20px}
}
@media(prefers-reduced-motion:reduce){
  .lgv2-mayor-ceremony,.lgv2-mayor-ceremony *,.lgv2-mayor-ceremony *::before,.lgv2-mayor-ceremony *::after{animation-duration:.01ms!important;animation-delay:0ms!important;animation-iteration-count:1!important}
  .lgv2-mayor-ceremony__veil,.lgv2-mayor-ceremony__bloom,.lgv2-mayor-ceremony__rays,.lgv2-mayor-ceremony__overline,.lgv2-mayor-ceremony .lgv2-throne-fly,.lgv2-mayor-ceremony__portrait,.lgv2-mayor-ceremony__stage h1,.lgv2-mayor-ceremony__title,.lgv2-mayor-ceremony__decree,.lgv2-mayor-ceremony__seal,.lgv2-mayor-ceremony__sound,.lgv2-mayor-ceremony__skip,.lgv2-mayor-ceremony__actions{opacity:1;transform:none;pointer-events:auto}
}

/* ==========================================================================
   6.87.0 — LA RELANCE : reprise signalée, rejouer sur place, sortie d'égalité.

   UNE SEULE COUCHE. Ces règles n'écrasent rien : elles décrivent des éléments
   qui n'existaient pas. Aucun !important, aucune redéfinition d'un sélecteur
   déjà habillé plus haut, aucune animation en boucle.

   Les tailles suivent celles de leurs voisins immédiats (.lgv2-resume__copy
   small = 9.6px, .lgv2-victory-cta button = 10.56px) : rien ne grossit, rien
   ne prend de place en plus.
   ========================================================================== */

/* --- Le bouton de reprise dit ce qu'il faut faire ---------------------- */
.lgv2-resume__quoifaire{
  display:block;margin-top:1px;
  font:600 8.8px/1.2 var(--sans);font-style:normal;
  color:#e8cfa6;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
/* On attend le joueur : le bord s'éclaire, la pastille s'allume. Pas de
   clignotement — un signal permanent se voit aussi bien et ne fatigue pas. */
.lgv2-resume.is-urgent{
  border-color:#f1cf82;
  box-shadow:0 10px 24px rgba(91,8,29,.32),inset 0 1px 0 rgba(255,226,178,.24),0 0 0 1px rgba(241,207,130,.55);
}
.lgv2-resume.is-urgent .lgv2-resume__quoifaire{color:#ffe6b4}
.lgv2-resume__sigil{position:relative}
.lgv2-resume__pastille{
  position:absolute;top:-1px;right:-1px;
  width:11px;height:11px;border-radius:50%;
  background:#f1cf82;border:2px solid #5c091f;
  pointer-events:none;
}

/* --- Rejouer dans le même salon --------------------------------------- */
.lgv2-victory-cta{display:grid;gap:9px;justify-items:center}
.lgv2-victory-cta button.is-replay{
  display:inline-grid;grid-auto-flow:column;align-items:center;gap:9px;
  background:linear-gradient(177deg,#247b48 0%,#1b6f3e 52%,#14542f 100%);
  border-color:rgba(146,232,178,.78);
}
.lgv2-victory-cta button.is-replay > span{display:grid;justify-items:center;line-height:1.1}
.lgv2-victory-cta button.is-replay small{
  display:block;margin-top:2px;
  font:600 8.32px/1.15 var(--sans);letter-spacing:.02em;
  color:#dff3e4;text-transform:none;
}
.lgv2-victory-cta button.is-replay svg{width:15px;height:15px;fill:currentColor}
.lgv2-victory-cta button.is-replay:disabled{opacity:.62;cursor:default}
.lgv2-victory-wait{
  margin:0;max-width:31ch;text-align:center;
  font:600 8.64px/1.35 var(--sans);color:#e6d2b4;
}

/* --- La sortie d'une égalité qui se répète ----------------------------- */
/* Le libellé porte une seconde ligne d'explication : sans elle, « le village
   n'a pas tranché » ne dit pas ce qui va se passer ensuite. */
.lgv2-day-panel.is-tie .lgv2-day-primary > span{display:grid;justify-items:center;line-height:1.12}
.lgv2-day-panel.is-tie .lgv2-day-primary > span small{
  display:block;margin-top:2px;
  font:600 8px/1.15 var(--sans);letter-spacing:.01em;text-transform:none;
}

/* ==========================================================================
   6.88.0 — LE TEMOIN DE VERSION DE LA FEUILLE DE STYLE.

   app.js lit cette valeur et la compare a celle que la page annonce. Si les
   deux different, le navigateur rejoue une ANCIENNE feuille : le jeu le dit
   au joueur au lieu de s'afficher de travers en silence.

   C'est un jeton, pas un style : il ne peint rien et ne coute rien.
   Un banc verrouille son egalite avec la version du plugin a la livraison.
   ========================================================================== */

/* ==========================================================================
   7.0.68 — MISSION I · FIL DU VOTE DU JOUR « VOTANT → VISÉ »
   Une seule couche gagnante. Le vote du maire (.lgv2-ballot-voters) est hors
   périmètre. Les tailles des noms reprennent exactement la dernière règle
   gagnante 7.0.67 (clamp(10.56px,2.7vw,12.16px)).
   ========================================================================== */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-public-vote-history.is-full{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  gap:6px!important;
  width:100%;
  max-width:100%;
  max-height:32vh!important;
  min-height:34px;
  padding:0 2px 0 0;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  scroll-behavior:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  box-sizing:border-box;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-tally{
  grid-column:1/-1;
  position:sticky;top:0;z-index:2;
  min-width:0;min-height:0!important;
  display:flex;align-items:center;justify-content:center;gap:6px;
  padding:4px 8px!important;margin:0;
  border:1px solid var(--bp-or-doux)!important;border-radius:10px!important;
  background:linear-gradient(180deg,var(--bp-champ-1),var(--bp-champ-2))!important;
  box-sizing:border-box;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-tally b{
  color:var(--bp-encre)!important;font:800 9.92px/1 var(--serif)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-tally span{
  color:var(--bp-encre-douce)!important;font:inherit;font-size:7.04px!important;letter-spacing:.04em;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-pair{
  position:relative;
  min-width:0;
  width:100%;
  min-height:32px;
  margin:0!important;
  padding:4px 5px;
  border:1px solid var(--bp-or-doux)!important;
  border-radius:12px!important;
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  color:var(--bp-encre)!important;
  box-sizing:border-box;
  display:grid;
  grid-template-columns:minmax(0,1fr) 14px minmax(0,1fr);
  align-items:center;
  gap:4px;
  overflow:hidden;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-pair__person{
  min-width:0;
  display:flex;
  align-items:center;
  gap:4px;
  overflow:hidden;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-pair__person img{
  width:24px!important;height:24px!important;min-width:24px;
  border:1.5px solid var(--bp-or)!important;border-radius:50%;object-fit:cover;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-pair__person b{
  min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--bp-encre)!important;text-shadow:none!important;
  font-family:var(--serif)!important;font-weight:700!important;
  font-size:clamp(10.56px,2.7vw,12.16px)!important;line-height:1.05;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-pair__arrow{
  width:14px;height:14px;overflow:visible;
  fill:none;stroke:#1E7A45;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;
  filter:drop-shadow(0 0 3px rgba(30,122,69,.35));
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-pair.is-pending{
  grid-template-columns:minmax(0,1fr) 14px;
  border-color:var(--bp-or-doux)!important;
  opacity:.68!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-pair__wait{
  width:14px;height:14px;fill:none;stroke:#A88439;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-pair.is-current{
  opacity:1!important;
  border-color:var(--bp-or)!important;
  background:linear-gradient(180deg,var(--bp-btn-1),var(--bp-btn-2))!important;
  box-shadow:inset 0 0 0 1px var(--bp-lueur),0 0 0 1px rgba(201,169,107,.18)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-pair.is-empty{
  grid-column:1/-1;
  display:flex;align-items:center;justify-content:center;
  min-height:32px;
  color:var(--bp-encre-douce)!important;
  font-size:clamp(9.6px,2.5vw,11.2px)!important;
  text-align:center;
}

:root{--lg-css-version:"7.11.0"}

/* ==========================================================================
   6.91.0 — LE JEU DÉCIDE DE LA TAILLE DE SON TEXTE.

   AVANT. Les 820 tailles du jeu étaient exprimées en « rem ». Or « rem » se
   calcule TOUJOURS depuis la balise <html>, qui appartient au thème — jamais
   au plugin. La taille de chaque texte du jeu dépendait donc d'une valeur que
   le plugin ne possède pas : un changement de thème, une mise à jour, ou un
   réglage d'accessibilité du navigateur, et toute l'interface se disloquait.

   APRÈS. Les 820 valeurs sont exprimées en pixels, calculées sur la base de
   référence de 16px (la taille par défaut d'un navigateur). Vérifié dans un
   vrai Chromium : 3 903 règles retenues avant et après, 734 déclarations de
   texte, TOUTES rendues à la même taille au pixel près. Rien n'a bougé — le
   texte reste exactement aussi petit qu'avant, comme demandé.

   La taille de base est aussi posée sur #lg-v2 ci-dessus, pour les rares
   textes qui n'ont pas de taille propre : eux non plus n'héritent plus du
   thème.

   RÈGLE POUR LA SUITE. Aucune nouvelle valeur en « rem » dans cette feuille :
   elle rebrancherait la dépendance qu'on vient de couper. Le banc
   tests/v6910-typographie.js le refuse.
   ========================================================================== */

/* ==========================================================================
   6.93.0 — UN SEUL ANNEAU DE FOCUS, POUR TOUT LE JEU.

   La mesure dans Chromium relevait 78 éléments interactifs dont l'anneau de
   focus restait celui du navigateur (outline 1px auto) : invisible sur les
   panneaux sombres. Dix règles :focus-visible existaient, mais chacune était
   scopée à un écran précis — dès qu'un bouton naissait ailleurs, il repartait
   sans anneau, et personne ne le voyait.

   Une seule règle, non scopée, couvre désormais TOUT ce qui peut recevoir le
   focus dans le jeu. Elle est volontairement placée en fin de feuille et hors
   de toute @layer : c'est la dernière à parler, elle ne peut pas être battue
   par une règle d'écran.

   AUCUN COÛT D'ESPACE. Un anneau de focus n'apparaît qu'à la navigation au
   clavier ou au lecteur d'écran — jamais au doigt. Sur téléphone, ce bloc est
   invisible. Il ne prend pas un pixel de l'écran.
   ========================================================================== */
#lg-v2.lgv2 :is(button, a[href], input, select, textarea, summary, [tabindex]:not([tabindex="-1"]), [role="button"]):focus-visible{
  outline:3px solid var(--lg-focus, #ffd98c);
  outline-offset:2px;
  border-radius:inherit;
}
/* Sur fond clair, l'or pâle ne se détache pas : on double d'un liseré sombre
   pour que l'anneau reste visible des deux côtés du jeu. */
#lg-v2.lgv2 .lgv2-day-panel :is(button, [role="button"]):focus-visible,
#lg-v2.lgv2 .lgv2-morning-panel :is(button, [role="button"]):focus-visible{
  outline-color:#8a1730;
}


/* ==========================================================================
   6.95.0 — LA PALETTE DU JEU VIT SUR LA RACINE, PAS SUR UN SEUL ÉCRAN.

   Les jetons --bp-* n'existaient que sur .lgv2-circle-screen. Tout ce qui
   flotte AU-DESSUS du jeu — la Tombe, son bouton d'appel, les pastilles de
   salon — est en position fixe et vit donc HORS de cet écran : ces éléments
   ne voyaient aucun jeton. C'est une des raisons pour lesquelles la partie
   joueur avait gardé ses vieilles couleurs : elle ne pouvait pas hériter de
   celles du Narrateur.

   Les jetons sont désormais posés sur la racine du jeu, et la bascule nuit
   suit l'écran de partie grâce à :has(). Le joueur et le Narrateur puisent
   à la même source, de jour comme de nuit.
   ========================================================================== */
#lg-v2.lgv2{--bp-champ-1:#F1E8DC;--bp-champ-2:#E4D9C9;--bp-rim:#6A5642;--bp-lueur:#FBF6EC;--bp-or:#C9A96B;--bp-or-fort:#E7CB94;--bp-or-doux:rgba(160,130,78,.40);--bp-encre:#392817;--bp-encre-douce:#6E5B45;--bp-sourcil:#6B563C;--bp-btn-1:#FBF3E4;--bp-btn-2:#E9DECA;--bp-btn-encre:#33251A;--bp-carte-1:#EFE7DB;--bp-carte-2:#E8DFD1;--bp-medaille-1:#9A7C55;--bp-medaille-2:#6F5738;--bp-accent:#7A2033;--bp-icone-gap:8px;--bp-ombre:0 14px 34px rgba(48,30,16,.30)}
#lg-v2.lgv2:has(.lgv2-circle-screen.is-night-mode){--bp-champ-1:#251B14;--bp-champ-2:#150F0B;--bp-rim:#0B0705;--bp-lueur:rgba(255,240,208,.13);--bp-or:#C9A96B;--bp-or-fort:#EEDAAA;--bp-or-doux:rgba(201,169,107,.34);--bp-encre:#F7EDDA;--bp-encre-douce:#CDB99C;--bp-sourcil:#DCC084;--bp-btn-1:#37271B;--bp-btn-2:#1D140E;--bp-btn-encre:#F9EFDB;--bp-carte-1:#38281C;--bp-carte-2:#20160F;--bp-medaille-1:#6E5636;--bp-medaille-2:#3E2F1D;--bp-accent:#8E2438;--bp-icone-gap:8px;--bp-ombre:0 14px 34px rgba(0,0,0,.52)}


/* ==========================================================================
   6.96.0 — L'EN-TETE DU JOUEUR RESPIRE ET PARLE LA LANGUE DU NARRATEUR.

   Trois defauts visibles sur une seule capture, une seule cause : la regle
   d'en-tete du Narrateur s'appliquait au joueur (corrigee ci-dessus). Restait
   a rendre au titre le droit de passer a la ligne, et a remplacer les
   dernieres couleurs historiques par les jetons.
   ========================================================================== */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-player-head{
  grid-template-columns:minmax(0,1fr);
  justify-items:center;
  text-align:center;
}
/* Un titre de deux lignes vaut mieux qu'une phrase coupee. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-player-head h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-player-head small{
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
  max-width:100%;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-player-head p{
  max-width:100%;
  text-align:center;
}
/* Les encres du Narrateur, jusque dans le sur-titre : c'est ce grenat-la qui
   depassait de derriere le medaillon. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-player-head small{color:var(--bp-sourcil)}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-player-head h2{color:var(--bp-encre)}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-player-head p{color:var(--bp-encre-douce)}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-player-head>span{color:var(--bp-encre)}


/* ==========================================================================
   6.96.0 — LA PASTILLE DE NOTIFICATION DE LA BARRE DU BAS.

   Elle n'avait AUCUNE regle : « .lgv2-bottom-badge » n'apparaissait nulle part
   dans la feuille. Elle heritait donc d'un fond grenat generique et gardait
   son texte en NOIR — illisible, et de la mauvaise couleur. Un element rendu
   sans style est un oubli, pas un choix.

   Elle prend desormais l'accent du Narrateur, avec une encre claire posee
   dessus, et un cerclage qui la detache du bouton quel que soit le fond.
   ========================================================================== */
#lg-v2.lgv2 .lgv2-bottom-badge{
  position:absolute;
  top:-6px;
  right:10px;
  min-width:18px;
  height:18px;
  padding:0 5px;
  display:grid;
  place-items:center;
  border-radius:999px;
  background:var(--bp-accent);
  color:#FFF3E2;
  border:2px solid var(--bp-champ-1);
  box-shadow:0 2px 6px rgba(0,0,0,.28);
  font:800 9.6px/1 var(--sans);
  font-style:normal;
  letter-spacing:.02em;
  pointer-events:none;
}
#lg-v2.lgv2 .lgv2-bottom-btn{position:relative}

/* ==========================================================================
   6.97.0 — LA PLACE DU VILLAGE, DESSINÉE DANS LE JEU.

   Le décor validé en pages autonomes remplace les images d'arène, qui sont
   SUPPRIMÉES du disque. Toute la géométrie est calée sur --aw, la largeur du
   plateau : le médaillon dessiné est EXACTEMENT l'ellipse que le transform
   des avatars parcourt (a = 0,41·aw ; b = 0,2173·aw ; centre à 0,625·aw) —
   les joueurs se posent SUR le trait, au pixel.

   Le jour vit dans les jetons --sc-* ci-dessous ; la nuit les remplace sous
   .is-night-mode, comme partout ailleurs. Animations : transform et opacité
   uniquement. Sous le médaillon : RIEN — la place appartient aux panneaux.
   ========================================================================== */
#lg-v2.lgv2 .lgv2-square{
  position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;
  --aw:min(100vw,460px);   /* meme definition que le plateau : autonome */
  /* 6.97.3 — Plus de bleu derriere les arbres : une brume chaude, dans la
     meme famille que la pierre. Ce qui passe entre les cimes se lit comme
     une lumiere de matin, plus comme une bande de ciel rapportee. */
  --sc-ciel-1:#D9C7A4;--sc-ciel-2:#EDE1C8;
  --sc-pierre-1:#E2C697;--sc-pierre-2:#D2B283;--sc-pierre-3:#BE9C6C;
  --sc-grav:#A8865A;--sc-filet:#EAD3A6;--sc-dalle-1:#E9CFA0;--sc-dalle-2:#E2C393;
  --sc-pin:#4C6237;--sc-pin-2:#39492A;--sc-feuille:#5E7440;--sc-feuille-2:#8CA35C;
  --sc-bal-1:#D8C29A;--sc-bal-2:#B99F73;--sc-main:#EAD6AF;--sc-socle:#B3936A;
  --sc-fl-b:#FFF6E8;--sc-fl-r:#E5A9A0;--sc-fl-o:#E7C067;--sc-coeur:#D8A23C;
  --sc-lisiere:url('../images/lisiere-jour.webp');
  --sc-etoiles:0;--sc-flaques:0;--sc-mers:0;
  --sc-orbe-1:#FFF4D2;--sc-orbe-2:#FFE9A6;--sc-halo:rgba(255,236,180,.4);
  --sc-vignette:rgba(20,27,42,.15);
  background:linear-gradient(180deg,var(--sc-ciel-1) 0%,var(--sc-ciel-2) calc(var(--aw)*.028),var(--sc-pierre-1) calc(var(--aw)*.05))}
#lg-v2.lgv2 .lgv2-circle-screen.is-night-mode .lgv2-square{
  --sc-ciel-1:#0D1730;--sc-ciel-2:#243A60;
  --sc-pierre-1:#9C8767;--sc-pierre-2:#8B755A;--sc-pierre-3:#776249;
  --sc-grav:#5F4B34;--sc-filet:#B49A70;--sc-dalle-1:#9F8968;--sc-dalle-2:#937D5F;
  --sc-pin:#2C3A20;--sc-pin-2:#1E2815;--sc-feuille:#3A4A28;--sc-feuille-2:#55683B;
  --sc-bal-1:#9B8262;--sc-bal-2:#79634A;--sc-main:#A38A64;--sc-socle:#6B573F;
  --sc-fl-b:#E6DEC9;--sc-fl-r:#B08A86;--sc-fl-o:#C6A155;--sc-coeur:#A47E32;
  --sc-lisiere:url('../images/lisiere-nuit.webp');
  --sc-etoiles:1;--sc-flaques:1;--sc-mers:1;
  --sc-orbe-1:#FDF8EA;--sc-orbe-2:#D9CDA9;--sc-halo:rgba(222,226,246,.3);
  --sc-vignette:rgba(3,6,14,.5)}

/* --- la bande haute : ciel, astre, lisière, balustrade ------------------- */
#lg-v2.lgv2 .lgv2-sq-ciel{position:absolute;left:0;right:0;top:0;height:calc(var(--aw)*.16);z-index:1}
#lg-v2.lgv2 .lgv2-sq-etoiles{position:absolute;inset:0;opacity:0;
  background:
    radial-gradient(1.5px 1.5px at 8% 24%,#EDF2FF 50%,transparent 51%),
    radial-gradient(1.3px 1.3px at 18% 10%,#DDE6FA 50%,transparent 51%),
    radial-gradient(1.6px 1.6px at 27% 34%,#F5F8FF 50%,transparent 51%),
    radial-gradient(1.3px 1.3px at 37% 14%,#D6E0F6 50%,transparent 51%),
    radial-gradient(1.5px 1.5px at 48% 28%,#EDF2FF 50%,transparent 51%),
    radial-gradient(1.3px 1.3px at 57% 8%,#DDE6FA 50%,transparent 51%),
    radial-gradient(1.5px 1.5px at 67% 22%,#F5F8FF 50%,transparent 51%),
    radial-gradient(1.4px 1.4px at 84% 30%,#EDF2FF 50%,transparent 51%)}
#lg-v2.lgv2 .lgv2-sq-etoiles.is-b{background:
    radial-gradient(1.4px 1.4px at 12% 44%,#EDF2FF 50%,transparent 51%),
    radial-gradient(1.6px 1.6px at 22% 20%,#F5F8FF 50%,transparent 51%),
    radial-gradient(1.3px 1.3px at 41% 38%,#D6E0F6 50%,transparent 51%),
    radial-gradient(1.5px 1.5px at 62% 42%,#EDF2FF 50%,transparent 51%),
    radial-gradient(1.6px 1.6px at 74% 12%,#F5F8FF 50%,transparent 51%),
    radial-gradient(1.3px 1.3px at 92% 24%,#DDE6FA 50%,transparent 51%)}
#lg-v2.lgv2 .lgv2-circle-screen.is-night-mode .lgv2-sq-etoiles{
  animation:lgv2-sq-scintille 3.8s ease-in-out infinite alternate}
#lg-v2.lgv2 .lgv2-circle-screen.is-night-mode .lgv2-sq-etoiles.is-b{animation-delay:-1.9s}
@keyframes lgv2-sq-scintille{from{opacity:.4}to{opacity:1}}

/* L'astre passe DEVANT la lisiere, sinon elle l'enterrerait : un soleil (ou
   une lune) pose sur la cime des arbres, ce qui est aussi plus juste. */
#lg-v2.lgv2 .lgv2-sq-orbe{z-index:2;position:absolute;right:6%;top:calc(var(--aw)*.018);
  width:calc(var(--aw)*.105);aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle at 34% 30%,var(--sc-orbe-1) 0 52%,var(--sc-orbe-2) 100%);
  box-shadow:0 0 22px 6px var(--sc-halo),0 0 60px 18px var(--sc-halo)}
#lg-v2.lgv2 .lgv2-sq-orbe::before{content:"";position:absolute;inset:0;border-radius:50%;
  opacity:var(--sc-mers);
  background:
    radial-gradient(18% 18% at 36% 38%,rgba(160,150,118,.5) 0 60%,transparent 100%),
    radial-gradient(12% 12% at 58% 30%,rgba(160,150,118,.4) 0 60%,transparent 100%),
    radial-gradient(20% 18% at 52% 62%,rgba(160,150,118,.38) 0 60%,transparent 100%)}

/* La lisiere part du BORD HAUT : il ne reste plus un pixel de ciel visible
   au-dessus des arbres. Sa base ne bouge pas (0,042 + 0,135 = 0,177 x aw),
   c'est sa hauteur qui absorbe la bande bleue. */
#lg-v2.lgv2 .lgv2-sq-foret{position:absolute;left:0;right:0;top:0;
  height:calc(var(--aw)*.177);
  background:var(--sc-lisiere) center bottom/cover no-repeat}
#lg-v2.lgv2 .lgv2-sq-balustrade{position:absolute;left:-6%;right:-6%;
  top:calc(var(--aw)*.158);height:calc(var(--aw)*.05);
  border-radius:50% 50% 0 0/100% 100% 0 0;
  background:
    repeating-linear-gradient(90deg,var(--sc-bal-1) 0 8px,var(--sc-bal-2) 8px 11px,rgba(0,0,0,.10) 11px 12px,var(--sc-bal-2) 12px 15px,var(--sc-bal-1) 15px 22px),
    linear-gradient(180deg,var(--sc-pierre-1),var(--sc-pierre-2));
  box-shadow:inset 0 5px 0 -2px var(--sc-main),inset 0 -4px 0 -2px var(--sc-socle),0 5px 10px -6px rgba(40,24,10,.4)}
#lg-v2.lgv2 .lgv2-sq-lanterne{position:absolute;top:calc(var(--aw)*.132);
  width:calc(var(--aw)*.02);aspect-ratio:.5/1}
#lg-v2.lgv2 .lgv2-sq-lanterne::before{content:"";position:absolute;left:44%;right:44%;top:36%;bottom:0;background:#4B382B}
#lg-v2.lgv2 .lgv2-sq-lanterne::after{content:"";position:absolute;left:0;right:0;top:6%;height:36%;
  background:linear-gradient(180deg,#FFD98C,#E8A94F);
  clip-path:polygon(50% 0,100% 26%,86% 100%,14% 100%,0 26%);
  box-shadow:0 0 10px 3px rgba(255,217,140,.55)}

/* --- l'esplanade : matière autour du médaillon, RIEN en bas -------------- */
#lg-v2.lgv2 .lgv2-sq-esplanade{position:absolute;left:-16%;right:-16%;
  top:calc(var(--aw)*.19);bottom:0;
  border-radius:50% 50% 0 0/14% 14% 0 0;
  background:
    radial-gradient(120% 40% at 50% 4%,var(--sc-dalle-1) 0 30%,transparent 68%),
    linear-gradient(180deg,var(--sc-pierre-1) 0%,var(--sc-pierre-2) 52%,var(--sc-pierre-3) 100%);
  box-shadow:inset 0 12px 24px -16px rgba(40,24,10,.5)}
#lg-v2.lgv2 .lgv2-sq-esplanade::before{content:"";position:absolute;inset:0;
  background:
    repeating-linear-gradient(90deg,rgba(20,16,10,.09) 0 1px,transparent 1px 34px),
    repeating-linear-gradient(0deg,rgba(20,16,10,.07) 0 1px,transparent 1px 26px);
  -webkit-mask:linear-gradient(180deg,#000 0 calc(var(--aw)*.62),transparent calc(var(--aw)*.94));
          mask:linear-gradient(180deg,#000 0 calc(var(--aw)*.62),transparent calc(var(--aw)*.94))}
#lg-v2.lgv2 .lgv2-sq-flaque{position:absolute;top:calc(var(--aw)*.185);
  width:calc(var(--aw)*.11);aspect-ratio:2.4/1;border-radius:50%;
  opacity:var(--sc-flaques);
  background:radial-gradient(closest-side,rgba(255,214,140,.28) 0 30%,rgba(255,214,140,.11) 62%,transparent 100%)}

/* --- le médaillon : l'ellipse EXACTE des avatars -------------------------- */
#lg-v2.lgv2 .lgv2-sq-medaillon{position:absolute;left:50%;
  /* Accroche au meme centre que le cercle des joueurs : haut = centre moins
     le demi-axe vertical. Deplacer le plateau ne peut plus decoller les
     avatars du trait grave. */
  top:calc(var(--cy) - var(--aw)*.2173);
  width:calc(var(--aw)*.82);height:calc(var(--aw)*.4346);
  transform:translateX(-50%);border-radius:50%;
  background:radial-gradient(closest-side,var(--sc-dalle-1) 0 62%,var(--sc-dalle-2) 78%,transparent 79%);
  filter:drop-shadow(0 3px 5px rgba(30,18,8,.22))}
#lg-v2.lgv2 .lgv2-sq-medaillon::before{content:"";position:absolute;inset:0;border-radius:50%;
  border:3px solid var(--sc-grav);
  box-shadow:
    inset 0 2px 0 1px rgba(255,244,220,.5),
    inset 0 0 0 2px var(--sc-filet),
    inset 0 -3px 6px rgba(30,18,8,.3),
    0 0 0 2px var(--sc-filet),0 2px 3px 1px rgba(30,18,8,.35)}
#lg-v2.lgv2 .lgv2-sq-medaillon::after{content:"";position:absolute;inset:4.5%;border-radius:50%;
  background:repeating-conic-gradient(from .4deg,var(--sc-grav) 0deg .7deg,transparent .7deg 2.8deg);
  -webkit-mask:radial-gradient(closest-side,transparent 0 80%,#000 81% 94%,transparent 95%);
          mask:radial-gradient(closest-side,transparent 0 80%,#000 81% 94%,transparent 95%);
  opacity:.5}
#lg-v2.lgv2 .lgv2-sq-rinceau{position:absolute;inset:9% 7.5%;border-radius:50%;
  background:repeating-conic-gradient(from 0deg,rgba(150,116,74,.42) 0deg 1deg,transparent 1deg 3.4deg,rgba(150,116,74,.26) 3.4deg 4.2deg,transparent 4.2deg 6.8deg);
  -webkit-mask:radial-gradient(closest-side,transparent 0 84%,#000 85% 98%,transparent 99%);
          mask:radial-gradient(closest-side,transparent 0 84%,#000 85% 98%,transparent 99%);
  opacity:.55}
#lg-v2.lgv2 .lgv2-sq-filet{position:absolute;inset:19% 16%;border-radius:50%;
  border:2px solid var(--sc-filet);
  box-shadow:0 0 0 1px var(--sc-grav),inset 0 0 0 1px var(--sc-grav)}
#lg-v2.lgv2 .lgv2-sq-orbites{position:absolute;inset:-6.5% -5.5%;border-radius:50%;
  border:2px solid rgba(150,116,74,.30);
  box-shadow:inset 0 0 0 1px rgba(240,222,186,.35)}

/* --- le parterre et ses fleurs -------------------------------------------- */
#lg-v2.lgv2 .lgv2-sq-parterre{position:absolute;inset:24% 22%;border-radius:50%;
  background:
    radial-gradient(60% 70% at 30% 30%,var(--sc-feuille-2) 0 24%,transparent 46%),
    radial-gradient(70% 80% at 72% 34%,var(--sc-feuille) 0 30%,transparent 55%),
    radial-gradient(90% 100% at 50% 62%,var(--sc-pin) 0 48%,var(--sc-pin-2) 78%);
  box-shadow:inset 0 -5px 10px rgba(14,20,8,.45),0 4px 8px -3px rgba(24,14,6,.35)}
#lg-v2.lgv2 .lgv2-sq-parterre::before{content:"";position:absolute;inset:-7% -3%;border-radius:50%;
  background:repeating-conic-gradient(from 4deg,var(--sc-pin) 0deg 4deg,transparent 4deg 9deg,var(--sc-feuille) 9deg 12deg,transparent 12deg 17deg);
  -webkit-mask:radial-gradient(closest-side,transparent 0 78%,#000 80% 96%,transparent 98%);
          mask:radial-gradient(closest-side,transparent 0 78%,#000 80% 96%,transparent 98%);
  opacity:.85}
#lg-v2.lgv2 .lgv2-sq-fleur{position:absolute;width:7px;height:7px;border-radius:50%;
  background:radial-gradient(circle,var(--sc-coeur) 0 42%,#B9812B 60%,transparent 62%);
  --p:var(--sc-fl-b);
  box-shadow:0 -4.6px 0 -1px var(--p),4.4px -1.5px 0 -1px var(--p),2.7px 3.8px 0 -1px var(--p),-2.7px 3.8px 0 -1px var(--p),-4.4px -1.5px 0 -1px var(--p)}
#lg-v2.lgv2 .lgv2-sq-fleur.is-r{--p:var(--sc-fl-r)}
#lg-v2.lgv2 .lgv2-sq-fleur.is-o{--p:var(--sc-fl-o)}

/* --- le cadre -------------------------------------------------------------- */
#lg-v2.lgv2 .lgv2-sq-vignette{position:absolute;left:0;right:0;top:0;height:26%;
  background:linear-gradient(180deg,var(--sc-vignette),transparent 60%)}
@media (prefers-reduced-motion:reduce){
  #lg-v2.lgv2 .lgv2-sq-etoiles{animation:none!important}
}


/* --- 6.97.0 : l'anneau des joueurs, cale au pixel sur le medaillon -------- */
/* L'anneau est ABSOLU, centre par construction sur le centre du medaillon
   (0,625 x aw) : aucun padding, aucune banniere, aucune marge heritee ne
   peut plus les desaligner — ils partagent le meme referentiel. */
/* 6.97.0 — GEOMETRIE UNIQUE DU PLATEAU.

   --aw et --avatar sont declares sur le STAGE, le seul element qui porte a
   la fois la largeur de plateau et --count. L'anneau ET le padding des
   panneaux les HERITENT : une seule source de verite, impossible de les
   desynchroniser.

   --avatar suit l'ecartement REEL sur l'ellipse : le pas minimal entre deux
   voisins vaut 2*PI*b/n avec b = 0,41*aw*0,53 = 0,2173*aw, soit 1,366*aw/n.
   On retire 5 px pour garder de l'air entre deux medaillons.             */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage{
  --aw:min(100vw,460px);
  --avatar:clamp(14px, calc(1.366 * var(--aw) / var(--count, 8) - 9px), 48px);
  /* Hauteur du nom : 8,5 px x 1,2 d'interligne + 2 px de decalage = 12 px. */
  --nom-h:12px;

  /* LE TRAIT QUI SEPARE LA FORET DU SOL. C'est le bas de la balustrade :
     elle commence a 0,158 x aw et fait 0,05 de haut. Mesure au navigateur a
     360, 393 et 430 px : 74,9 / 81,7 / 89,4 px, soit 0,2081 x aw pile. */
  --sol:calc(var(--aw) * .2081);

  /* LA COTE DEMANDEE : le premier avatar se pose a 0,8 cm sous ce trait.
     Exprimee en FRACTION du plateau, jamais en centimetres figes — sinon
     l'ecart resterait constant pendant que le decor grandit, et le cercle
     se remettrait a glisser d'un telephone a l'autre (c'est le defaut
     corrige au lot 6.83.0). 4,59 % vaut 0,50 cm sur un plateau de 412 px,
     et reste entre 0,48 et 0,52 cm sur toute la gamme des telephones.     */
  --marge-haute:calc(var(--aw) * .0459);

  /* LE CENTRE DU PLATEAU s'en deduit, et rien d'autre ne le decide :
       --sol            le trait
     + --marge-haute    les 0,8 cm demandes
     + --avatar/2       du bord haut du premier avatar a son centre
     + 0,2173 x aw      de ce centre au centre de l'ovale (demi-axe vertical)
     L'ovale grave ET le cercle des joueurs s'y accrochent tous les deux :
     ils ne peuvent plus se desolidariser.                                 */
  --cy:calc(var(--sol) + var(--marge-haute) + var(--avatar)/2 + var(--aw) * .2173);
  /* LE BAS REEL DU CERCLE, pas le bas des centres. Le defaut corrige ici :
     la premiere version s'arretait a 0,842*aw, qui est le CENTRE du dernier
     avatar — le panneau recouvrait donc son rayon ET son nom (17 px mesures
     a 8 joueurs). Il faut ajouter les deux, puis le demi-centimetre demande.
       0,8423*aw    centre du dernier avatar (0,625 + 0,2173)
     + --avatar/2   son rayon
     + --nom-h      son nom, pose dessous
     + 19px         le demi-centimetre avant les panneaux                  */
  /* Les panneaux commencent 0,5 cm sous le BAS REEL du cercle :
     centre + demi-axe + rayon de l'avatar + son nom. */
  padding-top:calc(var(--cy) + var(--aw)*.2173 + var(--avatar)/2 + var(--nom-h) + 19px)}

/* L'anneau est absolu, centre par construction sur le centre du medaillon
   (0,625 x aw). Il HERITE --aw et --avatar du stage. Les !important
   neutralisent width/height/margin du lot 6.80.0, qui imposaient encore la
   geometrie de l'ancienne place EN IMAGE. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-player-ring{
  --ring:calc(var(--aw)*.82);
  /* --avatar est REDECLARE ici, pas seulement sur le stage : le lot 6.81.0
     le pose deja sur l'anneau, et les joueurs — enfants de l'anneau —
     heritaient donc de LUI, jamais du stage. C'est ce qui rendait tout
     reglage de taille sans effet. Meme selecteur, regle plus tardive :
     celle-ci gagne. */
  --avatar:clamp(14px, calc(1.366 * var(--aw) / var(--count, 8) - 9px), 48px);
  position:absolute!important;
  left:50%!important;
  top:var(--cy)!important;
  width:var(--ring)!important;
  height:var(--ring)!important;
  transform:translate(-50%,-50%)!important;
  background:none!important;border:0!important;border-radius:0!important;
  margin:0!important;flex:none;z-index:3}
/* Contre-override nuit : meme selecteur que le lot 6.80.0 → meme spec.
   Vient APRES → gagne. Annule le margin-top heurte et l'ancien squash. */
#lg-v2.lgv2 .lgv2-circle-screen.is-night-mode .lgv2-player-ring{
  margin:0!important;
  --squash:.53!important;
}
/* La place de chaque avatar est DITE, pas derivee : left/top viennent de la
   fonction d'arcs egaux, le transform ne fait plus que centrer. Aucune regle
   heritee ne peut le deplacer. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-player{
  position:absolute;left:var(--px,50%);top:var(--py,50%);width:var(--avatar);
  text-align:center;margin:0;
  transform:translate(-50%,-50%)}
/* Le nom : minuscule, UNE ligne, toujours lisible sur la pierre — un lisere
   d'encre sombre le detache du fond, clair le jour comme chaud la nuit. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-player > b{
  display:block;position:absolute;left:50%;top:calc(100% + 2px);
  transform:translateX(-50%);
  /* Largeur MAXIMALE qui ne touche jamais l'avatar voisin : voir le calcul
     ci-dessus. Mesure : 58 px a 6 joueurs, 28 px a 22. Au-dela, le nom
     mordrait sur le visage d'a cote — ce que le banc reel interdit. */
  width:max-content;max-width:calc(var(--avatar) + 10px);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  margin:0;padding:0 3px;border-radius:6px;
  background:none;border:0;box-shadow:none;
  /* 7.0.61 — Blanc PUR sur ombre NOIRE. L'ancien creme #FFF6E6 sur une ombre
     brun chaud de 1 a 3 px disparaissait sur le dallage clair. Le liseré noir
     (paint-order:stroke fill => il passe SOUS le glyphe, l'epaisseur visible
     n'est que la moitie) detache le nom de n'importe quel fond, jour comme
     nuit. La TAILLE NE CHANGE PAS : 8.5px/1.2, comme avant. */
  color:#FFFFFF;
  -webkit-text-stroke:1.4px #000;
  paint-order:stroke fill;
  text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 4px rgba(0,0,0,.85),0 0 1px rgba(0,0,0,1);
  font:700 8.5px/1.2 var(--serif);letter-spacing:.02em}



/* ==========================================================================
   6.97.3 — L'ÉCRAN REVIENT AU JEU.

   MESURE AVANT. Sur 393 x 800, le panneau s'arrêtait à 554 px et la barre du
   bas commençait à 740 : 186 px de décor nu entre les deux, soit 23 % de la
   hauteur de l'écran perdus. Le panneau ne s'étirait pas parce que le stage
   pose ses lignes en `auto` et aligne son contenu en `start` : le panneau
   était dimensionné par son texte, pas par la place disponible.

   TROIS LEVIERS, du plus rentable au moins rentable :
     1. le panneau occupe toute la hauteur libre  (+168 px)
     2. la barre du bas se resserre               (+8 px)
     3. les marges latérales passent de 8 à 4 px  (+8 px de largeur)

   La hauteur tactile des boutons reste à 44 px : en dessous ils deviennent
   difficiles à viser au pouce, et c'est un critère de conformité Play.
   Le gain se prend sur les marges, jamais sur la cible.
   ========================================================================== */

/* --- 1. Le panneau prend toute la hauteur libre -------------------------- */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage{
  grid-template-rows:minmax(0,1fr);
  align-content:stretch;
  gap:0;
  padding-bottom:4px}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-mayor-stage,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-day-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-night-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-morning-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-role-interrupt{
  /* Le stage est rendu en FLEX par une regle anterieure (son
     grid-template-rows est donc ignore) : c'est `flex` qui etire, pas
     `align-self`. On pose les deux, la regle reste juste quel que soit le
     mode de disposition. */
  flex:1 1 auto;
  align-self:stretch;
  min-height:0;
  height:auto;
  max-height:none;
  overflow-y:auto;
  overscroll-behavior:contain}

/* --- 2. Les marges latérales se resserrent ------------------------------- */
/* L'écran passe de 8 à 4 px de marge, et le panneau abandonne la sienne
   (7,7 px héritée) : il occupe désormais toute la largeur du stage.
   Mesuré : 377 -> 385 px de large, soit 8 px repris sur les bords. */
#lg-v2.lgv2 .lgv2-circle-screen{
  padding-inline:4px}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-mayor-stage,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-day-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-night-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-morning-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-role-interrupt{
  /* La regle de base pose `width:100%;max-width:460px;margin:0 auto`, ce qui
     recentrait le panneau et lui laissait 7,7 px de marge de chaque cote.
     On le laisse occuper toute la largeur du stage. */
  margin-inline:0!important;
  width:100%!important;
  max-width:none!important}

/* --- 3. La barre du bas ne garde que le strict nécessaire ---------------- */
#lg-v2.lgv2 .lgv2-bottom-bar{
  padding:4px 6px calc(4px + env(safe-area-inset-bottom,0px))!important;
  gap:6px}
#lg-v2.lgv2 button.lgv2-bottom-btn{
  /* 44 px : le plancher tactile. On ne descend pas en dessous. */
  height:44px!important;
  min-height:44px}

/* ==========================================================================
   6.98.0 — TIROIR D'ACCES RAPIDE, VRAIMENT EN BAS A DROITE.

   AVANT : trois boutons fixes occupaient 52 px sur toute la largeur et
   restaient visuellement en concurrence avec le panneau de jeu.
   APRES : une cible de 44 px respecte le pouce et la safe-area ; les trois
   actions se deploient verticalement au-dessus, sans modifier le flux.
   Les jetons --bp-* portent deja les palettes jour et nuit.
   ========================================================================== */

#lg-v2.lgv2 .lgv2-visually-hidden{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

#lg-v2.lgv2 .lgv2-utility-scrim{
  position:fixed;inset:0;z-index:64;
  display:block;width:100%;height:100%;margin:0;padding:0;border:0;border-radius:0;
  background:rgba(32,21,12,.08);opacity:0;pointer-events:none;
  transition:opacity 180ms ease}
#lg-v2.lgv2 .lgv2-circle-screen.is-night-mode .lgv2-utility-scrim{
  background:rgba(3,2,1,.28)}
#lg-v2.lgv2 .lgv2-utility-scrim.is-open{opacity:1;pointer-events:auto}

#lg-v2.lgv2 .lgv2-utility-dock{
  position:fixed;
  right:max(8px,env(safe-area-inset-right,0px));
  bottom:calc(8px + env(safe-area-inset-bottom,0px));
  z-index:66;width:44px;height:44px;pointer-events:none}

#lg-v2.lgv2 .lgv2-utility-toggle{
  position:absolute;right:0;bottom:0;z-index:2;
  display:grid;place-items:center;width:44px;height:44px;min-width:44px;min-height:44px;
  margin:0;padding:0;border-radius:50%;cursor:pointer;pointer-events:auto;
  border:0;background:transparent;color:var(--bp-btn-encre);box-shadow:none;
  text-shadow:none;
  transition:transform 180ms ease}
#lg-v2.lgv2 .lgv2-utility-toggle::before{
  content:"";position:absolute;inset:3px;border-radius:50%;
  border:1.5px solid var(--bp-or);
  background:linear-gradient(180deg,var(--bp-btn-1),var(--bp-btn-2));
  box-shadow:0 6px 15px rgba(24,13,7,.28),inset 0 1px 0 var(--bp-lueur);
  transition:box-shadow 180ms ease}
#lg-v2.lgv2 .lgv2-utility-toggle svg{
  position:relative;z-index:1;width:17px;height:17px;
  color:var(--bp-btn-encre);fill:currentColor;
  transition:transform 180ms ease}
#lg-v2.lgv2 .lgv2-utility-alert{
  position:absolute;right:-3px;top:-4px;z-index:4;display:grid;place-items:center;
  min-width:18px;height:18px;padding:0 4px;border-radius:999px;border:2px solid var(--bp-champ-1);
  background:#B31332;color:#FFF9EF;box-shadow:0 3px 8px rgba(73,8,24,.34);
  font:900 9px/1 var(--sans);font-style:normal;letter-spacing:0}
#lg-v2.lgv2 .lgv2-utility-dock.is-open .lgv2-utility-toggle::before{
  box-shadow:0 7px 18px rgba(24,13,7,.34),0 0 0 2px var(--bp-or-doux),inset 0 1px 0 var(--bp-lueur)}
#lg-v2.lgv2 .lgv2-utility-dock.is-open .lgv2-utility-toggle svg{transform:rotate(180deg)}
#lg-v2.lgv2 .lgv2-utility-toggle:active{transform:scale(.94)}

#lg-v2.lgv2 .lgv2-utility-dock.is-hinting .lgv2-utility-toggle::after{
  content:"";position:absolute;inset:0;border:1.5px solid var(--bp-or-fort);border-radius:50%;
  pointer-events:none;animation:lgv2-utility-hint 1.35s ease-out 3}
@keyframes lgv2-utility-hint{
  0%{opacity:.78;transform:scale(.78)}
  78%,100%{opacity:0;transform:scale(1.28)}}

#lg-v2.lgv2 .lgv2-utility-menu{
  position:absolute;right:0;bottom:50px;
  display:grid;justify-items:end;gap:6px;
  width:min(160px,calc(100vw - 16px));
  opacity:0;transform:translateY(10px) scale(.97);transform-origin:100% 100%;
  pointer-events:none;visibility:hidden;
  transition:opacity 180ms ease,transform 180ms ease,visibility 0s linear 180ms}
#lg-v2.lgv2 .lgv2-utility-dock.is-open .lgv2-utility-menu{
  opacity:1;transform:none;pointer-events:auto;visibility:visible;
  transition:opacity 180ms ease,transform 180ms ease}

#lg-v2.lgv2 .lgv2-utility-action{
  position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;
  column-gap:8px;width:100%;min-width:0;min-height:44px;margin:0;padding:6px 11px 6px 7px;
  border:1px solid var(--bp-or-doux);border-radius:14px;cursor:pointer;text-align:left;
  background:linear-gradient(180deg,var(--bp-btn-1),var(--bp-btn-2));
  color:var(--bp-btn-encre);box-shadow:0 5px 14px rgba(24,13,7,.24),inset 0 1px 0 var(--bp-lueur);
  font:750 10.5px/1.05 var(--serif);letter-spacing:.01em;text-shadow:none;
  transition:transform 150ms ease,box-shadow 150ms ease,border-color 150ms ease}
#lg-v2.lgv2 .lgv2-utility-action:hover{border-color:var(--bp-or);box-shadow:0 6px 17px rgba(24,13,7,.30),inset 0 1px 0 var(--bp-lueur)}
#lg-v2.lgv2 .lgv2-utility-action:active{transform:translateY(1px) scale(.98)}
#lg-v2.lgv2 .lgv2-utility-action>span:not(.lgv2-utility-icon){
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--bp-btn-encre);text-shadow:none;-webkit-text-stroke:0;opacity:1}
#lg-v2.lgv2 .lgv2-utility-icon{
  display:grid;place-items:center;width:28px;height:28px;border-radius:50%;
  border:1px solid var(--bp-or-doux);
  background:radial-gradient(circle at 35% 30%,var(--bp-medaille-1),var(--bp-medaille-2) 62%,var(--bp-rim));
  color:var(--bp-or-fort);text-shadow:none}
#lg-v2.lgv2 .lgv2-utility-icon svg{width:14px;height:14px;fill:currentColor}
#lg-v2.lgv2 .lgv2-utility-action>i{
  position:absolute;top:-4px;right:7px;display:grid;place-items:center;min-width:16px;height:16px;
  padding:0 4px;border-radius:999px;border:1.5px solid var(--bp-champ-1);
  background:var(--bp-accent);color:#FFF3E2;box-shadow:0 2px 6px rgba(0,0,0,.26);
  font:800 8px/1 var(--sans);font-style:normal}
#lg-v2.lgv2 .lgv2-utility-action.is-speaking{
  border-color:var(--bp-or-fort);box-shadow:0 0 0 2px var(--bp-or-doux),0 8px 22px rgba(24,13,7,.34)}
#lg-v2.lgv2 .lgv2-utility-action.is-live .lgv2-utility-icon{color:var(--bp-or-fort)}
#lg-v2.lgv2 .lgv2-utility-action[aria-disabled="true"]{
  cursor:not-allowed;border-style:solid;color:var(--bp-encre-douce)}
#lg-v2.lgv2 .lgv2-utility-action[aria-disabled="true"]>span:not(.lgv2-utility-icon){
  color:var(--bp-encre-douce)}

#lg-v2.lgv2 .lgv2-utility-toggle:focus-visible,
#lg-v2.lgv2 .lgv2-utility-action:focus-visible,
#lg-v2.lgv2 .lgv2-utility-scrim:focus-visible{
  outline:3px solid var(--bp-or-fort);outline-offset:3px}

@media (max-width:359px){
  #lg-v2.lgv2 .lgv2-utility-dock{
    right:max(6px,env(safe-area-inset-right,0px));
    bottom:calc(6px + env(safe-area-inset-bottom,0px))}
  #lg-v2.lgv2 .lgv2-utility-menu{width:min(154px,calc(100vw - 12px))}}

@media (prefers-reduced-motion:reduce){
  #lg-v2.lgv2 .lgv2-utility-scrim,
  #lg-v2.lgv2 .lgv2-utility-toggle,
  #lg-v2.lgv2 .lgv2-utility-toggle svg,
  #lg-v2.lgv2 .lgv2-utility-menu,
  #lg-v2.lgv2 .lgv2-utility-action{transition:none}
  #lg-v2.lgv2 .lgv2-utility-dock.is-hinting .lgv2-utility-toggle::after{animation:none}}

/* ==========================================================================
   6.98.1 — TIROIR COMPACT ET CADRE JUSQU'AU BAS.

   Une ancienne réservation de 68 px survivait à la suppression de la barre
   fixe. Elle créait la grande bande dorée visible sous le cadre de partie.
   Le tiroir est désormais flottant : le cadre peut donc reprendre toute la
   hauteur, tandis que le petit contrôle de 44 px reste posé au-dessus.
   ========================================================================== */
#lg-v2.lgv2 .lgv2-circle-screen{
  padding-bottom:0!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage{
  height:100%;padding-bottom:0}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-mayor-stage,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-day-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-night-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-morning-panel,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-stage > .lgv2-role-interrupt{
  margin-bottom:0!important}


/* 6.99.0 — parole visible, reveil compact, badges informatifs. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel.is-morning{align-content:start;grid-auto-rows:max-content}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel.is-morning>.lgv2-day-glow{position:absolute;right:-40px;top:-55px;width:150px;height:150px;z-index:0}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel.is-morning button.lgv2-day-primary>span>b{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:normal}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speech-line{display:grid;gap:3px;padding:8px 10px;border:1px solid var(--bp-or-doux);border-radius:12px;background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2));text-align:left}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speech-line>b{font:700 8.4px/1 var(--serif);color:var(--bp-encre)}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speech-line>p{margin:0;font:600 9.2px/1.34 var(--serif);color:var(--bp-encre-douce);white-space:normal;overflow-wrap:anywhere}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-circle-player.is-speaking-live .lgv2-circle-avatar{box-shadow:0 0 0 3px #4E9B61,0 0 0 7px rgba(78,155,97,.16),0 0 24px rgba(78,155,97,.34)}


/* 6.99.3 — verdict nocturne : annonce compacte avant la vraie carte. */
.lgv2-day-panel.is-night-death-reveal{align-content:start;gap:12px}.lgv2-day-panel.is-night-death-reveal header{position:relative}.lgv2-night-death-progress{align-self:start;min-width:31px;padding:5px 7px;border:1px solid rgba(151,116,66,.34);border-radius:999px;background:#f7eedf;color:#765b36;font:800 8px/1 var(--serif);text-align:center}
.lgv2-night-death-announcement{display:grid;grid-template-columns:56px 1fr;gap:12px;align-items:center;padding:10px 12px;border:1px solid rgba(139,107,63,.3);border-radius:18px;background:linear-gradient(135deg,rgba(255,252,244,.94),rgba(235,221,198,.9));box-shadow:0 10px 24px rgba(72,52,29,.1)}.lgv2-night-death-announcement.is-wolves{border-color:rgba(139,32,49,.28);background:linear-gradient(135deg,rgba(255,250,242,.96),rgba(239,217,214,.9))}.lgv2-night-death-announcement img{width:56px;height:56px;border-radius:50%;object-fit:cover;border:2px solid #c7a15e;box-shadow:0 5px 14px rgba(54,36,22,.18)}.lgv2-night-death-announcement span{min-width:0;display:grid;gap:4px}.lgv2-night-death-announcement small{font:850 7px/1 var(--serif);letter-spacing:.15em;color:#987744}.lgv2-night-death-announcement.is-wolves small{color:#8d2638}.lgv2-night-death-announcement b{font:750 14px/1.18 var(--serif);color:#3f2f25}.lgv2-night-reveal-btn{margin-top:1px}.lgv2-night-death-overlay{background:radial-gradient(circle at 50% 27%,rgba(147,26,49,.28),transparent 32%),linear-gradient(180deg,#100c14,#251019 58%,#09090d)}

/* ==========================================================================
   7.0.0 — COMPOSANTS NATIFS DE LA PWA.

   Ils ne modifient aucun panneau du jeu : ce sont les deux seules surfaces
   appartenant au cycle de l'application (installation et etat reseau).
   ========================================================================== */
html.lgv2-pwa,html.lgv2-pwa body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;background:#090b12}
html.lgv2-pwa-standalone body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
html.lgv2-pwa-standalone :is(input,textarea,[contenteditable="true"]){-webkit-user-select:text;user-select:text}

.lgv2-pwa-network{position:fixed;z-index:var(--lg-pwa-z,100000);left:max(10px,calc(env(safe-area-inset-left,0px) + 10px));right:max(10px,calc(env(safe-area-inset-right,0px) + 10px));top:calc(env(safe-area-inset-top,0px) + 10px);width:auto;max-width:390px;min-height:48px;margin-inline:auto;display:grid;grid-template-columns:12px minmax(0,1fr);align-items:center;gap:10px;padding:8px 14px;border:1px solid rgba(238,199,122,.44);border-radius:16px;background:rgba(28,18,27,.96);color:#fff0d2;box-shadow:0 12px 34px rgba(0,0,0,.38);opacity:0;pointer-events:none;transform:translateY(-14px);transition:opacity .2s ease,transform .2s ease}
.lgv2-pwa-network.is-visible{opacity:1;transform:translateY(0)}
.lgv2-pwa-network>span{width:10px;height:10px;border-radius:50%;background:#d34a5f;box-shadow:0 0 0 4px rgba(211,74,95,.14)}
.lgv2-pwa-network.is-reconnecting>span{background:#d7a64e;box-shadow:0 0 0 4px rgba(215,166,78,.15)}
.lgv2-pwa-network.is-synced>span{background:#61aa72;box-shadow:0 0 0 4px rgba(97,170,114,.15)}
.lgv2-pwa-network div{min-width:0}.lgv2-pwa-network strong,.lgv2-pwa-network small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lgv2-pwa-network strong{font:800 12px/1.15 Georgia,serif}.lgv2-pwa-network small{margin-top:3px;color:#cfbea6;font:600 9px/1.2 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}

.lgv2-pwa-install{position:fixed;z-index:var(--lg-pwa-z,100000);left:max(10px,calc(env(safe-area-inset-left,0px) + 10px));right:max(10px,calc(env(safe-area-inset-right,0px) + 10px));bottom:calc(env(safe-area-inset-bottom,0px) + 12px);width:auto;max-width:430px;min-height:118px;margin-inline:auto;display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:10px;padding:10px;border:1px solid rgba(225,185,106,.6);border-radius:20px;background:linear-gradient(145deg,rgba(43,24,34,.98),rgba(18,15,24,.98));color:#fff1d5;box-shadow:0 18px 48px rgba(0,0,0,.48);animation:lgv2PwaInstallIn .28s ease-out both}
.lgv2-pwa-install img{width:48px;height:48px;border-radius:13px;box-shadow:0 6px 16px rgba(0,0,0,.32)}
.lgv2-pwa-install div{min-width:0}.lgv2-pwa-install strong,.lgv2-pwa-install small{display:block}.lgv2-pwa-install strong{font:800 12px/1.15 Georgia,serif}.lgv2-pwa-install small{margin-top:4px;color:#cdbda8;font:600 9px/1.3 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.lgv2-pwa-install__actions{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:8px;width:100%}
.lgv2-pwa-install button{min-width:0;min-height:46px;margin:0;padding:0 12px;border-radius:13px;cursor:pointer;font:800 10px/1 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:.025em}
.lgv2-pwa-install [data-pwa-install]{border:1px solid #d5ac61;background:linear-gradient(#a52242,#681126);color:#fff7e7;box-shadow:0 5px 13px rgba(112,16,42,.28)}
.lgv2-pwa-install [data-pwa-dismiss]{border:1px solid rgba(226,199,153,.4);background:rgba(255,245,224,.07);color:#eadbc4}
.lgv2-pwa-install [data-pwa-install]:disabled{cursor:default;opacity:.65;box-shadow:none}

@keyframes lgv2PwaInstallIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media (max-width:359px){.lgv2-pwa-install{grid-template-columns:42px minmax(0,1fr)}.lgv2-pwa-install img{width:42px;height:42px}.lgv2-pwa-install button{padding-inline:8px;font-size:9px}}
@media (prefers-reduced-motion:reduce){.lgv2-pwa-network{transition:none}.lgv2-pwa-install{animation:none}}
.lgv2-pwa-install button:focus-visible{outline:3px solid #ffe28b;outline-offset:2px}

/* =====================================================================
   7.0.16 — INVITATION PARTAGEABLE : le bouton PARTAGER prend place à
   côté de COPIER, dans les trois endroits où le code s'affiche, sans
   toucher aux proportions existantes.
   ===================================================================== */
.lgv2-admission-code{grid-template-columns:minmax(0,1fr) auto auto}
.lgv2-room-admin-code{grid-template-columns:minmax(0,1fr) auto auto}
/* L'en-tête du salon accueille désormais DEUX pastilles (copier + partager)
   sans jamais mordre sur ses voisines : pastilles resserrées, la colonne du
   code garde la priorité et ne déborde plus. */
.lgv2-room-codeblock>span{min-width:0;gap:4px}
.lgv2-room-codeblock button{flex:none;width:26px;height:26px}
.lgv2-room-codeblock button svg{width:13px;height:13px}

/* =====================================================================
   7.0.18 — LISIBILITÉ DES ÉLÉMENTS VERTS (captures du 30/08).
   1) Bandeau « C'EST VOTRE TOUR DE VOTER » : la couche parchemin repeint
      tous les <b>/<small> des panneaux en encre brune — illisible sur le
      dégradé vert. Le fond vert est conservé, les textes reviennent à
      l'ivoire/vert crème du dessin d'origine.
   2) Panneau des Loups : la pastille « TOUCHEZ UNE CIBLE » gardait le fond
      sombre de l'ancien thème sous des textes repeints en vert foncé.
      Elle rejoint le thème vert clair du panneau.
   3) Le titre du panneau de nuit ne se tronque plus (« …une vict… ») :
      il passe à la ligne au lieu de s'amputer.
   ===================================================================== */
/* La couche parchemin pose color:…!important sur tous les b/small des
   panneaux : ces correctifs doivent contrer à armes égales, plus bas dans
   la cascade et à spécificité supérieure. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-turn-banner b{color:#eafff0!important;text-shadow:0 1px 2px rgba(0,0,0,.35)}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-turn-banner small{color:#cdebd6!important;text-shadow:0 1px 2px rgba(0,0,0,.28)}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-turn-banner svg{fill:#eafff0!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel.is-wolves .lgv2-wolf-instruction{background:rgba(233,244,229,.92);border:1px dashed rgba(72,124,86,.55);color:#2f5e3d}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel.is-wolves .lgv2-wolf-instruction>svg{fill:#3c6a49}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel.is-wolves .lgv2-wolf-instruction b{color:#1d4a2c!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel.is-wolves .lgv2-wolf-instruction small{color:#47684f!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel header h2{white-space:normal;overflow:visible;text-overflow:clip}

/* =====================================================================
   7.0.20 — ENCARTS NOMINATIFS DE LA NUIT.
   Compte rendu de la meute (Loups seuls) et avis de survie de l'Ancien.
   Aucune couleur nouvelle : on reprend les variables de la charte
   parchemin (carte, filet or, encre) et le vert de validation deja
   utilise ailleurs. Les textes sont poses en encre foncee sur carton
   clair — jamais l'inverse — pour ne pas rejouer les defauts de
   lisibilite corriges en 7.0.18.
   ===================================================================== */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-pack-result,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-private-notice{
  position:relative; z-index:2; display:grid; gap:7px; margin-top:9px;
  padding:10px 12px; border-radius:12px;
  border:1px solid var(--bp-or-doux);
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2));
  box-shadow:0 6px 18px rgba(0,0,0,.14);
  color:var(--bp-encre); text-align:left;
}
/* Les titres reprennent --bp-sourcil : cette variable suit la palette
   active (brun sur parchemin le jour, or clair sur carton de nuit, vert
   dans le panneau des Loups). Un grenat code en dur, teste ici, devenait
   illisible des que la nuit tombait. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-pack-result>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-private-notice small{
  font:800 7.6px/1 var(--serif); letter-spacing:.11em;
  color:var(--bp-sourcil)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-pack-result>p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-private-notice p{
  margin:0; font:400 8.16px/1.36 var(--serif);
  color:var(--bp-encre-douce)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-pack-result .lgv2-witch-victim b{
  color:var(--bp-encre)!important; text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-pack-result .lgv2-witch-victim small{
  color:var(--bp-encre-douce)!important; text-shadow:none!important;
}
/* Personne n'est mort : le filet passe au vert de validation de la charte. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-pack-result.is-survived{
  border-color:rgba(72,124,86,.62);
}
/* « Personne n'est mort » : le vert reste porte par le filet, jamais par
   le texte, pour que le titre demeure lisible sur les trois palettes. */
/* L'avis de l'Ancien : glyphe or a gauche, texte a droite. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-private-notice{
  grid-template-columns:34px minmax(0,1fr); align-items:start; gap:10px;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-private-notice>span{
  width:34px; height:34px; display:grid; place-items:center; border-radius:50%;
  background:#7d172e; border:1px solid var(--bp-or);
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-private-notice>span svg{width:18px;height:18px;fill:#fff3df}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-private-notice>div{display:grid;gap:4px;min-width:0}

/* =====================================================================
   7.0.22 — DERNIERS BLOCS RESTES AU THEME SOMBRE D'ORIGINE.
   Diagnostic : trois blocs portaient encore le fond sombre de l'ancien
   thème (rgba(22,11,9,.5) ou dégradé brun) alors que la couche parchemin
   repeint leur texte en encre foncée. Résultat : sombre sur sombre, et
   des titres crème posés sur du crème. C'est ce que montrent les
   captures du 31/08 : l'attente du Narrateur invisible, « DEMANDES À
   DÉCIDER » et « SEULES CIBLES AUTORISÉES » illisibles, les compteurs
   marron sur grenat.
   Le reste de la famille (day-speaker, day-rule-alert, night-live) a été
   vérifié au rendu et ne présente pas le défaut : on n'y touche pas.
   Aucune couleur nouvelle ici : uniquement les variables de la charte,
   pour que les trois palettes du cercle restent servies.
   ===================================================================== */

/* 1. Les conteneurs redeviennent transparents : leurs titres se lisent
      alors sur le parchemin du panneau, comme partout ailleurs. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-second-decisions,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-runoff-banner{
  background:transparent!important; border:0!important; box-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-second-decisions>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-runoff-banner>small{
  color:var(--bp-sourcil)!important; text-shadow:none!important;
}

/* 2. Les éléments internes deviennent des cartons de parchemin, comme
      les autres sous-cartes du jeu. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-second-decisions article,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-runoff-banner span{
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  border:1px solid var(--bp-or-doux)!important;
  box-shadow:0 4px 12px rgba(0,0,0,.10)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-second-decisions article,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-second-decisions article>span b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-runoff-banner span,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-runoff-banner span b{
  color:var(--bp-encre)!important; text-shadow:none!important;
}

/* 3. Le compteur de voix garde son disque grenat : texte crème dessus,
      jamais l'encre brune qui le rendait illisible (« marron sur grenat »). */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-runoff-banner span em{
  background:#8b1a32!important; color:#fff3df!important;
  text-shadow:none!important; border:1px solid var(--bp-or-doux);
}

/* 4. L'attente du Narrateur : encre douce sur son carton clair. La règle
      d'origine imposait une crème (#f4e8d2) qui disparaissait sur le
      parchemin. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-wait{
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  border:1px solid var(--bp-or-doux)!important;
  color:var(--bp-encre-douce)!important; text-shadow:none!important;
}

/* La crème était imposée par un sélecteur balai « .lgv2-day-panel * » assorti
   de cinq :not(), dont la spécificité dépasse celle d'une classe simple. On
   reprend exactement sa forme, en y ajoutant l'identifiant, pour reprendre la
   main sans toucher au balai lui-même (il sert à tout le reste du panneau). */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel *.lgv2-day-wait:not(button):not(svg):not(path):not(strong),
#lg-v2.lgv2 .lgv2-circle-screen *.lgv2-day-wait:not(button):not(svg):not(path):not(strong){
  color:var(--bp-encre-douce)!important; text-shadow:none!important;
}
/* =====================================================================
   7.0.23 — CINEMATIQUES JOUR / NUIT (remplacent les precedentes).
   Toutes les classes sont prefixees « lgv2c2- » et toutes les images-cles
   renommees : aucune collision possible avec le reste de la feuille.
   Les anciennes regles .lgv2-night-sky/.lgv2-dawn-sky ont ete
   supprimees en 7.0.57 apres verification de leur absence de generateur.
   ===================================================================== */
.lgv2-screen.lgv2-cine2{
  position:fixed;inset:0;overflow:hidden;background:#05060B;z-index:40;
  /* Variables propres aux cinematiques. Elles vivaient dans le :root de la
     maquette : sans elles, le village du jour se collait en haut de l'ecran
     et la palette retombait sur des valeurs vides. */
  --horizon:52%; --or:#C9A227;
  --creme:#FFF6E6; --encre:#33210F; --encre-douce:#5A4126;
  --or-clair:#EFD6A0; --or-doux:#8C6B24;
  --serif:'Iowan Old Style','Palatino Linotype','Book Antiqua',Georgia,serif;
  --sans:'Avenir Next','Segoe UI',system-ui,sans-serif;
}
/* ==================== SOCLE COMMUN ==================== */
.lgv2c2-scene{position:absolute;inset:0;overflow:hidden;isolation:isolate}
.lgv2c2-scene__ciel{position:absolute;inset:0}
.lgv2c2-scene__texte{position:absolute;left:0;right:0;bottom:0;padding:14px 26px 70px;
  display:grid;justify-items:center;text-align:center;gap:9px;z-index:6}

.lgv2c2-emb{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;
  border:1px solid var(--or-doux);opacity:0;transform:scale(.82) translateY(10px);
  animation:lgv2c2-emb-in 1s cubic-bezier(.2,.75,.25,1) var(--t-emb) both}
.lgv2c2-emb svg{width:26px;height:26px}
@keyframes lgv2c2-emb-in{to{opacity:1;transform:scale(1) translateY(0)}}

.lgv2c2-sur{font:800 10px/1 var(--sans);letter-spacing:.34em;text-transform:uppercase;
  opacity:0;transform:translateY(8px);animation:lgv2c2-mont 900ms cubic-bezier(.2,.75,.25,1) var(--t-sur) both}

.lgv2c2-titre{position:relative;font:700 34px/1.06 var(--serif);letter-spacing:.012em;margin:2px 0 0;
  opacity:0;animation:lgv2c2-titre-in 1.15s cubic-bezier(.16,.84,.24,1) var(--t-titre) both}
@keyframes lgv2c2-titre-in{
  0%{opacity:0;transform:translateY(16px);clip-path:inset(0 0 100% 0)}
  55%{opacity:1} 100%{opacity:1;transform:translateY(0);clip-path:inset(0 0 -8% 0)}}
.lgv2c2-titre::after{content:'';position:absolute;inset:-2px -14px;pointer-events:none;
  background:linear-gradient(105deg,transparent 38%,rgba(255,255,255,.5) 50%,transparent 62%);
  mix-blend-mode:overlay;transform:translateX(-130%);
  animation:lgv2c2-lustre 1.5s ease-in-out var(--t-lustre) both}
@keyframes lgv2c2-lustre{to{transform:translateX(130%)}}

.lgv2c2-filet{display:flex;align-items:center;gap:9px;width:min(240px,72%);
  opacity:0;animation:lgv2c2-fade 700ms ease-out var(--t-filet) both}
.lgv2c2-filet i{flex:1;height:1px;transform:scaleX(0);animation:lgv2c2-trace 900ms cubic-bezier(.2,.75,.25,1) var(--t-filet) both}
.lgv2c2-filet b{width:6px;height:6px;transform:rotate(45deg) scale(0);
  animation:lgv2c2-losange 700ms cubic-bezier(.2,.9,.3,1.4) calc(var(--t-filet) + 260ms) both}
@keyframes lgv2c2-trace{to{transform:scaleX(1)}}
@keyframes lgv2c2-losange{to{transform:rotate(45deg) scale(1)}}
@keyframes lgv2c2-fade{to{opacity:1}}
@keyframes lgv2c2-mont{to{opacity:1;transform:translateY(0)}}

.lgv2c2-phrase{font:400 13.5px/1.55 var(--serif);max-width:31ch;margin:4px 0 0;
  opacity:0;transform:translateY(10px);animation:lgv2c2-mont 1s cubic-bezier(.2,.75,.25,1) var(--t-phrase) both}

.lgv2c2-rideau{position:absolute;inset:0;z-index:9;pointer-events:none}
.lgv2c2-rideau span{position:absolute;left:0;right:0;height:50.6%;background:#0B0A0C}
.lgv2c2-rideau span:first-child{top:0;animation:lgv2c2-volet-h 1.25s cubic-bezier(.7,0,.2,1) 120ms both}
.lgv2c2-rideau span:last-child{bottom:0;animation:lgv2c2-volet-b 1.25s cubic-bezier(.7,0,.2,1) 120ms both}
@keyframes lgv2c2-volet-h{to{transform:translateY(-100%)}}
@keyframes lgv2c2-volet-b{to{transform:translateY(100%)}}

.lgv2c2-vign{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:0;
  animation:lgv2c2-fade 2.4s ease-out 700ms both}
.lgv2c2-grain{position:absolute;inset:-40%;z-index:7;pointer-events:none;opacity:.045;
  background-image:radial-gradient(#fff 1px,transparent 1.2px);background-size:3px 3px;
  animation:lgv2c2-grain 5s steps(6) infinite}
@keyframes lgv2c2-grain{0%{transform:translate(0,0)}20%{transform:translate(-2%,1%)}
  40%{transform:translate(1%,-2%)}60%{transform:translate(-1%,2%)}
  80%{transform:translate(2%,1%)}100%{transform:translate(0,0)}}

/* ==================== JOUR · V2 ==================== */
.lgv2c2-jour{--t-emb:1900ms;--t-sur:2150ms;--t-titre:2350ms;--t-lustre:3100ms;
      --t-filet:2950ms;--t-phrase:3250ms}
.lgv2c2-jour .lgv2c2-scene__ciel{
  background:linear-gradient(180deg,
    #3E3C68 0%, #6A5480 16%, #B0748A 32%, #E29A78 46%, #F6C48A 56%,
    #FDE3B4 62%, #FFF2D9 68%, #FFF8EC 100%);
}
/* Le bleu de la nuit se retire par le haut. */
.lgv2c2-jour .lgv2c2-residu{position:absolute;inset:0;
  background:linear-gradient(180deg,#0A1024 0%,#1A2344 28%,rgba(38,48,86,.5) 50%,transparent 72%);
  animation:lgv2c2-residu 3.4s cubic-bezier(.4,0,.2,1) 250ms both}
@keyframes lgv2c2-residu{to{opacity:0;transform:translateY(-14%)}}

/* Le lgv2c2-soleil se lève DERRIERE le village, jamais devant le texte. */
.lgv2c2-jour .lgv2c2-soleil{position:absolute;left:50%;top:calc(var(--horizon) - 96px);
  width:82px;height:82px;margin-left:-41px;border-radius:50%;
  background:radial-gradient(circle at 50% 46%,#FFFEF7 0%,#FFF2CC 38%,#FFD98A 68%,#F5B463 100%);
  box-shadow:0 0 48px rgba(255,206,128,.6),0 0 120px rgba(255,178,88,.3);
  transform:translateY(76px) scale(.88);opacity:0;
  animation:lgv2c2-soleil 3.6s cubic-bezier(.18,.72,.24,1) 600ms both}
@keyframes lgv2c2-soleil{to{transform:translateY(0) scale(1);opacity:1}}
.lgv2c2-jour .lgv2c2-rayons{position:absolute;left:50%;top:calc(var(--horizon) - 96px);
  width:440px;height:440px;margin:-179px 0 0 -220px;opacity:0;
  animation:lgv2c2-fade 2.6s ease-out 1500ms both, lgv2c2-tourne 70s linear 2s infinite;
  background:repeating-conic-gradient(from 0deg at 50% 50%,
    rgba(255,228,168,.16) 0deg 4.5deg, transparent 4.5deg 21deg);
  -webkit-mask-image:radial-gradient(circle,#000 8%,transparent 60%);
          mask-image:radial-gradient(circle,#000 8%,transparent 60%)}
@keyframes lgv2c2-tourne{to{transform:rotate(360deg)}}

/* --- LE VILLAGE : posé sur l'horizon, il ne descend jamais plus bas ---
   Chaque élément a un sens : des toits, un clocher, des cyprès, un muret. */
.lgv2c2-jour .lgv2c2-village{position:absolute;left:0;right:0;top:var(--horizon);height:150px;
  z-index:3;opacity:0;transform:translateY(18px);
  animation:lgv2c2-vill 2.2s cubic-bezier(.2,.75,.25,1) 900ms both}
@keyframes lgv2c2-vill{to{opacity:1;transform:translateY(0)}}
.lgv2c2-jour .lgv2c2-village *{position:absolute;bottom:96px;background:#4B3A2E}
/* muret continu qui relie tout le village */
.lgv2c2-jour .lgv2c2-village .lgv2c2-muret{left:0;right:0;bottom:88px;height:9px;background:#413227}
/* maisons : corps + toit à deux pentes */
.lgv2c2-jour .lgv2c2-maison{width:var(--w);left:var(--l);height:var(--h)}
.lgv2c2-jour .lgv2c2-maison::before{content:'';position:absolute;left:-6px;right:-6px;bottom:100%;
  height:17px;background:#3B2D24;clip-path:polygon(50% 0,100% 100%,0 100%)}
/* clocher : plus haut, coiffé d'une flèche */
.lgv2c2-jour .lgv2c2-clocher{width:22px;left:47%;height:64px;margin-left:-11px}
.lgv2c2-jour .lgv2c2-clocher::before{content:'';position:absolute;left:-5px;right:-5px;bottom:100%;
  height:26px;background:#33261E;clip-path:polygon(50% 0,100% 100%,0 100%)}
.lgv2c2-jour .lgv2c2-clocher::after{content:'';position:absolute;left:50%;bottom:calc(100% + 26px);
  width:2px;height:9px;margin-left:-1px;background:#33261E}
/* cyprès : deux fuseaux qui campent le décor méditerranéen */
.lgv2c2-jour .lgv2c2-cypres{width:17px;left:var(--l);height:var(--h);background:#35291F;
  border-radius:50% 50% 40% 40% / 62% 62% 38% 38%}
/* fenêtres allumées : quelques points chauds, le village s'éveille */
.lgv2c2-jour .lgv2c2-fen{width:3px;height:4px;background:#FFCF7A;bottom:auto;
  top:var(--ty);left:var(--tx);opacity:0;box-shadow:0 0 5px rgba(255,200,110,.8);
  animation:lgv2c2-fade 900ms ease-out calc(2100ms + var(--s)*220ms) both}

/* Oiseaux : trois traits qui traversent, discrets. */
.lgv2c2-jour .lgv2c2-oiseau{position:absolute;z-index:4;width:11px;height:6px;
  border-top:1.6px solid rgba(70,50,35,.55);border-radius:50%;
  transform:rotate(var(--r));opacity:0;
  animation:lgv2c2-vole calc(9s + var(--s)*2s) linear calc(2200ms + var(--s)*900ms) both}
@keyframes lgv2c2-vole{
  0%{opacity:0;transform:translate(0,0) rotate(-12deg)}
  12%{opacity:.75} 88%{opacity:.75}
  100%{opacity:0;transform:translate(150px,-46px) rotate(-6deg)}}

/* Poussières dans le contre-jour, au-dessus de l'horizon uniquement. */
.lgv2c2-jour .lgv2c2-poussiere i{position:absolute;width:3px;height:3px;border-radius:50%;
  background:rgba(255,246,220,.95);left:var(--x);top:var(--y);opacity:0;
  animation:lgv2c2-pous-in 1.2s ease-out calc(1800ms + var(--s)*90ms) both,
            lgv2c2-flotte calc(9s + var(--s)*1s) ease-in-out calc(2800ms + var(--s)*140ms) infinite}
@keyframes lgv2c2-pous-in{to{opacity:.7}}
@keyframes lgv2c2-flotte{0%,100%{transform:translate(0,0)}50%{transform:translate(7px,-15px)}}

/* --- LA ZONE DE TEXTE : dégagée, sur un fond de parchemin franc ---
   Elle démarre SOUS le village. Plus rien ne peut passer derrière. */
.lgv2c2-jour .lgv2c2-socle{position:absolute;left:0;right:0;bottom:0;height:calc(100% - var(--horizon) - 62px);
  z-index:5;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(255,247,232,0) 0%, rgba(255,248,234,.86) 26%,
    rgba(255,249,237,.99) 52%, #FFFAF0 100%);
  opacity:0;animation:lgv2c2-fade 1.4s ease-out 1600ms both}
.lgv2c2-jour .lgv2c2-vign{background:radial-gradient(126% 84% at 50% 34%,transparent 48%,rgba(96,62,26,.22) 100%)}
.lgv2c2-jour .lgv2c2-grain{opacity:.03;background-image:radial-gradient(#4A3316 1px,transparent 1.2px)}

.lgv2c2-jour .lgv2c2-emb{background:radial-gradient(circle at 40% 34%,#FFF9EC,#F2DFB8);
  border-color:rgba(140,107,36,.7);box-shadow:0 4px 18px rgba(120,80,30,.22)}
.lgv2c2-jour .lgv2c2-sur{color:#8A5A2C}
.lgv2c2-jour .lgv2c2-titre{color:var(--encre);text-shadow:0 1px 0 rgba(255,250,238,.7)}
.lgv2c2-jour .lgv2c2-filet i{background:linear-gradient(90deg,transparent,rgba(140,107,36,.75),transparent)}
.lgv2c2-jour .lgv2c2-filet b{background:#8C6B24}
.lgv2c2-jour .lgv2c2-phrase{color:var(--encre-douce)}

/* ==================== NUIT (inchangée, pour la paire) ==================== */
.lgv2c2-nuit{--t-emb:1700ms;--t-sur:1950ms;--t-titre:2150ms;--t-lustre:2900ms;
      --t-filet:2750ms;--t-phrase:3050ms}
.lgv2c2-nuit .lgv2c2-scene__ciel{background:radial-gradient(150% 90% at 50% 108%,#1B2438 0%,#121A2B 34%,#0B1020 62%,#06080F 100%)}
.lgv2c2-nuit .lgv2c2-crepuscule{position:absolute;left:-10%;right:-10%;top:52%;height:34%;
  background:linear-gradient(180deg,rgba(206,120,66,.42),rgba(120,60,70,.16) 46%,transparent 100%);
  filter:blur(14px);animation:lgv2c2-crep 3.6s cubic-bezier(.4,0,.2,1) 300ms both}
@keyframes lgv2c2-crep{to{transform:translateY(46%);opacity:.15}}
.lgv2c2-nuit .lgv2c2-lune{position:absolute;left:50%;top:26%;width:74px;height:74px;border-radius:50%;margin-left:-37px;
  background:radial-gradient(circle at 36% 32%,#FFF9E8 0%,#F3E4BC 46%,#D9C08A 76%,#B99F66 100%);
  box-shadow:0 0 26px rgba(255,242,206,.5),inset -7px -5px 14px rgba(120,100,60,.28);
  transform:translateY(52px) scale(.9);opacity:0;
  animation:lgv2c2-lune 3.4s cubic-bezier(.18,.72,.24,1) 500ms both}
@keyframes lgv2c2-lune{to{transform:translateY(0) scale(1);opacity:1}}
.lgv2c2-nuit .lgv2c2-halo{position:absolute;left:50%;top:26%;width:230px;height:230px;margin:-78px 0 0 -115px;
  border-radius:50%;background:radial-gradient(circle,rgba(255,240,200,.24),transparent 66%);
  opacity:0;animation:lgv2c2-halo 3s ease-out 900ms both,lgv2c2-souffle 7s ease-in-out 4s infinite}
@keyframes lgv2c2-halo{to{opacity:1}}
@keyframes lgv2c2-souffle{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.07);opacity:.82}}
.lgv2c2-nuit .lgv2c2-etoiles i{position:absolute;width:2px;height:2px;border-radius:50%;background:#FFF7E2;
  left:var(--x);top:var(--y);opacity:0;
  animation:lgv2c2-etoile-in 900ms ease-out calc(1500ms + var(--s)*55ms) both,
            lgv2c2-scint 4.5s ease-in-out calc(2600ms + var(--s)*180ms) infinite}
@keyframes lgv2c2-etoile-in{to{opacity:var(--o,.85)}}
@keyframes lgv2c2-scint{0%,100%{opacity:var(--o,.85)}50%{opacity:.24}}
.lgv2c2-nuit .lgv2c2-crete{position:absolute;left:-6%;right:-6%;bottom:0;height:34%;background:#080B14;
  clip-path:polygon(0 62%,9% 47%,17% 56%,26% 38%,35% 52%,44% 33%,53% 49%,62% 36%,71% 52%,80% 41%,89% 55%,100% 44%,100% 100%,0 100%);
  transform:translateY(26px);opacity:0;animation:lgv2c2-crete 2.4s cubic-bezier(.2,.75,.25,1) 700ms both}
.lgv2c2-nuit .lgv2c2-crete.lgv2c2-avant{height:25%;background:#04060C;
  clip-path:polygon(0 70%,12% 58%,22% 66%,33% 50%,45% 63%,56% 48%,67% 62%,78% 52%,88% 64%,100% 55%,100% 100%,0 100%);
  animation-delay:900ms}
@keyframes lgv2c2-crete{to{transform:translateY(0);opacity:1}}
.lgv2c2-nuit .lgv2c2-brume{position:absolute;left:-30%;right:-30%;bottom:4%;height:15%;
  background:linear-gradient(90deg,transparent,rgba(180,200,225,.16) 28%,rgba(180,200,225,.22) 52%,transparent);
  filter:blur(11px);opacity:0;animation:lgv2c2-fade 2.6s ease-out 1900ms both,lgv2c2-derive 26s linear 2s infinite}
.lgv2c2-nuit .lgv2c2-brume.lgv2c2-deux{bottom:11%;filter:blur(16px);animation:lgv2c2-fade 2.6s ease-out 2300ms both,lgv2c2-derive-inv 34s linear 2s infinite}
@keyframes lgv2c2-derive{from{transform:translateX(-9%)}to{transform:translateX(9%)}}
@keyframes lgv2c2-derive-inv{from{transform:translateX(8%)}to{transform:translateX(-8%)}}
.lgv2c2-nuit .lgv2c2-voile{position:absolute;left:0;right:0;bottom:0;height:56%;z-index:5;pointer-events:none;opacity:0;
  background:linear-gradient(180deg,transparent,rgba(6,9,18,.62) 36%,rgba(4,6,13,.9) 70%,rgba(3,5,11,.96));
  animation:lgv2c2-fade 1.6s ease-out 1500ms both}
.lgv2c2-nuit .lgv2c2-vign{background:radial-gradient(120% 88% at 50% 42%,transparent 42%,rgba(0,0,0,.5) 100%)}
.lgv2c2-nuit .lgv2c2-emb{background:radial-gradient(circle at 40% 34%,#1D2740,#0D1220);
  border-color:rgba(230,200,140,.5);box-shadow:0 0 22px rgba(180,200,255,.14)}
.lgv2c2-nuit .lgv2c2-emb svg{fill:var(--or-clair)}
.lgv2c2-nuit .lgv2c2-sur{color:#9FB4D6}
.lgv2c2-nuit .lgv2c2-titre{color:var(--creme);text-shadow:0 2px 18px rgba(10,16,32,.9)}
.lgv2c2-nuit .lgv2c2-filet i{background:linear-gradient(90deg,transparent,rgba(214,192,140,.75),transparent)}
.lgv2c2-nuit .lgv2c2-filet b{background:var(--or-clair);box-shadow:0 0 8px rgba(240,214,160,.6)}
.lgv2c2-nuit .lgv2c2-phrase{color:#C7D3E8}

/* Bouton de son de la maquette, raccordé au panneau audio réel du jeu. */
.lgv2-screen.lgv2-cine2 .son{position:absolute;right:11px;top:11px;z-index:12;width:36px;height:36px;padding:0;border-radius:50%;
  border:1px solid rgba(214,180,110,.5);background:rgba(12,16,26,.6);color:var(--or-clair);
  display:grid;place-items:center;cursor:pointer;box-shadow:none}
.lgv2-screen.lgv2-cine2 .son svg{width:18px;height:18px;fill:currentColor}
.lgv2-screen.lgv2-cine2.lgv2c2-jour .son{background:rgba(255,248,234,.6);border-color:rgba(140,107,36,.55);color:#8A6318}

@media (prefers-reduced-motion: reduce){
  .lgv2c2-scene *,.lgv2c2-scene{animation-duration:1ms!important;animation-delay:0ms!important;animation-iteration-count:1!important}
}
/* =====================================================================
   7.0.24 — ECRAN DE VICTOIRE, tel que valide dans la maquette.
   Banniere qui se deroule, rayons de gloire, galerie des vainqueurs,
   particules du camp, pied de page. Les boutons du jeu (« Rejouer dans
   ce salon », « Retour au village ») sont conserves et poses dedans.
   Classes prefixees « lgv2v3- » : aucune collision.
   ===================================================================== */
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc{position:relative;min-height:100%;overflow:hidden;isolation:isolate}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc{position:absolute;inset:0;overflow:hidden;isolation:isolate;
 --or:#C9A227;--or-clair:#EFD6A0;--or-doux:#8C6B24;--or-vif:#F5D98F;--creme:#FFF6E6;
 --grenat:#7C1027;--grenat-vif:#B33049;--vert:#2F6B3A;--vert-vif:#5E9C63;
 --violet:#5B3A8C;--violet-vif:#9B78CE;--cyan:#2E7D8C;--cyan-vif:#5FC6D6;
 --serif:'Iowan Old Style','Palatino Linotype','Book Antiqua',Georgia,serif;
 --sans:'Avenir Next','Segoe UI',system-ui,sans-serif}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc.lgv2v3-loups   {background:radial-gradient(120% 78% at 50% 26%,#3A0E1C 0%,#260912 38%,#150509 70%,#080305 100%)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc.lgv2v3-village {background:radial-gradient(120% 78% at 50% 24%,#4A3A16 0%,#2E2410 38%,#171208 70%,#0A0704 100%)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc.lgv2v3-flute   {background:radial-gradient(120% 78% at 50% 26%,#2E1A4A 0%,#1F1233 38%,#120A1F 70%,#07040C 100%)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc.lgv2v3-alien   {background:radial-gradient(120% 78% at 50% 26%,#0E3A44 0%,#0A2830 38%,#06161B 70%,#03090B 100%)}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-brail{position:absolute;inset:-30%;opacity:.05;pointer-events:none;z-index:2;
 background-image:radial-gradient(#fff 1px,transparent 1.2px);background-size:3px 3px}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-vign{position:absolute;inset:0;pointer-events:none;z-index:20;
 background:radial-gradient(116% 78% at 50% 38%,transparent 44%,rgba(0,0,0,.74) 100%)}

/* Rayons de gloire */
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gloire{position:absolute;left:50%;top:20%;width:620px;height:620px;margin:-310px 0 0 -310px;z-index:3;
 opacity:0;background:repeating-conic-gradient(from 0deg at 50% 50%,
   rgba(255,255,255,.09) 0deg 4deg, transparent 4deg 20deg);
 -webkit-mask-image:radial-gradient(circle,#000 4%,transparent 58%);mask-image:radial-gradient(circle,#000 4%,transparent 58%)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-v.lgv2v3-ouvert .lgv2v3-gloire{animation:lgv2v3-gl 1.6s ease-out .5s both, lgv2v3-tourne 80s linear 1s infinite}
@keyframes lgv2v3-gl{to{opacity:1}}
@keyframes lgv2v3-tourne{to{transform:rotate(360deg)}}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-loups .lgv2v3-gloire{filter:hue-rotate(-10deg)}

/* ====== LA BANNIÈRE ====== */
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-banniere{position:absolute;left:34px;right:34px;top:64px;z-index:8;padding:16px 14px 18px;
 text-align:center;border-radius:4px 4px 0 0;opacity:0;transform-origin:50% 0;transform:scaleY(0);
 box-shadow:0 20px 50px rgba(0,0,0,.6)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-v.lgv2v3-ouvert .lgv2v3-banniere{animation:lgv2v3-ban 1s cubic-bezier(.22,.78,.24,1) .2s both}
@keyframes lgv2v3-ban{0%{opacity:0;transform:scaleY(0)}14%{opacity:1}100%{opacity:1;transform:scaleY(1)}}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-banniere::after{content:'';position:absolute;left:0;right:0;top:100%;height:20px;
 background:inherit;clip-path:polygon(0 0,50% 100%,100% 0)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-loups   .lgv2v3-banniere{background:linear-gradient(180deg,#8E1730,#5A0A1B);border:1px solid rgba(214,180,110,.5)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-village .lgv2v3-banniere{background:linear-gradient(180deg,#8E6A17,#5A420C);border:1px solid rgba(240,214,160,.55)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-flute   .lgv2v3-banniere{background:linear-gradient(180deg,#6A44A8,#3E2666);border:1px solid rgba(214,180,110,.45)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-alien   .lgv2v3-banniere{background:linear-gradient(180deg,#1E6B7A,#0E3A44);border:1px solid rgba(214,180,110,.45)}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-banniere small{display:block;font:800 8.6px/1 var(--sans);letter-spacing:.34em;color:rgba(255,244,220,.8)}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-banniere h2{margin:7px 0 0;font:700 25px/1.1 var(--serif);color:#FFF7E8;text-shadow:0 2px 12px rgba(0,0,0,.6)}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-banniere i{display:block;width:62px;height:1px;margin:9px auto 0;background:rgba(255,240,210,.5)}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-banniere p{margin:8px 0 0;font:400 11.6px/1.44 var(--serif);color:rgba(255,242,220,.78)}

/* ====== LES VAINQUEURS ====== */
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-titreV{position:absolute;left:0;right:0;top:246px;z-index:9;text-align:center;opacity:0}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-v.lgv2v3-ouvert .lgv2v3-titreV{animation:lgv2v3-mont .7s ease-out 1.5s both}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-titreV small{font:800 8.4px/1 var(--sans);letter-spacing:.3em;color:rgba(255,232,196,.62)}
@keyframes lgv2v3-mont{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}

#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-grille{position:absolute;left:20px;right:20px;top:276px;z-index:10;
 display:flex;flex-wrap:wrap;gap:11px 10px;justify-content:center;align-content:flex-start}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant{width:88px;display:grid;justify-items:center;gap:4px;opacity:0;transform:translateY(20px) scale(.82)}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant.vu{animation:lgv2v3-gag .68s cubic-bezier(.18,.82,.24,1.03) both}
@keyframes lgv2v3-gag{to{opacity:1;transform:translateY(0) scale(1)}}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant .lgv2v3-ph{position:relative;width:62px;height:62px;border-radius:50%;overflow:hidden;
 border:2.5px solid var(--or);box-shadow:0 8px 22px rgba(0,0,0,.6),0 0 18px rgba(201,162,39,.3)}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant .lgv2v3-ph img{width:100%;height:100%;object-fit:cover;display:block}
/* Un mort qui gagne : le portrait est éteint, mais la couronne d'or reste. */
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant.lgv2v3-mort .lgv2v3-ph img{filter:grayscale(1) brightness(.62)}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant .lgv2v3-croix{position:absolute;right:-2px;bottom:-2px;width:20px;height:20px;border-radius:50%;
 background:#3A2028;border:1px solid rgba(214,180,110,.6);display:grid;place-items:center}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant .lgv2v3-croix svg{width:11px;height:11px;fill:#D9A7B2}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant b{font:700 10.4px/1.1 var(--serif);color:#FFF3DE;text-shadow:0 1px 5px rgba(0,0,0,.9);
 max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant u{text-decoration:none;font:800 6.8px/1 var(--sans);letter-spacing:.14em;
 padding:3px 7px;border-radius:999px}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-loups   .lgv2v3-gagnant u{background:rgba(179,48,73,.24);color:#F0A9B7;border:1px solid rgba(179,48,73,.5)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-village .lgv2v3-gagnant u{background:rgba(201,162,39,.2);color:#F2D89A;border:1px solid rgba(201,162,39,.5)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-flute   .lgv2v3-gagnant u{background:rgba(155,120,206,.22);color:#D5C0F0;border:1px solid rgba(155,120,206,.5)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-alien   .lgv2v3-gagnant u{background:rgba(95,198,214,.2);color:#A9E6F0;border:1px solid rgba(95,198,214,.5)}
/* Halo d'or qui court sur le portrait au moment où il apparaît */
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant .lgv2v3-ph::after{content:'';position:absolute;inset:-40%;
 background:linear-gradient(105deg,transparent 42%,rgba(255,244,210,.5) 50%,transparent 58%);
 transform:translateX(-130%)}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant.vu .lgv2v3-ph::after{animation:lgv2v3-balai 1s ease-in-out .3s both}
@keyframes lgv2v3-balai{to{transform:translateX(130%)}}

/* Particules : braises pour la meute, poussière d'or pour le village */
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-part{position:absolute;bottom:-6px;width:3px;height:3px;border-radius:50%;z-index:6;opacity:0}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-v.lgv2v3-ouvert .lgv2v3-part{animation:lgv2v3-monte calc(4.6s + var(--s)*.28s) linear calc(1.1s + var(--s)*.16s) infinite}
@keyframes lgv2v3-monte{0%{opacity:0;transform:translateY(0)}12%{opacity:.75}
 100%{opacity:0;transform:translateY(-720px) translateX(var(--dx))}}

#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-pied{position:absolute;left:24px;right:24px;bottom:34px;z-index:12;text-align:center;opacity:0}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-v.lgv2v3-fin .lgv2v3-pied{animation:lgv2v3-mont .8s ease-out both}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-pied strong{display:block;font:700 16px/1.2 var(--serif);color:#FFF3DE}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-pied span{display:block;font:400 11.4px/1.44 var(--serif);color:rgba(255,238,214,.7);margin-top:4px}





@media (prefers-reduced-motion:reduce){.lgv2v3-sc *,.lgv2v3-sc{animation-duration:1ms!important;animation-delay:0ms!important}}

/* ---------------------------------------------------------------------
   Adaptation au conteneur du jeu.
   La maquette empilait tout en positionnement absolu dans un cadre de
   722 px : dans l'ecran reel, la galerie tombait hors champ et le pied
   de page passait sous les boutons. Les elements de CONTENU repassent
   donc en flux normal ; seul le DECOR (rayons, particules, grain,
   vignette) reste en absolu. Aucune couleur, aucune forme ne change.
   --------------------------------------------------------------------- */
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc{
  display:flex;flex-direction:column;align-items:center;
  gap:0;padding:26px 18px 30px;min-height:100%}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-banniere{
  position:relative;left:auto;right:auto;top:auto;
  width:100%;max-width:310px;margin:0 0 30px}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-titreV{
  position:relative;left:auto;right:auto;top:auto;margin:0 0 10px}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-grille{
  position:relative;left:auto;right:auto;top:auto;
  width:100%;max-width:320px;margin:0 0 20px}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-pied{
  position:relative;left:auto;right:auto;bottom:auto;
  width:100%;max-width:310px;margin:4px 0 16px;opacity:1;animation:none}
/* Les boutons du jeu, poses dans le meme flux. */
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc .lgv2-victory-cta{
  position:relative;z-index:15;width:100%;max-width:310px;margin-top:auto}
/* Le decor reste en fond. */
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gloire,
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-part,
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-brail,
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-vign{pointer-events:none}

/* ---------------------------------------------------------------------
   Deux reparations relevees au banc :
   1. La classe « vu » de la maquette n'avait pas ete prefixee : les
      vainqueurs restaient a opacite 0. On declenche la cascade sur la
      classe reelle, sans dependre d'un ajout JavaScript.
   2. Le fond de camp etait battu par une regle du jeu plus specifique.
      On le repose avec !important, camp par camp.
   --------------------------------------------------------------------- */
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant{
  animation:lgv2v3-gag .62s cubic-bezier(.18,.82,.24,1.03) calc(var(--i) * 160ms) both}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant .lgv2v3-ph::after{
  animation:lgv2v3-balai .95s ease-in-out calc(var(--i) * 160ms + 280ms) both}

#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc.lgv2v3-loups{
  background:radial-gradient(120% 78% at 50% 26%,#3A0E1C 0%,#260912 38%,#150509 70%,#080305 100%)!important}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc.lgv2v3-village{
  background:radial-gradient(120% 78% at 50% 24%,#4A3A16 0%,#2E2410 38%,#171208 70%,#0A0704 100%)!important}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc.lgv2v3-flute{
  background:radial-gradient(120% 78% at 50% 26%,#2E1A4A 0%,#1F1233 38%,#120A1F 70%,#07040C 100%)!important}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc.lgv2v3-alien{
  background:radial-gradient(120% 78% at 50% 26%,#0E3A44 0%,#0A2830 38%,#06161B 70%,#03090B 100%)!important}

/* La section ne couvrait pas toute la largeur : le fond de l'ecran parent
   apparaissait en bande sur le bord. Elle occupe desormais tout l'espace. */
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-sc{
  width:100%;max-width:none;margin:0;border-radius:0;box-sizing:border-box}
/* =====================================================================
   7.0.25 — ENTREE EN PARTIE : LA DONNE ET LA DECOUVERTE DU ROLE.
   Remplace l habillage precedent de renderRoleReveal(). Le Narrateur
   n'est pas concerne : le jeu ne l'envoie deja pas sur cet ecran.
   Classes prefixees « lgv2e2- », images-cles renommees : zero collision.
   ===================================================================== */
#lg-v2.lgv2 .lgv2-screen.lgv2-role-cinematic.lgv2e2-sc{
  position:fixed;inset:0;overflow:hidden;isolation:isolate;z-index:40;
  --or:#C9A227;--or-clair:#EFD6A0;--or-doux:#8C6B24;--or-vif:#F5D98F;--creme:#FFF6E6;
  --parch-1:#F6EBD6;--parch-2:#E7D8BC;--encre:#33210F;--encre-douce:#5A4126;
  --grenat:#7C1027;--vert:#2F6B3A;--violet:#4A2F6B;
  --serif:'Iowan Old Style','Palatino Linotype','Book Antiqua',Georgia,serif;
  --sans:'Avenir Next','Segoe UI',system-ui,sans-serif}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-sc{position:absolute;inset:0;overflow:hidden;isolation:isolate;
  background:radial-gradient(130% 84% at 50% 30%,#1A2033 0%,#111726 42%,#080B14 74%,#04060B 100%)}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-sc .lgv2e2-brail{position:absolute;inset:-30%;opacity:.05;pointer-events:none;
  background-image:radial-gradient(#fff 1px,transparent 1.2px);background-size:3px 3px}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-sc .lgv2e2-vign{position:absolute;inset:0;pointer-events:none;z-index:8;
  background:radial-gradient(118% 80% at 50% 42%,transparent 44%,rgba(0,0,0,.62) 100%)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-nappe{position:absolute;left:50%;top:8%;width:460px;height:460px;margin-left:-230px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,224,160,.13),transparent 62%);opacity:0;transition:opacity .9s ease}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-jeu.lgv2e2-t2 .lgv2e2-nappe{opacity:1}

#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-sceau{position:absolute;left:50%;top:42%;width:132px;height:132px;margin:-66px 0 0 -66px;z-index:6;
  display:grid;place-items:center;opacity:0;transform:scale(.7)}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-jeu.lgv2e2-t1 .lgv2e2-sceau{animation:lgv2e2-sceau-in 620ms cubic-bezier(.2,.8,.25,1.1) both}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-jeu.lgv2e2-t2 .lgv2e2-sceau{animation:lgv2e2-sceau-out 560ms cubic-bezier(.6,0,.9,.4) both}
@keyframes lgv2e2-sceau-in{to{opacity:1;transform:scale(1)}}
@keyframes lgv2e2-sceau-out{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.5)}}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-sceau .lgv2e2-disque{position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle at 38% 32%,#9A1D34,#5E0C1F 70%,#3D0715);
  box-shadow:0 0 34px rgba(160,30,50,.5),inset 0 2px 0 rgba(255,180,180,.2)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-sceau .lgv2e2-anneau{position:absolute;inset:-9px;border-radius:50%;border:1px solid var(--or-doux)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-sceau .lgv2e2-anneau::after{content:'';position:absolute;inset:5px;border-radius:50%;border:1px dashed rgba(214,180,110,.42)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-sceau svg{width:52px;height:52px;fill:var(--or-vif);position:relative;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-eclat{position:absolute;left:50%;top:42%;width:5px;height:5px;margin:-2px 0 0 -2px;border-radius:50%;
  background:var(--or-vif);opacity:0;z-index:7}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-jeu.lgv2e2-t2 .lgv2e2-eclat{animation:lgv2e2-eclat 900ms cubic-bezier(.15,.7,.3,1) both}
@keyframes lgv2e2-eclat{0%{opacity:1;transform:translate(0,0) scale(1)}
  100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.2)}}

#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-siege{position:absolute;width:42px;height:42px;border-radius:50%;z-index:3;left:50%;top:38%;margin:-21px 0 0 -21px;
  background:linear-gradient(180deg,#22304A,#162034);border:1.5px solid rgba(214,180,110,.42);
  transform:translate(var(--sx),var(--sy)) scale(.4);opacity:0;
  transition:transform .5s cubic-bezier(.2,.8,.25,1.05),opacity .5s ease;transition-delay:calc(var(--i)*42ms)}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-jeu.lgv2e2-t2 .lgv2e2-siege{opacity:1;transform:translate(var(--sx),var(--sy)) scale(1)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-siege.lgv2e2-servi{border-color:var(--or);box-shadow:0 0 14px rgba(220,180,110,.45)}

#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte{position:absolute;width:62px;height:88px;left:50%;top:38%;margin:-44px 0 0 -31px;z-index:5;will-change:transform}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2e2-f{position:absolute;inset:0;border-radius:8px;overflow:hidden}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2e2-dos{background:linear-gradient(155deg,#6E1024 0%,#4A0A18 46%,#320610 100%);
  border:1.5px solid rgba(214,180,110,.68);box-shadow:0 6px 18px rgba(0,0,0,.55),inset 0 0 0 3px rgba(214,180,110,.14)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2e2-dos::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 50% 46%,rgba(255,225,170,.34),transparent 58%)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2e2-dos svg{position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;fill:rgba(255,228,178,.5)}

/* ---- LA CARTE DU JOUEUR : la VRAIE carte du jeu sur la face ---- */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne{position:absolute;left:50%;top:42%;width:196px;height:284px;margin:-142px 0 0 -98px;z-index:9;
  transform-style:preserve-3d;opacity:0;transform:translateY(150px) scale(.42) rotateY(0deg);
  transition:transform .95s cubic-bezier(.16,.84,.24,1),opacity .5s ease}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-jeu.lgv2e2-t4 .lgv2e2-mienne{opacity:1;transform:translateY(0) scale(1) rotateY(0deg)}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-jeu.lgv2e2-t5 .lgv2e2-mienne{opacity:1;transform:translateY(-8px) scale(1.02) rotateY(180deg)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-f{position:absolute;inset:0;border-radius:15px;backface-visibility:hidden;overflow:hidden}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos{background:linear-gradient(155deg,#6E1024 0%,#4A0A18 46%,#320610 100%);
  border:2px solid rgba(214,180,110,.75);box-shadow:0 22px 54px rgba(0,0,0,.6),inset 0 0 0 6px rgba(214,180,110,.13);
  display:grid;place-items:center;gap:10px;align-content:center}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos svg{width:74px;height:74px;fill:rgba(255,228,178,.52)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos b{font:800 8.6px/1 var(--sans);letter-spacing:.3em;color:rgba(255,228,178,.72)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos::after{content:'';position:absolute;inset:-10%;
  background:linear-gradient(105deg,transparent 40%,rgba(255,240,200,.24) 50%,transparent 60%);
  transform:translateX(-120%);animation:lgv2e2-lustre 2.6s ease-in-out 1.1s infinite}
@keyframes lgv2e2-lustre{0%{transform:translateX(-120%)}55%,100%{transform:translateX(120%)}}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-jeu.lgv2e2-t5 .lgv2e2-mienne .lgv2e2-dos::after{animation:none}
/* La face porte l'illustration officielle, sans rien par-dessus. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-face{transform:rotateY(180deg);background:#0B0A0C;
  box-shadow:0 22px 54px rgba(0,0,0,.55),0 0 0 2px var(--or-doux)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-face img{width:100%;height:100%;object-fit:cover;display:block}

#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-souffle{position:absolute;left:50%;top:42%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;
  z-index:8;opacity:0;pointer-events:none}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-jeu.lgv2e2-t5 .lgv2e2-souffle{animation:lgv2e2-souffle 1.25s cubic-bezier(.1,.7,.3,1) .42s both}
@keyframes lgv2e2-souffle{0%{opacity:.85;transform:scale(1)}100%{opacity:0;transform:scale(34)}}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-camp-village .lgv2e2-souffle{background:radial-gradient(circle,rgba(94,156,99,.55),transparent 70%)}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-camp-loups .lgv2e2-souffle{background:radial-gradient(circle,rgba(179,48,73,.55),transparent 70%)}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-camp-solo .lgv2e2-souffle{background:radial-gradient(circle,rgba(133,96,174,.55),transparent 70%)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-braise{position:absolute;bottom:16%;width:3px;height:3px;border-radius:50%;z-index:7;opacity:0}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-jeu.lgv2e2-t5 .lgv2e2-braise{animation:lgv2e2-braise calc(2.4s + var(--s)*.24s) ease-out calc(.6s + var(--s)*.11s) both}
@keyframes lgv2e2-braise{0%{opacity:0;transform:translateY(0) scale(.5)}18%{opacity:.85}
  100%{opacity:0;transform:translateY(-230px) translateX(var(--dx)) scale(1.1)}}













/* Coupe-son, toujours accessible */




/* ---------------------------------------------------------------------
   Le bandeau de texte de la donne. Il avait ete retire en nettoyant la
   maquette de ses elements de demonstration : les phrases se retrouvaient
   sans mise en page, par-dessus la scene. Reprise a l'identique, mais
   toujours visible (la maquette les revelait par une classe « vu »).
   --------------------------------------------------------------------- */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-legende{
  position:absolute;left:0;right:0;bottom:0;z-index:12;
  padding:0 26px calc(30px + env(safe-area-inset-bottom,0px));
  display:grid;justify-items:center;text-align:center;gap:7px;
  max-height:58%;overflow-y:auto;overscroll-behavior:contain}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-sur{
  font:800 9.4px/1 var(--sans);letter-spacing:.32em;text-transform:uppercase;color:#9FB4D6}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-gros{
  margin:0;font:700 24px/1.12 var(--serif);color:#FFF6E6;text-shadow:0 2px 16px rgba(6,10,22,.9)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-aide{
  margin:0;font:400 12.4px/1.5 var(--serif);color:#B9C6DE;max-width:29ch}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-pack{width:100%;max-width:320px}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-pack:empty{display:none}
/* Le bouton n'apparait qu'apres le retournement ; il permet de couper court
   a l'attente, sans jamais etre obligatoire. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-legende .lgv2-reveal-confirm{
  margin-top:4px}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-legende .lgv2-reveal-confirm[hidden]{display:none}
/* Tant que la carte n'est pas retournee, la scene occupe le haut de l'ecran
   et le texte le bas : les deux ne se chevauchent plus. */
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-sc .lgv2e2-mienne{top:34%}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-sc .lgv2e2-sceau,
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-sc .lgv2e2-siege,
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-sc .lgv2e2-carte{top:30%}
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-sc .lgv2e2-eclat,
#lg-v2.lgv2 .lgv2-role-cinematic.lgv2e2-sc .lgv2e2-souffle{top:34%}

/* =====================================================================
   7.0.25b — LES CARTES REPRENNENT LE DOS OFFICIEL DU JEU.
   Le premier jet improvisait un aplat grenat avec une patte : dos plat,
   angles secs, sceau decentre. On reprend ici EXACTEMENT le dos deja
   utilise par le jeu — degrade grenat, anneaux concentriques, double
   filet d'or interieur, sceau circulaire portant l'embleme du loup.
   ===================================================================== */

/* ---- LA CARTE DU JOUEUR ---- */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos{
  display:grid; place-items:center; align-content:center; gap:11px;
  padding:22px; border-radius:20px; overflow:hidden;
  background:
    radial-gradient(circle at center,rgba(220,174,95,.18),transparent 34%),
    repeating-radial-gradient(circle at 50% 50%,transparent 0 18px,rgba(203,158,84,.09) 19px 20px),
    linear-gradient(145deg,#40101d,#74132c 52%,#390b18);
  border:1px solid #cba562;
  box-shadow:inset 0 0 0 1px rgba(255,225,163,.5),
             inset 0 0 0 5px rgba(97,12,34,.82),
             0 0 0 1px #c49a58,
             0 22px 54px rgba(0,0,0,.6)}
/* Les deux filets d'or interieurs, comme sur le dos d'origine. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos::before,
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos::after{
  content:"";position:absolute;inset:10px;pointer-events:none;
  border:1px solid rgba(225,187,115,.52);border-radius:14px;
  background:none;transform:none;animation:none}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos::after{
  inset:19px;border-color:rgba(225,187,115,.18);border-radius:10px}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos>b{
  position:relative;z-index:2;font:700 13px/1 var(--serif);letter-spacing:.14em;
  color:#FFEDC2;text-shadow:0 1px 3px rgba(0,0,0,.55)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos>small{
  position:relative;z-index:2;font-size:8px;letter-spacing:.04em;
  color:#EFE0CD;text-shadow:0 1px 3px rgba(0,0,0,.5)}
/* La face avant : fond ivoire, l'illustration entiere, jamais rognee. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-face{
  border-radius:20px;overflow:hidden;background:#EFE0CA;
  border:1px solid #cba562;
  box-shadow:inset 0 0 0 1px rgba(255,225,163,.5),0 22px 54px rgba(0,0,0,.55)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-face img{
  width:100%;height:100%;object-fit:contain;background:#EFE0CA;display:block}

/* ---- LES CARTES DE LA DONNE : meme dos, en reduction ---- */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-paquet .lgv2e2-dos,
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2e2-dos{
  display:grid;place-items:center;border-radius:9px;overflow:hidden;padding:0;
  background:
    radial-gradient(circle at center,rgba(220,174,95,.18),transparent 34%),
    repeating-radial-gradient(circle at 50% 50%,transparent 0 7px,rgba(203,158,84,.10) 8px 9px),
    linear-gradient(145deg,#40101d,#74132c 52%,#390b18);
  border:1px solid #cba562;
  box-shadow:inset 0 0 0 1px rgba(255,225,163,.42),
             inset 0 0 0 2.5px rgba(97,12,34,.8),
             0 6px 16px rgba(0,0,0,.55)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2e2-dos::after{
  content:"";position:absolute;inset:4px;border:1px solid rgba(225,187,115,.34);
  border-radius:6px;pointer-events:none;background:none}
/* Le sceau, mis a l'echelle de la petite carte et parfaitement centre. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2-card-back-seal{
  width:38px;height:38px;margin:0}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2-card-wolf-mark{
  width:27px;height:28px;animation:none}

/* ---- LE SCEAU CENTRAL DE LA DONNE ---- */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-sceau .lgv2e2-embleme{
  position:relative;z-index:3;width:62px;height:64px;display:block;
  background:url('../images/wolf-emblem.webp') center/contain no-repeat;
  opacity:.85;filter:brightness(1.1) contrast(1.05) drop-shadow(0 2px 8px rgba(0,0,0,.55));
  animation:none}
/* Le disque etait decentre : il se cale desormais sur le centre du sceau. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-sceau{
  display:grid;place-items:center;align-content:center}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-sceau .lgv2e2-disque,
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-sceau .lgv2e2-anneau{
  grid-area:1/1;place-self:center}

/* ---- Les sieges : des places a table, pas des pastilles bleues ---- */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-siege{
  background:radial-gradient(circle at 40% 34%,rgba(58,44,32,.9),rgba(26,18,13,.92));
  border:1.5px solid rgba(203,165,98,.4);
  box-shadow:inset 0 1px 0 rgba(255,225,163,.14),0 4px 12px rgba(0,0,0,.5)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-siege.lgv2e2-servi{
  border-color:rgba(226,190,120,.9);
  box-shadow:0 0 16px rgba(220,180,110,.45),inset 0 1px 0 rgba(255,235,190,.2)}

/* Sur les cartes de la donne (62 x 88 px), l'anneau du sceau se refermait
   en pastille sombre illisible. On garde l'embleme seul, plus lisible a
   cette taille, et on lui rend son opacite. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2-card-back-seal{
  background:none;box-shadow:none;width:auto;height:auto}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2-card-wolf-mark{
  width:30px;height:31px;opacity:.72;mix-blend-mode:normal;
  filter:brightness(1.15) drop-shadow(0 1px 3px rgba(0,0,0,.5))}
/* =====================================================================
   7.0.27 — LA MORT D'UN HABITANT : DEUX RECITS.
   Remplace les deux ceremonies precedentes (vote du village et morts de
   la nuit). La nuit, on ne montre JAMAIS les avatars des loups : trois
   paires d yeux anonymes, puis les griffures. Le vote, lui, est public :
   les accusateurs arrivent un par un et le compteur de voix grimpe.
   Classes prefixees « lgv2d2- » : aucune collision.
   ===================================================================== */
/* 7.0.67 — Temps 2 du Chasseur : même voile/cendres/typographie D2, seulement la géométrie du duel. */
#lg-v2.lgv2 .lgv2d2-hunter-shot .lgv2d2-hunter-duel{position:absolute;left:50%;top:32%;z-index:10;width:min(86vw,420px);transform:translate(-50%,-50%);display:grid;grid-template-columns:1fr minmax(70px,1fr) 1fr;align-items:center;gap:8px}
#lg-v2.lgv2 .lgv2d2-hunter-shot .lgv2d2-hunter-person{display:grid;justify-items:center;gap:6px;color:#E4CDA8;font:700 9px/1.1 var(--serif);text-align:center}
#lg-v2.lgv2 .lgv2d2-hunter-shot .lgv2d2-hunter-person>img:first-child{width:78px;height:78px;border-radius:50%;object-fit:cover;border:2px solid var(--or-clair);box-shadow:0 10px 28px rgba(0,0,0,.55)}
#lg-v2.lgv2 .lgv2d2-hunter-shot .lgv2d2-hunter-role{width:42px;height:58px;border-radius:5px;object-fit:cover;box-shadow:0 4px 12px rgba(0,0,0,.45)}
#lg-v2.lgv2 .lgv2d2-hunter-shot .lgv2d2-hunter-hidden{width:42px;height:58px;border-radius:5px;display:grid;place-items:center;background:linear-gradient(160deg,#3d1722,#160a10);border:1px solid var(--or-clair);box-shadow:0 4px 12px rgba(0,0,0,.45)}
#lg-v2.lgv2 .lgv2d2-hunter-shot .lgv2d2-hunter-trait{height:3px;border-radius:999px;background:linear-gradient(90deg,transparent,var(--or-clair),#fff2c2,var(--or-clair),transparent);box-shadow:0 0 14px rgba(232,198,122,.9);transform-origin:left center;animation:lgv2d2-hunter-fire .62s cubic-bezier(.2,.8,.25,1) .6s both}
@keyframes lgv2d2-hunter-fire{from{transform:scaleX(0);opacity:0}60%{opacity:1}to{transform:scaleX(1);opacity:.86}}
@media (prefers-reduced-motion:reduce){#lg-v2.lgv2 .lgv2d2-hunter-shot .lgv2d2-hunter-trait{animation-duration:.1s!important;animation-delay:0s!important}}
#lg-v2.lgv2 .lgv2d2-ceremonie{position:fixed;inset:0;z-index:60;overflow:hidden;
  isolation:isolate;background:radial-gradient(120% 78% at 50% 34%,#1A1218 0%,#120C12 44%,#08050A 76%,#040306 100%);
  --or:#C9A227;--or-clair:#EFD6A0;--or-doux:#8C6B24;--or-vif:#F5D98F;--creme:#FFF6E6;
  --grenat:#7C1027;--grenat-vif:#B33049;
  --serif:'Iowan Old Style','Palatino Linotype','Book Antiqua',Georgia,serif;
  --sans:'Avenir Next','Segoe UI',system-ui,sans-serif}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-sc{position:absolute;inset:0;overflow:hidden;isolation:isolate;
 background:radial-gradient(120% 78% at 50% 34%,#1A1218 0%,#120C12 44%,#08050A 76%,#040306 100%)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-brail{position:absolute;inset:-30%;opacity:.05;pointer-events:none;
 background-image:radial-gradient(#fff 1px,transparent 1.2px);background-size:3px 3px}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-vign{position:absolute;inset:0;pointer-events:none;z-index:14;
 background:radial-gradient(112% 76% at 50% 38%,transparent 40%,rgba(0,0,0,.76) 100%)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-pouls{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;
 background:radial-gradient(80% 54% at 50% 34%,rgba(150,20,44,.36),transparent 70%)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a1 .lgv2d2-pouls{animation:lgv2d2-pouls 1.5s ease-out both}
@keyframes lgv2d2-pouls{0%{opacity:0}18%{opacity:1}100%{opacity:0}}

/* ===== LA NUIT : les yeux de la meute (ANONYMES) ===== */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-yeux{position:absolute;left:0;right:0;top:26%;height:120px;z-index:4}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-paire{position:absolute;left:var(--x);top:var(--y);display:flex;gap:9px;opacity:0;
 transform:translateX(var(--dx)) scale(.8)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a2 .lgv2d2-paire{animation:lgv2d2-yeux-in 1.1s cubic-bezier(.2,.8,.25,1) calc(var(--s)*.22s) both,
                       lgv2d2-cligne 3.4s steps(1) calc(1.4s + var(--s)*.5s) infinite}
@keyframes lgv2d2-yeux-in{to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes lgv2d2-cligne{0%,94%{opacity:1}95%,97%{opacity:.06}98%,100%{opacity:1}}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-paire i{width:13px;height:7px;border-radius:50%;
 background:radial-gradient(circle at 50% 50%,#FFE9A8,#E0913A 55%,rgba(180,90,20,0) 100%);
 box-shadow:0 0 12px rgba(255,190,90,.75)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a3 .lgv2d2-yeux{animation:lgv2d2-yeux-out .5s ease-in both}
@keyframes lgv2d2-yeux-out{to{opacity:0;transform:scale(1.15)}}
/* La griffure : trois traits de lumière qui balaient l'écran */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-griffe{position:absolute;left:-30%;top:var(--gy);width:160%;height:3px;z-index:6;opacity:0;
 background:linear-gradient(90deg,transparent,rgba(255,214,178,.1) 18%,#FFF1DC 50%,rgba(255,214,178,.1) 82%,transparent);
 transform:rotate(-19deg) scaleX(0);transform-origin:0 50%;
 box-shadow:0 0 16px rgba(255,170,120,.7)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a3 .lgv2d2-griffe{animation:lgv2d2-griffe .5s cubic-bezier(.2,.85,.3,1) calc(var(--s)*.11s) both}
@keyframes lgv2d2-griffe{0%{opacity:0;transform:rotate(-19deg) scaleX(0)}
 22%{opacity:1}100%{opacity:0;transform:rotate(-19deg) scaleX(1)}}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-flash{position:absolute;inset:0;z-index:7;background:rgba(255,226,190,.9);opacity:0;pointer-events:none}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a3 .lgv2d2-flash{animation:lgv2d2-flash .42s ease-out .12s both}
@keyframes lgv2d2-flash{0%{opacity:0}14%{opacity:.5}100%{opacity:0}}

/* ===== LE VOTE : les accusateurs ===== */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-anneau{position:absolute;left:50%;top:33%;width:236px;height:236px;margin:-118px 0 0 -118px;z-index:3;
 border-radius:50%;border:1px dashed rgba(214,180,110,.28);opacity:0;transform:scale(.9)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a2 .lgv2d2-anneau{animation:lgv2d2-anneau-in .7s cubic-bezier(.2,.8,.25,1) both}
@keyframes lgv2d2-anneau-in{to{opacity:1;transform:scale(1)}}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a4 .lgv2d2-anneau{animation:lgv2d2-anneau-serre 1s cubic-bezier(.3,.8,.25,1) both}
@keyframes lgv2d2-anneau-serre{0%{opacity:1;transform:scale(1);border-color:rgba(214,180,110,.28)}
 100%{opacity:1;transform:scale(.94);border-color:rgba(179,48,73,.75)}}

#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-acc{position:absolute;left:50%;top:33%;width:54px;margin:-27px 0 0 -27px;z-index:6;
 display:grid;justify-items:center;gap:3px;opacity:0;
 transform:translate(var(--fx),var(--fy)) scale(.5)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a2 .lgv2d2-acc{animation:lgv2d2-acc-in .72s cubic-bezier(.18,.82,.24,1.02) calc(var(--s)*.42s) both}
@keyframes lgv2d2-acc-in{
 0%{opacity:0;transform:translate(var(--fx),var(--fy)) scale(.5)}
 60%{opacity:1}
 100%{opacity:1;transform:translate(var(--tx),var(--ty)) scale(1)}}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-acc img{width:46px;height:46px;border-radius:50%;object-fit:cover;
 border:2px solid rgba(179,48,73,.8);box-shadow:0 6px 18px rgba(0,0,0,.6),0 0 14px rgba(179,48,73,.35)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-acc b{font:700 8.4px/1 var(--serif);color:#E4CDA8;text-shadow:0 1px 4px rgba(0,0,0,.9);white-space:nowrap}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-acc em{position:absolute;right:-2px;top:-2px;width:17px;height:17px;border-radius:50%;
 background:#8B1A32;border:1px solid var(--or-doux);color:#FFF3DF;font:800 8px/17px var(--sans);
 font-style:normal;text-align:center}
/* Compteur de voix, au centre, qui grimpe */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-compte{position:absolute;left:50%;top:33%;width:72px;height:72px;margin:-36px 0 0 -36px;z-index:5;
 border-radius:50%;display:grid;place-items:center;opacity:0;
 background:radial-gradient(circle at 42% 36%,#2A1620,#150A10);
 border:1.5px solid rgba(214,180,110,.55)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a2 .lgv2d2-compte{animation:lgv2d2-fade .6s ease-out .2s both}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a3 .lgv2d2-compte{animation:lgv2d2-compte-out .55s ease-in both}
@keyframes lgv2d2-compte-out{to{opacity:0;transform:scale(.7)}}
@keyframes lgv2d2-fade{to{opacity:1}}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-compte s{text-decoration:none;font:700 27px/1 var(--serif);color:var(--or-clair)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-compte u{text-decoration:none;font:800 7px/1 var(--sans);letter-spacing:.18em;color:#B79A6E;margin-top:2px}

/* ===== LE DISPARU ===== */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-medaillon{position:absolute;left:50%;top:33%;width:132px;height:132px;margin:-66px 0 0 -66px;z-index:8;
 border-radius:50%;overflow:hidden;opacity:0;transform:translateY(28px) scale(.86);
 border:2.5px solid var(--or-doux);box-shadow:0 16px 44px rgba(0,0,0,.66),0 0 0 6px rgba(124,16,39,.22);
 transition:filter 1.1s ease,opacity .9s ease,transform .9s cubic-bezier(.16,.84,.24,1)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a3 .lgv2d2-medaillon,.lgv2d2-m.lgv2d2-a4 .lgv2d2-medaillon,.lgv2d2-m.lgv2d2-a5 .lgv2d2-medaillon{opacity:1;transform:translateY(0) scale(1)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-medaillon img{width:100%;height:100%;object-fit:cover;display:block}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a5 .lgv2d2-medaillon{filter:grayscale(1) brightness(.6) contrast(1.06)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-ruban{position:absolute;left:50%;top:33%;width:186px;height:15px;margin:-8px 0 0 -93px;z-index:9;
 background:linear-gradient(90deg,transparent,#5E0C1F 16%,#8E1730 50%,#5E0C1F 84%,transparent);
 transform:rotate(-24deg) scaleX(0);transform-origin:50% 50%;opacity:0;box-shadow:0 3px 12px rgba(0,0,0,.5)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a5 .lgv2d2-ruban{animation:lgv2d2-ruban .6s cubic-bezier(.2,.8,.25,1) .25s both}
@keyframes lgv2d2-ruban{to{opacity:1;transform:rotate(-24deg) scaleX(1)}}

/* ===== LA CARTE ===== */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte{position:absolute;left:50%;top:63%;width:144px;height:208px;margin:-104px 0 0 -72px;z-index:10;
 transform-style:preserve-3d;opacity:0;transform:translateY(44px) scale(.8) rotateY(0deg);
 transition:transform .9s cubic-bezier(.16,.84,.24,1),opacity .55s ease}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a4 .lgv2d2-carte{opacity:1;transform:translateY(0) scale(1) rotateY(0deg)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a5 .lgv2d2-carte{opacity:1;transform:translateY(-4px) scale(1.02) rotateY(180deg)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-f{position:absolute;inset:0;border-radius:13px;backface-visibility:hidden;overflow:hidden}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-dos{background:linear-gradient(155deg,#5E0C1F,#3E0714 46%,#28040D);
 border:2px solid rgba(214,180,110,.7);box-shadow:0 18px 44px rgba(0,0,0,.62),inset 0 0 0 5px rgba(214,180,110,.12);
 display:grid;place-items:center;align-content:center;gap:8px}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-dos svg{width:52px;height:52px;fill:rgba(255,228,178,.46)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-dos b{font:800 7.6px/1 var(--sans);letter-spacing:.24em;color:rgba(255,228,178,.66)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-dos::after{content:'';position:absolute;inset:-10%;
 background:linear-gradient(105deg,transparent 40%,rgba(255,240,200,.2) 50%,transparent 60%);
 transform:translateX(-120%);animation:lgv2d2-lustre 2.6s ease-in-out 1s infinite}
@keyframes lgv2d2-lustre{0%{transform:translateX(-120%)}55%,100%{transform:translateX(120%)}}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a5 .lgv2d2-carte .lgv2d2-dos::after{animation:none}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-face{transform:rotateY(180deg);background:#0B0A0C;
 box-shadow:0 18px 44px rgba(0,0,0,.6),0 0 0 2px var(--or-doux)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-face img{width:100%;height:100%;object-fit:cover;display:block}

#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-souffle{position:absolute;left:50%;top:63%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;
 z-index:9;opacity:0;pointer-events:none}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a5 .lgv2d2-souffle{animation:lgv2d2-souffle 1.3s cubic-bezier(.1,.7,.3,1) .4s both}
@keyframes lgv2d2-souffle{0%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(32)}}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-camp-loups .lgv2d2-souffle{background:radial-gradient(circle,rgba(179,48,73,.55),transparent 70%)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-camp-village .lgv2d2-souffle{background:radial-gradient(circle,rgba(94,156,99,.5),transparent 70%)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-cendre{position:absolute;top:-8px;width:3px;height:3px;border-radius:50%;z-index:11;opacity:0;
 background:rgba(226,214,196,.75)}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-m.lgv2d2-a5 .lgv2d2-cendre{animation:lgv2d2-cendre calc(3.4s + var(--s)*.22s) linear calc(.5s + var(--s)*.13s) both}
@keyframes lgv2d2-cendre{0%{opacity:0;transform:translateY(0) translateX(0)}12%{opacity:.7}
 100%{opacity:0;transform:translateY(760px) translateX(var(--dx))}}


/* Le bandeau de texte de la ceremonie. Il avait ete laisse de cote en
   extrayant la maquette : les phrases se retrouvaient sans mise en page.
   Repris a l'identique, toujours visible. */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-legende{
  position:absolute;left:0;right:0;bottom:0;z-index:13;
  padding:0 28px calc(38px + env(safe-area-inset-bottom,0px));
  display:grid;justify-items:center;text-align:center;gap:6px}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-sur{
  font:800 9.4px/1 var(--sans);letter-spacing:.32em;text-transform:uppercase;color:#C08A96}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-gros{
  margin:0;font:700 24px/1.12 var(--serif);color:#FFF6E6;text-shadow:0 2px 16px rgba(0,0,0,.9)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-aide{
  margin:0;font:400 12.2px/1.5 var(--serif);color:#BCAEB4;max-width:29ch}
/* Le compteur de voix du vote. */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-compte s{
  text-decoration:none;font:700 27px/1 var(--serif);color:#EFD6A0}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-compte u{
  text-decoration:none;font:800 7px/1 var(--sans);letter-spacing:.18em;color:#B79A6E;margin-top:2px}
/* Le dos de la carte reprend celui du jeu, comme partout ailleurs. */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-dos{
  display:grid;place-items:center;align-content:center;gap:9px;padding:18px;
  border-radius:13px;overflow:hidden;
  background:
    radial-gradient(circle at center,rgba(220,174,95,.18),transparent 34%),
    repeating-radial-gradient(circle at 50% 50%,transparent 0 14px,rgba(203,158,84,.09) 15px 16px),
    linear-gradient(145deg,#40101d,#74132c 52%,#390b18);
  border:1px solid #cba562;
  box-shadow:inset 0 0 0 1px rgba(255,225,163,.5),inset 0 0 0 4px rgba(97,12,34,.82),
             0 18px 44px rgba(0,0,0,.62)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-dos::after{
  content:"";position:absolute;inset:8px;border:1px solid rgba(225,187,115,.4);
  border-radius:9px;pointer-events:none;background:none;transform:none;animation:none}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-dos>b{
  position:relative;z-index:2;font:700 11px/1 var(--serif);letter-spacing:.14em;
  color:#FFEDC2;text-shadow:0 1px 3px rgba(0,0,0,.55)}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2-card-back-seal{width:74px;height:74px}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2-card-wolf-mark{width:54px;height:56px}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-face{
  border-radius:13px;overflow:hidden;background:#EFE0CA;border:1px solid #cba562}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-face img{
  width:100%;height:100%;object-fit:contain;background:#EFE0CA;display:block}

/* ---------------------------------------------------------------------
   Dans la maquette, les yeux, les griffures, les accusateurs et le
   compteur n'apparaissaient qu'a l'etape « a2 », posee par un minuteur
   du navigateur. Ici la ceremonie est pilotee par le SERVEUR : elle
   s'affiche d'un bloc. On declenche donc ces animations sur la classe de
   base, en conservant exactement leurs decalages d'origine.
   --------------------------------------------------------------------- */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-paire{
  animation:lgv2d2-yeux-in 1.1s cubic-bezier(.2,.8,.25,1) calc(var(--s)*.22s) both,
            lgv2d2-cligne 3.4s steps(1) calc(1.4s + var(--s)*.5s) infinite}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-griffe{
  animation:lgv2d2-griffe .5s cubic-bezier(.2,.85,.3,1) calc(1.1s + var(--s)*.11s) both}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-flash{
  animation:lgv2d2-flash .42s ease-out 1.2s both}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-anneau{
  animation:lgv2d2-anneau-in .7s cubic-bezier(.2,.8,.25,1) both}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-acc{
  animation:lgv2d2-acc-in .72s cubic-bezier(.18,.82,.24,1.02) calc(var(--s)*.42s) both}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-compte{
  animation:lgv2d2-fade .6s ease-out .2s both}
/* Une fois la carte retournee, les yeux s'effacent et l'anneau se resserre. */
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-a5 .lgv2d2-yeux{
  animation:lgv2d2-yeux-out .5s ease-in both}
#lg-v2.lgv2 .lgv2d2-ceremonie.lgv2d2-a5 .lgv2d2-anneau{
  animation:lgv2d2-anneau-serre 1s cubic-bezier(.3,.8,.25,1) both}
@media (prefers-reduced-motion:reduce){
  #lg-v2.lgv2 .lgv2d2-ceremonie *{animation-duration:1ms!important;animation-delay:0ms!important}}

/* Les yeux de la meute passaient DERRIERE le medaillon de la victime, qui
   les masquait entierement. Ils remontent au-dessus de lui, s'attardent le
   temps qu'on les remarque, puis s'effacent : la victime reste seule a
   l'ecran, comme dans la maquette. */
/* 11 % tombait dans le coin sombre de la vignette, qui ecrasait les yeux
   de 76 %. On les replace dans sa zone claire, toujours au-dessus du
   medaillon, et on les remonte au-dessus du voile pour de bon. */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-yeux{top:17%;z-index:15}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-paire{
  animation:lgv2d2-yeux-in 1.1s cubic-bezier(.2,.8,.25,1) calc(var(--s)*.22s) both,
            lgv2d2-cligne 3.4s steps(1) calc(1.4s + var(--s)*.5s) 2,
            lgv2d2-yeux-out .9s ease-in 5.4s forwards}
/* « both » sur la derniere animation appliquait son etat de depart pendant
   toute sa temporisation, ce qui remettait les yeux a opacite 0 : ils
   n'apparaissaient jamais. « forwards » ne retient que l'etat d'arrivee. */

/* Les yeux etaient techniquement affiches mais trop petits et trop pales
   pour se lire sur ce fond : mesures a l'ecran, ils disparaissaient. On
   les agrandit et on renforce leur halo, sans changer leur couleur. */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-paire{gap:13px}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-paire i{
  width:20px;height:11px;
  background:radial-gradient(circle at 50% 50%,#FFF3C8,#F0A83E 52%,rgba(190,95,20,0) 100%);
  box-shadow:0 0 20px rgba(255,190,90,.95),0 0 42px rgba(255,150,50,.5)}
/* =====================================================================
   7.0.28 — LE RECIT DE LA NUIT, au reveil du village.
   Un evenement par ecran, le fond prend la couleur du moment, trois
   points entre chaque. Le serveur ne transmet QUE du texte : aucun nom,
   aucun identifiant ne peut arriver jusqu ici.
   Classes prefixees « lgv2r2- » : aucune collision.
   ===================================================================== */
#lg-v2.lgv2 .lgv2r2-recit{position:fixed;inset:0;z-index:58;overflow:hidden;isolation:isolate;
  background:radial-gradient(124% 80% at 50% 30%,#1B1626 0%,#131020 40%,#0A0812 72%,#050409 100%);
  --or:#C9A227;--or-clair:#EFD6A0;--or-doux:#8C6B24;--or-vif:#F5D98F;--creme:#FFF6E6;
  --rouge:#B33049;--rouge-p:#6C0E23;--vert:#4E8C57;--vert-p:#25542C;--bleu:#5B82BE;--bleu-p:#233A63;
  --serif:'Iowan Old Style','Palatino Linotype','Book Antiqua',Georgia,serif;
  --sans:'Avenir Next','Segoe UI',system-ui,sans-serif}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc{position:absolute;inset:0;overflow:hidden;isolation:isolate;
 background:radial-gradient(124% 80% at 50% 30%,#1B1626 0%,#131020 40%,#0A0812 72%,#050409 100%)}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-brail{position:absolute;inset:-30%;opacity:.05;pointer-events:none;
 background-image:radial-gradient(#fff 1px,transparent 1.2px);background-size:3px 3px;z-index:2}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-vign{position:absolute;inset:0;pointer-events:none;z-index:18;
 background:radial-gradient(114% 76% at 50% 40%,transparent 44%,rgba(0,0,0,.72) 100%)}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-entete{position:absolute;left:0;right:0;top:26px;text-align:center;z-index:13;opacity:.9}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-entete small{font:800 8.4px/1 var(--sans);letter-spacing:.34em;color:#9A8768}

/* ====== LE LAVIS DE COULEUR : tout l'écran prend le ton de l'événement ====== */
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-lavis{position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;
 transition:opacity .7s ease, background .7s ease}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-rouge .lgv2r2-lavis{opacity:1;background:radial-gradient(96% 62% at 50% 40%,rgba(179,48,73,.34),rgba(108,14,35,.14) 52%,transparent 78%)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-vert .lgv2r2-lavis{opacity:1;background:radial-gradient(96% 62% at 50% 40%,rgba(78,140,87,.30),rgba(37,84,44,.12) 52%,transparent 78%)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-bleu .lgv2r2-lavis{opacity:1;background:radial-gradient(96% 62% at 50% 40%,rgba(91,130,190,.26),rgba(35,58,99,.12) 52%,transparent 78%)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-or   .lgv2r2-lavis{opacity:1;background:radial-gradient(96% 62% at 50% 40%,rgba(201,162,39,.22),rgba(140,107,36,.1) 52%,transparent 78%)}
/* Battement bref au moment où l'événement tombe */
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-coup{position:absolute;inset:0;z-index:4;pointer-events:none;opacity:0}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-bat .lgv2r2-coup{animation:lgv2r2-bat .8s ease-out both}
@keyframes lgv2r2-bat{0%{opacity:0}12%{opacity:1}100%{opacity:0}}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-rouge .lgv2r2-coup{background:radial-gradient(70% 46% at 50% 40%,rgba(220,70,100,.42),transparent 72%)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-vert  .lgv2r2-coup{background:radial-gradient(70% 46% at 50% 40%,rgba(110,200,125,.34),transparent 72%)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-bleu  .lgv2r2-coup{background:radial-gradient(70% 46% at 50% 40%,rgba(130,175,240,.32),transparent 72%)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-or    .lgv2r2-coup{background:radial-gradient(70% 46% at 50% 40%,rgba(255,214,120,.30),transparent 72%)}

/* ====== L'ÉVÉNEMENT AU CENTRE ====== */
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-scene{position:absolute;left:0;right:0;top:0;bottom:0;z-index:8;
 display:grid;align-content:center;justify-items:center;gap:16px;padding:0 34px 78px}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-fini .lgv2r2-scene{opacity:0;transition:opacity .6s ease}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-medaille{width:118px;height:118px;border-radius:50%;display:grid;place-items:center;position:relative;
 background:radial-gradient(circle at 38% 32%,#241D2E,#100C18 72%);
 border:2px solid rgba(214,180,110,.42);opacity:0;transform:scale(.72) translateY(16px)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-ev .lgv2r2-medaille{animation:lgv2r2-med-in .72s cubic-bezier(.2,.82,.24,1.04) both}
@keyframes lgv2r2-med-in{to{opacity:1;transform:scale(1) translateY(0)}}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-medaille svg{width:52px;height:52px;position:relative;z-index:2}
/* L'anneau lumineux prend la couleur de l'événement */
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-medaille::after{content:'';position:absolute;inset:-9px;border-radius:50%;border:2px solid transparent}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-rouge .lgv2r2-medaille{border-color:rgba(179,48,73,.85);box-shadow:0 0 34px rgba(179,48,73,.35)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-rouge .lgv2r2-medaille svg{fill:#F2A0B0}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-vert .lgv2r2-medaille{border-color:rgba(78,140,87,.85);box-shadow:0 0 34px rgba(78,140,87,.32)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-vert .lgv2r2-medaille svg{fill:#A7E0B2}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-bleu .lgv2r2-medaille{border-color:rgba(91,130,190,.85);box-shadow:0 0 34px rgba(91,130,190,.3)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-bleu .lgv2r2-medaille svg{fill:#B8CEF0}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-or .lgv2r2-medaille{border-color:rgba(201,162,39,.85);box-shadow:0 0 34px rgba(201,162,39,.3)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-or .lgv2r2-medaille svg{fill:var(--or-vif)}
/* Onde qui part de la médaille */
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-onde{position:absolute;width:118px;height:118px;border-radius:50%;border:1.5px solid rgba(255,255,255,.3);opacity:0}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-ev .lgv2r2-onde{animation:lgv2r2-onde 1.5s cubic-bezier(.15,.72,.3,1) .2s both}
@keyframes lgv2r2-onde{0%{opacity:.55;transform:scale(1)}100%{opacity:0;transform:scale(2.5)}}

#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-txt{display:grid;justify-items:center;gap:7px;text-align:center}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-txt .lgv2r2-sur{font:800 9px/1 var(--sans);letter-spacing:.34em;text-transform:uppercase;opacity:0}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-ev .lgv2r2-txt .lgv2r2-sur{animation:lgv2r2-mont .6s cubic-bezier(.2,.8,.25,1) .25s both}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-rouge .lgv2r2-txt .lgv2r2-sur{color:#E39AAB}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-vert .lgv2r2-txt .lgv2r2-sur{color:#9FD6AB}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-bleu .lgv2r2-txt .lgv2r2-sur{color:#A8C2EA}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-est-or .lgv2r2-txt .lgv2r2-sur{color:var(--or-clair)}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-txt h2{margin:0;font:700 27px/1.14 var(--serif);color:var(--creme);
 text-shadow:0 2px 18px rgba(0,0,0,.9);opacity:0;clip-path:inset(0 0 100% 0)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-ev .lgv2r2-txt h2{animation:lgv2r2-titre .85s cubic-bezier(.16,.84,.24,1) .34s both}
@keyframes lgv2r2-titre{0%{opacity:0;transform:translateY(14px);clip-path:inset(0 0 100% 0)}
 55%{opacity:1}100%{opacity:1;transform:translateY(0);clip-path:inset(0 0 -8% 0)}}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-txt p{margin:0;font:400 12.6px/1.5 var(--serif);color:#C9BCC6;max-width:27ch;opacity:0}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-ev .lgv2r2-txt p{animation:lgv2r2-mont .7s cubic-bezier(.2,.8,.25,1) .5s both}
@keyframes lgv2r2-mont{to{opacity:1;transform:translateY(0)}}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-txt p{transform:translateY(9px)}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-txt .lgv2r2-sur{transform:translateY(7px)}

/* ====== LES TROIS POINTS entre deux événements ====== */
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-points{position:absolute;left:50%;bottom:118px;transform:translateX(-50%);z-index:12;
 display:flex;gap:9px;opacity:0;transition:opacity .35s ease}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-attente .lgv2r2-points{opacity:1}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-points i{width:7px;height:7px;border-radius:50%;background:rgba(233,214,178,.85);
 animation:lgv2r2-trois 1.15s ease-in-out infinite}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-points i:nth-child(2){animation-delay:.16s}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-points i:nth-child(3){animation-delay:.32s}
@keyframes lgv2r2-trois{0%,100%{opacity:.2;transform:scale(.72)}45%{opacity:1;transform:scale(1.18)}}

/* ====== LE FIL DE LA NUIT (progression) ====== */
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-fil{position:absolute;left:0;right:0;bottom:58px;z-index:13;display:flex;gap:7px;justify-content:center}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-fil s{text-decoration:none;width:26px;height:3px;border-radius:2px;background:rgba(214,180,110,.22);
 transition:background .45s ease, box-shadow .45s ease}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-fil s.lgv2r2-fait{background:rgba(214,180,110,.62)}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-fil s.lgv2r2-rouge{background:var(--rouge);box-shadow:0 0 9px rgba(179,48,73,.6)}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-fil s.lgv2r2-vert{background:var(--vert);box-shadow:0 0 9px rgba(78,140,87,.55)}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-fil s.lgv2r2-bleu{background:var(--bleu);box-shadow:0 0 9px rgba(91,130,190,.5)}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-fil s.lgv2r2-or{background:var(--or);box-shadow:0 0 9px rgba(201,162,39,.5)}

/* ====== BILAN ====== */
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-bilan{position:absolute;left:26px;right:26px;bottom:96px;z-index:14;padding:15px 14px;border-radius:15px;
 text-align:center;opacity:0;transform:translateY(16px);
 background:linear-gradient(180deg,rgba(255,250,238,.95),rgba(238,227,205,.9));
 border:1.5px solid var(--or-doux);box-shadow:0 18px 44px rgba(0,0,0,.6)}
#lg-v2.lgv2 .lgv2r2-recit.lgv2r2-sc.lgv2r2-fini .lgv2r2-bilan{animation:lgv2r2-mont .8s cubic-bezier(.2,.8,.25,1) .25s both}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-bilan small{display:block;font:800 8px/1 var(--sans);letter-spacing:.3em;color:var(--or-doux)}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-bilan strong{display:block;font:700 21px/1.16 var(--serif);color:#33210F;margin-top:6px}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-bilan em{display:block;font:400 11.6px/1.44 var(--serif);color:#5A4126;font-style:normal;margin-top:5px}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-bilan.lgv2r2-mort{border-color:rgba(179,48,73,.7)}
#lg-v2.lgv2 .lgv2r2-recit .lgv2r2-bilan.lgv2r2-calme{border-color:rgba(78,140,87,.7)}

/* 7.0.29 — repere de build discret, lisible en cinq secondes sur l'accueil. */
#lg-v2.lgv2 .lgv2-build-version{position:absolute;right:12px;bottom:max(7px,env(safe-area-inset-bottom));z-index:8;color:rgba(231,211,166,.72);font:600 9px/1.2 ui-sans-serif,system-ui,sans-serif;letter-spacing:.13em;text-transform:uppercase;text-shadow:0 1px 2px rgba(0,0,0,.7);pointer-events:none}

/* =====================================================================
   7.0.34 — GALERIE DES CAMPS VAINQUEURS
   Vivants : avatar couleur normal. Morts : avatar gris + marque funeraire.
   Densite adaptee aux grandes tables pour garder la galerie lisible.
   ===================================================================== */
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant.lgv2v3-vivant .lgv2v3-ph img{
  filter:none!important;opacity:1}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant.lgv2v3-mort .lgv2v3-ph img{
  filter:grayscale(1) brightness(.58)!important;opacity:.82}
#lg-v2.lgv2 .lgv2-role-gameover .lgv2v3-gagnant.lgv2v3-mort b{
  color:rgba(236,226,214,.72)}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-dense .lgv2v3-grille{
  max-width:340px;gap:9px 7px}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-dense .lgv2v3-gagnant{
  width:76px}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-dense .lgv2v3-gagnant .lgv2v3-ph{
  width:54px;height:54px}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-packed .lgv2v3-grille{
  max-width:346px;gap:7px 5px}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-packed .lgv2v3-gagnant{
  width:64px;gap:3px}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-packed .lgv2v3-gagnant .lgv2v3-ph{
  width:46px;height:46px;border-width:2px}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-packed .lgv2v3-gagnant b{
  max-width:64px;font-size:9px}
#lg-v2.lgv2 .lgv2-role-gameover.lgv2v3-packed .lgv2v3-gagnant u{
  max-width:64px;padding:2px 5px;font-size:5.7px;letter-spacing:.08em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#lg-v2.lgv2 .lgv2-victory-screen{overflow-x:hidden;overflow-y:auto}

/* =====================================================================
   7.0.36 — CONTRASTE FINAL, UNE SEULE GRAMMAIRE DE COULEUR
   ---------------------------------------------------------------------
   Cause racine : des correctifs historiques 6.12.x avaient conservé des
   sous-cartes brun/noir. La couche parchemin plus récente recolore ensuite
   leurs textes avec l'encre brune. Selon la spécificité, on obtenait donc
   brun sur noir, crème sur ivoire ou brun sur grenat.

   Contrat 7.0.36 :
   - surface claire -> encre brune de la palette ;
   - surface grenat -> texte crème/blanc ;
   - surface sombre volontaire -> texte crème ;
   - aucun sous-composant de JOUR ne garde un vieux fond sombre par hasard.
   Les règles sont placées EN FIN DE FEUILLE et ancrées sous #lg-v2.lgv2.
   ===================================================================== */

#lg-v2.lgv2 .lgv2-circle-screen{
  --lg-contraste-clair:#FFF8EA;
  --lg-contraste-blanc:#FFFFFF;
  --lg-contraste-grenat-1:#8B1A32;
  --lg-contraste-grenat-2:#651126;
}

/* A. Sous-cartes JOUR : suppression définitive des reliquats brun/noir. */
#lg-v2.lgv2 .lgv2-circle-screen:not(.is-night-mode) :is(
  .lgv2-day-rule-alert,
  .lgv2-second-own,
  .lgv2-second-history>span,
  .lgv2-second-decisions article,
  .lgv2-runoff-banner span,
  .lgv2-tie-players>span,
  .lgv2-dictator-power
){
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  border:1px solid var(--bp-or-doux)!important;
  box-shadow:0 4px 12px rgba(48,30,16,.10),inset 0 1px 0 var(--bp-lueur)!important;
  color:var(--bp-encre)!important;
  text-shadow:none!important;
  -webkit-text-stroke:0!important;
}
#lg-v2.lgv2 .lgv2-circle-screen:not(.is-night-mode) :is(
  .lgv2-day-rule-alert,
  .lgv2-second-own,
  .lgv2-second-history>span,
  .lgv2-second-decisions article,
  .lgv2-runoff-banner span,
  .lgv2-tie-players>span,
  .lgv2-dictator-power
) :is(h2,h3,b,strong){
  color:var(--bp-encre)!important;
  text-shadow:none!important;
  -webkit-text-stroke:0!important;
}
#lg-v2.lgv2 .lgv2-circle-screen:not(.is-night-mode) :is(
  .lgv2-day-rule-alert,
  .lgv2-second-own,
  .lgv2-second-history>span,
  .lgv2-second-decisions article,
  .lgv2-runoff-banner span,
  .lgv2-tie-players>span,
  .lgv2-dictator-power
) :is(p,small,em){
  color:var(--bp-encre-douce)!important;
  text-shadow:none!important;
  -webkit-text-stroke:0!important;
}

/* B. Les titres des blocs eux-mêmes restent sur le parchemin, jamais sur un
      rectangle sombre hérité. */
#lg-v2.lgv2 .lgv2-circle-screen:not(.is-night-mode) :is(
  .lgv2-second-decisions,
  .lgv2-runoff-banner
){
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen:not(.is-night-mode) :is(
  .lgv2-second-decisions>small,
  .lgv2-runoff-banner>small
){
  color:var(--bp-sourcil)!important;
  text-shadow:none!important;
}

/* C. Tout disque / badge GRENAT porte systématiquement une encre claire. */
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-current-voter>em,
  .lgv2-result-voter>em,
  .lgv2-runoff-banner span>em,
  .lgv2-ballot-avatar>strong,
  .lgv2-live-pill,
  .lgv2-bottom-btn>i
){
  color:var(--lg-contraste-clair)!important;
  text-shadow:none!important;
  -webkit-text-stroke:0!important;
}
/* Le compteur du votant était le défaut visible « 3 s » brun sur grenat. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-vote-stage .lgv2-current-voter>em{
  background:linear-gradient(160deg,var(--lg-contraste-grenat-1),var(--lg-contraste-grenat-2))!important;
  border-color:var(--bp-or)!important;
  color:var(--lg-contraste-clair)!important;
}
/* Badge ×2 du Maire dans le résultat du vote. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-result-voter>em{
  background:var(--lg-contraste-grenat-1)!important;
  color:var(--lg-contraste-clair)!important;
}
/* Compteurs des ex æquo / finalistes. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-runoff-banner span>em{
  background:var(--lg-contraste-grenat-1)!important;
  color:var(--lg-contraste-clair)!important;
}

/* D. Cartes révélées volontairement SOMBRES : le texte reste crème. La règle
      générique des panneaux ne doit plus recolorer « Villageois » en brun. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-revealed-card{
  color:var(--lg-contraste-clair)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-revealed-card .lgv2-revealed-card__copy>small{
  color:#EFD29B!important;
  text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-revealed-card .lgv2-revealed-card__copy>b{
  color:#FFF8EA!important;
  text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-revealed-card .lgv2-revealed-card__copy>span{
  color:#E6D7BE!important;
  text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-revealed-card.is-loups .lgv2-revealed-card__copy>small{color:#F7B8AD!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-revealed-card.is-solo .lgv2-revealed-card__copy>small{color:#D8CAF7!important}

/* E. Compteurs dorés/bronze : blanc chaud pour dépasser AA sur petit texte. */
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-speaker>strong,
  .lgv2-night-live>strong
){
  color:#FFF7E6!important;
  text-shadow:none!important;
}

/* F. Cartouche de progression du vote du Maire : le séparateur « / » ne
      disparaît plus en crème sur ivoire. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-ballot-head>strong>i{
  color:var(--bp-encre-douce)!important;
  text-shadow:none!important;
}

/* G. Messages d'attente clairs : protection contre la règle générique qui
      les avait rendus crème sur ivoire dans certains tours de scrutin. */
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-day-wait,
  .lgv2-vote-waiting,
  .lgv2-night-await
){
  color:var(--bp-encre-douce)!important;
  text-shadow:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-wait{
  background:linear-gradient(180deg,var(--bp-carte-1),var(--bp-carte-2))!important;
  border-color:var(--bp-or-doux)!important;
}

/* H. Boutons réellement grenat : jamais d'encre brune héritée. Les boutons
      parchemin et le CTA vert conservent leurs palettes propres. */
#lg-v2.lgv2 .lgv2-circle-screen :is(
  button.lgv2-role-channel-compose,
  .lgv2-role-channel-compose button,
  .lgv2-dictator-power>button,
  .lgv2-dictator-choice>button
){
  color:var(--lg-contraste-clair)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(
  .lgv2-role-channel-compose button,
  .lgv2-dictator-power>button,
  .lgv2-dictator-choice>button
) *{
  color:var(--lg-contraste-clair)!important;
}
/* 7.0.36 — reprise de spécificité : le compteur finaliste est un <em> dans
   une sous-carte jour ; la règle de texte de la carte porte une classe de
   plus. On la bat explicitement ici. */
#lg-v2.lgv2 .lgv2-circle-screen:not(.is-night-mode) .lgv2-runoff-banner span>em{
  background:var(--lg-contraste-grenat-1)!important;
  color:var(--lg-contraste-clair)!important;
  text-shadow:none!important;
}
/* 7.0.36 — action exceptionnelle du Dictateur : bouton grenat + texte clair,
   jamais texte clair sur la pilule ivoire générique. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-dictator-power>button,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-dictator-choice>button{
  background:linear-gradient(180deg,var(--lg-contraste-grenat-1),var(--lg-contraste-grenat-2))!important;
  border-color:var(--bp-or)!important;
  color:var(--lg-contraste-clair)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-dictator-power>button *,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-dictator-choice>button *{
  color:var(--lg-contraste-clair)!important;
}


/* =====================================================================
   7.0.36 — PARITE VISUELLE PARTIE AUTOMATIQUE / PARTIE NORMALE.
   Les animations de jeu sont communes aux deux modes. Cette couche retire
   explicitement les styles natifs de <button> des WebView (cadre gris/blanc
   et coins carres) et impose le meme format officiel 2:3, les memes rayons
   et le meme recadrage des cartes sur Web et Android.
   ===================================================================== */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne,
#lg-v2.lgv2 .lgv2d2-ceremonie button.lgv2d2-carte{
  -webkit-appearance:none;appearance:none;
  border:0;padding:0;background:transparent;
  font:inherit;color:inherit;outline:0;
  -webkit-tap-highlight-color:transparent;
}

/* Carte personnelle : ratio exact des cartes officielles (600x900), donc
   aucune bande claire autour de l'image et aucun etirement. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne{
  width:196px;height:294px;margin:-147px 0 0 -98px;
  border-radius:22px;
}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-f,
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos,
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-face{
  border-radius:22px;
}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos::before{
  border-radius:16px;
}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-dos::after{
  border-radius:12px;
}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-face{
  background:transparent;
}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-face img{
  width:100%;height:100%;object-fit:cover;background:transparent;
  border-radius:22px;clip-path:inset(0 round 22px);
}

/* Les petites cartes de la donne reprennent les memes proportions et une
   courbure equivalente a l'echelle : pas de mini-cartes aux coins secs. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte{
  width:60px;height:90px;margin:-45px 0 0 -30px;
}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2e2-f,
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-paquet .lgv2e2-dos,
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2e2-dos{
  border-radius:10px;
}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-carte .lgv2e2-dos::after{
  border-radius:7px;
}

/* Carte d'un elimine : meme logique que la carte d'entree, en reduction. */
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte{
  width:144px;height:216px;margin:-108px 0 0 -72px;
  border-radius:18px;
}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-f,
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-dos,
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-face{
  border-radius:18px;
}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-dos::after{
  border-radius:12px;
}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-face{
  background:transparent;
}
#lg-v2.lgv2 .lgv2d2-ceremonie .lgv2d2-carte .lgv2d2-face img{
  width:100%;height:100%;object-fit:cover;background:transparent;
  border-radius:18px;clip-path:inset(0 round 18px);
}

/* ========================================================================
   7.0.38 — INTEGRITE DE MISE EN PAGE MOBILE
   Aucun texte ne doit se superposer, tomber dans la colonne d'une icone,
   ni etre tronque par une regle compacte historique.
   ======================================================================== */

/* L'en-tete joueur des discours de mairie est une pile verticale de 4
   elements. Une ancienne regle compacte le forcait accidentellement dans
   la grille 3 colonnes reservee aux en-tetes Narrateur. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header.lgv2-speech-player-call{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  grid-auto-flow:row!important;
  grid-auto-rows:auto!important;
  justify-items:center!important;
  align-items:start!important;
  align-content:start!important;
  gap:7px!important;
  width:100%!important;
  min-width:0!important;
  padding:6px 12px 4px!important;
  text-align:center!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header.lgv2-speech-player-call>span{
  grid-column:1!important;
  grid-row:auto!important;
  justify-self:center!important;
  margin:0 0 1px!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header.lgv2-speech-player-call>small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header.lgv2-speech-player-call>h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header.lgv2-speech-player-call>p{
  grid-column:1!important;
  grid-row:auto!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  margin:0!important;
  padding:0!important;
  text-align:center!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
  hyphens:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header.lgv2-speech-player-call>small{
  line-height:1.18!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header.lgv2-speech-player-call>h2{
  font-size:clamp(15.2px,4vw,18px)!important;
  line-height:1.08!important;
  text-wrap:balance;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header.lgv2-speech-player-call>p{
  max-width:350px!important;
  font-size:clamp(10.4px,2.72vw,12px)!important;
  line-height:1.34!important;
  text-wrap:pretty;
}

/* L'en-tete d'ecoute reste la grille 2 colonnes prevue a l'origine. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header.lgv2-speech-listen-head{
  display:grid!important;
  grid-template-columns:42px minmax(0,1fr)!important;
  gap:10px!important;
  align-items:center!important;
  width:100%!important;
  min-width:0!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header.lgv2-speech-listen-head>div{
  min-width:0!important;
}

/* Les titres et surtitres fonctionnels doivent rester complets. Une ligne
   supplementaire vaut mieux qu'un mot masque ou une ellipse ambiguë. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-morning-panel h2,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt h2{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
  hyphens:none!important;
  max-width:100%!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel>header small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel>header small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage>header small,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt>small{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  line-height:1.18!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-night-panel p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage p,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-role-interrupt p{
  word-break:normal!important;
  overflow-wrap:break-word!important;
  hyphens:none!important;
}

/* Cartes du choix du sens : le libelle ne doit jamais etre coupe. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-direction-choice>button>b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel .lgv2-direction-choice>button>b{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  line-height:1.16!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
}

/* Registre du verdict : les prenoms doivent rester lisibles. On prefere
   2/3 colonnes qui se repartissent sur plusieurs lignes plutot que 5 cases
   minuscules avec ellipses. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-result-voters__grid{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:5px!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-result-voter{
  grid-template-columns:25px minmax(0,1fr)!important;
  min-height:35px!important;
  gap:5px!important;
  padding:4px 5px!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-result-voter__avatar,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-result-voter__avatar>img{
  width:25px!important;
  height:25px!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-result-voter>b{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:break-word!important;
  line-height:1.08!important;
  font-size:clamp(7.4px,1.95vw,8.5px)!important;
}

/* Boutons et libelles d'action : centrage reel, aucune largeur implicite
   heritee d'un ancien composant. */
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-live-mic{
  width:min(100%,350px)!important;
  min-width:0!important;
  max-width:350px!important;
  justify-self:center!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-live-mic>span,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass button>span,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-host-actions>button>span{
  min-width:0!important;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  text-align:center!important;
  line-height:1.16!important;
}

/* Sur les telephones etroits, le texte d'aide et le bouton secondaire ne se
   disputent pas la meme ligne. */
@media(max-width:390px){
  #lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass{
    grid-template-columns:1fr!important;
    justify-items:stretch!important;
    gap:7px!important;
  }
  #lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass>small{
    text-align:center!important;
    width:100%!important;
  }
  #lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-pass>button{
    width:100%!important;
    justify-self:stretch!important;
  }
  #lg-v2.lgv2 .lgv2-circle-screen .lgv2-result-voters__grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
/* Le resume du verdict occupe sa vraie largeur disponible. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel.is-vote-verdict>.lgv2-result-intro{
  width:min(100%,340px)!important;
  max-width:340px!important;
  justify-self:center!important;
}
/* 7.0.38 — historique 2e parole : grille responsive sans debordement. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-second-history{
  display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:6px!important;width:100%!important;min-width:0!important;overflow:visible!important;padding:2px 0!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-second-history>span{
  width:100%!important;min-width:0!important;max-width:100%!important;grid-template-columns:28px minmax(0,1fr)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-second-history>span>b,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-second-history>span>em{
  min-width:0!important;max-width:100%!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:break-word!important;
}


/* =====================================================================
   7.0.39 — STRATEGIE DE MEUTE / CONFIRMATION DE CIBLE
   Le brouillon local est distinct du bulletin confirme. Le resultat de la
   meute est un overlay prive, lisible et non ambigu : la cible est choisie,
   mais sa mort n'est jamais annoncee avant les autres pouvoirs de nuit.
   ===================================================================== */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-wolf-own-choice.is-draft{
  border-style:dashed;border-color:rgba(226,190,112,.72);
  background:linear-gradient(180deg,rgba(116,61,31,.18),rgba(92,28,44,.12));
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-wolf-own-choice.is-draft>i{
  background:#73572d;color:#fff6da;border-color:#ead08a;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-wolf-own-choice.is-confirmed{
  border-color:rgba(94,163,111,.62);
  box-shadow:inset 0 0 0 1px rgba(116,196,134,.12);
}
.lgv2-wolf-confirm__change{
  display:grid;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);
  align-items:center;gap:7px;margin:8px 0 2px;
}
.lgv2-wolf-confirm__change>span{
  min-width:0;display:grid;gap:3px;padding:8px 7px;border-radius:11px;
  border:1px solid rgba(226,128,116,.34);background:rgba(84,31,27,.48);text-align:center;
}
.lgv2-wolf-confirm__change small{margin:0!important;color:#d7b47d!important;font:800 6.6px/1 var(--sans)!important;letter-spacing:.11em}
.lgv2-wolf-confirm__change b{min-width:0;color:#fff0dd;font:800 10.4px/1.08 var(--serif);overflow-wrap:anywhere}
.lgv2-wolf-confirm__change>i{font:800 17px/1 var(--serif);font-style:normal;color:#e9c778;text-align:center}

.lgv2-wolf-choice-overlay{
  position:fixed;inset:0;z-index:2147482990;display:grid;place-items:center;
  padding:22px;background:radial-gradient(circle at 50% 44%,rgba(91,18,39,.34),rgba(7,7,11,.82) 62%);
  backdrop-filter:blur(4px);animation:lgv2-wolf-choice-in .3s ease-out both;pointer-events:none;
}
.lgv2-wolf-choice-overlay.is-leaving{animation:lgv2-wolf-choice-out .28s ease-in both}
.lgv2-wolf-choice-card{
  width:min(310px,88vw);display:grid;justify-items:center;gap:8px;padding:20px 18px 17px;
  border:1.5px solid #c9a96b;border-radius:22px;
  background:linear-gradient(160deg,#331019,#160c12 72%);color:#fff0dc;text-align:center;
  box-shadow:0 24px 65px rgba(0,0,0,.62),inset 0 1px 0 rgba(255,234,189,.15);
}
.lgv2-wolf-choice-mark{width:50px;height:50px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 35% 28%,#9b2544,#4b1023 72%);border:1.5px solid #dfbd72;color:#ffe1a0;
  box-shadow:0 0 0 7px rgba(148,36,64,.12)}
.lgv2-wolf-choice-mark svg{width:25px;height:25px;fill:currentColor}
.lgv2-wolf-choice-card>small{font:850 7.6px/1 var(--sans);letter-spacing:.18em;color:#e5c783}
.lgv2-wolf-choice-card>img{width:78px;height:78px;border-radius:50%;object-fit:cover;border:2.5px solid #d8ae62;box-shadow:0 8px 24px rgba(0,0,0,.45)}
.lgv2-wolf-choice-card>h2{margin:0;color:#fff5e5;font:800 20px/1.04 var(--serif)}
.lgv2-wolf-choice-card>p{margin:0;max-width:28ch;color:#dccfc1;font:500 9.3px/1.42 var(--serif)}
@keyframes lgv2-wolf-choice-in{from{opacity:0}.to{opacity:1}}
@keyframes lgv2-wolf-choice-out{to{opacity:0}}
@media(prefers-reduced-motion:reduce){.lgv2-wolf-choice-overlay,.lgv2-wolf-choice-overlay.is-leaving{animation-duration:.01ms}}

/* =====================================================================
   7.0.41 — LA CARTE DU JOUEUR NE PEUT PLUS ETRE VIDE.
   ===================================================================== */

/* La face portait « object-fit: cover » sur un fond presque noir : quand
   l'illustration ne se chargeait pas — cas de role.image, qui partait sur
   le reseau — il ne restait qu'un rectangle translucide laissant voir les
   sieges au travers. Fond parchemin opaque, et l'illustration s'affiche
   ENTIERE plutot que rognee. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-face{
  background:#EFE0CA!important;overflow:hidden;
  border:1px solid #cba562;
  box-shadow:inset 0 0 0 1px rgba(255,225,163,.5),0 22px 54px rgba(0,0,0,.55)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-face img{
  width:100%;height:100%;object-fit:contain!important;background:#EFE0CA;display:block}

/* Le carton de secours : si l'illustration manque malgre tout, le joueur
   voit le nom de son role et son resume sur le meme parchemin. Il ne peut
   plus se retrouver devant une carte vide sans savoir ce qu'il joue. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-face .lgv2e2-secours{
  position:absolute;inset:0;display:none;place-content:center;justify-items:center;
  gap:9px;padding:24px 20px;text-align:center;background:
    radial-gradient(circle at 50% 22%,rgba(201,162,39,.10),transparent 60%),
    linear-gradient(180deg,#F6ECD8,#E6D6BA)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-face.is-sans-image .lgv2e2-secours{display:grid}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-secours small{
  font:800 7.6px/1 var(--sans);letter-spacing:.34em;color:#8C6B24}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-secours b{
  font:700 21px/1.14 var(--serif);color:#4A1220}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-secours i{
  display:block;width:44px;height:1px;background:#C9A227}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-secours p{
  margin:0;font:400 11.4px/1.5 var(--serif);color:#5A4126;max-width:22ch}

/* =====================================================================
   7.0.42 — LA CARTE DU JOUEUR NE PEUT PLUS ETRE VIDE, PAR CONSTRUCTION.

   Les correctifs precedents affichaient un carton de secours SI l'image
   echouait, via onerror. Mais lorsqu'une image se charge sans erreur tout
   en ne s'affichant pas — decodage refuse, memoire contrainte, WebView
   ancienne — aucun evenement ne se declenche, et le joueur reste devant un
   rectangle vide. C'est exactement ce qui se produisait.

   Le carton devient donc un SOCLE permanent, pose SOUS l'illustration.
   L'illustration le recouvre quand elle s'affiche ; sinon il reste visible.
   Aucun evenement n'est requis : le pire cas montre le nom du role et son
   pouvoir. Le joueur sait toujours ce qu'il joue.
   ===================================================================== */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-mienne .lgv2e2-face{
  position:absolute;inset:0;display:block;overflow:hidden;
  background:#EFE0CA!important;border:1px solid #cba562;border-radius:26px;
  box-shadow:inset 0 0 0 1px rgba(255,225,163,.5),0 22px 54px rgba(0,0,0,.55)}

/* Le socle : sous l'image, toujours la. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-face .lgv2e2-socle{
  position:absolute;inset:0;z-index:1;
  display:grid;place-content:center;justify-items:center;gap:10px;
  padding:26px 20px;text-align:center;background:
    radial-gradient(circle at 50% 20%,rgba(201,162,39,.12),transparent 62%),
    linear-gradient(180deg,#F6ECD8,#E6D6BA)}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-socle small{
  font:800 7.6px/1 var(--sans);letter-spacing:.34em;color:#8C6B24}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-socle b{
  font:700 22px/1.14 var(--serif);color:#4A1220}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-socle i{
  display:block;width:46px;height:1px;background:#C9A227}
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-socle p{
  margin:0;font:400 11.6px/1.5 var(--serif);color:#5A4126;max-width:22ch}

/* L'illustration par-dessus : elle recouvre le socle quand elle s'affiche. */
/* L'ILLUSTRATION NE DOIT PAS AVOIR DE FOND.
   C'etait la cause exacte de la carte vide : l'image portait un fond creme
   opaque et occupait toute la carte. Quand elle ne s'affichait pas — fichier
   injoignable, decodage refuse — l'element restait la et peignait malgre
   tout ce rectangle creme, masquant le socle place dessous. Sans fond, une
   image absente est transparente : le socle apparait. */
#lg-v2.lgv2 .lgv2-role-cinematic .lgv2e2-face img{
  position:absolute;inset:0;z-index:2;
  width:100%;height:100%;object-fit:contain!important;
  background:transparent!important;display:block}

/* =====================================================================
   7.0.44 — LE LOGO DU VILLAGE AU CENTRE DU MEDAILLON.

   Le parterre de douze fleurs laisse la place au logo du jeu. Il est pose
   SEUL : aucun sceau, aucun disque, aucun fond derriere lui. Le medaillon
   grave conserve ses orbites, son rinceau et son filet — c'est lui qui
   fait le cadre, le logo n'a pas besoin d'en ajouter un.

   Les regles du parterre restent dans la feuille mais ne sont plus
   emises par le JavaScript : elles deviennent inertes, sans risque
   d'effet de bord ailleurs.
   ===================================================================== */
/* 7.0.46 — LE LOGO EST COUCHE SUR LA PLACE, PLUS FLOTTANT DEVANT.
   Le medaillon n'est pas un cercle vu de face : c'est une ellipse, une
   place vue en plongee. La charte l'exprime par --squash a .529 — la
   hauteur vaut 52,9 % de la largeur. L'angle qui reproduit exactement
   cette compression est acos(.529) = 58,1 degres : ce n'est pas une
   valeur choisie a l'oeil, c'est celle de ton ellipse.
   Le logo descend aussi legerement : une plaque posee au sol et vue en
   plongee se lit mieux un peu basse. */
#lg-v2.lgv2 .lgv2-sq-medaillon{
  perspective:760px;
  /* 7.0.50 — Origine de perspective ramenee au centre. A 32 %, l'inclinaison
     etait vue d'un point haut : le logo se retrouvait 4 px sous le centre du
     medaillon alors que son ancrage etait pourtant a 50 %. */
  perspective-origin:50% 50%}
#lg-v2.lgv2 .lgv2-sq-logo{
  /* 7.0.50 — Recentre exactement. Je l'avais descendu a 54 % en pensant
     qu'une plaque vue en plongee se lit mieux basse ; au centre du cercle
     il est mieux place. */
  position:absolute;left:50%;top:50%;
  /* 7.0.47 — INCLINAISON ADOUCIE. 58,1 degres epousaient exactement
     l'ellipse, mais ecrasaient le titre a 53 % de sa hauteur : il devenait
     une bande serree. A 38 degres il en garde 79 %, le logo reste pose sur
     la place et le titre respire. On accepte donc un ecart assume avec la
     perspective du sol, au profit de la lisibilite. */
  /* 7.0.48 — 38 x 1,05 = 39,9 degres. */
  /* 7.0.50 — Les 4 px de decalage ne venaient ni de l'ancrage ni de la
     perspective : la boite du medaillon est elle-meme decalee de cette
     valeur par rapport a l'ellipse qu'elle dessine. On compense a la
     source plutot que de deplacer l'ancrage, qui resterait faux. */
  transform:translate(-50%,calc(-50% - 4px)) rotateX(39.9deg);
  transform-origin:50% 50%;
  z-index:3;
  /* Le logo est plus large que haut : on le cadre sur la largeur du
     medaillon, en laissant respirer les bords graves. */
  /* 7.0.45 — Taille divisee par deux : le logo occupait plus de la moitie
     du medaillon et ecrasait la gravure autour. */
  width:min(35%,118px);height:auto;
  background:none;border:0;
  pointer-events:none;user-select:none;
  /* Un relief discret pour qu'il se detache de la pierre claire du
     medaillon, sans halo ni pastille derriere lui. */
  /* Luminosite abaissee : il sautait aux yeux au lieu de s'asseoir dans
     la pierre. Le contraste suit d'un cran, sinon l'assombrissement le
     rend seulement terne. */
  /* 7.0.48 — Luminosite encore abaissee d'un cran. */
  filter:brightness(.76) contrast(.91) saturate(.88)
         drop-shadow(0 3px 7px rgba(50,32,10,.44));
  opacity:.85}

/* La nuit, la place s'eteint : le logo s'eclaircit legerement pour rester
   lisible sur la pierre sombre, et son relief passe au noir. */
/* La nuit, la pierre est sombre : on assombrit moins, sinon le logo
   disparait dans le sol. */
#lg-v2.lgv2 .lgv2-circle-screen.is-night-mode .lgv2-sq-logo{
  filter:brightness(.86) contrast(.93)
         drop-shadow(0 3px 9px rgba(0,0,0,.64));
  opacity:.83}

/* Cercles serres : le medaillon rapetisse, le logo suit. */
#lg-v2.lgv2 .lgv2-circle-stage.is-crowded .lgv2-sq-logo{width:min(31%,101px)}
#lg-v2.lgv2 .lgv2-circle-stage.is-very-crowded .lgv2-sq-logo{width:min(29%,90px)}

/* =====================================================================
   7.0.49 — LE CERCLE S'ANIME AUTOUR DU LOGO.

   Trois couches, toutes calees sur l'ellipse de la place (--squash a .529)
   pour qu'elles suivent la meme perspective que l'anneau des joueurs :

     1. UNE LUEUR QUI FAIT LE TOUR. Un arc clair balaie le pourtour en
        14 secondes, comme un rayon qui court sur la pierre polie.
     2. UNE SECONDE, PLUS LENTE ET INVERSE. Elle croise la premiere : deux
        vitesses opposees donnent de la profondeur, une seule aurait l'air
        d'un ventilateur.
     3. SEPT BRAISES posees sur le pourtour, qui respirent en decalage.
        Elles ancrent le mouvement : sans point fixe, un balayage devient
        vite hypnotique et fatigant.

   Tout est en transform et opacity — rien qui force un recalcul de mise
   en page, donc aucun cout sur un telephone modeste.
   ===================================================================== */
#lg-v2.lgv2 .lgv2-sq-ronde{
  position:absolute;left:50%;top:50%;
  width:94%;aspect-ratio:1/1;border-radius:50%;
  transform:translate(-50%,-50%) scaleY(.529);
  background:conic-gradient(from 0deg,
    transparent 0deg 296deg,
    rgba(234,211,166,.10) 310deg,
    rgba(255,244,214,.52) 340deg,
    rgba(234,211,166,.10) 352deg,
    transparent 360deg);
  -webkit-mask:radial-gradient(circle,transparent 0 70%,#000 73% 78%,transparent 81%);
          mask:radial-gradient(circle,transparent 0 70%,#000 73% 78%,transparent 81%);
  pointer-events:none;z-index:2;
  animation:lgv2-sq-ronde 14s linear infinite}
#lg-v2.lgv2 .lgv2-sq-ronde.is-lente{
  width:82%;opacity:.55;
  background:conic-gradient(from 0deg,
    transparent 0deg 310deg,
    rgba(216,162,60,.30) 336deg,
    transparent 360deg);
  animation:lgv2-sq-ronde-inv 23s linear infinite}
@keyframes lgv2-sq-ronde{
  from{transform:translate(-50%,-50%) scaleY(.529) rotate(0deg)}
  to  {transform:translate(-50%,-50%) scaleY(.529) rotate(360deg)}}
@keyframes lgv2-sq-ronde-inv{
  from{transform:translate(-50%,-50%) scaleY(.529) rotate(360deg)}
  to  {transform:translate(-50%,-50%) scaleY(.529) rotate(0deg)}}

/* Les braises : posees sur l'ellipse, elles respirent en decalage. */
#lg-v2.lgv2 .lgv2-sq-braises{
  position:absolute;left:50%;top:50%;
  width:88%;aspect-ratio:1/1;
  transform:translate(-50%,-50%) scaleY(.529);
  pointer-events:none;z-index:2}
#lg-v2.lgv2 .lgv2-sq-braises b{
  position:absolute;left:50%;top:50%;width:3px;height:3px;border-radius:50%;
  background:radial-gradient(circle,#FFF3D2,rgba(216,162,60,0) 70%);
  transform:translate(-50%,-50%) rotate(calc(var(--k) * 51.43deg)) translateY(calc(-44% * 2)) ;
  animation:lgv2-sq-braise 4.6s ease-in-out calc(var(--k) * .38s) infinite}
@keyframes lgv2-sq-braise{
  0%,100%{opacity:.18;filter:blur(.3px)}
  50%    {opacity:.85;filter:blur(0)}}

@media (prefers-reduced-motion:reduce){
  #lg-v2.lgv2 .lgv2-sq-ronde,
  #lg-v2.lgv2 .lgv2-sq-braises b{animation:none}
  #lg-v2.lgv2 .lgv2-sq-ronde{opacity:.3}}

/* Le logo occupe desormais tout l'espace disponible : mesure au banc,
   180 px est la derniere valeur qui ne mord pas sur l'anneau des joueurs
   (il reste 2 px de jeu au-dessus). */
/* 7.0.50 — Taille x0,90 : 180 px devenait envahissant une fois en place. */
/* 7.0.51 — Taille x0,85 : 162 -> 138 px. */
#lg-v2.lgv2 .lgv2-sq-logo{width:min(43%,138px)!important}
#lg-v2.lgv2 .lgv2-circle-stage.is-crowded .lgv2-sq-logo{width:min(37%,118px)!important}
#lg-v2.lgv2 .lgv2-circle-stage.is-very-crowded .lgv2-sq-logo{width:min(33%,105px)!important}


/* 7.0.56 — Modération Narrateur : signalements réellement consultables. */
#lg-v2.lgv2 .lgv2-admin-person.is-report .lgv2-admin-person__avatar.is-report{display:grid;place-items:center;background:rgba(109,24,45,.1);color:#761a34}
#lg-v2.lgv2 .lgv2-admin-person.is-report .lgv2-admin-person__avatar.is-report svg{width:24px;height:24px}
#lg-v2.lgv2 .lgv2-admin-person.is-report .lgv2-admin-person__copy p{margin:5px 0 0;font-size:12px;line-height:1.35;color:var(--lg-ink-soft,#665547)}
#lg-v2.lgv2 .lgv2-room-admin-refresh{margin:10px auto 0;display:block;border:1px solid rgba(92,65,45,.25);border-radius:999px;padding:8px 14px;background:#f6ead3;font-weight:800;letter-spacing:.04em;color:#5c3a2b}
#lg-v2.lgv2 .lgv2-room-admin-refresh:disabled{opacity:.55}
#lg-v2.lgv2 .lgv2-host-settings-page__assist.is-rescue{border-color:rgba(175,119,43,.42);background:linear-gradient(135deg,rgba(255,245,216,.96),rgba(240,219,174,.92))}

/* ==========================================================================
   7.0.58 — CEREMONIE DU DICTATEUR
   Quatre actes plein ecran : controle, reflexion, choix, issue.
   Aucune animation en boucle : chaque acte joue une fois, puis se fige —
   conformement aux standards du projet. Palette strictement identique a
   celle du narrateur (or / ivoire), aucun grenat sombre reintroduit.
   ========================================================================== */
#lg-v2.lgv2 .lgv2dic{position:fixed;inset:0;z-index:59;display:grid;place-items:center;
  padding:24px 18px;overflow:hidden;isolation:isolate;pointer-events:auto}
#lg-v2.lgv2 .lgv2dic-lavis{position:absolute;inset:0;
  background:radial-gradient(120% 90% at 50% 32%,rgba(28,16,10,.86),rgba(12,7,5,.97));
  backdrop-filter:blur(3px);animation:lgv2dic-voile .5s ease-out both}
@keyframes lgv2dic-voile{from{opacity:0}to{opacity:1}}

#lg-v2.lgv2 .lgv2dic-boite{position:relative;z-index:2;width:min(100%,430px);
  display:grid;justify-items:center;gap:14px;text-align:center;
  animation:lgv2dic-entree .62s cubic-bezier(.16,.84,.32,1) both}
@keyframes lgv2dic-entree{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}

#lg-v2.lgv2 .lgv2dic-sur{font:800 8.4px/1 var(--lg-sans,sans-serif);letter-spacing:.36em;
  color:var(--lg-btn-or-texte,#f0d089);text-transform:uppercase}
#lg-v2.lgv2 .lgv2dic-titre{margin:0;font:700 24px/1.18 var(--lg-serif,serif);
  color:var(--lg-btn-creme-fort,#fff8e8);text-wrap:balance}
#lg-v2.lgv2 .lgv2dic-aide{margin:0;max-width:30ch;font:400 12.4px/1.55 var(--lg-serif,serif);
  color:rgba(253,243,221,.82)}

/* Acte 1 — le sceau du controle. */
#lg-v2.lgv2 .lgv2dic-sceau{position:relative;width:96px;height:96px;display:grid;place-items:center}
#lg-v2.lgv2 .lgv2dic-sceau i{position:absolute;inset:0;border-radius:50%;
  border:1px solid var(--lg-btn-filet-or,rgba(236,204,142,.72));
  animation:lgv2dic-onde 1.5s cubic-bezier(.22,.8,.3,1) both}
#lg-v2.lgv2 .lgv2dic-sceau i:nth-child(2){animation-delay:.2s}
#lg-v2.lgv2 .lgv2dic-sceau i:nth-child(3){animation-delay:.4s}
@keyframes lgv2dic-onde{from{transform:scale(.34);opacity:0}
  55%{opacity:.9}to{transform:scale(1);opacity:.34}}

/* Acte 2 — l'aura du Dictateur. */
#lg-v2.lgv2 .lgv2dic-aura{position:relative;width:112px;height:112px;display:grid;place-items:center}
#lg-v2.lgv2 .lgv2dic-aura img{width:78px;height:78px;border-radius:50%;object-fit:cover;
  border:2px solid var(--lg-btn-or-2,#c5935b);position:relative;z-index:2}
#lg-v2.lgv2 .lgv2dic-aura span{position:absolute;inset:0;border-radius:50%;
  border:1px solid rgba(236,204,142,.5);animation:lgv2dic-pulse 2.4s cubic-bezier(.3,.7,.4,1) both}
#lg-v2.lgv2 .lgv2dic-aura span:nth-child(3){animation-delay:.55s}
#lg-v2.lgv2 .lgv2dic-aura span:nth-child(4){animation-delay:1.1s}
@keyframes lgv2dic-pulse{from{transform:scale(.7);opacity:.05}
  50%{opacity:.7}to{transform:scale(1.16);opacity:0}}

/* Acte 3 et 4 — les visages. */
#lg-v2.lgv2 .lgv2dic-cible{display:grid;justify-items:center;gap:7px;
  animation:lgv2dic-entree .5s cubic-bezier(.16,.84,.32,1) both}
#lg-v2.lgv2 .lgv2dic-cible img{width:86px;height:86px;border-radius:50%;object-fit:cover;
  border:2px solid var(--lg-btn-or-1,#efd9a6);box-shadow:0 6px 22px rgba(0,0,0,.5)}
#lg-v2.lgv2 .lgv2dic-cible b{font:700 14px/1.2 var(--lg-serif,serif);color:var(--lg-btn-creme,#fdf3dd)}

#lg-v2.lgv2 .lgv2dic-issue{display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap}
#lg-v2.lgv2 .lgv2dic-cible.is-mort img{border-color:rgba(190,150,150,.55);filter:grayscale(1) brightness(.72)}
#lg-v2.lgv2 .lgv2dic-cible.is-mort b{color:rgba(253,243,221,.6);text-decoration:line-through}
#lg-v2.lgv2 .lgv2dic-cible.is-sacre img{border-color:var(--lg-btn-or-texte,#f0d089);
  box-shadow:0 0 0 4px rgba(240,208,137,.2),0 8px 26px rgba(0,0,0,.55)}
#lg-v2.lgv2 .lgv2dic-cible.is-sauf img{border-color:var(--lg-btn-filet-vert,rgba(146,232,178,.78))}

#lg-v2.lgv2 .lgv2dic-couronne{position:absolute;top:-6px;left:50%;transform:translateX(-50%);
  width:34px;height:34px;color:var(--lg-btn-or-texte,#f0d089);
  animation:lgv2dic-sacre .8s cubic-bezier(.2,1.4,.4,1) .18s both}
#lg-v2.lgv2 .lgv2dic-couronne svg{width:100%;height:100%}
#lg-v2.lgv2 .lgv2dic-issue{position:relative;padding-top:22px}
@keyframes lgv2dic-sacre{from{opacity:0;transform:translateX(-50%) translateY(-14px) scale(.6)}
  to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}

/* Fil des quatre actes. */
#lg-v2.lgv2 .lgv2dic-fil{position:absolute;bottom:26px;left:0;right:0;z-index:2;
  display:flex;gap:7px;justify-content:center}
#lg-v2.lgv2 .lgv2dic-fil s{width:22px;height:2px;border-radius:2px;
  background:rgba(253,243,221,.2);text-decoration:none;transition:background .3s ease}
#lg-v2.lgv2 .lgv2dic-fil s.est-cours{background:var(--lg-btn-or-texte,#f0d089)}
#lg-v2.lgv2 .lgv2dic-fil s.est-fait{background:rgba(240,208,137,.5)}

@media (prefers-reduced-motion:reduce){
  #lg-v2.lgv2 .lgv2dic-lavis,#lg-v2.lgv2 .lgv2dic-boite,#lg-v2.lgv2 .lgv2dic-cible,
  #lg-v2.lgv2 .lgv2dic-couronne,#lg-v2.lgv2 .lgv2dic-sceau i,#lg-v2.lgv2 .lgv2dic-aura span{
    animation-duration:.01ms;animation-iteration-count:1}
}

/* ==========================================================================
   7.0.58 — TEMOINS AUDIO MESURES ET RELANCE D'APPEL
   Quatre temoins independants : micro, voix envoyee, voix recue, qualite.
   Trois etats seulement — ok (vert), ko (rouge), inconnu (neutre). Un doute
   ne prend JAMAIS la couleur d'une confirmation.
   Textes volontairement petits : la place ecran est comptee, et ces temoins
   accompagnent la parole sans la couvrir.
   ========================================================================== */
#lg-v2.lgv2 .lgv2-temoins{list-style:none;margin:8px 0 0;padding:0;
  display:grid;grid-template-columns:repeat(2,1fr);gap:5px}
#lg-v2.lgv2 .lgv2-temoins li{display:grid;grid-template-columns:14px 1fr;
  align-items:center;gap:3px 6px;padding:5px 7px;border-radius:8px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07)}
#lg-v2.lgv2 .lgv2-temoins li b{grid-column:2;font:800 7.4px/1.1 var(--lg-sans,sans-serif);
  letter-spacing:.16em;color:rgba(253,243,221,.9)}
#lg-v2.lgv2 .lgv2-temoins li small{grid-column:2;font:400 8.6px/1.2 var(--lg-sans,sans-serif);
  color:rgba(253,243,221,.6)}
#lg-v2.lgv2 .lgv2-temoin-mark{grid-row:1/3;display:grid;place-items:center;
  width:14px;height:14px;border-radius:50%;font:800 8px/1 sans-serif}
#lg-v2.lgv2 .lgv2-temoin-mark svg{width:9px;height:9px}
#lg-v2.lgv2 .lgv2-temoins li.is-ok{border-color:var(--lg-btn-filet-vert,rgba(146,232,178,.78))}
#lg-v2.lgv2 .lgv2-temoins li.is-ok .lgv2-temoin-mark{background:var(--lg-btn-vert-2,#1b6f3e);color:#eafff2}
#lg-v2.lgv2 .lgv2-temoins li.is-ko{border-color:rgba(220,120,130,.6)}
#lg-v2.lgv2 .lgv2-temoins li.is-ko .lgv2-temoin-mark{background:var(--lg-btn-grenat-2,#75132c);color:#ffe9ee}
#lg-v2.lgv2 .lgv2-temoins li.is-inconnu{opacity:.62}
#lg-v2.lgv2 .lgv2-temoins li.is-inconnu .lgv2-temoin-mark{
  background:rgba(255,255,255,.12);color:rgba(253,243,221,.7)}
#lg-v2.lgv2 .lgv2-temoins .lgv2-hear-bars{grid-column:2;margin-top:2px}

#lg-v2.lgv2 .lgv2-audio-relance{margin-top:8px;width:100%;min-height:36px;
  border-radius:9px;border:1px solid var(--lg-btn-filet-or,rgba(236,204,142,.72));
  background:linear-gradient(180deg,var(--lg-btn-or-1,#efd9a6),var(--lg-btn-or-2,#c5935b));
  color:var(--lg-btn-encre,#3f1523);font:800 9.4px/1 var(--lg-sans,sans-serif);
  letter-spacing:.2em;cursor:pointer}
#lg-v2.lgv2 .lgv2-audio-relance[disabled]{opacity:.55;cursor:default;
  background:linear-gradient(180deg,var(--lg-btn-off-1,#4c343c),var(--lg-btn-off-2,#3b272e));
  color:var(--lg-btn-off-fg,#ddcfbf);border-color:rgba(255,255,255,.12)}
#lg-v2.lgv2 .lgv2-hear-repair-actions{display:grid;gap:6px;margin-top:8px}
#lg-v2.lgv2 .lgv2-hear-repair-actions .lgv2-audio-relance{margin-top:0}
#lg-v2.lgv2 .lgv2-hear-spin.is-done{animation:none;opacity:.85}


/* ========================================================================
   7.0.65 — UN SEUL ETAT « C'EST A MOI » : VERRE TURQUOISE
   Une classe (`is-my-turn`) pilote toutes les plaques d'action du joueur.
   Le degrade 7.0.61 reste intact ; l'effet ne depend d'aucun backdrop-filter.
   ======================================================================== */
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn{
  background:
    linear-gradient(100deg,
      rgba(232,252,249,.90) 0%,
      rgba(183,238,231,.80) 34%,
      rgba(122,211,204,.66) 68%,
      rgba(82,184,178,.58) 100%),
    linear-gradient(180deg,#EDF9F6,#C9ECE7)!important;
  border-color:rgba(196,157,86,.72)!important;
  box-shadow:
    inset 0 0 0 1.5px rgba(255,255,255,.62),
    inset 0 0 0 3px rgba(201,169,107,.55),
    0 18px 40px rgba(12,58,56,.30)!important;
  color:#12403E!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn::after{border-color:rgba(255,246,224,.46)!important}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>header h2,
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>h2{color:#0C3B39!important}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>header small,
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>small{
  color:#2A6E69!important;
  background:rgba(255,255,255,.62);
  border-radius:5px;
  padding:2px 4px;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>header p,
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>p{color:#1B5450!important}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>header>span:first-child,
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>span:first-child{
  background:linear-gradient(180deg,#0E5F5B,#0A4744)!important;
  border-color:rgba(255,246,224,.58)!important;
  box-shadow:0 6px 14px rgba(8,48,46,.32)!important;
  color:#FFF8E7!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>header>span:first-child svg,
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>header>span:first-child svg *,
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>span:first-child svg,
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn>span:first-child svg *{color:#FFF8E7!important;fill:currentColor!important}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn button.lgv2-live-mic,
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn button.lgv2-day-primary,
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn button.lgv2-night-primary,
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-mayor-stage, .lgv2-day-panel, .lgv2-night-panel, .lgv2-role-interrupt).is-my-turn button[data-action="role-interrupt-confirm"]{
  box-shadow:0 0 0 2px rgba(255,255,255,.94),0 10px 22px rgba(9,58,38,.34),inset 0 1px 0 rgba(255,255,255,.24)!important;
}

/* --- 4. Les pastilles d'etat sur les avatars des candidats ---------------
   CAUSE : la pastille est un <em>, et la regle 6.30
   `.lgv2-mayor-stage em{color:var(--bp-encre-douce)!important}` la repeignait
   a l'encre sombre. Le SVG etant en `fill:currentColor`, le micro et la coche
   sortaient sombres sur grenat et sur vert. On rend la main aux pastilles. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-candidate__avatar>em{
  color:#FFFFFF!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-candidate__avatar>em svg,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-candidate__avatar>em svg *{
  color:#FFFFFF!important; fill:currentColor!important; opacity:1!important;
}
/* Validation : vert FONCE, coche blanche. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-stage .lgv2-mayor-candidate__avatar>em.is-done{
  background:linear-gradient(180deg,#1C7A46,#0F5730)!important;
  border-color:#FFF6E6!important;
  box-shadow:0 3px 8px rgba(10,58,34,.30)!important;
}
/* Le voile « a deja parle » portait sur TOUTE la carte : il delavait aussi la
   pastille, qui doit rester nette. On deplace le voile sur le portrait et le
   nom, seuls porteurs de l'information « c'est passe ». */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-candidate.has-spoken:not(.is-speaking){
  opacity:1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-candidate.has-spoken:not(.is-speaking) .lgv2-mayor-candidate__avatar img,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-candidate.has-spoken:not(.is-speaking)>b{
  opacity:.72;
}


/* ========================================================================
   7.0.69 — MISSION J · PLAQUES DE PAROLE STABLES + MISSION L · COMPTEUR
   ======================================================================== */
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-day-panel.is-speech,.lgv2-mayor-stage.lgv2-speech-stage) .is-slot-hidden{
  visibility:hidden!important;pointer-events:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-day-panel.is-speech,.lgv2-mayor-stage.lgv2-speech-stage) .lgv2-speech-stable-head{
  align-items:start!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-day-panel.is-speech,.lgv2-mayor-stage.lgv2-speech-stage) .lgv2-speech-stable-head>div{
  min-width:0!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-day-panel.is-speech,.lgv2-mayor-stage.lgv2-speech-stage) .lgv2-speech-stable-head h2{
  min-height:2.30em!important;max-height:2.30em!important;display:flex!important;align-items:center!important;overflow:hidden!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-day-panel.is-speech,.lgv2-mayor-stage.lgv2-speech-stage) .lgv2-speech-stable-head p{
  /* 7.6.2 — Ne plus rogner la consigne : « Vous pouvez la passer
     immediatement » etait coupee en deux. */
  min-height:2.30em!important;max-height:none!important;overflow:visible!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-day-panel.is-speech,.lgv2-mayor-stage.lgv2-speech-stage) .lgv2-live-pill{
  visibility:visible;min-width:54px!important;justify-self:end!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-speaker-wrap{
  position:relative!important;height:50px!important;min-height:50px!important;overflow:hidden!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-speaker-wrap>.lgv2-day-speaker{
  position:absolute!important;inset:0!important;height:50px!important;min-height:50px!important;box-sizing:border-box!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker.is-empty{opacity:.54!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker.is-empty .lgv2-day-speaker-avatar{
  background:radial-gradient(circle at 35% 30%,#F6E6BE,#C9A96B)!important;border:1px solid rgba(111,78,34,.30)!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker.is-empty .lgv2-day-speaker-avatar>img{opacity:0!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker>strong{
  width:46px!important;min-width:46px!important;font-variant-numeric:tabular-nums!important;font-feature-settings:"tnum" 1!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speaker-crown.is-slot-hidden{visibility:hidden!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-action-zone{
  display:grid!important;grid-template-columns:minmax(0,1fr)!important;grid-template-rows:minmax(58px,auto)!important;align-items:center!important;min-height:58px!important;position:relative!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-action-zone>*{grid-area:1/1!important;align-self:center!important}
/* 7.6.2 — LA PAROLE NE PEUT PLUS ETRE COUPEE. Elle etait bornee a 42px avec
   overflow:hidden : deux lignes, et la phrase s'arretait en plein milieu. Or
   ce texte porte les indices du jeu — un mot perdu peut couter une partie.
   Le plancher de 42px est conserve pour que le panneau ne saute pas, le
   plafond devient une hauteur d'ecran, et le texte defile s'il est long. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-variable-row{
  min-height:42px!important;max-height:34dvh!important;overflow:auto!important;
}
/* La zone d'actions ne reserve plus 58px de vide quand aucun bouton ne
   concerne le joueur — c'est le cas a chaque tour d'un robot. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-action-zone.is-slot-hidden{
  display:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-feedback-slot.is-slot-hidden{display:none!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-unlock.is-slot-hidden{display:none!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-speaker-ghost{
  position:absolute!important;inset:0!important;z-index:3!important;pointer-events:none!important;opacity:1!important;transition:opacity 90ms linear!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-speaker-ghost.is-crossfade-out{opacity:0!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker.is-crossfade-in{animation:lgv2-speech-crossfade-in 180ms ease both!important}
@keyframes lgv2-speech-crossfade-in{from{opacity:0}to{opacity:1}}

#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-speech-actions{
  display:grid!important;grid-template-columns:minmax(0,1fr)!important;grid-template-rows:54px 58px!important;gap:6px!important;min-height:118px!important;align-items:center!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-speech-actions>.lgv2-live-mic,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-speech-actions>.lgv2-heard-btn{grid-row:1!important;grid-column:1!important;align-self:center!important;justify-self:center!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-speech-actions>.lgv2-day-pass,
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-mayor-speech-actions>.lgv2-audio-unlock{grid-row:2!important;grid-column:1!important;align-self:center!important}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-live-mic{
  flex-wrap:nowrap!important;white-space:nowrap!important;
}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-live-mic>span{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-live-mic__clock{
  display:inline-flex!important;align-items:center!important;justify-content:center!important;min-width:3ch!important;font-style:normal!important;
  font-family:var(--serif)!important;font-size:clamp(10.88px,2.85vw,12.8px)!important;font-weight:800!important;line-height:1.15!important;
  font-variant-numeric:tabular-nums!important;font-feature-settings:"tnum" 1!important;color:#FFF0D1!important;white-space:nowrap!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-live-mic__clock::before{content:"·";margin-right:6px;color:currentColor!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-live-mic__clock.is-urgent{color:#F1CF82!important}
#lg-v2.lgv2 .lgv2-circle-screen button.lgv2-live-mic.is-countdown-urgent>i{animation:lgv2-live-dot 1s ease-in-out infinite alternate!important}
@media(prefers-reduced-motion:reduce){
  #lg-v2.lgv2 .lgv2-circle-screen .lgv2-speech-speaker-ghost{transition:none!important}
  #lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-speaker.is-crossfade-in{animation:none!important}
  #lg-v2.lgv2 .lgv2-circle-screen button.lgv2-live-mic.is-countdown-urgent>i{animation:none!important}
}
/* 7.0.69 J — les zones secondaires restent dans la grille même lorsqu'elles
   sont vides : le panneau garde exactement la même hauteur, donc son ancrage
   vertical ne se recalcule pas au passage A → B → bot. */
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-day-panel.is-speech,.lgv2-mayor-stage.lgv2-speech-stage) .lgv2-speech-feedback-slot{
  display:block!important;visibility:visible;min-height:72px!important;height:72px!important;max-height:72px!important;overflow:auto!important;box-sizing:border-box!important;
}
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-day-panel.is-speech,.lgv2-mayor-stage.lgv2-speech-stage) .lgv2-speech-feedback-slot.is-slot-hidden{
  display:block!important;visibility:hidden!important;pointer-events:none!important;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel.is-speech>.lgv2-speech-unlock{
  min-height:42px!important;height:42px!important;visibility:visible;
}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel.is-speech>.lgv2-speech-unlock.is-slot-hidden{
  display:block!important;visibility:hidden!important;pointer-events:none!important;
}
/* Le verre turquoise de Mission A ajoutait 2px de padding au sur-titre
   uniquement quand c'était mon tour. Sur une plaque stable, on réserve ces
   2px dans TOUS les états pour qu'aucune ligne ne descende au passage. */
#lg-v2.lgv2 .lgv2-circle-screen :is(.lgv2-day-panel.is-speech,.lgv2-mayor-stage.lgv2-speech-stage) .lgv2-speech-stable-head small{
  padding:2px 4px!important;border-radius:5px!important;background:transparent;
}
/* La plaque de parole ne rejoue plus son animation d'arrivée au simple
   basculement de classes is-live/is-my-turn. Elle ne l'exécute qu'à sa vraie
   apparition dans la phase. */
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel.is-speech{animation:none!important}
#lg-v2.lgv2 .lgv2-circle-screen .lgv2-day-panel.is-speech.is-arriving{animation:lgv2-day-panel-in .38s cubic-bezier(.2,.75,.2,1) both!important}

@layer enhancements {
/* 7.2.0 — LES VEILLÉES V2 · DESIGN. Deux familles d'état — publique = le
   turquoise de « c'est à moi », privée = ambre chaud — et l'or redevient le
   métal des cadres. Une seule anatomie ; data-type choisit la couleur. Le
   mouvement est discret : fondus, jauges, compte à rebours, une respiration
   lente. transform/opacity seulement ; tout s'arrête sous reduced-motion. */
:root{--vl-pub-1:#6BD6C8;--vl-pub-2:#2FA69A;--vl-pub-deep:#1C7F76;--vl-pub-ink:#0C3B39;--vl-pub-soft:rgba(47,166,154,.14);--vl-pub-glass:linear-gradient(100deg,rgba(232,252,249,.94) 0%,rgba(122,211,204,.62) 100%);
  --vl-priv-1:#F1C27A;--vl-priv-2:#E58F23;--vl-priv-deep:#C97514;--vl-priv-ink:#4A2A05;--vl-priv-soft:rgba(229,143,35,.16);--vl-priv-glass:linear-gradient(100deg,rgba(255,243,224,.96) 0%,rgba(240,190,120,.62) 100%);
  /* 7.2.3 — L'ambre des BOUTONS PLEINS est plus sombre que l'ambre des
     bordures, jauges et anneaux : c'est ce qui permet au texte d'y passer en
     creme avec un contraste mesure de 4,56:1 (creme #FFF7EA sur #A26313, le
     haut du degrade, donc le pire cas). Meme teinte (33 degres) et meme
     saturation (79%) que l'ambre d'origine : seule la clarte descend de 52%
     a 36%. L'identite ambre de la section n'est touchee nulle part ailleurs. */
  --vl-priv-btn-1:#A26313;--vl-priv-btn-2:#895410;
  --vl-ok:#1E7A45;--vl-slate:#4B5160;--vl-muted:#9A938A;--vl-ivory:#FFFBF2;--vl-ink:#3d2d27;--vl-or:#c9a96b;--vl-or-soft:rgba(201,169,107,.42);
  --vl-card-yellow:#D9A21B;--vl-card-orange:#C9741B;--vl-card-edge:#5A3A00}
.lgv2-veillees-screen,[data-type="public"]{--vl-1:var(--vl-pub-1);--vl-2:var(--vl-pub-2);--vl-deep:var(--vl-pub-deep);--vl-tink:var(--vl-pub-ink);--vl-soft:var(--vl-pub-soft);--vl-glass:var(--vl-pub-glass);--vl-btn-1:var(--vl-pub-2);--vl-btn-2:var(--vl-pub-deep);--vl-btn-text:#F4FFFD}
[data-type="private"]{--vl-1:var(--vl-priv-1);--vl-2:var(--vl-priv-2);--vl-deep:var(--vl-priv-deep);--vl-tink:var(--vl-priv-ink);--vl-soft:var(--vl-priv-soft);--vl-glass:var(--vl-priv-glass);--vl-btn-1:var(--vl-priv-btn-1);--vl-btn-2:var(--vl-priv-btn-2);--vl-btn-text:#FFF7EA}

.lgv2-veillees-screen,.lgv2-home.is-premium-home{padding-bottom:calc(60px + env(safe-area-inset-bottom,0px))}

/* ---- barre du bas ---------------------------------------------------- */
.lgv2-veillee-nav{position:absolute;z-index:45;left:0;right:0;bottom:0;height:calc(60px + env(safe-area-inset-bottom,0px));padding:4px 5px env(safe-area-inset-bottom,0px);display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:linear-gradient(180deg,#fbf3e3,#f3e5cf);border-top:1px solid rgba(201,169,107,.42);box-shadow:0 -6px 18px rgba(75,46,25,.08)}
.lgv2-veillee-nav>button{position:relative;min-width:0;border:0;border-radius:12px;background:transparent;display:grid;grid-template-rows:19px 12px 11px;place-items:center;align-content:center;gap:1px;padding:3px 4px;color:#7a6042;font:800 7.4px/1 var(--serif);letter-spacing:.04em;cursor:pointer;transition:background .18s ease,color .18s ease}
.lgv2-veillee-nav>button.is-active{background:linear-gradient(180deg,#f4e6bd,#ead5a3);color:#4a331e;box-shadow:inset 0 0 0 1px rgba(177,132,63,.30)}
.lgv2-veillee-nav svg{width:18px;height:18px;fill:#b3894d}.lgv2-veillee-nav>button.is-active svg{fill:#8c682d}
.lgv2-veillee-nav__badge{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8c6b24;font:700 6.2px/1 var(--sans);letter-spacing:0}
.lgv2-veillee-nav__badge.is-live{padding:1px 5px;border-radius:999px;background:var(--vl-pub-deep);color:#F4FFFD;font-weight:800}
.lgv2-veillee-nav__badge.is-empty{color:#8c7a5c}
.lgv2-veillee-nav__dot{position:absolute;top:5px;right:7px;width:6px;height:6px;border-radius:50%;background:var(--vl-pub-2);box-shadow:0 0 0 2px rgba(47,166,154,.22);animation:vl-breathe 2.4s ease-in-out infinite}

/* ---- écran, en-têtes ------------------------------------------------- */
/* 7.2.3 — Cet ecran etait une grille a trois rangees : en-tete, ligne des
   boutons, contenu defilant en minmax(0,1fr). Le bandeau « Hors ligne »
   ajoute un quatrieme enfant : la rangee souple retombait alors sur la
   LIGNE DES BOUTONS, qui prenait toute la hauteur libre — d'ou les deux
   boutons geants. En colonne flex, la souplesse appartient nommement au
   contenu defilant : le nombre de bandeaux n'a plus aucune influence. */
.lgv2-veillees-screen{display:flex;flex-direction:column;background:linear-gradient(180deg,#fbf2e4,#f7ead8);color:var(--vl-ink);overflow:hidden}
.lgv2-veillees-head,.lgv2-veillee-detail-head,.lgv2-veillee-offline,.lgv2-veillee-warning,.lgv2-veillee-code-row{flex:0 0 auto}
.lgv2-veillees-head,.lgv2-veillee-detail-head{min-height:78px;padding:12px 13px 9px;display:grid;grid-template-columns:43px minmax(0,1fr) auto;gap:9px;align-items:center;border-bottom:1px solid rgba(201,169,107,.32);background:linear-gradient(180deg,rgba(255,250,240,.9),rgba(255,250,240,0))}
.lgv2-veillees-head>span{width:43px;height:43px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--vl-or);background:radial-gradient(circle at 34% 30%,#fff9e8,#ecd4a1);color:#8c6b24;box-shadow:0 5px 12px rgba(75,46,25,.12)}
.lgv2-veillees-head>span svg{width:22px;height:22px}.lgv2-veillees-head>div,.lgv2-veillee-detail-head>div{min-width:0;display:grid;gap:2px}
.lgv2-veillees-head small,.lgv2-veillee-detail-head small{font:800 7px/1 var(--serif);letter-spacing:.09em;color:#8c6b24}.lgv2-veillees-head h1,.lgv2-veillee-detail-head h1{font:800 16px/1.05 var(--serif);color:#3d2d27;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lgv2-veillees-head p,.lgv2-veillee-detail-head p{font:500 7.5px/1.3 var(--sans);color:#6c5641}
.lgv2-veillees-head>button{min-height:34px;padding:0 10px;border:1px solid rgba(28,127,118,.55);border-radius:11px;background:linear-gradient(180deg,var(--vl-pub-2),var(--vl-pub-deep));color:#F4FFFD;display:flex;align-items:center;gap:5px;font:800 7.6px/1 var(--serif);letter-spacing:.06em;box-shadow:0 6px 14px rgba(28,127,118,.24);cursor:pointer;transition:transform .12s ease}
.lgv2-veillees-head>button svg{width:13px;height:13px;fill:currentColor}.lgv2-veillees-head>button:active{transform:scale(.985)}
.lgv2-veillee-detail-head{grid-template-columns:35px minmax(0,1fr) auto}.lgv2-veillee-detail-head>button{width:35px;height:35px;border:1px solid rgba(201,169,107,.45);border-radius:50%;display:grid;place-items:center;background:#fffaf0;color:#6c5641;cursor:pointer}.lgv2-veillee-detail-head>button svg{width:14px;height:14px;fill:currentColor}

/* ---- badge de type ---------------------------------------------------- */
.lgv2-veillee-badge{display:inline-flex;align-items:center;gap:3px;padding:3px 7px;border-radius:999px;background:var(--vl-btn-2);color:var(--vl-btn-text);font:800 6.2px/1 var(--serif);letter-spacing:.09em;white-space:nowrap;box-shadow:0 2px 6px rgba(0,0,0,.14)}
.lgv2-veillee-badge svg{width:8px;height:8px;fill:currentColor}

/* ---- barres d'information -------------------------------------------- */
.lgv2-veillee-offline,.lgv2-veillee-warning{margin:7px 10px 0;padding:7px 9px;border:1px solid rgba(174,123,54,.42);border-radius:10px;background:#f5e4b9;color:#5a4126;font:700 7.5px/1.35 var(--sans)}
.lgv2-veillee-code-row{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:8px 10px 0}.lgv2-veillee-code-row button{min-height:30px;border:1px solid rgba(201,169,107,.45);border-radius:10px;background:#fffaf0;color:#5a4126;font:800 7px/1 var(--serif);letter-spacing:.05em;cursor:pointer;transition:transform .12s ease}.lgv2-veillee-code-row button:active{transform:scale(.985)}
.lgv2-veillee-agenda,.lgv2-mes-veillees,.lgv2-veillee-detail,.lgv2-veillee-create{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:10px 10px 18px;scrollbar-width:thin}
.lgv2-veillee-group{display:grid;gap:7px;margin-bottom:13px}
.lgv2-veillee-group>h2{display:flex;align-items:center;gap:8px;font:800 9px/1 var(--serif);letter-spacing:.07em;text-transform:uppercase;color:#765726}.lgv2-veillee-group>h2>i{flex:1;height:1px;background:linear-gradient(90deg,rgba(201,169,107,.55),rgba(201,169,107,0))}
.lgv2-veillee-list{display:grid;gap:7px}

/* ---- la carte --------------------------------------------------------- */
.lgv2-veillee-card{position:relative;min-height:108px;border:1px solid var(--vl-or-soft);border-left:4px solid var(--vl-2);border-radius:16px;background:linear-gradient(180deg,#fffaf0,#f7ecd9);box-shadow:0 7px 18px rgba(75,46,25,.09);overflow:hidden;transition:box-shadow .18s ease,transform .12s ease}
.lgv2-veillee-card:active{transform:scale(.985)}
.lgv2-veillee-card.is-open{box-shadow:0 7px 18px rgba(75,46,25,.09),0 0 0 4px var(--vl-soft)}
.lgv2-veillee-card.is-cancelled,.lgv2-veillee-card.is-past{border-left-color:var(--vl-muted);filter:saturate(.55)}.lgv2-veillee-card.is-cancelled .lgv2-veillee-card__when,.lgv2-veillee-card.is-past .lgv2-veillee-card__when{background:#efe9df;color:#6c5641}
.lgv2-veillee-card.is-cancelled h3{text-decoration:line-through;text-decoration-color:rgba(61,45,39,.5)}
.lgv2-veillee-card.is-full:not(.is-open){border-left-color:var(--vl-slate)}
.lgv2-veillee-card>.lgv2-veillee-badge{position:absolute;top:8px;right:9px;z-index:1}
.lgv2-veillee-card__open{width:100%;min-height:64px;border:0;background:transparent;display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:8px;padding:9px 9px 6px;text-align:left;color:inherit;cursor:pointer}
.lgv2-veillee-card__open time{display:grid;gap:1px}.lgv2-veillee-card__open time b{font:800 19px/1 var(--serif);color:var(--vl-tink);letter-spacing:-.01em;font-variant-numeric:tabular-nums}.lgv2-veillee-card__open time small{font:700 6.6px/1 var(--sans);color:#7a6042;text-transform:capitalize}
.lgv2-veillee-card__copy{min-width:0;display:grid;gap:3px;padding-top:12px}.lgv2-veillee-card__copy h3{font:800 10.5px/1.15 var(--serif);color:#3d2d27;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lgv2-veillee-pills{display:flex;flex-wrap:wrap;gap:3px}.lgv2-veillee-pills i{padding:2px 6px;border:1px solid rgba(201,169,107,.42);border-radius:999px;background:#fff9ec;color:#7a5a22;font:700 6.2px/1 var(--sans);letter-spacing:.02em;font-style:normal}
.lgv2-veillee-card__when{align-self:end;justify-self:end;margin-bottom:2px;padding:3px 7px;border-radius:999px;background:var(--vl-soft);color:var(--vl-deep);font:800 6.6px/1 var(--sans);white-space:nowrap;font-variant-numeric:tabular-nums}
.lgv2-veillee-card__when.is-soon,.lgv2-veillee-card.is-open .lgv2-veillee-card__when{background:var(--vl-btn-2);color:var(--vl-btn-text)}
.lgv2-veillee-card.is-open .lgv2-veillee-card__when{animation:vl-breathe 2.4s ease-in-out infinite}
.lgv2-veillee-card__meta{min-height:44px;padding:5px 8px 8px;border-top:1px solid rgba(201,169,107,.24);display:grid;grid-template-columns:auto minmax(78px,1fr) auto;align-items:center;gap:8px}
.lgv2-veillee-card__faces{display:flex;align-items:center}.lgv2-veillee-card__faces em{margin-left:4px;padding:2px 5px;border-radius:999px;background:#efe3d3;color:#6c5641;font:800 6.4px/1 var(--sans);font-style:normal}.lgv2-veillee-card__faces em.is-none{background:transparent;color:#9a8b78;font-weight:600}
.lgv2-veillee-avatar{position:relative;width:24px;height:24px;border-radius:50%;background:#e9dfce;flex:none}.lgv2-veillee-avatar+.lgv2-veillee-avatar{margin-left:-7px}
.lgv2-veillee-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;box-shadow:0 0 0 2px #fffaf0}
.lgv2-veillee-avatar i{position:absolute;inset:-1px;border-radius:50%;border:2px solid var(--vl-or);pointer-events:none}
.lgv2-veillee-avatar.is-confirmed i,.lgv2-veillee-avatar.is-present i{border-color:var(--vl-ok)}.lgv2-veillee-avatar.is-present i{border-width:3px;border-color:var(--vl-pub-deep)}
.lgv2-veillee-avatar.is-waitlist i{border-style:dashed;border-color:var(--vl-slate)}.lgv2-veillee-avatar.is-waitlist img{filter:grayscale(.6)}
/* 7.6.0 — cartons d'absence : l'anneau existant porte seul le signal. */
.lgv2-veillee-avatar.is-carded-1 i{border-color:var(--vl-card-yellow);box-shadow:0 0 0 1px var(--vl-card-edge)}
.lgv2-veillee-avatar.is-carded-2 i{border-width:3px;border-color:var(--vl-card-orange);box-shadow:0 0 0 1px var(--vl-ivory),0 0 0 3px var(--vl-card-orange),0 0 0 4px var(--vl-card-edge)}
.lgv2-veillee-avatar.is-carded-3 i{border-width:3px;border-style:dashed;border-color:var(--vl-card-orange);box-shadow:0 0 0 1px var(--vl-ivory),0 0 0 3px var(--vl-card-orange),0 0 0 4px var(--vl-card-edge)}
.lgv2-veillee-capacity{min-width:0;display:grid;gap:3px}.lgv2-veillee-capacity>span{height:6px;border-radius:999px;background:#e9dfce;overflow:hidden}
.lgv2-veillee-capacity>span i{display:block;height:100%;width:var(--fill,0%);border-radius:999px;background:linear-gradient(90deg,var(--vl-1),var(--vl-2));transform-origin:left center;animation:vl-gauge .6s cubic-bezier(.2,.75,.2,1) both}
.lgv2-veillee-capacity.is-full>span i{background:linear-gradient(90deg,#6b7280,var(--vl-slate))}
.lgv2-veillee-capacity>b{font:800 6.6px/1 var(--sans);color:#6c5641;font-variant-numeric:tabular-nums}.lgv2-veillee-capacity.is-full>b{color:var(--vl-slate)}
.lgv2-veillee-rsvp{min-height:30px;max-width:104px;padding:0 10px;border:1px solid var(--vl-btn-2);border-radius:10px;background:linear-gradient(180deg,var(--vl-btn-1),var(--vl-btn-2));color:var(--vl-btn-text);font:800 6.8px/1 var(--serif);letter-spacing:.04em;white-space:nowrap;cursor:pointer;box-shadow:0 5px 12px -4px var(--vl-deep);transition:transform .12s ease}
.lgv2-veillee-rsvp:active{transform:scale(.985)}
.lgv2-veillee-rsvp.is-registered{background:#fffaf0;color:var(--vl-deep);box-shadow:none}
.lgv2-veillee-rsvp.is-open{animation:vl-breathe 2.4s ease-in-out infinite}
.lgv2-veillee-rsvp.is-waitlist{border-color:var(--vl-slate);background:linear-gradient(180deg,#5b6273,var(--vl-slate));color:#F4E9D6;box-shadow:none}
.lgv2-veillee-rsvp.is-muted{border-color:rgba(154,147,138,.6);background:#efe9df;color:#6c5641;box-shadow:none;cursor:default}
.lgv2-veillee-card.is-preview{pointer-events:none}
.lgv2-veillee-card.is-enter{animation:vl-card-in .18s ease-out both;animation-delay:calc(var(--i,0)*40ms)}
.lgv2-veillee-card.is-leave{animation:vl-card-out .15s ease-in both;pointer-events:none}
.lgv2-veillee-card.is-swap{animation:vl-fade-in .15s ease-out both}

/* ---- vide, squelette --------------------------------------------------- */
.lgv2-veillee-empty{min-height:250px;display:grid;place-items:center;place-content:center;gap:8px;text-align:center;color:#715c45;padding:14px}.lgv2-veillee-empty>span{width:52px;height:52px;border:1px solid var(--vl-or);border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 34% 30%,#fff9e8,#ecd4a1);color:#8c6b24}.lgv2-veillee-empty>span svg{width:24px;height:24px}.lgv2-veillee-empty h2{font:800 12px/1.1 var(--serif);color:#3d2d27}.lgv2-veillee-empty p{font:500 8px/1.4 var(--sans)}
.lgv2-veillee-none{padding:8px 4px;color:#8a7a66;font:600 7.5px/1.4 var(--sans)}
.lgv2-veillee-skeleton{height:104px;border-radius:16px;background:linear-gradient(100deg,#efe3d3 22%,#fbf5ea 35%,#efe3d3 48%);background-size:240% 100%;animation:lgv2-veillee-skeleton 1.2s linear infinite;margin-bottom:7px}.lgv2-veillee-skeleton.is-hero{height:118px}
@keyframes lgv2-veillee-skeleton{to{background-position:-120% 0}}

/* ---- l'intérieur : héros, anneau, frise -------------------------------- */
.lgv2-veillee-detail{display:grid;align-content:start;gap:9px}
.lgv2-veillee-hero{position:relative;padding:12px 12px 11px;border:2px solid var(--vl-or-soft);border-radius:18px;background:var(--vl-glass);box-shadow:inset 0 0 0 1px rgba(255,255,255,.55),0 10px 26px rgba(61,35,20,.12);display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;color:var(--vl-tink)}
.lgv2-veillee-hero>time{display:grid;gap:2px}.lgv2-veillee-hero>time b{font:800 30px/1 var(--serif);letter-spacing:-.02em;font-variant-numeric:tabular-nums}.lgv2-veillee-hero>time span{font:800 8.4px/1.2 var(--serif);text-transform:capitalize}.lgv2-veillee-hero>time small{font:600 6.6px/1.3 var(--sans);opacity:.8}
.lgv2-veillee-ring{position:relative;width:74px;height:74px;display:grid;place-items:center;gap:1px;text-align:center}
.lgv2-veillee-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.lgv2-veillee-ring__track{fill:none;stroke:rgba(255,251,242,.75);stroke-width:4}
.lgv2-veillee-ring__bar{fill:none;stroke:var(--vl-2);stroke-width:4;stroke-linecap:round;transition:stroke-dashoffset .6s ease-out}
.lgv2-veillee-ring.is-soon .lgv2-veillee-ring__bar{stroke:var(--vl-deep)}
/* 7.2.4 — LE TEXTE DE L'ANNEAU, CALCULE SUR SA TAILLE REELLE.
   Correction de 7.2.3 : la geometrie etait juste, l'hypothese de taille
   fausse. La WebView Android impose une police MINIMALE de 8px (verifie :
   l'application n'appelle jamais setMinimumFontSize, donc la valeur par
   defaut d'Android s'applique). Une legende ecrite en 5,2px est donc rendue
   en 8px : elle mesurait ~40px, passait sur deux lignes, et le max-height la
   coupait en plein milieu. Desormais : DEUX LIGNES, un chiffre et UN MOT.
   Geometrie : anneau 74px, viewBox 56 donc echelle 1,321 ; rayon 24 et trait
   de 4 donnent un rayon interieur utile de 29,07px. Les deux lignes tenant
   au centre (hauteur totale 20,5px), la corde disponible y depasse 54px :
   46px pour le chiffre et 44px pour le mot restent largement dedans, meme
   remontes a 8px. nowrap + ellipsis servent de garde-fou definitif : plus
   rien ne peut sortir du cercle ni etre coupe en deux. */
.lgv2-veillee-ring b{position:relative;max-width:46px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:800 11.5px/1.05 var(--serif);font-variant-numeric:tabular-nums}
.lgv2-veillee-ring small{position:relative;display:block;max-width:44px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:800 6.4px/1.1 var(--sans);letter-spacing:.06em;text-transform:uppercase;opacity:.72}
.lgv2-veillee-frise{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:0;padding:8px 6px 6px;list-style:none;border:1px solid var(--vl-or-soft);border-radius:14px;background:#fffaf0}
.lgv2-veillee-frise li{position:relative;display:grid;justify-items:center;gap:3px;text-align:center}
.lgv2-veillee-frise li::before{content:"";position:absolute;top:6px;left:50%;right:-50%;height:2px;background:rgba(201,169,107,.35)}.lgv2-veillee-frise li:last-child::before{display:none}
.lgv2-veillee-frise li.is-done::before{background:var(--vl-or)}
.lgv2-veillee-frise li>i{position:relative;z-index:1;width:14px;height:14px;border-radius:50%;border:2px solid rgba(201,169,107,.5);background:#fffaf0}
.lgv2-veillee-frise li.is-done>i{border-color:var(--vl-or);background:var(--vl-or)}
.lgv2-veillee-frise li.is-current>i{border-color:var(--vl-deep);background:var(--vl-2);box-shadow:0 0 0 4px var(--vl-soft);animation:vl-breathe 2.4s ease-in-out infinite}
.lgv2-veillee-frise li b{font:800 6.6px/1.1 var(--serif);color:#3d2d27}.lgv2-veillee-frise li small{font:600 5.8px/1.1 var(--sans);color:#8a7a66}.lgv2-veillee-frise li.is-current b{color:var(--vl-deep)}
.lgv2-veillee-frise.is-cancelled li>i{border-color:var(--vl-muted);background:#fffaf0}.lgv2-veillee-frise.is-cancelled li::before{background:rgba(154,147,138,.35)}

/* ---- bouton principal unique ------------------------------------------ */
.lgv2-veillee-cta{display:grid;gap:5px;justify-items:center}.lgv2-veillee-cta small{font:600 7px/1.35 var(--sans);color:#6c5641;text-align:center}
.lgv2-veillee-primary{width:100%;min-height:46px;padding:0 16px;border:1px solid var(--vl-btn-2);border-radius:14px;background:linear-gradient(180deg,var(--vl-btn-1),var(--vl-btn-2));color:var(--vl-btn-text);display:inline-flex;align-items:center;justify-content:center;gap:7px;font:800 9.6px/1 var(--serif);letter-spacing:.06em;text-transform:uppercase;box-shadow:0 0 0 2px rgba(255,255,255,.7),0 10px 22px -8px var(--vl-deep);cursor:pointer;transition:transform .12s ease,opacity .18s ease}
.lgv2-veillee-primary svg{width:14px;height:14px;fill:currentColor}.lgv2-veillee-primary:active{transform:scale(.985)}
.lgv2-veillee-primary.is-open{animation:vl-breathe 2.4s ease-in-out infinite}
.lgv2-veillee-primary.is-waitlist{border-color:var(--vl-slate);background:linear-gradient(180deg,#5b6273,var(--vl-slate));color:#F4E9D6;box-shadow:0 0 0 2px rgba(255,255,255,.7)}
.lgv2-veillee-primary[disabled]{border-color:rgba(75,81,96,.35);background:rgba(75,81,96,.16);color:#3d2d27;box-shadow:none;cursor:default}
.lgv2-veillee-cta.is-muted{padding:10px;border:1px dashed rgba(154,147,138,.6);border-radius:14px;color:#6c5641}.lgv2-veillee-cta.is-muted b{font:800 9px/1 var(--serif)}
.lgv2-veillee-bots-notice{padding:9px 10px;border:1px solid var(--vl-pub-deep);border-radius:13px;background:var(--vl-pub-soft);color:var(--vl-pub-ink);display:grid;gap:3px}
.lgv2-veillee-bots-notice b{font:800 8.4px/1.2 var(--serif)}
.lgv2-veillee-bots-notice span{font:600 8px/1.35 var(--sans)}
.lgv2-veillee-secondary{width:100%;min-height:36px;border:1px solid var(--vl-or-soft);border-radius:12px;background:#fffaf0;color:#5a4126;font:800 7.6px/1 var(--serif);letter-spacing:.05em;cursor:pointer}

/* ---- encarts : application, code privé -------------------------------- */
.lgv2-veillee-app-limit{padding:9px 10px;border:1px solid var(--vl-or-soft);border-radius:13px;background:#f6e9c8;color:#4b3827}.lgv2-veillee-app-limit b{display:flex;align-items:center;gap:6px;font:800 8px/1.2 var(--serif)}.lgv2-veillee-app-limit b svg{width:12px;height:12px;fill:#8c6b24}.lgv2-veillee-app-limit p{margin-top:4px;font:600 7.2px/1.4 var(--sans)}
.lgv2-veillee-code{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--vl-priv-2);border-radius:13px;background:var(--vl-priv-glass);color:var(--vl-priv-ink)}
.lgv2-veillee-code>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--vl-priv-btn-2);color:#FFF7EA}.lgv2-veillee-code>span svg{width:16px;height:16px;fill:currentColor}
.lgv2-veillee-code small{display:block;font:800 6.4px/1 var(--serif);letter-spacing:.09em;opacity:.85}.lgv2-veillee-code b{display:block;margin-top:2px;font:800 15px/1 var(--serif);letter-spacing:.14em;font-variant-numeric:tabular-nums}
.lgv2-veillee-code button{min-height:30px;padding:0 11px;border:1px solid var(--vl-priv-btn-2);border-radius:10px;background:linear-gradient(180deg,var(--vl-priv-btn-1),var(--vl-priv-btn-2));color:#FFF7EA;font:800 7px/1 var(--serif);letter-spacing:.05em;cursor:pointer}

/* ---- participants, pierres, actions secondaires ------------------------ */
.lgv2-veillee-detail__members,.lgv2-veillee-rules{padding:9px 10px;border:1px solid var(--vl-or-soft);border-radius:14px;background:#fffaf0}
.lgv2-veillee-detail__members>header{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.lgv2-veillee-detail__members h2,.lgv2-veillee-rules h2{font:800 8.4px/1 var(--serif);letter-spacing:.07em;text-transform:uppercase;color:#765726}.lgv2-veillee-detail__members>header b{font:800 7.4px/1 var(--sans);color:#6c5641;font-variant-numeric:tabular-nums;text-align:right}
.lgv2-veillee-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px 4px}
.lgv2-veillee-grid article{position:relative;display:grid;justify-items:center;gap:3px;text-align:center;min-width:0}
.lgv2-veillee-grid .lgv2-veillee-avatar{width:48px;height:48px}.lgv2-veillee-grid .lgv2-veillee-avatar+.lgv2-veillee-avatar{margin:0}
.lgv2-veillee-grid .lgv2-veillee-avatar i{border-width:2.5px}
.lgv2-veillee-grid article b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:800 7.2px/1.1 var(--serif);color:#3d2d27}
.lgv2-veillee-grid article small{font:700 5.8px/1 var(--sans);letter-spacing:.03em;color:#8a7a66;text-transform:uppercase}
.lgv2-veillee-grid article.is-confirmed small,.lgv2-veillee-grid article.is-present small{color:var(--vl-ok)}.lgv2-veillee-grid article.is-present small{color:var(--vl-pub-deep)}.lgv2-veillee-grid article.is-waitlist small{color:var(--vl-slate)}.lgv2-veillee-grid article.is-no-show small{color:var(--vl-card-edge)}
/* 7.2.3 — La vignette d'un participant est un bouton ; <article> reste le
   cadre (et l'ancre de la couronne), donc aucune regle existante ne bouge. */
.lgv2-veillee-member{width:100%;min-width:0;padding:0;border:0;background:transparent;color:inherit;display:grid;justify-items:center;gap:3px;cursor:pointer;transition:transform .12s ease}
.lgv2-veillee-member:active{transform:scale(.96)}
.lgv2-veillee-member:focus-visible{outline:2px solid var(--vl-btn-2);outline-offset:2px;border-radius:10px}
.lgv2-veillee-member-modal{position:absolute;z-index:120;inset:0;display:grid;place-items:center;padding:18px;background:rgba(35,25,19,.48);animation:vl-fade-in .15s ease-out both}
.lgv2-veillee-member-modal>section{width:min(100%,300px);padding:13px;border:1px solid var(--vl-or-soft);border-radius:16px;background:linear-gradient(180deg,#fffaf0,#f7ecd9);color:#3d2d27;display:grid;gap:9px}
.lgv2-veillee-member-modal__head{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:center;gap:10px}
.lgv2-veillee-member-modal__head .lgv2-veillee-avatar{width:52px;height:52px}
.lgv2-veillee-member-modal__head>div{min-width:0;display:grid;gap:2px}
.lgv2-veillee-member-modal__head h2{font:800 11px/1.15 var(--serif);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lgv2-veillee-member-modal__head small{font:700 6.4px/1 var(--sans);letter-spacing:.05em;text-transform:uppercase;color:#8a7a66}
.lgv2-veillee-member-modal__facts{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:6px}
.lgv2-veillee-member-modal__facts>div{padding:7px 4px 6px;border:1px solid rgba(201,169,107,.35);border-radius:11px;background:linear-gradient(180deg,#fffdf7,#f6ecd9);display:grid;justify-items:center;gap:2px;text-align:center}
.lgv2-veillee-member-modal__facts dt{font:700 5.8px/1 var(--sans);letter-spacing:.04em;text-transform:uppercase;color:#8a7a66}
.lgv2-veillee-member-modal__facts dd{margin:0;font:800 7.6px/1.1 var(--serif);color:#3d2d27}
.lgv2-veillee-member-modal>section>button{min-height:36px;border:1px solid var(--vl-or-soft);border-radius:12px;background:#fffaf0;color:#5a4126;font:800 7.6px/1 var(--serif);letter-spacing:.05em;cursor:pointer}
.lgv2-veillee-card-status{padding:7px 9px;border:1px solid var(--vl-card-yellow);border-left:4px solid var(--vl-card-yellow);border-radius:10px;background:var(--vl-ivory);color:var(--vl-card-edge);font:800 8px/1.25 var(--serif)}
.lgv2-veillee-card-status.is-level-2,.lgv2-veillee-card-status.is-level-3{border-color:var(--vl-card-orange);border-left-color:var(--vl-card-orange)}
.lgv2-veillee-absence-history{display:grid;gap:6px;padding-top:2px}
.lgv2-veillee-absence-history h3{font:800 8px/1.2 var(--serif);letter-spacing:.04em;text-transform:uppercase;color:var(--vl-card-edge)}
.lgv2-veillee-absence-history ul{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.lgv2-veillee-absence-history li{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 7px;border:1px solid var(--vl-or-soft);border-radius:9px;background:var(--vl-ivory)}
.lgv2-veillee-absence-history li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:700 8px/1.2 var(--sans);color:var(--vl-ink)}
.lgv2-veillee-absence-history li time{white-space:nowrap;font:700 8px/1.2 var(--sans);color:var(--vl-card-edge)}
/* 7.7.0 — Le poste de commande de l'organisateur reprend l'anatomie de
   l'encart d'information : meme cadre, meme respiration, aucun style neuf. */
.lgv2-veillee-command{display:grid;gap:7px;padding:10px;border:1px solid var(--vl-or-soft);border-radius:14px;background:linear-gradient(180deg,#fffdf7,#f6ecd9)}
.lgv2-veillee-command>small{font:700 6.4px/1 var(--sans);letter-spacing:.1em;color:#8a7a66}
.lgv2-veillee-command__wait{margin:0;font:600 7.6px/1.35 var(--sans);color:#5a4126}
/* 7.10.0 — L'accueil des autorisations : deux etapes, l'etat de chacune en
   direct, et le vocabulaire du jeu. Aucune couleur nouvelle. */
/* 7.10.1 — LES JETONS DE COULEUR DOIVENT EXISTER ICI AUSSI. Les boutons
   pleins tirent leur fond de --vl-btn-1 et --vl-btn-2, qui n'etaient definis
   que sur l'ecran des parties : hors de lui, le degrade recevait des valeurs
   inexistantes, donc AUCUN FOND. Le bouton s'affichait en texte nu. */
.lgv2-accueil{--vl-btn-1:#2FA69A;--vl-btn-2:#1C7F76;--vl-btn-text:#F4FFFD;--vl-or-soft:rgba(201,169,107,.42);display:grid;align-content:start;gap:14px;padding:18px 14px calc(24px + env(safe-area-inset-bottom,0px));overflow:auto;background:linear-gradient(180deg,#fbf2e4,#f7ead8);color:#3d2d27}
.lgv2-accueil>header small{font:700 6.6px/1 var(--sans);letter-spacing:.16em;color:#8a7a66}
.lgv2-accueil>header h1{margin:3px 0 0;font:800 17px/1.1 var(--serif);color:#3d2d27}
.lgv2-accueil>header p{margin:5px 0 0;font:600 8.2px/1.4 var(--sans);color:#6d5b4c}
.lgv2-accueil__etapes{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.lgv2-accueil__etapes>li{display:grid;gap:6px;padding:12px;border:1px solid var(--vl-or-soft);border-radius:15px;background:linear-gradient(180deg,#fffdf7,#f6ecd9)}
.lgv2-accueil__etapes b{font:800 9.6px/1.2 var(--serif);color:#3d2d27;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.lgv2-accueil__etapes p{margin:0;font:600 7.8px/1.42 var(--sans);color:#5a4126}
.lgv2-accueil__ok{font:800 6.6px/1 var(--sans);letter-spacing:.06em;color:#1E7A45;font-style:normal;padding:3px 7px;border-radius:999px;background:rgba(30,122,69,.12)}
.lgv2-accueil__ko{font:800 6.6px/1 var(--sans);letter-spacing:.06em;color:#8C4F06;font-style:normal;padding:3px 7px;border-radius:999px;background:rgba(140,79,6,.12)}
.lgv2-accueil>footer{display:grid;gap:7px}
/* 7.11.0 — La case du reglement n'avait AUCUN style : invisible, elle ne
   pouvait pas etre cochee, donc le bouton restait desactive et la modale ne
   se fermait jamais. Elle est desormais une vraie cible tactile. */
.lgv2-veillee-ics-modal.is-rules ul{margin:0;padding:0 0 0 15px;display:grid;gap:5px;list-style:disc}
.lgv2-veillee-ics-modal.is-rules li{font:600 7.6px/1.4 var(--sans);color:#5a4126;text-align:left}
.lgv2-veillee-rules-check{display:flex;align-items:center;gap:9px;min-height:40px;padding:7px 10px;border:1px solid var(--vl-or-soft);border-radius:12px;background:#fffaf0;cursor:pointer}
.lgv2-veillee-rules-check input{width:20px;height:20px;flex:0 0 auto;accent-color:#1C7F76;margin:0}
.lgv2-veillee-rules-check span{font:800 8px/1.2 var(--serif);color:#3d2d27}
.lgv2-veillee-ics-modal.is-rules button[disabled]{opacity:.45;cursor:not-allowed}
/* 7.9.1 — Le bouton d'essai est volontairement discret : il sert une fois. */
.lgv2-veillee-quiet-btn{width:100%;min-height:34px;border:1px dashed var(--vl-or-soft);border-radius:12px;background:transparent;color:#7a6853;font:700 7.4px/1 var(--serif);letter-spacing:.04em;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer}
.lgv2-veillee-crown{position:absolute;top:-5px;left:50%;transform:translateX(9px);width:16px;height:16px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(180deg,#f1cf82,#c9a96b);color:#4a331e;box-shadow:0 2px 5px rgba(0,0,0,.18)}.lgv2-veillee-crown svg{width:10px;height:10px;fill:currentColor}
.lgv2-veillee-rules>div{margin-top:7px;display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.lgv2-veillee-rules span{min-width:0;display:grid;justify-items:center;gap:2px;padding:7px 3px 6px;border:1px solid rgba(201,169,107,.35);border-radius:11px;background:linear-gradient(180deg,#fffdf7,#f6ecd9);text-align:center}
.lgv2-veillee-rules span i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 34% 30%,#fff9e8,#ecd4a1);color:#8c6b24;border:1px solid var(--vl-or-soft)}.lgv2-veillee-rules span i svg{width:11px;height:11px;fill:currentColor}
.lgv2-veillee-rules small{font:700 5.8px/1 var(--sans);letter-spacing:.04em;color:#8a7a66;text-transform:uppercase}.lgv2-veillee-rules b{font:800 7.6px/1.1 var(--serif);color:#3d2d27;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.lgv2-veillee-rules p{margin-top:6px;font:600 7.2px/1.45 var(--sans);color:#5a4126}
.lgv2-veillee-detail__actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.lgv2-veillee-detail__actions button{min-height:36px;padding:5px 8px;border:1px solid var(--vl-or-soft);border-radius:12px;background:#fffaf0;color:#5a4126;display:inline-flex;align-items:center;justify-content:center;gap:5px;font:800 7.2px/1 var(--serif);letter-spacing:.04em;cursor:pointer;transition:transform .12s ease}
.lgv2-veillee-detail__actions button svg{width:12px;height:12px;fill:currentColor}.lgv2-veillee-detail__actions button:active{transform:scale(.985)}
.lgv2-veillee-detail__actions button.is-ics-first,.lgv2-veillee-detail__actions button.is-primary{grid-column:1/-1;min-height:42px;border-color:#b98e50;background:linear-gradient(180deg,#efd9a6,#c5935b);color:#4a2c19;font-size:8px}
.lgv2-veillee-detail__actions button.is-quiet-danger{color:#8e3a3a;border-color:rgba(142,58,58,.35)}
.lgv2-veillee-detail__actions button.is-ics-file{background:transparent;border-style:dashed;color:#7a6042;font-weight:700}
.lgv2-veillee-detail__actions .lgv2-veillee-push.is-enabled{background:linear-gradient(180deg,#f3ead1,#e4d1a5);border-color:rgba(111,88,47,.42);color:#4b3a21}

/* ---- création ---------------------------------------------------------- */
.lgv2-veillee-create{display:grid;align-content:start;gap:10px}.lgv2-veillee-create form{display:grid;gap:10px}
.lgv2-veillee-preview{min-height:108px}
.lgv2-veillee-field{display:grid;gap:5px}.lgv2-veillee-field>span{display:flex;align-items:baseline;gap:5px;font:800 7.2px/1 var(--serif);letter-spacing:.06em;text-transform:uppercase;color:#684d2c}.lgv2-veillee-field>span small{font:600 6.4px/1 var(--sans);letter-spacing:0;text-transform:none;color:#8a7a66}
.lgv2-veillee-field.is-row{grid-template-columns:1fr 1fr;gap:8px}.lgv2-veillee-field.is-row>div{display:grid;gap:5px}.lgv2-veillee-field.is-row>div>span{font:800 7.2px/1 var(--serif);letter-spacing:.06em;text-transform:uppercase;color:#684d2c}
.lgv2-veillee-field input[name="title"]{min-height:38px;padding:0 11px;border:1px solid var(--vl-or-soft);border-radius:12px;background:var(--vl-ivory);color:#3d2d27;font:600 9px/1 var(--sans)}
.lgv2-veillee-field input[name="title"]:focus{outline:2px solid var(--vl-2);outline-offset:1px}
.lgv2-veillee-chips{display:flex;gap:6px;overflow-x:auto;padding:2px 2px 6px;scroll-snap-type:x proximity;scrollbar-width:none}.lgv2-veillee-chips::-webkit-scrollbar{display:none}
.lgv2-veillee-chip{flex:none;min-width:58px;min-height:38px;padding:5px 9px;border:1px solid var(--vl-or-soft);border-radius:12px;background:var(--vl-ivory);color:#3d2d27;display:grid;justify-items:center;gap:1px;scroll-snap-align:center;cursor:pointer;transition:transform .12s ease,background .18s ease,border-color .18s ease}
.lgv2-veillee-chip b{font:800 8px/1 var(--serif);text-transform:capitalize;font-variant-numeric:tabular-nums}.lgv2-veillee-chip small{font:600 6.2px/1 var(--sans);color:#8a7a66}
.lgv2-veillee-chip.is-selected{border-color:var(--vl-btn-2);background:linear-gradient(180deg,var(--vl-btn-1),var(--vl-btn-2));color:var(--vl-btn-text);box-shadow:0 6px 14px -6px var(--vl-deep)}.lgv2-veillee-chip.is-selected small{color:inherit;opacity:.9}
.lgv2-veillee-chip:active{transform:scale(.97)}
.lgv2-veillee-chips.is-times .lgv2-veillee-chip{min-width:52px;min-height:32px}
.lgv2-veillee-stepper{display:grid;grid-template-columns:36px minmax(0,1fr) 36px;align-items:center;border:1px solid var(--vl-or-soft);border-radius:12px;background:var(--vl-ivory);overflow:hidden}
.lgv2-veillee-stepper button{height:38px;border:0;background:transparent;color:var(--vl-deep);font:800 16px/1 var(--serif);cursor:pointer}.lgv2-veillee-stepper button:active{background:var(--vl-soft)}
.lgv2-veillee-stepper output{text-align:center;font:800 13px/1 var(--serif);color:#3d2d27;font-variant-numeric:tabular-nums}
.lgv2-veillee-seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:5px;padding:4px;border:1px solid var(--vl-or-soft);border-radius:13px;background:#f7ecd9}
.lgv2-veillee-seg label{position:relative;min-height:38px;padding:5px 6px;border-radius:10px;display:grid;justify-items:center;align-content:center;gap:2px;text-align:center;cursor:pointer;color:#5a4126;transition:background .18s ease,color .18s ease}
.lgv2-veillee-seg label input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.lgv2-veillee-seg label b{font:800 8px/1 var(--serif)}.lgv2-veillee-seg label small{font:600 6px/1.1 var(--sans);color:#8a7a66}
.lgv2-veillee-seg label.is-checked{background:linear-gradient(180deg,var(--vl-btn-1),var(--vl-btn-2));color:var(--vl-btn-text);box-shadow:0 6px 14px -6px var(--vl-deep)}.lgv2-veillee-seg label.is-checked small{color:inherit;opacity:.9}
.lgv2-veillee-seg label:has(input:focus-visible){outline:2px solid var(--vl-2);outline-offset:1px}
.lgv2-veillee-submit{margin-top:4px}

/* ---- mes veillées, alertes, modale ics ---------------------------------- */
.lgv2-mes-veillees{display:grid;align-content:start;gap:14px}.lgv2-veillee-group.is-past .lgv2-veillee-card{filter:saturate(.45) contrast(.98)}
.lgv2-veillee-alert{position:absolute;z-index:80;top:max(7px,env(safe-area-inset-top,0px));left:8px;right:8px;pointer-events:none;animation:vl-slide-down .18s ease-out both}.lgv2-veillee-alert.is-leave{animation:vl-card-out .2s ease-in both}
.lgv2-veillee-alert>button{pointer-events:auto;width:100%;min-height:46px;padding:7px 10px;border:1px solid var(--vl-or-soft);border-radius:14px;background:var(--vl-glass);color:var(--vl-tink);display:grid;grid-template-columns:28px minmax(0,1fr) 14px;align-items:center;gap:8px;text-align:left;box-shadow:0 12px 28px rgba(61,35,20,.22);backdrop-filter:blur(6px);cursor:pointer}
.lgv2-veillee-alert>button>span:first-child{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--vl-btn-2);color:var(--vl-btn-text)}.lgv2-veillee-alert>button>span:first-child svg{width:14px;height:14px;fill:currentColor}
.lgv2-veillee-alert__copy{min-width:0;display:grid;gap:1px}.lgv2-veillee-alert__copy b{font:800 8.4px/1.2 var(--serif);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lgv2-veillee-alert__copy small{font:600 6.6px/1.2 var(--sans);opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lgv2-veillee-alert>button>svg{width:14px;height:14px;fill:currentColor}
.lgv2-veillee-alert[data-tone="muted"]>button{background:linear-gradient(100deg,#f3efe8,#e6e0d6);color:#3d2d27}.lgv2-veillee-alert[data-tone="muted"]>button>span:first-child{background:var(--vl-slate)}
.lgv2-veillee-ics-modal{position:absolute;z-index:120;inset:0;display:grid;place-items:center;padding:18px;background:rgba(35,25,19,.48);animation:vl-fade-in .15s ease-out both}.lgv2-veillee-ics-modal>section{width:min(100%,340px);padding:14px;border:1px solid var(--vl-or-soft);border-radius:16px;background:linear-gradient(180deg,#fffaf0,#f7ecd9);color:#3d2d27;display:grid;gap:8px}.lgv2-veillee-ics-modal h2{font:800 11px/1.15 var(--serif)}.lgv2-veillee-ics-modal p{font:600 7.6px/1.4 var(--sans);color:#5a4126}.lgv2-veillee-ics-modal button{min-height:38px;border:1px solid var(--vl-or-soft);border-radius:12px;background:#fffaf0;color:#5a4126;font:800 7.6px/1 var(--serif);letter-spacing:.05em;cursor:pointer}.lgv2-veillee-ics-modal button.is-primary{border-color:#b98e50;background:linear-gradient(180deg,#efd9a6,#c5935b);color:#4a2c19;display:inline-flex;align-items:center;justify-content:center;gap:6px}.lgv2-veillee-ics-modal button.is-primary svg{width:13px;height:13px;fill:currentColor}.lgv2-veillee-ics-modal>section>span{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--vl-or);background:radial-gradient(circle at 34% 30%,#fff9e8,#ecd4a1);color:#8c6b24}.lgv2-veillee-ics-modal>section>span svg{width:18px;height:18px;fill:currentColor}

/* ---- mouvement --------------------------------------------------------- */
@keyframes vl-card-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes vl-card-out{to{opacity:0;transform:translateY(-3px)}}
@keyframes vl-fade-in{from{opacity:0}to{opacity:1}}
@keyframes vl-slide-down{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes vl-gauge{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes vl-breathe{0%,100%{opacity:1}50%{opacity:.62}}
@media (max-width:370px){.lgv2-veillee-card__meta{grid-template-columns:auto minmax(62px,1fr) auto;gap:5px}.lgv2-veillee-rsvp{padding-inline:6px;max-width:88px}.lgv2-veillee-grid{grid-template-columns:repeat(3,1fr)}.lgv2-veillee-hero>time b{font-size:26px}}
@media (prefers-reduced-motion:reduce){
  .lgv2-veillee-skeleton{animation:none;background:#efe3d3}
  .lgv2-veillee-card.is-enter,.lgv2-veillee-card.is-leave,.lgv2-veillee-card.is-swap,.lgv2-veillee-capacity>span i,.lgv2-veillee-nav__dot,.lgv2-veillee-frise li.is-current>i,.lgv2-veillee-card.is-open .lgv2-veillee-card__when,.lgv2-veillee-rsvp.is-open,.lgv2-veillee-primary.is-open,.lgv2-veillee-alert,.lgv2-veillee-ics-modal,.lgv2-veillee-member-modal{animation:none}
  .lgv2-veillee-ring__bar,.lgv2-veillee-card,.lgv2-veillee-rsvp,.lgv2-veillee-primary,.lgv2-veillee-chip,.lgv2-veillee-seg label,.lgv2-veillee-nav>button,.lgv2-veillee-member{transition:none}
}
}

/* 7.4.0 — Rappels Veillées T-2h/T-15/T0 et règlement. */
.lgv2-veillee-alert[data-priority="high"]{z-index:130;box-shadow:0 14px 34px var(--vl-soft)}
.lgv2-veillee-alert[data-priority="high"] button{min-height:48px}
.lgv2-veillee-alert>button.has-action{grid-template-columns:28px minmax(0,1fr) auto}
.lgv2-veillee-alert button>em{max-width:142px;overflow:hidden;text-overflow:ellipsis;margin-left:auto;padding:6px 9px;border:1px solid var(--vl-or-soft);border-radius:999px;background:var(--vl-ivory);color:var(--vl-ink);font:800 8px/1 var(--serif);font-style:normal;white-space:nowrap}
.lgv2-veillee-nav__dot.is-live{box-shadow:0 0 0 4px var(--vl-soft);animation:vl-breathe 1.2s ease-in-out infinite}
.lgv2-veillee-ics-modal.is-rules ul{margin:0;padding-left:18px;display:grid;gap:6px;color:var(--vl-ink);font:600 8px/1.35 var(--sans)}
.lgv2-veillee-rules-check{display:flex;align-items:center;gap:8px;min-height:36px;padding:7px 9px;border:1px solid var(--vl-or-soft);border-radius:11px;background:var(--vl-ivory);color:var(--vl-ink);font:800 8px/1.2 var(--serif);cursor:pointer}
.lgv2-veillee-rules-check input{width:16px;height:16px;margin:0;accent-color:var(--vl-deep)}
.lgv2-veillee-ics-modal.is-rules button:disabled{opacity:.5;cursor:default}

/* 7.5.0 — Salon ORGANISATION des Veillees : texte seul, 240 caracteres. */
.lgv2-veillee-nav__dot.is-unread{background:var(--vl-priv-2);box-shadow:0 0 0 2px var(--vl-priv-soft)}
.lgv2-veillee-chat{padding:9px 10px;border:1px solid var(--vl-or-soft);border-radius:14px;background:var(--vl-ivory);display:grid;gap:8px;min-width:0}
.lgv2-veillee-chat>header{display:flex;align-items:end;justify-content:space-between;gap:8px;min-width:0}
.lgv2-veillee-chat>header>div{min-width:0}.lgv2-veillee-chat>header small{display:block;font:800 8px/1 var(--serif);letter-spacing:.09em;color:var(--vl-deep)}
.lgv2-veillee-chat>header h2{margin:3px 0 0;font:800 9px/1.1 var(--serif);color:var(--vl-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgv2-veillee-chat>header>span{flex:none;font:700 8px/1 var(--sans);color:var(--vl-slate);white-space:nowrap}
.lgv2-veillee-chat__feed{max-height:210px;min-height:72px;overflow:auto;display:flex;flex-direction:column;gap:6px;padding:6px;border:1px solid var(--vl-or-soft);border-radius:12px;background:var(--vl-soft);overscroll-behavior:contain}
.lgv2-veillee-chat__feed article{max-width:86%;align-self:flex-start;padding:6px 8px;border:1px solid var(--vl-or-soft);border-radius:11px;background:var(--vl-ivory);color:var(--vl-ink)}
.lgv2-veillee-chat__feed article.is-me{align-self:flex-end;border-color:var(--vl-2);background:var(--vl-glass);color:var(--vl-tink)}
.lgv2-veillee-chat__feed article>small{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:3px;font:800 8px/1 var(--sans);color:var(--vl-deep)}
.lgv2-veillee-chat__feed article>small time{font-variant-numeric:tabular-nums;color:var(--vl-slate)}
.lgv2-veillee-chat__feed article>p{margin:0;font:600 8px/1.35 var(--sans);overflow-wrap:anywhere;white-space:pre-wrap}
.lgv2-veillee-chat__empty,.lgv2-veillee-chat__status{margin:auto;text-align:center;font:650 8px/1.35 var(--sans);color:var(--vl-slate)}
.lgv2-veillee-chat__status{margin:0;padding:7px;border:1px dashed var(--vl-or-soft);border-radius:10px;background:var(--vl-soft)}
.lgv2-veillee-chat-compose{display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:6px;min-width:0}
.lgv2-veillee-chat-compose input{min-width:0;height:36px;border:1px solid var(--vl-or-soft);border-radius:11px;background:var(--vl-ivory);padding:0 10px;color:var(--vl-ink);outline:0;font:600 8px/1 var(--sans)}
.lgv2-veillee-chat-compose input:focus{outline:2px solid var(--vl-2);outline-offset:1px}.lgv2-veillee-chat-compose button{width:36px;height:36px;border:1px solid var(--vl-btn-2);border-radius:10px;background:linear-gradient(180deg,var(--vl-btn-1),var(--vl-btn-2));color:var(--vl-btn-text);display:grid;place-items:center;cursor:pointer}
.lgv2-veillee-chat-compose button:disabled{opacity:.55;cursor:wait}.lgv2-veillee-chat-compose button svg{width:14px;height:14px;fill:currentColor}
/* 7.5.0 — trace de moderation visible uniquement au createur de la Veillee. */
.lgv2-veillee-moderation-trace{padding:8px 10px;border:1px solid var(--vl-or-soft);border-radius:12px;background:var(--vl-soft);color:var(--vl-ink)}
.lgv2-veillee-moderation-trace summary{cursor:pointer;font:800 8px/1.2 var(--serif);color:var(--vl-deep);letter-spacing:.04em}
.lgv2-veillee-moderation-trace ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:5px}
.lgv2-veillee-moderation-trace li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 7px;border:1px solid var(--vl-or-soft);border-radius:9px;background:var(--vl-ivory);min-width:0}
.lgv2-veillee-moderation-trace li>div{min-width:0;display:grid;gap:2px}.lgv2-veillee-moderation-trace li b{font:800 8px/1 var(--serif);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lgv2-veillee-moderation-trace li small{font:650 8px/1 var(--sans);color:var(--vl-slate)}
.lgv2-veillee-moderation-trace li>span{flex:none;max-width:128px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:800 8px/1 var(--sans);color:var(--vl-deep)}
.lgv2-veillee-moderation-trace>p{margin:7px 0 0;font:600 8px/1.3 var(--sans);color:var(--vl-slate)}
/* 7.5.0 — garde-fou mobile : un pseudonyme long ne doit jamais elargir le fil. */
.lgv2-veillee-chat__feed{overflow-x:hidden}
.lgv2-veillee-chat__feed article>small{min-width:0}
.lgv2-veillee-chat__feed article>small b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
