.lgv3-app{
  --ivory:#fbf7f1;
  --ivory-2:#f7f0e8;
  --pearl:#fffdfb;
  --paper:#fffaf6;
  --ink:#26211f;
  --muted:#77706c;
  --g:#7b0f24;
  --g2:#941c34;
  --gd:#590818;
  --champ:#c7aa81;
  --champ-soft:#e6d8c4;
  --stone:#e4d8cd;
  --stone-2:#d7c8bb;
  --success:#587151;
  --serif:"Iowan Old Style","Palatino Linotype","Book Antiqua",Palatino,Georgia,"Times New Roman",serif;
  --sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  min-height:100svh;
  color:var(--ink);
  position:relative;
  font-family:var(--sans);
  background:transparent;
}
.lgv3-app *{box-sizing:border-box}
.lgv3-app button,.lgv3-app input,.lgv3-app select{font:inherit}
.lgv3-app button{touch-action:manipulation}
.lgv3-app svg{width:1.35em;height:1.35em;fill:currentColor;display:block}
.lgv3-boot{min-height:80svh;display:grid;place-content:center;text-align:center;color:var(--muted)}
.lgv3-spinner{width:34px;height:34px;border:3px solid var(--stone);border-top-color:var(--g);border-radius:50%;margin:auto;animation:lgv3-spin .8s linear infinite}
@keyframes lgv3-spin{to{transform:rotate(360deg)}}

.lgv3-screen{
  width:min(100%,760px);
  margin:0 auto;
  min-height:100svh;
  position:relative;
  padding:0 24px calc(42px + env(safe-area-inset-bottom));
}
.lgv3-screen--home{padding-bottom:calc(132px + env(safe-area-inset-bottom))}
.lgv3-screen--form{padding-top:env(safe-area-inset-top)}

/* HOME — faithful to the approved light/grenat mockup */
.lgv3-home-hero{margin:0 -24px;text-align:center;position:relative}
.lgv3-home-hero__art{
  height:300px;
  background:url('../images/village-hero.webp') center top/cover no-repeat;
  pointer-events:none;
}
.lgv3-home-hero__title-wrap{margin-top:-8px;padding:0 24px}
.lgv3-home-hero h1{
  margin:4px 0 0;
  color:var(--g);
  font:500 clamp(3.35rem,9vw,5.2rem)/.98 var(--serif);
  letter-spacing:.01em;
  text-shadow:0 1px 0 rgba(255,255,255,.8);
}
.lgv3-home-hero p{
  margin:21px 0 0;
  color:#4f4a47;
  font:400 clamp(1.15rem,3vw,1.42rem)/1.4 var(--serif);
}
.lgv3-ornament,.lgv3-sub-ornament{display:flex;align-items:center;justify-content:center;margin:0 auto;gap:11px}
.lgv3-ornament{width:min(360px,65%)}
.lgv3-ornament span,.lgv3-sub-ornament span{height:1px;flex:1}
.lgv3-ornament span:first-child{background:linear-gradient(90deg,transparent,var(--g))}
.lgv3-ornament span:last-child{background:linear-gradient(90deg,var(--g),transparent)}
.lgv3-ornament i{width:10px;height:10px;display:block;background:var(--g);transform:rotate(45deg)}
.lgv3-sub-ornament{width:168px;margin-top:20px;gap:8px}
.lgv3-sub-ornament span:first-child{background:linear-gradient(90deg,transparent,var(--champ))}
.lgv3-sub-ornament span:last-child{background:linear-gradient(90deg,var(--champ),transparent)}
.lgv3-sub-ornament i{width:8px;height:8px;background:var(--champ);transform:rotate(45deg)}

