/* Decorative layers stay inside the painted scene, behind seats and controls. */
.ch-village-life{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;contain:layout paint;opacity:.5;display:none}
.ch-village-life>span{position:absolute;pointer-events:none}
.is-night .ch-village-life{opacity:.85}
html.motion-enabled .ch-village-life{display:block}
.ch-village-lively::after,.ch-village-lively .village-scrim::after{animation:none!important;opacity:0}
.ch-life-fog{inset:auto -18% -12%;height:47%;background:radial-gradient(ellipse at 25% 64%,#d6e4d859,transparent 43%),radial-gradient(ellipse at 73% 85%,#dfddce40,transparent 45%);opacity:.45}
.ch-life-fog--far{bottom:24%;height:34%;background:radial-gradient(ellipse at 35% 65%,#cedfdd35,transparent 49%),radial-gradient(ellipse at 81% 34%,#c3d7da2b,transparent 44%);opacity:.3}
.ch-life-beam{inset:-20%;background:linear-gradient(116deg,transparent 37%,#f8e5ac0e 44%,#f8e5ac1e 46%,transparent 54%);opacity:.6;transform:translateX(-6%)}
.is-night .ch-life-beam{background:linear-gradient(116deg,transparent 37%,#b7c9ef0b 44%,#b7c9ef1f 46%,transparent 54%)}
.ch-life-lamp{width:20%;height:23%;background:radial-gradient(ellipse,#ffd18868,transparent 64%);opacity:.28}
.ch-life-lamp:nth-child(4){left:15%;top:46%;--lamp-delay:-2s}
.ch-life-lamp:nth-child(5){left:61%;top:40%;--lamp-delay:-4.2s}
.ch-life-lamp:nth-child(6){left:45%;top:70%;--lamp-delay:-.7s}
.is-night .ch-life-lamp{background:radial-gradient(ellipse,#ffca7e99,#eea35b20 42%,transparent 68%)}
.ch-life-mote{width:3px;height:3px;border-radius:50%;background:#f5dfac;box-shadow:0 0 7px 2px #f4d19745;opacity:0;--mote-drift:14px;--mote-time:12s;--mote-delay:0s}
.ch-life-mote:nth-child(7){left:11%;top:70%;--mote-delay:-4s;--mote-time:13s}
.ch-life-mote:nth-child(8){left:27%;top:37%;--mote-delay:-10s;--mote-time:17s;--mote-drift:-20px}
.ch-life-mote:nth-child(9){left:47%;top:83%;--mote-delay:-2s;--mote-time:11s}
.ch-life-mote:nth-child(10){left:66%;top:61%;--mote-delay:-8s;--mote-time:15s;--mote-drift:-15px}
.ch-life-mote:nth-child(11){left:82%;top:29%;--mote-delay:-5s;--mote-time:14s}
.ch-life-mote:nth-child(12){left:91%;top:83%;--mote-delay:-12s;--mote-time:18s;--mote-drift:-24px}
.ch-life-mote:nth-child(13){left:37%;top:23%;--mote-delay:-7s;--mote-time:16s}
.ch-life-mote:nth-child(14){left:72%;top:92%;--mote-delay:-1s;--mote-time:12s;--mote-drift:-12px}
.ch-lively-ripple{position:absolute;inset:-5px;border:2px solid #edd08e;border-radius:50%;box-shadow:0 0 10px #ebc56a55;pointer-events:none;z-index:5}

html.motion-enabled:not(.motion-paused) .ch-life-fog--near{animation:ch-life-fog-near 22s ease-in-out infinite alternate}
html.motion-enabled:not(.motion-paused) .ch-life-fog--far{animation:ch-life-fog-far 31s ease-in-out -9s infinite alternate}
html.motion-enabled:not(.motion-paused) .ch-life-beam{animation:ch-life-light 29s ease-in-out -6s infinite alternate}
html.motion-enabled:not(.motion-paused) .ch-life-lamp{animation:ch-life-lantern 6.8s ease-in-out var(--lamp-delay) infinite alternate}
html.motion-enabled:not(.motion-paused) .ch-life-mote{animation:ch-life-mote var(--mote-time) ease-in-out var(--mote-delay) infinite}
/* Replace the original portrait idle animation; never move circular seat anchors. */
html.motion-enabled:not(.motion-paused) .ch-village-lively .seat:not(.dead):not(.empty) .seat-portrait{animation:ch-life-breathe var(--lively-duration,7s) ease-in-out var(--lively-delay,-2s) infinite;transform-origin:50% 85%}
html.motion-enabled:not(.motion-paused) .ch-village-lively .seat:is(:hover,:focus-visible) .seat-portrait{animation-play-state:paused;border-color:#f4d595;box-shadow:0 0 0 3px #edd08e40,0 6px 17px #061a2470}
.ch-village-lively .seat:focus-visible{outline-color:#f6dfa9;outline-offset:7px}
html.motion-enabled:not(.motion-paused) .ch-village-lively .seat:focus-visible .seat-portrait::after{opacity:.8;transform:scale(1.06)}
html.motion-enabled:not(.motion-paused) #role-dialog[open]{transform-origin:50% 65%;animation:ch-life-paper .38s cubic-bezier(.16,.75,.25,1) both}
html.motion-enabled:not(.motion-paused) .action-confirmation{position:relative;isolation:isolate;animation:ch-life-confirm .48s ease-out both}
html.motion-enabled:not(.motion-paused) .action-confirmation::after{content:'';position:absolute;z-index:-1;inset:0;pointer-events:none;background:linear-gradient(90deg,#d5ba7630,transparent);transform-origin:left;animation:ch-life-confirm-sweep .7s ease-out both}

@keyframes ch-life-fog-near{from{transform:translate3d(-6%,4%,0) scale(1.03);opacity:.35}to{transform:translate3d(7%,-4%,0) scale(1.08);opacity:.65}}
@keyframes ch-life-fog-far{from{transform:translate3d(5%,2%,0);opacity:.2}to{transform:translate3d(-5%,-5%,0);opacity:.55}}
@keyframes ch-life-light{from{transform:translateX(-6%);opacity:.4}to{transform:translateX(6%);opacity:.8}}
@keyframes ch-life-lantern{0%,100%{opacity:.32;transform:scale(.94)}47%{opacity:.76;transform:scale(1.06)}73%{opacity:.57;transform:scale(1)}}
@keyframes ch-life-mote{0%{opacity:0;transform:translate3d(0,14px,0)}20%{opacity:.8}70%{opacity:.55}100%{opacity:0;transform:translate3d(var(--mote-drift),-43px,0)}}
@keyframes ch-life-breathe{0%,100%{translate:0 0;rotate:-.25deg}45%{translate:0 -2.4px;rotate:.25deg}70%{translate:0 -.8px;rotate:0deg}}
@keyframes ch-life-paper{from{opacity:0;transform:translateY(12px) scale(.97) rotate(-.45deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}
@keyframes ch-life-confirm{from{opacity:.4;transform:translateX(-5px)}to{opacity:1;transform:translateX(0)}}
@keyframes ch-life-confirm-sweep{from{opacity:.7;transform:scaleX(.1)}to{opacity:0;transform:scaleX(1)}}
@media(max-width:760px){.ch-life-mote:nth-child(n+12){display:none}.ch-village-life{opacity:.4}.is-night .ch-village-life{opacity:.75}}
@media(prefers-reduced-motion:reduce){.ch-village-life,.ch-lively-ripple{display:none!important}.ch-village-lively .seat-portrait{animation:none!important;translate:none!important;rotate:none!important}#role-dialog[open],.action-confirmation,.action-confirmation::after{animation:none!important;transform:none!important}}
