:root{--orange:#ef8452;--deep:#6f2e1b;--cream:#fff2d9}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:#ef8452;scroll-behavior:smooth}
html.is-locked,html.is-locked body{overflow:hidden;overscroll-behavior:none}
body{font-family:"PingFang SC","Microsoft YaHei",sans-serif;color:#fff;overflow-x:hidden}
button{font:inherit}.article{position:relative;width:min(100%,520px);margin:0 auto;overflow:hidden;background:#f8dfbd;box-shadow:0 0 80px rgba(0,0,0,.58)}

/* v31 首页结构：独立吐券区，完成后保留动态券面。 */
.hero{position:relative;z-index:10;width:100%;height:max(100svh,calc(min(100vw,520px)*3050/1776));min-height:100vh;overflow:hidden;background:#ef8658;line-height:normal}
.hero-scene{position:absolute;top:0;left:50%;width:auto;height:100%;aspect-ratio:1776/3050;overflow:hidden;isolation:isolate;transform:translateX(-50%)}
.hero-cover,.hero-clean{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;user-select:none;-webkit-user-drag:none}.hero-cover{z-index:1}.hero-clean{z-index:5;opacity:0;transition:opacity .38s ease}
.hero-trigger{position:absolute;z-index:8;left:24%;right:24%;top:75%;height:12%;border:0;outline:0;background:transparent;cursor:pointer;border-radius:999px;-webkit-tap-highlight-color:transparent}
.hero-trigger span{position:absolute;right:-17%;top:50%;width:42%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,255,238,.96) 0 5%,rgba(255,209,133,.82) 14%,rgba(255,139,62,.5) 35%,rgba(255,109,39,.18) 58%,transparent 76%);filter:blur(8px);mix-blend-mode:screen;transform:translateY(-50%) scale(.78);opacity:.48;animation:buttonHalo 1.9s ease-in-out infinite;pointer-events:none}
.ticket-stage{position:absolute;z-index:6;inset:0;opacity:0;pointer-events:none;transition:opacity .12s ease}.ticket-track{position:absolute;z-index:3;left:20.5%;top:28.05%;width:59%;height:71.95%;overflow:hidden;perspective:560px;perspective-origin:50% 0;transform-origin:50% 0;will-change:left,top,width,height}.ticket-paper{position:absolute;z-index:3;left:0;top:0;width:100%;aspect-ratio:589/1047;overflow:hidden;opacity:0;border-radius:0 0 15px 15px;transform-origin:50% 0;transform-style:preserve-3d;backface-visibility:hidden;filter:drop-shadow(0 18px 20px rgba(94,42,23,.35));will-change:transform,filter,opacity}.ticket-paper>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}.ticket-paper::after{content:"";position:absolute;z-index:3;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.18),transparent 12%,rgba(115,64,35,.08) 34%,rgba(255,255,255,.16) 48%,transparent 62%,rgba(107,58,32,.08) 80%,rgba(255,255,255,.1));opacity:.46;mix-blend-mode:soft-light;animation:paperFlexShade 6s ease-in-out forwards}
.paper-light{position:absolute;z-index:2;top:-15%;bottom:-15%;left:-55%;width:34%;opacity:0;transform:skewX(-18deg);background:linear-gradient(90deg,transparent,rgba(255,255,240,.08),rgba(255,253,225,.82),transparent);filter:blur(2px);mix-blend-mode:screen}.hero.is-printing .hero-trigger{opacity:0;pointer-events:none}.hero.is-printing .ticket-stage{opacity:1}.hero.is-printing .ticket-track{animation:ticketTrackSequence 6s linear forwards}.hero.is-printing .ticket-paper{animation:ticketCardSequence 6s linear forwards}.hero.is-printing .paper-light{animation:sheenSweep .72s 3.35s ease-out forwards}.hero.is-ready .hero-cover{visibility:hidden}.hero.is-ready .ticket-stage{opacity:0}.hero.is-ready .hero-clean{opacity:1}
.turntable-stage{position:absolute;z-index:7;inset:0;opacity:0;pointer-events:none;transform-origin:54.4% 49%;will-change:transform,opacity}.turntable-overlay{position:absolute;z-index:1;inset:0;width:100%;height:100%;object-fit:fill}.panda-fx{position:absolute;z-index:2;inset:0;width:100%;height:100%;overflow:visible;mix-blend-mode:screen}.fx-ring{fill:none;stroke:#ffd58f;stroke-width:13;opacity:.42;filter:url(#heroGlow);transform-box:fill-box;transform-origin:center;animation:ringPulse 1.85s ease-in-out infinite}.fx-arc{fill:none;stroke:#fff0be;stroke-width:9;stroke-linecap:round;stroke-dasharray:10 18;opacity:.72;filter:url(#heroGlow);animation:arcRun 2.2s linear infinite}.fx-star{fill:#fff3bd;filter:url(#heroGlow);transform-box:fill-box;transform-origin:center;animation:starTwinkle 1.45s var(--delay) ease-in-out infinite}.hero.is-ready .turntable-stage{opacity:1;animation:turntableSwing 1.85s cubic-bezier(.45,.04,.55,.96) infinite}
.hero.is-ready{background:transparent}.hero.is-ready .hero-scene{-webkit-mask-image:linear-gradient(to bottom,#000 0,#000 calc(100% - 56px),rgba(0,0,0,.78) calc(100% - 32px),transparent 100%);mask-image:linear-gradient(to bottom,#000 0,#000 calc(100% - 56px),rgba(0,0,0,.78) calc(100% - 32px),transparent 100%)}
.scroll-cue{position:absolute;z-index:9;left:50%;bottom:2.4%;margin:0;padding:8px 13px;border:1px solid rgba(255,255,255,.5);border-radius:999px;background:rgba(76,31,19,.3);backdrop-filter:blur(8px);transform:translateX(-50%);font-size:10px;letter-spacing:.16em;white-space:nowrap;opacity:0}.hero.is-ready .scroll-cue{animation:swipeIn .7s 1.1s forwards,tipFloat 1.8s 1.8s ease-in-out infinite}

/* v31 的独立分段：邀请函、目录、四幕、服务、尾页。 */
.story-flow{position:relative;margin-top:-25%;background:#f5dfbd;line-height:0}.story-slice{display:block;width:100%;height:auto;margin:0}.directory{position:relative;margin-top:-1px;overflow:hidden;background:#fff0d3}
.invitation{position:relative;isolation:isolate;aspect-ratio:1080/1716;overflow:hidden;background:#ef8452}
.invitation-card{position:absolute;z-index:2;inset:0;opacity:1;transform:none;transform-origin:50% 0;filter:drop-shadow(0 18px 24px rgba(111,48,28,.22));will-change:transform,opacity}.invitation.is-armed:not(.is-drawn) .invitation-card{opacity:0;transform:translate3d(0,-78%,0) scale(.985)}.invitation-panel{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;user-select:none;-webkit-user-drag:none}.invitation-glow{position:absolute;z-index:3;left:5%;top:1%;width:90%;height:96%;border-radius:5%;opacity:0;box-shadow:inset 0 0 24px rgba(255,244,211,.3),0 0 26px rgba(255,211,145,.28)}.invitation-glint{position:absolute;z-index:4;left:-38%;top:1%;width:32%;height:96%;opacity:0;background:linear-gradient(90deg,transparent,rgba(255,255,232,.58),transparent);filter:blur(8px);transform:skewX(-16deg);mix-blend-mode:screen}.invitation.is-drawn .invitation-card{animation:drawerDrop 2.25s cubic-bezier(.16,.82,.2,1) both}.invitation.is-drawn .invitation-glow{animation:invitationGlow 2.4s 1.05s ease-in-out infinite}.invitation.is-drawn .invitation-glint{animation:inviteGlint 3.8s 1.2s ease-in-out infinite}
.directory-title-fx{position:absolute;z-index:2;left:10%;top:2.5%;width:80%;height:16%;border-radius:28px;filter:drop-shadow(0 0 10px rgba(255,206,112,.5));animation:directoryPulse 2.4s ease-in-out infinite}.directory-title-fx::before{content:"";position:absolute;inset:8%;border:1px solid rgba(255,239,190,.42);border-radius:22px;box-shadow:inset 0 0 22px rgba(255,233,174,.2),0 0 18px rgba(255,188,95,.24)}.directory-title-fx::after{content:"";position:absolute;top:-20%;bottom:-20%;left:-42%;width:28%;background:linear-gradient(90deg,transparent,rgba(255,255,231,.74),transparent);transform:skewX(-18deg);mix-blend-mode:screen;animation:directorySheen 3.2s ease-in-out infinite}
.guide-fx,.service-fx{position:absolute;z-index:4;inset:0;pointer-events:none;overflow:hidden}.guide-fx i,.service-fx i{position:absolute;left:6%;right:6%;height:15%;border-radius:24px;background:linear-gradient(105deg,transparent 18%,rgba(255,251,212,.58) 48%,transparent 75%);filter:blur(5px);mix-blend-mode:screen;opacity:0;animation:rowGlow 4.4s ease-in-out infinite}.guide-fx i:nth-child(1){top:19%}.guide-fx i:nth-child(2){top:38%;animation-delay:1.1s}.guide-fx i:nth-child(3){top:57%;animation-delay:2.2s}.guide-fx i:nth-child(4){top:76%;animation-delay:3.3s}.service-fx i:nth-child(1){top:25%}.service-fx i:nth-child(2){top:43%;animation-delay:1.05s}.service-fx i:nth-child(3){top:61%;animation-delay:2.1s}.service-fx i:nth-child(4){top:79%;animation-delay:3.15s}

.act-pages{position:relative;background:#ef8452}.act-page{position:relative;display:grid;place-items:start center;padding:5% 0;overflow:hidden;background:transparent}.act-page+.act-page{margin-top:0}.act-page-shell{position:relative;z-index:2;display:grid;place-items:center;width:100%}.flip-card{position:relative;width:88.8%;aspect-ratio:var(--act-ratio);perspective:1600px;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;filter:drop-shadow(0 18px 28px rgba(91,36,18,.22))}.flip-card:focus-visible{outline:2px solid rgba(255,245,213,.9);outline-offset:5px}.flip-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .78s cubic-bezier(.2,.72,.18,1),opacity .2s .42s ease}.flip-card.is-flipped{perspective:none}.flip-card.is-flipped .flip-inner{transform:rotateY(90deg);opacity:0;pointer-events:none}.flip-face{position:absolute;inset:0;overflow:hidden;border-radius:clamp(14px,5vw,26px);backface-visibility:hidden;-webkit-backface-visibility:hidden}.flip-front{isolation:isolate}.front-base,.panda-layer,.panda-layer>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;display:block}.front-base{z-index:1}.panda-layer{z-index:3;transform-origin:var(--ox) var(--oy);pointer-events:none;will-change:transform,filter;filter:drop-shadow(0 0 10px rgba(255,215,133,.45))}.panda-layer>img{z-index:2}.panda-layer>.panda-glint{z-index:3;opacity:0;mix-blend-mode:screen;filter:brightness(1.5) saturate(1.12);animation:pandaGlint 3.3s ease-in-out infinite}
.panda-one{animation:pandaOne 2.1s ease-in-out infinite}.panda-two{animation:pandaTwo 1.8s ease-in-out infinite}.panda-three{animation:pandaThree 2.25s ease-in-out infinite}.panda-four{animation:pandaFour 2.55s ease-in-out infinite}.flip-front::before{content:"";position:absolute;z-index:2;left:24%;top:27%;width:52%;height:31%;border-radius:50%;background:radial-gradient(ellipse,rgba(255,246,190,.62),rgba(255,191,91,.18) 42%,transparent 72%);filter:blur(8px);mix-blend-mode:screen;animation:actHalo 2.2s ease-in-out infinite}.flip-front::after{content:"";position:absolute;z-index:4;top:-15%;bottom:-15%;left:-42%;width:26%;background:linear-gradient(90deg,transparent,rgba(255,255,225,.48),transparent);filter:blur(5px);mix-blend-mode:screen;transform:skewX(-16deg);animation:actSheen 4.2s ease-in-out infinite}.act-light{position:absolute;z-index:4;inset:2.2%;border-radius:23px;overflow:hidden;pointer-events:none;mix-blend-mode:screen}.light-1{box-shadow:inset 0 0 24px rgba(255,224,156,.23)}.light-2{background:conic-gradient(from 0deg at 52% 40%,transparent,rgba(255,232,156,.16),transparent 24%);animation:festivalRotate 8s linear infinite}.light-3{background:linear-gradient(170deg,rgba(255,238,191,.2),transparent 34%)}.light-4{background:radial-gradient(ellipse at 50% 44%,rgba(255,241,181,.22),transparent 45%)}
.flip-card[data-act="2"] .front-base,.flip-card[data-act="2"] .panda-layer>img{transform:scaleX(1.044);transform-origin:center}
.flip-back{transform:rotateY(-90deg);opacity:0;pointer-events:none;border:1px solid rgba(255,246,216,.9);background:radial-gradient(circle at 50% 0,rgba(255,245,212,.7),transparent 30%),linear-gradient(155deg,#f5c493,#fbe7c7 38%,#e99a6d);box-shadow:inset 0 0 38px rgba(255,252,226,.7);transition:transform .72s cubic-bezier(.2,.72,.18,1),opacity .18s ease}.flip-card.is-flipped>.flip-back{transform:none;opacity:1;pointer-events:auto;transition-delay:.28s}.flip-back>strong{position:absolute;z-index:5;left:0;right:0;top:0;height:50px;display:flex;align-items:center;padding-left:18px;background:linear-gradient(180deg,rgba(255,241,216,.98),rgba(246,196,151,.88));color:#7f3f24;font-size:15px;letter-spacing:.1em;line-height:1.2}.back-return{position:absolute;z-index:6;right:10px;top:8px;height:34px;padding:0 13px;border:1px solid rgba(255,255,255,.72);border-radius:999px;background:rgba(120,61,34,.68);color:#fff8e8;font-size:11px;cursor:pointer}.back-scroll{position:absolute;z-index:3;left:0;right:0;top:50px;bottom:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.back-scroll img{display:block;width:100%;height:auto;background:#fff}.act-spark{position:absolute;z-index:1;left:var(--x);top:var(--y);width:var(--s);height:var(--s);background:#fff1ad;clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);filter:drop-shadow(0 0 8px #ffd17a);animation:sparkDrift 3.4s var(--delay) ease-in-out infinite}

.final-directory{line-height:0}.bottom-qr-tile{position:absolute;z-index:5;left:32.55%;top:35.25%;width:16.25%;aspect-ratio:1;display:grid;place-items:center}.bottom-qr{display:block;width:80%;height:80%;object-fit:contain;mix-blend-mode:multiply;filter:contrast(1.05);user-select:none;-webkit-user-drag:none}
.leaf-field{position:fixed;z-index:30;inset:0;overflow:hidden;pointer-events:none}.leaf-field i{position:absolute;left:var(--x);top:-8vh;width:34px;aspect-ratio:187/192;background:url("assets/leaf.png") center/contain no-repeat;opacity:0;filter:drop-shadow(0 3px 4px rgba(114,54,18,.18));animation:leafDown var(--d) var(--delay) linear infinite}.leaf-field i:nth-child(2n){width:27px}.leaf-field i:nth-child(3n){width:39px}.replay{position:fixed;z-index:40;right:max(14px,calc((100vw - 520px)/2 + 14px));top:14px;width:42px;height:42px;border:1px solid rgba(255,255,255,.55);border-radius:50%;background:rgba(61,25,18,.35);backdrop-filter:blur(9px);color:#fff7e6;font-size:22px;cursor:pointer;opacity:0;pointer-events:none}.is-ready .replay{opacity:1;pointer-events:auto}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.music-toggle{position:fixed;z-index:41;right:max(12px,calc((100vw - 520px)/2 + 12px));bottom:max(12px,env(safe-area-inset-bottom));display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid rgba(255,255,255,.35);border-radius:50%;background:rgba(61,25,18,.42);box-shadow:0 4px 13px rgba(54,22,13,.14);backdrop-filter:blur(7px);color:#fff7e6;cursor:pointer;opacity:.5;-webkit-tap-highlight-color:transparent;transition:opacity .2s ease,background .2s ease,transform .2s ease}.music-toggle:hover,.music-toggle:focus-visible{opacity:.86}.music-toggle:active{transform:scale(.94)}.music-toggle:focus-visible{outline:2px solid rgba(255,242,187,.75);outline-offset:2px}.music-icon{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;color:#fff0d2;font-size:16px;font-weight:700;text-shadow:0 1px 5px rgba(61,25,18,.55)}.music-toggle.is-playing{opacity:.64;background:rgba(111,46,27,.5)}.music-toggle.is-playing .music-icon{animation:musicButtonPulse 1.6s ease-in-out infinite}

@keyframes buttonHalo{0%,100%{opacity:.28;transform:translateY(-50%) scale(.72)}50%{opacity:.8;transform:translateY(-50%) scale(1.12)}}
@keyframes ticketCardSequence{0%,40%{opacity:0;transform:translate3d(-1.8%,-100%,0) rotateX(78deg) rotateZ(4.2deg) scaleX(.9)}41.5%{opacity:1;transform:translate3d(-1.7%,-97%,0) rotateX(72deg) rotateZ(4deg) scaleX(.905)}45%{opacity:1;transform:translate3d(-1.45%,-84%,0) rotateX(61deg) rotateZ(3.45deg) scaleX(.925)}49%{transform:translate3d(-1.15%,-68%,0) rotateX(48deg) rotateZ(2.8deg) scaleX(.945)}53%{transform:translate3d(-.85%,-50%,0) rotateX(34deg) rotateZ(2.05deg) scaleX(.962)}57%{transform:translate3d(-.55%,-32%,0) rotateX(20deg) rotateZ(1.25deg) scaleX(.978)}61%{transform:translate3d(-.25%,-14%,0) rotateX(8deg) rotateZ(.55deg) scaleX(.992)}65%{opacity:1;transform:translate3d(0,0,0) rotateX(0) rotateZ(0) scaleX(1)}72%,100%{opacity:1;transform:none;filter:drop-shadow(0 18px 20px rgba(94,42,23,.35));border-radius:0}}
@keyframes ticketTrackSequence{0%,72%{left:20.5%;top:28.05%;width:59%;height:71.95%}79%{left:18%;top:20.5%;width:64%;height:79.5%}91%{left:7%;top:4.7%;width:86%;height:95.3%}100%{left:0;top:0;width:100%;height:100%}}
@keyframes paperFlexShade{0%,18%{background-position:0 -18px;opacity:.7}48%{background-position:0 22px;opacity:.48}72%,100%{opacity:0}}@keyframes slotIgnite{0%{opacity:0;transform:scaleX(.12)}22%{opacity:.96;transform:scaleX(.9)}58%{opacity:.55;transform:scaleX(1.04)}100%{opacity:0;transform:scaleX(1)}}@keyframes sheenSweep{0%{left:-55%;opacity:0}20%{opacity:1}100%{left:125%;opacity:0}}
@keyframes turntableSwing{0%,100%{transform:translate3d(0,0,0) rotate(0deg) scale(1.035)}23%{transform:translate3d(-9px,3px,0) rotate(-4.2deg) scale(1.055)}50%{transform:translate3d(0,-2px,0) rotate(.35deg) scale(1.035)}77%{transform:translate3d(9px,3px,0) rotate(4.2deg) scale(1.055)}}@keyframes ringPulse{0%,100%{opacity:.2;transform:scale(.88)}50%{opacity:.72;transform:scale(1.08)}}@keyframes arcRun{to{stroke-dashoffset:-100}}@keyframes starTwinkle{0%,100%{opacity:.18;transform:scale(.72)}50%{opacity:1;transform:scale(1.28) rotate(45deg)}}@keyframes swipeIn{to{opacity:.9}}@keyframes tipFloat{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-6px)}}
@keyframes drawerDrop{0%{opacity:0;transform:translate3d(0,-78%,0) scale(.985)}12%{opacity:1}72%{transform:translate3d(0,2.1%,0) scale(1.006)}86%{transform:translate3d(0,-.8%,0) scale(.998)}100%{opacity:1;transform:none}}@keyframes invitationGlow{0%,100%{opacity:.2}50%{opacity:.75}}@keyframes inviteGlint{0%,18%{left:-38%;opacity:0}38%{opacity:.82}68%,100%{left:112%;opacity:0}}
@keyframes invitationCopyIn{to{opacity:1;transform:none}}
@keyframes directoryPulse{0%,100%{opacity:.34;transform:scale(.985)}50%{opacity:.92;transform:scale(1.015)}}@keyframes directorySheen{0%,18%{left:-42%;opacity:0}34%{opacity:.85}60%,100%{left:118%;opacity:0}}@keyframes rowGlow{0%,16%,100%{opacity:0;transform:translateX(-18%) skewX(-10deg)}42%{opacity:.82}68%{opacity:.18;transform:translateX(18%) skewX(-10deg)}}
@keyframes actHalo{0%,100%{opacity:.28;transform:scale(.88)}50%{opacity:.92;transform:scale(1.13)}}@keyframes actSheen{0%,18%{left:-42%;opacity:0}38%{opacity:.72}68%,100%{left:116%;opacity:0}}@keyframes festivalRotate{to{transform:rotate(360deg)}}@keyframes pandaGlint{0%,18%,100%{opacity:0;clip-path:polygon(-20% 0,-7% 0,10% 100%,-3% 100%)}35%{opacity:.2}65%{opacity:.12;clip-path:polygon(107% 0,120% 0,137% 100%,124% 100%)}}
@keyframes pandaOne{0%,100%{transform:translate3d(-1%,0,0) rotate(-1.8deg) scale(1)}50%{transform:translate3d(1.2%,-1.4%,0) rotate(2.2deg) scale(1.036)}}@keyframes pandaTwo{0%,100%{transform:translate3d(-.8%,0,0) rotate(-1.5deg) scale(1)}34%{transform:translate3d(.8%,-1.7%,0) rotate(2deg) scale(1.032)}68%{transform:translate3d(1%,.2%,0) rotate(-1deg) scale(1.012)}}@keyframes pandaThree{0%,100%{transform:translate3d(-.8%,0,0) rotate(-1.7deg) scale(1)}42%{transform:translate3d(1%,-1.3%,0) rotate(2.4deg) scale(1.034)}}@keyframes pandaFour{0%,100%{transform:translate3d(-1%,0,0) rotate(-1.8deg) scale(1)}48%{transform:translate3d(1.2%,-1.6%,0) rotate(2.5deg) scale(1.038)}}@keyframes sparkDrift{0%,100%{opacity:.12;transform:translate3d(0,12px,0) scale(.58)}50%{opacity:.9;transform:translate3d(var(--dx),-18px,0) scale(1.18) rotate(45deg)}}@keyframes leafDown{0%{opacity:0;transform:translateY(-8vh) rotate(0)}10%{opacity:.78}100%{opacity:0;transform:translateY(118vh) rotate(520deg)}}
@keyframes musicButtonPulse{0%,100%{transform:scale(.96);opacity:.78}50%{transform:scale(1.03);opacity:1}}
@media(max-width:520px){body{background:#f8dfbd}.article{width:100%;box-shadow:none}.replay{right:12px}}
@media(max-width:420px){.flip-back>strong{height:44px;padding-left:12px;font-size:12px}.back-return{top:6px;height:31px}.back-scroll{top:44px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