.lgv3-home-content{width:min(100%,640px);margin:42px auto 0}
.lgv3-home-actions{display:grid;gap:18px}
.lgv3-btn{
  width:100%;
  min-height:92px;
  border-radius:22px;
  border:1px solid rgba(123,15,36,.16);
  display:flex;
  align-items:center;
  gap:18px;
  padding:15px 22px;
  cursor:pointer;
  color:var(--g);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
  box-shadow:0 12px 30px rgba(77,48,37,.07),0 1px 1px rgba(255,255,255,.8) inset;
}
.lgv3-btn:hover{transform:translateY(-1px);box-shadow:0 16px 36px rgba(77,48,37,.10)}
.lgv3-btn:active{transform:translateY(0)}
.lgv3-btn:focus-visible{outline:3px solid rgba(123,15,36,.16);outline-offset:3px}
.lgv3-btn:disabled{opacity:.52;cursor:not-allowed;transform:none}
.lgv3-btn--primary{
  color:#fffaf5;
  border-color:#650b1c;
  background:
    radial-gradient(circle at 20% 0,rgba(255,255,255,.08),transparent 38%),
    linear-gradient(135deg,var(--g),var(--g2));
  box-shadow:0 14px 32px rgba(123,15,36,.19),0 0 0 2px rgba(89,8,24,.18) inset,0 1px 0 rgba(255,255,255,.18) inset;
}
.lgv3-btn--secondary{background:rgba(255,253,251,.94);border-color:#d8c4ac;color:var(--g)}
.lgv3-btn__icon{width:54px;height:54px;flex:0 0 54px;display:grid;place-items:center;border-radius:16px}
.lgv3-btn--primary .lgv3-btn__icon{border:1px solid rgba(255,245,234,.62);transform:rotate(45deg);border-radius:3px}
.lgv3-btn--primary .lgv3-btn__icon svg{transform:rotate(-45deg);width:25px;height:25px}
.lgv3-btn--secondary .lgv3-btn__icon{background:#fffaf4;color:var(--g)}
.lgv3-btn__label{font:500 clamp(1.28rem,3.7vw,1.7rem)/1.1 var(--serif);letter-spacing:.005em}
.lgv3-btn__arrow{margin-left:auto;display:grid;place-items:center}
.lgv3-btn__arrow svg{width:27px;height:27px}

.lgv3-resume{margin-top:42px}
.lgv3-section-title{display:flex;align-items:center;gap:11px;color:#393431;margin:0 4px 14px;font:500 1.24rem/1.2 var(--serif)}
.lgv3-section-title:after{content:"";height:1px;flex:1;margin-left:4px;background:linear-gradient(90deg,rgba(199,170,129,.75),transparent)}
.lgv3-section-title b{order:3;color:var(--muted);font:500 .9rem/1 var(--sans);margin-left:5px}
.lgv3-section-title__icon{color:var(--g);display:grid;place-items:center}
.lgv3-section-title__icon svg{width:25px;height:25px}
.lgv3-room-card{
  width:100%;
  border:1px solid rgba(123,15,36,.09);
  background:rgba(255,253,251,.95);
  border-radius:25px;
  padding:17px 18px;
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:17px;
  align-items:center;
  text-align:left;
  color:var(--ink);
  box-shadow:0 16px 38px rgba(71,45,36,.08);
  cursor:pointer;
}
.lgv3-room-card__seal,.lgv3-info-card__seal,.lgv3-lobby-card__seal{
  width:78px;height:78px;border-radius:24px;
  background:url('../images/village-seal.webp') center/cover no-repeat;
  border:1px solid rgba(199,170,129,.55);
  box-shadow:0 4px 12px rgba(75,51,41,.08);
}
.lgv3-room-card__copy strong{display:block;font:500 clamp(1.38rem,4vw,1.85rem)/1.1 var(--serif);color:#201d1b}
.lgv3-room-card__copy small{display:block;color:var(--muted);font-size:.93rem;margin-top:6px}
.lgv3-room-card__arrow{width:42px;height:42px;border-radius:50%;background:#faf2e9;color:var(--g);display:grid;place-items:center}
.lgv3-room-card__arrow svg{width:20px;height:20px}

.lgv3-bottom-nav{
  position:fixed;
  left:50%;transform:translateX(-50%);
  bottom:calc(10px + env(safe-area-inset-bottom));
  z-index:20;
  width:min(calc(100% - 24px),700px);
  display:grid;grid-template-columns:repeat(3,1fr);
  padding:12px 8px 10px;
  background:rgba(255,253,251,.96);
  border:1px solid rgba(123,15,36,.07);
  border-radius:28px;
  box-shadow:0 18px 48px rgba(64,42,34,.12);
  backdrop-filter:blur(18px);
}
.lgv3-bottom-nav button{background:none;border:0;color:#4d4743;display:grid;place-items:center;gap:7px;padding:6px 8px;min-height:60px;position:relative}
.lgv3-bottom-nav button+button:before{content:"";position:absolute;left:0;top:10%;height:80%;width:1px;background:#eee3d8}
.lgv3-bottom-nav button:first-child{color:var(--g)}
.lgv3-bottom-nav svg{width:28px;height:28px}
.lgv3-bottom-nav span{font-size:.83rem}

/* CREATE / JOIN */
.lgv3-back{
  position:absolute;z-index:8;
  left:24px;top:calc(18px + env(safe-area-inset-top));
  width:54px;height:54px;border-radius:17px;
  border:1px solid #dbcbbb;background:rgba(255,253,251,.96);color:var(--g);
  display:grid;place-items:center;box-shadow:0 8px 20px rgba(66,42,34,.08);cursor:pointer
}
.lgv3-back svg{width:28px;height:28px}
.lgv3-form-hero{text-align:center;margin:0 -24px 16px;position:relative}
.lgv3-form-hero__art{height:164px;background:url('../images/village-hero.webp') center 3%/cover no-repeat;opacity:.82}
.lgv3-form-hero h1{margin:-2px 20px 0;color:var(--g);font:500 clamp(2.45rem,7vw,4rem)/1.03 var(--serif)}
.lgv3-form-hero p{margin:11px 20px 0;color:#625b57;font:400 clamp(1.02rem,3vw,1.28rem)/1.3 var(--serif)}
.lgv3-form-hero .lgv3-sub-ornament{margin-top:17px}

.lgv3-form,.lgv3-lobby-body{display:grid;gap:18px;width:min(100%,640px);margin:30px auto 0}
.lgv3-field,.lgv3-switch-row,.lgv3-info-card,.lgv3-fieldset,.lgv3-code-field,.lgv3-pending{
  background:rgba(255,253,251,.95);
  border:1px solid rgba(123,15,36,.09);
  border-radius:22px;
  box-shadow:0 11px 30px rgba(70,45,36,.065);
}
.lgv3-field{padding:18px 20px;min-height:112px}
.lgv3-field--icon{display:grid;grid-template-columns:54px 1fr;gap:18px;align-items:center}
.lgv3-field__icon,.lgv3-switch-row__icon{color:var(--g);display:grid;place-items:center}
.lgv3-field__icon svg,.lgv3-switch-row__icon svg{width:31px;height:31px}
.lgv3-field__body{display:grid;gap:5px;min-width:0}
.lgv3-field__body b,.lgv3-switch-row b,.lgv3-info-card b{font:500 1.15rem/1.2 var(--serif);color:#292421}
.lgv3-field input,.lgv3-field select{
  width:100%;border:0;border-bottom:1px solid #d8c7b7;outline:0;background:transparent;color:var(--ink);
  padding:7px 0 9px;font-size:.96rem;min-height:42px
}
.lgv3-field input::placeholder{color:#8b837e;opacity:1}
.lgv3-select-wrap{position:relative;display:block}
.lgv3-field select{appearance:none;padding-right:35px;cursor:pointer}
.lgv3-select-chevron{position:absolute;right:1px;top:50%;transform:translateY(-58%);color:var(--g);pointer-events:none}
.lgv3-select-chevron svg{width:22px;height:22px}

.lgv3-fieldset{padding:19px 18px 18px;margin:0;min-width:0}
.lgv3-fieldset legend{width:100%;padding:0 4px 11px;margin:0;display:flex;align-items:center;gap:15px;color:var(--ink)}
.lgv3-legend-icon{color:var(--g);display:grid;place-items:center}
.lgv3-legend-icon svg{width:31px;height:31px}
.lgv3-fieldset legend>span:last-child{display:grid;gap:4px}
.lgv3-fieldset legend b{font:500 1.15rem/1.2 var(--serif)}
.lgv3-fieldset legend small{color:var(--muted);font-size:.86rem}
.lgv3-mode-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.lgv3-mode-grid label{position:relative}
.lgv3-mode-grid input{position:absolute;opacity:0;pointer-events:none}
.lgv3-mode-grid span{
  min-height:102px;border:1px solid #ddcec0;border-radius:18px;display:grid;place-content:center;gap:7px;text-align:center;
  color:#514844;background:#fffdfb;cursor:pointer;transition:.16s ease
}
.lgv3-mode-grid span svg{margin:auto;width:27px;height:27px}
.lgv3-mode-grid span b{font:500 1.04rem/1.1 var(--serif)}
.lgv3-mode-grid input:checked+span{border-color:var(--g);color:var(--g);box-shadow:0 0 0 2px rgba(123,15,36,.045),0 8px 20px rgba(83,49,40,.05)}

.lgv3-switch-row{padding:17px 20px;display:grid;grid-template-columns:50px 1fr auto;gap:14px;align-items:center;min-height:102px}
.lgv3-switch-row__copy{min-width:0}
.lgv3-switch-row small,.lgv3-info-card small{color:var(--muted);display:block;margin-top:5px;line-height:1.43;font-size:.87rem}
.lgv3-switch-row input{appearance:none;width:58px;height:32px;flex:0 0 auto;background:#ded3c8;border:1px solid #d1c1b4;border-radius:99px;position:relative;cursor:pointer;transition:.2s}
.lgv3-switch-row input:after{content:"";width:26px;height:26px;border-radius:50%;background:#fff;position:absolute;top:2px;left:3px;box-shadow:0 2px 7px rgba(0,0,0,.16);transition:.2s}
.lgv3-switch-row input:checked{background:linear-gradient(135deg,var(--g),var(--g2));border-color:var(--gd)}
.lgv3-switch-row input:checked:after{transform:translateX(25px)}

.lgv3-info-card{padding:18px;display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;min-height:124px}
.lgv3-info-card__seal{width:82px;height:82px;border-radius:50%}
.lgv3-info-card__shield{width:68px;height:68px;border-radius:50%;background:#fbf2e9;color:var(--g);display:grid;place-items:center;border:1px solid #e4d3c3}
.lgv3-info-card__shield svg{width:34px;height:34px}

.lgv3-code-field{padding:18px 20px}
.lgv3-code-field>span{font:500 1.16rem/1.2 var(--serif)}
.lgv3-code-cells{display:grid;grid-template-columns:repeat(6,1fr);gap:9px;margin-top:15px}
.lgv3-code-cells input{min-width:0;height:72px;text-align:center;border:1px solid #ddcbbc;border-radius:16px;background:#fffdfb;font:500 2rem/1 var(--serif);color:var(--g);outline:0;box-shadow:0 4px 12px rgba(69,44,34,.04)}
.lgv3-code-cells input:focus{border-color:var(--g);box-shadow:0 0 0 3px rgba(123,15,36,.07)}
.lgv3-alert{background:#fff1f0;border:1px solid rgba(153,44,38,.18);color:#87251f;padding:14px 16px;border-radius:15px;line-height:1.4}
.is-busy{pointer-events:none;opacity:.82}

/* LOBBY polished in the same design language */
.lgv3-screen--lobby{padding-top:env(safe-area-inset-top)}
.lgv3-lobby-head{text-align:center;margin:0 -24px 0;position:relative}
.lgv3-lobby-head__art{height:230px;background:url('../images/village-hero.webp') center top/cover no-repeat}
.lgv3-lobby-card{width:min(calc(100% - 48px),640px);margin:-36px auto 0;padding:20px 22px;background:rgba(255,253,251,.96);border:1px solid rgba(123,15,36,.09);border-radius:26px;box-shadow:0 15px 38px rgba(69,44,34,.08);display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;text-align:left}
.lgv3-lobby-card__seal{width:92px;height:92px;border-radius:50%}
.lgv3-lobby-card__copy small{color:var(--muted);font:400 .9rem/1.2 var(--sans)}
.lgv3-lobby-card h1{margin:4px 0 11px;color:var(--g);font:500 clamp(2rem,6vw,3.3rem)/1 var(--serif)}
.lgv3-wait-badge{display:inline-flex;align-items:center;gap:7px;background:#f6eadc;color:#8b6432;border:1px solid #ead6bc;border-radius:999px;padding:8px 12px;font-size:.82rem}
.lgv3-wait-badge svg{width:17px;height:17px}
.lgv3-lobby-body{margin-top:28px}
.lgv3-player-list{display:grid;gap:10px}
.lgv3-player{background:rgba(255,253,251,.96);border:1px solid rgba(123,15,36,.08);border-radius:18px;padding:11px 13px;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;box-shadow:0 8px 22px rgba(60,39,32,.05)}
.lgv3-avatar{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#f2e2dc;color:var(--g);font:500 1.08rem/1 var(--serif);border:1px solid #e4d0c7}
.lgv3-avatar.is-host{background:url('../images/village-seal.webp') center/cover no-repeat;color:transparent}
.lgv3-player__name{font:500 1.06rem/1.15 var(--serif)}
.lgv3-player__name small{display:block;color:var(--g);font:600 .67rem/1 var(--sans);margin-top:5px;text-transform:uppercase;letter-spacing:.05em}
.lgv3-status{font-size:.73rem;color:#946c43;background:#f7eadb;border:1px solid #ead8c5;padding:7px 9px;border-radius:999px;white-space:nowrap}
.lgv3-status.is-ready{color:#4f6e4b;background:#e9efe4;border-color:#dce7d7}
.lgv3-lobby-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.lgv3-mini{min-height:70px;border-radius:17px;border:1px solid #e3d4c6;background:#fffdfb;color:#514943;font-size:.76rem;font-weight:650;display:grid;place-content:center;place-items:center;gap:6px;cursor:pointer}
.lgv3-mini svg{width:24px;height:24px;color:var(--g)}
.lgv3-pending{padding:15px 16px}
.lgv3-pending-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;padding-top:6px}
.lgv3-pending-row b{display:block;font:500 1rem/1.1 var(--serif)}
.lgv3-pending-row small{display:block;color:var(--muted);font-size:.78rem;margin-top:4px}

@media (min-width:800px){
  .lgv3-screen{margin-top:18px;margin-bottom:18px;border-radius:36px;background:rgba(251,247,241,.74);box-shadow:0 30px 90px rgba(62,41,34,.08)}
  .lgv3-home-hero,.lgv3-form-hero,.lgv3-lobby-head{border-radius:36px 36px 0 0;overflow:hidden}
}

@media (max-width:560px){
  .lgv3-screen{padding-left:14px;padding-right:14px}
  .lgv3-home-hero,.lgv3-form-hero,.lgv3-lobby-head{margin-left:-14px;margin-right:-14px}
  .lgv3-home-hero__art{height:235px}
  .lgv3-home-hero__title-wrap{padding:0 16px}
  .lgv3-home-hero h1{font-size:clamp(3rem,15vw,4.25rem)}
  .lgv3-home-content{margin-top:34px}
  .lgv3-btn{min-height:80px;border-radius:20px;padding:12px 16px;gap:13px}
  .lgv3-btn__icon{width:46px;height:46px;flex-basis:46px}
  .lgv3-btn__label{font-size:1.24rem}
  .lgv3-room-card{padding:14px;gap:12px}
  .lgv3-room-card__seal{width:66px;height:66px;border-radius:21px}
  .lgv3-bottom-nav{width:calc(100% - 18px);border-radius:24px}
  .lgv3-back{left:14px;width:50px;height:50px}
  .lgv3-form-hero__art{height:135px}
  .lgv3-form-hero h1{font-size:2.55rem}
  .lgv3-form{margin-top:25px;gap:15px}
  .lgv3-field{min-height:100px;padding:15px}
  .lgv3-field--icon{grid-template-columns:43px 1fr;gap:12px}
  .lgv3-field__icon svg,.lgv3-switch-row__icon svg{width:28px;height:28px}
  .lgv3-mode-grid{gap:7px}
  .lgv3-mode-grid span{min-height:86px;border-radius:15px}
  .lgv3-switch-row{grid-template-columns:43px 1fr auto;padding:14px 15px;gap:10px}
  .lgv3-info-card{padding:14px;gap:13px}
  .lgv3-info-card__seal{width:68px;height:68px}
  .lgv3-code-cells{gap:5px}
  .lgv3-code-cells input{height:62px;border-radius:13px;font-size:1.7rem}
  .lgv3-lobby-head__art{height:180px}
  .lgv3-lobby-card{width:calc(100% - 28px);padding:16px;gap:13px}
  .lgv3-lobby-card__seal{width:74px;height:74px}
  .lgv3-lobby-actions{grid-template-columns:1fr 1fr}
  .lgv3-lobby-actions .lgv3-mini:last-child{grid-column:1/-1}
}

@media (max-width:390px){
  .lgv3-home-hero__art{height:212px}
  .lgv3-home-hero h1{font-size:2.95rem}
  .lgv3-home-hero p{font-size:1.05rem}
  .lgv3-mode-grid span b{font-size:.9rem}
  .lgv3-code-cells input{height:56px;font-size:1.5rem}
  .lgv3-switch-row input{width:50px}
  .lgv3-switch-row input:checked:after{transform:translateX(17px)}
}

@media (prefers-reduced-motion:reduce){
  .lgv3-btn,.lgv3-switch-row input,.lgv3-switch-row input:after{transition:none}
  .lgv3-spinner{animation-duration:1.6s}
}

/* =========================================================
   ALPHA 3 — PREMIUM NARRATOR CREATION WORKSPACE
   Fixed tabs: Joueurs / Rôles / Réglages
   ========================================================= */
.lgv3-create-intro{
  display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;
  padding:18px 20px;border:1px solid rgba(123,15,36,.08);border-radius:22px;
  background:linear-gradient(135deg,rgba(255,253,251,.98),rgba(249,240,233,.95));
  box-shadow:0 11px 30px rgba(70,45,36,.06)
}
.lgv3-create-intro__icon{width:52px;height:52px;border-radius:17px;display:grid;place-items:center;color:var(--g);background:#f8ede5;border:1px solid #ead8c9}
.lgv3-create-intro__icon svg{width:29px;height:29px}
.lgv3-create-intro b{display:block;font:500 1.15rem/1.15 var(--serif)}
.lgv3-create-intro small{display:block;margin-top:5px;color:var(--muted);line-height:1.45}

.lgv3-screen--host{
  padding:0 22px calc(118px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,rgba(251,247,241,.78),rgba(248,243,237,.9));
}
.lgv3-host-head{position:relative;margin:0 -22px 0;min-height:340px}
.lgv3-host-head__art{height:250px;background:url('../images/village-hero.webp') center top/cover no-repeat;opacity:.83}
.lgv3-host-topbar{
  position:absolute;left:18px;right:18px;top:calc(16px + env(safe-area-inset-top));
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px
}
.lgv3-icon-btn{
  width:48px;height:48px;border-radius:16px;border:1px solid rgba(123,15,36,.08);background:rgba(255,253,251,.92);color:var(--g);
  display:grid;place-items:center;box-shadow:0 8px 24px rgba(62,41,34,.09);backdrop-filter:blur(16px);cursor:pointer
}
.lgv3-icon-btn svg{width:23px;height:23px}
.lgv3-host-brand{display:grid;justify-items:center;text-align:center;color:#5f524d;text-shadow:0 1px 0 rgba(255,255,255,.7)}
.lgv3-host-brand small{font-size:.62rem;letter-spacing:.18em;color:var(--g);font-weight:800}
.lgv3-host-brand b{font:500 1.12rem/1.15 var(--serif);margin-top:3px}
.lgv3-host-room-card{
  position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(calc(100% - 30px),660px);
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:18px 20px;
  border:1px solid rgba(123,15,36,.08);border-radius:28px;background:rgba(255,253,251,.97);
  box-shadow:0 18px 45px rgba(61,39,33,.11),0 1px 0 rgba(255,255,255,.9) inset
}
.lgv3-host-room-card__seal{width:76px;height:76px;border-radius:24px;background:url('../images/village-seal.webp') center/cover no-repeat;border:1px solid rgba(199,170,129,.5)}
.lgv3-host-room-card__copy{min-width:0}
.lgv3-host-room-card__copy small{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.lgv3-host-room-card__copy strong{display:block;margin-top:2px;color:var(--g);font:500 clamp(1.75rem,6vw,2.7rem)/1 var(--serif);letter-spacing:.07em}
.lgv3-host-room-card__copy span{display:inline-flex;align-items:center;gap:7px;margin-top:8px;color:#725e54;font-size:.75rem}
.lgv3-host-room-card__copy span i{width:7px;height:7px;border-radius:50%;background:#6b9a67;box-shadow:0 0 0 4px rgba(107,154,103,.11)}
.lgv3-host-room-card__count{display:grid;justify-items:center;padding:9px 12px;border-radius:17px;background:#fbf2ea;border:1px solid #eadaca;min-width:70px}
.lgv3-host-room-card__count b{font:600 1.1rem/1 var(--serif);color:var(--g)}
.lgv3-host-room-card__count small{font-size:.64rem;color:var(--muted);margin-top:4px}

.lgv3-host-body{width:min(100%,660px);margin:30px auto 0;display:grid;gap:17px}
.lgv3-workspace-title{display:grid;grid-template-columns:auto 1fr;gap:15px;align-items:start;padding:3px 4px 7px}
.lgv3-workspace-title__icon{width:50px;height:50px;border-radius:18px;display:grid;place-items:center;color:var(--g);background:#f6eae3;border:1px solid #e8d4c7}
.lgv3-workspace-title__icon svg{width:26px;height:26px}
.lgv3-workspace-title small{display:block;color:var(--g);font-size:.64rem;letter-spacing:.13em;font-weight:800}
.lgv3-workspace-title h2{margin:3px 0 0;font:500 clamp(1.75rem,5vw,2.35rem)/1.05 var(--serif);color:#292321}
.lgv3-workspace-title p{margin:7px 0 0;color:var(--muted);font-size:.85rem;line-height:1.45}

.lgv3-host-nav{
  position:fixed;left:50%;bottom:calc(9px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:60;
  width:min(calc(100% - 18px),700px);display:grid;grid-template-columns:repeat(3,1fr);padding:8px;
  border-radius:27px;background:rgba(255,253,251,.96);border:1px solid rgba(123,15,36,.08);
  box-shadow:0 22px 55px rgba(58,37,32,.16);backdrop-filter:blur(22px)
}
.lgv3-host-nav button{position:relative;min-height:70px;border:0;border-radius:20px;background:transparent;color:#8b817d;display:grid;place-items:center;align-content:center;gap:5px;cursor:pointer;transition:.16s ease}
.lgv3-host-nav button svg{width:25px;height:25px}
.lgv3-host-nav button span{font-size:.76rem;font-weight:700}
.lgv3-host-nav button.is-active{color:var(--g);background:linear-gradient(180deg,#fbf1ea,#fffaf6);box-shadow:0 8px 20px rgba(84,47,38,.07),0 0 0 1px rgba(123,15,36,.07) inset}
.lgv3-host-nav button.is-active:after{content:"";position:absolute;left:34%;right:34%;bottom:3px;height:3px;border-radius:4px;background:var(--g)}

.lgv3-host-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.lgv3-quick-card{min-height:92px;border:1px solid #e3d6ca;border-radius:21px;background:#fffdfb;color:#4f4743;display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;text-align:left;padding:15px 16px;cursor:pointer;box-shadow:0 9px 24px rgba(60,40,34,.045)}
.lgv3-quick-card>svg{width:28px;height:28px;color:var(--g)}
.lgv3-quick-card b{display:block;font:500 1.02rem/1.1 var(--serif)}
.lgv3-quick-card small{display:block;color:var(--muted);font-size:.72rem;margin-top:5px}
.lgv3-quick-card--accent{background:linear-gradient(135deg,#fff9f4,#f8ede6);border-color:#ddc2b3}

.lgv3-host-panel{background:rgba(255,253,251,.97);border:1px solid rgba(123,15,36,.075);border-radius:24px;padding:17px;box-shadow:0 10px 28px rgba(62,42,35,.05)}
.lgv3-host-panel--pending{border-color:rgba(153,101,45,.18);background:linear-gradient(180deg,#fffdf9,#fff9ef)}
.lgv3-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:1px 2px 13px}
.lgv3-panel-heading b{display:block;font:500 1.18rem/1.1 var(--serif);color:#312a27}
.lgv3-panel-heading small{display:block;color:var(--muted);font-size:.74rem;margin-top:4px}
.lgv3-count-pill{min-width:48px;height:31px;padding:0 11px;border-radius:999px;display:grid;place-items:center;background:#f5ebe4;color:var(--g);font-size:.75rem;font-weight:800;border:1px solid #ead8cd}
.lgv3-member-list,.lgv3-request-list{display:grid;gap:9px}
.lgv3-member-card{display:grid;grid-template-columns:auto 1fr auto auto;gap:11px;align-items:center;min-height:76px;padding:10px 9px;border-radius:18px;background:#fffaf7;border:1px solid #eee4dd}
.lgv3-member-card .lgv3-avatar{width:52px;height:52px}
.lgv3-avatar.is-bot{color:var(--g);background:#f2e7e1}
.lgv3-avatar.is-bot svg{width:25px;height:25px}
.lgv3-member-card__copy{min-width:0}
.lgv3-member-card__copy b{display:block;font:500 1.03rem/1.1 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgv3-member-card__copy small{display:block;color:var(--muted);font-size:.68rem;margin-top:4px}
.lgv3-host-badge,.lgv3-ready-dot{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;border-radius:999px;padding:7px 9px;font-size:.66rem}
.lgv3-host-badge{color:var(--g);background:#f7e9e3;border:1px solid #ead3c8;font-weight:800}
.lgv3-host-badge svg{width:15px;height:15px}
.lgv3-ready-dot{color:#9b6d48;background:#fbf0e3;border:1px solid #f0dfca}
.lgv3-ready-dot i{width:7px;height:7px;border-radius:50%;background:#c48a52}
.lgv3-ready-dot.is-ready{color:#587151;background:#eaf2e6;border-color:#dae9d5}
.lgv3-ready-dot.is-ready i{background:#6d9565}
.lgv3-member-more{width:36px;height:36px;border-radius:12px;border:0;background:#f7f0ea;color:#958782;display:grid;place-items:center;cursor:pointer}
.lgv3-member-more svg{width:17px;height:17px}

.lgv3-request-card{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;padding:10px 9px;border-radius:18px;background:#fffaf1;border:1px solid #eee0ca}
.lgv3-request-card b{display:block;font:500 1rem/1.1 var(--serif)}
.lgv3-request-card small{display:block;color:var(--muted);font-size:.69rem;margin-top:4px}
.lgv3-request-actions{display:flex;gap:6px}
.lgv3-request-actions button{width:34px;height:34px;border-radius:11px;border:1px solid #e5d6c9;background:#fffdf9;color:#796c66;display:grid;place-items:center;cursor:pointer}
.lgv3-request-actions button:first-child{color:#56744f;background:#eef5ea;border-color:#dce9d7}
.lgv3-request-actions button:nth-child(2){color:#7b5d91;background:#f4edf8;border-color:#e5d9eb}
.lgv3-request-actions button:last-child{color:#9a4a49;background:#fbefed;border-color:#eed8d4}
.lgv3-request-actions svg{width:17px;height:17px}

.lgv3-preparation{display:grid;grid-template-columns:auto 1fr auto;gap:13px;align-items:center;padding:16px 17px;border-radius:22px;background:#fff8ed;border:1px solid #eedfc9}
.lgv3-preparation.is-ready{background:#eef5ea;border-color:#dce9d7}
.lgv3-preparation__icon{width:42px;height:42px;border-radius:14px;background:#f3e6d4;color:#9a6d42;display:grid;place-items:center}
.lgv3-preparation.is-ready .lgv3-preparation__icon{background:#ddebd8;color:#56744f}
.lgv3-preparation__icon svg{width:22px;height:22px}
.lgv3-preparation b{display:block;font:500 1.02rem/1.1 var(--serif)}
.lgv3-preparation small{display:block;color:var(--muted);font-size:.71rem;line-height:1.4;margin-top:4px}
.lgv3-preparation__stats{display:grid;justify-items:center;min-width:46px}
.lgv3-preparation__stats b{font:600 1.18rem/1 var(--serif);color:var(--g)}
.lgv3-preparation__stats small{font-size:.6rem;margin-top:3px}

/* Roles */
.lgv3-balance-card{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:13px;align-items:center;padding:16px 17px 22px;border-radius:22px;background:#fff9ef;border:1px solid #ecdec9;overflow:hidden}
.lgv3-balance-card.good{background:#f0f6ed;border-color:#dce8d7}
.lgv3-balance-card__icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;color:#a3764a;background:#f4e7d4}
.lgv3-balance-card.good .lgv3-balance-card__icon{color:#5d7d56;background:#e1eedc}
.lgv3-balance-card__icon svg{width:21px;height:21px}
.lgv3-balance-card b{display:block;font:500 1.02rem/1.1 var(--serif)}
.lgv3-balance-card small{display:block;color:var(--muted);font-size:.7rem;margin-top:4px}
.lgv3-balance-card strong{font:600 1.15rem/1 var(--serif);color:var(--g)}
.lgv3-balance-meter{position:absolute;left:17px;right:17px;bottom:8px;height:5px;border-radius:999px;background:#eadfd6;overflow:hidden}
.lgv3-balance-meter i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#caa878,var(--g));transition:width .2s ease}
.lgv3-role-search{height:54px;border-radius:18px;border:1px solid #e3d8cf;background:#fffdfb;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:10px;padding:0 15px;color:#9b8b84;box-shadow:0 7px 20px rgba(55,37,31,.04)}
.lgv3-role-search svg{width:21px;height:21px}
.lgv3-role-search input{border:0;outline:0;background:transparent;color:var(--ink);width:100%;font-size:.88rem}
.lgv3-role-list{display:grid;gap:10px}
.lgv3-role-card{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;min-height:92px;padding:12px;border-radius:21px;background:rgba(255,253,251,.97);border:1px solid rgba(123,15,36,.07);box-shadow:0 8px 24px rgba(58,39,33,.045)}
.lgv3-role-symbol{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;font-size:1.7rem;border:1px solid #e8dcd3;background:#faf3ed}
.lgv3-role-symbol--wolves{background:#f8e7e9;border-color:#efd3d8}
.lgv3-role-symbol--village{background:#eef4e9;border-color:#dce8d7}
.lgv3-role-symbol--solo{background:#fff3d9;border-color:#efdfbb}
.lgv3-role-symbol--alien{background:#efeaf7;border-color:#e2d9ef}
.lgv3-role-copy{min-width:0}
.lgv3-role-topline{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lgv3-role-copy b{font:500 1rem/1.1 var(--serif);color:#342d2a}
.lgv3-role-copy small{display:block;margin-top:6px;color:var(--muted);font-size:.67rem;line-height:1.35}
.lgv3-team{font-style:normal;font-size:.54rem;text-transform:uppercase;letter-spacing:.05em;padding:5px 7px;border-radius:999px;font-weight:800}
.lgv3-team--wolves{color:#8c3e4b;background:#fae8ec}.lgv3-team--village{color:#5f7857;background:#eaf2e6}.lgv3-team--solo{color:#8c6a31;background:#fff0ce}.lgv3-team--alien{color:#765d8c;background:#eee7f5}
.lgv3-stepper{display:grid;grid-template-columns:34px 28px 34px;align-items:center;gap:2px}
.lgv3-stepper button{width:34px;height:34px;border-radius:12px;border:1px solid #e2d7cf;background:#fffaf7;color:var(--g);display:grid;place-items:center;cursor:pointer}
.lgv3-stepper button svg{width:16px;height:16px}
.lgv3-stepper b{font:600 1rem/1 var(--serif);text-align:center;color:#403735}
.lgv3-auto-count{display:grid;justify-items:center;min-width:44px;color:var(--g)}
.lgv3-auto-count b{font:600 1.2rem/1 var(--serif)}
.lgv3-auto-count small{font-size:.58rem;color:var(--muted);margin-top:4px}
.lgv3-role-card[hidden]{display:none}

.lgv3-sticky-action{position:sticky;bottom:94px;z-index:20;padding-top:2px}
.lgv3-save-btn{width:100%;min-height:70px;border:1px solid #650b1c;border-radius:20px;background:linear-gradient(135deg,var(--g),var(--g2));color:#fffaf5;display:grid;grid-template-columns:auto 1fr;gap:13px;align-items:center;text-align:left;padding:13px 18px;box-shadow:0 14px 34px rgba(123,15,36,.18);cursor:pointer}
.lgv3-save-btn>svg{width:25px;height:25px}
.lgv3-save-btn b{display:block;font:500 1.05rem/1.1 var(--serif)}
.lgv3-save-btn small{display:block;margin-top:4px;color:#f1dfe2;font-size:.68rem}

/* Settings */
.lgv3-settings-form{display:grid;gap:14px}
.lgv3-setting-row{min-height:76px;display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:11px 2px;border-top:1px solid #eee4dd}
.lgv3-setting-row:first-of-type{border-top:0}
.lgv3-setting-row b{display:block;font:500 .98rem/1.1 var(--serif);color:#38302d}
.lgv3-setting-row small{display:block;color:var(--muted);font-size:.68rem;margin-top:5px}
.lgv3-setting-row .lgv3-select-wrap{position:relative;display:flex;align-items:center;min-width:155px}
.lgv3-setting-row select{appearance:none;width:100%;height:44px;border:1px solid #e1d5cc;border-radius:14px;background:#fffaf7;color:#4d433f;padding:0 38px 0 12px;font-size:.78rem;outline:0}
.lgv3-setting-row .lgv3-select-wrap>svg{position:absolute;right:11px;width:17px;height:17px;color:var(--g);pointer-events:none}
.lgv3-toggle{appearance:none;width:54px;height:30px;border-radius:999px;background:#ddd2c9;border:1px solid #d0c2b8;position:relative;cursor:pointer;transition:.2s}
.lgv3-toggle:after{content:"";position:absolute;width:24px;height:24px;left:2px;top:2px;border-radius:50%;background:white;box-shadow:0 2px 7px rgba(0,0,0,.14);transition:.2s}
.lgv3-toggle:checked{background:linear-gradient(135deg,var(--g),var(--g2));border-color:var(--gd)}
.lgv3-toggle:checked:after{transform:translateX(24px)}
.lgv3-number-box{height:46px;min-width:132px;border:1px solid #e2d6cc;border-radius:14px;background:#fffaf7;display:grid;grid-template-columns:62px auto;align-items:center;overflow:hidden}
.lgv3-number-box input{width:100%;border:0;outline:0;background:transparent;text-align:center;color:#4c423e;font-weight:700}
.lgv3-number-box em{font-style:normal;font-size:.65rem;color:var(--muted);padding-right:10px}
.lgv3-number-box--plain{grid-template-columns:1fr;min-width:72px;width:76px}
.lgv3-voice-panel{display:grid;grid-template-columns:auto 1fr auto;gap:13px;align-items:center}
.lgv3-voice-panel__icon{width:44px;height:44px;border-radius:14px;background:#f4e9e2;color:var(--g);display:grid;place-items:center}
.lgv3-voice-panel__icon svg{width:22px;height:22px}
.lgv3-voice-panel b{display:block;font:500 1rem/1.1 var(--serif)}
.lgv3-voice-panel small{display:block;color:var(--muted);font-size:.68rem;margin-top:4px}
.lgv3-status-pill{font-size:.62rem;border-radius:999px;padding:7px 9px;background:#f2ece7;color:#8f827c;border:1px solid #e3d9d1}
.lgv3-status-pill.is-on{background:#eaf2e6;color:#587151;border-color:#dce8d7}

.lgv3-toast{position:fixed;z-index:100;left:50%;bottom:calc(104px + env(safe-area-inset-bottom));transform:translateX(-50%);max-width:min(90vw,420px);padding:12px 17px;border-radius:16px;background:#2f2927;color:#fff;font-size:.8rem;box-shadow:0 16px 40px rgba(0,0,0,.18);animation:lgv3-toast-in .18s ease}
.lgv3-toast--error{background:#842739}
@keyframes lgv3-toast-in{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}

@media (max-width:560px){
  .lgv3-screen--host{padding-left:12px;padding-right:12px}
  .lgv3-host-head{margin-left:-12px;margin-right:-12px;min-height:312px}
  .lgv3-host-head__art{height:225px}
  .lgv3-host-room-card{width:calc(100% - 20px);padding:15px 14px;gap:11px;border-radius:24px}
  .lgv3-host-room-card__seal{width:64px;height:64px;border-radius:20px}
  .lgv3-host-room-card__copy strong{font-size:1.85rem}
  .lgv3-host-room-card__count{min-width:62px;padding:8px}
  .lgv3-host-body{margin-top:24px;gap:14px}
  .lgv3-workspace-title{grid-template-columns:45px 1fr;gap:12px}
  .lgv3-workspace-title__icon{width:45px;height:45px;border-radius:15px}
  .lgv3-workspace-title h2{font-size:1.7rem}
  .lgv3-host-quick-grid{gap:8px}
  .lgv3-quick-card{padding:13px 12px;gap:9px}
  .lgv3-member-card{grid-template-columns:auto 1fr auto;min-height:72px}
  .lgv3-member-more{grid-column:3;grid-row:1;margin-left:0}
  .lgv3-ready-dot,.lgv3-host-badge{grid-column:2;justify-self:start;margin-top:-7px}
  .lgv3-member-card__copy{align-self:start;margin-top:7px}
  .lgv3-member-card .lgv3-avatar{grid-row:1 / span 2}
  .lgv3-role-card{grid-template-columns:auto 1fr;min-height:108px}
  .lgv3-stepper,.lgv3-auto-count{grid-column:2;justify-self:end;margin-top:-2px}
  .lgv3-role-copy small{font-size:.65rem}
  .lgv3-setting-row{min-height:72px}
  .lgv3-host-nav{width:calc(100% - 12px);padding:7px}
  .lgv3-host-nav button{min-height:66px}
  .lgv3-sticky-action{bottom:88px}
}

@media (max-width:390px){
  .lgv3-host-brand b{font-size:1rem}
  .lgv3-host-room-card__seal{width:56px;height:56px}
  .lgv3-host-room-card__copy strong{font-size:1.6rem}
  .lgv3-host-room-card__count{min-width:55px}
  .lgv3-host-quick-grid{grid-template-columns:1fr}
  .lgv3-request-card{grid-template-columns:auto 1fr}.lgv3-request-actions{grid-column:2}
  .lgv3-setting-row{grid-template-columns:1fr auto;gap:8px}
  .lgv3-number-box{min-width:112px}
}
.lgv3-role-symbol{position:relative;overflow:hidden;padding:0}
.lgv3-role-symbol img{width:100%;height:100%;object-fit:cover;display:block}
.lgv3-role-symbol i{display:none;font-style:normal}
.lgv3-role-symbol img:not([src]),.lgv3-role-symbol img[src=""]{display:none}

/* =========================================================
   ALPHA 4 — COMPACT PREMIUM HOST WORKSPACE
   Players: room code only here. Roles/Settings: focused pages.
   Fixed garnet navigation + sliding page transitions.
   ========================================================= */
.lgv3-screen--host{
  min-height:100dvh;
  padding:calc(12px + env(safe-area-inset-top)) 10px calc(92px + env(safe-area-inset-bottom));
  background:
    radial-gradient(circle at 50% -14%,rgba(123,15,36,.055),transparent 34%),
    linear-gradient(180deg,#fcf9f5 0%,#f8f3ed 100%);
  overflow-x:hidden;
}
.lgv3-host-body{width:min(100%,680px);margin:0 auto;display:block}
.lgv3-host-page{display:grid;gap:10px;will-change:transform,opacity}
.lgv3-host-page--from-right{animation:lgv3-host-from-right .24s cubic-bezier(.22,.72,.27,1)}
.lgv3-host-page--from-left{animation:lgv3-host-from-left .24s cubic-bezier(.22,.72,.27,1)}
@keyframes lgv3-host-from-right{from{opacity:.2;transform:translateX(34px)}to{opacity:1;transform:translateX(0)}}
@keyframes lgv3-host-from-left{from{opacity:.2;transform:translateX(-34px)}to{opacity:1;transform:translateX(0)}}
@media (prefers-reduced-motion:reduce){.lgv3-host-page--from-right,.lgv3-host-page--from-left{animation:none}}

/* Player-only room strip. The invitation card was deliberately removed. */
.lgv3-room-strip{
  display:grid;grid-template-columns:38px 48px minmax(0,1fr) auto;gap:10px;align-items:center;
  min-height:96px;padding:10px 11px;border-radius:23px;
  background:rgba(255,253,250,.96);border:1px solid rgba(123,15,36,.09);
  box-shadow:0 10px 30px rgba(68,43,36,.07);
}
.lgv3-room-strip__back{width:36px;height:36px;border:0;border-radius:12px;background:#f8eee8;color:var(--g);display:grid;place-items:center;cursor:pointer}
.lgv3-room-strip__back svg{width:18px;height:18px}
.lgv3-room-strip__seal{width:48px;height:48px;border-radius:15px;background:url('../images/village-seal.webp') center/cover no-repeat;border:1px solid #e6d3c2}
.lgv3-room-strip__main{min-width:0;display:grid;align-content:center}
.lgv3-room-strip__main>small{font-size:.57rem;line-height:1;text-transform:uppercase;letter-spacing:.11em;font-weight:800;color:#837771}
.lgv3-room-strip__code{display:flex;align-items:center;gap:6px;min-width:0;margin-top:3px}
.lgv3-room-strip__code strong{font:500 clamp(1.48rem,7vw,2rem)/1 var(--serif);letter-spacing:.055em;color:var(--g);white-space:nowrap}
.lgv3-room-strip__code button{width:29px;height:29px;flex:0 0 auto;border:1px solid #e6d7cd;border-radius:9px;background:#fffaf6;color:var(--g);display:grid;place-items:center;cursor:pointer}
.lgv3-room-strip__code button svg{width:15px;height:15px}
.lgv3-room-strip__main em{display:flex;align-items:center;gap:6px;margin-top:5px;font-style:normal;font-size:.61rem;color:#71655f}
.lgv3-room-strip__main em i{width:7px;height:7px;border-radius:50%;background:#6f9c67;box-shadow:0 0 0 3px rgba(111,156,103,.1)}
.lgv3-room-strip__count{min-width:54px;display:grid;justify-items:center;padding:8px 7px;border-radius:15px;background:#faf0e8;border:1px solid #ead9cc}
.lgv3-room-strip__count b{font:600 .96rem/1 var(--serif);color:var(--g)}
.lgv3-room-strip__count small{font-size:.53rem;color:#8f8179;margin-top:4px}

.lgv3-player-title-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;margin-top:2px}
.lgv3-compact-heading{min-height:47px;display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:9px;align-items:center;padding:3px 2px}
.lgv3-compact-heading__icon{width:38px;height:38px;border-radius:13px;background:#f5e8e1;color:var(--g);display:grid;place-items:center;border:1px solid #e8d3c7}
.lgv3-compact-heading__icon svg{width:20px;height:20px}
.lgv3-compact-heading h2{margin:0;font:500 clamp(1.42rem,5vw,1.78rem)/1.05 var(--serif);color:#302725;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgv3-compact-heading__meta{min-width:43px;text-align:center;font-size:.68rem;font-weight:800;color:var(--g);padding:7px 8px;border-radius:999px;background:#f6e9e3;border:1px solid #e9d4c8}
.lgv3-add-bot-compact{height:40px;padding:0 11px;border-radius:13px;border:1px solid #e3d5cb;background:#fffaf7;color:var(--g);display:flex;align-items:center;gap:7px;font-size:.68rem;font-weight:800;cursor:pointer}
.lgv3-add-bot-compact svg{width:18px;height:18px}

.lgv3-host-panel{border-radius:19px;padding:12px;box-shadow:0 7px 20px rgba(62,42,35,.035)}
.lgv3-panel-heading{padding:0 1px 9px}
.lgv3-panel-heading b{font-size:1.02rem}
.lgv3-panel-heading small{font-size:.63rem;margin-top:3px}
.lgv3-count-pill{height:27px;min-width:43px;padding:0 8px;font-size:.66rem}
.lgv3-member-list,.lgv3-request-list{gap:6px}
.lgv3-member-card{min-height:58px;padding:6px 7px;border-radius:15px;gap:8px}
.lgv3-member-card .lgv3-avatar{width:40px;height:40px;font-size:.82rem}
.lgv3-member-card__copy b{font-size:.91rem}
.lgv3-member-card__copy small{font-size:.58rem;margin-top:2px}
.lgv3-host-badge,.lgv3-ready-dot{padding:5px 7px;font-size:.57rem;gap:4px}
.lgv3-host-badge svg{width:12px;height:12px}
.lgv3-member-more{width:30px;height:30px;border-radius:10px}
.lgv3-member-more svg{width:14px;height:14px}
.lgv3-request-card{padding:7px;border-radius:15px}
.lgv3-request-card small{font-size:.59rem}
.lgv3-request-actions button{width:30px;height:30px;border-radius:9px}
.lgv3-preparation{padding:11px 12px;border-radius:17px;gap:9px}
.lgv3-preparation__icon{width:34px;height:34px;border-radius:11px}
.lgv3-preparation b{font-size:.9rem}.lgv3-preparation small{font-size:.59rem}.lgv3-preparation__stats b{font-size:1rem}

/* Focused roles page: one role = one compact line, including Villageois. */
.lgv3-screen--host-roles .lgv3-host-body,.lgv3-screen--host-settings .lgv3-host-body{padding-top:1px}
.lgv3-tab-hint{margin:-1px 3px 2px;color:#8b7f79;font-size:.62rem;line-height:1.35}
.lgv3-role-list{display:grid;gap:5px}
.lgv3-role-card{
  min-height:58px;padding:6px 7px;grid-template-columns:42px minmax(0,1fr) 91px;gap:8px;
  border-radius:15px;box-shadow:0 5px 15px rgba(58,39,33,.032);transition:border-color .16s,background .16s,transform .16s
}
.lgv3-role-card.is-selected{border-color:rgba(123,15,36,.34);background:linear-gradient(90deg,#fff8f5,#fffdfb);box-shadow:0 6px 17px rgba(123,15,36,.07)}
.lgv3-role-symbol{width:42px;height:42px;border-radius:13px}
.lgv3-role-copy{display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden}
.lgv3-role-copy b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 .84rem/1.05 var(--serif)}
.lgv3-role-copy small{display:none}
.lgv3-team{flex:0 0 auto;font-size:.43rem;padding:3px 5px;letter-spacing:.025em}
.lgv3-stepper{grid-template-columns:28px 29px 28px;gap:2px;justify-self:end}
.lgv3-stepper button{width:28px;height:28px;border-radius:9px}
.lgv3-stepper button svg{width:13px;height:13px}
.lgv3-stepper b{font-size:.88rem}

/* Settings: compact and scan-friendly, with no room card above. */
.lgv3-settings-form{display:grid;gap:7px}
.lgv3-settings-group{background:rgba(255,253,251,.97);border:1px solid rgba(123,15,36,.075);border-radius:17px;padding:7px 11px;box-shadow:0 6px 18px rgba(62,42,35,.035)}
.lgv3-settings-group h3{margin:2px 0 4px;font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;color:var(--g);font-weight:850}
.lgv3-setting-row{min-height:49px;padding:6px 1px;gap:8px}
.lgv3-setting-row b{font:500 .82rem/1.05 var(--serif)}
.lgv3-setting-row small{font-size:.55rem;margin-top:2px}
.lgv3-setting-row .lgv3-select-wrap{min-width:126px}
.lgv3-setting-row select{height:36px;border-radius:11px;font-size:.67rem;padding-left:9px}
.lgv3-toggle{width:46px;height:26px}
.lgv3-toggle:after{width:20px;height:20px}
.lgv3-toggle:checked:after{transform:translateX(20px)}
.lgv3-number-box{height:36px;min-width:102px;grid-template-columns:53px auto;border-radius:11px}
.lgv3-number-box input{font-size:.72rem}.lgv3-number-box em{font-size:.53rem;padding-right:7px}
.lgv3-number-box--plain{min-width:59px;width:62px}

/* Compact fixed actions and navigation. */
.lgv3-sticky-action{position:sticky;bottom:calc(70px + env(safe-area-inset-bottom));z-index:25;padding-top:2px}
.lgv3-save-btn{min-height:50px;border-radius:15px;padding:8px 13px;gap:9px;box-shadow:0 9px 22px rgba(123,15,36,.16)}
.lgv3-save-btn>svg{width:19px;height:19px}.lgv3-save-btn b{font-size:.88rem}.lgv3-save-btn small{font-size:.55rem;margin-top:2px}
.lgv3-host-nav{
  position:fixed;left:50%;bottom:calc(6px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px));transform:translateX(-50%);z-index:70;
  width:min(calc(100% - 12px),690px);height:60px;padding:5px;border-radius:20px;
  background:linear-gradient(135deg,#761024,#a41332);border:1px solid #630b1d;
  box-shadow:0 16px 36px rgba(91,12,31,.25);backdrop-filter:none
}
.lgv3-host-nav button{min-height:50px;border-radius:15px;color:#f4dfe4;gap:2px;transition:transform .16s ease,background .16s ease,color .16s ease}
.lgv3-host-nav button svg{width:19px;height:19px}
.lgv3-host-nav button span{font-size:.61rem;font-weight:800}
.lgv3-host-nav button.is-active{color:var(--g);background:#fff8f3;box-shadow:0 4px 12px rgba(46,7,16,.15)}
.lgv3-host-nav button.is-active:after{left:40%;right:40%;bottom:2px;height:2px;background:var(--g)}
.lgv3-host-nav button:active{transform:scale(.97)}
.lgv3-toast{bottom:calc(75px + env(safe-area-inset-bottom));font-size:.72rem}

@media(max-width:560px){
  .lgv3-screen--host{padding-left:8px;padding-right:8px;padding-bottom:calc(88px + env(safe-area-inset-bottom))}
  .lgv3-host-body{margin:0 auto;gap:0}
  .lgv3-room-strip{grid-template-columns:34px 42px minmax(0,1fr) auto;gap:7px;padding:8px;min-height:87px;border-radius:20px}
  .lgv3-room-strip__back{width:32px;height:32px}.lgv3-room-strip__seal{width:42px;height:42px;border-radius:13px}
  .lgv3-room-strip__code strong{font-size:1.55rem}.lgv3-room-strip__count{min-width:48px;padding:7px 5px}
  .lgv3-compact-heading{grid-template-columns:35px minmax(0,1fr) auto;min-height:43px;gap:7px}.lgv3-compact-heading__icon{width:35px;height:35px}.lgv3-compact-heading h2{font-size:1.42rem}
  .lgv3-player-title-row{grid-template-columns:minmax(0,1fr) auto}.lgv3-add-bot-compact span{display:none}.lgv3-add-bot-compact{width:40px;padding:0;justify-content:center}
  .lgv3-member-card{grid-template-columns:auto minmax(0,1fr) auto auto;min-height:57px}.lgv3-member-card .lgv3-avatar{grid-row:auto}.lgv3-member-card__copy{align-self:center;margin-top:0}.lgv3-ready-dot,.lgv3-host-badge{grid-column:auto;justify-self:auto;margin-top:0}.lgv3-member-more{grid-column:auto;grid-row:auto}
  .lgv3-role-card{grid-template-columns:40px minmax(0,1fr) 87px;min-height:55px;padding:5px 6px;gap:6px}.lgv3-role-symbol{width:40px;height:40px}.lgv3-stepper{grid-column:auto;margin-top:0}.lgv3-role-copy b{font-size:.78rem}.lgv3-team{font-size:.39rem;padding:3px 4px}
  .lgv3-setting-row{min-height:47px}.lgv3-settings-group{padding:6px 9px}.lgv3-setting-row .lgv3-select-wrap{min-width:118px}.lgv3-number-box{min-width:96px}
  .lgv3-host-nav{height:58px}.lgv3-host-nav button{min-height:48px}.lgv3-sticky-action{bottom:calc(67px + env(safe-area-inset-bottom))}
}
@media(max-width:380px){
  .lgv3-room-strip__seal{display:none}.lgv3-room-strip{grid-template-columns:32px minmax(0,1fr) auto}.lgv3-room-strip__code strong{font-size:1.42rem}
  .lgv3-role-card{grid-template-columns:38px minmax(0,1fr) 84px}.lgv3-role-symbol{width:38px;height:38px}.lgv3-team{display:none}
  .lgv3-setting-row small{display:none}.lgv3-setting-row b{font-size:.78rem}.lgv3-setting-row .lgv3-select-wrap{min-width:110px}
}

/* Player-side lobby alpha.4 — synchronized compact room */
.lgv3-screen--player-lobby{min-height:100dvh;padding:calc(12px + env(safe-area-inset-top)) 10px calc(22px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#fcf9f5,#f7f1eb)}
.lgv3-player-lobby-compact{width:min(100%,680px);margin:0 auto;display:grid;gap:10px}
.lgv3-player-room-strip{display:grid;grid-template-columns:38px 48px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:96px;padding:10px 11px;border-radius:23px;background:rgba(255,253,250,.97);border:1px solid rgba(123,15,36,.09);box-shadow:0 10px 30px rgba(68,43,36,.07)}
.lgv3-screen--player-lobby .lgv3-player-list{display:grid;gap:6px}
.lgv3-screen--player-lobby .lgv3-player{min-height:57px;border-radius:15px;padding:7px 9px;box-shadow:none}
.lgv3-screen--player-lobby .lgv3-player .lgv3-avatar{width:40px;height:40px}
.lgv3-screen--player-lobby .lgv3-player__name{font-size:.9rem}.lgv3-screen--player-lobby .lgv3-player__name small{font-size:.55rem}
.lgv3-screen--player-lobby .lgv3-status{font-size:.56rem;padding:5px 7px}
.lgv3-player-ready-btn{width:100%;min-height:58px;border:1px solid #650b1c;border-radius:17px;background:linear-gradient(135deg,var(--g),var(--g2));color:#fffaf5;display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;text-align:left;padding:9px 14px;box-shadow:0 10px 24px rgba(123,15,36,.17);cursor:pointer}
.lgv3-player-ready-btn>svg{width:21px;height:21px}.lgv3-player-ready-btn b{display:block;font:500 .92rem/1.05 var(--serif)}.lgv3-player-ready-btn small{display:block;font-size:.57rem;color:#f0dfe2;margin-top:3px}
.lgv3-player-ready-btn.is-ready{background:linear-gradient(135deg,#55754e,#6d9364);border-color:#486642}
.lgv3-waiting-note{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;padding:12px;border-radius:17px;background:#fff8ed;border:1px solid #eadcc7;color:#775d45}.lgv3-waiting-note>svg{width:22px;height:22px}.lgv3-waiting-note b{display:block;font:.88rem var(--serif)}.lgv3-waiting-note small{display:block;font-size:.58rem;margin-top:3px;color:#8a7868}
@media(max-width:560px){.lgv3-player-room-strip{grid-template-columns:34px 42px minmax(0,1fr) auto;gap:7px;padding:8px;min-height:87px;border-radius:20px}}
@media(max-width:380px){.lgv3-player-room-strip .lgv3-room-strip__seal{display:none}.lgv3-player-room-strip{grid-template-columns:32px minmax(0,1fr) auto}}

/* =========================================================
   ALPHA 5 — creation flow polish, compact validation controls
   ========================================================= */
.lgv3-app.is-busy{opacity:1}

/* Creation animation: shown only after a valid Create action. */
.lgv3-create-transition{
  min-height:100dvh;position:relative;overflow:hidden;display:grid;place-items:center;
  padding:calc(28px + env(safe-area-inset-top)) 24px calc(32px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,#fffaf5 0%,#f8f0e8 100%);color:#342826;text-align:center;
}
.lgv3-create-transition__art{
  position:absolute;inset:0 0 auto;height:58vh;min-height:390px;
  background:url('../images/village-hero.webp') center top/cover no-repeat;opacity:.56;
  mask-image:linear-gradient(#000 0%,#000 52%,transparent 100%);
}
.lgv3-create-transition:after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(circle at 50% 36%,rgba(255,255,255,.15),rgba(255,250,245,.55) 42%,rgba(248,240,232,.96) 76%);
}
.lgv3-create-transition__halo{
  position:relative;z-index:2;width:124px;height:124px;border-radius:50%;display:grid;place-items:center;
  border:1px solid rgba(123,15,36,.18);background:rgba(255,250,246,.78);box-shadow:0 18px 48px rgba(83,46,37,.1),inset 0 0 0 10px rgba(255,255,255,.34);
}
.lgv3-create-transition__halo:before,.lgv3-create-transition__halo:after{
  content:"";position:absolute;border-radius:50%;border:1px solid rgba(123,15,36,.14);animation:lgv3-create-wave 1.45s ease-out infinite
}
.lgv3-create-transition__halo:before{inset:-18px}.lgv3-create-transition__halo:after{inset:-38px;animation-delay:.28s}
.lgv3-create-transition__halo span{width:48px;height:48px;border-radius:16px;background:linear-gradient(145deg,#761024,#a41332);transform:rotate(45deg);box-shadow:0 9px 24px rgba(123,15,36,.22)}
.lgv3-create-transition__halo span:after{content:"";position:absolute;inset:13px;border:2px solid #fff2f4;border-radius:50%}
.lgv3-create-transition__halo i,.lgv3-create-transition__halo b{position:absolute;width:6px;height:6px;border-radius:50%;background:#c5a579;box-shadow:0 0 0 5px rgba(197,165,121,.12)}
.lgv3-create-transition__halo i{left:-4px}.lgv3-create-transition__halo b{right:-4px}
.lgv3-create-transition__content{position:relative;z-index:3;margin-top:-8vh;max-width:430px}
.lgv3-create-transition__content small{display:block;color:var(--g);font-size:.65rem;font-weight:850;letter-spacing:.22em}
.lgv3-create-transition__content h1{margin:12px 0 8px;font:500 clamp(2rem,9vw,3.2rem)/1.02 var(--serif);color:#4a2828}
.lgv3-create-transition__content p{margin:0;color:#7d7069;font-size:.9rem}
.lgv3-create-transition__steps{margin:24px auto 0;display:flex;justify-content:center;gap:7px}
.lgv3-create-transition__steps span{min-width:74px;padding:7px 10px;border-radius:999px;background:rgba(255,253,250,.75);border:1px solid #e8d8cc;color:#a09691;font-size:.57rem;font-weight:800;transition:.3s ease}
.lgv3-create-transition__steps span.is-on{background:#f8e9e8;border-color:#dcbfc4;color:var(--g);box-shadow:0 5px 15px rgba(123,15,36,.08)}
@keyframes lgv3-create-wave{0%{opacity:.7;transform:scale(.82)}100%{opacity:0;transform:scale(1.16)}}

/* Compact premium validation dock: intentionally shorter than alpha.4. */
.lgv3-save-dock{position:sticky;bottom:calc(69px + env(safe-area-inset-bottom));z-index:28;padding:2px 1px 3px;display:flex;justify-content:center}
.lgv3-save-pill{
  width:min(100%,520px);min-height:44px;border:1px solid #650b1d;border-radius:14px;padding:5px 8px 5px 6px;
  background:linear-gradient(135deg,#741023 0%,#9e1531 72%,#861128 100%);color:#fff9f6;
  box-shadow:0 8px 20px rgba(105,14,36,.16),inset 0 1px 0 rgba(255,255,255,.12);
  display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:8px;align-items:center;text-align:left;cursor:pointer
}
.lgv3-save-pill__icon{width:34px;height:34px;border-radius:11px;background:rgba(255,255,255,.12);display:grid;place-items:center;border:1px solid rgba(255,255,255,.13)}
.lgv3-save-pill__icon svg{width:17px;height:17px}
.lgv3-save-pill>b{font:500 .82rem/1 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgv3-save-pill>em{font-style:normal;font-size:.52rem;font-weight:800;color:#efdce1;background:rgba(48,4,14,.16);padding:6px 8px;border-radius:999px;white-space:nowrap}
.lgv3-save-pill:active{transform:translateY(1px)}

/* No visible capacity concept in alpha.5: counts are simple live totals. */
.lgv3-room-strip__count{min-width:50px}
.lgv3-room-strip__count b{font-size:1.05rem}
.lgv3-compact-heading__meta{white-space:nowrap}

@media(max-width:560px){
  .lgv3-create-form{margin-top:18px}
  .lgv3-create-intro{padding:14px 15px;gap:12px}.lgv3-create-intro__icon{width:45px;height:45px;border-radius:14px}
  .lgv3-create-transition__art{height:52vh;min-height:330px}.lgv3-create-transition__halo{width:104px;height:104px}
  .lgv3-create-transition__content{margin-top:-5vh}.lgv3-create-transition__steps span{min-width:67px;padding:6px 8px}
  .lgv3-save-dock{bottom:calc(65px + env(safe-area-inset-bottom))}.lgv3-save-pill{min-height:42px;border-radius:13px}.lgv3-save-pill>em{font-size:.48rem}
}
@media(max-width:380px){
  .lgv3-save-pill{grid-template-columns:32px minmax(0,1fr) auto}.lgv3-save-pill__icon{width:32px;height:32px}.lgv3-save-pill>b{font-size:.76rem}.lgv3-save-pill>em{padding:5px 6px}
}
@media(prefers-reduced-motion:reduce){.lgv3-create-transition__halo:before,.lgv3-create-transition__halo:after{animation:none}}

/* =========================================================
   ALPHA 6 — AUTOMATIC ROLE SAVE + REAL LAUNCH + NARRATOR GATE
   ========================================================= */

/* Roles are saved as soon as the Narrator changes a counter. */
.lgv3-role-autosave{
  min-height:26px;margin:-3px 2px 2px;padding:4px 8px;border-radius:10px;
  display:flex;align-items:center;gap:7px;color:#7d716c;background:rgba(255,252,249,.68);
  border:1px solid rgba(123,15,36,.055);font-size:.55rem;font-weight:750;letter-spacing:.01em
}
.lgv3-role-autosave i{width:7px;height:7px;border-radius:50%;background:#79966f;box-shadow:0 0 0 3px rgba(121,150,111,.1)}
.lgv3-role-autosave[data-state="saving"] i{background:#b28a55;animation:lgv3-autosave-pulse .85s ease-in-out infinite}
.lgv3-role-autosave[data-state="error"]{color:#8d2637;background:#fff3f3;border-color:#eccfd4}.lgv3-role-autosave[data-state="error"] i{background:#a9213b}
@keyframes lgv3-autosave-pulse{50%{opacity:.35;transform:scale(.72)}}

/* Real launch action is fixed above the garnet navigation, so a long bot list can never hide it. */
.lgv3-screen--host-players{padding-bottom:calc(166px + env(safe-area-inset-bottom))}
.lgv3-launch-dock{
  position:fixed;left:50%;bottom:calc(70px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:62;
  width:min(calc(100% - 20px),670px);padding:5px;border-radius:20px;
  background:rgba(250,246,241,.92);border:1px solid rgba(123,15,36,.09);box-shadow:0 14px 35px rgba(70,41,34,.13);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)
}
.lgv3-launch-button{
  width:100%;min-height:58px;border-radius:16px;border:1px solid #620b1c;padding:7px 10px 7px 7px;
  display:grid;grid-template-columns:42px minmax(0,1fr) 24px;gap:10px;align-items:center;text-align:left;
  background:linear-gradient(135deg,#741023 0%,#a31533 70%,#841126 100%);color:#fffaf6;
  box-shadow:0 10px 24px rgba(104,13,34,.2),inset 0 1px 0 rgba(255,255,255,.13);cursor:pointer
}
.lgv3-launch-button__mark{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:rgba(255,255,255,.11);border:1px solid rgba(255,255,255,.13)}
.lgv3-launch-button__mark svg{width:21px;height:21px}.lgv3-launch-button__copy{min-width:0}.lgv3-launch-button__copy b{display:block;font:500 1.04rem/1.05 var(--serif)}
.lgv3-launch-button__copy small{display:block;margin-top:3px;color:#efdce1;font-size:.55rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgv3-launch-button__arrow svg{width:19px;height:19px}.lgv3-launch-button:active{transform:translateY(1px)}
.lgv3-launch-dock.is-blocked .lgv3-launch-button{background:linear-gradient(135deg,#8a6a6d,#a17e81);border-color:#866b6d;box-shadow:none}
.lgv3-launch-reason{display:block;padding:5px 8px 1px;text-align:center;color:#7e6060;font-size:.51rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Cinematic, light Narrator entrance. No step pills, no generic spinner. */
.lgv3-narrator-gate{
  min-height:100dvh;position:relative;overflow:hidden;display:grid;place-items:center;
  padding:calc(22px + env(safe-area-inset-top)) 22px calc(26px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,#fffaf5 0%,#f7efe7 100%);color:#3d2928;text-align:center;isolation:isolate
}
.lgv3-narrator-gate__village{
  position:absolute;z-index:-3;inset:-4% -5% auto;height:63vh;min-height:400px;
  background:url('../images/village-hero.webp') center top/cover no-repeat;opacity:0;
  transform:scale(1.055) translateY(-10px);animation:lgv3-gate-village 1.35s cubic-bezier(.2,.7,.2,1) forwards
}
.lgv3-narrator-gate__veil{position:absolute;z-index:-2;inset:0;background:
  radial-gradient(circle at 50% 31%,rgba(255,255,255,.12) 0,rgba(255,250,245,.45) 32%,rgba(251,246,240,.89) 63%,#f7efe7 86%),
  linear-gradient(180deg,transparent 0 32%,rgba(249,243,237,.72) 60%,#f7efe7 88%)}
.lgv3-narrator-gate__frame{width:min(100%,430px);position:relative;margin-top:-3vh;display:grid;justify-items:center;animation:lgv3-gate-frame .78s cubic-bezier(.22,.8,.24,1) both}
.lgv3-narrator-gate__brand{font-size:.61rem;font-weight:900;letter-spacing:.28em;color:var(--g);margin-bottom:18px}
.lgv3-narrator-gate__seal{width:118px;height:118px;border-radius:50%;position:relative;display:grid;place-items:center;background:rgba(255,252,248,.82);border:1px solid rgba(123,15,36,.12);box-shadow:0 24px 55px rgba(70,42,35,.11),inset 0 0 0 9px rgba(255,255,255,.35)}
.lgv3-narrator-gate__seal:before,.lgv3-narrator-gate__seal:after{content:"";position:absolute;border-radius:50%;pointer-events:none}
.lgv3-narrator-gate__seal:before{inset:-15px;border:1px solid rgba(180,137,93,.31);animation:lgv3-gate-ring 7s linear infinite}
.lgv3-narrator-gate__seal:after{inset:-29px;border:1px solid rgba(123,15,36,.075);transform:scale(.88);opacity:.1;transition:.55s cubic-bezier(.2,.8,.2,1)}
.lgv3-narrator-gate__seal span{width:82px;height:82px;border-radius:50%;background:url('../images/village-seal.webp') center/cover no-repeat;box-shadow:0 8px 25px rgba(75,48,38,.12)}
.lgv3-narrator-gate__copy{margin-top:27px}.lgv3-narrator-gate__copy p{margin:0;color:var(--g);font-size:.57rem;font-weight:900;letter-spacing:.18em}
.lgv3-narrator-gate__copy h1{margin:8px 0 7px;font:500 clamp(2.1rem,9vw,3rem)/1 var(--serif);color:#452b29}.lgv3-narrator-gate__copy em{display:block;font-style:normal;color:#81746e;font-size:.78rem}
.lgv3-narrator-gate__progress{width:min(78vw,300px);height:3px;margin-top:28px;border-radius:999px;overflow:hidden;background:#e9ddd4;box-shadow:inset 0 1px 2px rgba(79,55,48,.06)}
.lgv3-narrator-gate__progress i{display:block;width:18%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#b58b5e,var(--g));transition:width .55s cubic-bezier(.2,.75,.25,1);animation:lgv3-gate-progress-start .72s .12s forwards}
.lgv3-narrator-gate.is-mid .lgv3-narrator-gate__progress i{width:82%}.lgv3-narrator-gate.is-ready .lgv3-narrator-gate__progress i{width:100%}
.lgv3-narrator-gate.is-ready .lgv3-narrator-gate__seal:after{transform:scale(1);opacity:1}.lgv3-narrator-gate.is-ready .lgv3-narrator-gate__seal{box-shadow:0 26px 58px rgba(70,42,35,.12),0 0 0 1px rgba(123,15,36,.05),inset 0 0 0 9px rgba(255,255,255,.4)}
.lgv3-narrator-gate__status{width:min(84vw,330px);margin-top:13px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:#8a7c75;font-size:.55rem;font-weight:750}
.lgv3-narrator-gate__status b{font:600 .86rem/1 var(--serif);letter-spacing:.09em;color:var(--g)}
@keyframes lgv3-gate-village{to{opacity:.64;transform:scale(1) translateY(0)}}
@keyframes lgv3-gate-frame{from{opacity:0;transform:translateY(15px) scale(.985)}to{opacity:1;transform:none}}
@keyframes lgv3-gate-ring{to{transform:rotate(360deg)}}
@keyframes lgv3-gate-progress-start{to{width:48%}}

/* First real post-launch state: secret role distribution is now functional. */
.lgv3-screen--started,.lgv3-screen--role-reveal{min-height:100dvh;padding:calc(24px + env(safe-area-inset-top)) 14px calc(30px + env(safe-area-inset-bottom));background:radial-gradient(circle at 50% 0,rgba(123,15,36,.045),transparent 38%),linear-gradient(180deg,#fcf9f5,#f5eee7);display:grid;place-items:center}
.lgv3-started-card,.lgv3-role-reveal-card{width:min(100%,600px);border-radius:28px;background:rgba(255,253,250,.97);border:1px solid rgba(123,15,36,.09);box-shadow:0 20px 55px rgba(68,43,36,.1);padding:24px;text-align:center}
.lgv3-started-card__seal{width:64px;height:64px;margin:0 auto 14px;border-radius:20px;background:linear-gradient(145deg,#761024,#a41332);color:#fff7f5;display:grid;place-items:center;box-shadow:0 12px 28px rgba(123,15,36,.2)}.lgv3-started-card__seal svg{width:29px;height:29px}
.lgv3-started-card>small,.lgv3-role-reveal-card>small{color:var(--g);font-size:.56rem;font-weight:900;letter-spacing:.19em}.lgv3-started-card h1,.lgv3-role-reveal-card h1{margin:8px 0;font:500 clamp(2rem,8vw,3rem)/1 var(--serif);color:#432b29}.lgv3-started-card>p,.lgv3-role-reveal-card>p{margin:0 auto;color:#7f716b;font-size:.76rem;line-height:1.55;max-width:470px}
.lgv3-started-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:20px 0 12px}.lgv3-started-summary span{padding:10px 5px;border-radius:15px;background:#faf1ea;border:1px solid #ebdcd1}.lgv3-started-summary b{display:block;font:600 .96rem/1 var(--serif);color:var(--g)}.lgv3-started-summary small{display:block;margin-top:4px;font-size:.49rem;color:#8e817a;text-transform:uppercase;letter-spacing:.06em}
.lgv3-started-roster{display:grid;gap:5px;text-align:left}.lgv3-started-roster article{display:grid;grid-template-columns:36px 1fr;gap:8px;align-items:center;padding:6px 8px;border-radius:13px;background:#fffaf7;border:1px solid #eee2d9}.lgv3-started-roster .lgv3-avatar{width:36px;height:36px}.lgv3-started-roster b{display:block;font-size:.72rem}.lgv3-started-roster small{display:block;margin-top:2px;font-size:.55rem;color:#8b7771}
.lgv3-phase-note{margin-top:13px;padding:10px;border-radius:15px;background:#f8eee7;display:grid;grid-template-columns:28px 1fr;gap:8px;text-align:left;color:var(--g)}.lgv3-phase-note>span:first-child svg{width:20px;height:20px}.lgv3-phase-note b{display:block;font:.76rem var(--serif)}.lgv3-phase-note small{display:block;margin-top:3px;color:#826f69;font-size:.52rem;line-height:1.4}
.lgv3-role-reveal-card__image{width:150px;height:150px;margin:20px auto 14px;border-radius:38px;overflow:hidden;border:1px solid #dfcbbb;box-shadow:0 18px 40px rgba(70,42,35,.12)}.lgv3-role-reveal-card__image img{width:100%;height:100%;object-fit:cover}.lgv3-role-reveal-card__privacy{margin-top:20px;padding:11px 12px;border-radius:16px;background:#f8eee8;color:var(--g);display:grid;grid-template-columns:28px 1fr;gap:8px;text-align:left}.lgv3-role-reveal-card__privacy>svg{width:22px;height:22px}.lgv3-role-reveal-card__privacy b{display:block;font:.8rem var(--serif)}.lgv3-role-reveal-card__privacy small{display:block;margin-top:2px;color:#806e68;font-size:.55rem}

@media(max-width:560px){
  .lgv3-launch-dock{width:calc(100% - 14px);bottom:calc(67px + env(safe-area-inset-bottom));padding:4px}.lgv3-launch-button{min-height:54px;grid-template-columns:38px minmax(0,1fr) 20px}.lgv3-launch-button__mark{width:38px;height:38px}.lgv3-launch-button__copy b{font-size:.94rem}.lgv3-launch-button__copy small{font-size:.49rem}.lgv3-launch-reason{font-size:.47rem}
  .lgv3-narrator-gate__village{height:57vh;min-height:350px}.lgv3-narrator-gate__seal{width:104px;height:104px}.lgv3-narrator-gate__seal span{width:72px;height:72px}.lgv3-narrator-gate__copy{margin-top:23px}
  .lgv3-started-card,.lgv3-role-reveal-card{padding:19px 14px;border-radius:24px}
}
@media(prefers-reduced-motion:reduce){.lgv3-narrator-gate__village,.lgv3-narrator-gate__frame,.lgv3-narrator-gate__seal:before,.lgv3-narrator-gate__progress i,.lgv3-role-autosave[data-state="saving"] i{animation:none!important;transition:none!important}.lgv3-narrator-gate__village{opacity:.64;transform:none}}

/* =========================================================
   ALPHA 7 — REVEAL / MAYOR ELECTION / NIGHT ONE PREPARATION
   ========================================================= */
.lgv3-game-screen{min-height:100dvh;padding:calc(18px + env(safe-area-inset-top)) 15px calc(30px + env(safe-area-inset-bottom));background:
  radial-gradient(circle at 50% -10%,rgba(255,255,255,.96) 0 23%,transparent 48%),
  linear-gradient(180deg,#fbf7f1 0%,#f8f1ea 100%);color:#302725}
.lgv3-game-wrap{width:min(100%,620px);margin:0 auto;display:grid;gap:13px}
.lgv3-game-top{display:grid;grid-template-columns:48px 1fr;align-items:center;gap:12px;padding:10px 4px 7px}
.lgv3-game-top__seal{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(145deg,#7d102b,#a71940);color:#fff6ef;box-shadow:0 10px 22px rgba(111,13,38,.18)}
.lgv3-game-top__seal svg{width:25px;height:25px}
.lgv3-game-top small{display:block;color:#8b1432;font-size:.61rem;font-weight:900;letter-spacing:.14em}
.lgv3-game-top h1{margin:2px 0 0;font:600 clamp(1.72rem,6vw,2.35rem)/1.02 var(--serif);color:#332826}
.lgv3-game-top p{margin:4px 0 0;color:#91827d;font-size:.76rem;line-height:1.3}
.lgv3-game-panel,.lgv3-progress-card,.lgv3-speaker-card,.lgv3-vote-current,.lgv3-mayor-winner,.lgv3-night-lead,.lgv3-role-wait,.lgv3-night-player-card,.lgv3-center-note{
  border:1px solid rgba(111,13,38,.075);background:rgba(255,253,250,.97);border-radius:22px;box-shadow:0 12px 32px rgba(67,42,34,.065)
}
.lgv3-game-panel{padding:14px}
.lgv3-game-panel__head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:0 2px 10px;border-bottom:1px solid #eee3dc}
.lgv3-game-panel__head b{font:600 1.03rem var(--serif)}.lgv3-game-panel__head small{color:#9a8d87;font-size:.67rem}
.lgv3-progress-card{display:grid;grid-template-columns:74px 1fr;gap:14px;align-items:center;padding:14px}
.lgv3-progress-card>span>b{display:block;font:600 1rem/1.15 var(--serif)}.lgv3-progress-card>span>small{display:block;margin-top:4px;color:#91837e;font-size:.72rem;line-height:1.42}
.lgv3-progress-ring{--p:0;position:relative;width:70px;height:70px;border-radius:50%;display:grid;place-items:center;align-content:center;background:conic-gradient(#8d1434 calc(var(--p)*1%),#eadfd7 0);color:#6f0d26}
.lgv3-progress-ring:before{content:"";position:absolute;inset:6px;border-radius:50%;background:#fffaf6}.lgv3-progress-ring b,.lgv3-progress-ring small{position:relative;z-index:1}.lgv3-progress-ring b{font:700 1.15rem var(--serif)}.lgv3-progress-ring small{font-size:.56rem;color:#95857f}
.lgv3-confirm-list{display:grid;gap:7px;padding-top:10px}.lgv3-confirm-row{min-height:58px;display:grid;grid-template-columns:42px 1fr auto;gap:9px;align-items:center;padding:7px 8px;border:1px solid #efe6df;border-radius:15px;background:#fffcf9}.lgv3-confirm-row .lgv3-avatar{width:42px;height:42px;font-size:.83rem}.lgv3-confirm-row b{display:block;font:600 .92rem var(--serif)}.lgv3-confirm-row small{display:block;color:#9a8f89;font-size:.62rem;margin-top:2px}.lgv3-confirm-row em{display:flex;align-items:center;gap:4px;font-style:normal;font-size:.61rem;color:#a27958;background:#fbf0e4;padding:5px 7px;border-radius:999px;white-space:nowrap}.lgv3-confirm-row em svg{width:13px;height:13px}.lgv3-confirm-row em.is-done{color:#4e7658;background:#e8f2e8}
.lgv3-game-primary,.lgv3-game-secondary{width:100%;min-height:64px;border-radius:19px;display:grid;grid-template-columns:34px 1fr 22px;align-items:center;gap:10px;text-align:left;padding:10px 13px;cursor:pointer;transition:transform .14s ease,box-shadow .14s ease,opacity .14s ease}
.lgv3-game-primary{border:0;background:linear-gradient(135deg,#791028,#a61b40);color:#fff7f0;box-shadow:0 13px 28px rgba(111,13,38,.2)}.lgv3-game-secondary{border:1px solid #e4d4c9;background:#fffaf6;color:#5c4541}.lgv3-game-primary>svg,.lgv3-game-secondary>svg{width:23px;height:23px}.lgv3-game-primary span b,.lgv3-game-secondary span b{display:block;font:600 1rem var(--serif)}.lgv3-game-primary span small,.lgv3-game-secondary span small{display:block;margin-top:2px;font-size:.64rem;opacity:.76}.lgv3-game-primary.is-disabled{opacity:.45;box-shadow:none}.lgv3-game-primary:active,.lgv3-game-secondary:active{transform:scale(.985)}
.lgv3-reveal-card{position:relative;min-height:610px;border-radius:28px;overflow:hidden;perspective:1200px}.lgv3-reveal-card__cover,.lgv3-reveal-card__content{position:absolute;inset:0;padding:24px 19px;backface-visibility:hidden;transition:transform .62s cubic-bezier(.22,.75,.24,1),opacity .45s ease;border:1px solid rgba(111,13,38,.09);border-radius:28px;background:linear-gradient(160deg,#fffdf9,#f7eee6);box-shadow:0 24px 58px rgba(64,38,31,.12)}
.lgv3-reveal-card__cover{display:grid;align-content:center;justify-items:center;text-align:center;gap:11px}.lgv3-reveal-card__cover>span{width:92px;height:92px;border-radius:31px;display:grid;place-items:center;color:#fff;background:linear-gradient(145deg,#6e0e27,#9c183b);box-shadow:0 18px 45px rgba(116,14,39,.2)}.lgv3-reveal-card__cover>span svg{width:47px;height:47px}.lgv3-reveal-card__cover b{font:600 1.6rem var(--serif)}.lgv3-reveal-card__cover small{color:#90817c;max-width:260px;line-height:1.4}.lgv3-reveal-card__cover button{margin-top:10px;border:0;border-radius:17px;background:#7b102d;color:#fff;padding:14px 24px;font-weight:800;cursor:pointer}
.lgv3-reveal-card__content{transform:rotateY(180deg);opacity:0;overflow:auto;text-align:center}.lgv3-reveal-stage.is-revealed .lgv3-reveal-card__cover{transform:rotateY(-180deg);opacity:0}.lgv3-reveal-stage.is-revealed .lgv3-reveal-card__content{transform:rotateY(0);opacity:1}.lgv3-reveal-card__content>small{color:#8b1432;font-size:.62rem;letter-spacing:.16em;font-weight:900}.lgv3-reveal-role-image{width:170px;height:170px;margin:13px auto 10px;border-radius:42px;overflow:hidden;border:1px solid #e8d8cb;background:#f5ebe4;box-shadow:0 15px 35px rgba(68,43,35,.1)}.lgv3-reveal-role-image img{width:100%;height:100%;object-fit:cover}.lgv3-reveal-card__content h2{margin:8px 0 6px;font:600 2rem var(--serif);color:#71102a}.lgv3-reveal-card__content>p{margin:0 auto 14px;max-width:430px;color:#756965;font-size:.83rem;line-height:1.52}
.lgv3-secret-team{margin:11px 0 14px;padding:11px;border-radius:17px;background:#f7ebe5;border:1px solid #ead7cc;text-align:left}.lgv3-secret-team>small{font-size:.59rem;font-weight:900;letter-spacing:.1em;color:#8b1432}.lgv3-secret-team>div{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}.lgv3-secret-team>div span{padding:6px 9px;border-radius:999px;background:#fffaf6;border:1px solid #e7d5c9;font-size:.7rem;font-weight:700}
.lgv3-role-wait,.lgv3-night-player-card{padding:28px 20px;text-align:center}.lgv3-role-wait>span,.lgv3-night-player-card>span{width:72px;height:72px;margin:0 auto 12px;border-radius:24px;display:grid;place-items:center;background:#f2e5dc;color:#80132f}.lgv3-role-wait>span svg,.lgv3-night-player-card>span svg{width:36px;height:36px}.lgv3-role-wait h2,.lgv3-night-player-card h2{margin:0;font:600 1.7rem var(--serif)}.lgv3-role-wait p,.lgv3-night-player-card p{margin:8px auto 0;color:#887a75;line-height:1.5;font-size:.82rem;max-width:390px}
.lgv3-election-notice{padding:10px 13px;border-radius:15px;background:#fff2db;border:1px solid #efd8ad;color:#8a5e28;font-size:.72rem;line-height:1.4}.lgv3-candidate-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.lgv3-candidate{min-height:76px;border-radius:17px;border:1px solid #eadfd8;background:#fffaf7;padding:10px;display:grid;grid-template-columns:30px 1fr;grid-template-rows:auto auto;align-items:center;column-gap:8px}.lgv3-candidate>span{grid-row:1/3;width:30px;height:30px;border-radius:10px;display:grid;place-items:center;background:#f2e4db;color:#7c1230;font-weight:900}.lgv3-candidate b{font:600 .92rem var(--serif)}.lgv3-candidate small{font-size:.6rem;color:#9b8d87}.lgv3-empty-candidates{grid-column:1/-1;min-height:100px;display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:center;padding:14px;border:1px dashed #ddcec4;border-radius:18px;color:#8d7d77}.lgv3-empty-candidates>svg{width:32px;height:32px;color:#7b102c}.lgv3-empty-candidates b{display:block;font:600 1rem var(--serif)}.lgv3-empty-candidates small{font-size:.67rem}
.lgv3-candidate-status{display:grid;grid-template-columns:38px 1fr;gap:10px;align-items:center;padding:13px 14px;border-radius:18px;background:#f7eee8;border:1px solid #e8d8ce;color:#6c5952}.lgv3-candidate-status>svg{width:27px;height:27px;color:#7b102c}.lgv3-candidate-status b{display:block;font:600 .95rem var(--serif)}.lgv3-candidate-status small{display:block;color:#95867f;font-size:.67rem;margin-top:3px}.lgv3-candidate-status.is-ok{background:#edf4eb;border-color:#dce9d9;color:#4f7056}
.lgv3-speaker-card{padding:24px;text-align:center}.lgv3-speaker-card__crown{width:76px;height:76px;margin:0 auto 9px;border-radius:26px;display:grid;place-items:center;background:linear-gradient(145deg,#7a102c,#a61c41);color:#fff}.lgv3-speaker-card__crown svg{width:39px;height:39px}.lgv3-speaker-card>small,.lgv3-vote-current>small,.lgv3-mayor-winner>small,.lgv3-night-lead small{font-size:.58rem;font-weight:900;letter-spacing:.13em;color:#8c1533}.lgv3-speaker-card h2,.lgv3-vote-current h2,.lgv3-mayor-winner h2,.lgv3-night-lead h2{margin:5px 0;font:600 1.8rem var(--serif)}.lgv3-speaker-card p{margin:5px auto;color:#8b7d78;font-size:.77rem}.lgv3-timer-pill{width:max-content;margin:12px auto 0;display:flex;align-items:center;gap:6px;padding:7px 11px;border-radius:999px;background:#f4e9e2;color:#76102a}.lgv3-timer-pill svg{width:15px;height:15px}.lgv3-timer-pill b{font-size:.76rem}
.lgv3-vote-current{padding:18px;text-align:center}.lgv3-vote-progress{height:7px;margin:14px 0 0;border-radius:999px;background:#eee2da;overflow:hidden}.lgv3-vote-progress i{display:block;height:100%;background:linear-gradient(90deg,#7b102d,#ac2348);border-radius:inherit;transition:width .35s ease}
.lgv3-vote-choice{display:grid;gap:8px}.lgv3-vote-choice>small{font-size:.62rem;letter-spacing:.12em;color:#8b1432;font-weight:900;margin:0 2px 4px}.lgv3-vote-choice button{min-height:68px;border:1px solid #e6d7cd;border-radius:18px;background:#fffaf7;color:#4b3d39;display:grid;grid-template-columns:38px 1fr 20px;align-items:center;text-align:left;gap:9px;padding:9px 12px;cursor:pointer}.lgv3-vote-choice button>span{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:#f1e4dc;color:#7b102c}.lgv3-vote-choice button>span svg{width:21px;height:21px}.lgv3-vote-choice button b{font:600 1.06rem var(--serif)}.lgv3-vote-choice button>svg{width:18px;height:18px;color:#8b7770}
.lgv3-mayor-winner{padding:31px 20px;text-align:center;background:linear-gradient(160deg,#fffdf9,#f7eee4)}.lgv3-mayor-winner>span{width:92px;height:92px;border-radius:32px;margin:0 auto 12px;display:grid;place-items:center;background:linear-gradient(145deg,#7b102d,#a71940);color:#fff;box-shadow:0 18px 42px rgba(112,13,39,.22)}.lgv3-mayor-winner>span svg{width:48px;height:48px}.lgv3-mayor-winner h2{font-size:2.15rem;color:#74112b}.lgv3-mayor-winner p{max-width:390px;margin:8px auto 0;color:#887872;font-size:.79rem;line-height:1.5}
.lgv3-night-lead{display:grid;grid-template-columns:64px 1fr;align-items:center;gap:13px;padding:15px}.lgv3-night-lead>span{width:64px;height:64px;border-radius:22px;display:grid;place-items:center;background:#eee5e2;color:#6f1230}.lgv3-night-lead>span svg{width:34px;height:34px}.lgv3-night-lead h2{font-size:1.4rem}.lgv3-night-lead p{margin:4px 0 0;font-size:.68rem;color:#91827d}.lgv3-night-order{display:grid;gap:6px;padding-top:9px}.lgv3-night-order article{min-height:48px;border-radius:14px;background:#fffaf7;border:1px solid #eee3dc;display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:8px;padding:7px 10px}.lgv3-night-order article>span{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:#f0e5de;color:#7d1330;font-size:.7rem;font-weight:900}.lgv3-night-order article b{font:600 .87rem var(--serif)}.lgv3-night-order article em{font-style:normal;font-size:1.05rem}.lgv3-night-order article.is-current{border-color:#c899a7;background:#fbf0f2}.lgv3-night-player{background:radial-gradient(circle at 50% 8%,#fffaf6 0 10%,transparent 40%),linear-gradient(180deg,#f9f3ef,#efe8e5)}
.lgv3-center-note{padding:25px;text-align:center;display:grid;justify-items:center;gap:8px;color:#776964}.lgv3-center-note>svg{width:38px;height:38px;color:#7c1230}.lgv3-center-note b{font:600 1.1rem var(--serif)}.lgv3-center-note p{margin:0;font-size:.74rem;color:#91827d}
@media(max-width:420px){.lgv3-game-screen{padding-left:10px;padding-right:10px}.lgv3-game-wrap{gap:10px}.lgv3-game-top{grid-template-columns:43px 1fr}.lgv3-game-top__seal{width:43px;height:43px;border-radius:14px}.lgv3-game-primary,.lgv3-game-secondary{min-height:59px;border-radius:17px}.lgv3-candidate-grid{gap:6px}.lgv3-confirm-row{grid-template-columns:39px 1fr auto}.lgv3-confirm-row .lgv3-avatar{width:39px;height:39px}.lgv3-reveal-card{min-height:590px}.lgv3-reveal-role-image{width:150px;height:150px;border-radius:36px}}
@media(prefers-reduced-motion:reduce){.lgv3-reveal-card__cover,.lgv3-reveal-card__content,.lgv3-game-primary,.lgv3-game-secondary{transition:none}}

/* =========================================================
   ALPHA 7.1 — narrator autosave + premium start confirmation
   ========================================================= */
.lgv3-settings-autosave{
  min-height:27px;margin:0 2px 2px;padding:5px 9px;border-radius:11px;
  display:flex;align-items:center;gap:7px;color:#766b67;background:rgba(255,252,249,.76);
  border:1px solid rgba(123,15,36,.06);font-size:.56rem;font-weight:760
}
.lgv3-settings-autosave i{width:7px;height:7px;border-radius:50%;background:#78946f;box-shadow:0 0 0 3px rgba(120,148,111,.1)}
.lgv3-settings-autosave[data-state="saving"] i{background:#b58b5e;animation:lgv3-autosave-pulse .85s ease-in-out infinite}
.lgv3-settings-autosave[data-state="waiting"]{color:#8b725d}.lgv3-settings-autosave[data-state="waiting"] i{background:#c49b6f}
.lgv3-settings-autosave[data-state="error"]{color:#8d2637;background:#fff3f3;border-color:#eccfd4}.lgv3-settings-autosave[data-state="error"] i{background:#a9213b}

/* The start action is deliberately stronger than the old configuration card. */
.lgv3-screen--host-players{padding-bottom:calc(174px + env(safe-area-inset-bottom))}
.lgv3-launch-dock{
  z-index:84;bottom:calc(72px + env(safe-area-inset-bottom));padding:4px;
  border-radius:19px;background:rgba(255,249,244,.95);border-color:rgba(123,15,36,.11);
  box-shadow:0 16px 42px rgba(79,12,30,.16),0 2px 7px rgba(65,41,35,.05)
}
.lgv3-launch-button{min-height:61px;border-radius:15px;grid-template-columns:43px minmax(0,1fr) 25px;padding:7px 11px 7px 7px}
.lgv3-launch-button__copy b{font:600 1.08rem/1.03 var(--serif);letter-spacing:-.01em}
.lgv3-launch-button__copy small{font-size:.56rem}
.lgv3-launch-dock.is-ready .lgv3-launch-button{background:linear-gradient(135deg,#6d0c20 0%,#9d1736 58%,#7e1027 100%);box-shadow:0 11px 28px rgba(104,13,34,.23),inset 0 1px 0 rgba(255,255,255,.16)}

/* Premium confirmation before any irreversible launch. */
.lgv3-confirm-overlay{position:fixed;inset:0;z-index:140;display:grid;place-items:end center;padding:18px 12px calc(18px + env(safe-area-inset-bottom));opacity:0;pointer-events:none;transition:opacity .18s ease}
.lgv3-confirm-overlay.is-visible{opacity:1;pointer-events:auto}
.lgv3-confirm-backdrop{position:absolute;inset:0;background:rgba(34,24,24,.34);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}
.lgv3-confirm-dialog{position:relative;width:min(100%,470px);padding:22px 18px 16px;border-radius:29px;background:linear-gradient(165deg,#fffdf9 0%,#f9f1ea 100%);border:1px solid rgba(123,15,36,.11);box-shadow:0 28px 80px rgba(39,19,21,.25);text-align:center;transform:translateY(22px) scale(.985);transition:transform .24s cubic-bezier(.2,.78,.25,1)}
.lgv3-confirm-overlay.is-visible .lgv3-confirm-dialog{transform:none}
.lgv3-confirm-dialog__seal{width:62px;height:62px;margin:-49px auto 10px;border-radius:20px;display:grid;place-items:center;background:linear-gradient(145deg,#741025,#a51b3d);color:#fff8f3;border:5px solid #fbf5ef;box-shadow:0 12px 28px rgba(101,13,34,.22)}
.lgv3-confirm-dialog__seal svg{width:29px;height:29px}.lgv3-confirm-dialog>small{font-size:.54rem;letter-spacing:.16em;font-weight:900;color:#8a1731}.lgv3-confirm-dialog h2{margin:5px 0 7px;font:600 1.65rem/1.06 var(--serif);color:#482f2d}.lgv3-confirm-dialog p{max-width:390px;margin:0 auto;color:#81736e;font-size:.72rem;line-height:1.5}
.lgv3-confirm-summary{margin:15px 0 14px;display:grid;grid-template-columns:repeat(3,1fr);overflow:hidden;border:1px solid #eadbd1;border-radius:17px;background:#fffaf6}
.lgv3-confirm-summary span{min-height:66px;display:grid;align-content:center;gap:2px;padding:7px;border-left:1px solid #eadbd1}.lgv3-confirm-summary span:first-child{border-left:0}.lgv3-confirm-summary b{font:600 1.12rem/1 var(--serif);color:#751129}.lgv3-confirm-summary small{font-size:.51rem;color:#8b7e78}
.lgv3-confirm-actions{display:grid;grid-template-columns:.8fr 1.2fr;gap:8px}.lgv3-confirm-actions button{min-height:50px;border-radius:15px;border:1px solid #dfd1c8;background:#fffaf6;color:#6f5b55;font-weight:800;cursor:pointer}.lgv3-confirm-actions button.is-primary{border-color:#6b0c1f;background:linear-gradient(135deg,#741025,#9f1838);color:#fff7f2;display:flex;align-items:center;justify-content:center;gap:7px;box-shadow:0 9px 22px rgba(105,13,34,.18)}.lgv3-confirm-actions button.is-primary svg{width:17px;height:17px}

@media(max-width:560px){
  .lgv3-launch-dock{width:calc(100% - 16px);bottom:calc(69px + env(safe-area-inset-bottom))}
  .lgv3-launch-button{min-height:58px}.lgv3-confirm-overlay{padding-left:8px;padding-right:8px}.lgv3-confirm-dialog{border-radius:25px;padding-left:14px;padding-right:14px}
}
.lgv3-role-fill-note{min-height:34px;padding:6px 9px;border-radius:12px;background:#f8f0e8;border:1px solid #eaded5;color:#786a65;display:grid;grid-template-columns:19px 1fr;gap:7px;align-items:center;font-size:.56rem;line-height:1.35}.lgv3-role-fill-note>svg{width:17px;height:17px;color:var(--g)}.lgv3-role-fill-note b{color:#731128;font-weight:900}

/* ==================================================================
   ALPHA 8 — MESSAGERIE
   Dock fixe compact, panneau en feuille basse, badges de non-lus.
   Échelle volontairement alignée sur la barre Narrateur existante :
   icônes 19px, libellés .58rem, hauteurs 54–58px. Aucun élément ne
   doit occuper plus d'un huitième de la hauteur d'écran.
   ================================================================== */
/* L'attribut HTML hidden repose sur une règle du navigateur moins prioritaire que n'importe
   quelle classe déclarant un display : sans cette ligne, tout élément masqué par hidden mais
   stylé en grid ou flex reste visible. C'est ce qui affichait la barre vocale en permanence. */
.lgv3-app [hidden]{display:none!important}
.lgv3-app{overflow-x:clip}
.lgv3-app{--chat-dock-h:56px}

/* ---- Dock ------------------------------------------------------- */
.lgv3-chat-dock{
  position:fixed;left:50%;bottom:calc(7px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px));transform:translateX(-50%);
  z-index:105;width:min(calc(100% - 14px),690px);height:var(--chat-dock-h);padding:5px;
  display:grid;grid-template-columns:repeat(var(--chat-cols,3),1fr);gap:3px;
  border-radius:19px;background:rgba(255,252,249,.97);border:1px solid rgba(123,15,36,.1);
  box-shadow:0 14px 34px rgba(64,36,31,.16),0 1px 0 rgba(255,255,255,.9) inset;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)
}
.lgv3-chat-dock button{
  position:relative;min-height:46px;border:0;border-radius:14px;background:transparent;color:#8b817d;
  display:grid;place-items:center;align-content:center;gap:3px;cursor:pointer;
  transition:background .16s ease,color .16s ease,transform .14s ease
}
.lgv3-chat-dock button:active{transform:scale(.96)}
.lgv3-chat-dock button.is-active{color:var(--g);background:linear-gradient(180deg,#fbf0ea,#fffaf6);box-shadow:0 0 0 1px rgba(123,15,36,.08) inset}
.lgv3-chat-dock button.is-active:after{content:"";position:absolute;left:36%;right:36%;bottom:2px;height:2px;border-radius:3px;background:var(--g)}
.lgv3-chat-dock button.is-locked{color:#b0a49e}
.lgv3-chat-dock button.is-call.is-active{color:#2f7d4f;background:linear-gradient(180deg,#eef7ef,#fbfdf9)}
.lgv3-chat-dock button.is-call.is-active:after{background:#2f7d4f}
.lgv3-app.is-night-stage .lgv3-chat-dock button.is-call.is-active{color:#8fe0ad;background:linear-gradient(180deg,rgba(63,174,114,.2),rgba(63,174,114,.06))}
.lgv3-chat-dock__icon{position:relative;display:grid;place-items:center}
.lgv3-chat-dock svg{width:19px;height:19px}
.lgv3-chat-dock__label{font-size:.58rem;font-weight:800;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}

/* ---- Badge de non-lus ------------------------------------------ */
.lgv3-chat-badge{
  position:absolute;top:-6px;right:-9px;min-width:16px;height:16px;padding:0 4px;
  border-radius:9px;background:#c0182f;color:#fff;border:1.5px solid #fffdfb;
  font:900 .52rem/16px var(--sans);font-style:normal;text-align:center;letter-spacing:0;
  box-shadow:0 2px 6px rgba(160,15,38,.35);animation:lgv3-badge-pop .22s cubic-bezier(.2,.9,.3,1.3)
}
@keyframes lgv3-badge-pop{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}
.lgv3-nav-badge{
  position:absolute;top:5px;right:calc(50% - 24px);min-width:16px;height:16px;padding:0 4px;
  border-radius:9px;background:#c0182f;color:#fff;border:1.5px solid rgba(255,253,251,.92);
  font:900 .52rem/16px var(--sans);font-style:normal;text-align:center;
  box-shadow:0 2px 6px rgba(120,8,26,.4);animation:lgv3-badge-pop .22s cubic-bezier(.2,.9,.3,1.3)
}
.lgv3-host-nav--4{grid-template-columns:repeat(4,1fr)}
.lgv3-host-nav--4 button span{font-size:.57rem}
.lgv3-host-nav--5{grid-template-columns:repeat(5,1fr)}
.lgv3-host-nav--5 button span{font-size:.5rem;letter-spacing:-.01em}
.lgv3-host-nav--5 button svg{width:17px;height:17px}
.lgv3-nav-badge.is-call{background:#2f7d4f;box-shadow:0 2px 6px rgba(29,90,52,.4)}

/* ---- Panneau ---------------------------------------------------- */
.lgv3-chat-panel{
  position:fixed;inset:0;z-index:100;display:flex;align-items:flex-end;justify-content:center;
  padding:0 7px;opacity:0;pointer-events:none;transition:opacity .2s ease
}
.lgv3-chat-panel:before{content:"";position:absolute;inset:0;background:rgba(34,23,23,.3);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.lgv3-chat-panel.is-open{opacity:1;pointer-events:auto}
.lgv3-chat-panel__sheet{
  position:relative;width:min(100%,690px);max-height:min(72svh,600px);
  margin-bottom:calc(9px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px));
  display:flex;flex-direction:column;overflow:hidden;
  border-radius:24px;background:linear-gradient(180deg,#fffdfa,#faf3ec);
  border:1px solid rgba(123,15,36,.1);box-shadow:0 26px 70px rgba(38,20,20,.28);
  transform:translateY(18px) scale(.99);transition:transform .24s cubic-bezier(.2,.8,.25,1)
}
.lgv3-app.has-chat-dock .lgv3-chat-panel__sheet{margin-bottom:calc(var(--chat-dock-h) + 16px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))}
.lgv3-chat-panel.is-open .lgv3-chat-panel__sheet{transform:none}

.lgv3-chat-switch{display:flex;gap:5px;padding:8px 9px 0;overflow-x:auto;scrollbar-width:none}
.lgv3-chat-switch::-webkit-scrollbar{display:none}
.lgv3-chat-switch button{
  position:relative;flex:0 0 auto;height:30px;padding:0 11px;border-radius:11px;cursor:pointer;
  white-space:nowrap;
  border:1px solid #ecdfd5;background:#fffaf6;color:#7d726d;display:flex;align-items:center;gap:5px;
  font-size:.6rem;font-weight:800
}
.lgv3-chat-switch button svg{width:14px;height:14px}
.lgv3-chat-switch button.is-active{border-color:rgba(123,15,36,.24);background:#fbeef0;color:var(--g)}
.lgv3-chat-switch .lgv3-chat-badge{position:static;margin-left:2px;border-width:0;box-shadow:none}

.lgv3-chat-head{
  display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:9px;
  padding:9px 11px;border-bottom:1px solid #f0e4da;background:rgba(255,253,250,.7)
}
.lgv3-chat-head__back{
  width:32px;height:32px;border-radius:11px;border:1px solid #ecdfd5;background:#fffaf6;
  color:#7a6f6a;display:grid;place-items:center;cursor:pointer;transition:.14s ease
}
.lgv3-chat-head__back:active{transform:scale(.94)}
.lgv3-chat-head__back svg{width:16px;height:16px}
.lgv3-chat-head__copy{display:grid;gap:1px;min-width:0}
.lgv3-chat-head__copy b{font:600 1rem/1.1 var(--serif);color:#40292c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgv3-chat-head__copy small{font-size:.55rem;color:#918681;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgv3-chat-tool{
  height:32px;padding:0 9px;border-radius:11px;cursor:pointer;display:flex;align-items:center;gap:5px;
  border:1px solid #ecdfd5;background:#fffaf6;color:#8a7f7a;font-size:.55rem;font-weight:900;letter-spacing:.02em
}
.lgv3-chat-tool svg{width:15px;height:15px}
.lgv3-chat-tool.is-on{border-color:rgba(88,113,81,.32);background:#eef4ea;color:#476b3f}
.lgv3-chat-tool.is-warn{border-color:rgba(192,24,47,.28);background:#fbeef0;color:#a5142c}
.lgv3-chat-tool:disabled{opacity:.55}

/* ---- Conversation ---------------------------------------------- */
.lgv3-chat-body{flex:1;min-height:150px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:11px 11px 4px}
.lgv3-chat-stream{display:flex;flex-direction:column;gap:9px}
.lgv3-chat-msg{display:grid;justify-items:start;gap:2px;max-width:82%}
.lgv3-chat-msg.is-mine{justify-items:end;margin-left:auto}
.lgv3-chat-msg__author{display:flex;align-items:center;gap:5px;font-size:.53rem;font-weight:800;color:#9a8d86;padding:0 3px}
.lgv3-chat-tag{
  font-style:normal;font-size:.46rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;
  color:#fff;background:linear-gradient(135deg,#7b0f24,#a4193a);padding:2px 5px;border-radius:5px;
  box-shadow:0 2px 5px rgba(123,15,36,.22)
}
.lgv3-chat-msg__bubble{
  padding:8px 11px;border-radius:15px 15px 15px 5px;background:#fffdfa;border:1px solid #eee1d7;
  color:#3d3230;font-size:.79rem;line-height:1.42;word-break:break-word;white-space:pre-wrap;
  box-shadow:0 2px 6px rgba(74,46,38,.05)
}
.lgv3-chat-msg.is-mine .lgv3-chat-msg__bubble{
  border-radius:15px 15px 5px 15px;border-color:transparent;color:#fff8f4;
  background:linear-gradient(135deg,#77112a,#9d1a3a);box-shadow:0 4px 12px rgba(110,14,35,.2)
}
.lgv3-chat-msg.is-narrator:not(.is-mine) .lgv3-chat-msg__bubble{
  background:linear-gradient(180deg,#fff8ec,#fdf1e2);border-color:#ecd8bb;color:#4a382c
}
.lgv3-chat-msg time{font-size:.47rem;color:#a99c96;padding:0 4px}
.lgv3-chat-loading{min-height:150px;display:grid;place-items:center}
.lgv3-chat-empty{
  min-height:170px;display:grid;place-content:center;justify-items:center;gap:5px;text-align:center;padding:16px;color:#8d827d
}
.lgv3-chat-empty svg{width:24px;height:24px;color:var(--champ)}
.lgv3-chat-empty b{font:600 .95rem/1.2 var(--serif);color:#4a3634}
.lgv3-chat-empty small{font-size:.6rem;max-width:270px;line-height:1.45}
.lgv3-chat-empty--locked svg{color:var(--g)}

.lgv3-chat-threads{display:grid;gap:6px}
.lgv3-chat-threads button{
  display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px;
  min-height:50px;padding:6px 9px;border-radius:14px;cursor:pointer;text-align:left;
  border:1px solid #eee1d7;background:#fffdfa;transition:.14s ease
}
.lgv3-chat-threads button:active{transform:scale(.99);background:#fbf3ec}
.lgv3-chat-threads__avatar{
  width:34px;height:34px;border-radius:11px;display:grid;place-items:center;
  background:linear-gradient(145deg,#f7ece2,#efdfd1);color:#8a5f45;font-weight:900;font-size:.8rem
}
.lgv3-chat-threads__copy{display:grid;gap:1px;min-width:0}
.lgv3-chat-threads__copy b{font-size:.83rem;color:#3f3230;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgv3-chat-threads__copy small{font-size:.55rem;color:#948881}
.lgv3-chat-threads__go{color:#c3b4aa}
.lgv3-chat-threads__go svg{width:15px;height:15px}
.lgv3-chat-threads .lgv3-chat-badge{position:static;border-width:0;box-shadow:none}

/* ---- Composeur -------------------------------------------------- */
/* Pied du panneau : un seul conteneur, une seule hauteur. Le composeur et l'enregistreur
   s'y remplacent mutuellement, donc rien ne se décale au démarrage ni à l'arrêt du vocal. */
.lgv3-chat-footer{
  display:block;padding:9px 11px calc(10px + env(safe-area-inset-bottom));
  border-top:1px solid #f0e4da;background:rgba(255,252,248,.85)
}
.lgv3-chat-composer{
  display:grid;grid-template-columns:minmax(0,1fr) 40px 40px;gap:8px;align-items:end;
  padding:0;border:0;background:none;min-height:40px
}
.lgv3-chat-composer__field{border:1px solid #e8dad0;border-radius:14px;background:#fffdfa;padding:2px 4px;transition:border-color .16s ease,box-shadow .16s ease}
.lgv3-chat-composer__field:focus-within{border-color:rgba(123,15,36,.32);box-shadow:0 0 0 3px rgba(123,15,36,.07)}
.lgv3-chat-composer textarea{
  width:100%;min-height:38px;max-height:96px;resize:none;border:0;outline:0;background:transparent;
  padding:9px 8px;font-size:.8rem;line-height:1.4;color:#3d3230;font-family:var(--sans)
}
.lgv3-chat-send{
  width:40px;height:40px;border-radius:13px;border:0;cursor:pointer;display:grid;place-items:center;
  color:#fff8f4;background:linear-gradient(135deg,#77112a,#a01a3b);
  box-shadow:0 6px 16px rgba(110,14,35,.24);transition:transform .14s ease,opacity .16s ease
}
.lgv3-chat-send svg{width:18px;height:18px}
.lgv3-chat-send:active{transform:scale(.94)}
.lgv3-chat-send:disabled{opacity:.42;box-shadow:none}
.lgv3-chat-composer.is-sending .lgv3-chat-send{animation:lgv3-chat-pulse .9s ease-in-out infinite}
@keyframes lgv3-chat-pulse{50%{opacity:.6}}
.lgv3-chat-blocked{
  margin:0;display:flex;align-items:center;gap:8px;min-height:40px;
  padding:0 2px;color:#8a7b74;font-size:.62rem;line-height:1.4
}
.lgv3-chat-blocked svg{width:16px;height:16px;flex:0 0 auto;color:var(--g)}

/* ---- Place réservée au dock dans les écrans --------------------- */
.lgv3-app.has-chat-dock .lgv3-screen{padding-bottom:calc(var(--chat-dock-h) + 22px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))}
.lgv3-app.has-chat-dock .lgv3-screen--host{padding-bottom:calc(var(--chat-dock-h) + 30px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))}
.lgv3-app.has-chat-dock .lgv3-toast{bottom:calc(var(--chat-dock-h) + 20px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))}

@media(max-width:560px){
  .lgv3-app{--chat-dock-h:54px}
  .lgv3-chat-dock{width:calc(100% - 12px);border-radius:17px;padding:4px}
  .lgv3-chat-dock button{min-height:45px;border-radius:12px}
  .lgv3-chat-panel__sheet{border-radius:21px;max-height:min(76svh,580px)}
  .lgv3-chat-msg{max-width:86%}
  .lgv3-chat-footer{padding-left:9px;padding-right:9px}
  .lgv3-chat-composer{grid-template-columns:minmax(0,1fr) 38px 38px;gap:7px}
  .lgv3-chat-mic,.lgv3-chat-send{width:38px;height:38px}
  .lgv3-chat-recorder{grid-template-columns:38px minmax(0,1fr) 38px;gap:7px}
  .lgv3-chat-recorder__cancel,.lgv3-chat-recorder__send{width:38px;height:38px}
  .lgv3-host-nav--4 button span{font-size:.53rem}
  .lgv3-host-nav--5 button span{font-size:.46rem}
  .lgv3-nav-badge{right:calc(50% - 18px)}
  .lgv3-nav-badge{right:calc(50% - 20px)}
}
@media(max-width:380px){
  .lgv3-chat-dock__label{font-size:.53rem}
  .lgv3-chat-head__copy b{font-size:.92rem}
  .lgv3-chat-recorder__meter{grid-template-columns:9px minmax(0,1fr) auto;padding:0 9px;gap:7px}
  .lgv3-chat-recorder__meter small{display:none}
  .lgv3-chat-tool span{display:none}
  .lgv3-chat-tool{padding:0 8px}
  .lgv3-host-nav--4 button span{font-size:.49rem}
  .lgv3-host-nav--5 button span{font-size:.43rem}
}
@media(prefers-reduced-motion:reduce){
  .lgv3-chat-panel,.lgv3-chat-panel__sheet,.lgv3-chat-badge,.lgv3-nav-badge,.lgv3-chat-send{transition:none;animation:none}
}

/* ==================================================================
   ALPHA 8.1 — MESSAGES VOCAUX
   Enregistreur en ligne dans le composeur, onde compacte, lecture
   avec progression. Aucune icône ne dépasse 20px, la barre
   d'enregistrement reprend exactement la hauteur du composeur.
   ================================================================== */

/* ---- Bouton micro ---------------------------------------------- */
.lgv3-chat-mic{
  width:40px;height:40px;border-radius:13px;cursor:pointer;display:grid;place-items:center;
  border:1px solid #e5d5ca;background:#fffaf6;color:var(--g);
  transition:transform .14s ease,background .16s ease,box-shadow .16s ease
}
.lgv3-chat-mic svg{width:19px;height:19px}
.lgv3-chat-mic:active{transform:scale(.93);background:#fbeef0}
.lgv3-chat-mic:disabled{opacity:.45}
.lgv3-chat-composer.is-uploading .lgv3-chat-composer__field{opacity:.6}

/* ---- Barre d'enregistrement ------------------------------------ */
.lgv3-chat-recorder{
  display:grid;grid-template-columns:40px minmax(0,1fr) 40px;gap:8px;align-items:center;
  padding:0;border:0;background:none;min-height:40px;
  animation:lgv3-rec-in .2s cubic-bezier(.2,.8,.25,1)
}
@keyframes lgv3-rec-in{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
.lgv3-chat-recorder__cancel,.lgv3-chat-recorder__send{
  width:40px;height:40px;border-radius:13px;cursor:pointer;display:grid;place-items:center;
  border:1px solid #e8d6cb;background:#fffaf6;color:#93807a;transition:transform .14s ease,color .16s ease,border-color .16s ease
}
.lgv3-chat-recorder__cancel:hover{color:#c0182f;border-color:rgba(192,24,47,.3)}
.lgv3-chat-recorder__send{
  border:0;color:#fff8f4;
  background:linear-gradient(135deg,#77112a,#a01a3b);box-shadow:0 6px 16px rgba(110,14,35,.24)
}
.lgv3-chat-recorder__cancel:active,.lgv3-chat-recorder__send:active{transform:scale(.93)}
.lgv3-chat-recorder__cancel svg,.lgv3-chat-recorder__send svg{width:18px;height:18px}
.lgv3-chat-recorder__meter{
  display:grid;grid-template-columns:9px minmax(0,1fr) auto auto;align-items:center;gap:8px;
  height:40px;padding:0 11px;border-radius:13px;background:#fffdfa;border:1px solid #ecd9cf;
  transition:border-color .2s ease,background .2s ease
}
.lgv3-chat-recorder__dot{width:9px;height:9px;border-radius:50%;background:#c0182f;animation:lgv3-rec-pulse 1.1s ease-in-out infinite}
@keyframes lgv3-rec-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}
.lgv3-chat-recorder__bars{display:flex;align-items:center;gap:2px;height:20px;min-width:0;overflow:hidden}
.lgv3-chat-recorder__bars i{
  flex:1 1 0;min-width:2px;max-width:4px;height:100%;border-radius:2px;
  background:linear-gradient(180deg,#a92140,#7b0f24);transform:scaleY(.16);transform-origin:center;
  transition:transform .07s linear;
  animation:lgv3-rec-idle 1.15s ease-in-out infinite;animation-delay:calc(var(--i,0) * .055s)
}
/* Dès que l'analyseur alimente les barres, l'animation de repli s'efface pour laisser place
   au niveau réel de la voix. */
.lgv3-chat-recorder.is-live .lgv3-chat-recorder__bars i{animation:none}
@keyframes lgv3-rec-idle{0%,100%{transform:scaleY(.2)}50%{transform:scaleY(.72)}}
.lgv3-chat-recorder__meter b{
  font:800 .78rem/1 var(--sans);color:#6d1024;font-variant-numeric:tabular-nums;
  min-width:34px;text-align:right;letter-spacing:.01em
}
.lgv3-chat-recorder__meter small{font-size:.52rem;color:#9d8e88;white-space:nowrap;min-width:40px;text-align:right}

/* Dernières secondes : le cadran passe en alerte, sans clignotement agressif. */
.lgv3-chat-recorder.is-ending .lgv3-chat-recorder__meter{border-color:rgba(192,24,47,.38);background:#fff7f6}
.lgv3-chat-recorder.is-ending .lgv3-chat-recorder__meter small{color:#c0182f;font-weight:800}
.lgv3-chat-recorder.is-ending .lgv3-chat-recorder__dot{animation-duration:.6s}

/* ---- Bulle vocale ---------------------------------------------- */
/* Lecteur vocal : onde réelle, remplissage barre par barre, vitesse de lecture. */
.lgv3-chat-audio{
  display:grid;grid-template-columns:34px minmax(96px,1fr) auto;align-items:center;gap:9px;
  min-width:min(238px,74vw);padding:7px 11px 7px 8px
}
.lgv3-chat-audio__play{
  width:34px;height:34px;border-radius:12px;border:0;cursor:pointer;display:grid;place-items:center;
  background:rgba(123,15,36,.09);color:var(--g);transition:transform .14s ease,background .16s ease
}
.lgv3-chat-audio__play svg{width:15px;height:15px}
.lgv3-chat-audio__play:active{transform:scale(.92)}
.lgv3-chat-audio.is-playing .lgv3-chat-audio__play{background:rgba(123,15,36,.17)}
.lgv3-chat-audio__wave{
  position:relative;display:flex;align-items:center;gap:2px;height:26px;cursor:pointer;
  touch-action:none;outline:0
}
.lgv3-chat-audio__wave i{
  flex:1 1 0;min-width:2px;max-width:4px;border-radius:2px;
  height:calc(var(--h,40%) * .92);min-height:3px;
  background:rgba(123,15,36,.24);
  transition:background .12s linear,transform .12s ease
}
.lgv3-chat-audio__wave i.is-on{background:var(--g)}
.lgv3-chat-audio.is-playing .lgv3-chat-audio__wave i.is-on:last-of-type{transform:scaleY(1.06)}
.lgv3-chat-audio__wave:focus-visible{box-shadow:0 0 0 2px rgba(123,15,36,.25);border-radius:6px}
.lgv3-chat-audio__meta{display:grid;justify-items:center;gap:3px}
.lgv3-chat-audio b{font:800 .64rem/1 var(--sans);color:#7c6a66;font-variant-numeric:tabular-nums}
.lgv3-chat-audio__rate{
  min-width:30px;height:17px;padding:0 5px;border-radius:6px;cursor:pointer;
  border:1px solid rgba(123,15,36,.14);background:transparent;color:#8d7d78;
  font:900 .5rem/1 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:.01em
}
.lgv3-chat-audio__rate.is-on{border-color:rgba(123,15,36,.32);background:rgba(123,15,36,.08);color:var(--g)}
.lgv3-chat-audio__rate:active{transform:scale(.94)}

/* Vocal envoyé par soi-même : contraste inversé sur fond grenat. */
.lgv3-chat-msg.is-mine .lgv3-chat-audio__play{background:rgba(255,255,255,.2);color:#fff8f4}
.lgv3-chat-msg.is-mine .lgv3-chat-audio__wave i{background:rgba(255,246,242,.38)}
.lgv3-chat-msg.is-mine .lgv3-chat-audio__wave i.is-on{background:#fff8f4}
.lgv3-chat-msg.is-mine .lgv3-chat-audio b{color:rgba(255,246,242,.88)}
.lgv3-chat-msg.is-mine .lgv3-chat-audio__rate{border-color:rgba(255,255,255,.28);color:rgba(255,246,242,.82)}
.lgv3-chat-msg.is-mine .lgv3-chat-audio__rate.is-on{background:rgba(255,255,255,.2);color:#fff8f4}

/* Vocal du Narrateur : teinte parchemin, cohérente avec ses bulles texte. */
.lgv3-chat-msg.is-narrator:not(.is-mine) .lgv3-chat-audio__play{background:rgba(146,94,32,.14);color:#8a5c22}
.lgv3-chat-msg.is-narrator:not(.is-mine) .lgv3-chat-audio__wave i{background:rgba(146,94,32,.26)}
.lgv3-chat-msg.is-narrator:not(.is-mine) .lgv3-chat-audio__wave i.is-on{background:#8a5c22}

@media(max-width:380px){
  .lgv3-chat-audio{grid-template-columns:31px minmax(78px,1fr) auto;gap:7px;min-width:min(206px,72vw)}
  .lgv3-chat-audio__play{width:31px;height:31px}
  .lgv3-chat-recorder__meter small{display:none}
  .lgv3-chat-recorder__meter{grid-template-columns:9px minmax(0,1fr) auto}
}
@media(prefers-reduced-motion:reduce){
  .lgv3-chat-recorder,.lgv3-chat-recorder__dot,.lgv3-chat-recorder__bars i,.lgv3-chat-audio__wave i{animation:none!important;transition:none}
}

/* ==================================================================
   ALPHA 9 — LA NUIT
   Deux ambiances : la console claire du Narrateur, et la scène nocturne
   plein écran du joueur réveillé. Le fond sombre est réservé à ce seul
   moment de jeu, où il porte une intention : la nuit tombe vraiment.
   ================================================================== */

/* ---- Console du Narrateur --------------------------------------- */
.lgv3-night-progress{height:4px;border-radius:3px;background:#efe2d8;overflow:hidden}
.lgv3-night-progress i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#8e1730,#c9a15f);transition:width .45s cubic-bezier(.3,.8,.3,1)}

.lgv3-night-live{
  position:relative;display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:13px;
  padding:14px 15px;border-radius:22px;overflow:hidden;
  background:linear-gradient(135deg,#2d0b16 0%,#5c1026 55%,#7b0f24 100%);color:#fdf3ea;
  box-shadow:0 18px 44px rgba(58,8,22,.28)
}
.lgv3-night-live__halo{
  position:absolute;top:-60%;left:-10%;width:70%;height:220%;pointer-events:none;
  background:radial-gradient(circle,rgba(201,161,95,.42),transparent 62%);
  animation:lgv3-night-sweep 5.5s ease-in-out infinite
}
@keyframes lgv3-night-sweep{0%,100%{transform:translateX(0);opacity:.55}50%{transform:translateX(70%);opacity:.9}}
.lgv3-night-live__seal{
  position:relative;width:52px;height:52px;border-radius:17px;display:grid;place-items:center;
  background:rgba(255,246,238,.14);border:1px solid rgba(232,206,166,.4);color:#f0d9ae
}
.lgv3-night-live__seal svg{width:23px;height:23px}
.lgv3-night-live__copy{position:relative;min-width:0}
.lgv3-night-live__copy small{font-size:.53rem;letter-spacing:.16em;font-weight:900;color:#d9b483}
.lgv3-night-live__copy h2{margin:3px 0 2px;font:600 1.5rem/1.05 var(--serif)}
.lgv3-night-live__copy p{margin:0;font-size:.66rem;color:rgba(253,243,234,.76);line-height:1.4}
.lgv3-night-live .lgv3-timer-pill{position:relative;background:rgba(255,246,238,.14);border-color:rgba(232,206,166,.34);color:#f4e2c4}

.lgv3-night-idle{
  display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:13px;
  padding:14px 15px;border-radius:22px;background:#fbf3ec;border:1px solid #eedfd2
}
.lgv3-night-idle>span{width:44px;height:44px;border-radius:15px;display:grid;place-items:center;background:#f3e5d6;color:#7b0f24}
.lgv3-night-idle svg{width:21px;height:21px}
.lgv3-night-idle small{font-size:.52rem;letter-spacing:.15em;font-weight:900;color:#a58a5f}
.lgv3-night-idle h2{margin:3px 0 3px;font:600 1.24rem/1.1 var(--serif);color:#42292c}
.lgv3-night-idle p{margin:0;font-size:.63rem;color:#8b7d77;line-height:1.45}

.lgv3-night-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media(max-width:420px){.lgv3-night-actions{grid-template-columns:1fr}}

.lgv3-night-steps{display:grid;gap:7px}
.lgv3-night-step{
  position:relative;display:grid;grid-template-columns:40px minmax(0,1fr) 26px;align-items:center;gap:11px;
  width:100%;padding:9px 11px;border-radius:16px;cursor:pointer;text-align:left;
  border:1px solid #eee1d7;background:#fffdfa;
  transition:transform .15s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease
}
.lgv3-night-step:active{transform:scale(.99)}
.lgv3-night-step__num{
  position:relative;width:40px;height:40px;border-radius:13px;display:grid;place-items:center;
  background:#f5e8dd;color:#7b0f24;font:800 .92rem/1 var(--serif)
}
.lgv3-night-step__num svg{width:17px;height:17px}
.lgv3-night-step__copy{min-width:0;display:grid;gap:1px}
.lgv3-night-step__copy b{font:600 1.02rem/1.15 var(--serif);color:#3f2b2c}
.lgv3-night-step__copy small{font-size:.58rem;color:#8d7f79;line-height:1.35}
.lgv3-night-step__copy em{font-size:.53rem;color:#a8968f;font-style:normal}
.lgv3-night-step__copy em.is-empty{color:#c2b0a8}
.lgv3-night-step__mark{color:#c9b6ad}
.lgv3-night-step__mark svg{width:18px;height:18px}

.lgv3-night-step.is-awake{
  border-color:rgba(123,15,36,.36);background:linear-gradient(180deg,#fff6f0,#fdeae2);
  box-shadow:0 10px 26px rgba(123,15,36,.14),0 0 0 3px rgba(201,161,95,.16)
}
.lgv3-night-step.is-awake .lgv3-night-step__num{background:linear-gradient(145deg,#7b0f24,#a4193a);color:#fff6ef}
.lgv3-night-step.is-awake .lgv3-night-step__mark{color:#7b0f24}
.lgv3-night-step__pulse{
  position:absolute;inset:-5px;border-radius:16px;border:2px solid rgba(123,15,36,.5);
  animation:lgv3-night-ring 1.8s ease-out infinite
}
@keyframes lgv3-night-ring{0%{transform:scale(.86);opacity:.85}100%{transform:scale(1.22);opacity:0}}
.lgv3-night-step.is-done{background:#f6f9f4;border-color:#dde8d7}
.lgv3-night-step.is-done .lgv3-night-step__num{background:#e3efdd;color:#4c6b45}
.lgv3-night-step.is-done .lgv3-night-step__mark{color:#7d9a75}
.lgv3-night-step.is-skipped{opacity:.62}

/* ---- Résultat de la nuit ---------------------------------------- */
.lgv3-night-deaths{display:grid;gap:7px}
.lgv3-night-deaths article{
  display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:10px;
  padding:9px 11px;border-radius:15px;background:#fdf4f2;border:1px solid #f0dcd6
}
.lgv3-night-deaths__mark{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:#f6e2dd;color:#a3182f}
.lgv3-night-deaths__mark svg{width:17px;height:17px}
.lgv3-night-deaths b{font:600 1rem/1.1 var(--serif);color:#3f2b2c}
.lgv3-night-deaths small{display:block;font-size:.57rem;color:#957e79;margin-top:2px}
.lgv3-night-deaths em{font-size:.52rem;color:#b09a94;font-style:normal}
.lgv3-night-peaceful{
  display:grid;justify-items:center;gap:4px;text-align:center;padding:20px 14px;color:#7d8b76
}
.lgv3-night-peaceful svg{width:24px;height:24px;color:#587151}
.lgv3-night-peaceful b{font:600 1.06rem/1.15 var(--serif);color:#3f4a3b}
.lgv3-night-peaceful small{font-size:.6rem;color:#8b968a;max-width:280px;line-height:1.45}
.lgv3-night-fate{
  display:grid;justify-items:center;gap:5px;text-align:center;padding:22px 16px;border-radius:22px;
  background:#f4f8f1;border:1px solid #dde8d7
}
.lgv3-night-fate>span{width:46px;height:46px;border-radius:16px;display:grid;place-items:center;background:#e3efdd;color:#4c6b45}
.lgv3-night-fate h2{margin:3px 0 0;font:600 1.34rem/1.1 var(--serif);color:#38452f}
.lgv3-night-fate p{margin:0;font-size:.64rem;color:#7f8b78}
.lgv3-night-fate.is-dead{background:#fdf3f1;border-color:#f0dcd6}
.lgv3-night-fate.is-dead>span{background:#f6e2dd;color:#a3182f}
.lgv3-night-fate.is-dead h2{color:#5a2a2a}
.lgv3-night-fate.is-dead p{color:#96807b}

/* ---- Joueur endormi --------------------------------------------- */
.lgv3-night-asleep .lgv3-game-wrap{min-height:72svh;display:grid;align-content:center}
.lgv3-night-sleep-card{
  position:relative;overflow:hidden;display:grid;justify-items:center;gap:6px;text-align:center;
  padding:36px 22px 30px;border-radius:28px;color:#f6e9dd;
  background:radial-gradient(120% 90% at 50% -10%,#4b1024 0,#2b0a15 62%,#1d0710 100%);
  box-shadow:0 22px 60px rgba(30,7,15,.34)
}
.lgv3-night-sleep-card__sky{position:absolute;inset:0;pointer-events:none}
.lgv3-night-sleep-card__sky i{
  position:absolute;width:3px;height:3px;border-radius:50%;background:#f3dcae;opacity:.5;
  animation:lgv3-star 3.4s ease-in-out infinite
}
.lgv3-night-sleep-card__sky i:nth-child(1){top:18%;left:22%;animation-delay:.2s}
.lgv3-night-sleep-card__sky i:nth-child(2){top:30%;right:18%;animation-delay:1.1s}
.lgv3-night-sleep-card__sky i:nth-child(3){bottom:24%;left:34%;animation-delay:2s}
@keyframes lgv3-star{0%,100%{opacity:.22;transform:scale(.8)}50%{opacity:.9;transform:scale(1.25)}}
.lgv3-night-sleep-card__moon{
  position:relative;width:58px;height:58px;border-radius:20px;display:grid;place-items:center;
  background:rgba(246,233,221,.1);border:1px solid rgba(240,217,174,.34);color:#f0d9ae;
  animation:lgv3-night-breathe 4.2s ease-in-out infinite
}
.lgv3-night-sleep-card__moon svg{width:26px;height:26px}
@keyframes lgv3-night-breathe{0%,100%{transform:translateY(0);opacity:.92}50%{transform:translateY(-4px);opacity:1}}
.lgv3-night-sleep-card small{position:relative;font-size:.53rem;letter-spacing:.18em;font-weight:900;color:#d3ab77}
.lgv3-night-sleep-card h2{position:relative;margin:2px 0 0;font:600 1.72rem/1.08 var(--serif)}
.lgv3-night-sleep-card p{position:relative;margin:0;max-width:300px;font-size:.68rem;line-height:1.5;color:rgba(246,233,221,.74)}
.lgv3-night-sleep-card__role{
  position:relative;margin-top:8px;display:inline-flex;align-items:center;gap:6px;
  padding:6px 11px;border-radius:11px;font-size:.58rem;font-weight:800;
  background:rgba(246,233,221,.1);border:1px solid rgba(240,217,174,.26);color:#f0d9ae
}
.lgv3-night-sleep-card__role svg{width:14px;height:14px}

/* ---- Scène du joueur réveillé ----------------------------------- */
.lgv3-night-stage{
  position:relative;isolation:isolate;
  background:radial-gradient(130% 80% at 50% -10%,#511128 0,#2c0a16 58%,#190610 100%);
  color:#f7ebe0;padding-top:env(safe-area-inset-top)
}
.lgv3-night-stage__sky{
  position:absolute;inset:0;z-index:-2;pointer-events:none;opacity:.5;
  background:
    radial-gradient(2px 2px at 18% 14%,rgba(243,220,174,.9),transparent 60%),
    radial-gradient(2px 2px at 74% 9%,rgba(243,220,174,.7),transparent 60%),
    radial-gradient(1.5px 1.5px at 42% 22%,rgba(243,220,174,.6),transparent 60%),
    radial-gradient(1.5px 1.5px at 88% 26%,rgba(243,220,174,.55),transparent 60%)
}
.lgv3-night-stage__glow{
  position:absolute;top:-14%;left:50%;transform:translateX(-50%);width:min(560px,140%);height:340px;z-index:-1;
  pointer-events:none;background:radial-gradient(circle,rgba(201,161,95,.3),transparent 66%);
  animation:lgv3-night-glow 6.5s ease-in-out infinite
}
@keyframes lgv3-night-glow{0%,100%{opacity:.55;transform:translateX(-50%) scale(1)}50%{opacity:1;transform:translateX(-50%) scale(1.08)}}
.lgv3-night-stage__inner{display:grid;gap:13px;padding:22px 0 8px;animation:lgv3-stage-in .34s cubic-bezier(.2,.8,.25,1)}
@keyframes lgv3-stage-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.lgv3-night-stage__head{display:grid;justify-items:center;gap:5px;text-align:center}
.lgv3-night-stage__crest{
  position:relative;width:88px;height:88px;border-radius:28px;overflow:hidden;display:grid;place-items:center;
  background:rgba(247,235,224,.08);border:1px solid rgba(240,217,174,.32);
  box-shadow:0 14px 36px rgba(14,4,9,.42),0 0 0 6px rgba(201,161,95,.08)
}
.lgv3-night-stage__crest img{width:100%;height:100%;object-fit:cover}
.lgv3-night-stage__crest i{position:absolute;font-size:1.6rem;font-style:normal}
.lgv3-night-stage__crest img[src]:not([src=""]){position:relative;z-index:1}
.lgv3-night-stage__head small{font-size:.54rem;letter-spacing:.2em;font-weight:900;color:#d9b483}
.lgv3-night-stage__head h1{margin:1px 0 0;font:600 2.05rem/1.03 var(--serif)}
.lgv3-night-stage__head p{margin:0;max-width:320px;font-size:.72rem;line-height:1.5;color:rgba(247,235,224,.78)}
.lgv3-night-stage__timer{
  margin-top:5px;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:12px;
  background:rgba(247,235,224,.1);border:1px solid rgba(240,217,174,.28);color:#f2ddba;
  font:800 .72rem/1 var(--sans);font-variant-numeric:tabular-nums
}
.lgv3-night-stage__timer svg{width:14px;height:14px}
.lgv3-night-stage__hint{
  margin:2px 0 0;display:grid;grid-template-columns:16px minmax(0,1fr);gap:8px;align-items:start;
  font-size:.6rem;line-height:1.45;color:rgba(247,235,224,.62)
}
.lgv3-night-stage__hint svg{width:14px;height:14px;margin-top:1px;color:#c9a15f}

/* Cibles */
.lgv3-night-targets{display:grid;gap:7px}
.lgv3-night-target{
  display:grid;grid-template-columns:38px minmax(0,1fr) 22px;align-items:center;gap:11px;
  padding:9px 11px;border-radius:16px;cursor:pointer;text-align:left;color:#f7ebe0;
  background:rgba(247,235,224,.07);border:1px solid rgba(247,235,224,.14);
  animation:lgv3-target-in .3s cubic-bezier(.2,.8,.25,1) both;animation-delay:var(--d,0ms);
  transition:transform .15s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease
}
@keyframes lgv3-target-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.lgv3-night-target:active{transform:scale(.985)}
.lgv3-night-target__avatar{
  width:38px;height:38px;border-radius:13px;display:grid;place-items:center;
  background:rgba(201,161,95,.18);color:#f0d9ae;font:800 .92rem/1 var(--serif)
}
.lgv3-night-target__copy{min-width:0;display:grid;gap:1px}
.lgv3-night-target__copy b{font:600 1.04rem/1.15 var(--serif)}
.lgv3-night-target__copy small{font-size:.55rem;color:rgba(247,235,224,.6)}
.lgv3-night-target__tick{opacity:0;color:#1d0710;transform:scale(.6);transition:opacity .16s ease,transform .2s cubic-bezier(.2,.9,.3,1.4)}
.lgv3-night-target__tick svg{width:16px;height:16px}
.lgv3-night-target.is-selected{
  background:linear-gradient(135deg,rgba(201,161,95,.26),rgba(201,161,95,.12));
  border-color:rgba(232,206,166,.62);box-shadow:0 10px 26px rgba(201,161,95,.16)
}
.lgv3-night-target.is-selected .lgv3-night-target__avatar{background:linear-gradient(145deg,#e8cea6,#c9a15f);color:#3a1018}
.lgv3-night-target.is-selected .lgv3-night-target__tick{opacity:1;transform:none;color:#f0d9ae}
.lgv3-night-target.is-disabled{opacity:.4;cursor:not-allowed}

/* Confirmation */
.lgv3-night-confirm{
  display:grid;grid-template-columns:38px minmax(0,1fr) 22px;align-items:center;gap:11px;
  width:100%;min-height:58px;padding:8px 12px 8px 8px;border-radius:18px;cursor:pointer;border:0;
  background:linear-gradient(135deg,#e8cea6 0%,#c9a15f 62%,#b98f4d 100%);color:#2c0a16;
  box-shadow:0 14px 32px rgba(160,120,58,.28);
  transition:transform .15s ease,box-shadow .2s ease,opacity .2s ease
}
.lgv3-night-confirm:active{transform:scale(.985)}
.lgv3-night-confirm__mark{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:rgba(44,10,22,.14)}
.lgv3-night-confirm__mark svg{width:18px;height:18px}
.lgv3-night-confirm__copy b{font:600 1.1rem/1.05 var(--serif)}
.lgv3-night-confirm__arrow svg{width:17px;height:17px}
.lgv3-night-confirm.is-disabled{opacity:.42;box-shadow:none;pointer-events:none}

/* Meute */
.lgv3-night-pack{padding:10px 12px;border-radius:15px;background:rgba(247,235,224,.06);border:1px solid rgba(247,235,224,.12)}
.lgv3-night-pack small{font-size:.5rem;letter-spacing:.16em;font-weight:900;color:#d0a877}
.lgv3-night-pack div{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.lgv3-night-pack span{padding:4px 9px;border-radius:9px;font-size:.62rem;font-weight:700;background:rgba(201,161,95,.16);color:#f2ddba}
.lgv3-night-tally{padding:11px 12px;border-radius:15px;background:rgba(247,235,224,.06);border:1px solid rgba(247,235,224,.12)}
.lgv3-night-tally__head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.lgv3-night-tally__head b{font:600 .96rem/1 var(--serif)}
.lgv3-night-tally__head em{font-size:.6rem;font-style:normal;font-weight:800;color:#d0a877;font-variant-numeric:tabular-nums}
.lgv3-night-tally p{margin:6px 0 0;font-size:.6rem;color:rgba(247,235,224,.6);line-height:1.45}
.lgv3-night-tally__rows{display:grid;gap:4px;margin-top:7px}
.lgv3-night-tally__rows span{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 9px;border-radius:10px;background:rgba(247,235,224,.06)}
.lgv3-night-tally__rows b{font-size:.68rem;font-weight:700}
.lgv3-night-tally__rows i{font-style:normal;font-weight:900;font-size:.66rem;color:#f0d9ae}
.lgv3-night-tally__locked,.lgv3-night-tally__tie{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:.6rem;font-weight:800}
.lgv3-night-tally__locked{color:#a9c79f}.lgv3-night-tally__tie{color:#e0a9a9}
.lgv3-night-tally__locked svg,.lgv3-night-tally__tie svg{width:14px;height:14px}

/* Sorcière */
.lgv3-night-victim{
  display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:11px;
  padding:11px 12px;border-radius:16px;background:rgba(163,24,47,.16);border:1px solid rgba(224,169,169,.28)
}
.lgv3-night-victim.is-empty{background:rgba(88,113,81,.14);border-color:rgba(169,199,159,.26)}
.lgv3-night-victim>span{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:rgba(247,235,224,.1);color:#f0d9ae}
.lgv3-night-victim svg{width:19px;height:19px}
.lgv3-night-victim small{font-size:.5rem;letter-spacing:.14em;font-weight:900;color:#d0a877}
.lgv3-night-victim b{display:block;margin-top:2px;font:600 1.14rem/1.1 var(--serif)}
.lgv3-night-potions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lgv3-night-potion{
  display:grid;justify-items:center;gap:2px;padding:13px 9px;border-radius:16px;cursor:pointer;text-align:center;
  background:rgba(247,235,224,.07);border:1px solid rgba(247,235,224,.14);color:#f7ebe0;
  transition:transform .15s ease,background .18s ease,border-color .18s ease
}
.lgv3-night-potion span{font-size:1.5rem;line-height:1}
.lgv3-night-potion b{font-size:.72rem;font-weight:800}
.lgv3-night-potion small{font-size:.53rem;color:rgba(247,235,224,.6);line-height:1.35}
.lgv3-night-potion:active{transform:scale(.97)}
.lgv3-night-potion.is-active{border-color:rgba(232,206,166,.62);background:linear-gradient(135deg,rgba(201,161,95,.26),rgba(201,161,95,.1))}
.lgv3-night-potion.is-disabled{opacity:.38;pointer-events:none}
.lgv3-night-skip{
  display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:46px;
  border-radius:15px;cursor:pointer;background:transparent;border:1px dashed rgba(247,235,224,.24);
  color:rgba(247,235,224,.72);font-size:.66rem;font-weight:700
}
.lgv3-night-skip svg{width:15px;height:15px}

/* Voyante */
.lgv3-night-vision{
  display:grid;justify-items:center;gap:4px;text-align:center;padding:26px 18px;border-radius:22px;
  background:rgba(247,235,224,.07);border:1px solid rgba(240,217,174,.3);
  animation:lgv3-vision-in .4s cubic-bezier(.2,.8,.25,1)
}
@keyframes lgv3-vision-in{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
.lgv3-night-vision__orb{
  width:74px;height:74px;border-radius:50%;display:grid;place-items:center;font-size:2rem;
  background:radial-gradient(circle at 34% 30%,rgba(240,217,174,.4),rgba(123,15,36,.35));
  border:1px solid rgba(240,217,174,.4);animation:lgv3-night-breathe 3.6s ease-in-out infinite
}
.lgv3-night-vision small{font-size:.52rem;letter-spacing:.18em;font-weight:900;color:#d0a877;margin-top:6px}
.lgv3-night-vision h2{margin:2px 0 0;font:600 1.5rem/1.06 var(--serif)}
.lgv3-night-vision b{font-size:.94rem;font-weight:800;color:#f0d9ae}
.lgv3-night-vision p{margin:6px 0 0;max-width:290px;font-size:.62rem;line-height:1.45;color:rgba(247,235,224,.66)}

/* Confirmations et vides */
.lgv3-night-done{
  display:grid;grid-template-columns:20px minmax(0,1fr);gap:9px;align-items:start;
  padding:10px 12px;border-radius:14px;background:rgba(88,113,81,.18);border:1px solid rgba(169,199,159,.3)
}
.lgv3-night-done svg{width:17px;height:17px;color:#b7d3ad;margin-top:1px}
.lgv3-night-done b{font-size:.74rem;font-weight:800}
.lgv3-night-done small{display:block;margin-top:2px;font-size:.57rem;color:rgba(247,235,224,.68);line-height:1.4}
.lgv3-night-empty{
  display:grid;justify-items:center;gap:4px;text-align:center;padding:24px 16px;border-radius:18px;
  background:rgba(247,235,224,.05);border:1px dashed rgba(247,235,224,.2)
}
.lgv3-night-empty svg{width:22px;height:22px;color:#c9a15f}
.lgv3-night-empty b{font:600 1rem/1.1 var(--serif)}
.lgv3-night-empty small{font-size:.6rem;color:rgba(247,235,224,.62)}

@media(max-width:560px){
  .lgv3-night-stage__crest{width:78px;height:78px;border-radius:24px}
  .lgv3-night-stage__head h1{font-size:1.82rem}
  .lgv3-night-live{grid-template-columns:46px minmax(0,1fr);row-gap:9px;padding:12px 13px}
  .lgv3-night-live__seal{width:46px;height:46px}
  .lgv3-night-live .lgv3-timer-pill{grid-column:1/-1;justify-self:start}
  .lgv3-night-step{grid-template-columns:36px minmax(0,1fr) 22px;gap:9px}
  .lgv3-night-step__num{width:36px;height:36px;border-radius:12px}
}
@media(prefers-reduced-motion:reduce){
  .lgv3-night-live__halo,.lgv3-night-step__pulse,.lgv3-night-stage__glow,.lgv3-night-sleep-card__moon,
  .lgv3-night-sleep-card__sky i,.lgv3-night-vision__orb,.lgv3-night-stage__inner,.lgv3-night-target,
  .lgv3-night-vision{animation:none!important}
  .lgv3-night-progress i{transition:none}
}

/* ==================================================================
   ALPHA 9.2 — SIGNALISATION ET CADRAGE DE LA NUIT
   ================================================================== */

/* ---- Cadre de signalisation vert ---------------------------------
   Quatre liserés fixés aux bords de l'écran, plus une lueur intérieure.
   Purement décoratif : pointer-events désactivé, donc jamais un clic perdu.
   Le vert est un émeraude sourd, choisi pour rester lisible sur le décor
   grenat sans jamais virer au néon.                                  */
.lgv3-signal{position:fixed;inset:0;z-index:118;pointer-events:none}
.lgv3-signal i{
  position:absolute;background-color:rgba(63,174,114,.38);background-repeat:no-repeat;
  box-shadow:0 0 14px rgba(63,174,114,.55)
}
/* Bords horizontaux : une vague claire parcourt la largeur. */
.lgv3-signal i:nth-child(1),.lgv3-signal i:nth-child(2){
  left:0;right:0;height:5px;
  background-image:linear-gradient(90deg,transparent,#7dffc0 50%,transparent);
  background-size:42% 100%;animation:lgv3-wave-h 2.6s linear infinite
}
.lgv3-signal i:nth-child(1){top:0}
.lgv3-signal i:nth-child(2){bottom:0;animation-direction:reverse;animation-delay:1.3s}
/* Bords verticaux : la même vague, en hauteur, décalée pour tourner. */
.lgv3-signal i:nth-child(3),.lgv3-signal i:nth-child(4){
  top:0;bottom:0;width:5px;
  background-image:linear-gradient(180deg,transparent,#7dffc0 50%,transparent);
  background-size:100% 42%;animation:lgv3-wave-v 2.6s linear infinite
}
.lgv3-signal i:nth-child(3){left:0;animation-direction:reverse;animation-delay:1.95s}
.lgv3-signal i:nth-child(4){right:0;animation-delay:.65s}
@keyframes lgv3-wave-h{0%{background-position:-45% 0}100%{background-position:145% 0}}
@keyframes lgv3-wave-v{0%{background-position:0 -45%}100%{background-position:0 145%}}

/* Halo intérieur qui respire : le signal reste perceptible même en vision périphérique. */
.lgv3-signal b{
  position:absolute;inset:0;display:block;
  box-shadow:inset 0 0 54px rgba(63,174,114,.34),inset 0 0 0 1px rgba(63,174,114,.28);
  animation:lgv3-signal-breathe 2.6s ease-in-out infinite
}
@keyframes lgv3-signal-breathe{0%,100%{opacity:.55}50%{opacity:1}}

/* Version du Narrateur : plus fine et plus lente, présente sans être envahissante. */
.lgv3-signal--host i{height:4px;background-color:rgba(63,174,114,.34);box-shadow:0 0 12px rgba(63,174,114,.45);animation-duration:3.4s}
.lgv3-signal--host i:nth-child(3),.lgv3-signal--host i:nth-child(4){width:4px;height:auto}
.lgv3-signal--host b{box-shadow:inset 0 0 34px rgba(63,174,114,.18);animation-duration:3.6s}

/* Action enregistrée : la vague s'arrête, le liseré reste vert et calme. */
.lgv3-signal--done i{animation:none;background-image:none;background-color:rgba(63,174,114,.5);box-shadow:0 0 10px rgba(63,174,114,.35)}
.lgv3-signal--done b{animation:none;opacity:.7;box-shadow:inset 0 0 34px rgba(63,174,114,.2)}

@media(prefers-reduced-motion:reduce){
  .lgv3-signal i,.lgv3-signal b{animation:none!important;opacity:.9}
  .lgv3-signal i{background-image:none;background-color:rgba(63,174,114,.55)}
}

/* ---- Blason du rôle : cadrage soigné -----------------------------
   Les visuels de rôles sont des illustrations verticales portant du texte.
   On recadre sur le haut de l'image et on adoucit le bas, sinon le titre
   imprimé dans le visuel se retrouve écrasé et illisible.              */
.lgv3-night-stage__crest{width:104px;height:104px;border-radius:34px;padding:0}
.lgv3-night-stage__crest img{
  position:relative;z-index:1;width:100%;height:100%;object-fit:cover;object-position:50% 16%;
  mask-image:linear-gradient(180deg,#000 0,#000 68%,rgba(0,0,0,.28) 100%);
  -webkit-mask-image:linear-gradient(180deg,#000 0,#000 68%,rgba(0,0,0,.28) 100%)
}
.lgv3-night-stage__crest i{position:absolute;z-index:0;font-size:2.1rem;font-style:normal;opacity:.9}
.lgv3-night-stage__crest:after{
  content:"";position:absolute;inset:0;z-index:2;border-radius:inherit;pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(240,217,174,.34),inset 0 -22px 30px rgba(28,7,14,.5)
}

/* ---- Liste de cibles encadrée ------------------------------------ */
.lgv3-night-list{
  border-radius:20px;padding:10px;
  background:rgba(247,235,224,.05);border:1px solid rgba(247,235,224,.1)
}
.lgv3-night-list__head{
  display:flex;align-items:baseline;justify-content:space-between;gap:9px;padding:1px 4px 9px
}
.lgv3-night-list__head b{font:600 .96rem/1 var(--serif);color:#f7ebe0}
.lgv3-night-list__head em{font-size:.55rem;font-style:normal;font-weight:800;color:#d0a877}
.lgv3-night-list .lgv3-night-targets{max-height:min(46svh,392px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-right:2px}
.lgv3-night-list .lgv3-night-targets::-webkit-scrollbar{width:3px}
.lgv3-night-list .lgv3-night-targets::-webkit-scrollbar-thumb{background:rgba(240,217,174,.3);border-radius:3px}

/* ---- Confirmation toujours atteignable ---------------------------
   Collée au bas de la scène, au-dessus de la messagerie : plus besoin de
   dérouler huit joueurs pour valider son choix.                        */
.lgv3-night-confirm-dock{
  position:sticky;bottom:calc(var(--chat-dock-h) + 14px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px));
  z-index:12;padding-top:4px
}
.lgv3-app:not(.has-chat-dock) .lgv3-night-confirm-dock{bottom:calc(14px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))}
.lgv3-night-confirm-dock{
  background:linear-gradient(180deg,rgba(25,6,16,0),rgba(25,6,16,.86) 46%,rgba(25,6,16,.96));
  padding:16px 0 10px;margin-top:-10px
}

/* ---- Scène nocturne : respiration et place réservée --------------- */
.lgv3-night-stage{padding-bottom:calc(var(--chat-dock-h) + 26px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))}
.lgv3-night-stage__inner{padding-bottom:4px}
.lgv3-night-target{min-height:56px}
.lgv3-night-stage .lgv3-night-potions,
.lgv3-night-stage .lgv3-night-victim,
.lgv3-night-stage .lgv3-night-pack,
.lgv3-night-stage .lgv3-night-tally{margin:0}

/* ---- Messagerie en habillage nocturne ----------------------------
   Une barre ivoire posée sur un décor de nuit jure et attire l'œil au
   mauvais endroit. Sur la scène nocturne, elle passe en verre sombre.  */
.lgv3-app.is-night-stage .lgv3-chat-dock{
  background:rgba(38,12,22,.9);border-color:rgba(240,217,174,.2);
  box-shadow:0 14px 34px rgba(12,3,8,.5),0 1px 0 rgba(240,217,174,.08) inset
}
.lgv3-app.is-night-stage .lgv3-chat-dock button{color:rgba(247,235,224,.72)}
.lgv3-app.is-night-stage .lgv3-chat-dock button.is-active{
  color:#f0d9ae;background:linear-gradient(180deg,rgba(240,217,174,.16),rgba(240,217,174,.06));
  box-shadow:0 0 0 1px rgba(240,217,174,.18) inset
}
.lgv3-app.is-night-stage .lgv3-chat-dock button.is-active:after{background:#f0d9ae}
.lgv3-app.is-night-stage .lgv3-chat-dock button.is-locked{color:rgba(247,235,224,.4)}
.lgv3-app.is-night-stage .lgv3-chat-badge{border-color:rgba(38,12,22,.9)}

/* ---- Chronomètre : dernières secondes et temps écoulé -------------- */
.lgv3-night-stage__timer.is-low,.lgv3-timer-pill.is-low{border-color:rgba(224,169,169,.5);color:#f3cfcf}
.lgv3-night-stage__timer.is-low b,.lgv3-timer-pill.is-low b{animation:lgv3-timer-tick 1s steps(2) infinite}
@keyframes lgv3-timer-tick{50%{opacity:.45}}
.lgv3-night-stage__timer.is-over,.lgv3-timer-pill.is-over{
  border-color:rgba(240,217,174,.32);color:#e8cea6;background:rgba(240,217,174,.1)
}
.lgv3-night-stage__timer.is-over b{font-size:.62rem;letter-spacing:.02em}
@media(prefers-reduced-motion:reduce){.lgv3-night-stage__timer.is-low b,.lgv3-timer-pill.is-low b{animation:none}}

@media(max-width:560px){
  .lgv3-night-stage{padding-left:16px;padding-right:16px}
  .lgv3-night-stage__crest{width:94px;height:94px;border-radius:30px}
  .lgv3-night-list{padding:8px;border-radius:18px}
  .lgv3-night-list .lgv3-night-targets{max-height:min(42svh,340px)}
  .lgv3-night-confirm-dock{padding-top:14px}
}

/* ==================================================================
   ALPHA 10 — LE VILLAGE EN JOURNÉE
   Tout est exprimé en cqw — 1 % de la largeur de l'anneau. La
   composition est donc rigoureusement identique sur un écran de
   320 px et sur une tablette, sans une seule requête média, et les
   tailles viennent du calcul de géométrie, jamais d'un chiffre posé
   à la main.
   ================================================================== */

.lgv3-village{
  padding:calc(6px + env(safe-area-inset-top)) 12px 0;
  display:grid;grid-template-rows:auto 1fr;align-content:start
}
.lgv3-village__stage{display:grid;align-content:center;justify-items:center;gap:14px;min-height:0}
.lgv3-village__caption{
  margin:0;display:grid;justify-items:center;gap:2px;text-align:center;
  padding:9px 16px;border-radius:14px;
  background:rgba(255,253,250,.8);border:1px solid #f0e4da
}
.lgv3-village__caption b{font:600 1.02rem/1.1 var(--serif);color:#5c3a2e}
.lgv3-village__caption span{font-size:.61rem;color:#8d7f79;letter-spacing:.01em}
.lgv3-app.is-village .lgv3-screen{padding-bottom:calc(var(--chat-dock-h) + 24px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))}

/* ---- Bandeau compact tout en haut -------------------------------- */
.lgv3-village-bar{
  display:flex;align-items:center;gap:9px;
  padding:6px 12px;border-radius:13px;
  background:rgba(255,253,250,.92);border:1px solid #eee1d7;
  box-shadow:0 2px 10px rgba(74,46,38,.05)
}
.lgv3-village-bar__state{display:flex;align-items:center;gap:6px;font-size:.63rem;font-weight:800;color:#4c6b45;white-space:nowrap}
.lgv3-village-bar__state i{
  width:7px;height:7px;border-radius:50%;background:#4c9a5e;
  box-shadow:0 0 0 3px rgba(76,154,94,.16);animation:lgv3-live-dot 2.4s ease-in-out infinite
}
@keyframes lgv3-live-dot{0%,100%{opacity:.72}50%{opacity:1}}
.lgv3-village-bar__code{margin-left:auto;font-size:.62rem;color:#8d7f79;white-space:nowrap}
.lgv3-village-bar__code b{font-weight:900;color:#7b0f24;letter-spacing:.1em;font-variant-numeric:tabular-nums}
.lgv3-village-bar__day{
  padding:3px 8px;border-radius:8px;font-size:.54rem;font-weight:900;letter-spacing:.05em;
  background:#f6e9db;color:#8a5f2c;white-space:nowrap
}

/* ---- L'anneau ----------------------------------------------------- */
.lgv3-ring{
  container-type:inline-size;
  position:relative;width:100%;max-width:min(480px,72svh);margin:0 auto;aspect-ratio:1;
  display:grid;place-items:center
}
.lgv3-ring__arc{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.lgv3-ring__arc circle{
  fill:none;stroke:rgba(123,15,36,.2);stroke-width:.35;
  stroke-dasharray:1.1 2.6;stroke-linecap:round;
  transform-origin:50px 50px;animation:lgv3-ring-turn 120s linear infinite
}
@keyframes lgv3-ring-turn{to{transform:rotate(360deg)}}

/* Étoiles d'ornement, exactement à mi-chemin entre deux sièges. */
.lgv3-ring__star{position:absolute;inset:0;transform:rotate(var(--a));pointer-events:none}
.lgv3-ring__star:before{
  content:"";position:absolute;left:50%;top:calc(50% - var(--r) * 1cqw);
  width:2.1cqw;height:2.1cqw;min-width:6px;min-height:6px;transform:translate(-50%,-50%);
  background:linear-gradient(135deg,#d3b078,#a4193a);
  clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);
  opacity:.5
}

/* ---- Les sièges --------------------------------------------------- */
.lgv3-ring__seats{position:absolute;inset:0}
.lgv3-seat{position:absolute;inset:0;transform:rotate(var(--a));pointer-events:none}
.lgv3-seat__inner{
  position:absolute;left:50%;top:calc(50% - var(--r) * 1cqw);
  width:calc(var(--label) * 1cqw);
  transform:translate(-50%,-50%) rotate(calc(var(--a) * -1));
  display:grid;justify-items:center;gap:.6cqw;text-align:center;pointer-events:auto
}
.lgv3-seat__medallion{
  position:relative;width:calc(var(--seat) * 1cqw);aspect-ratio:1;border-radius:50%;
  filter:drop-shadow(0 3px 7px rgba(74,46,38,.16));
  transition:transform .2s cubic-bezier(.2,.8,.25,1),filter .2s ease
}
.lgv3-seat__medallion img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}
.lgv3-seat:not(.is-dead) .lgv3-seat__medallion:hover{transform:translateY(-2px);filter:drop-shadow(0 6px 12px rgba(74,46,38,.24))}

/* Présence : pastille discrète, calibrée sur le médaillon. */
.lgv3-seat__dot{
  position:absolute;right:2%;bottom:6%;width:26%;aspect-ratio:1;border-radius:50%;
  border:.18em solid #fffdfa;box-sizing:border-box;min-width:8px
}
.lgv3-seat__dot.is-online{background:#37a45c;box-shadow:0 1px 4px rgba(20,60,32,.35)}
.lgv3-seat__dot.is-offline{background:#c0182f;box-shadow:0 1px 4px rgba(90,10,20,.32)}

/* Mort : médaillon éteint, tête de mort par-dessus. */
.lgv3-seat.is-dead .lgv3-seat__medallion img{filter:grayscale(1) contrast(.86) brightness(.96);opacity:.55}
.lgv3-seat.is-dead .lgv3-seat__dot{opacity:.45}
.lgv3-seat__skull{
  position:absolute;inset:0;display:grid;place-items:center;color:#c0182f;
  filter:drop-shadow(0 1px 4px rgba(120,8,22,.45));animation:lgv3-skull-in .34s cubic-bezier(.2,.9,.3,1.3)
}
.lgv3-seat__skull svg{width:46%;height:46%}
@keyframes lgv3-skull-in{from{opacity:0;transform:scale(.55)}to{opacity:1;transform:none}}
.lgv3-seat.is-dead .lgv3-seat__name{color:#a89a94;text-decoration:line-through;text-decoration-color:rgba(192,24,47,.55)}

/* Nom du joueur : taille issue du calcul, bornée pour rester lisible. */
.lgv3-seat__name{
  font-family:var(--serif);font-weight:600;line-height:1.15;color:#42292c;
  font-size:.62rem;font-size:clamp(8.5px,calc(var(--name) * 1cqw),15px);
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.lgv3-seat__name em{
  display:block;font-style:normal;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  font-size:.78em;color:#a4193a;margin-top:.1em
}
.lgv3-seat.is-you .lgv3-seat__medallion{filter:drop-shadow(0 0 0 rgba(0,0,0,0)) drop-shadow(0 3px 9px rgba(123,15,36,.32))}
.lgv3-seat.is-you .lgv3-seat__medallion:after{
  content:"";position:absolute;inset:-4%;border-radius:50%;border:.14em solid rgba(123,15,36,.42);pointer-events:none
}

/* Complices : mention réservée au clan, jamais rendue aux autres. */
.lgv3-seat__ally{
  max-width:100%;overflow:hidden;text-overflow:ellipsis;
  padding:.15em .5em;border-radius:.45em;font-weight:900;letter-spacing:.04em;white-space:nowrap;
  font-size:.5rem;font-size:clamp(7px,calc(var(--name) * .78 * 1cqw),11px);
  color:#fff6f2;background:linear-gradient(135deg,#6d1024,#a4193a);
  box-shadow:0 1px 4px rgba(109,16,36,.3)
}
.lgv3-seat.is-ally .lgv3-seat__medallion:after{
  content:"";position:absolute;inset:-4%;border-radius:50%;border:.14em solid rgba(164,25,58,.5);pointer-events:none
}

/* ---- Le meneur au centre ------------------------------------------ */
.lgv3-hearth{
  position:relative;height:calc(var(--hearth) * 1cqw);
  display:grid;grid-template-rows:minmax(0,1fr) auto;justify-items:center;align-items:end;gap:.8cqw
}
.lgv3-hearth__clearing{
  position:absolute;left:50%;top:50%;width:150%;height:130%;transform:translate(-50%,-50%);
  pointer-events:none;z-index:-1;
  background:radial-gradient(circle,rgba(255,244,228,.92) 0,rgba(253,240,225,.5) 52%,rgba(250,238,224,0) 74%)
}
.lgv3-hearth img{height:100%;width:auto;max-width:100%;display:block;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(74,46,38,.2))}
/* Cartouche du meneur : posé sur un fond ivoire, il reste lisible en toutes circonstances. */
.lgv3-hearth__copy{
  display:grid;justify-items:center;gap:0;padding:.28em .7em;border-radius:.6em;
  background:rgba(255,251,245,.94);border:1px solid rgba(123,15,36,.1);
  box-shadow:0 2px 8px rgba(74,46,38,.1);max-width:100%
}
.lgv3-hearth__copy small{
  font-size:.4rem;font-size:clamp(5.5px,1.6cqw,7.5px);
  letter-spacing:.12em;font-weight:900;text-transform:uppercase;color:#a58a5f;line-height:1.3
}
.lgv3-hearth__copy b{
  font-family:var(--serif);font-weight:600;line-height:1.15;color:#5c3a2e;
  font-size:.66rem;font-size:clamp(8.5px,2.7cqw,11.5px);
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}

/* ---- Barre fixe du village ---------------------------------------- */
.lgv3-village-dock{
  position:fixed;left:50%;bottom:calc(7px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px));
  transform:translateX(-50%);z-index:105;width:min(calc(100% - 14px),690px);height:var(--chat-dock-h);
  padding:5px;display:grid;grid-template-columns:repeat(3,1fr);gap:3px;
  border-radius:19px;background:rgba(255,252,249,.97);border:1px solid rgba(123,15,36,.1);
  box-shadow:0 14px 34px rgba(64,36,31,.16),0 1px 0 rgba(255,255,255,.9) inset;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)
}
.lgv3-village-dock button{
  position:relative;min-height:46px;border:0;border-radius:14px;background:transparent;color:#8b817d;
  display:grid;place-items:center;align-content:center;gap:3px;cursor:pointer;
  transition:background .16s ease,color .16s ease,transform .14s ease
}
.lgv3-village-dock button:active{transform:scale(.96)}
.lgv3-village-dock button:not(.is-soon):hover{color:var(--g);background:linear-gradient(180deg,#fbf0ea,#fffaf6)}
.lgv3-village-dock__icon{position:relative;display:grid;place-items:center}
.lgv3-village-dock svg{width:19px;height:19px}
.lgv3-village-dock__label{font-size:.58rem;font-weight:800}
.lgv3-village-dock button.is-soon{color:#b7aaa4}
.lgv3-village-dock button.is-soon em{
  position:absolute;top:2px;right:8px;font-style:normal;font-size:.42rem;font-weight:900;
  letter-spacing:.06em;text-transform:uppercase;color:#a58a5f;
  background:#f6e9db;padding:1px 4px;border-radius:4px
}

/* ---- Feuille « Rôle » ---------------------------------------------- */
.lgv3-sheet{
  position:fixed;inset:0;z-index:112;display:flex;align-items:flex-end;justify-content:center;padding:0 7px;
  animation:lgv3-sheet-fade .2s ease
}
.lgv3-sheet:before{content:"";position:absolute;inset:0;background:rgba(34,23,23,.3);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
@keyframes lgv3-sheet-fade{from{opacity:0}to{opacity:1}}
.lgv3-sheet__panel{
  position:relative;width:min(100%,690px);max-height:min(70svh,560px);display:flex;flex-direction:column;
  margin-bottom:calc(var(--chat-dock-h) + 16px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px));
  border-radius:24px;overflow:hidden;background:linear-gradient(180deg,#fffdfa,#faf3ec);
  border:1px solid rgba(123,15,36,.1);box-shadow:0 26px 70px rgba(38,20,20,.28);
  animation:lgv3-sheet-rise .26s cubic-bezier(.2,.8,.25,1)
}
@keyframes lgv3-sheet-rise{from{transform:translateY(18px);opacity:0}to{transform:none;opacity:1}}
.lgv3-sheet__head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:11px 13px;border-bottom:1px solid #f0e4da
}
.lgv3-sheet__head small{display:block;font-size:.5rem;letter-spacing:.16em;font-weight:900;color:#a58a5f}
.lgv3-sheet__head b{font:600 1.14rem/1.1 var(--serif);color:#40292c}
.lgv3-sheet__close{
  width:32px;height:32px;border-radius:11px;border:1px solid #ecdfd5;background:#fffaf6;color:#7a6f6a;
  display:grid;place-items:center;cursor:pointer;flex:0 0 auto
}
.lgv3-sheet__close svg{width:16px;height:16px}
.lgv3-sheet__body{overflow-y:auto;padding:13px;overscroll-behavior:contain}
.lgv3-role-card{display:grid;grid-template-columns:96px minmax(0,1fr);gap:13px;align-items:start}
.lgv3-role-card img{width:96px;border-radius:16px;display:block}
.lgv3-role-card b{font:600 1.2rem/1.1 var(--serif);color:#40292c}
.lgv3-role-card p{margin:5px 0 0;font-size:.68rem;line-height:1.5;color:#7d716c}
.lgv3-role-card__allies{
  display:inline-flex;align-items:center;gap:6px;margin-top:9px;padding:5px 9px;border-radius:9px;
  font-size:.6rem;font-weight:800;color:#8a1430;background:#fbeef0
}
.lgv3-role-card__allies svg{width:14px;height:14px}
.lgv3-role-list{display:grid;gap:5px}
.lgv3-role-list span{
  display:flex;align-items:center;justify-content:space-between;gap:9px;
  padding:8px 11px;border-radius:12px;background:#fffdfa;border:1px solid #eee1d7
}
.lgv3-role-list b{font-size:.8rem;color:#3f3230}
.lgv3-role-list em{font-style:normal;font-size:.62rem;font-weight:800;color:#8a5f2c}
.lgv3-role-list span.is-dead{opacity:.5}
.lgv3-role-list span.is-dead b{text-decoration:line-through}
.lgv3-center-note--soft{display:flex;align-items:center;gap:9px;justify-content:center;font-size:.62rem;color:#8d7f79}
.lgv3-center-note--soft svg{width:15px;height:15px;flex:0 0 auto}

@media(max-width:560px){
  .lgv3-village{padding-left:10px;padding-right:10px}
  .lgv3-village-bar{padding:5px 10px;gap:7px;border-radius:12px}
  .lgv3-village-bar__day{display:none}
  .lgv3-ring{max-width:min(480px,68svh)}
  .lgv3-role-card{grid-template-columns:78px minmax(0,1fr)}
  .lgv3-role-card img{width:78px}
}
@media(prefers-reduced-motion:reduce){
  .lgv3-ring__arc circle,.lgv3-village-bar__state i,.lgv3-seat__skull,
  .lgv3-sheet,.lgv3-sheet__panel{animation:none!important}
}


/* ==================================================================
   ALPHA 13 — APPEL VOCAL, PANNEAU ET RÉGIE
   Le panneau vit dans son propre DOM et se met à jour en place : les
   classes changent, les lignes restent. Toutes les transitions d'état
   sont donc portées par le CSS — fondus courts, jamais de clignotement.
   ================================================================== */

.lgv3-call-sink{position:fixed;width:0;height:0;overflow:hidden;opacity:0;pointer-events:none}

/* Commandes d'appel : élément flottant, présent sur tous les écrans tant que la
   communication dure. Un joueur doit toujours pouvoir raccrocher. */
.lgv3-call-host{
  position:fixed;left:50%;transform:translateX(-50%);z-index:104;
  bottom:calc(var(--chat-dock-h) + 15px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px));
  width:min(calc(100% - 14px),690px)
}
.lgv3-app:not(.has-chat-dock):not(.is-village) .lgv3-call-host{bottom:calc(15px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))}
.lgv3-app.has-host-nav .lgv3-call-host{bottom:calc(74px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))}
.lgv3-app.has-call .lgv3-screen{padding-bottom:calc(var(--chat-dock-h) + 190px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))}

.lgv3-call{
  margin:0;padding:11px 12px;border-radius:20px;
  max-height:min(62svh,520px);overflow-y:auto;overscroll-behavior:contain;
  background:linear-gradient(180deg,#fffdfa,#fbf3ec);border:1px solid #eee1d7;
  box-shadow:0 16px 40px rgba(46,30,25,.18);
  animation:lgv3-call-in .24s cubic-bezier(.2,.8,.25,1)
}
@keyframes lgv3-call-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.lgv3-call.is-live{border-color:rgba(123,15,36,.22);background:linear-gradient(180deg,#fffdfa,#faf1ea)}

/* ---- Invitation à rejoindre --------------------------------------- */
.lgv3-call__intro{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center}
.lgv3-call__seal{
  width:42px;height:42px;border-radius:14px;display:grid;place-items:center;
  background:linear-gradient(160deg,var(--g),var(--gd));color:#f7e8d6;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 5px 14px rgba(89,8,24,.28)
}
.lgv3-call__seal svg{width:19px;height:19px}
.lgv3-call__introcopy{min-width:0}
.lgv3-call__introcopy b{display:block;font:600 .92rem/1.15 var(--serif);color:#3c2a22}
.lgv3-call__introcopy small{display:block;margin-top:2px;font-size:.6rem;color:#8b7f77;line-height:1.3}
.lgv3-call__join{
  display:inline-flex;align-items:center;gap:7px;padding:10px 15px;border:0;border-radius:999px;
  background:linear-gradient(180deg,var(--g2),var(--gd));color:#fdf6ec;cursor:pointer;
  font:800 .68rem/1 var(--sans);letter-spacing:.02em;
  box-shadow:0 6px 16px rgba(89,8,24,.32),inset 0 1px 0 rgba(255,255,255,.2);
  transition:transform .12s ease,box-shadow .12s ease
}
.lgv3-call__join svg{width:15px;height:15px}
.lgv3-call__join:active{transform:scale(.97)}
.lgv3-call__join:disabled{opacity:.7;pointer-events:none}
.lgv3-call__note{
  display:flex;gap:7px;align-items:flex-start;margin:10px 2px 0;
  color:#9a8f88;font-size:.55rem;line-height:1.45
}
.lgv3-call__note svg{width:13px;height:13px;flex:0 0 auto;margin-top:1px;color:#b7a893}

/* ---- En-tête du direct -------------------------------------------- */
.lgv3-call__head{display:flex;align-items:center;gap:8px;padding:1px 2px 9px}
.lgv3-call__pulse{
  width:9px;height:9px;border-radius:50%;background:#37a45c;flex:0 0 auto;
  box-shadow:0 0 0 0 rgba(55,164,92,.5);animation:lgv3-call-pulse 1.9s ease-out infinite
}
@keyframes lgv3-call-pulse{0%{box-shadow:0 0 0 0 rgba(55,164,92,.45)}70%{box-shadow:0 0 0 9px rgba(55,164,92,0)}100%{box-shadow:0 0 0 0 rgba(55,164,92,0)}}
.lgv3-call__head b{font:600 .88rem/1.1 var(--serif);color:#3c2a22}
.lgv3-call__clock{font:800 .62rem/1 var(--sans);font-style:normal;color:#8b7f77;font-variant-numeric:tabular-nums;background:#f6ede4;border-radius:8px;padding:3px 7px}
.lgv3-call__link{margin-left:auto;font-size:.55rem;font-weight:800;color:#9a8f88;transition:color .25s ease}
.lgv3-call__link.is-ok{color:#4c9a5e}
.lgv3-call__link.is-warn{color:#b47d1e}

/* ---- Vue joueur : médaillons --------------------------------------- */
.lgv3-call__people{display:flex;flex-wrap:wrap;gap:10px 8px;padding:4px 2px 10px}
.lgv3-call__person{
  width:56px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;
  transition:opacity .24s ease,transform .24s ease
}
.lgv3-call__person.is-enter{opacity:0;transform:translateY(6px) scale(.92)}
.lgv3-call__person.is-exit{opacity:0;transform:scale(.85)}
.lgv3-call__person small{
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:.53rem;font-weight:700;color:#6d625b
}
.lgv3-call__person.is-you small{color:var(--g)}
.lgv3-call__avatar{position:relative;width:46px;height:46px}
.lgv3-call__avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;border:2px solid #efe2d5;background:#f4ece3}
.lgv3-call__wave{
  position:absolute;inset:-4px;border-radius:50%;border:2px solid rgba(55,164,92,0);
  transition:border-color .16s ease;pointer-events:none
}
.lgv3-call__person.is-speaking .lgv3-call__wave{
  border-color:#37a45c;box-shadow:0 0 12px rgba(55,164,92,.45);
  animation:lgv3-speak 1.1s ease-in-out infinite
}
@keyframes lgv3-speak{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.lgv3-call__mutemark{
  position:absolute;right:-3px;bottom:-2px;width:17px;height:17px;border-radius:50%;
  display:grid;place-items:center;background:#a5142c;color:#fff;border:2px solid #fffdfa;
  opacity:0;transform:scale(.5);transition:opacity .2s ease,transform .2s ease
}
.lgv3-call__person.is-muted .lgv3-call__mutemark{opacity:1;transform:scale(1)}
.lgv3-call__mutemark svg{width:9px;height:9px}

/* ---- Commandes personnelles ---------------------------------------- */
.lgv3-call__controls{display:grid;grid-template-columns:1fr auto;gap:8px;padding-top:9px;border-top:1px solid #f0e4d8;position:sticky;bottom:0;background:linear-gradient(180deg,rgba(255,253,250,0),#fffdfa 34%)}
.lgv3-call__mute,.lgv3-call__leave{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:11px 13px;border-radius:14px;border:1px solid #e7d9cb;cursor:pointer;
  background:linear-gradient(180deg,#fffdfa,#f8f0e7);color:#4c3f37;
  font:800 .64rem/1 var(--sans);transition:background .2s ease,color .2s ease,border-color .2s ease
}
.lgv3-call__mute.is-off{background:linear-gradient(180deg,#fbeef0,#f7e3e6);border-color:rgba(165,20,44,.28);color:#a5142c}
.lgv3-call__mute:disabled{opacity:.7;pointer-events:none}
.lgv3-call__leave{background:linear-gradient(180deg,var(--g2),var(--gd));border-color:transparent;color:#fdf6ec;box-shadow:0 5px 14px rgba(89,8,24,.28)}
.lgv3-call__leave svg{transform:rotate(135deg)}
.lgv3-call__mute svg,.lgv3-call__leave svg{width:16px;height:16px}
.lgv3-call__mute:active,.lgv3-call__leave:active{transform:scale(.97)}

/* ---- Marques dans le cercle du village ----------------------------- */
.lgv3-seat__call{
  position:absolute;left:2%;bottom:6%;width:26%;aspect-ratio:1;border-radius:50%;
  display:grid;place-items:center;background:#2f7d4f;color:#fff;
  border:.16em solid #fffdfa;box-sizing:border-box;min-width:8px
}
.lgv3-seat__call svg{width:58%;height:58%}
.lgv3-seat__halo{
  position:absolute;inset:-6%;border-radius:50%;border:2px solid rgba(55,164,92,0);
  pointer-events:none;transition:border-color .16s ease
}
.lgv3-seat.is-speaking .lgv3-seat__halo{
  border-color:#37a45c;border-width:2.5px;box-shadow:0 0 14px rgba(55,164,92,.5);
  animation:lgv3-speak 1.1s ease-in-out infinite
}

/* ---- Bouton d'appel de la barre ------------------------------------ */
.lgv3-village-dock button.is-live{color:#2f7d4f;background:linear-gradient(180deg,#eef7ef,#fbfdf9)}
.lgv3-village-dock button.is-live .lgv3-village-dock__icon:after{
  content:"";position:absolute;inset:-5px;border-radius:50%;border:1.5px solid rgba(55,164,92,.45);
  animation:lgv3-call-pulse 1.9s ease-out infinite
}
.lgv3-call-count{
  position:absolute;top:-6px;right:-9px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;
  background:#2f7d4f;color:#fff;border:1.5px solid #fffdfa;
  font:900 .52rem/16px var(--sans);font-style:normal;text-align:center
}
.lgv3-village-dock button:disabled{opacity:.45;pointer-events:none}
.lgv3-spinner--sm{width:15px;height:15px;border-width:2px}

/* ==================================================================
   ALPHA 13 — RÉGIE DU NARRATEUR
   Un tableau de bord : quatre compteurs vivants, un bandeau de parole,
   une ligne par joueur. Les lignes ne bougent jamais de place ; seuls
   leurs états respirent — fondu du statut, teinte de la ligne, point
   de liaison, égaliseur quand on parle.
   ================================================================== */

.lgv3-regie{margin:0 0 4px}

/* ---- Compteurs vivants --------------------------------------------- */
.lgv3-regie__chips{display:flex;gap:6px;flex-wrap:wrap;padding:2px 0 9px}
.lgv3-chip{
  display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:999px;
  background:#f6ede4;border:1px solid #eadcce;color:#8b7f77;
  font-size:.55rem;font-weight:800;animation:lgv3-chip-in .22s ease
}
@keyframes lgv3-chip-in{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
.lgv3-chip svg{width:12px;height:12px}
.lgv3-chip i{font-style:normal;font-variant-numeric:tabular-nums;font-weight:900;font-size:.66rem;display:inline-block}
.lgv3-chip i.is-bump{animation:lgv3-bump .3s cubic-bezier(.2,1.4,.4,1)}
@keyframes lgv3-bump{0%{transform:scale(1)}45%{transform:scale(1.35)}100%{transform:scale(1)}}
.lgv3-chip small{font-weight:700}
.lgv3-chip.is-online{background:#eef7ef;border-color:#d7ead9;color:#2f7d4f}
.lgv3-chip.is-ring{background:#fdf4e3;border-color:#f0dfbd;color:#a97f2c}
.lgv3-chip.is-muted{background:#fbeef0;border-color:#f2d6da;color:#a5142c}
.lgv3-chip__waves{display:inline-flex;align-items:center;gap:2px}
.lgv3-chip__waves i{width:3px;border-radius:2px;background:currentColor;animation:lgv3-ringbars .9s ease-in-out infinite}
.lgv3-chip__waves i:nth-child(1){height:6px;animation-delay:0s}
.lgv3-chip__waves i:nth-child(2){height:10px;animation-delay:.15s}
.lgv3-chip__waves i:nth-child(3){height:6px;animation-delay:.3s}
@keyframes lgv3-ringbars{0%,100%{transform:scaleY(.6)}50%{transform:scaleY(1.15)}}

/* ---- Parole en cours ------------------------------------------------ */
.lgv3-regie__floorwrap.is-in .lgv3-regie__floor{animation:lgv3-floor-in .28s cubic-bezier(.2,.9,.3,1)}
@keyframes lgv3-floor-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.lgv3-regie__floor{
  display:flex;align-items:center;gap:7px;margin:0 0 9px;padding:8px 10px;border-radius:12px;
  background:linear-gradient(180deg,#fdf6e7,#f9edd6);border:1px solid #eed9ae;
  color:#6b532a;font-size:.6rem;font-weight:700
}
.lgv3-regie__floor svg{width:14px;height:14px;flex:0 0 auto;color:#a97f2c}
.lgv3-regie__floor span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lgv3-regie__floor b{font-weight:900;color:#5c3a2e}
.lgv3-regie__floor button{
  flex:0 0 auto;border:1px solid #e0c288;background:#fffdf6;color:#8a6a2b;border-radius:999px;
  padding:5px 11px;font:800 .56rem/1 var(--sans);cursor:pointer
}

/* ---- Commandes globales --------------------------------------------- */
.lgv3-regie__quick{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:9px}
.lgv3-regie__quick button{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:9px 8px;border-radius:12px;border:1px solid #e7d9cb;cursor:pointer;
  background:linear-gradient(180deg,#fffdfa,#f8f0e7);color:#4c3f37;
  font:800 .58rem/1 var(--sans);transition:border-color .18s ease,color .18s ease
}
.lgv3-regie__quick button svg{width:13px;height:13px}
.lgv3-regie__quick button:first-child:hover{border-color:rgba(192,24,47,.3);color:#a5142c}
.lgv3-regie__quick button:last-child:hover{border-color:rgba(55,164,92,.35);color:#2f7d4f}
.lgv3-regie__quick button:active{transform:scale(.97)}

/* ---- Lignes ---------------------------------------------------------- */
.lgv3-regie__list{display:flex;flex-direction:column;gap:6px}
.lgv3-regie__row{
  display:grid;grid-template-columns:40px minmax(0,1fr) 10px auto;gap:9px;align-items:center;
  padding:7px 8px;border-radius:14px;border:1px solid #efe3d6;background:#fffdfa;
  transition:background .3s ease,border-color .3s ease,opacity .3s ease,transform .3s ease
}
.lgv3-regie__row.is-enter{opacity:0;transform:translateY(6px)}
.lgv3-regie__row.is-exit{opacity:0;transform:translateX(10px)}
.lgv3-regie__row.is-absent{opacity:.62;background:#faf5ee}
.lgv3-regie__row.is-declined{background:#fbf2f0;border-color:#f0dcd7}
.lgv3-regie__row.is-ringing{background:linear-gradient(180deg,#fdf8ec,#fbf2dd);border-color:#eed9ae}
.lgv3-regie__row.is-forced{background:#fbeef0;border-color:rgba(165,20,44,.22)}
.lgv3-regie__row.is-floor{background:linear-gradient(180deg,#fdf6e7,#faefd8);border-color:#e7c98f;box-shadow:0 3px 10px rgba(169,127,44,.14)}
.lgv3-regie__row.is-speaking{border-color:rgba(55,164,92,.42);box-shadow:0 3px 12px rgba(55,164,92,.14)}

.lgv3-regie__avatar{position:relative;width:40px;height:40px}
.lgv3-regie__avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;border:2px solid #efe2d5;background:#f4ece3}
.lgv3-regie__row.is-absent .lgv3-regie__avatar img,
.lgv3-regie__row.is-declined .lgv3-regie__avatar img{filter:grayscale(.7)}
.lgv3-regie__halo{
  position:absolute;inset:-4px;border-radius:50%;border:2px solid rgba(55,164,92,0);
  transition:border-color .16s ease;pointer-events:none
}
.lgv3-regie__row.is-speaking .lgv3-regie__halo{
  border-color:#37a45c;box-shadow:0 0 12px rgba(55,164,92,.45);
  animation:lgv3-speak 1.1s ease-in-out infinite
}
.lgv3-regie__crown{
  position:absolute;top:-6px;right:-5px;width:17px;height:17px;border-radius:50%;
  display:grid;place-items:center;background:linear-gradient(160deg,#e8bd63,#c99a37);color:#fff;
  border:2px solid #fffdfa;opacity:0;transform:scale(.4) rotate(-20deg);
  transition:opacity .24s ease,transform .24s cubic-bezier(.2,1.4,.4,1)
}
.lgv3-regie__row.is-floor .lgv3-regie__crown{opacity:1;transform:none}
.lgv3-regie__crown svg{width:9px;height:9px}

/* Égaliseur : trois barres qui dansent tant que le joueur parle. */
.lgv3-eq{
  position:absolute;left:50%;bottom:-3px;transform:translateX(-50%);
  display:flex;align-items:flex-end;gap:2px;height:10px;
  padding:2px 4px;border-radius:6px;background:#2f7d4f;
  opacity:0;transition:opacity .18s ease;pointer-events:none
}
.lgv3-regie__row.is-speaking .lgv3-eq{opacity:1}
.lgv3-eq i{width:2.5px;border-radius:2px;background:#eafbef;animation:lgv3-eq 0.8s ease-in-out infinite}
.lgv3-eq i:nth-child(1){height:4px;animation-delay:0s}
.lgv3-eq i:nth-child(2){height:7px;animation-delay:.12s}
.lgv3-eq i:nth-child(3){height:5px;animation-delay:.24s}
@keyframes lgv3-eq{0%,100%{transform:scaleY(.5)}50%{transform:scaleY(1.2)}}

.lgv3-regie__copy{min-width:0}
.lgv3-regie__copy b{
  display:block;font:700 .68rem/1.15 var(--sans);color:#3c2a22;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.lgv3-regie__status{display:block;height:.78rem;overflow:hidden}
.lgv3-regie__status small{display:block;font-size:.55rem;color:#9a8f88;line-height:.78rem}
.lgv3-regie__status small.is-swapped{animation:lgv3-status-in .28s ease}
@keyframes lgv3-status-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.lgv3-regie__row.is-ringing .lgv3-regie__status small{color:#a97f2c;font-weight:800}
.lgv3-regie__row.is-forced .lgv3-regie__status small{color:#a5142c;font-weight:800}
.lgv3-regie__row.is-speaking .lgv3-regie__status small{color:#2f7d4f;font-weight:800}
.lgv3-regie__row.is-link-recovering .lgv3-regie__status small{color:#b47d1e;font-weight:800}

/* Point de liaison : vert = directe établie, ambre = en cours, rouge = en reprise. */
.lgv3-regie__linkdot{width:7px;height:7px;border-radius:50%;background:transparent;transition:background .3s ease,box-shadow .3s ease}
.lgv3-regie__linkdot.is-ok{background:#37a45c}
.lgv3-regie__linkdot.is-warm{background:#dfa93a;animation:lgv3-linkblink 1s ease-in-out infinite}
.lgv3-regie__linkdot.is-warn{background:#c2503a;animation:lgv3-linkblink .7s ease-in-out infinite}
@keyframes lgv3-linkblink{0%,100%{opacity:1}50%{opacity:.35}}

.lgv3-regie__tools{display:flex;gap:5px;align-items:center}
.lgv3-regie__btn{
  width:31px;height:31px;border-radius:10px;border:1px solid #e7d9cb;cursor:pointer;
  display:grid;place-items:center;background:#fffdfa;color:#6d625b;
  transition:background .18s ease,color .18s ease,border-color .18s ease
}
.lgv3-regie__btn svg{width:14px;height:14px}
.lgv3-regie__btn:active{transform:scale(.94)}
.lgv3-regie__btn.is-off{background:#fbeef0;border-color:rgba(165,20,44,.3);color:#a5142c}
.lgv3-regie__btn.is-on{background:#fdf4e3;border-color:#e0c288;color:#8a6a2b}
.lgv3-regie__btn.is-danger:hover{border-color:rgba(165,20,44,.35);color:#a5142c}
.lgv3-regie__ringing{display:inline-flex;align-items:center;gap:2.5px;padding:0 6px}
.lgv3-regie__ringing i{width:3px;border-radius:2px;background:#c99a37;animation:lgv3-ringbars .9s ease-in-out infinite}
.lgv3-regie__ringing i:nth-child(1){height:7px}
.lgv3-regie__ringing i:nth-child(2){height:12px;animation-delay:.15s}
.lgv3-regie__ringing i:nth-child(3){height:7px;animation-delay:.3s}
.lgv3-regie__invite{
  display:inline-flex;align-items:center;gap:5px;padding:7px 11px;border-radius:999px;
  border:1px solid #e7d9cb;background:#fffdfa;color:#6d625b;cursor:pointer;
  font:800 .55rem/1 var(--sans)
}
.lgv3-regie__invite svg{width:12px;height:12px}
.lgv3-regie__invite:active{transform:scale(.96)}

/* Terminer pour tous : le bouton grenat du bas remplace l'ancien bouton de régie. */
.lgv3-call__leave.is-end{white-space:nowrap}

/* ==================================================================
   ALPHA 13 — APPEL ENTRANT
   Plein écran, sombre, impossible à manquer : c'est un téléphone qui
   sonne, pas une notification.
   ================================================================== */

.lgv3-incoming{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:24px}
.lgv3-incoming__veil{
  position:absolute;inset:0;
  background:radial-gradient(120% 90% at 50% 0%,rgba(38,20,16,.92),rgba(16,8,7,.97));
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  animation:lgv3-veil-in .3s ease
}
@keyframes lgv3-veil-in{from{opacity:0}to{opacity:1}}
.lgv3-incoming__card{
  position:relative;width:min(100%,340px);text-align:center;color:#f3e7d8;
  padding:34px 22px 26px;border-radius:26px;
  background:linear-gradient(180deg,rgba(255,252,246,.07),rgba(255,252,246,.02));
  border:1px solid rgba(243,231,216,.14);
  animation:lgv3-incoming-in .32s cubic-bezier(.2,.9,.3,1.1)
}
@keyframes lgv3-incoming-in{from{opacity:0;transform:translateY(16px) scale(.94)}to{opacity:1;transform:none}}
.lgv3-incoming__halo{position:absolute;top:34px;left:50%;width:96px;height:96px;transform:translateX(-50%);pointer-events:none}
.lgv3-incoming__halo i{
  position:absolute;inset:0;border-radius:50%;border:1.5px solid rgba(243,231,216,.4);
  animation:lgv3-halo 2.2s ease-out infinite
}
.lgv3-incoming__halo i:nth-child(2){animation-delay:.7s}
.lgv3-incoming__halo i:nth-child(3){animation-delay:1.4s}
@keyframes lgv3-halo{0%{transform:scale(1);opacity:.7}100%{transform:scale(1.9);opacity:0}}
.lgv3-incoming__avatar{position:relative;display:inline-block;width:96px;height:96px;animation:lgv3-ringshake 1.9s ease-in-out infinite}
@keyframes lgv3-ringshake{0%,86%,100%{transform:rotate(0)}88%{transform:rotate(2.6deg)}91%{transform:rotate(-2.6deg)}94%{transform:rotate(1.8deg)}97%{transform:rotate(-1.4deg)}}
.lgv3-incoming__avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;border:3px solid rgba(243,231,216,.35)}
.lgv3-incoming__card small{display:block;margin-top:16px;font-size:.55rem;font-weight:900;letter-spacing:.22em;color:#c8ab86}
.lgv3-incoming__card h1{margin:6px 0 0;font:600 1.7rem/1.1 var(--serif);color:#faf3e7}
.lgv3-incoming__card p{margin:8px 0 0;font-size:.66rem;color:#bfae9c}
.lgv3-incoming__actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:26px}
.lgv3-incoming__decline,.lgv3-incoming__answer{
  display:inline-flex;flex-direction:column;align-items:center;gap:7px;
  padding:13px 8px;border-radius:18px;border:0;cursor:pointer;
  font:800 .62rem/1 var(--sans);transition:transform .12s ease
}
.lgv3-incoming__decline{background:rgba(165,20,44,.18);border:1px solid rgba(211,80,102,.4);color:#f0b9c2}
.lgv3-incoming__decline svg{transform:rotate(135deg)}
.lgv3-incoming__answer{background:linear-gradient(180deg,#3f9f63,#2c7c4a);color:#effaf1;box-shadow:0 8px 22px rgba(37,110,66,.4)}
.lgv3-incoming__answer svg{animation:lgv3-answershake 1.4s ease-in-out infinite}
@keyframes lgv3-answershake{0%,80%,100%{transform:rotate(0)}84%{transform:rotate(10deg)}90%{transform:rotate(-9deg)}96%{transform:rotate(6deg)}}
.lgv3-incoming__decline svg,.lgv3-incoming__answer svg{width:20px;height:20px}
.lgv3-incoming__decline:active,.lgv3-incoming__answer:active{transform:scale(.96)}

/* ---- Petits écrans et réduction des animations ---------------------- */
@media(max-width:560px){
  .lgv3-call{padding:10px;border-radius:18px}
  .lgv3-call__intro{grid-template-columns:36px minmax(0,1fr) auto;gap:9px}
  .lgv3-call__seal{width:36px;height:36px;border-radius:12px}
  .lgv3-call__person{width:52px}
  .lgv3-call__avatar{width:42px;height:42px}
  .lgv3-regie__row{grid-template-columns:36px minmax(0,1fr) 8px auto;gap:7px;padding:6px 7px}
  .lgv3-regie__avatar{width:36px;height:36px}
  .lgv3-regie__btn{width:29px;height:29px}
}
@media(prefers-reduced-motion:reduce){
  .lgv3-call,.lgv3-call__pulse,.lgv3-call__wave,.lgv3-seat__halo,.lgv3-regie__halo,
  .lgv3-eq i,.lgv3-chip__waves i,.lgv3-regie__ringing i,.lgv3-regie__linkdot,
  .lgv3-incoming__halo i,.lgv3-incoming__avatar,.lgv3-incoming__answer svg,
  .lgv3-village-dock button.is-live .lgv3-village-dock__icon:after{animation:none!important}
  .lgv3-chip i.is-bump,.lgv3-regie__status small.is-swapped,
  .lgv3-regie__floorwrap.is-in .lgv3-regie__floor{animation:none!important}
}

/* ==================================================================
   ALPHA 13.1 — DENSITÉ DU LOBBY ET MESSAGERIE TOUJOURS ACCESSIBLE
   Règle appliquée ici : chaque pixel doit être mérité. Aucun libellé
   décoratif, aucun compteur en double, aucun élément fixe qui recouvre
   ce sur quoi l'utilisateur doit agir.
   ================================================================== */

/* ---- Bandeau du salon : une seule ligne ----------------------------- */
.lgv3-room-strip--slim{
  grid-template-columns:34px minmax(0,1fr) auto;gap:9px;
  min-height:0;padding:7px 9px;border-radius:16px
}
.lgv3-room-strip--slim .lgv3-room-strip__seal{display:none}
.lgv3-room-strip--slim .lgv3-room-strip__back{width:31px;height:31px;border-radius:10px}
.lgv3-room-strip--slim .lgv3-room-strip__back svg{width:16px;height:16px}
.lgv3-room-strip--slim .lgv3-room-strip__main{
  display:flex;align-items:center;gap:8px;min-width:0
}
.lgv3-room-strip--slim .lgv3-room-strip__main>small{display:none}
.lgv3-room-strip--slim .lgv3-room-strip__code{margin-top:0;gap:5px}
.lgv3-room-strip--slim .lgv3-room-strip__code strong{
  font:500 clamp(1.16rem,5.4vw,1.44rem)/1 var(--serif);letter-spacing:.05em
}
.lgv3-room-strip--slim .lgv3-room-strip__code button{width:25px;height:25px;border-radius:8px}
.lgv3-room-strip--slim .lgv3-room-strip__code button svg{width:13px;height:13px}
/* L'état du salon se dit par un point vert : le mot « ouvert » ne portait rien de plus. */
.lgv3-room-strip--slim .lgv3-room-strip__main em{margin-top:0;gap:0}
.lgv3-room-strip--slim .lgv3-room-strip__main em i{width:8px;height:8px}
.lgv3-room-strip--slim .lgv3-room-strip__count{
  min-width:0;display:flex;align-items:baseline;gap:4px;padding:4px 9px;border-radius:999px
}
.lgv3-room-strip--slim .lgv3-room-strip__count b{font-size:.86rem}
.lgv3-room-strip--slim .lgv3-room-strip__count small{margin-top:0;font-size:.52rem}

/* ---- Titre de section : entier, jamais tronqué ---------------------- */
.lgv3-player-title-row{margin-top:6px}
.lgv3-compact-heading{min-height:0;grid-template-columns:30px minmax(0,1fr) auto;gap:8px;padding:1px 2px}
.lgv3-compact-heading__icon{width:30px;height:30px;border-radius:10px}
.lgv3-compact-heading__icon svg{width:16px;height:16px}
.lgv3-compact-heading h2{
  font:500 clamp(.98rem,4.1vw,1.16rem)/1.1 var(--serif);letter-spacing:-.005em
}
.lgv3-compact-heading__meta{
  min-width:0;padding:3px 8px;font-size:.6rem;border-radius:999px
}
.lgv3-add-bot-compact{height:33px;padding:0 10px;border-radius:11px;font-size:.62rem}
.lgv3-add-bot-compact svg{width:16px;height:16px}
.lgv3-host-panel--players{padding-top:6px}

/* ---- Le lancement ne recouvre plus la liste ------------------------- */
/* Le bandeau était translucide : la dernière carte transparaissait dessous et donnait
   l'impression d'un joueur coincé sous le bouton. Il est maintenant opaque, avec un
   fondu au-dessus de lui — la liste s'efface proprement en glissant dessous — et la
   page réserve assez de place pour que le dernier joueur reste atteignable. */
.lgv3-launch-dock{
  background:#fbf6f1;backdrop-filter:none;-webkit-backdrop-filter:none;
  box-shadow:0 -2px 0 rgba(251,246,241,1),0 14px 34px rgba(70,41,34,.16)
}
.lgv3-launch-dock:before{
  content:"";position:absolute;left:-10px;right:-10px;bottom:100%;height:26px;
  background:linear-gradient(180deg,rgba(249,244,238,0),rgba(250,245,240,.96));
  pointer-events:none
}
.lgv3-screen--host-players{padding-bottom:calc(196px + env(safe-area-inset-bottom))}
.lgv3-app.has-chat-dock .lgv3-screen--host-players{
  padding-bottom:calc(var(--chat-dock-h) + 168px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))
}

@media(max-width:560px){
  .lgv3-room-strip--slim{grid-template-columns:31px minmax(0,1fr) auto;padding:6px 8px;min-height:0}
  .lgv3-compact-heading h2{font-size:1.02rem}
  .lgv3-screen--host-players{padding-bottom:calc(188px + env(safe-area-inset-bottom))}
}

/* ==================================================================
   ALPHA 13.1 — MESSAGERIE : RÉDUIRE D'UN GESTE, ÉCRIRE TOUJOURS
   ================================================================== */

/* Croix de fermeture présente sur toutes les vues, au même endroit. */
.lgv3-chat-head{grid-template-columns:auto minmax(0,1fr) auto auto;gap:8px}
.lgv3-chat-head__back[hidden]{display:none}
.lgv3-chat-head__close{
  width:32px;height:32px;flex:0 0 auto;border-radius:11px;border:1px solid #ecdfd5;
  background:#fffaf6;color:#8a7a74;display:grid;place-items:center;cursor:pointer;
  transition:background .14s ease,color .14s ease,transform .14s ease
}
.lgv3-chat-head__close svg{width:16px;height:16px}
.lgv3-chat-head__close:active{transform:scale(.94)}
.lgv3-chat-head__close:hover{background:#fbeef0;color:var(--g)}

/* Pendant un appel, le panneau d'appel occupait le bas de l'écran et passait devant la
   zone d'écriture : impossible de taper un message. Messagerie ouverte, il se replie en
   une barre d'état posée en haut — l'appel reste visible et pilotable, le champ de
   saisie redevient libre. */
.lgv3-app.chat-is-open .lgv3-call-host{
  top:calc(8px + env(safe-area-inset-top));bottom:auto;z-index:101;
  width:min(calc(100% - 14px),690px)
}
.lgv3-app.chat-is-open .lgv3-call{
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;
  max-height:none;padding:6px 8px;border-radius:14px;overflow:visible;
  box-shadow:0 10px 26px rgba(46,30,25,.22)
}
.lgv3-app.chat-is-open .lgv3-regie,
.lgv3-app.chat-is-open .lgv3-call__people,
.lgv3-app.chat-is-open .lgv3-call__note,
.lgv3-app.chat-is-open .lgv3-call__intro,
.lgv3-app.chat-is-open .lgv3-call__link{display:none}
.lgv3-app.chat-is-open .lgv3-call__head{padding:0;gap:7px}
.lgv3-app.chat-is-open .lgv3-call__head b{font-size:.74rem}
.lgv3-app.chat-is-open .lgv3-call__controls{
  grid-template-columns:auto auto;gap:6px;padding:0;border-top:0;background:none;position:static
}
.lgv3-app.chat-is-open .lgv3-call__mute,
.lgv3-app.chat-is-open .lgv3-call__leave{
  min-height:0;padding:7px 9px;border-radius:10px;font-size:.55rem
}
.lgv3-app.chat-is-open .lgv3-call__mute span:not([data-ui="mute-icon"]),
.lgv3-app.chat-is-open .lgv3-call__leave span{display:none}
.lgv3-app.chat-is-open .lgv3-call__mute svg,
.lgv3-app.chat-is-open .lgv3-call__leave svg{width:15px;height:15px}

/* La feuille de conversation ne remonte plus sous une barre d'appel : celle-ci est en
   haut, la feuille garde toute la hauteur utile au-dessus du clavier. */
.lgv3-chat-panel__sheet{max-height:min(76svh,640px)}

/* ==================================================================
   ALPHA 13.2 — ÉCRAN DES RÔLES : UNE COMPOSITION QUI SE LIT
   Synthèse en tête, camps regroupés, cartes d'égale hauteur. Le
   Narrateur doit voir sa partie prendre forme sans faire défiler.
   ================================================================== */

.lgv3-role-summary{
  position:relative;margin:6px 0 12px;padding:9px 11px 8px;border-radius:15px;
  background:linear-gradient(180deg,#fffdfa,#faf3ec);border:1px solid #eddfd3;
  box-shadow:0 4px 14px rgba(70,44,36,.045)
}
.lgv3-role-summary__bar{
  height:4px;border-radius:3px;background:#efe3d8;overflow:hidden;margin-bottom:8px
}
.lgv3-role-summary__bar i{
  display:block;height:100%;border-radius:3px;
  background:linear-gradient(90deg,var(--g2),var(--g));
  transition:width .3s cubic-bezier(.2,.8,.25,1)
}
.lgv3-role-summary.is-full .lgv3-role-summary__bar i{background:linear-gradient(90deg,#5f8a56,#43704a)}
.lgv3-role-summary.is-over .lgv3-role-summary__bar i{background:linear-gradient(90deg,#c2803a,#a9541f)}
.lgv3-role-summary__line{
  display:grid;grid-template-columns:16px minmax(0,1fr);gap:7px;align-items:center;
  margin:0;font-size:.62rem;line-height:1.35;color:#7a6c66
}
.lgv3-role-summary__line svg{width:15px;height:15px;color:var(--g)}
.lgv3-role-summary__line b{font-weight:900;color:#6d1026;font-size:.72rem}
.lgv3-role-summary.is-full .lgv3-role-summary__line b{color:#436f4a}
.lgv3-role-summary.is-over .lgv3-role-summary__line b{color:#a9541f}
.lgv3-role-summary .lgv3-role-autosave{
  display:flex;align-items:center;gap:6px;margin-top:7px;padding-top:7px;
  border-top:1px dashed #efe2d6;font-size:.53rem;color:#9c918b
}
.lgv3-role-summary .lgv3-role-autosave i{
  width:6px;height:6px;border-radius:50%;background:#8fae86;flex:0 0 auto
}
.lgv3-role-autosave[data-state="saving"] i{background:#d5a44a;animation:lgv3-linkblink .8s ease-in-out infinite}
.lgv3-role-autosave[data-state="error"] i{background:#a9213b}

/* ---- Camps ---------------------------------------------------------- */
.lgv3-role-group{margin-bottom:13px}
.lgv3-role-group__head{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:7px;align-items:baseline;
  padding:0 3px 6px;position:relative
}
.lgv3-role-group__head:after{
  content:"";position:absolute;left:3px;right:3px;bottom:2px;height:1px;
  background:linear-gradient(90deg,rgba(199,170,129,.5),rgba(199,170,129,0))
}
.lgv3-role-group__head b{
  font:600 .78rem/1 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:#5c4038
}
.lgv3-role-group--loups .lgv3-role-group__head b{color:#7b0f24}
.lgv3-role-group--village .lgv3-role-group__head b{color:#4a6b4e}
.lgv3-role-group--solo .lgv3-role-group__head b,
.lgv3-role-group--alien .lgv3-role-group__head b{color:#8a6a2b}
.lgv3-role-group__head small{
  font-size:.55rem;color:#a3968f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.lgv3-role-group__count{
  min-width:20px;height:20px;padding:0 6px;border-radius:999px;font-style:normal;
  display:grid;place-items:center;font-size:.58rem;font-weight:900;
  background:#f4ebe3;color:#a3968f;border:1px solid #ebdfd4;transition:.2s ease
}
.lgv3-role-group__count.is-on{background:#fbeef0;color:var(--g);border-color:rgba(123,15,36,.22)}
.lgv3-role-group .lgv3-role-list{gap:5px}

/* Carte : le nom d'abord, le camp en second, le compteur toujours au même endroit. */
.lgv3-role-card.is-selected{
  border-color:rgba(123,15,36,.26);
  background:linear-gradient(180deg,#fffdfa,#fbf1f0)
}
.lgv3-role-card .lgv3-role-copy b{
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block
}

/* ==================================================================
   ALPHA 13.3 — LA NUIT DE LA MEUTE ET LE SACRE DU MAIRE
   ================================================================== */

/* ---- Marques de désignation sur les cibles -------------------------- */
.lgv3-night-target__marks{
  display:flex;align-items:center;gap:-2px;margin-right:4px
}
.lgv3-night-target__marks i{
  width:19px;height:19px;margin-left:-5px;border-radius:50%;
  display:grid;place-items:center;font-style:normal;
  font:900 .5rem/1 var(--sans);color:#f6e3c8;
  background:linear-gradient(160deg,#7b0f24,#4c0713);border:1.5px solid #1c1210;
  animation:lgv3-mark-in .26s cubic-bezier(.2,1.3,.4,1) backwards
}
.lgv3-night-target__marks i:first-child{margin-left:0}
@keyframes lgv3-mark-in{from{opacity:0;transform:scale(.4) translateY(-4px)}to{opacity:1;transform:none}}
.lgv3-night-target__marks b{
  margin-left:6px;min-width:17px;height:17px;padding:0 5px;border-radius:999px;
  display:grid;place-items:center;font-size:.53rem;font-weight:900;
  background:rgba(226,178,102,.16);color:#e2b266;border:1px solid rgba(226,178,102,.35)
}
.lgv3-night-target.is-marked{border-color:rgba(226,178,102,.4)}

/* Les deux moyens de se concerter, à portée de pouce. */
.lgv3-night-pack__ways{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px}
.lgv3-night-pack__way{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:9px 8px;border-radius:12px;cursor:pointer;
  border:1px solid rgba(226,178,102,.28);background:rgba(255,244,228,.06);color:#e8d3b6;
  font:800 .58rem/1 var(--sans)
}
.lgv3-night-pack__way svg{width:14px;height:14px}
.lgv3-night-pack__way.is-voice{
  border-color:rgba(88,160,104,.45);background:rgba(70,140,88,.16);color:#bfe6c8
}
.lgv3-night-pack__way:active{transform:scale(.97)}

/* ---- Badge de maire dans le cercle ---------------------------------- */
.lgv3-seat__mayor{
  position:absolute;top:-8%;right:-6%;width:34%;aspect-ratio:1;border-radius:50%;
  display:grid;place-items:center;color:#4a2f0c;
  background:linear-gradient(160deg,#f0cf85,#c99a37);
  border:.14em solid #fffdfa;box-sizing:border-box;min-width:11px;
  box-shadow:0 2px 7px rgba(120,84,20,.4)
}
.lgv3-seat__mayor svg{width:62%;height:62%}
.lgv3-seat.is-mayor .lgv3-seat__medallion img{border-color:#d9ae55}
.lgv3-seat.is-mayor .lgv3-seat__medallion:after{
  content:"";position:absolute;inset:-7%;border-radius:50%;
  border:2px solid rgba(217,174,85,.7);pointer-events:none
}

/* ==================================================================
   LE SACRE
   ================================================================== */
.lgv3-coronation-screen{
  min-height:100svh;display:grid;place-items:center;
  background:radial-gradient(120% 90% at 50% 0%,#3a2411,#1a0f09 68%)
}
.lgv3-coronation{
  position:relative;display:grid;justify-items:center;text-align:center;
  padding:44px 22px 34px;color:#f6ead8;isolation:isolate
}

/* Rayons : ils tournent lentement derrière la scène. */
.lgv3-coronation__rays{
  position:absolute;top:34px;left:50%;width:340px;height:340px;transform:translateX(-50%);
  background:conic-gradient(from 0deg,
    rgba(226,178,102,.26) 0deg,transparent 14deg,transparent 30deg,
    rgba(226,178,102,.22) 44deg,transparent 58deg,transparent 74deg,
    rgba(226,178,102,.26) 88deg,transparent 102deg,transparent 118deg,
    rgba(226,178,102,.22) 132deg,transparent 146deg,transparent 162deg,
    rgba(226,178,102,.26) 176deg,transparent 190deg,transparent 206deg,
    rgba(226,178,102,.22) 220deg,transparent 234deg,transparent 250deg,
    rgba(226,178,102,.26) 264deg,transparent 278deg,transparent 294deg,
    rgba(226,178,102,.22) 308deg,transparent 322deg,transparent 338deg,
    rgba(226,178,102,.26) 352deg,transparent 360deg);
  -webkit-mask:radial-gradient(circle,#000 22%,transparent 70%);
  mask:radial-gradient(circle,#000 22%,transparent 70%);
  opacity:0;z-index:-1;
  animation:lgv3-rays-in .8s ease .35s forwards,lgv3-rays-spin 26s linear infinite
}
@keyframes lgv3-rays-in{to{opacity:1}}
@keyframes lgv3-rays-spin{to{transform:translateX(-50%) rotate(360deg)}}

/* La couronne descend et se pose. */
.lgv3-coronation__crown{
  width:56px;height:56px;display:grid;place-items:center;color:#2a1a06;
  border-radius:50%;background:linear-gradient(160deg,#f6dda1,#c99a37);
  box-shadow:0 10px 26px rgba(150,105,26,.45),inset 0 1px 0 rgba(255,255,255,.5);
  animation:lgv3-crown-drop .82s cubic-bezier(.18,.9,.25,1.25) backwards
}
.lgv3-coronation__crown svg{width:28px;height:28px}
@keyframes lgv3-crown-drop{
  0%{opacity:0;transform:translateY(-90px) rotate(-24deg) scale(.5)}
  62%{opacity:1;transform:translateY(6px) rotate(4deg) scale(1.06)}
  100%{opacity:1;transform:none}
}

.lgv3-coronation__medallion{position:relative;margin-top:-16px;width:104px;height:104px}
.lgv3-coronation__medallion img{
  width:100%;height:100%;border-radius:50%;object-fit:cover;
  border:3px solid rgba(226,178,102,.6);background:#2b1c12;
  animation:lgv3-medallion-in .6s cubic-bezier(.2,.9,.3,1.2) .18s backwards
}
@keyframes lgv3-medallion-in{from{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}
.lgv3-coronation__ring{
  position:absolute;inset:-9px;border-radius:50%;border:2px solid rgba(226,178,102,.55);
  animation:lgv3-ring-pulse 2.6s ease-out infinite .9s
}
@keyframes lgv3-ring-pulse{0%{transform:scale(1);opacity:.8}100%{transform:scale(1.5);opacity:0}}

.lgv3-coronation small{
  margin-top:18px;font-size:.56rem;letter-spacing:.26em;font-weight:900;color:#d3ab73;
  animation:lgv3-crown-line .5s ease .5s backwards
}
.lgv3-coronation h2{
  margin:7px 0 0;font:600 2.25rem/1.05 var(--serif);color:#fdf3e2;
  text-shadow:0 3px 22px rgba(214,164,86,.4);
  animation:lgv3-crown-line .55s cubic-bezier(.2,.9,.3,1) .62s backwards
}
.lgv3-coronation__title{
  margin:5px 0 0;font:600 .84rem/1 var(--serif);letter-spacing:.04em;color:#e2b266;
  animation:lgv3-crown-line .5s ease .74s backwards
}
.lgv3-coronation__line{
  max-width:290px;margin:13px auto 0;font-size:.68rem;line-height:1.55;color:#b9a68f;
  animation:lgv3-crown-line .5s ease .86s backwards
}
@keyframes lgv3-crown-line{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* Paillettes : elles montent une fois, puis disparaissent. */
.lgv3-coronation__sparks{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:-1}
.lgv3-coronation__sparks i{
  position:absolute;left:var(--x);bottom:14%;width:5px;height:5px;border-radius:50%;
  background:#e6bd77;opacity:0;
  animation:lgv3-spark 2.4s ease-out var(--d) 2
}
.lgv3-coronation__sparks i:nth-child(odd){width:3px;height:3px;background:#f4dcae}
@keyframes lgv3-spark{
  0%{opacity:0;transform:translateY(0) scale(.6)}
  18%{opacity:.95}
  100%{opacity:0;transform:translateY(-190px) scale(.3)}
}

/* Celui qui est élu a droit à une teinte plus chaude. */
.lgv3-coronation.is-mine h2{color:#fff8ea}
.lgv3-coronation.is-mine .lgv3-coronation__crown{
  box-shadow:0 12px 34px rgba(196,140,40,.6),inset 0 1px 0 rgba(255,255,255,.6)
}

@media(max-width:560px){
  .lgv3-coronation{padding:34px 16px 26px}
  .lgv3-coronation h2{font-size:1.92rem}
  .lgv3-coronation__rays{width:290px;height:290px}
  .lgv3-coronation__medallion{width:92px;height:92px}
}
@media(prefers-reduced-motion:reduce){
  .lgv3-coronation__rays,.lgv3-coronation__crown,.lgv3-coronation__medallion img,
  .lgv3-coronation__ring,.lgv3-coronation__sparks i,.lgv3-coronation small,
  .lgv3-coronation h2,.lgv3-coronation__title,.lgv3-coronation__line,
  .lgv3-night-target__marks i{animation:none!important;opacity:1!important}
  .lgv3-coronation__sparks{display:none}
}

/* ==================================================================
   ALPHA 13.4 — LE LANCEMENT REPREND SA PLACE DANS LA PAGE
   Ancré en bas, le bandeau flottait au-dessus de la liste : il
   recouvrait une carte et le joueur suivant réapparaissait dessous,
   comme s'il en avait été éjecté. Sur l'onglet Joueurs, il redevient
   un élément de la page, posé après le dernier joueur. On y arrive en
   faisant défiler, comme au bout d'une liste — et plus rien ne se
   chevauche.
   ================================================================== */
.lgv3-screen--host-players .lgv3-launch-dock{
  position:static;transform:none;left:auto;bottom:auto;z-index:auto;
  width:100%;margin:15px 0 2px;padding:0;
  background:none;border:0;box-shadow:none;
  backdrop-filter:none;-webkit-backdrop-filter:none
}
.lgv3-screen--host-players .lgv3-launch-dock:before{display:none}
.lgv3-screen--host-players .lgv3-launch-button{
  min-height:64px;border-radius:18px;
  box-shadow:0 12px 30px rgba(104,13,34,.22),inset 0 1px 0 rgba(255,255,255,.15)
}
.lgv3-screen--host-players .lgv3-launch-reason{
  margin-top:7px;padding:7px 10px;border-radius:11px;
  background:#fdf3e6;border:1px solid #f0dfc4;color:#8a6425;
  font-size:.56rem;white-space:normal;line-height:1.35
}
/* La page n'a plus à réserver la hauteur d'un bandeau flottant : il suffit de dégager
   la barre de navigation du Narrateur. */
.lgv3-screen--host-players{padding-bottom:calc(96px + env(safe-area-inset-bottom))}
.lgv3-app.has-chat-dock .lgv3-screen--host-players{
  padding-bottom:calc(var(--chat-dock-h) + 96px + env(safe-area-inset-bottom) + var(--lgv3-vv,0px))
}
@media(max-width:560px){
  .lgv3-screen--host-players{padding-bottom:calc(88px + env(safe-area-inset-bottom))}
  .lgv3-screen--host-players .lgv3-launch-button{min-height:60px}
}

/* ==================================================================
   ALPHA 13.5 — LES CARTES DE RÔLE
   Quatre par ligne, dans leur format d'origine (2:3), sans recadrage
   ni déformation. Le nom est repris sous la carte dans la typographie
   du jeu, parce qu'à cette largeur le titre peint sur l'illustration
   ne se lirait pas. Le compteur n'apparaît que lorsqu'il compte.
   ================================================================== */

.lgv3-role-tip{
  margin:2px 3px 10px;font-size:.6rem;line-height:1.35;color:#9a8f88
}

.lgv3-rolecard-grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px 7px;
  padding:2px 1px 4px
}

.lgv3-rolecard{position:relative;display:grid;gap:5px;justify-items:center}

/* La carte elle-même : ratio fidèle, cadre doré discret, ombre portée. */
.lgv3-rolecard__pick{
  display:block;width:100%;padding:0;border:0;background:none;cursor:pointer;
  border-radius:9px;-webkit-tap-highlight-color:transparent
}
.lgv3-rolecard__art{
  position:relative;display:block;width:100%;aspect-ratio:2/3;overflow:hidden;
  border-radius:9px;background:linear-gradient(180deg,#f6ece0,#e9dbc9);
  border:1px solid rgba(160,124,72,.4);
  box-shadow:0 4px 12px rgba(70,44,30,.16),inset 0 0 0 1px rgba(255,255,255,.5);
  transition:transform .18s cubic-bezier(.2,.9,.3,1.2),box-shadow .18s ease,border-color .18s ease
}
.lgv3-rolecard__art img{width:100%;height:100%;object-fit:cover;display:block}

/* Un reflet passe sur la carte au moment où on la choisit. */
.lgv3-rolecard__sheen{
  position:absolute;inset:0;pointer-events:none;opacity:0;
  background:linear-gradient(115deg,transparent 32%,rgba(255,255,255,.6) 48%,transparent 62%)
}
.lgv3-rolecard__pick:active .lgv3-rolecard__art{transform:scale(.96)}
.lgv3-rolecard.is-selected .lgv3-rolecard__art{
  border-color:rgba(123,15,36,.55);
  box-shadow:0 6px 18px rgba(104,13,34,.26),0 0 0 2px rgba(123,15,36,.3),inset 0 0 0 1px rgba(255,255,255,.5)
}
.lgv3-rolecard.is-selected .lgv3-rolecard__sheen{animation:lgv3-sheen .55s ease}
@keyframes lgv3-sheen{0%{opacity:0;transform:translateX(-60%)}40%{opacity:1}100%{opacity:0;transform:translateX(60%)}}

/* Gabarit sobre pour les rôles dont l'illustration n'est pas encore livrée : même
   palette, même cadre, pour que la grille reste d'un seul tenant. */
.lgv3-rolecard__plate{
  position:absolute;inset:0;display:grid;align-content:center;justify-items:center;gap:4px;
  padding:6px;text-align:center;
  background:
    radial-gradient(120% 70% at 50% 12%,rgba(123,15,36,.07),transparent 60%),
    linear-gradient(180deg,#fdf8f1,#f0e5d5)
}
.lgv3-rolecard__glyph{font-size:1.5rem;font-style:normal;line-height:1;filter:saturate(.9)}
.lgv3-rolecard__plate b{
  font:600 .56rem/1.1 var(--serif);color:#5d3d33;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden
}
.lgv3-rolecard__plate em{
  font-style:normal;font-size:.42rem;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;color:#a08b6f
}

/* Compteur : posé à cheval sur le bas de la carte, absent tant qu'il vaut zéro. */
.lgv3-rolecard__count{
  position:absolute;left:50%;top:calc(100% - 30px);transform:translate(-50%,0) scale(.4);
  min-width:34px;height:23px;padding:0 8px;border-radius:999px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:1px;
  background:linear-gradient(180deg,#9d1736,#6d0c20);color:#fff4ea;
  border:2px solid #fffaf4;box-shadow:0 4px 11px rgba(104,13,34,.4);
  font:900 .58rem/1 var(--sans);
  opacity:0;pointer-events:none;
  transition:opacity .18s ease,transform .22s cubic-bezier(.2,1.5,.4,1)
}
.lgv3-rolecard__count b{font-size:.72rem;font-weight:900}
.lgv3-rolecard.is-selected .lgv3-rolecard__count{
  opacity:1;pointer-events:auto;transform:translate(-50%,0) scale(1)
}
.lgv3-rolecard__count.is-bumped{animation:lgv3-count-pop .34s cubic-bezier(.2,1.5,.4,1)}
@keyframes lgv3-count-pop{
  0%{transform:translate(-50%,0) scale(1)}
  40%{transform:translate(-50%,-3px) scale(1.28)}
  100%{transform:translate(-50%,0) scale(1)}
}
.lgv3-rolecard__count:active{filter:brightness(1.15)}

.lgv3-rolecard__name{
  margin-top:9px;font:600 .58rem/1.15 var(--serif);color:#5b4038;text-align:center;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  transition:color .18s ease
}
.lgv3-rolecard.is-selected .lgv3-rolecard__name{color:var(--g);font-weight:700}

/* Liseré de camp, discret, en haut de chaque carte. */
.lgv3-rolecard--wolves .lgv3-rolecard__art{border-top:2px solid rgba(123,15,36,.65)}
.lgv3-rolecard--village .lgv3-rolecard__art{border-top:2px solid rgba(88,113,81,.6)}
.lgv3-rolecard--solo .lgv3-rolecard__art,
.lgv3-rolecard--alien .lgv3-rolecard__art{border-top:2px solid rgba(199,170,129,.85)}

@media(max-width:380px){
  .lgv3-rolecard-grid{gap:8px 5px}
  .lgv3-rolecard__name{font-size:.53rem}
  .lgv3-rolecard__count{min-width:30px;height:21px}
}
@media(min-width:620px){
  .lgv3-rolecard-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:11px 9px}
}
@media(prefers-reduced-motion:reduce){
  .lgv3-rolecard__sheen,.lgv3-rolecard__count.is-bumped{animation:none!important}
}

/* ==================================================================
   LA CARTE DU JOUEUR
   Le moment où l'on découvre son rôle mérite la carte en grand.
   ================================================================== */
.lgv3-ownrole{display:grid;justify-items:center;gap:15px;padding:2px 0 4px}
.lgv3-ownrole__card{
  position:relative;margin:0;width:min(100%,254px);aspect-ratio:2/3;overflow:hidden;
  border-radius:16px;background:linear-gradient(180deg,#f6ece0,#e9dbc9);
  border:1px solid rgba(160,124,72,.45);
  box-shadow:0 18px 44px rgba(60,34,24,.26),inset 0 0 0 1px rgba(255,255,255,.55);
  animation:lgv3-reveal .55s cubic-bezier(.2,.85,.3,1.1)
}
.lgv3-ownrole__card img{width:100%;height:100%;object-fit:cover;display:block}
@keyframes lgv3-reveal{
  from{opacity:0;transform:perspective(800px) rotateY(-14deg) translateY(14px) scale(.94)}
  to{opacity:1;transform:none}
}
/* Un reflet balaie la carte une fois, à la découverte. */
.lgv3-ownrole__sheen{
  position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(115deg,transparent 34%,rgba(255,255,255,.5) 50%,transparent 64%);
  animation:lgv3-sheen 1.1s ease .45s
}
.lgv3-ownrole__plate{
  position:absolute;inset:0;display:grid;align-content:center;justify-items:center;gap:10px;
  padding:20px;text-align:center;
  background:radial-gradient(120% 70% at 50% 14%,rgba(123,15,36,.08),transparent 60%),
    linear-gradient(180deg,#fdf8f1,#efe3d2)
}
.lgv3-ownrole__plate i{font-size:3.2rem;font-style:normal;line-height:1}
.lgv3-ownrole__plate b{font:600 1.3rem/1.1 var(--serif);color:#5d3d33}
.lgv3-ownrole__copy{text-align:center;max-width:330px}
.lgv3-ownrole__copy b{display:block;font:600 1.22rem/1.1 var(--serif);color:#3d2b26}
.lgv3-ownrole__copy p{margin:7px 0 0;font-size:.7rem;line-height:1.5;color:#7c6f69}
@media(prefers-reduced-motion:reduce){
  .lgv3-ownrole__card,.lgv3-ownrole__sheen{animation:none!important}
}

/* ==================================================================
   ALPHA 13.6 — SAISIE DU CODE : COLLER EN UN GESTE
   ================================================================== */
.lgv3-code-field__head{
  display:flex;align-items:center;justify-content:space-between;gap:8px
}
.lgv3-code-paste{
  display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;
  border:1px solid #e6d7cd;background:#fffaf6;color:var(--g);cursor:pointer;
  font:800 .58rem/1 var(--sans);transition:background .16s ease,transform .12s ease
}
.lgv3-code-paste svg{width:13px;height:13px}
.lgv3-code-paste b{font-weight:800}
.lgv3-code-paste:active{transform:scale(.95);background:#fbeef0}
