@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:100dvh;max-height:100dvh;color:var(--ink);font-family:var(--sans);background:var(--wine-3);overflow:hidden;overscroll-behavior:none}
  .lgv2 svg{width:1.35rem;height:1.35rem;fill:currentColor;display:block}
  .lgv2-screen{position:relative;width:min(100%,560px);height:100%;min-height:0;margin:0 auto;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 {
  .lgv2-startup{--night:#080b15;--night-2:#151529;--moon:#f4e7bf;--ember:#e98637;isolation:isolate;background:#080b15;color:#fff8e8;overflow:hidden}
  .lgv2-startup::after{content:"";position:absolute;inset:0;z-index:20;pointer-events:none;background:radial-gradient(ellipse at 50% 44%,transparent 34%,rgba(3,5,11,.18) 68%,rgba(3,4,9,.62) 100%),linear-gradient(180deg,rgba(4,6,12,.08),rgba(4,6,12,.42));box-shadow:inset 0 0 90px rgba(0,0,0,.38)}
  .lgv2-startup-world{position:absolute;inset:0;z-index:1;overflow:hidden;background:linear-gradient(180deg,#080b17,#17172b 52%,#20151e)}
  .lgv2-startup-sky{position:absolute;inset:-4%;background:linear-gradient(180deg,rgba(7,10,22,.28),rgba(35,22,37,.76)),url('../images/village-hero.webp') center/cover no-repeat;filter:brightness(.24) saturate(.85) sepia(.08) hue-rotate(178deg);transform:scale(1.11);opacity:.25;transition:opacity 1.8s ease,transform 7.2s cubic-bezier(.12,.68,.2,1),filter 2s ease}.lgv2-startup.is-live .lgv2-startup-sky{opacity:.82;transform:scale(1.035);filter:brightness(.34) saturate(.96) sepia(.04) hue-rotate(178deg)}
  .lgv2-startup-stars{position:absolute;inset:0 0 48%;opacity:0;transition:opacity 1.4s .15s ease}.lgv2-startup.is-live .lgv2-startup-stars{opacity:1}.lgv2-startup-stars i{position:absolute;left:var(--x);top:var(--y);width:2px;height:2px;border-radius:50%;background:#f6e8bc;box-shadow:0 0 7px rgba(245,227,173,.76);animation:lgv2-startup-twinkle var(--d) ease-in-out var(--delay) infinite alternate}
  .lgv2-startup-moon{position:absolute;left:50%;top:5.5%;width:min(35vw,158px);aspect-ratio:1;border-radius:50%;transform:translate(-50%,-10%) scale(.78);opacity:0;background:url('../images/moon.webp') center/contain no-repeat;box-shadow:0 0 26px rgba(255,244,206,.34),0 0 70px rgba(240,226,180,.22),0 0 160px rgba(150,168,224,.16);transition:1.7s .2s cubic-bezier(.16,.78,.2,1)}.lgv2-startup.is-live .lgv2-startup-moon{opacity:.86;transform:translate(-50%,0) scale(1)}.lgv2-startup-moon::before{content:"";position:absolute;inset:-12%;border:1px solid rgba(222,194,119,.3);border-radius:50%;box-shadow:0 0 0 13px rgba(209,170,88,.025),0 0 0 28px rgba(209,170,88,.018)}.lgv2-startup-moon i,.lgv2-startup-moon b{display:none}.lgv2-startup-moon i{width:19%;height:12%;left:25%;top:29%}.lgv2-startup-moon b{width:13%;height:9%;right:23%;top:51%}
  .lgv2-startup-cloud{position:absolute;z-index:3;width:76%;height:12%;border-radius:50%;background:rgba(111,111,145,.08);filter:blur(22px);opacity:.24}.lgv2-startup-cloud.is-a{left:-24%;top:17%;animation:lgv2-startup-cloud 14s ease-in-out infinite alternate}.lgv2-startup-cloud.is-b{right:-35%;top:27%;animation:lgv2-startup-cloud 18s ease-in-out -4s infinite alternate-reverse}.lgv2-startup-cloud.is-c{left:16%;top:37%;opacity:.15;animation:lgv2-startup-cloud 22s ease-in-out -7s infinite alternate}
  .lgv2-startup-village{position:absolute;inset:auto -7% 8%;height:63%;z-index:4;background:linear-gradient(180deg,transparent 0 21%,rgba(8,9,15,.14) 49%,rgba(6,7,12,.9) 100%),url('../images/village-hero.webp') center bottom/cover no-repeat;filter:brightness(.16) saturate(.58) sepia(.16);opacity:.1;transform:translateY(5%) scale(1.08);transition:2.1s .3s cubic-bezier(.16,.72,.18,1)}.lgv2-startup.is-village .lgv2-startup-village{opacity:.87;transform:none;filter:brightness(.22) saturate(.68) sepia(.1)}
  .lgv2-startup-mist{position:absolute;z-index:6;left:-30%;width:160%;height:13%;border-radius:50%;background:rgba(179,178,198,.08);filter:blur(28px);opacity:.25}.lgv2-startup-mist.is-a{bottom:19%;animation:lgv2-startup-mist 10s ease-in-out infinite alternate}.lgv2-startup-mist.is-b{bottom:7%;opacity:.18;animation:lgv2-startup-mist 15s ease-in-out -4s infinite alternate-reverse}
  .lgv2-startup-fire{position:absolute;z-index:9;left:50%;bottom:21%;width:82px;height:92px;transform:translate(-50%,22px) scale(.58);opacity:0;filter:drop-shadow(0 8px 12px rgba(0,0,0,.35));transition:1s cubic-bezier(.2,.8,.2,1)}.lgv2-startup.is-fire .lgv2-startup-fire{opacity:1;transform:translate(-50%,0) scale(1)}.lgv2-startup-fire::before{content:"";position:absolute;left:50%;bottom:-9px;width:146px;height:58px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(239,126,49,.26),rgba(225,86,29,.09) 44%,transparent 70%);filter:blur(7px);animation:lgv2-startup-fireglow 1.7s ease-in-out infinite alternate}.lgv2-startup-fire>span{position:absolute;left:50%;bottom:5px;width:56px;height:11px;border-radius:999px;background:linear-gradient(90deg,#2c1510,#6f3821 50%,#32170f);box-shadow:inset 0 2px 1px rgba(245,175,88,.11)}.lgv2-startup-fire .is-log-a{transform:translateX(-50%) rotate(17deg)}.lgv2-startup-fire .is-log-b{transform:translateX(-50%) rotate(-17deg)}.lgv2-startup-fire>i{position:absolute;left:50%;bottom:16px;border-radius:58% 42% 58% 42%/70% 55% 45% 30%;transform-origin:50% 100%;filter:drop-shadow(0 0 5px rgba(255,164,62,.35));animation:lgv2-startup-flame 1.15s ease-in-out infinite alternate}.lgv2-startup-fire .is-flame-a{width:45px;height:67px;margin-left:-22px;background:linear-gradient(180deg,#ffd36d 0,#ff8a28 48%,#c9431d 82%,transparent 100%)}.lgv2-startup-fire .is-flame-b{width:30px;height:51px;margin-left:-1px;animation-delay:-.38s;background:linear-gradient(180deg,#ffe9a1,#f89b31 57%,#a93420 91%,transparent)}.lgv2-startup-fire .is-flame-c{width:23px;height:43px;margin-left:-17px;animation-delay:-.7s;background:linear-gradient(180deg,#fff4bf,#ffb13b 61%,transparent)}.lgv2-startup-fire>b{position:absolute;left:50%;bottom:26px;width:15px;height:29px;transform:translateX(-50%);border-radius:50% 50% 44% 44%;background:#fff2b8;filter:blur(1px);opacity:.62;animation:lgv2-startup-core .8s ease-in-out infinite alternate}
  .lgv2-startup-eyes{position:absolute;z-index:16;left:50%;top:30%;width:150px;height:40px;transform:translateX(-50%);opacity:0;transition:opacity .22s ease}.lgv2-startup-eyes i{position:absolute;top:10px;width:40px;height:12px;border-radius:80% 20% 80% 20%;background:#ffd071;box-shadow:0 0 14px rgba(255,168,74,.95),0 0 38px rgba(224,86,38,.62),0 0 70px rgba(194,64,33,.3)}.lgv2-startup-eyes i:first-child{left:11px;transform:rotate(7deg)}.lgv2-startup-eyes i:last-child{right:11px;transform:scaleX(-1) rotate(7deg)}.lgv2-startup.is-eyes .lgv2-startup-eyes{animation:lgv2-startup-eyes 1.15s cubic-bezier(.2,.9,.3,1) both}
  .lgv2-startup-brand{position:absolute;z-index:30;left:50%;top:39%;width:min(90%,470px);transform:translate(-50%,12px);display:grid;justify-items:center;text-align:center;gap:8px;opacity:0;text-shadow:0 3px 19px rgba(0,0,0,.66);transition:.8s cubic-bezier(.2,.8,.2,1)}.lgv2-startup.is-title .lgv2-startup-brand{opacity:1;transform:translate(-50%,0)}.lgv2-startup-kicker{font:800 clamp(.48rem,2.2vw,.68rem)/1 var(--serif);letter-spacing:.24em;color:#d6b168}.lgv2-startup-brand h1{position:relative;margin:0;color:#f4dfb0;font:800 clamp(2.35rem,12vw,4.2rem)/.9 var(--serif);letter-spacing:.025em;white-space:nowrap;background:linear-gradient(100deg,#9d6c32 0,#f6e7bd 32%,#fff6db 48%,#c89a50 68%,#f0d79f 100%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 6px 12px rgba(0,0,0,.42));animation:lgv2-startup-title-shine 3.4s ease-in-out infinite}.lgv2-startup-brand h1::after{content:"";position:absolute;left:7%;right:7%;bottom:-8px;height:1px;background:linear-gradient(90deg,transparent,#bc8c49 22%,#f2d79b 50%,#bc8c49 78%,transparent);box-shadow:0 0 8px rgba(224,181,96,.24)}.lgv2-startup-brand p{max-width:330px;margin:3px 0 0;color:#dfd1b9;font:500 clamp(.68rem,3.25vw,.9rem)/1.35 var(--serif);letter-spacing:.025em;opacity:0;transform:translateY(8px);transition:.7s ease}.lgv2-startup.is-tagline .lgv2-startup-brand p{opacity:.92;transform:none}
  .lgv2-startup-skip{position:absolute;z-index:40;right:calc(14px + env(safe-area-inset-right));top:calc(12px + env(safe-area-inset-top));min-width:64px;height:30px;padding:0 10px;border:1px solid rgba(221,192,131,.3);border-radius:999px;background:rgba(7,9,16,.38);backdrop-filter:blur(8px);color:#cdb98e;font:800 .46rem/1 var(--sans);letter-spacing:.12em;opacity:0;transition:.35s ease;cursor:pointer}.lgv2-startup-skip:not(:disabled){opacity:.72}.lgv2-startup-skip:not(:disabled):active{transform:scale(.96)}
  .lgv2-startup-loader{position:absolute;z-index:35;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));width:min(calc(100% - 48px),410px);transform:translateX(-50%);display:grid;gap:8px}.lgv2-startup-loader__copy{display:flex;align-items:center;justify-content:space-between;color:#bdaa88;font-size:.56rem;letter-spacing:.025em}.lgv2-startup-loader__copy b{font-size:.7rem;color:#d6ad63;animation:lgv2-startup-twinkle 1.1s ease-in-out infinite alternate}.lgv2-startup-track{position:relative;height:8px;border-radius:999px;border:1px solid rgba(211,176,106,.28);background:rgba(6,8,14,.58);box-shadow:inset 0 1px 3px rgba(0,0,0,.4),0 0 16px rgba(177,114,53,.08);overflow:visible}.lgv2-startup-track>span{position:absolute;left:1px;top:1px;bottom:1px;right:1px;transform-origin:0 50%;transform:scaleX(var(--startup-ratio,0));border-radius:inherit;background:linear-gradient(90deg,#7a3a28,#c8833c 38%,#ebc775 72%,#fff0b4);box-shadow:0 0 10px rgba(229,180,85,.24);transition:transform .18s linear}.lgv2-startup-track>i{position:absolute;left:0;top:50%;width:100%;height:0;transform:translateX(var(--startup-progress));transition:transform .18s linear;pointer-events:none}.lgv2-startup-track>i>b{position:absolute;left:0;top:0;width:25px;height:25px;margin:-12.5px 0 0 -12.5px;border-radius:50%;display:grid;place-items:center;background:#44101e;border:1px solid #d0a45d;color:#e7c375;box-shadow:0 3px 12px rgba(0,0,0,.3),0 0 13px rgba(212,151,64,.16)}.lgv2-startup-track svg{width:13px;height:13px}.lgv2-startup.is-loaded .lgv2-startup-track>i>b{box-shadow:0 0 0 5px rgba(215,171,91,.06),0 0 19px rgba(233,190,103,.3)}
  .lgv2-startup.is-exiting{animation:lgv2-startup-exit .7s cubic-bezier(.42,0,.7,.25) forwards}.lgv2-startup.is-exiting .lgv2-startup-world{transform:scale(1.025);transition:.7s ease}.lgv2-startup.is-exiting .lgv2-startup-loader,.lgv2-startup.is-exiting .lgv2-startup-skip{opacity:0;transition:.25s ease}
  .lgv2-home.is-arriving .lgv2-home__art{opacity:0;transform:scale(1.035);transition:.72s cubic-bezier(.2,.75,.2,1)}.lgv2-home.is-arriving .lgv2-home__content{opacity:0;transform:translateY(12px);transition:.62s .12s cubic-bezier(.2,.75,.2,1)}.lgv2-home.is-arriving.is-live .lgv2-home__art{opacity:1;transform:none}.lgv2-home.is-arriving.is-live .lgv2-home__content{opacity:1;transform:none}
  /* ==================================================================
     INTRO V2 — braises, éventail de cartes, frappe, sceau.
     Contrainte tenue partout : seuls transform et opacity sont animés.
     ================================================================== */

  /* Braises en canvas : au-dessus du feu, sous les cartes. */
  .lgv2-startup-embers{position:absolute;z-index:10;left:50%;bottom:12%;width:min(74vw,320px);height:46%;transform:translateX(-50%);pointer-events:none;opacity:0;transition:opacity .9s ease}
  .lgv2-startup.is-fire .lgv2-startup-embers{opacity:.92}

  /* --- Mouvement 1 : la caméra avance ------------------------------- */
  /* Le monde entier recule légèrement : c'est ce qui donne la sensation
     d'entrer dans le village plutôt que de le regarder apparaître. */
  .lgv2-startup-world{transform:scale(1.14);transition:transform 5.4s cubic-bezier(.18,.72,.22,1)}
  .lgv2-startup.is-live .lgv2-startup-world{transform:scale(1)}
  .lgv2-startup.is-brief .lgv2-startup-world{transform:scale(1.03);transition:transform 1.1s cubic-bezier(.2,.75,.2,1)}
  .lgv2-startup.is-brief.is-live .lgv2-startup-world{transform:scale(1)}

  /* --- Mouvement 2 : l'éventail des rôles --------------------------- */
  .lgv2-startup-fan{position:absolute;z-index:13;left:50%;bottom:33%;width:min(76vw,340px);height:210px;transform:translateX(-50%);perspective:900px;pointer-events:none}
  .lgv2-startup-fan__card{position:absolute;left:50%;bottom:0;width:74px;margin-left:-37px;aspect-ratio:2/3;border-radius:9px;overflow:hidden;
    border:1px solid rgba(226,196,132,.5);background:#2a1a22;box-shadow:0 10px 22px rgba(0,0,0,.5);
    transform:translateY(60px) rotate(0deg) scale(.6);opacity:0;transform-origin:50% 128%;will-change:transform,opacity}
  .lgv2-startup-fan__card img{width:100%;height:100%;object-fit:cover}
  .lgv2-startup-fan__card::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg,rgba(255,235,190,.24),transparent 46%)}

  /* Ouverture de l'éventail, carte par carte. */
  .lgv2-startup.is-fan .lgv2-startup-fan__card{
    opacity:1;
    transform:rotate(var(--spread)) translateY(calc(-6px - var(--lift))) scale(1);
    transition:transform .72s cubic-bezier(.16,.86,.24,1),opacity .34s ease;
    transition-delay:calc(var(--i) * 42ms)}

  /* Puis elles filent vers l'objectif et le dépassent. */
  .lgv2-startup.is-fan-rush .lgv2-startup-fan__card{
    opacity:0;
    transform:rotate(calc(var(--spread) * 2.4)) translate(calc(var(--offset) * 46px),-190px) scale(2.6);
    transition:transform .62s cubic-bezier(.5,0,.85,.4),opacity .5s ease-in;
    transition-delay:calc(var(--i) * 26ms)}

  /* --- Mouvement 3 : la frappe -------------------------------------- */
  /* Décalage réel de position, pas un filtre : le tremblement reste fluide. */
  .lgv2-startup.is-impact .lgv2-startup-world{animation:lgv2-startup-shake .42s cubic-bezier(.36,.07,.19,.97)}
  .lgv2-startup-flash{position:absolute;z-index:19;inset:0;pointer-events:none;opacity:0;
    background:radial-gradient(circle at 50% 36%,rgba(255,226,160,.55),rgba(255,180,90,.14) 38%,transparent 66%)}
  .lgv2-startup.is-impact .lgv2-startup-flash{animation:lgv2-startup-flash .46s ease-out}

  /* --- Le sceau ------------------------------------------------------ */
  .lgv2-startup-seal{position:absolute;z-index:26;left:50%;top:43%;width:min(56vw,226px);aspect-ratio:1;
    transform:translate(-50%,-50%) scale(2.3);opacity:0;pointer-events:none;
    transition:transform .46s cubic-bezier(.2,1.5,.4,1),opacity .3s ease}
  .lgv2-startup-seal img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 6px 18px rgba(0,0,0,.55))}
  .lgv2-startup-seal__ring{position:absolute;inset:-14%;border:2px solid rgba(226,196,132,.62);border-radius:50%;opacity:0;transform:scale(.6)}
  .lgv2-startup-seal__dust{position:absolute;inset:-30%;border-radius:50%;opacity:0;
    background:radial-gradient(circle,rgba(226,196,132,.3) 0,transparent 62%)}
  .lgv2-startup.is-seal .lgv2-startup-seal{opacity:1;transform:translate(-50%,-50%) scale(1)}
  .lgv2-startup.is-seal .lgv2-startup-seal__ring{animation:lgv2-startup-ring .9s .12s cubic-bezier(.2,.8,.3,1) forwards}
  .lgv2-startup.is-seal .lgv2-startup-seal__dust{animation:lgv2-startup-dust .8s .1s ease-out forwards}
  /* Le sceau se retire quand le titre prend sa place. */
  .lgv2-startup.is-title .lgv2-startup-seal{transform:translate(-50%,-116%) scale(.34);opacity:0;transition:transform .7s cubic-bezier(.2,.75,.2,1),opacity .7s ease}

  /* --- Le titre : il s'abat sur le sceau ----------------------------
     Le doré du titre vient d'un dégradé découpé sur le texte. Ce découpage
     ne fonctionne QUE sur l'élément qui porte le dégradé : découper le titre
     en plusieurs balises le rendrait invisible. L'entrée se fait donc sur le
     titre entier, en transform seul. */
  .lgv2-startup-brand h1{transform:scale(1.32);opacity:0;will-change:transform,opacity;
    transition:transform .82s cubic-bezier(.14,.92,.22,1),opacity .42s ease}
  .lgv2-startup.is-title .lgv2-startup-brand h1{transform:scale(1);opacity:1}
  .lgv2-startup-brand h1::after{transform:scaleX(0);transform-origin:50% 50%;transition:transform .7s .22s cubic-bezier(.2,.85,.25,1)}
  .lgv2-startup.is-title .lgv2-startup-brand h1::after{transform:scaleX(1)}

  @keyframes lgv2-startup-shake{
    0%{transform:translate(0,0) scale(1)}
    18%{transform:translate(-7px,4px) scale(1.012)}
    38%{transform:translate(6px,-3px) scale(1.008)}
    58%{transform:translate(-4px,2px) scale(1.005)}
    78%{transform:translate(3px,-1px) scale(1.002)}
    100%{transform:translate(0,0) scale(1)}}
  @keyframes lgv2-startup-flash{0%{opacity:0}12%{opacity:1}100%{opacity:0}}
  @keyframes lgv2-startup-ring{0%{opacity:.85;transform:scale(.6)}100%{opacity:0;transform:scale(1.5)}}
  @keyframes lgv2-startup-dust{0%{opacity:.9;transform:scale(.5)}100%{opacity:0;transform:scale(1.7)}}

  @keyframes lgv2-startup-twinkle{to{opacity:.24;transform:scale(.7)}}
  @keyframes lgv2-startup-cloud{to{transform:translateX(18%) scale(1.08);opacity:.11}}
  @keyframes lgv2-startup-mist{to{transform:translateX(14%);opacity:.1}}
  @keyframes lgv2-startup-fireglow{to{transform:translateX(-50%) scale(1.16);opacity:.62}}
  @keyframes lgv2-startup-flame{0%{transform:rotate(-4deg) scaleX(.94) scaleY(.97)}100%{transform:rotate(5deg) scaleX(1.05) scaleY(1.07)}}
  @keyframes lgv2-startup-core{to{opacity:.36;transform:translateX(-50%) scale(.82)}}
  @keyframes lgv2-startup-eyes{0%{opacity:0;transform:translateX(-50%) scaleY(.15)}8%{opacity:1;transform:translateX(-50%) scaleY(1.12)}16%,68%{opacity:1;transform:translateX(-50%) scaleY(1)}100%{opacity:0;transform:translateX(-50%) scaleY(.9)}}
  @keyframes lgv2-startup-title-shine{0%,28%{background-position:100% 0}72%,100%{background-position:0 0}}
  @keyframes lgv2-startup-exit{0%{opacity:1;filter:brightness(1)}100%{opacity:0;filter:brightness(1.22)}}
  @media(prefers-reduced-motion:reduce){
    .lgv2-startup-world,.lgv2-startup.is-live .lgv2-startup-world{transform:none!important;transition:none!important}
    .lgv2-startup-fan{display:none}
    .lgv2-startup-embers{display:none}
    .lgv2-startup.is-impact .lgv2-startup-world,.lgv2-startup.is-impact .lgv2-startup-flash{animation:none!important}
    .lgv2-startup-seal{transition:opacity .2s ease!important;transform:translate(-50%,-50%) scale(1)!important}
    .lgv2-startup.is-title .lgv2-startup-seal{transform:translate(-50%,-172%) scale(.42)!important}
    .lgv2-startup-seal__ring,.lgv2-startup-seal__dust{animation:none!important;opacity:0!important}
    .lgv2-startup-brand h1{transform:none!important;opacity:1!important;transition:none!important}
    .lgv2-startup-brand h1::after{transform:scaleX(1)!important;transition:none!important}
  }
}

@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(2.15rem,10vw,3.9rem)/.94 var(--serif);letter-spacing:.012em;white-space:nowrap}
  .lgv2-home p{display:flex;align-items:center;gap:9px;font:600 clamp(.72rem,3.1vw,.86rem)/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(.86rem,4.3vw,1.05rem)/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 .64rem/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:.8rem;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 .78rem/1.05 var(--serif);letter-spacing:.05em;text-transform:uppercase}
  .lgv2-resume__copy small{display:block;margin-top:2px;font-size:.6rem;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 .58rem/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(1.45rem,6.3vw,2rem)/.98 var(--serif);letter-spacing:.01em;white-space:nowrap}
  .lgv2-entry.is-join .lgv2-entry__heading h1{font-size:clamp(1.32rem,5.7vw,1.82rem)}
  .lgv2-entry__heading p{color:#806548;font:500 clamp(.79rem,3.5vw,.98rem)/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(.84rem,3.8vw,1rem)/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(.84rem,3.9vw,1rem);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 .93rem/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 .93rem/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 1.15rem/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 .79rem/1.05 var(--serif);color:#4d2e2a}.lgv2-mode-card small{font:400 .57rem/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 1.1rem/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 .66rem/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(.98rem,4.4vw,1.22rem)/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 .62rem/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:.85rem;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 .82rem/1.3 var(--sans)}
  .lgv2-sound-row small{color:#9b8874;font-size:.68rem}
  .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 .58rem/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 .68rem/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}.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 .53rem/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(1.35rem,6.2vw,1.8rem)/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:.62rem}.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 1.03rem/1 var(--serif)}.lgv2-room-count small{font-size:.45rem;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:#5d1b20;font:700 clamp(.94rem,4.5vw,1.18rem)/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:.56rem;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:#5d1b20;font:700 .88rem/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:.59rem}
  .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 .87rem/1 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lgv2-member__copy small{display:block;margin-top:3px;color:#5f4c40;font-size:.53rem}.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 .53rem/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:.59rem}.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(.82rem,4vw,1.05rem)/1 var(--serif)}.lgv2-launch span:nth-child(2) small{display:block;margin-top:3px;color:#eccd95;font-size:.52rem}.lgv2-launch>i{font-style:normal;color:#f2c976;font-size:17px}.lgv2-launch-reason{text-align:center;color:#63493a;font-size:.48rem;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 .72rem/1 var(--serif)}.lgv2-player-wait small{display:block;margin-top:3px;color:var(--muted);font-size:.52rem}@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:.44rem;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 .45rem/1 var(--serif);letter-spacing:.13em}.lgv2-auto-ready__copy>b{display:block;margin-top:4px;color:#551b20;font:800 .79rem/1 var(--serif)}.lgv2-auto-ready__copy>p{margin-top:4px;color:#5f4c40;font-size:.49rem;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 .61rem/1 var(--serif);letter-spacing:.04em}.lgv2-auto-ready>button small{font-size:.43rem;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 .44rem/1 var(--serif);letter-spacing:.14em}.lgv2-auto-ready.is-countdown>div:last-child>b{display:block;margin-top:4px;color:#fff4dc;font:800 .84rem/1 var(--serif)}.lgv2-auto-ready.is-countdown>div:last-child>p{margin-top:4px;color:#dfc7a7;font-size:.49rem;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 1.32rem/.9 var(--serif);font-variant-numeric:tabular-nums}.lgv2-auto-ready__orb small{margin-top:3px;color:#e6c27f;font-size:.32rem;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:.48rem}
  @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 .92rem/1 var(--serif);color:#5d1b20}.lgv2-tab-heading p{margin-top:3px;color:var(--muted);font-size:.56rem}
  .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 .77rem/1 var(--serif)}.lgv2-setting-list small{display:block;margin-top:3px;color:var(--muted);font-size:.55rem}
  .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 1.25rem/1 var(--serif);color:var(--wine)}.lgv2-placeholder-tab p{margin-top:6px;max-width:280px;color:var(--muted);font-size:.66rem;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 1.28rem/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 .69rem/1 var(--sans);box-shadow:0 3px 7px rgba(85,8,26,.26)}
  .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 1rem/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-y:auto;overflow-x:clip;scrollbar-width:none;overscroll-behavior:contain}.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(.62rem,2.6vw,.82rem)/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(.43rem,1.75vw,.55rem)/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(.4rem,1.6vw,.49rem);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 .68rem/1 var(--serif);color:#4c332b}.lgv2-player-pop-floating small{font-size:.55rem;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 .52rem/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 .96rem/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:.54rem;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 .66rem/1 var(--serif);letter-spacing:.055em}.lgv2-mayor-launch>em{font-style:normal;font-size:.5rem;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:.48rem;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 .9rem/1 var(--serif)}.lgv2-mayor-phase-head>strong i{font-style:normal;color:#b69a72;font-size:.58rem}
  .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 .45rem/1 var(--sans)}.lgv2-mayor-candidate>b{width:54px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:700 .51rem/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 .52rem/1 var(--serif)}
  .lgv2-mayor-status,.lgv2-mayor-notice{margin:0;text-align:center;font-size:.5rem;line-height:1.3;color:#8f7a69}.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 1.06rem/1 var(--serif);letter-spacing:.04em;color:var(--wine)}.lgv2-mayor-player-head p{margin:2px 0 0;font-size:.56rem;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 .62rem/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;inset:0;display:grid;place-items:center;font-size:.42rem;font-weight:850;color:#fff7e8;text-shadow:0 1px 2px rgba(72,28,25,.28)}
  @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:.44rem}.lgv2-circle-stage.is-very-crowded .lgv2-circle-player>b{width:38px;max-width:38px;font-size:.4rem}.lgv2-mayor-stage{padding-inline:8px}.lgv2-mayor-player-head h2{font-size:.96rem}.lgv2-mayor-candidate-btn{min-width:210px}.lgv2-mayor-host-copy h2,.lgv2-mayor-phase-head h2{font-size:.88rem}}
}
@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:.68rem;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:.68rem}
}

