/* Decorative actors are confined to the image, behind its edge and outside copy. */
/* Halloween hub: persistent art direction remains visible with motion disabled. */
.v4-halloween-hub{background:#17141e;color:#f2e6d9}
.v4-halloween-hub .v4-hub-hero{position:relative;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 75% 72%,#8c4f354d,transparent 38%),radial-gradient(ellipse at 12% 30%,#61364f91,transparent 57%),linear-gradient(118deg,#17131e,#29202b 51%,#1b1821);border-bottom:1px solid #b6825447;padding-block:53px 72px}
.v4-halloween-hub .v4-hub-hero::before{content:"";position:absolute;inset:0 auto auto 0;width:min(28vw,290px);height:270px;background:url('/assets/halloween-web.svg') no-repeat left top/contain;opacity:.3;pointer-events:none}
.v4-halloween-hub .v4-hub-hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:80px;background:linear-gradient(0deg,#da8f4830,transparent);pointer-events:none}
.v4-halloween-hub .v4-hub-hero .v4-wrap{position:relative;z-index:1}
.v4-halloween-hub .v4-hub-hero .v4-kicker{color:#f2bd7b}
.v4-halloween-hub .v4-hub-hero h1{color:#fff5e9;text-shadow:0 7px 28px #07070d86}
.v4-halloween-hub .v4-hub-hero p{color:#ddcfc9;max-width:620px}
.v4-halloween-hub .v4-hub-image{padding:7px;border:1px solid #ce925a77;border-radius:24px;background:linear-gradient(140deg,#9c6756,#271a28 33%,#a86d40 81%,#2b1e2d);box-shadow:0 35px 65px #06051085,0 0 48px #b6793c22}
.v4-halloween-hub .v4-hub-image img{border-radius:17px}
.v4-halloween-hub .v4-hub-image::before{content:"";position:absolute;z-index:1;inset:7px;border-radius:17px;pointer-events:none;background:linear-gradient(90deg,#1e152558,transparent 35%),linear-gradient(0deg,#2515224d,transparent 24%)}
.v4-halloween-hub .seasonal-actors{z-index:2;inset:7px}
.v4-halloween-hub .v4-section{background:radial-gradient(ellipse at 24% 0,#55334336,transparent 49%),linear-gradient(#211a27,#17141e);color:#f6ebdf;border-bottom:1px solid #bc835443}
.v4-halloween-hub .v4-section .v4-kicker{color:#ebb476}
.v4-halloween-hub .v4-section-head h2{color:#f9eee3}
.v4-halloween-hub .v4-category-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:21px}
.v4-halloween-hub .v4-tile{background:#2a202c;border:1px solid #b989594e;color:#f5e7d8;box-shadow:0 18px 34px #0b09127a}
.v4-halloween-hub .v4-tile:hover{box-shadow:0 23px 41px #0b0912af;border-color:#e5a96891}
.v4-halloween-hub .v4-tile-media{height:215px;background:radial-gradient(circle at 50% 30%,#68434d,#241b29)}
.v4-halloween-hub .v4-tile-media img{object-fit:cover}
.v4-halloween-hub .v4-tile-copy{border-top:1px solid #ecb87b25}
.v4-halloween-hub .v4-tile h3{color:#f7eada}
.v4-halloween-hub .v4-tile .v4-status{color:#c9aa97}
.v4-halloween-hub .v4-tile:not(.v4-tile-empty) .v4-status{color:#f0bf83}
.v4-halloween-hub .v4-tile .v4-tile-cta{color:#e9b780}
@media(max-width:700px){.v4-halloween-hub .v4-hub-hero{padding-block:32px 51px}.v4-halloween-hub .v4-hub-hero::before{width:140px;height:125px;opacity:.24}.v4-halloween-hub .v4-category-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.v4-halloween-hub .v4-tile-media{height:142px}.v4-halloween-hub .v4-hub-image{padding:5px}.v4-halloween-hub .v4-hub-image::before,.v4-halloween-hub .seasonal-actors{inset:5px}}
@media(max-width:370px){.v4-halloween-hub .v4-category-grid{grid-template-columns:1fr}.v4-halloween-hub .v4-tile{display:block}.v4-halloween-hub .v4-tile-media{height:155px}}
.v4-season-image,.v4-hub-image{position:relative;isolation:isolate}
.seasonal-actors{position:absolute;inset:0;z-index:1;overflow:hidden;border-radius:18px;pointer-events:none;contain:paint;--actor-active:paused}
.seasonal-actors.is-in-view.is-page-visible{--actor-active:running}
.v4-halloween-hub .seasonal-actors::before{content:"";position:absolute;inset:-12% -42% -18%;background:radial-gradient(ellipse at 38% 68%,#dcc4ac2c,transparent 46%),linear-gradient(100deg,transparent 9%,#c8b5b026 42%,transparent 79%);opacity:.24;pointer-events:none;animation:seasonalMist 41s ease-in-out infinite alternate;animation-play-state:var(--actor-active)}
.seasonal-actor{position:absolute;display:block;pointer-events:none;will-change:transform,opacity;animation-play-state:var(--actor-active)!important}
.seasonal-actor svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(1px 3px 3px #110d19a6)}
.seasonal-cat svg{filter:drop-shadow(0 0 3px #e6ab70d6) drop-shadow(2px 5px 5px #110d19)}
.seasonal-cat{width:142px;height:89px;bottom:-5px;left:24%;opacity:0;animation:seasonalCat 24s ease-in-out infinite}
.seasonal-cat::before{content:"";position:absolute;inset:19% -11% -8%;border-radius:50%;background:radial-gradient(ellipse,#e5a56d91,transparent 73%)}
.seasonal-pumpkin{width:85px;height:85px;bottom:-4%;right:4%;mix-blend-mode:screen;filter:drop-shadow(0 0 18px #f7a64cbd);animation:seasonalPumpkin 5.2s ease-in-out infinite}
.seasonal-ghost{width:58px;height:73px;right:-8px;top:16%;opacity:0;animation:seasonalGhost 24s ease-in-out infinite}
.seasonal-bats{width:106px;height:58px;left:21%;top:7%;opacity:0;animation:seasonalBats 24s ease-in-out infinite}
.seasonal-bats svg{filter:drop-shadow(0 0 2px #f6ba7f7a)}
.seasonal-bats .bat-one,.seasonal-bats .bat-two{transform-origin:50% 45%;animation:seasonalWings .85s ease-in-out infinite alternate;animation-play-state:var(--actor-active)!important}
.seasonal-bats .bat-two{animation-delay:-.38s}
.seasonal-leaf{width:31px;height:39px;left:27%;top:-15%;opacity:0;animation:seasonalLeaf 24s linear infinite}
.v4-home-shell .seasonal-cat{width:100px;height:65px;left:7%;bottom:-9px;animation:seasonalHomeCat 30s ease-in-out infinite;animation-delay:-4s}
.v4-home-shell .seasonal-cat::before{background:radial-gradient(ellipse,#b87b4c38,transparent 73%)}
.v4-home-shell .seasonal-cat svg{filter:drop-shadow(0 0 2px #c1957599) drop-shadow(1px 3px 3px #110d19)}
.v4-home-shell .seasonal-leaf{left:13%;animation-duration:27s;animation-delay:-7s}
.v4-seasonal-shell .v4-hub-image:has(.seasonal-actors)::after{content:"";position:absolute;z-index:1;inset:0;border-radius:18px;pointer-events:none;background:radial-gradient(ellipse at 83% 93%,#f3a45b20,transparent 38%)}
@keyframes seasonalCat{0%,4%,100%{opacity:0;transform:translate3d(-110px,12px,0)}10%{opacity:1;transform:translate3d(-32px,1px,0)}25%{opacity:1;transform:translate3d(25px,0,0)}29%,43%{opacity:1;transform:translate3d(52px,3px,0)}49%{opacity:.85;transform:translate3d(78px,0,0)}54%,95%{opacity:0;transform:translate3d(135px,10px,0)}}
@keyframes seasonalHomeCat{0%,8%,100%{opacity:0;transform:translate3d(-95px,11px,0)}16%{opacity:.77;transform:translate3d(-25px,1px,0)}27%{opacity:.77;transform:translate3d(19px,0,0)}34%,97%{opacity:0;transform:translate3d(74px,10px,0)}}
@keyframes seasonalPumpkin{0%,100%{opacity:.22;filter:brightness(.82)}39%{opacity:.41;filter:brightness(1.17)}42%{opacity:.29;filter:brightness(.93)}47%{opacity:.53;filter:brightness(1.38)}52%{opacity:.35;filter:brightness(1.04)}}
@keyframes seasonalGhost{0%,39%,60%,100%{opacity:0;transform:translate3d(20px,13px,0)}45%,52%{opacity:.72;transform:translate3d(-27px,-4px,0)}57%{opacity:0;transform:translate3d(-18px,-15px,0)}}
@keyframes seasonalBats{0%,57%,77%,100%{opacity:0;transform:translate3d(22px,22px,0)}62%,70%{opacity:.82;transform:translate3d(-15px,-9px,0)}74%{opacity:.35;transform:translate3d(-52px,-27px,0)}}
@keyframes seasonalWings{from{transform:scaleY(.78)}to{transform:scaleY(1.13)}}
@keyframes seasonalLeaf{0%,78%,100%{opacity:0;transform:translate3d(0,-18px,0) rotate(-24deg)}82%{opacity:.66}91%{opacity:.71;transform:translate3d(44px,100px,0) rotate(43deg)}97%{opacity:0;transform:translate3d(81px,194px,0) rotate(102deg)}}
@keyframes seasonalMist{from{transform:translate3d(-17%,0,0);opacity:.17}to{transform:translate3d(19%,0,0);opacity:.37}}
@media(max-width:700px){.seasonal-cat{width:100px;height:64px;bottom:-6px;left:3%}.seasonal-pumpkin{width:62px;height:62px;right:5%;bottom:-2%}.seasonal-ghost,.seasonal-bats,.seasonal-leaf{display:none}.v4-halloween-hub .seasonal-actors::before{opacity:.09}}
@media(prefers-reduced-motion:reduce){.seasonal-actors{display:none!important}.seasonal-actor{animation:none!important}}

/* Phase 2.2: three distinct moments in the existing Halloween hero, no new layout. */
.v4-halloween-hub .v4-hub-image{padding:4px;border-color:#d5a16b48;background:linear-gradient(136deg,#694152,#382733 54%,#9b6247);box-shadow:0 27px 66px #100b18b0,0 0 79px 18px #d68b4e30,0 0 130px 35px #91566a29}
.v4-halloween-hub .v4-hub-image img{border-radius:19px}
.v4-halloween-hub .v4-hub-image::before{inset:4px;border-radius:19px;background:linear-gradient(90deg,#1d142242,transparent 35%),linear-gradient(0deg,#29192c75,transparent 37%)}
.v4-halloween-hub .seasonal-actors{inset:4px;overflow:visible;contain:layout;z-index:4}
.v4-halloween-hub .seasonal-actors::before{opacity:.26;animation:seasonalMist 47s ease-in-out infinite alternate}
/* The foreground mist reaches across the image edge but stays inside the image column. */
.v4-seasonal-shell.v4-halloween-hub .v4-hub-image::after{content:"";position:absolute;z-index:3;inset:12% -18px -24px 9%;border-radius:18px;pointer-events:none;background:radial-gradient(ellipse at 70% 89%,#d6a58a42,transparent 58%),radial-gradient(ellipse at 31% 82%,#c7b0b240,transparent 58%);filter:blur(15px);opacity:.5;animation:signatureFog 39s ease-in-out infinite alternate;animation-play-state:paused}
.v4-halloween-hub .v4-hub-image:has(.seasonal-actors.is-in-view.is-page-visible)::after{animation-play-state:running}
.v4-halloween-hub .seasonal-cat{left:10%;bottom:-51px;width:142px;height:89px;z-index:4}
.v4-halloween-hub .seasonal-cat::before{background:radial-gradient(ellipse,#e9ae7194,transparent 73%)}
.v4-halloween-hub .seasonal-pumpkin{left:-34px;right:auto;bottom:-25px;width:94px;height:94px;z-index:4;opacity:1;mix-blend-mode:normal;filter:drop-shadow(0 0 10px #ffa9557a) drop-shadow(0 9px 9px #160e17);animation:none}
.v4-halloween-hub .seasonal-pumpkin::before{content:"";position:absolute;inset:19% 8% 4%;border-radius:50%;background:#f4a34a65;filter:blur(14px);animation:seasonalCandleHalo 5.1s linear infinite;animation-play-state:var(--actor-active)}
.v4-halloween-hub .pumpkin-face{animation:seasonalCandleFace 5.1s linear infinite;animation-play-state:var(--actor-active)}
.v4-halloween-hub .seasonal-ghost{right:-31px;top:17%;z-index:2;mask-image:linear-gradient(to right,#000 62%,#0009 86%,transparent);animation:signatureGhost 24s ease-in-out infinite}
.v4-halloween-hub .v4-tile-media{position:relative;isolation:isolate}
.v4-halloween-hub .v4-tile-media::after{content:"";position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .5s ease}
.v4-halloween-hub .v4-tile[href$="/decorations/"] .v4-tile-media::after{background:radial-gradient(ellipse at 52% 61%,#f9ad4a82 0,#eb8c3840 20%,transparent 55%)}
.v4-halloween-hub .v4-tile[href$="/costumes/"] .v4-tile-media::after{background:radial-gradient(ellipse at 51% 42%,#f7ce9f3d 0,#d7a58126 32%,transparent 68%)}
.v4-halloween-hub .v4-tile[href$="/rooms/"] .v4-tile-media::after{background:radial-gradient(ellipse at 62% 73%,#e9a76058,transparent 67%)}
.v4-halloween-hub .v4-tile[href$="/decorations/"]:is(:hover,:focus-visible) .v4-tile-media::after{opacity:.44;animation:seasonalLanternHover 4.1s linear infinite}
.v4-halloween-hub .v4-tile[href$="/costumes/"]:is(:hover,:focus-visible) .v4-tile-media::after{opacity:.32}
.v4-halloween-hub .v4-tile[href$="/rooms/"]:is(:hover,:focus-visible) .v4-tile-media::after{opacity:.3}
@keyframes seasonalCandleFace{0%,15%,28%,46%,63%,81%,100%{opacity:.96;filter:brightness(1.05)}17%{opacity:.72;filter:brightness(.75)}31%,48%{opacity:1;filter:brightness(1.32)}65%{opacity:.68;filter:brightness(.8)}83%{opacity:.82;filter:brightness(.88)}}
@keyframes seasonalCandleHalo{0%,15%,28%,46%,63%,81%,100%{opacity:.5}17%,65%{opacity:.23}31%,48%{opacity:.71}83%{opacity:.37}}
@keyframes signatureGhost{0%,39%,61%,100%{opacity:0;transform:translate3d(28px,10px,0)}46%,53%{opacity:.87;transform:translate3d(-25px,-5px,0)}58%{opacity:.45;transform:translate3d(-15px,-8px,0)}}
@keyframes signatureFog{from{transform:translate3d(-8%,0,0);opacity:.35}to{transform:translate3d(8%,-3%,0);opacity:.61}}
@keyframes seasonalLanternHover{0%,37%,58%,100%{opacity:.44}40%{opacity:.29}62%{opacity:.53}}
@media(max-width:700px){.v4-halloween-hub .seasonal-actors{inset:5px}.v4-halloween-hub .seasonal-cat{left:4%;bottom:-34px;width:102px;height:66px}.v4-halloween-hub .seasonal-pumpkin{left:auto;right:-10px;bottom:-16px;width:58px;height:58px}.v4-seasonal-shell.v4-halloween-hub .v4-hub-image::after{inset:30% 0 -12px 10%;opacity:.25;animation:none}.v4-halloween-hub .seasonal-actors::before{animation:none;opacity:.1}}
@media(prefers-reduced-motion:reduce){.v4-seasonal-shell.v4-halloween-hub .v4-hub-image::after{animation:none;opacity:.22}.v4-halloween-hub .v4-tile-media::after{animation:none!important;transition:none!important}}

/* Phase 2.2.1: separate locomotion and seated silhouettes. The 24 s actor
   schedule stays intact; only the figure inside its frame changes pose. */
.seasonal-cat svg,.v4-home-shell .seasonal-cat svg{filter:drop-shadow(1px 3px 2px #100d14a6)}
.seasonal-cat::before,.v4-halloween-hub .seasonal-cat::before,.v4-home-shell .seasonal-cat::before{inset:auto 9% 0;height:16%;background:radial-gradient(ellipse,#0d0b12b0 0,#9d704226 43%,transparent 72%);filter:blur(4px)}
.cat-walk-pose,.cat-sit-pose,.cat-walk-body,.cat-leg,.cat-sit-tail{transform-box:view-box;animation-play-state:var(--actor-active)!important}
.cat-walk-pose{animation:seasonalWalkPose 24s ease-in-out infinite}
.cat-sit-pose{opacity:0;animation:seasonalSitPose 24s ease-in-out infinite}
.cat-walk-body{animation:seasonalBodyBob .54s ease-in-out infinite alternate}
.cat-leg{transform-box:fill-box;transform-origin:50% 8%;animation:seasonalStepA .54s ease-in-out infinite alternate}
.cat-leg-b{animation-name:seasonalStepB}
.cat-sit-tail{transform-origin:48px 82px;animation:seasonalSitTail 3.8s ease-in-out infinite alternate}
.v4-halloween-hub .seasonal-pumpkin{filter:drop-shadow(0 6px 6px #120c14c9)}
.v4-halloween-hub .seasonal-pumpkin::before{inset:35% 27% 17%;background:#ffc47650;filter:blur(10px)}
.v4-halloween-hub .pumpkin-face{animation:none}
.v4-halloween-hub .pumpkin-light{animation:seasonalCandleFace 5.1s linear infinite;animation-play-state:var(--actor-active)}
.v4-halloween-hub .seasonal-ghost{mask-image:linear-gradient(to right,#000 0%,#000 58%,transparent 78%)}
.v4-halloween-hub .seasonal-ghost svg{filter:drop-shadow(0 0 5px #e9d9e02b)}
@keyframes seasonalWalkPose{0%,29%{opacity:1}34%,45%{opacity:0}49%,100%{opacity:1}}
@keyframes seasonalSitPose{0%,29%{opacity:0}34%,44%{opacity:1}49%,100%{opacity:0}}
@keyframes seasonalBodyBob{from{transform:translateY(1px)}to{transform:translateY(-1px)}}
@keyframes seasonalStepA{from{transform:rotate(-10deg) translateY(1px)}to{transform:rotate(10deg) translateY(-2px)}}
@keyframes seasonalStepB{from{transform:rotate(10deg) translateY(-2px)}to{transform:rotate(-10deg) translateY(1px)}}
@keyframes seasonalSitTail{from{transform:rotate(-5deg)}to{transform:rotate(7deg)}}
