.bank-banker{position:absolute;left:30%;top:8%;width:40%;aspect-ratio:1;z-index:1;pointer-events:none;transform-origin:50% 90%;animation:bank-breathe 5.4s ease-in-out infinite;opacity:0;transition:opacity .35s}.bank-scene.life-ready .bank-banker{opacity:1}.bank-banker-pose{position:absolute;inset:0;background:url('/assets/holster-banker-poses-v363.png') no-repeat 0 0/200% 200%}.bank-banker[data-pose="blink"] .bank-banker-pose{background-position:100% 0}.bank-banker[data-pose="reach"] .bank-banker-pose{background-position:0 100%}.bank-banker[data-pose="give"] .bank-banker-pose{background-position:100% 100%}.bank-counter-front{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;clip-path:inset(69% 0 0 0);z-index:1;pointer-events:none}.bank-window-light{position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 15% 20%,#fbd78a12,transparent 35%),radial-gradient(ellipse at 85% 20%,#fbd78a12,transparent 35%);animation:bank-daylight 11s ease-in-out infinite}.bank-delivery{left:46%;top:65%;width:8%;z-index:2}.delivering .bank-delivery{animation:bank-slide-v351 3s cubic-bezier(.3,.1,.3,1) both}.bank-offer:disabled:not(.selected){opacity:.65}.bank-scene.life-paused .bank-banker,.bank-scene.life-paused .bank-window-light{animation-play-state:paused}.bank-scene.delivering .bank-banker{animation-play-state:paused}@keyframes bank-breathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-.25%) scale(1.003,1.006)}}@keyframes bank-daylight{0%,100%{opacity:.3}50%{opacity:.8}}@keyframes bank-slide-v351{0%,35%{opacity:0;transform:translateY(-7%) scale(.55)}42%{opacity:1;transform:translateY(0) scale(.55)}76%{opacity:1;transform:translateY(80%) scale(1.15)}100%{opacity:1;transform:translateY(120%) scale(1.65)}}@media(max-width:650px){.bank-banker{left:10%;width:80%;top:8%}.bank-delivery{left:42%;width:16%;top:65%}.bank-counter-front{object-position:50% 50%}}@media(prefers-reduced-motion:reduce){.bank-banker,.bank-window-light{animation:none;transition:none}.delivering .bank-delivery{animation:none;opacity:1;transform:translateY(70%)}}
.bank-status{z-index:4}.bank-delivery{left:39%;top:65%}@keyframes bank-slide-v351{0%,35%{opacity:0;transform:translate(0,-7%) scale(.55)}42%{opacity:1;transform:translate(0,0) scale(.55)}76%{opacity:1;transform:translate(65%,80%) scale(1.15)}100%{opacity:1;transform:translate(85%,120%) scale(1.65)}}@media(max-width:650px){.bank-delivery{left:28%}}

/* One unchanged body viewport during idle/blink. Only the eyelid region
   switches to the closed-eye cell of the same unmodified approved atlas. */
.bank-banker[data-pose="blink"] .bank-banker-pose{background-position:0 0}
.bank-banker-pose::after{content:"";position:absolute;inset:0;pointer-events:none;background:url('/assets/holster-banker-poses-v363.png') no-repeat 100% 0/200% 200%;opacity:0;transform:translateX(.4%);mask-image:radial-gradient(ellipse 5.2% 3.5% at 51% 25%,#000 65%,transparent 100%),radial-gradient(ellipse 5.2% 3.5% at 59% 25%,#000 65%,transparent 100%);mask-repeat:no-repeat}
.bank-banker[data-pose="blink"] .bank-banker-pose::after{opacity:1}
/* The actual wooden sill begins at y=631 of the 1024px scene.
   Occlude the sprite below it, instead of exposing the waist in front. */
.bank-counter-front{clip-path:inset(61.5% 0 0 0)}

/* Mirror the reach/give artwork only. The room and resting banker keep
   their orientation; breathing remains on the unchanged parent. */
.bank-banker[data-reach-side="right"][data-pose="reach"] .bank-banker-pose,
.bank-banker[data-reach-side="right"][data-pose="give"] .bank-banker-pose{transform:scaleX(-1)}