@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:.53rem}
    .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:.91rem}.lgv2-village-title__count{padding-inline:6px;font-size:.51rem}.lgv2-bottom-nav button span{font-size:.4rem}.lgv2-member{grid-template-columns:38px minmax(0,1fr) auto}.lgv2-member__avatar{width:36px;height:36px}.lgv2-member__copy b{font-size:.82rem}.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:2.15rem}.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:1.42rem}.lgv2-entry.is-join .lgv2-entry__heading h1{font-size:1.28rem}.lgv2-entry__heading p{font-size:.76rem}.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:.72rem}.lgv2-mode-card small{font-size:.5rem}.lgv2-entry-submit{min-height:45px}.lgv2-code-cells input{height:40px}.lgv2-consent{font-size:.61rem}.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:.46rem}.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:1.9rem}.lgv2-home p{font-size:.76rem}.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:1.25rem}.lgv2-entry.is-join .lgv2-entry__heading h1{font-size:1.15rem}.lgv2-entry__heading p{font-size:.7rem}.lgv2-entry__form{gap:3px}.lgv2-entry-field{gap:3px}.lgv2-entry-field>span,.lgv2-entry-field>legend{font-size:.76rem}.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:.66rem}.lgv2-mode-card small{font-size:.46rem}.lgv2-consent{font-size:.56rem}.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 1.28rem/1 var(--serif);letter-spacing:.06em;color:var(--wine)}
