@charset "UTF-8";
:root{--night:#211333;--deep:#150d23;--orange:#ff963b;--cream:#fff4d9;--purple:#bb9cda;--ink:#2b173b;--font:"Hiragino Maru Gothic ProN","Yu Gothic","Meiryo",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:95px}body{margin:0;background:var(--night);color:var(--cream);font-family:var(--font);line-height:1.85;font-size:1.0rem;overflow-x:clip}a{color:inherit;text-decoration:none}button{font:inherit}a:focus-visible,button:focus-visible{outline:3px solid #caff84;outline-offset:6px}h1,h2,h3,p{margin:0}h2{font-size:clamp(28px,3.5vw,46px);line-height:1.5;letter-spacing:.05em}h3{line-height:1.6}img{max-width:100%;display:block}.skip{position:fixed;left:20px;top:-100px;z-index:50;background:var(--cream);color:var(--night);padding:8px 20px}.skip:focus{top:12px}.header{height:94px;padding:0 5.4%;display:flex;align-items:center;justify-content:space-between;background:var(--deep);border-bottom:1px solid #ffffff15;position:relative;z-index:10}.wordmark{font-weight:800;font-size:1.1875rem;letter-spacing:.06em;line-height:1.5}.wordmark span{display:block;font:11px/2 Georgia,serif;letter-spacing:.2em;color:var(--orange)}nav{display:flex;align-items:center;gap:35px;font-weight:700;font-size:0.875rem}nav a:hover{color:var(--orange)}.nav-date{border:1px solid #ff963b66;border-radius:100%;padding:5px 22px;color:var(--orange);font-size:1.375rem}.nav-date span{font-size:0.75rem}.hero{min-height:825px;position:relative;isolation:isolate;overflow:hidden;background:var(--deep)}.hero-art{position:absolute;right:0;top:0;width:63%;height:100%;object-fit:cover;object-position:50% 61%;z-index:-3}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,#150d23 0%,#150d23f5 22%,#150d23b0 43%,#150d2300 68%),linear-gradient(0deg,#211333 0%,transparent 18%);z-index:-2}.hero-copy{padding:64px 0 78px;margin-left:7%;position:relative;width:59%;z-index:2}.eyebrow{font-size:0.875rem;font-weight:700;letter-spacing:.06em;margin-bottom:27px;color:#f7deb9;display:flex;align-items:center;gap:10px}.eyebrow span{width:24px;height:2px;background:var(--orange)}.jp-title{display:block;font-size:clamp(21px,2.6vw,35px);letter-spacing:.17em;margin-bottom:18px;line-height:1.5}.en-title{font-family:Georgia,"Times New Roman",serif;display:block;font-weight:900;font-size:clamp(48px,6.7vw,96px);line-height:.99;letter-spacing:-.055em;color:var(--orange);text-shadow:3px 5px 0 #642b46,0 0 50px #f77b2518}.en-title>span{display:block;font-size:1.27em;letter-spacing:.025em}.title-star{display:inline-block;font-size:.43em;margin-left:.18em;vertical-align:middle;color:#fbd89b;transform:rotate(10deg)}.jp-subtitle{display:block;font-size:0.9375rem;letter-spacing:.5em;margin-top:22px;color:#ecc5a6}.hero-lead{font-size:1.5625rem;line-height:1.65;margin-top:30px;letter-spacing:.06em}.hero-lead strong{font-weight:700}.hero-intro{font-size:0.9375rem;line-height:2;margin-top:18px;color:#e4d6e6}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;padding:15px 27px;border-radius:100px;font-size:1.0rem;font-weight:800;min-height:56px;transition:transform .2s,box-shadow .2s}.button:hover{transform:translateY(-4px);box-shadow:0 9px 0 #08040d70}.button span{font-size:1.375rem}.button-orange{background:var(--orange);color:var(--night);margin-top:26px;box-shadow:0 5px 0 #823f4e}.welcome{font-size:0.875rem;letter-spacing:.09em;margin:19px 0 0 16px;color:#f5d7b9}.hero-seal{position:absolute;right:7%;top:33px;transform:rotate(11deg);height:152px;width:152px;border-radius:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--orange);color:var(--ink);outline:1px dashed var(--orange);outline-offset:7px;box-shadow:0 10px 50px #10051955}.hero-seal span{font-size:0.75rem;font-weight:800}.hero-seal strong{font:italic bold 32px/.98 Georgia,serif;text-align:center}.scroll-hint{position:absolute;right:4%;bottom:48px;writing-mode:vertical-rl;font-size:0.6875rem;letter-spacing:.2em;display:flex;gap:12px}.event-wrap{padding:0 7%;position:relative;z-index:4;margin-top:-8px}.event-ticket{max-width:1120px;margin:auto;display:grid;grid-template-columns:1.2fr 1fr 1fr;background:var(--cream);color:var(--ink);border-radius:15px;box-shadow:0 10px 0 #0c07193b;padding:30px 36px;position:relative}.event-ticket:before,.event-ticket:after{content:"";position:absolute;width:28px;height:28px;border-radius:50%;top:calc(50% - 14px);background:var(--night)}.event-ticket:before{left:-14px}.event-ticket:after{right:-14px}.event-ticket>div{padding:0 25px;border-right:2px dashed #46234e30}.event-ticket>div:last-child{border:0}.ticket-label{display:block;font-size:0.75rem;letter-spacing:.17em;font-weight:700;margin-bottom:3px}.ticket-date>div{display:flex;align-items:center;gap:6px;line-height:1.3}.year{font:22px Georgia,serif;align-self:flex-end;margin-bottom:8px}.ticket-date strong{font:700 49px Georgia,serif;letter-spacing:-.05em}.sat{font-size:0.75rem;line-height:1.3;text-align:center;border:1px solid #2b173b50;padding:3px 5px;margin-left:7px}.ticket-time strong{font:700 31px/1.9 Georgia,serif;white-space:nowrap}.ticket-time strong span{margin:0 10px;font-size:1.1875rem}.ticket-place strong{display:block;font-size:1.5rem;line-height:1.55}.ticket-place>span:last-child{font-size:0.8125rem}.section{padding:95px 7%}.section-kicker{font:700 12px/1.7 Georgia,serif;letter-spacing:.19em;color:var(--orange);margin-bottom:18px}.intro-section{text-align:center;position:relative;overflow:hidden;padding:105px 7% 112px;background:radial-gradient(ellipse at 50% 70%,#42254877,transparent 66%)}.intro-section h2{color:var(--cream);margin-bottom:28px}.intro-section p:not(.section-kicker){line-height:2.25;margin-top:16px;color:#e6d9e9}.intro-spark{position:absolute;font-size:4.6875rem;right:18%;top:24%;color:var(--orange);transform:rotate(15deg)}.howto{background:var(--orange);color:var(--ink);position:relative;border-radius:55px 55px 0 0}.howto .section-kicker{color:#653444}.section-heading{text-align:center}.section-heading>p:last-child{margin-top:15px}.steps{max-width:1120px;margin:52px auto 0;display:grid;grid-template-columns:repeat(3,1fr);gap:23px}.step{background:var(--cream);border-radius:130px 130px 22px 22px;padding:35px 26px 34px;text-align:center;position:relative;box-shadow:0 7px 0 #ba563d40}.step-number{position:absolute;left:25px;top:19px;font:italic bold 34px Georgia,serif;color:#75475e}.step-symbol,.speech{height:137px;display:flex;align-items:center;justify-content:center;margin:7px auto 23px}.step-symbol{font-size:6.4375rem;color:#de7131}.speech{font:italic bold 35px/1 Georgia,serif;transform:rotate(-10deg);color:#6c467f;border:2px solid #c6adce;border-radius:50%;width:146px;max-width:100%;height:112px;margin-top:32px}.thanks{transform:rotate(8deg);color:#ab4e32;border-color:#e5b594}.step-en{font:700 10px/1.8 Georgia,serif;letter-spacing:.12em;color:#875d6c;margin-bottom:11px}.step h3{font-size:1.4375rem;margin-bottom:13px}.step>p:last-child{font-size:0.9375rem;line-height:1.9}.photo-note{max-width:1120px;margin:42px auto 0;border-top:1px solid #4a233e44;padding:36px 48px 0;display:flex;justify-content:center;align-items:center;gap:100px}.photo-note h3{font-size:1.8125rem;line-height:1.45}.photo-note .section-kicker{margin-bottom:10px;display:block}.parents{display:inline-block;padding:3px 12px;border:1px solid #783a464d;border-radius:100px;font-size:0.875rem;font-weight:700;margin-top:15px}.safety{display:grid;grid-template-columns:1fr 1.2fr;gap:65px;max-width:1450px;margin:auto;padding-top:110px;padding-bottom:105px}.safety-heading h2{font-size:clamp(27px,3vw,38px)}.safety-heading>p:last-child{color:#cdbed5;margin-top:23px;font-size:0.9375rem}.safety-list{list-style:none;margin:0;padding:0}.safety-list li{display:flex;gap:20px;padding:22px 0;border-bottom:1px solid #f4d9ff24}.safety-list li:first-child{padding-top:0}.safety-list li>span{font:italic 24px Georgia,serif;color:var(--orange);margin-top:7px}.safety-list h3{font-size:1.1875rem}.safety-list p{color:#cfbfd7;font-size:0.875rem;margin-top:6px}.closing{position:relative;text-align:center;background:#342044;overflow:hidden;padding-top:76px;padding-bottom:82px}.closing h2{font-size:clamp(34px,5vw,58px)}.closing>p:not(.section-kicker){margin-top:22px}.button-cream{background:var(--cream);color:var(--ink);margin-top:30px}footer{padding:30px 7%;display:flex;justify-content:space-between;gap:25px;color:#b7a7c3;font-size:0.75rem}footer>span{font-weight:700;color:#e8d8eb}.footer-en{display:block;font:10px/2 Georgia,serif;letter-spacing:.12em}.mobile-only{display:none}
@media(min-width:1600px){.hero-copy{margin-left:max(7%,calc((100vw - 1380px)/2))}.hero{min-height:900px}.hero-art{width:60%}}
@media(max-width:1000px){.header{padding:0 5%}.hero-copy{margin-left:5%;width:66%}.hero{min-height:780px}.hero-art{width:72%;object-position:55% 60%}.hero-seal{width:117px;height:117px;right:5%;top:45px}.hero-seal strong{font-size:1.5625rem}.hero-seal span{font-size:0.625rem}.event-wrap{padding:0 4%}.event-ticket{padding:27px 17px;grid-template-columns:1.25fr 1fr 1fr}.event-ticket>div{padding:0 15px}.ticket-date strong{font-size:2.375rem}.year{font-size:1.0rem}.ticket-time strong{font-size:1.5625rem}.ticket-time strong span{margin:0 5px}.ticket-place strong{font-size:1.3125rem}.section{padding-left:5%;padding-right:5%}.steps{gap:15px}.step{padding-left:16px;padding-right:16px}.step h3{font-size:1.25rem}.safety{gap:35px}.intro-spark{right:10%}.photo-note{gap:65px}}
@media(max-width:650px){html{scroll-padding-top:20px}.header{height:75px;padding:0 22px}.wordmark{font-size:0.9375rem}.wordmark span{font-size:0.5625rem}nav{gap:0}nav>a:not(.nav-date){display:none}.nav-date{font-size:1.1875rem;padding:4px 13px}.nav-date span{font-size:0.625rem}.hero{min-height:980px}.hero-art{width:100%;height:660px;top:360px;object-position:center 61%}.hero-shade{background:linear-gradient(180deg,#150d23 0%,#150d23 29%,#150d23a0 47%,transparent 62%,transparent 82%,#211333 100%)}.hero-copy{width:auto;margin:0;padding:35px 25px 0;text-align:center}.eyebrow{font-size:0.6875rem;justify-content:center;letter-spacing:0;margin-bottom:22px}.eyebrow span{width:14px}.jp-title{font-size:1.375rem;letter-spacing:.13em;margin-bottom:16px}.en-title{font-size:clamp(42px,10.5vw,65px);line-height:1.04}.en-title>span{font-size:1.3em}.jp-subtitle{font-size:0.75rem;letter-spacing:.33em;margin-top:18px}.hero-lead{font-size:1.3125rem;margin-top:22px}.hero-intro{font-size:0.8125rem;line-height:1.9;margin-top:13px}.hero .button{font-size:0.875rem;min-height:51px;padding:11px 22px;gap:30px;margin-top:20px}.welcome{font-size:0.75rem;margin:15px 0 0}.hero-seal{top:auto;bottom:190px;left:22px;right:auto;width:98px;height:98px}.hero-seal strong{font-size:1.375rem}.hero-seal span{font-size:0.625rem}.scroll-hint{right:18px;bottom:45px;font-size:0.5625rem}.event-wrap{padding:0 22px;margin-top:-5px}.event-ticket{display:grid;grid-template-columns:1fr 1fr;padding:24px 14px;border-radius:12px}.event-ticket>div{padding:0 12px}.event-ticket>div:nth-child(2){border:0}.ticket-date>div{gap:2px;flex-wrap:wrap}.ticket-date strong{font-size:2.1875rem}.year{display:block;width:100%;font-size:0.875rem;margin:0}.sat{font-size:0.5625rem;margin-left:5px}.ticket-label{font-size:0.6875rem}.ticket-time strong{font-size:1.3125rem;display:block;margin-top:19px;line-height:1.5}.ticket-time strong span{font-size:0.75rem;margin:0 3px}.event-ticket>.ticket-place{grid-column:1/-1;border-top:2px dashed #46234e30;margin-top:19px;padding-top:15px;display:flex;flex-wrap:wrap;align-items:center;gap:7px 17px}.ticket-place .ticket-label{margin:0}.ticket-place strong{font-size:1.375rem}.ticket-place>span:last-child{font-size:0.6875rem;width:100%;text-align:center}.section{padding:65px 25px}.section-kicker{font-size:0.625rem;letter-spacing:.14em}.intro-section{padding-top:76px;padding-bottom:80px}.intro-section h2{font-size:1.8125rem}.intro-section p:not(.section-kicker){font-size:0.875rem}.intro-spark{font-size:2.1875rem;right:6%;top:14%}.howto{border-radius:32px 32px 0 0}.mobile-only{display:block}.steps{grid-template-columns:1fr;max-width:360px;margin-top:35px;gap:26px}.step{border-radius:95px 95px 20px 20px;padding:25px 22px 31px}.step-symbol{height:112px;margin:5px auto 20px}.speech{margin-top:5px}.step-number{top:28px;left:30px}.step h3{font-size:1.5rem}.step>p:last-child{font-size:1.0rem}.step-en{font-size:0.625rem}.photo-note{padding:30px 0 0;gap:22px;flex-direction:column;text-align:center;margin-top:35px}.photo-note h3{font-size:1.8125rem}.photo-note p{font-size:0.9375rem}.parents{font-size:0.8125rem}.safety{grid-template-columns:1fr;gap:34px}.safety-heading h2{font-size:1.8125rem}.safety-heading>p:last-child{font-size:0.875rem}.safety-list li{gap:15px}.safety-list h3{font-size:1.0625rem}.safety-list p{font-size:0.875rem}.closing h2{font-size:2.375rem}.closing>p:not(.section-kicker){font-size:0.9375rem}.closing .button{font-size:0.875rem;gap:20px}footer{padding:27px 25px;display:block;font-size:0.6875rem}footer p{margin-top:17px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
/* Foreground characters and gentle motion. */
img{height:auto}
.bat-arrival{position:absolute;z-index:3;pointer-events:none;animation:bat-arrive 2.4s cubic-bezier(.16,1,.3,1) both}.bat-one{width:175px;right:28%;top:32px;--fly-start:450px;transform:rotate(-14deg)}.bat-two{width:100px;right:3%;top:290px;--fly-start:250px;animation-delay:.5s;transform:rotate(16deg)}.float-bat{animation:bat-float 4s ease-in-out infinite}.bat-two .float-bat{animation-delay:-1.5s}.pumpkin-arrival{position:absolute;right:3%;bottom:30px;width:195px;z-index:5;animation:pumpkin-pop 1.5s .4s cubic-bezier(.2,1.4,.5,1) both}.pumpkin-button{display:block;position:relative;padding:0;border:0;color:var(--cream);background:none;cursor:pointer;width:100%;filter:drop-shadow(0 15px 17px #180724aa);-webkit-tap-highlight-color:transparent}.pumpkin-button img{animation:pumpkin-bob 4s 2s ease-in-out infinite}.pumpkin-tip{display:block;font-size:0.75rem;font-weight:700;letter-spacing:.05em;text-align:center;line-height:1.3;margin-top:7px}.pumpkin-hello{position:absolute;right:38px;bottom:100%;white-space:nowrap;background:var(--cream);color:var(--ink);padding:10px 20px;border-radius:40px 40px 3px 40px;font:bold italic 23px Georgia,serif;opacity:0;transform:translateY(10px) rotate(-5deg);transition:.25s;pointer-events:none}.pumpkin-hello.show{opacity:1;transform:translateY(0) rotate(-5deg)}.intro-ghost{width:235px;position:absolute;left:7%;top:160px;transform:rotate(-12deg);pointer-events:none}.float-ghost{animation:ghost-float 5s ease-in-out infinite}.closing-bat{position:absolute;right:7%;top:65px;width:190px;transform:rotate(14deg);pointer-events:none}.step-symbol img{height:137px;width:137px;object-fit:contain}.will-reveal{opacity:0;transform:translateY(55px) scale(.9);transition:opacity .8s,transform .9s cubic-bezier(.15,1.25,.5,1)}.will-reveal.revealed{opacity:1;transform:translateY(0) scale(1)}.step:nth-child(2){transition-delay:.12s}.step:nth-child(3){transition-delay:.24s}.motion-toggle{position:fixed;right:17px;bottom:15px;z-index:30;border:1px solid #fff4d94d;background:#211333e8;color:var(--cream);border-radius:30px;padding:8px 15px;cursor:pointer;font-size:0.75rem;box-shadow:0 3px 20px #0004}.motion-toggle[hidden]{display:none}.motion-toggle:hover{background:#46295c}footer{padding-bottom:65px}.motion-stopped *{animation:none!important;transition:none!important}.motion-stopped .will-reveal{opacity:1;transform:none}
@keyframes bat-arrive{from{opacity:0;translate:var(--fly-start) -100px;scale:.2;rotate:25deg}to{opacity:1;translate:0 0;scale:1;rotate:0deg}}
@keyframes bat-float{0%,100%{transform:translate(0,0) rotate(-4deg)}50%{transform:translate(-12px,-17px) rotate(5deg)}}
@keyframes pumpkin-pop{0%{opacity:0;transform:translateY(240px) scale(.25) rotate(-30deg)}70%{opacity:1;transform:translateY(-18px) scale(1.08) rotate(6deg)}100%{opacity:1;transform:translateY(0) scale(1) rotate(0)}}
@keyframes pumpkin-bob{0%,100%{transform:rotate(-3deg) translateY(0)}50%{transform:rotate(3deg) translateY(-7px)}}
@keyframes ghost-float{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-20px) rotate(4deg)}}
@media(max-width:1000px){.bat-one{width:140px;right:27%;top:0}.bat-two{width:90px;right:1%;top:240px}.pumpkin-arrival{width:160px;right:3%;bottom:25px}.intro-ghost{width:160px;left:2%;top:185px}.closing-bat{width:150px;right:2%;top:65px}}
@media(max-width:650px){.bat-one{width:90px;right:-5px;top:120px}.bat-two{width:80px;left:-9px;right:auto;top:470px;--fly-start:-200px}.pumpkin-arrival{width:145px;right:17px;bottom:30px}.pumpkin-hello{right:10px;font-size:1.1875rem}.intro-ghost{position:relative;left:auto;top:auto;width:145px;margin:27px auto -22px}.closing-bat{width:90px;right:-10px;top:62px}.step-symbol img{width:112px;height:112px}.motion-toggle{right:10px;bottom:10px;padding:7px 12px;font-size:0.75rem}.hero-copy{z-index:4}.step-en{font-size:0.75rem}.section-kicker{font-size:0.75rem}.wordmark span,.footer-en{font-size:0.75rem;letter-spacing:.04em}.eyebrow{font-size:0.75rem}.hero-intro{font-size:1.0rem}.hero{min-height:1040px}.hero-art{top:420px}.hero-seal{bottom:190px}}
@media(prefers-reduced-motion:reduce){.will-reveal{opacity:1;transform:none}.bat-arrival,.pumpkin-arrival{opacity:1;translate:none;scale:1}}
@media(max-width:650px){.bat-one{top:580px;right:6px}.bat-two{top:660px;left:0}}

/* Wrap event information naturally when visitors enlarge their text. */
.event-ticket{display:flex;flex-wrap:wrap;gap:18px 0}.event-ticket>div{flex:1 1 15rem;min-width:0}.ticket-time strong{white-space:normal}.ticket-date>div{flex-wrap:wrap}.ticket-time strong{display:flex;flex-wrap:wrap;align-items:center}.hero-intro{font-size:1rem}.step>p:last-child{font-size:1rem}.safety-list p{font-size:1rem}.will-reveal{scroll-margin-top:35px}
@media(max-width:650px){.event-ticket>div{flex:1 1 8.5rem;border:0}.event-ticket>.ticket-place{flex-basis:100%;border-top:2px dashed #46234e30}.ticket-time strong{margin-top:19px;font-size:1.3125rem}.year{font-size:.875rem}.ticket-date strong{font-size:2.1875rem}.sat{font-size:.75rem}.ticket-place>span:last-child{font-size:.875rem}.header{height:auto;min-height:75px;gap:12px;flex-wrap:wrap;padding-top:12px;padding-bottom:12px}.hero{min-height:1040px}.hero-copy{padding-bottom:390px}.hero-art{top:auto;bottom:0;height:660px}}

/* A procession from the distant street out toward the viewer. */
.flight-layer{position:absolute;inset:0 0 auto;height:min(100%,850px);z-index:6;perspective:700px;perspective-origin:50% 42%;pointer-events:none;overflow:hidden;contain:layout paint}
.flyer{position:absolute;left:50%;top:42%;width:clamp(95px,14vw,190px);height:auto;max-width:none;opacity:0;transform:translate(-50%,-50%) translateZ(-1400px);animation:fly-toward-viewer 9s linear var(--delay) infinite;will-change:transform,opacity;filter:drop-shadow(0 15px 12px #10051d50)}
@keyframes fly-toward-viewer{
  0%{opacity:0;transform:translate(-50%,-50%) translate3d(0,0,0) rotate(calc(var(--turn) * -1)) scale(.08)}
  8%{opacity:.95}
  32%{opacity:1;transform:translate(-50%,-50%) translate3d(calc(var(--dx) * .28),calc(var(--dy) * .28),-80px) rotate(0deg) scale(.65)}
  52%{opacity:1;transform:translate(-50%,-50%) translate3d(calc(var(--dx) * .64),calc(var(--dy) * .64),150px) rotate(var(--turn))}
  65%{opacity:0;transform:translate(-50%,-50%) translate3d(var(--dx),var(--dy),490px) rotate(calc(var(--turn) * 1.6)) scale(1.2)}
  100%{opacity:0;transform:translate(-50%,-50%) translate3d(var(--dx),var(--dy),490px) scale(1.2)}
}
.hero.flights-paused .flyer{animation-play-state:paused}
.motion-stopped .flight-layer{display:none}
@media(max-width:650px){.flight-layer{height:750px;perspective:600px;perspective-origin:50% 38%}.flyer{top:38%;width:clamp(85px,24vw,130px)}.pumpkin-arrival{animation-duration:2s}.hero .bat-arrival{z-index:5}}
@media(prefers-reduced-motion:reduce){.flight-layer{display:none}}

/* Keep the face steady while each wing folds around its shoulder. */
.wing-bat{display:block;position:relative;aspect-ratio:1;perspective:500px}
.wing-bat.flyer{position:absolute}
.wing-bat .bat-part{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:contain;pointer-events:none}
.bat-wing-left{clip-path:polygon(0 0,25% 0,25% 35%,40% 52%,40% 100%,0 100%);transform-origin:40% 55%;animation:wing-left .52s ease-in-out infinite}
.bat-body{clip-path:polygon(25% 0,80% 0,80% 35%,64% 52%,64% 100%,40% 100%,40% 52%,25% 35%);z-index:1}
.bat-wing-right{clip-path:polygon(80% 0,100% 0,100% 100%,64% 100%,64% 52%,80% 35%);transform-origin:64% 55%;animation:wing-right .52s ease-in-out infinite}
.bat-two .bat-part:not(.bat-blink),.flyer:nth-child(4n) .bat-part:not(.bat-blink){animation-duration:.43s}
.flyer:nth-child(3n) .bat-part:not(.bat-blink){animation-delay:-.19s}
@keyframes wing-left{0%,100%{transform:rotateY(-8deg) rotateZ(-3deg)}50%{transform:rotateY(66deg) rotateZ(9deg)}}
@keyframes wing-right{0%,100%{transform:rotateY(8deg) rotateZ(3deg)}50%{transform:rotateY(-66deg) rotateZ(-9deg)}}
.hero.flights-paused .bat-part{animation-play-state:paused}

/* Independent movement inside each character's flight path. */
.flyer{left:var(--origin-x,50%);top:var(--origin-y,42%)}
.character{display:block;position:relative;aspect-ratio:1}
.character.flyer{position:absolute}
.character-art{display:block;position:relative;width:100%;aspect-ratio:1;transform-origin:50% 70%}
.character img{display:block;width:100%;height:auto}
.character-pumpkin .character-art{animation:pumpkin-play var(--body-duration,2.4s) ease-in-out infinite}
.character-ghost .character-art{animation:ghost-play var(--body-duration,2.8s) ease-in-out infinite}
.pumpkin-button .character img{animation:none}
.character .character-blink,.wing-bat .bat-blink{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;z-index:2;animation:character-blink var(--blink-duration,4.6s) steps(1,end) var(--blink-delay,0s) infinite;pointer-events:none}
.character-pumpkin .character-blink{clip-path:ellipse(34% 22% at 50% 46%)}
.character-ghost .character-blink{clip-path:ellipse(26% 20% at 43% 31%)}
.wing-bat .bat-blink{clip-path:ellipse(21% 19% at 50% 47%)}
.pumpkin-button .character .character-blink{animation:character-blink var(--blink-duration,4.6s) steps(1,end) var(--blink-delay,0s) infinite}
.step-symbol .character{width:137px;height:137px}
@keyframes pumpkin-play{0%,100%{transform:translateY(0) rotate(-7deg) scale(1.02,.97)}35%{transform:translateY(-14px) rotate(6deg) scale(.96,1.05)}65%{transform:translateY(3px) rotate(3deg) scale(1.06,.94)}}
@keyframes ghost-play{0%,100%{transform:translateY(4px) rotate(-9deg) scale(1.02,.97)}50%{transform:translateY(-19px) rotate(9deg) scale(.96,1.05)}}
@keyframes character-blink{0%,91%,97%,100%{opacity:0}92%,96%{opacity:1}}
.hero.flights-paused .character-art,.hero.flights-paused .character-blink,.hero.flights-paused .bat-blink{animation-play-state:paused}
@media(max-width:650px){.step-symbol .character{width:112px;height:112px}}

/* The raised hand waves independently from the floating body. */
.character-ghost .character-open{clip-path:polygon(0 0,100% 0,100% 100%,0 100%,0 58%,32% 58%,31% 47%,30% 36%,35% 18%,0 18%)}
.character .ghost-waving-hand{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;clip-path:polygon(0 18%,35% 18%,30% 36%,31% 47%,32% 58%,0 58%);transform-origin:31% 49%;animation:ghost-wave 1.1s ease-in-out infinite;pointer-events:none}
.character-ghost .character-blink{clip-path:ellipse(20% 14% at 48% 29%)}
@keyframes ghost-wave{0%,100%{transform:rotate(-10deg)}25%{transform:rotate(13deg)}50%{transform:rotate(-8deg)}75%{transform:rotate(10deg)}}
.hero.flights-paused .ghost-waving-hand{animation-play-state:paused}

/* Event overview, FAQ and sponsor credit (SEO/AIO additions; existing sections untouched). */
.faq{max-width:1060px;margin:auto;padding-top:10px}
.overview{margin:44px 0 0;border:1px solid #f4d9ff24;border-radius:18px;padding:8px 32px;background:#2b1a40}
.overview>div{display:flex;gap:24px;padding:16px 0;border-bottom:1px dashed #f4d9ff24}
.overview>div:last-child{border:0}
.overview dt{flex:0 0 7.5em;color:var(--orange);font-weight:700;font-size:.875rem;letter-spacing:.08em;line-height:2.1}
.overview dd{margin:0;min-width:0}
.faq-list{margin-top:34px}
.faq-item{padding:24px 0;border-bottom:1px solid #f4d9ff24}
.faq-item h3{font-size:1.125rem;display:flex;gap:14px;align-items:baseline}
.faq-item h3 span{font:italic 24px Georgia,serif;color:var(--orange);flex:none}
.faq-item p{color:#cfbfd7;margin-top:8px;padding-left:34px}
footer{flex-wrap:wrap}
.footer-credit{flex:1 1 100%;border-top:1px solid #f4d9ff1f;padding-top:16px}
.footer-credit a{color:#e8d8eb;text-decoration:underline;text-underline-offset:3px}
.footer-credit a:hover{color:var(--orange)}
.footer-credit span{margin:0 .6em}
@media(max-width:650px){.overview{padding:4px 20px;margin-top:32px}.overview>div{flex-direction:column;gap:0;padding:13px 0}.overview dt{flex:none}.faq-item h3{font-size:1.0625rem;gap:10px}.faq-item p{padding-left:0}.footer-credit{font-size:.75rem;line-height:2.2}.footer-credit span{display:none}.footer-credit a{display:inline-block;margin-right:1.2em}.footer-credit a:first-of-type{display:inline}}