.lgv2-settings-hero>small{font:700 .55rem/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:.44rem;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 .68rem/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 .72rem/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:.53rem;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 .58rem/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:.6rem;letter-spacing:.06em}
.lgv2-setting-step-card.is-column .lgv2-setting-card__copy small{font-size:.44rem;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:1.05rem;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 .82rem/1 var(--serif);color:#40251c}
.lgv2-game-stepper em{font-style:normal;font-size:.46rem;color:#8a6c4d}
.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(.9rem,4.6vw,1.12rem)/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:.52rem;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:1rem}
  .lgv2-settings-hero>small{font-size:.48rem}
  .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:.64rem}
  .lgv2-setting-card__copy small{font-size:.48rem}
  .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:.6rem}
  .lgv2-settings-launch{min-height:46px}
  .lgv2-settings-launch b{font-size:.86rem}
}
/* 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 .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 .56rem/1 var(--serif);letter-spacing:.22em;color:#d9b56e}
.lgv2-reveal-head h1{margin:0;font:700 clamp(1.35rem,5.4vw,1.85rem)/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:.66rem;line-height:1.35;color:#d8c6b5}
.lgv2-reveal-stage{position:relative;z-index:3;width:100%;height:100%;min-height:0;display:grid;place-items:center;perspective:1200px}
.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 1.03rem/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:.52rem;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 .8rem/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:.52rem;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 1.18rem/1 var(--serif);color:#ffe1aa}
.lgv2-reveal-roletext p{margin:0;max-width:320px;font-size:.58rem;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 .7rem/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:1.22rem}.lgv2-reveal-head p{font-size:.58rem}
  .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:.52rem}
}
@media (max-width:370px){.lgv2-reveal-card{width:min(66vw,245px)}.lgv2-reveal-head h1{font-size:1.25rem}}
@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}
.lgv2-role-cinematic.is-revealed .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 .47rem/1 var(--serif);letter-spacing:.17em;color:#bda078}.lgv2-pack-heading b{font:700 .67rem/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)}
.lgv2-role-cinematic.is-revealed .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 .54rem/1 var(--serif);color:#ffe4b8}.lgv2-pack-member small{font-size:.41rem;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)}
.lgv2-role-cinematic.is-revealed .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 .51rem/1.1 var(--serif);letter-spacing:.055em;color:#f4cf8a}.lgv2-pack-strength small{font-size:.43rem;line-height:1.25;color:#bda996}.lgv2-pack-solo{margin:0;text-align:center;font-size:.48rem;line-height:1.35;color:#bda996}
@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 .72rem/1.6 var(--sans);letter-spacing:.34em;
  text-transform:uppercase;color:#e0c491;text-indent:.34em}
.lgv2-intro-cue.is-two{font:400 1.02rem/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 .5rem/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(2rem,10.5vw,3rem)/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 .58rem/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 .58rem/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(1.7rem,9vw,2.3rem)}
  .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 .49rem/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 .92rem/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:.51rem;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 .45rem/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:102px;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-candidate-pop{position:absolute;z-index:30;left:50%;top:calc(100% + 7px);width:154px;transform:translateX(-50%);padding:5px;border:1px solid #cba56c;border-radius:12px;background:#fff9ef;box-shadow:0 12px 28px rgba(70,36,23,.18)}.lgv2-candidate-pop button{width:100%;min-height:34px;border:0;border-radius:9px;background:linear-gradient(135deg,#751129,#971832);color:#fff1d5;display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 8px;font:800 .46rem/1.14 var(--serif);letter-spacing:.025em;cursor:pointer;white-space:normal;text-align:center}.lgv2-candidate-pop svg{width:13px;height:13px;fill:currentColor;color:#edc36e}
  .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:.49rem;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(.44rem,1.9vw,.51rem)/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;justify-items:center;text-align:center;gap:3px;padding:3px 5px 1px}.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:1.03rem;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{justify-self:center;position:relative;min-width:222px;min-height:43px;border:1px solid #bd894d;border-radius:14px;background:linear-gradient(135deg,#78142d,#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 .6rem/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 .49rem/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:linear-gradient(#fff8e9,#ead6b8);border:1px solid #cfaa72;color:var(--wine)}.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 .83rem/1 var(--serif)}.lgv2-ballot-head>strong i{font-style:normal;font-size:.5rem;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:.42rem;font-weight:850;letter-spacing:.08em;color:#a27c50}.lgv2-current-voter b{font:750 .66rem/1 var(--serif);color:#56332f}.lgv2-current-voter em{font-style:normal;padding:5px 7px;border-radius:999px;background:#efe1ce;color:#816d5c;font-size:.4rem;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 .48rem/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 .47rem/1 var(--sans)}.lgv2-ballot-candidate h3{max-width:100%;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#542f2c;font:750 .61rem/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:.37rem;color:#6b5749}.lgv2-ballot-voters.is-empty{align-items:center}.lgv2-ballot-voters.is-empty small{font-size:.38rem;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 .43rem/1 var(--serif);letter-spacing:.11em;color:#a2743c}.lgv2-vote-confirm>b{font:750 .72rem/1 var(--serif);color:var(--wine)}.lgv2-vote-confirm>p{margin:0;font-size:.44rem;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 .44rem/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:.51rem}
  .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 .51rem/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:#78142d;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 1.28rem/1 var(--serif)}.lgv2-election-result>p{margin:0;color:#8b7667;font-size:.55rem}.lgv2-winner-avatar{width:66px;height:66px;border-radius:50%;padding:3px;background:linear-gradient(145deg,#d8b36f,#78142d);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 .44rem/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:.82rem}.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 .42rem/1 var(--serif);letter-spacing:.11em;color:#7a5626}.lgv2-role-manager-head h1{margin:2px 0 0;color:var(--wine);font:800 1.08rem/1 var(--serif);letter-spacing:.05em}.lgv2-role-manager-head p{margin:3px 0 0;color:#5f4c40;font-size:.5rem;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 .52rem/1 var(--sans);box-shadow:0 3px 7px rgba(92,11,30,.2)}
  .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 1rem/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:.47rem;color:#63493a}.lgv2-role-manager-foot b{font:700 .5rem/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(1) saturate(.2) brightness(.58);opacity:.72}.lgv2-circle-player.is-dead .lgv2-circle-avatar{cursor:default!important;filter:drop-shadow(0 4px 8px rgba(25,21,24,.18))}.lgv2-circle-player.is-dead>b{text-decoration:line-through;text-decoration-thickness:1px}
  .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(.72rem,3.3vw,1.05rem);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 .52rem/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 .42rem/1 var(--serif);letter-spacing:.11em;color:#a27243}.lgv2-day-panel>header h2,.lgv2-day-panel>h2{margin:0;color:#74152a;font:800 .88rem/1.05 var(--serif)}.lgv2-day-panel>header p,.lgv2-day-panel>p{margin:0;color:#887567;font-size:.5rem;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 .55rem/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:#f4e8d2!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 .55rem/1 var(--serif);color:#82192d}.lgv2-day-rule-alert small{font-size:.47rem;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 .38rem/1 var(--sans);letter-spacing:.08em;color:#d6b98d}.lgv2-day-primary>span>b,.lgv2-day-primary>span:not(:has(b)){font:800 clamp(.47rem,2vw,.56rem)/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 1rem/1 var(--sans);font-style:normal}.lgv2-direction-choice b{font:800 .48rem/1 var(--serif);color:#78172c}.lgv2-direction-choice small{font-size:.42rem;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 .66rem/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 .75rem/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 .4rem/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:.43rem;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(.42rem,1.8vw,.48rem)/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 .49rem/1 var(--serif)}.lgv2-second-request small{font-size:.4rem;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:.45rem!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 .4rem/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 .51rem/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 .37rem/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 .43rem/1 var(--serif)}.lgv2-second-history em{font:800 .31rem/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-public-vote-history{position:relative;z-index:1;display:grid;gap:4px;max-height:92px;overflow:hidden}.lgv2-public-vote-feed{position:relative;z-index:1;margin:0!important;min-height:31px;padding:4px 7px;border:1px solid rgba(236,204,142,.32);border-radius:10px;background:rgba(30,15,12,.62);display:flex;align-items:center;justify-content:center;gap:5px!important;font-size:.43rem!important;color:#e8dac2!important}.lgv2-public-vote-feed.is-latest{border-color:rgba(240,208,150,.6);background:rgba(124,20,45,.55);animation:lgv2-vote-feed-in .35s ease both}.lgv2-public-vote-feed img{width:23px;height:23px;border-radius:50%;object-fit:cover}.lgv2-public-vote-feed b{color:#f7d9a4;font:700 .45rem/1 var(--serif)}.lgv2-public-vote-feed.is-empty{justify-content:center}.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:.43rem!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 .46rem/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 .4rem/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 .46rem/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 .49rem/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 .48rem/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:.46rem}.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:.78rem}.lgv2-direction-choice{gap:5px}.lgv2-direction-choice button{min-height:68px;padding:6px}.lgv2-direction-choice small{font-size:.38rem}.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}.lgv2-public-vote-history{max-height:78px}}
  @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}.lgv2-public-vote-history{max-height:68px}}
  @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,.lgv2-public-vote-feed.is-latest{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:.4rem;letter-spacing:.08em;color:#cdbbba}.lgv2-night-start b{font:800 .58rem/1 var(--serif);letter-spacing:.04em}.lgv2-night-start>svg:last-child{width:14px}.lgv2-night-await{margin:6px 0 0!important;font-size:.48rem!important;color:#e6d8c0!important}
.lgv2-night-cinematic,.lgv2-dawn-cinematic{position:relative;isolation:isolate;overflow:hidden;height:100%;min-height:0;display:grid;place-items:center;padding:calc(16px + env(safe-area-inset-top)) 16px calc(18px + env(safe-area-inset-bottom));text-align:center}
.lgv2-night-cinematic{background:radial-gradient(ellipse at 50% 22%,#23345c 0%,#121d38 30%,#080e1f 62%,#04070f 100%);color:#eef2ff}
  /* LA NUIT QUI TOMBE.
     Auparavant, la scène nocturne apparaissait simplement en fondu : rien ne
     « tombait ». On empile ici un ciel de crépuscule, plus clair et plus chaud,
     qui s'efface pour laisser apparaître la nuit profonde déjà posée en fond.
     Un fondu croisé de deux couches est le seul moyen d'animer un dégradé de
     façon fluide : la propriété `background` elle-même n'est pas interpolable. */
  .lgv2-night-dusk{position:absolute;inset:0;z-index:0;pointer-events:none;opacity:1;
    background:linear-gradient(180deg,#1e3163 0%,#3d4a83 18%,#7a5f8e 40%,#c07a72 62%,#e39a63 80%,#f0b16a 100%);
    transition:opacity 3.4s cubic-bezier(.35,0,.3,1)}
  .lgv2-night-cinematic.is-live .lgv2-night-dusk{opacity:0}
  /* Et une ombre qui descend réellement du haut de l'écran. */
.lgv2-night-sky,.lgv2-dawn-sky{position:absolute;inset:0;overflow:hidden;z-index:-1}
  /* Même principe à l'envers : la nuit est posée par-dessus l'aube et se retire,
     au lieu d'une scène de jour qui apparaîtrait d'un coup. */
  .lgv2-dawn-night{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:1;
    background:linear-gradient(180deg,#070b16 0%,#0c1429 34%,#172441 68%,#2f3f66 100%);
    transition:opacity 3.6s cubic-bezier(.35,0,.3,1)}
  .lgv2-dawn-cinematic.is-live .lgv2-dawn-night{opacity:0}.lgv2-night-stars{position:absolute;inset:0}.lgv2-night-stars i{position:absolute;left:var(--x);top:var(--y);width:2px;height:2px;border-radius:50%;background:#fff;opacity:.13;box-shadow:0 0 8px rgba(223,231,255,.9);animation:lgv2-star-twinkle calc(2.2s + var(--s)*.08s) ease-in-out infinite alternate}.lgv2-night-moon-halo{position:absolute;left:50%;top:8%;width:min(58vw,270px);aspect-ratio:1;border-radius:50%;transform:translateX(-50%);background:radial-gradient(circle,rgba(207,220,255,.2),rgba(130,155,210,.07) 44%,transparent 70%);filter:blur(2px);opacity:0;transition:1.25s ease}.lgv2-night-cinematic.is-live .lgv2-night-moon-halo{opacity:1}.lgv2-night-moon{position:absolute;left:50%;top:15%;width:min(31vw,142px);aspect-ratio:1;border-radius:50%;transform:translate(-50%,64%) scale(.8);background:url('../images/moon.webp') center/contain no-repeat;box-shadow:0 0 30px rgba(236,242,255,.36),0 0 80px rgba(198,214,255,.24),0 0 180px rgba(120,150,220,.2);opacity:0;transition:opacity 1.6s .9s ease,transform 3.2s .5s cubic-bezier(.18,.72,.2,1)}.lgv2-night-moon{filter:brightness(1.18) saturate(.9);animation:lgv2-moon-drift 90s ease-in-out infinite alternate}
  @keyframes lgv2-moon-drift{from{filter:brightness(1.18) saturate(.9)}to{filter:brightness(1.3) saturate(.95)}}.lgv2-night-cinematic.is-live .lgv2-night-moon{opacity:1;transform:translate(-50%,0) scale(1)}.lgv2-night-cloud{position:absolute;width:78%;height:74px;border-radius:50%;filter:blur(20px);background:rgba(105,126,163,.13);opacity:.32}.lgv2-night-cloud.is-a{left:-26%;top:34%;animation:lgv2-cloud 15s linear infinite alternate}.lgv2-night-cloud.is-b{right:-30%;top:49%;animation:lgv2-cloud 19s linear infinite alternate-reverse}.lgv2-night-ridge{position:absolute;left:-8%;right:-8%;bottom:-3%;height:31%;clip-path:polygon(0 58%,9% 39%,18% 52%,29% 26%,38% 49%,49% 31%,61% 54%,72% 27%,82% 50%,91% 37%,100% 61%,100% 100%,0 100%)}.lgv2-night-ridge.is-back{bottom:5%;background:#10182c;opacity:.68;filter:blur(.3px)}.lgv2-night-ridge.is-front{background:linear-gradient(180deg,#0a1020,#060912);opacity:.92}.lgv2-night-mist{position:absolute;left:-25%;width:150%;height:68px;border-radius:50%;background:rgba(158,177,207,.07);filter:blur(24px)}.lgv2-night-mist.is-one{bottom:17%;animation:lgv2-mist-drift 12s ease-in-out infinite alternate}.lgv2-night-mist.is-two{bottom:7%;opacity:.7;animation:lgv2-mist-drift 17s ease-in-out infinite alternate-reverse}.lgv2-night-cinematic__copy{width:min(92%,390px);display:grid;justify-items:center;gap:8px;margin-top:22%;transform:translateY(18px);opacity:0;transition:.9s .35s ease}.lgv2-night-cinematic.is-live .lgv2-night-cinematic__copy{opacity:1;transform:none}.lgv2-night-cinematic__copy>span,.lgv2-dawn-cinematic__copy>span{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(229,199,128,.45);background:rgba(18,24,48,.62);box-shadow:0 0 0 7px rgba(230,205,151,.04),0 12px 30px rgba(0,0,0,.22)}.lgv2-night-cinematic__copy svg,.lgv2-dawn-cinematic__copy svg{width:28px;height:28px;fill:#e7c77f}.lgv2-night-cinematic__copy small,.lgv2-dawn-cinematic__copy small{font:800 .5rem/1 var(--serif);letter-spacing:.2em;color:#f7ead0;text-shadow:0 1px 3px rgba(30,20,30,.6)}.lgv2-night-cinematic__copy h1,.lgv2-dawn-cinematic__copy h1{margin:0;font:800 clamp(1.45rem,6vw,2rem)/1 var(--serif);letter-spacing:.035em}.lgv2-night-cinematic__copy p,.lgv2-dawn-cinematic__copy p{margin:0;max-width:330px;font-size:.66rem;line-height:1.45;color:#c5cada}.lgv2-night-cinematic__copy button,.lgv2-dawn-cinematic__copy button{margin-top:7px;min-height:42px;border:1px solid rgba(219,183,112,.62);border-radius:13px;background:rgba(112,25,58,.76);color:#fff0d2;padding:0 14px;display:flex;align-items:center;gap:7px;font:800 .5rem/1 var(--serif);letter-spacing:.04em}.lgv2-night-cinematic__copy button svg,.lgv2-dawn-cinematic__copy button svg{width:13px;height:13px}
.lgv2-dawn-cinematic{background:linear-gradient(180deg,#172441 0%,#53617e 28%,#bd6f67 52%,#eca36f 68%,#f7d49a 82%,#fff0ce 100%);color:#fff9ec}.lgv2-dawn-glow{position:absolute;left:50%;bottom:13%;width:min(86vw,430px);aspect-ratio:1;border-radius:50%;transform:translateX(-50%);background:radial-gradient(circle,rgba(255,229,164,.34),rgba(247,173,102,.11) 48%,transparent 70%);filter:blur(3px);opacity:.2;transition:1.3s ease}.lgv2-dawn-cinematic.is-live .lgv2-dawn-glow{opacity:1}.lgv2-dawn-sun{position:absolute;left:50%;bottom:14%;width:min(34vw,154px);aspect-ratio:1;border-radius:50%;transform:translate(-50%,34%) scale(.55);background:radial-gradient(circle,#fffde8 0 18%,#ffdc88 41%,#f4ad63 67%,rgba(238,156,88,.08) 68%);box-shadow:0 0 64px rgba(255,215,137,.45),0 0 140px rgba(255,168,93,.24);opacity:.18;transition:1.45s cubic-bezier(.2,.75,.2,1)}.lgv2-dawn-cinematic.is-live .lgv2-dawn-sun{opacity:1;transform:translate(-50%,-42%) scale(1)}.lgv2-dawn-rays{position:absolute;left:50%;bottom:12%;width:min(94vw,520px);aspect-ratio:1;transform:translateX(-50%);background:repeating-conic-gradient(from -16deg,rgba(255,225,157,.08) 0 6deg,transparent 6deg 18deg);mask-image:radial-gradient(circle,#000 0 55%,transparent 74%);opacity:0;transition:1.4s .3s ease}.lgv2-dawn-cinematic.is-live .lgv2-dawn-rays{opacity:.85}.lgv2-dawn-horizon{position:absolute;inset:auto 0 0;height:38%;background:linear-gradient(180deg,transparent,rgba(73,43,51,.24)),url('../images/village-hero.webp') center bottom/cover no-repeat;filter:brightness(.52) saturate(.78);opacity:.58}.lgv2-dawn-mist{position:absolute;left:-25%;width:150%;height:72px;border-radius:50%;filter:blur(23px);background:rgba(255,239,207,.16)}.lgv2-dawn-mist.is-one{bottom:19%;animation:lgv2-mist-drift 11s ease-in-out infinite alternate}.lgv2-dawn-mist.is-two{bottom:8%;opacity:.66;animation:lgv2-mist-drift 16s ease-in-out infinite alternate-reverse}.lgv2-dawn-cinematic__copy{width:min(92%,390px);display:grid;justify-items:center;gap:8px;padding:14px 12px;margin-top:6%;border-radius:26px;background:radial-gradient(ellipse 130% 105% at 50% 42%,rgba(30,16,24,.46),rgba(30,16,24,0) 76%);opacity:0;transform:translateY(20px);transition:.9s .35s ease;text-shadow:0 1px 4px rgba(24,12,18,.65)}.lgv2-dawn-cinematic.is-live .lgv2-dawn-cinematic__copy{opacity:1;transform:none}.lgv2-dawn-cinematic__copy>span{background:rgba(99,55,66,.45)}.lgv2-dawn-cinematic__copy>b{font:800 .74rem/1 var(--serif);letter-spacing:.16em;color:#fff2cf}.lgv2-dawn-cinematic__copy p{color:#fff4e3}.lgv2-dawn-cinematic__copy button{background:rgba(118,29,52,.85)}
.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 .47rem/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 rgba(206,180,126,.48);border-radius:20px;background:linear-gradient(180deg,rgba(28,35,58,.97),rgba(18,24,43,.98));box-shadow:0 12px 28px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.03);color:#eee8df;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 rgba(204,176,119,.5);background:rgba(98,43,64,.38);color:#e5c57d}.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 .43rem/1 var(--serif);letter-spacing:.11em;color:#c9aa73}.lgv2-night-panel header h2,.lgv2-morning-panel h2{margin:0;font:800 .9rem/1.05 var(--serif);color:#fff0d6}.lgv2-night-panel header p,.lgv2-morning-panel p{margin:0;font-size:.52rem;line-height:1.35;color:#aaaebd}.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:.39rem;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(.46rem,1.9vw,.53rem)/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:.48rem;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 .76rem/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:.47rem;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 .9rem/1 var(--serif);color:#f0e5d5}.lgv2-night-panel.is-sleeping p{margin:0;max-width:300px;font-size:.5rem;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 .68rem/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 .43rem/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 .38rem/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:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#941f3b;border:2px solid #f0d08c;color:#fff;font:800 .55rem/1 var(--sans);font-style:normal}.lgv2-witch-question{display:grid;gap:6px}.lgv2-witch-question>small{text-align:center;font:800 .4rem/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(.4rem,1.8vw,.47rem)/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 .52rem/1 var(--serif);color:#eee1d0}.lgv2-witch-summary small{font-size:.36rem;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 .36rem/1 var(--serif);letter-spacing:.08em;color:#c09a64}.lgv2-wolf-own-choice b{font:800 .58rem/1 var(--serif);color:#f1e0cf}.lgv2-wolf-own-choice em{font-size:.38rem;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 .55rem/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 .45rem/1.1 var(--serif);color:#ead6ba}.lgv2-wolf-instruction small{font-size:.38rem;line-height:1.25;color:#9fa3b0}.lgv2-wolf-majority{margin:0;text-align:center;color:#aca9b3;font-size:.43rem}.lgv2-wolf-majority b{color:#efc675;font-size:.62rem}.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:.4rem;letter-spacing:.08em;color:#ae98d6}.lgv2-seer-card b{font:800 .74rem/1 var(--serif);color:#f2e9ff}.lgv2-seer-card p{margin:0;font-size:.47rem;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 .65rem/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-star-twinkle{to{opacity:.7;transform:scale(1.7)}}@keyframes lgv2-cloud{to{transform:translateX(34%)}}@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)}}@keyframes lgv2-mist-drift{to{transform:translateX(14%) scaleX(1.05)}}
@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:.8rem}.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}.lgv2-night-cinematic__copy h1,.lgv2-dawn-cinematic__copy h1{font-size:1.45rem}}
@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}.lgv2-night-cinematic__copy,.lgv2-dawn-cinematic__copy{gap:5px}.lgv2-night-cinematic__copy>span,.lgv2-dawn-cinematic__copy>span{width:48px;height:48px}}
@media(prefers-reduced-motion:reduce){.lgv2-night-start::before,.lgv2-night-stars i,.lgv2-night-cloud,.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}.lgv2-night-moon,.lgv2-dawn-sun,.lgv2-night-cinematic__copy,.lgv2-dawn-cinematic__copy{transition-duration:.1s!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 .39rem/1 var(--serif);letter-spacing:.11em;color:#a27843}.lgv2-custom-role-editor b{display:block;margin-top:3px;color:#6f1b2f;font:750 .57rem/1 var(--serif)}.lgv2-custom-role-editor p{margin-top:3px;color:#8a7868;font-size:.41rem;line-height:1.25}.lgv2-custom-role-editor label{display:grid;gap:3px;color:#816d5d;font-size:.4rem;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:.48rem}.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:#78142d;color:#f0c571;font-size:1.05rem}.lgv2-role-channel>header small{font:850 .39rem/1 var(--serif);letter-spacing:.11em;color:#a27642}.lgv2-role-channel>header h3{margin:3px 0 0;color:#6e152a;font:800 .72rem/1 var(--serif)}.lgv2-role-channel>header p{margin:3px 0 0;color:#8b796a;font-size:.43rem}.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 .43rem/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:.36rem;font-weight:850;opacity:.72}.lgv2-role-channel-feed p{font-size:.47rem;line-height:1.3}.lgv2-role-channel-empty{margin:auto;text-align:center;color:#9a8878;font-size:.46rem}.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:.48rem}.lgv2-role-channel-compose button{width:34px;height:34px;border:1px solid #a46c45;border-radius:10px;background:#78142d;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:#78142d;color:#f0c571;font-size:.85rem}.lgv2-private-audio-mark svg{width:16px;height:16px}
  .lgv2-private-audio-body small{display:block;font:850 .36rem/1 var(--serif);letter-spacing:.11em;color:#a27642}
  .lgv2-private-audio-body b{display:block;margin-top:3px;font:800 .5rem/1.15 var(--serif);color:#6e152a}
  .lgv2-private-audio button{min-height:28px;padding:0 11px;border:1px solid #a46c45;border-radius:9px;background:#78142d;color:#f7d68f;font:800 .42rem/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 .4rem/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:.38rem;font-weight:850;letter-spacing:.08em;color:#c5a871}.lgv2-role-private-result b{display:block;margin-top:2px;color:#fff0d6;font:750 .58rem/1 var(--serif)}.lgv2-role-private-result p{margin-top:3px;color:#aaaab5;font-size:.43rem;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:1.2rem;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 .53rem/1 var(--serif)}.lgv2-camp-choice small{font-size:.38rem;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 .48rem/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 .46rem/1.15 var(--serif);color:#e7ddd4}.lgv2-role-guess label{display:grid;gap:3px;font-size:.38rem;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:.43rem;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 .41rem/1 var(--serif);color:#eee3d8}.lgv2-night-picked>small{font-size:.42rem;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 .41rem/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:.38rem}.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:1.08rem;border:1px solid #c79a5b}.lgv2-role-interrupt>small,.lgv2-role-gameover>small{font:850 .41rem/1 var(--serif);letter-spacing:.12em;color:#a06f3d}.lgv2-role-interrupt h2,.lgv2-role-gameover h2{margin:0;color:#72152a;font:800 .86rem/1.05 var(--serif)}.lgv2-role-interrupt p,.lgv2-role-gameover p{max-width:315px;color:#887568;font-size:.48rem;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 .5rem/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:1.02rem}.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 .36rem/1 var(--serif);letter-spacing:.08em;color:#a27241}.lgv2-dictator-power b{display:block;margin-top:2px;color:#71162a;font:750 .52rem/1 var(--serif)}.lgv2-dictator-power p{margin-top:2px;color:#8a7767;font-size:.39rem;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 .38rem/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:.4rem}

  .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:3.8rem;filter:drop-shadow(0 0 20px rgba(166,31,55,.6));animation:lgv2DeathPulse 2s ease-in-out infinite}.lgv2-death-cinematic>small{font-size:.68rem;letter-spacing:.18em;color:#cba879}.lgv2-death-cinematic h1{font:800 clamp(2rem,10vw,3.4rem)/.95 var(--serif);color:#efe0c9;text-shadow:0 5px 24px #000}.lgv2-death-cinematic p{max-width:330px;color:#c9b7aa;font-size:.82rem}.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:.5rem;color:#a98e72}.lgv2-death-role b{font:700 .88rem/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 .8rem/1 var(--serif);letter-spacing:.06em}.lgv2-death-grave small{display:block;margin-top:5px;color:#c7b9ae;font-size:.62rem}@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)}}
.lgv2-grave-fab{position:fixed;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:95;display:flex;align-items:center;gap:7px;min-height:40px;padding:0 12px;border:1px solid #7d3141;border-radius:999px;background:linear-gradient(180deg,#5e1426,#3c0d19);color:#f4dfcf;box-shadow:0 10px 24px rgba(29,6,12,.28)}.lgv2-grave-fab span{font-size:1rem}.lgv2-grave-fab b{font:800 .62rem/1 var(--serif);letter-spacing:.06em}.lgv2-grave-fab em{min-width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:#d0a05c;color:#351016;font-size:.5rem;font-style:normal}.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:1px solid #7f4150;border-radius:22px;background:linear-gradient(180deg,#24151c,#180f15);box-shadow:0 20px 54px rgba(15,4,9,.45);overflow:hidden;color:#f3e7db;animation:lgv2GraveUp .28s 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(222,181,128,.16);background:rgba(99,26,43,.22)}.lgv2-grave-drawer header>span{font-size:1.35rem}.lgv2-grave-drawer header small{display:block;color:#b88e7d;font-size:.48rem;letter-spacing:.13em}.lgv2-grave-drawer header h3{margin:2px 0 0;font:800 .9rem/1 var(--serif)}.lgv2-grave-drawer header button{border:0;background:transparent;color:#d9bdb1;font-size:1.35rem}.lgv2-grave-members{display:flex;gap:6px;padding:7px 10px;overflow:auto;border-bottom:1px solid rgba(222,181,128,.09)}.lgv2-grave-members span{display:flex;align-items:center;gap:5px;flex:0 0 auto;padding:4px 7px;border-radius:999px;background:rgba(255,255,255,.05)}.lgv2-grave-members img{width:23px;height:23px;border-radius:50%;object-fit:cover;filter:grayscale(.55)}.lgv2-grave-members b{font-size:.52rem}.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:#34222a;border:1px solid rgba(255,255,255,.05);animation:lgv2MessageIn .22s ease-out}.lgv2-grave-feed article.is-me{align-self:flex-end;border-radius:14px 14px 4px 14px;background:#641d31}.lgv2-grave-feed article small{display:block;margin-bottom:3px;color:#d1a997;font-size:.46rem}.lgv2-grave-feed article p{margin:0;color:#fff4eb;font-size:.67rem;line-height:1.3}.lgv2-grave-empty{margin:auto;color:#8f7772;font-size:.65rem}.lgv2-grave-typing{display:flex;align-items:center;gap:4px;color:#b9a09a;font-size:.54rem}.lgv2-grave-typing i{width:5px;height:5px;border-radius:50%;background:#c6a26e;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:1fr 42px;gap:7px;padding:8px 9px;background:#130c11;border-top:1px solid rgba(222,181,128,.12)}.lgv2-grave-compose input{min-width:0;height:40px;padding:0 13px;border:1px solid #5a3a44;border-radius:999px;background:#281a21;color:#fff4eb;outline:none}.lgv2-grave-compose input:focus{border-color:#b78263;box-shadow:0 0 0 3px rgba(183,130,99,.12)}.lgv2-grave-compose button{border:0;border-radius:50%;background:#7a2038;color:#fff}.lgv2-grave-compose svg{width:18px;height:18px;fill:currentColor}@keyframes lgv2GraveUp{from{transform:translateY(18px);opacity:0}}@keyframes lgv2MessageIn{from{transform:translateY(5px);opacity:0}}@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:3rem;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(1.7rem,7vw,2.6rem)/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 .66rem/1 var(--serif);letter-spacing:.06em}@keyframes lgv2VictorySpin{to{transform:rotate(360deg)}}@keyframes lgv2VictoryMark{50%{transform:scale(1.08)}}

/* 4.4 production refinements */
.lgv2-player-settings-btn{position:absolute;z-index:32;top:calc(10px + env(safe-area-inset-top));left:12px;width:38px;height:38px;border:1px solid rgba(124,16,39,.2);border-radius:12px;background:rgba(255,252,244,.84);color:#7c1027;display:grid;place-items:center;box-shadow:0 5px 14px rgba(54,25,19,.09);cursor:pointer}.lgv2-player-settings-btn svg{width:19px;height:19px}.lgv2-circle-screen.is-night-mode .lgv2-player-settings-btn{background:rgba(20,14,26,.58);border-color:rgba(226,196,132,.38);color:#e8cf9a}
.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:.45rem;letter-spacing:.12em}.lgv2-avatar-panel header h3{margin:2px 0 0;font:800 .92rem/1 var(--serif);color:#5f1729}.lgv2-avatar-panel header p{margin-top:3px;color:#897567;font-size:.53rem}.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;inset:17%;z-index:12;display:grid;place-items:center;border-radius:50%;background:rgba(22,17,20,.7);color:#f1e5d9}.lgv2-avatar-dead svg{width:68%;height:68%}
.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:#5e1426;color:#e9bf82}.lgv2-death-killer svg{width:20px;height:20px}.lgv2-death-killer small{display:block;color:#b89885;font-size:.45rem;letter-spacing:.11em}.lgv2-death-killer b{display:block;margin-top:2px;color:#f1dcc8;font:750 .68rem/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-fab span{width:19px;height:19px;display:grid;place-items:center}.lgv2-grave-fab span svg{width:17px;height:17px}.lgv2-grave-fab em{padding-inline:4px;min-width:20px}.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 .45rem/1 var(--serif);letter-spacing:.14em;color:#a37743}.lgv2-communications-empty h3,.lgv2-call-status h3{font:800 1rem/1.05 var(--serif);color:#621a2a}.lgv2-communications-empty p,.lgv2-call-status p{max-width:320px;color:#817165;font-size:.62rem;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:.49rem}.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 .63rem/1 var(--serif)}.lgv2-call-metrics small{display:block;margin-top:3px;color:#8b796b;font-size:.43rem}
.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:1.22rem}.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;
    background:
      radial-gradient(circle at 50% 43%, rgba(153, 15, 48, .24), transparent 34%),
      linear-gradient(180deg, rgba(8, 10, 18, .78), rgba(8, 10, 18, .93));
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    animation: lgv2PreflightIn .24s ease-out both;
  }

  .lgv2-speech-preflight__halo {
    position: absolute;
    width: min(72vw, 310px);
    aspect-ratio: 1;
    border-radius: 50%;
    border: 1px solid rgba(220, 183, 102, .24);
    box-shadow:
      0 0 0 22px rgba(159, 15, 50, .06),
      0 0 80px rgba(159, 15, 50, .16),
      inset 0 0 60px rgba(222, 185, 105, .05);
    animation: lgv2PreflightHalo 1.8s ease-in-out infinite;
  }

  .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__content > span {
    width: 62px;
    height: 62px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    color: #f3d384;
    background: linear-gradient(145deg, #8d0d2d, #5e071e);
    border: 1px solid rgba(238, 202, 123, .72);
    box-shadow: 0 16px 40px rgba(0,0,0,.34), inset 0 0 18px rgba(255,255,255,.06);
    margin-bottom: 18px;
  }

  .lgv2-speech-preflight__content > span svg {
    width: 28px;
    height: 28px;
    fill: currentColor;
  }

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

  .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);
    animation: lgv2PreflightNumber .92s ease-in-out infinite;
  }

  .lgv2-speech-preflight__content b {
    max-width: 300px;
    font: 500 14px/1.5 ui-sans-serif, system-ui, sans-serif;
    color: rgba(247, 234, 208, .76);
  }

  .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(.96); opacity:.7; }
  50% { transform:scale(1.04); opacity:1; }
}
@keyframes lgv2PreflightNumber {
  0%,100% { transform:scale(.94); opacity:.82; }
  50% { transform:scale(1); opacity:1; }
}
@keyframes lgv2HearBars {
  from { transform:scaleY(.55); opacity:.7; }
  to { transform:scaleY(1); opacity:1; }
}

@media (prefers-reduced-motion: reduce) {
  .lgv2-speech-preflight,
  .lgv2-speech-preflight__halo,
  .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 .45rem/1 var(--sans);letter-spacing:.13em;color:#a07843}
.lgv2-saved-profile__copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:800 1.02rem/1.05 var(--serif);color:#4c2926}
.lgv2-saved-profile__copy em{font:500 .58rem/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 .57rem/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 .86rem/1 var(--serif);color:#4f211f}
.lgv2-avatar-picker__heading>small{max-width:58%;text-align:right;font:600 .5rem/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 .72rem/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 .45rem/1 var(--sans);letter-spacing:.13em;color:#9b7544}
.lgv2-profile-preferences>div b{font:800 .9rem/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 .66rem/1.1 var(--sans)}
.lgv2-pref-toggle>i{align-self:start;font:700 .53rem/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 .57rem/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:.46rem}
}
@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 .55rem/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 .58rem/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:rgba(20,14,26,.42);border:1px solid rgba(226,196,132,.22)}
  .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 .5rem/1 var(--sans);letter-spacing:.2em;color:#b39a72}
  .lgv2-hearroll header b{display:block;margin-top:4px;font:600 .84rem/1.25 var(--sans);color:#f2e6cf}
  .lgv2-hearroll header strong{font:700 .82rem/1 var(--sans);color:#e8cf9a;flex:none}
  .lgv2-hearroll.is-all{border-color:rgba(90,190,120,.45)}
  .lgv2-hearroll.is-all header strong{color:#7fd79a}
  .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,250,240,.05);font:500 .8rem/1.2 var(--sans);color:#e6dac6}
  .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:.66rem;color:#a8977e;flex:none}
  .lgv2-hear-mark{width:20px;height:20px;flex:none;display:grid;place-items:center;border-radius:50%;
    font-size:.62rem;background:rgba(255,255,255,.08)}
  .lgv2-hearroll-list li.is-heard{background:rgba(90,190,120,.12)}
  .lgv2-hearroll-list li.is-heard .lgv2-hear-mark{background:rgba(90,190,120,.3);color:#8fe0a8}
  .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:#7fd79a}

  /* --- Question posee a l'auditeur -------------------------------------- */
  .lgv2-hear-prompt{margin:12px 0 0;padding:13px;border-radius:14px;
    background:linear-gradient(178deg,rgba(38,22,44,.9),rgba(24,14,28,.9));
    border:1px solid rgba(226,196,132,.3)}
  .lgv2-hear-prompt>b{display:block;text-align:center;font:600 .92rem/1.3 var(--sans);color:#f6ecd8}
  .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 .68rem/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(177deg,#1f6b3a,#134526);border-color:rgba(140,220,165,.5);color:#dcf6e4}
  .lgv2-hear-choice .is-no{background:linear-gradient(177deg,#7c1f2a,#4d0f18);border-color:rgba(240,150,150,.45);color:#ffdede}
  .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 .84rem/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 .84rem/1.25 var(--sans);color:#f6dcae}
  .lgv2-hear-prompt.is-repairing small{display:block;margin-top:3px;font-size:.7rem;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 .6rem/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)}

  .lgv2-arena{position:absolute;left:50%;top:0;bottom:0;width:var(--pw);
    transform:translateX(-50%);z-index:0;overflow:hidden;pointer-events:none}
  .lgv2-arena__img{position:absolute;inset:0;opacity:0;
    background-size:100% auto;background-position:center top;background-repeat:no-repeat;
    transition:opacity 1.4s cubic-bezier(.35,0,.3,1)}
  .lgv2-arena__img.is-day{background-image:image-set(
    url('../images/arena-day-720.webp') 1x, url('../images/arena-day.webp') 2x)}
  .lgv2-arena__img.is-night{background-image:image-set(
    url('../images/arena-night-720.webp') 1x, url('../images/arena-night.webp') 2x)}
  .lgv2-arena.is-day .lgv2-arena__img.is-day{opacity:1}
  .lgv2-arena.is-night .lgv2-arena__img.is-night{opacity:1}

  /* --- 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 .6rem/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:.54rem;max-width:74px;padding:1px 5px}
  @media (max-width:360px){
    .lgv2-circle-stage.is-very-crowded .lgv2-circle-player > b{display:none}
  }
  @media(prefers-reduced-motion:reduce){.lgv2-arena__img{transition: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 .98rem/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 .56rem/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 .62rem/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 .72rem/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 .62rem/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 .72rem/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)}
  .lgv2-arena{position:absolute;left:50%;top:0;width:var(--aw);height:100%;
    transform:translateX(-50%);z-index:0;overflow:hidden;pointer-events:none}
  .lgv2-arena__img{position:absolute;inset:0;background-position:center top;
    background-size:100% auto;background-repeat:no-repeat;opacity:0;
    transition:opacity 1.2s ease}
  .lgv2-arena__img.is-day{background-image:image-set(
    url('../images/arena-day-720.webp') 1x, url('../images/arena-day.webp') 2x);
    background-color:#e0cfa8}
  .lgv2-arena__img.is-night{background-image:image-set(
    url('../images/arena-night-720.webp') 1x, url('../images/arena-night.webp') 2x);
    background-color:#cbb894}
  .lgv2-arena.is-day .lgv2-arena__img.is-day{opacity:1}
  .lgv2-arena.is-night .lgv2-arena__img.is-night{opacity:1}

  /* --- 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% + 3px);
    transform:translateX(-50%);
    width:max-content;max-width:96px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    padding:2px 8px;border-radius:8px;
    font:700 .62rem/1.15 var(--serif);letter-spacing:.01em}
  .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:.55rem;padding:1px 6px;max-width:74px}
  .lgv2-circle-stage.is-very-crowded .lgv2-circle-player > b{font-size:.5rem;max-width:62px}
}


@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)}

  .lgv2-arena{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
  .lgv2-arena__img{position:absolute;left:50%;top:0;width:var(--pw, min(100vw, 460px));height:100%;
    transform:translateX(-50%);
    background-position:center top;background-size:100% auto;background-repeat:no-repeat;
    opacity:0;transition:opacity 1.2s ease}
  .lgv2-arena__img.is-day{background-image:image-set(
    url('../images/arena-jour-720.webp') 1x, url('../images/arena-jour.webp') 2x)}
  .lgv2-arena__img.is-night{background-image:image-set(
    url('../images/arena-nuit-720.webp') 1x, url('../images/arena-nuit.webp') 2x)}
  .lgv2-arena.is-day .lgv2-arena__img.is-day{opacity:1}
  .lgv2-arena.is-night .lgv2-arena__img.is-night{opacity:1}

  /* --- 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 .62rem/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:.54rem;max-width:8ch;padding:1px 5px}
  @media (max-width:360px){
    .lgv2-circle-stage.is-very-crowded .lgv2-circle-player > b{display:none}
  }
}

@layer enhancements {
  /* Le conteneur .lgv2-arena se retrouvait a largeur nulle (ses enfants sont
     tous absolus), ce qui decalait l'illustration de 192 px vers la gauche.
     On ancre donc l'image a la fenetre elle-meme, et on rend le conteneur
     non-coupant pour qu'il ne la rogne pas. */
  .lgv2-arena{overflow:visible;width:100%;height:100%}
  .lgv2-arena__img{position:fixed;left:50%;top:0;
    width:min(100vw,460px);height:100dvh;
    transform:translateX(-50%);z-index:0;pointer-events: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;
}

/* --- 1. Fond de partie ----------------------------------------------
   L'illustration est posée DIRECTEMENT sur le conteneur du plateau : les
   couches intermédiaires (.lgv2-arena) se retrouvaient à largeur nulle.
   La teinte de complément est PRÉLEVÉE sur le bas de chaque illustration :
   la zone que l'image ne couvre pas devient invisible. */
.lgv2-circle-screen .lgv2-arena{display:none}

.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}

.lgv2-circle-screen .lgv2-circle-stage{
  background-image:url('../images/arena-jour-720.webp');
  background-position:center top;
  background-size:100% auto;
  background-repeat:no-repeat;
  background-color:#ddae75}
.lgv2-circle-screen.is-night-mode .lgv2-circle-stage{
  background-image:url('../images/arena-nuit-720.webp');
  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(.44rem,calc(.78rem - var(--count,8) * .012rem),.72rem);
  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:line-through;color:#5e5348;opacity:.85}
.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:.42rem}
}

/* --- 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}
.lgv2-sky-life i{position:absolute;border-radius:50%;filter:blur(18px);
  background:rgba(255,255,255,.5);animation:lgv2-drift linear infinite}
.lgv2-sky-life i:nth-child(1){left:-40%;top:12%;width:56%;height:13%;animation-duration:96s}
.lgv2-sky-life i:nth-child(2){left:-55%;top:26%;width:70%;height:10%;animation-duration:128s;animation-delay:-40s}
.lgv2-sky-life i:nth-child(3){left:-48%;top:4%;width:46%;height:9%;animation-duration:164s;animation-delay:-92s}
.lgv2-circle-screen.is-night-mode .lgv2-sky-life i{background:rgba(150,175,225,.24)}
@keyframes lgv2-drift{to{transform:translateX(240%)}}

.lgv2-sky-life b{position:absolute;left:50%;top:8%;width:52%;height:46%;
  transform:translateX(-50%);border-radius:50%;
  background:radial-gradient(ellipse,rgba(255,246,214,.24),transparent 68%);
  animation:lgv2-glow 11s ease-in-out infinite alternate}
.lgv2-circle-screen.is-night-mode .lgv2-sky-life b{
  background:radial-gradient(ellipse,rgba(198,220,255,.2),transparent 68%)}
@keyframes lgv2-glow{from{opacity:.55}to{opacity:1}}

.lgv2-sky-life u{position:absolute;left:38%;right:38%;top:34%;height:5%;
  border-radius:50%;background:rgba(255,255,255,.3);filter:blur(5px);
  animation:lgv2-shimmer 6.5s ease-in-out infinite alternate}
@keyframes lgv2-shimmer{from{opacity:.2;transform:scaleX(.9)}to{opacity:.6;transform:scaleX(1.05)}}

@media(prefers-reduced-motion:reduce){
  .lgv2-sky-life i,.lgv2-sky-life b,.lgv2-sky-life u{animation: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-circle-stage > section,
.lgv2-circle-screen .lgv2-day-panel,
.lgv2-circle-screen .lgv2-day-panel.is-morning,
.lgv2-circle-screen .lgv2-night-panel,
.lgv2-circle-screen .lgv2-morning-panel,
.lgv2-circle-screen .lgv2-mayor-panel,
.lgv2-circle-screen .lgv2-mayor-stage{
  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),
.lgv2-circle-screen .lgv2-day-wait,
.lgv2-circle-screen .lgv2-death-notice p,
.lgv2-circle-screen .lgv2-death-notice b{
  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)}

/* L'annonce de mort. */
.lgv2-death-notice{display:flex;align-items:center;justify-content:center;
  gap:14px;width:min(94%,400px);margin:18px auto 4px;padding:12px 16px}
.lgv2-death-notice img{width:52px;height:52px;flex:none;border-radius:50%;
  object-fit:cover;border:2px solid rgba(124,20,45,.55);
  box-shadow:0 6px 18px rgba(60,20,14,.34)}
.lgv2-death-notice p{margin:0;font-family:var(--serif);font-size:.94rem;line-height:1.35}
.lgv2-circle-screen .lgv2-death-notice strong{
  color:#ff8fa3!important;font-weight:800;font-size:1.12em;letter-spacing:.04em;
  text-shadow:0 1px 3px rgba(0,0,0,.9),0 0 10px rgba(0,0,0,.6)!important}

/* 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-grave-fab):not(.lgv2-circle-avatar):not(.lgv2-avatar-scrim):not(.lgv2-entry-avatar)){
  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):not(.lgv2-grave-fab)) b,
.lgv2-circle-screen button:where(:not(.lgv2-sound-toggle):not(.lgv2-player-settings-btn):not(.lgv2-grave-fab)) 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):not(.lgv2-grave-fab)) small{
  color:var(--lg-btn-or-texte)}
.lgv2-circle-screen button:where(:not(.lgv2-sound-toggle):not(.lgv2-player-settings-btn):not(.lgv2-grave-fab)) 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:.53rem;letter-spacing:.15em}
.lgv2 .lgv2-day-primary b,.lgv2 .lgv2-night-primary b,.lgv2 .lgv2-night-start b{
  font-size:.8rem;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, un même filet or.
   Le contraste ne dépend plus de ce que l'illustration place derrière. */
.lgv2-circle-screen .lgv2-night-live,
.lgv2-circle-screen .lgv2-wolf-own-choice,
.lgv2-circle-screen .lgv2-wolf-instruction,
.lgv2-circle-screen .lgv2-witch-victim,
.lgv2-circle-screen .lgv2-witch-summary,
.lgv2-circle-screen .lgv2-runoff-banner,
.lgv2-circle-screen .lgv2-public-vote-history,
.lgv2-circle-screen .lgv2-mayor-progress,
.lgv2-circle-screen .lgv2-second-decisions,
.lgv2-circle-screen .lgv2-day-speaker,
.lgv2-circle-screen .lgv2-morning-victim,
.lgv2-circle-screen .lgv2-day-wait{
  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;
}
.lgv2-circle-screen .lgv2-mayor-stage.is-player.is-open.is-premium-election::after{
  content:""!important;
  position:absolute;
  left:50%;top:-8px;
  width:17px;height:17px;
  transform:translateX(-50%) rotate(45deg);
  border:2px solid #c9a25d;
  background:#8f1834;
  box-shadow:0 0 0 4px #f6e7c9,0 4px 10px rgba(92,49,26,.18);
  z-index:2;
}
.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:#76152e!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:#8b1833!important;
  text-shadow:none!important;
  font:850 .82rem/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(.94rem,3.8vw,1.08rem)/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:.68rem!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(.78rem,3vw,.92rem)/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-candidate-btn.is-passed{
  background:linear-gradient(180deg,#66504c,#483734)!important;
  border-color:#bda98c!important;
}
.lgv2-circle-screen .lgv2-premium-secondary-actions{
  width:min(96%,390px);
  margin:auto;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:9px;
}
.lgv2-circle-screen .lgv2-premium-secondary-actions button{
  min-height:46px!important;
  padding:8px 9px!important;
  border:1px solid #c9a15b!important;
  border-radius:999px!important;
  background:linear-gradient(180deg,#fffdf7,#f3e3c3)!important;
  color:#68162d!important;
  box-shadow:0 5px 12px rgba(88,52,29,.10),inset 0 1px 0 #fff!important;
  text-shadow:none!important;
  font:800 clamp(.52rem,2.3vw,.62rem)/1.1 var(--serif)!important;
  letter-spacing:.02em!important;
}
.lgv2-circle-screen .lgv2-premium-secondary-actions button span{
  color:#68162d!important;text-shadow:none!important
}
.lgv2-circle-screen .lgv2-premium-secondary-actions button svg{
  width:20px!important;height:20px!important;color:#7a1831!important;fill:currentColor!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:.42rem!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:.53rem!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%,rgba(45,85,145,.34),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 #d7ae61!important;
  border-radius:50%!important;
  background:radial-gradient(circle at 35% 30%,#174f97,#0b3267 58%,#071d3d)!important;
  color:#f1d285!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 .78rem/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(1.02rem,4vw,1.22rem)/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:.61rem!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(204,167,95,.34);border-radius:14px;
  background:rgba(2,10,24,.30);
}
.lgv2-circle-screen .lgv2-premium-protector-status>strong{
  width:52px;height:34px;border-radius:999px;display:grid;place-items:center;
  background:#143f78;border:1px solid rgba(214,177,103,.55);
  color:#f6d98e;font:850 .75rem/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:#fff0d3!important;text-shadow:none!important;font:800 .66rem/1 var(--serif)
}
.lgv2-circle-screen .lgv2-premium-protector-status>span small{
  color:#b8c4d6!important;text-shadow:none!important;font-size:.4rem!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 #d6ad61!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(.95rem,4vw,1.12rem)/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 .57rem/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 .48rem/1 var(--serif);letter-spacing:.1em}
.lgv2-role-overview header h3{margin:4px 0 2px;color:#74152d;font:800 1rem/1 var(--serif)}
.lgv2-role-overview header p{margin:0;color:#756354;font-size:.52rem;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 .61rem/1 var(--serif);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lgv2-role-overview-card small{color:#77675c;font-size:.4rem;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 .46rem/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-secondary-actions{grid-template-columns:1fr 1fr;gap:6px}
  .lgv2-circle-screen .lgv2-premium-secondary-actions button{padding-inline:5px!important;font-size:.49rem!important}
  .lgv2-circle-screen .lgv2-premium-protector-head h2{font-size:.98rem!important}
  .lgv2-role-overview-grid{grid-template-columns:1fr}
}
@media(max-width:340px){
  .lgv2-circle-screen .lgv2-premium-secondary-actions{grid-template-columns:1fr}
  .lgv2-circle-screen .is-premium-election .lgv2-mayor-candidate-btn{min-height:58px!important;font-size:.72rem!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}
}
