:root{color-scheme:dark;--cream:#f1e7d3;--muted:#d1bcaf;--wine:#310f1a;--line:#f1e7d32b;--accent:#947bc0;--serif:Georgia,'Times New Roman','Songti SC',serif;--sans:-apple-system,BlinkMacSystemFont,'Helvetica Neue','PingFang SC','Microsoft YaHei',sans-serif}*{box-sizing:border-box}html{min-height:100%;background:#150b10}body{margin:0;font-family:var(--sans);color:var(--cream);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none;touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid var(--cream);outline-offset:5px}p,h1,h2,blockquote{margin:0}::selection{background:var(--cream);color:var(--wine)}.grain{position:fixed;inset:-5%;width:110%;height:110%;z-index:20;pointer-events:none;opacity:.034;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.site-header{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:24px 5vw;gap:20px}.wordmark{font-family:var(--serif);font-style:italic;font-size:46px;line-height:1;letter-spacing:-.09em;min-width:44px;min-height:48px}.wordmark span{color:#c5968e}.header-caption{font-size:12px;letter-spacing:.15em;position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;color:#d4b9b5}.sound-toggle{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:#190b1415;min-height:44px;padding:0 14px;font-size:12px;backdrop-filter:blur(6px);transition:background .4s}.sound-toggle:hover{background:#f1e7d31a}.sound-bars{height:16px;display:flex;gap:3px;align-items:center}.sound-bars i{width:2px;height:5px;background:currentColor}.sound-bars i:nth-child(2){height:12px}.sound-bars i:nth-child(3){height:8px}.playing .sound-bars i{animation:sound 1.2s ease-in-out infinite alternate}.playing .sound-bars i:nth-child(2){animation-delay:-.4s}.playing .sound-bars i:nth-child(3){animation-delay:-.8s}.overline{font-size:12px;line-height:1.8;letter-spacing:.18em}.page-navigation{display:flex;gap:30px;font-size:13px;align-items:center}.page-navigation a{display:flex;align-items:center;gap:8px;min-height:44px;color:#e9dbce86;position:relative;white-space:nowrap}.page-navigation a b{font-size:12px;font-weight:400;opacity:.65}.page-navigation a[aria-current=page]{color:var(--cream)}.page-navigation a[aria-current=page]:after{content:'';position:absolute;height:1px;background:currentColor;left:0;right:0;bottom:4px}.motion-toggle{min-height:44px;font-size:12px;padding:10px 0;background:transparent;border:0;color:#d1bcafab}.motion-toggle:hover{color:var(--cream)}
/* The prologue is made of type, space and light. */
.home-page{background:var(--wine)}.home-stage{min-height:860px;min-height:max(790px,100svh);position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;padding:132px 12vw 150px;background:linear-gradient(120deg,#421422 0%,#35111d 40%,#250c15 100%)}.home-light{position:absolute;z-index:-3;width:130%;height:180%;left:-44%;top:-40%;background:radial-gradient(ellipse at 50% 42%,#ab535348 0%,#5e273534 26%,transparent 62%);transform:rotate(-24deg);animation:light-drift 20s ease-in-out infinite alternate;pointer-events:none}.home-stage:after{content:'';position:absolute;inset:0;z-index:-2;background:linear-gradient(110deg,transparent 42%,#dcb68b09 43%,transparent 44%);pointer-events:none}.home-orbit{position:absolute;width:60vw;height:78vw;border:1px solid #e4cabc19;border-radius:50%;right:-20vw;top:-10vw;transform:rotate(-26deg);z-index:-1;pointer-events:none}.home-orbit:after{content:'';position:absolute;inset:24px;border:1px solid #e4cabc0c;border-radius:50%}.home-editorial{width:100%;max-width:1000px}.home-editorial>.overline{color:#d0a99b}.home-title{font-family:var(--serif);font-weight:400;line-height:1.05;margin-top:42px}.home-title>span{display:block;font-size:clamp(3rem,5.5vw,6rem);letter-spacing:-.045em}.home-title>em{font-size:clamp(11rem,23vw,23rem);font-weight:400;letter-spacing:-.09em;line-height:1.05;display:block;margin-top:4px;position:relative;left:-.04em}.home-dedication{display:flex;align-items:center;gap:26px;margin-top:28px}.dedication-line{display:block;width:52px;height:1px;background:#b7887b}.home-dedication>p{font-family:'Songti SC','Noto Serif CJK SC',STSong,serif;font-size:23px;letter-spacing:.2em;line-height:1.7}.home-note{color:#c0a198;font-size:14px;letter-spacing:.13em;margin-top:22px;margin-left:78px;line-height:1.8}.home-side-note{position:absolute;top:45%;left:35px;writing-mode:vertical-rl;font-size:12px;color:#bd8e86;letter-spacing:.17em}.enter-cinema{position:absolute;right:8vw;bottom:160px;display:flex;gap:45px;align-items:center;padding:18px 0;border-bottom:1px solid #d0a99b77;min-width:260px;transition:border-color .4s}.enter-cinema>span:first-child{display:flex;flex-direction:column;gap:13px}.enter-cinema small{font-size:12px;color:#c19b90;letter-spacing:.1em}.enter-cinema>span>span{font-size:17px;letter-spacing:.07em}.enter-arrow{font-size:30px;transition:transform .4s}.enter-cinema:hover{border-color:var(--cream)}.enter-cinema:hover .enter-arrow{transform:translate(4px,-4px)}.home-bottom{position:absolute;bottom:25px;left:5vw;right:5vw;border-top:1px solid var(--line);padding-top:18px;display:flex;justify-content:space-between;align-items:center;gap:20px}.home-bottom>span{font-size:12px;letter-spacing:.08em;color:#c19b90}.entry{animation:entry 1.45s both cubic-bezier(.18,.7,.25,1)}.home-title>span{animation-delay:.12s}.home-title>em{animation-delay:.26s}.home-dedication{animation-delay:.4s}.home-note{animation-delay:.5s}.enter-cinema{animation-delay:.6s}
/* The cinema is a single interactive surface. */
.cinema-page{position:relative;isolation:isolate;background:#101016;color:#f4f0e7;--cream:#f4f0e7}.film-background,.cinema-shade{position:fixed;inset:0;pointer-events:none}.film-background{z-index:-4;background:#101016;overflow:hidden}.background-frame{position:absolute;width:100%;height:100%;object-fit:cover;object-position:var(--image-position,50% 40%);opacity:0;transition:opacity 950ms ease;transform:scale(1.025);filter:saturate(.77);animation:film-breath 24s ease-in-out infinite alternate}.background-frame.is-visible{opacity:1}.cinema-shade{z-index:-3;background:linear-gradient(180deg,#0b0914b5 0%,#0b09143a 30%,#0b091479 57%,#0b0914e8 90%,#0b0914f0 100%)}.cinema-page .site-header{position:absolute;padding-top:20px;padding-bottom:15px}.cinema-page .wordmark span{color:var(--accent);transition:color .7s}.back-home{position:absolute;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:13px;font-size:13px;color:#eee7dcbe;min-height:44px}.cinema-stage{min-height:950px;min-height:max(900px,100svh);display:flex;flex-direction:column;align-items:center;padding:105px 5vw 22px;position:relative}.cinema-heading{text-align:center;position:relative;z-index:1}.cinema-heading>.overline{color:#dfd8caaa;font-size:12px;letter-spacing:.13em}.cinema-heading h1{font-size:24px;letter-spacing:.18em;font-weight:400;margin:12px 0 8px}.cinema-heading>p:last-child{font-size:13px;line-height:1.8;color:#ddd7cbbb;letter-spacing:.03em}.wheel-area{position:relative;display:flex;justify-content:center;align-items:center;margin:22px auto 16px;flex:0 0 auto}.wheel-shell{width:clamp(310px,32vw,365px);aspect-ratio:1;position:relative}.wheel-shell:before{content:'';position:absolute;inset:21%;border-radius:50%;background:#0b0b1294;box-shadow:0 0 40px #08091244;backdrop-filter:blur(6px);pointer-events:none}#film-wheel{width:100%;height:100%;overflow:visible;position:relative;z-index:1;display:block}.wheel-guide{stroke:#fff7e431;stroke-width:.6}.inner-guide{stroke:#fff7e449;stroke-dasharray:2 6;transform-origin:200px 200px;animation:turn 100s linear infinite}.film-segment{cursor:pointer;outline:none;transition:transform .5s cubic-bezier(.2,.7,.25,1);transform-origin:200px 200px;-webkit-tap-highlight-color:transparent}.segment-fill{fill:var(--segment);opacity:.68;stroke:#fcf3df35;stroke-width:.5;transition:opacity .4s,stroke .4s,stroke-width .4s;stroke-linejoin:round}.film-segment:hover .segment-fill{opacity:.92}.film-segment[aria-checked=true] .segment-fill{opacity:.98;stroke:#fff9e7d9;stroke-width:1.5}.film-segment:focus-visible .segment-fill{stroke:#fff;stroke-width:4;opacity:1}.segment-label{font-family:var(--sans);font-size:17px;fill:#fff8e9;letter-spacing:.5px;text-anchor:middle;dominant-baseline:middle;pointer-events:none;font-weight:500;text-shadow:0 1px 3px #0005}.segment-number{font-family:var(--sans);font-size:10px;fill:#fff8e9b0;letter-spacing:1px;text-anchor:middle;dominant-baseline:middle;pointer-events:none}.wheel-center{position:absolute;inset:28%;display:flex;flex-direction:column;justify-content:center;align-items:center;pointer-events:none;text-align:center}.wheel-center>span:first-child{font-size:11px;letter-spacing:.12em;color:#ded7cac7}.wheel-center>strong{font-family:var(--serif);font-size:66px;font-weight:400;line-height:1.05;margin:9px 0 7px;color:#f4ecd9}.wheel-center>#center-mood{font-size:13px;letter-spacing:.07em;white-space:nowrap}.wheel-center>i{width:20px;height:1px;background:#e8decc55;margin:14px 0 9px}.wheel-center>small{font-size:10px;letter-spacing:.13em;color:#dfd8caaa}.film-info{text-align:center;width:min(100%,680px);min-height:210px;position:relative}.film-meta{display:flex;align-items:center;justify-content:center;gap:17px;letter-spacing:.12em;font-size:12px;line-height:1.8;color:#d9d4c6b8}.film-meta>span+span{border-left:1px solid #d9d4c640;padding-left:17px}.film-info h2{font-family:'Songti SC','Noto Serif CJK SC',STSong,serif;font-size:36px;font-weight:400;line-height:1.4;letter-spacing:.14em;margin:6px 0}.film-director{font-size:12px;line-height:1.8;letter-spacing:.02em;color:#d9d4c6a8}.film-info blockquote{margin:21px auto 0;max-width:540px}.film-info blockquote>p{font-size:17px;line-height:1.85;letter-spacing:.04em;white-space:pre-line;color:#f0e7d4}.film-info blockquote>footer{font-family:var(--serif);font-size:13px;font-style:italic;line-height:1.65;color:#c7c1b5c9;margin:9px auto 0;max-width:480px;min-height:22px}.film-status{height:20px;margin:0;font-size:12px;color:#f2dfb7;line-height:20px;text-align:center}.cinema-controls{display:flex;justify-content:center;align-items:center;gap:23px;margin:0 auto 21px}.cinema-controls button{width:44px;height:44px;background:#fff6de05;border:1px solid #e5dcca42;border-radius:50%;font-size:20px;transition:background .3s,border-color .3s}.cinema-controls button:hover{background:#fff6de17;border-color:#e5dcca}.cinema-controls>span{font-size:12px;letter-spacing:.08em;color:#e5dcca}.cinema-controls i{font-style:normal;margin:0 7px;opacity:.4}.cinema-footer{width:100%;margin-top:auto;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 30px;border-top:1px solid var(--line);padding-top:14px}.film-source-links{display:flex;gap:24px;align-items:center;font-size:12px;color:#d6cfbf9e}.film-source-links>a{min-height:44px;display:flex;align-items:center}.film-source-links>a:hover{color:var(--cream)}.film-source-links>.motion-toggle{color:#d6cfbf9e}.credit-note{flex-basis:100%;font-size:12px;line-height:1.8;text-align:right;color:#bdb6aa8a}.noscript{position:fixed;inset:auto 0 0;z-index:30;background:#17131b;padding:15px 25px;font-size:14px;line-height:1.8}
@keyframes entry{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}@keyframes light-drift{to{transform:rotate(-14deg) translate(3%,5%);opacity:.65}}@keyframes sound{from{transform:scaleY(.3)}to{transform:scaleY(1.2)}}@keyframes film-breath{from{transform:scale(1.025)}to{transform:scale(1.09)}}@keyframes turn{to{transform:rotate(360deg)}}
@media(min-width:1100px) and (min-height:1000px){.cinema-stage{padding-top:120px}.wheel-area{margin-top:30px;margin-bottom:25px}.wheel-shell{width:400px}.film-info{min-height:230px}.cinema-controls{margin-bottom:30px}}
@media(min-width:900px) and (max-height:850px){.cinema-stage{min-height:100svh;padding-top:85px}.cinema-heading h1{font-size:21px;margin:5px 0}.cinema-heading>p:last-child{display:none}.wheel-shell{width:285px}.wheel-area{margin:8px auto}.film-info h2{font-size:30px}.film-info{min-height:170px}.film-info blockquote{margin-top:12px}.film-info blockquote>p{font-size:16px}.cinema-controls{margin-bottom:8px}.cinema-footer{padding-top:8px}.wheel-center>strong{font-size:49px}.wheel-center>i{margin:7px 0}.wheel-center>span:first-child,.wheel-center>small{font-size:10px}}
@media(max-width:900px){.home-stage{padding-left:10vw;padding-right:10vw}.home-title>span{font-size:clamp(2.8rem,6.7vw,4.5rem)}.home-title>em{font-size:clamp(10rem,27vw,18rem)}.enter-cinema{right:8vw;bottom:155px;min-width:240px}.home-dedication>p{font-size:20px}.home-note{font-size:14px}.home-side-note{left:22px}.cinema-stage{min-height:max(900px,100svh)}.wheel-shell{width:340px}.film-info h2{font-size:33px}.film-source-links{gap:17px}}
@media(max-width:600px){.site-header{padding:24px 25px;gap:12px}.wordmark{font-size:42px;min-height:44px}.header-caption{position:static;transform:none;font-size:11px;letter-spacing:.04em;line-height:1.8;max-width:145px;text-align:center}.sound-toggle{padding:0 10px;gap:8px;font-size:12px}.home-stage{min-height:100svh;min-height:max(800px,100svh);align-items:flex-start;padding:164px 30px 245px}.home-orbit{width:120vw;height:180vw;right:-87vw;top:28px;transform:rotate(-20deg)}.home-light{width:210%;height:160%;left:-110%;top:-20%}.home-editorial>.overline{font-size:12px;letter-spacing:.13em}.home-title{margin-top:37px}.home-title>span{font-size:clamp(2.15rem,8.65vw,3.4rem);letter-spacing:-.05em;white-space:nowrap}.home-title>em{font-size:clamp(8.5rem,38vw,14rem);line-height:1.12;margin-top:9px;letter-spacing:-.09em}.home-dedication{margin-top:28px;gap:15px}.dedication-line{width:25px}.home-dedication>p{font-size:20px;letter-spacing:.1em;line-height:1.8}.home-note{font-size:13px;line-height:1.9;margin-top:16px;margin-left:40px;letter-spacing:.08em}.home-side-note{display:none}.enter-cinema{left:30px;right:30px;bottom:146px;min-width:0;gap:30px;justify-content:space-between;padding:16px 0}.enter-cinema small{font-size:12px;letter-spacing:.06em}.enter-cinema>span>span{font-size:17px;letter-spacing:.06em}.enter-arrow{font-size:30px}.home-bottom{left:25px;right:25px;bottom:20px;gap:5px 15px;flex-wrap:wrap;padding-top:13px}.home-bottom>span{flex-basis:100%;font-size:11px;letter-spacing:.08em;line-height:1.8;padding-bottom:3px}.page-navigation{font-size:13px;gap:25px}.page-navigation a{min-height:40px}.page-navigation a b{font-size:12px}.home-bottom .motion-toggle{font-size:12px;min-height:40px}.cinema-page .site-header{padding:18px 23px 12px}.cinema-page .wordmark{font-size:37px}.back-home{font-size:12px;gap:8px}.cinema-stage{min-height:max(850px,100svh);padding:89px 23px 18px}.cinema-heading>.overline{font-size:11px;letter-spacing:.055em}.cinema-heading h1{font-size:20px;letter-spacing:.2em;margin:8px 0 6px}.cinema-heading>p:last-child{font-size:12px;letter-spacing:.01em;line-height:1.8}.wheel-shell{width:min(330px,86vw)}.wheel-area{margin:18px auto 16px}.wheel-center>strong{font-size:58px;margin:7px 0 6px}.wheel-center>span:first-child{font-size:10px;letter-spacing:.05em}.wheel-center>#center-mood{font-size:12px;letter-spacing:.05em}.wheel-center>i{margin:11px 0 7px;width:17px}.wheel-center>small{font-size:10px;letter-spacing:.08em}.film-info{min-height:219px}.film-meta{font-size:11px;letter-spacing:.075em;gap:12px}.film-meta>span+span{padding-left:12px}.film-info h2{font-size:31px;line-height:1.4;letter-spacing:.13em;margin:5px 0 6px}.film-director{font-size:11px;letter-spacing:0;line-height:1.8}.film-info blockquote{margin-top:18px}.film-info blockquote>p{font-size:16px;line-height:1.8;letter-spacing:.01em}.film-info blockquote>footer{font-size:12px;line-height:1.7;max-width:320px;margin-top:8px}.film-status{font-size:12px;height:20px;line-height:20px}.cinema-controls{gap:20px;margin-bottom:15px}.cinema-controls button{width:44px;height:44px}.cinema-controls>span{font-size:12px}.cinema-footer{padding-top:10px;gap:4px;justify-content:center}.cinema-footer .page-navigation{display:none}.film-source-links{font-size:12px;gap:23px;justify-content:center;width:100%}.film-source-links>a{min-height:38px}.film-source-links .motion-toggle{min-height:38px;font-size:12px}.credit-note{text-align:center;font-size:10px;line-height:1.9;letter-spacing:0}.background-frame{object-position:var(--mobile-position,var(--image-position,50% 40%))}.cinema-shade{background:linear-gradient(180deg,#0a0914b9 0%,#0a091427 29%,#0a091476 48%,#0a0914e8 78%,#0a0914fa 100%)}.grain{opacity:.028}}
@media(max-width:350px){.site-header{padding-left:22px;padding-right:22px}.header-caption{font-size:10px;max-width:115px}.home-stage{padding:148px 26px 240px;min-height:760px}.home-title>span{font-size:29px}.home-title>em{font-size:120px}.home-dedication>p{font-size:18px;letter-spacing:.06em}.home-dedication{gap:12px}.dedication-line{width:22px}.home-note{margin-left:34px}.enter-cinema{left:26px;right:26px;bottom:140px}.cinema-stage{padding-left:18px;padding-right:18px;min-height:810px}.wheel-shell{width:280px}.wheel-area{margin-top:15px;margin-bottom:13px}.wheel-center>strong{font-size:49px}.wheel-center>span:first-child{font-size:9px}.wheel-center>i{margin:7px 0}.wheel-center>small{font-size:9px}.film-info h2{font-size:29px}.film-info blockquote>p{font-size:15px}.film-info blockquote>footer{font-size:12px}.film-meta{font-size:11px;letter-spacing:.04em}.film-director{font-size:11px}.film-info{min-height:224px}.film-source-links{gap:19px}.credit-note{font-size:10px}}
/* Keep the film and its controls together on phone screens. */
.film-status:empty{height:0}
@media(min-width:901px) and (max-height:1000px){.cinema-stage{min-height:100svh;padding-top:86px}.cinema-heading h1{margin:7px 0 5px;font-size:22px}.wheel-shell{width:310px}.wheel-area{margin:15px auto 10px}.film-info{min-height:201px}.film-info blockquote{margin-top:16px}.cinema-controls{margin-bottom:12px}.cinema-footer{padding-top:8px}}
@media(max-width:600px){.cinema-stage{min-height:100svh;padding-top:77px}.cinema-heading>.overline{display:none}.cinema-heading h1{margin:3px 0 6px}.wheel-shell{width:min(300px,86vw)}.wheel-area{margin:14px auto 12px}.film-info{min-height:198px}.film-info blockquote{margin-top:14px}.film-meta,.film-director{font-size:12px}.wheel-center>span:first-child,.wheel-center>small{font-size:11px}.wheel-center>strong{font-size:52px}.wheel-center>i{margin:8px 0 6px}.credit-note{font-size:11px}.cinema-controls{margin-bottom:12px}}
@media(max-width:350px){.wheel-shell{width:270px}.film-info{min-height:218px}.film-meta{font-size:11px}.film-director{font-size:11px}.wheel-center>strong{font-size:46px}.wheel-center>span:first-child,.wheel-center>small{font-size:10px}.credit-note{font-size:10px}}
.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important;transition-duration:0s!important;scroll-behavior:auto!important}.motion-paused .entry{opacity:1!important;transform:none!important}.motion-paused .background-frame{transform:none!important}.motion-paused .film-segment{transition:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.entry{opacity:1!important;transform:none!important}.background-frame{transform:none!important}}
/* Cleaner ring: colors carry the navigation, while the film title stays below. */
.segment-label{display:none}
@media(max-width:600px){
  .background-frame{object-fit:cover;object-position:var(--mobile-position,var(--image-position,50% 40%));transform:scale(1.015);animation:film-portrait-breath 30s ease-in-out infinite alternate}
  .cinema-shade{background:linear-gradient(180deg,#0a0914b9 0%,#0a09142a 24%,#0a09146f 51%,#0a0914e5 78%,#0a0914fa 100%)}
}
@keyframes film-portrait-breath{from{transform:scale(1.015)}to{transform:scale(1.045)}}
/* The opening frame lets the still breathe before the visitor enters the screening. */
.cinema-page .cinema-heading,.cinema-page .wheel-area,.cinema-page .film-info,.cinema-page .film-status,.cinema-page .cinema-controls,.cinema-page .cinema-footer{transition:opacity 900ms cubic-bezier(.2,.7,.25,1),filter 900ms cubic-bezier(.2,.7,.25,1),transform 900ms cubic-bezier(.2,.7,.25,1)}
.cinema-page:not(.is-awake) .cinema-shade{background:linear-gradient(180deg,#0807115c 0%,#0807110d 31%,#08071138 67%,#080711a1 100%)}
.cinema-page:not(.is-awake) .cinema-heading,.cinema-page:not(.is-awake) .wheel-area,.cinema-page:not(.is-awake) .film-info,.cinema-page:not(.is-awake) .film-status,.cinema-page:not(.is-awake) .cinema-controls,.cinema-page:not(.is-awake) .cinema-footer{opacity:.18;filter:blur(2px);transform:translateY(8px)}
.cinema-page:not(.is-awake) .cinema-stage:after{content:'轻触画面，开始放映';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:4;color:#fff8e9d9;font-family:var(--serif);font-size:14px;letter-spacing:.2em;white-space:nowrap;text-shadow:0 2px 18px #0008;animation:still-prompt 2.4s ease-in-out infinite alternate;pointer-events:none}
.cinema-page.is-awake .cinema-stage:after{opacity:0;transition:opacity 700ms ease;pointer-events:none}
.cinema-page.ring-muted .wheel-area{opacity:.3;filter:saturate(.58);transform:scale(.975)}
.cinema-page.ring-muted .wheel-shell:before{opacity:.42}
@keyframes still-prompt{from{opacity:.48;letter-spacing:.17em}to{opacity:1;letter-spacing:.23em}}
@media(prefers-reduced-motion:reduce){.cinema-page:not(.is-awake) .cinema-stage:after{animation:none}.cinema-page .cinema-heading,.cinema-page .wheel-area,.cinema-page .film-info,.cinema-page .film-status,.cinema-page .cinema-controls,.cinema-page .cinema-footer{transition:none}}
/* Film title treatment: a quiet, high-contrast festival-poster wordmark. */
.cinema-heading h1{font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:clamp(40px,5.6vw,72px);font-style:italic;font-weight:400;letter-spacing:.1em;line-height:.95;text-transform:none;text-shadow:0 0 22px #f3e8d51f}
.film-word{font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-style:italic;font-weight:400;letter-spacing:.03em}
@media(max-width:600px){.cinema-heading h1{font-size:42px;letter-spacing:.08em;margin:1px 0 10px}}
/* Music page: a quiet record sleeve with click-only navigation. */
.music-page{min-height:100svh;background:#111118;color:#f3eee3;--cream:#f3eee3;--music-accent:#b2778b;overflow-x:hidden}.music-atmosphere{position:fixed;inset:-20%;z-index:-3;background:radial-gradient(ellipse at 45% 45%,color-mix(in srgb,var(--music-accent) 24%,transparent),transparent 48%),linear-gradient(135deg,#1b1624 0%,#101016 58%,#17121e 100%);filter:blur(22px);transition:background 900ms ease;animation:music-breathe 18s ease-in-out infinite alternate;pointer-events:none}.music-page .site-header{position:absolute;padding:20px 5vw 15px}.music-page .wordmark span{color:var(--music-accent);transition:color .7s}.music-back{color:#eee7dcbe}.music-stage{min-height:100svh;display:flex;flex-direction:column;align-items:center;padding:92px 5vw 22px;position:relative}.music-heading{text-align:center;position:relative;z-index:1}.music-heading>.overline{color:#dfd8caaa;font-size:12px;letter-spacing:.13em}.music-heading h1{font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:clamp(40px,5.6vw,72px);font-style:italic;font-weight:400;letter-spacing:.08em;line-height:.95;margin:11px 0 10px}.music-heading>p:last-child{font-size:13px;line-height:1.8;color:#ddd7cbbb;letter-spacing:.03em}.music-wheel-area{position:relative;display:flex;justify-content:center;align-items:center;margin:22px auto 14px;flex:0 0 auto}.music-wheel-shell{width:clamp(310px,32vw,365px);aspect-ratio:1;position:relative}.music-wheel-shell:before{content:'';position:absolute;inset:21%;border-radius:50%;background:#0c0c1394;box-shadow:0 0 48px #08091255;backdrop-filter:blur(8px);pointer-events:none}#music-wheel{width:100%;height:100%;overflow:visible;position:relative;z-index:1;display:block}.music-guide{stroke:#fff7e431;stroke-width:.6}.music-inner-guide{stroke:#fff7e44a;stroke-dasharray:2 7;transform-origin:200px 200px}.music-segment{cursor:pointer;outline:none;transform-origin:200px 200px;transition:transform .55s cubic-bezier(.2,.7,.25,1);-webkit-tap-highlight-color:transparent}.music-segment-fill{fill:var(--track-color);opacity:.72;stroke:#fcf3df35;stroke-width:.5;transition:opacity .4s,stroke .4s,stroke-width .4s;stroke-linejoin:round}.music-segment:hover .music-segment-fill{opacity:.94}.music-segment[aria-checked=true] .music-segment-fill{opacity:1;stroke:#fff9e7d9;stroke-width:1.5}.music-segment:focus-visible .music-segment-fill{stroke:#fff;stroke-width:4;opacity:1}.music-wheel-center{position:absolute;inset:28%;display:flex;flex-direction:column;justify-content:center;align-items:center;pointer-events:none;text-align:center}.music-wheel-center>span:first-child{font-size:10px;letter-spacing:.15em;color:#ded7cac7}.music-wheel-center>strong{font-family:var(--serif);font-size:66px;font-weight:400;line-height:1.05;margin:9px 0 7px;color:#f4ecd9}.music-wheel-center>#music-mood{font-size:13px;letter-spacing:.07em;white-space:nowrap}.music-wheel-center>i{width:20px;height:1px;background:#e8decc55;margin:14px 0 9px}.music-wheel-center>small{font-size:10px;letter-spacing:.13em;color:#dfd8caaa}.music-info{text-align:center;width:min(100%,680px);min-height:190px;position:relative}.music-artist{font-size:12px;letter-spacing:.14em;line-height:1.8;color:#d9d4c6b8}.music-info h2{font-family:'Songti SC','Noto Serif CJK SC',STSong,serif;font-size:36px;font-weight:400;line-height:1.3;letter-spacing:.12em;margin:5px 0 3px}.music-album{font-size:12px;line-height:1.8;letter-spacing:.05em;color:#d9d4c6a8}.music-note{font-family:var(--serif);font-style:italic;font-size:15px;line-height:1.8;color:#f0e7d4;margin:14px auto 10px}.music-info audio{width:min(100%,360px);height:32px;opacity:.78;accent-color:var(--music-accent)}.audio-status{font-size:11px;line-height:1.8;color:#c7c1b5a8;margin:4px auto 0;letter-spacing:.02em}.music-controls{display:flex;justify-content:center;align-items:center;gap:23px;margin:0 auto 16px}.music-controls button{width:44px;height:44px;background:#fff6de05;border:1px solid #e5dcca42;border-radius:50%;font-size:20px;transition:background .3s,border-color .3s}.music-controls button:hover{background:#fff6de17;border-color:#e5dcca}.music-controls>span{font-size:12px;letter-spacing:.08em;color:#e5dcca}.music-controls i{font-style:normal;margin:0 7px;opacity:.4}.music-footer{width:100%;margin-top:auto;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 30px;border-top:1px solid var(--line);padding-top:14px}.music-links{display:flex;gap:22px;align-items:center;font-size:12px;color:#d6cfbf9e}.music-links>a{min-height:44px;display:flex;align-items:center}.music-links>a:hover{color:var(--cream)}.music-links>.motion-toggle{color:#d6cfbf9e}.music-footer .credit-note{flex-basis:100%;font-size:11px;line-height:1.8;text-align:right;color:#bdb6aa8a}.music-page .page-navigation{gap:22px}.music-page .page-navigation a[aria-current=page]{color:var(--cream)}
@keyframes music-breathe{from{transform:scale(1) rotate(-1deg);opacity:.82}to{transform:scale(1.07) rotate(1deg);opacity:1}}
@media(max-width:600px){.music-page .site-header{padding:18px 23px 12px}.music-page .wordmark{font-size:37px}.music-back{font-size:12px;gap:8px}.music-stage{padding:80px 23px 18px}.music-heading>.overline{font-size:11px;letter-spacing:.055em}.music-heading h1{font-size:42px;letter-spacing:.06em;margin:3px 0 8px}.music-heading>p:last-child{font-size:12px;line-height:1.8}.music-wheel-shell{width:min(300px,86vw)}.music-wheel-area{margin:15px auto 12px}.music-wheel-center>strong{font-size:52px}.music-wheel-center>#music-mood{font-size:12px}.music-wheel-center>i{margin:8px 0 6px}.music-info{min-height:194px}.music-info h2{font-size:31px;margin:4px 0 3px}.music-artist,.music-album{font-size:11px}.music-note{font-size:14px;margin:11px auto 8px}.music-info audio{width:100%;height:34px}.audio-status{font-size:10px}.music-controls{gap:20px;margin-bottom:12px}.music-footer{padding-top:10px;gap:4px;justify-content:center}.music-footer .page-navigation{display:none}.music-links{font-size:11px;gap:15px;justify-content:center;width:100%;flex-wrap:wrap}.music-links>a{min-height:38px}.music-links .motion-toggle{min-height:38px;font-size:12px}.music-footer .credit-note{text-align:center;font-size:10px;line-height:1.9}}

/* Album artwork becomes the room: one crisp square, with its color extended beyond it. */
.music-page{position:relative;isolation:isolate;--music-wash:#9eb2b8;background:#101116;transition:background-color .9s ease}
.music-album-world{position:fixed;inset:-7%;z-index:-3;overflow:hidden;background:var(--music-wash);transition:background-color .9s ease;pointer-events:none}
.music-album-world img{width:100%;height:100%;object-fit:cover;filter:blur(54px) saturate(.82);transform:scale(1.16);opacity:.72;transition:opacity .65s ease}
.music-album-world span{position:absolute;inset:0;background:radial-gradient(circle at 50% 38%,#10101508 0%,#10101570 48%,#09090dcc 100%),linear-gradient(180deg,#090a10a8 0%,#0b0b1090 58%,#09090de8 100%)}
.music-stage{z-index:1}
.music-cover-stage{width:clamp(330px,36vw,410px);aspect-ratio:1;position:relative;overflow:hidden;box-shadow:0 22px 90px #0009,0 0 0 1px #fff3;background:var(--music-wash);transition:background-color .8s ease,box-shadow .8s ease}
.music-cover-stage:after{content:'';position:absolute;inset:0;z-index:0;background:radial-gradient(circle at 50% 50%,#08091233 0 31%,#08091205 32% 58%,#08091238 78%,#08091276 100%);opacity:1;transition:opacity .65s ease;pointer-events:none}
.music-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:1;transform:scale(1.001);transition:opacity .38s ease,transform .75s cubic-bezier(.2,.7,.25,1);will-change:opacity,transform}
.music-cover-stage.is-changing .music-cover{opacity:.08;transform:scale(1.035)}
.music-cover-stage .music-wheel-shell{position:absolute;inset:3.2%;z-index:2;width:auto;aspect-ratio:auto}
.music-cover-stage .music-wheel-shell:before{background:#090b1296;box-shadow:0 0 58px #0008;border:1px solid #fff2}
.music-cover-stage .music-segment-fill{opacity:.48;mix-blend-mode:screen;stroke:#fff8;stroke-width:.8}
.music-cover-stage .music-segment:hover .music-segment-fill{opacity:.74}
.music-cover-stage .music-segment[aria-checked=true] .music-segment-fill{opacity:.88;stroke:#fff;stroke-width:2}
.music-cover-stage .music-guide{stroke:#fff9;stroke-width:.8}
.music-info audio{display:none}
.music-play-toggle{min-width:116px;min-height:38px;padding:8px 18px;border:1px solid #e5dcca70;background:#090b124f;color:#f3eee3;font-size:12px;letter-spacing:.12em;backdrop-filter:blur(10px);transition:background .3s,border-color .3s,transform .3s}
.music-play-toggle:hover{background:#fff6de18;border-color:#e5dcca;transform:translateY(-1px)}
.music-play-toggle[aria-pressed=true]{border-color:var(--music-accent);background:color-mix(in srgb,var(--music-accent) 28%,#090b1266)}
.audio-status{min-height:20px}
@media(max-width:600px){
  .music-stage{padding-top:76px}
  .music-heading>p:last-child{display:none}
  .music-wheel-area{margin:13px auto 13px}
  .music-cover-stage{width:min(330px,86vw)}
  .music-cover-stage .music-wheel-shell{width:auto}
  .music-info{min-height:184px}
  .music-play-toggle{min-width:120px;min-height:40px}
}
@media(max-width:350px){.music-cover-stage{width:278px}.music-info{min-height:192px}}
@media(prefers-reduced-motion:reduce){.music-cover,.music-album-world img,.music-cover-stage{transition:none}}

/* A visible door from the film chapter into the music chapter. */
.film-source-links{flex-wrap:wrap;justify-content:flex-end}
.film-source-links .music-door{display:flex;align-items:center;gap:8px;min-height:38px;padding:0 12px;border:1px solid #e5dcca55;color:#f4f0e7;background:#0b0b124c;transition:background .3s,border-color .3s}
.film-source-links .music-door:hover{background:#f4f0e718;border-color:#e5dcca}
.music-door small{font-size:9px;letter-spacing:.12em;color:#d6cfbf8f}
.music-door span{font-size:12px;white-space:nowrap}
.music-door i{font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:16px;font-weight:400}
.music-door b{font-size:16px;font-weight:400}
@media(max-width:600px){
  .film-source-links .music-door{order:-1;width:100%;justify-content:center;min-height:44px;margin:0 0 3px}
  .film-source-links{row-gap:3px}
}

/* Let the album sleeve breathe until the listener asks for the wheel. */
.music-cover-stage .music-wheel-shell{transition:opacity .75s cubic-bezier(.2,.7,.25,1),filter .75s cubic-bezier(.2,.7,.25,1),transform .75s cubic-bezier(.2,.7,.25,1)}
.music-cover-stage:before{content:'轻触封面，展开歌单';position:absolute;left:50%;bottom:18px;z-index:4;transform:translateX(-50%);color:#fffdf0e8;font-family:var(--serif);font-size:13px;letter-spacing:.18em;white-space:nowrap;text-shadow:0 2px 18px #000;opacity:0;transition:opacity .65s ease;pointer-events:none}
.music-page.music-ring-muted .music-cover-stage .music-wheel-shell{opacity:.09;filter:blur(2px) saturate(.45);transform:scale(.96)}
.music-page.music-ring-muted .music-cover-stage:after{opacity:0}
.music-page.music-ring-muted .music-cover-stage:before{opacity:1;animation:still-prompt 2.4s ease-in-out infinite alternate}
.music-page:not(.music-ring-muted) .music-cover-stage:before{opacity:0}
@media(prefers-reduced-motion:reduce){.music-cover-stage .music-wheel-shell,.music-cover-stage:before{transition:none}.music-page.music-ring-muted .music-cover-stage:before{animation:none}}

/* A final chapter written as an intimate, cinematic letter. */
.letter-page{min-height:100svh;position:relative;isolation:isolate;overflow-x:hidden;background:#2b0d18;color:#f3e8d5;--cream:#f3e8d5;--line:#f3e8d529}
.letter-atmosphere{position:fixed;inset:0;z-index:-2;overflow:hidden;background:linear-gradient(145deg,#3c1221 0%,#290d18 52%,#160a11 100%);pointer-events:none}
.letter-atmosphere:before{content:'';position:absolute;width:82vmax;height:82vmax;left:-48vmax;top:-31vmax;border:1px solid #e7b5a41f;border-radius:50%;box-shadow:0 0 0 9vmax #8c39400c,0 0 0 21vmax #8c394009;animation:letter-orbit 22s ease-in-out infinite alternate}
.letter-atmosphere:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 74% 15%,#bd69682b 0%,transparent 40%),radial-gradient(ellipse at 18% 82%,#7e243523 0%,transparent 38%)}
.letter-atmosphere i{position:absolute;border-radius:50%;background:#e9c7ad;box-shadow:0 0 24px #e9c7ad75;opacity:.45;animation:letter-star 5s ease-in-out infinite}
.letter-atmosphere i:nth-child(1){width:3px;height:3px;left:12%;top:34%}.letter-atmosphere i:nth-child(2){width:2px;height:2px;right:13%;top:23%;animation-delay:-1.8s}.letter-atmosphere i:nth-child(3){width:2px;height:2px;right:21%;top:72%;animation-delay:-3.6s}
.letter-header{position:absolute;padding:24px 5vw}.letter-back{color:#eadbc9b8}.letter-header .wordmark span{color:#d39a91}
.letter-stage{width:100%;min-height:100svh;padding:118px 6vw 90px;display:flex;justify-content:center;align-items:flex-start}
.letter-sheet{position:relative;width:min(100%,820px);padding:72px clamp(34px,7vw,94px) 62px;border:1px solid #f4e7d526;background:linear-gradient(155deg,#4b192777 0%,#2a0e187a 72%);box-shadow:0 40px 120px #0d050a78,0 0 0 1px #24091366 inset;backdrop-filter:blur(16px);overflow:hidden}
.letter-sheet:before{content:'';position:absolute;left:0;top:0;width:1px;height:100%;background:linear-gradient(transparent 5%,#e7c2aa78 31%,#e7c2aa1f 80%,transparent)}
.letter-sheet:after{content:'ANTI';position:absolute;right:-.04em;bottom:-.25em;font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:clamp(92px,17vw,180px);line-height:1;font-style:italic;color:#f3e8d506;letter-spacing:-.07em;pointer-events:none}
.letter-folio{position:absolute;right:25px;top:22px;font-family:var(--serif);font-size:12px;letter-spacing:.2em;color:#e4cbb483;writing-mode:vertical-rl}
.letter-title{position:relative;margin-bottom:50px;animation:letter-rise 1.1s cubic-bezier(.2,.7,.25,1) both}
.letter-overline{font-size:10px;letter-spacing:.22em;line-height:1.7;color:#dcc7b0a6;margin-bottom:18px}
.letter-title h1{font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:clamp(54px,9vw,92px);font-weight:400;line-height:.9;letter-spacing:-.045em}
.letter-title h1 em{font-weight:400;color:#e8b2a9}.letter-title>span{display:block;width:52px;height:1px;background:#e7c2aa8c;margin-top:31px}
.letter-copy{position:relative;z-index:1;font-family:'Songti SC','Noto Serif CJK SC',STSong,var(--serif);font-size:clamp(16px,1.5vw,18px);font-weight:400;line-height:2.15;letter-spacing:.055em;color:#f2e5d3e6;text-align:justify;text-justify:inter-ideograph}
.letter-copy p{margin-bottom:1.65em;opacity:0;animation:letter-rise .95s cubic-bezier(.2,.7,.25,1) forwards}
.letter-copy p:nth-child(1){animation-delay:.15s}.letter-copy p:nth-child(2){animation-delay:.28s}.letter-copy p:nth-child(3){animation-delay:.41s}.letter-copy p:nth-child(4){animation-delay:.54s}
.letter-copy p:first-child:first-letter{float:left;font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:58px;line-height:.8;margin:10px 10px 0 0;color:#e8b2a9}
.letter-closing{position:relative;z-index:1;margin-top:56px;padding-top:39px;border-top:1px solid #f0dcc827;text-align:right;opacity:0;animation:letter-rise 1s .68s cubic-bezier(.2,.7,.25,1) forwards}
.letter-closing>p:first-child{font-family:'Songti SC','Noto Serif CJK SC',STSong,serif;font-size:24px;letter-spacing:.22em;color:#fff2df}
.letter-english{font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:clamp(26px,4vw,40px);line-height:1.1;font-style:italic;letter-spacing:-.02em;color:#e8b2a9;margin:12px 0 17px}
.letter-cakes{font-size:18px;filter:saturate(.72);margin-bottom:20px}.letter-signature{display:flex;align-items:baseline;justify-content:flex-end;gap:8px;font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:34px;font-style:italic;line-height:1;color:#f3e8d5;margin-bottom:22px}.letter-signature small{font-family:var(--sans);font-size:9px;font-style:normal;letter-spacing:.2em;text-transform:uppercase;color:#dcc7b096}.letter-closing>span{font-size:9px;letter-spacing:.27em;color:#dcc7b080}
.letter-footer{width:min(90vw,1120px);margin:-48px auto 0;padding:0 0 max(24px,env(safe-area-inset-bottom));position:relative;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:26px}
.letter-footer .page-navigation{gap:25px}.letter-footer .motion-toggle{color:#d7c4b0a3}
.letter-door{width:min(100%,460px);min-height:62px;margin:0 auto 20px;padding:10px 18px 10px 20px;display:flex;align-items:center;justify-content:space-between;gap:20px;border:1px solid #f2eadc40;background:#0a0b1052;backdrop-filter:blur(12px);transition:background .35s,border-color .35s,transform .35s}
.letter-door:hover{background:#f2eadc12;border-color:#f2eadca0;transform:translateY(-2px)}.letter-door>span{display:flex;flex-direction:column;gap:4px}.letter-door small{font-size:9px;letter-spacing:.18em;color:#d8d0c3a0}.letter-door strong{font-size:14px;font-weight:400;letter-spacing:.03em}.letter-door i{font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:18px;font-weight:400}.letter-door>b{font-size:20px;font-weight:400}
@keyframes letter-rise{from{opacity:0;transform:translateY(18px);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@keyframes letter-orbit{from{transform:translate(-1%,-1%) rotate(-5deg)}to{transform:translate(5%,4%) rotate(8deg)}}
@keyframes letter-star{0%,100%{opacity:.2;transform:scale(.75)}50%{opacity:.72;transform:scale(1.15)}}
@media(max-width:600px){
  .letter-header{padding:18px 23px 12px}.letter-header .wordmark{font-size:37px}.letter-back{font-size:12px}.letter-stage{padding:84px 18px 88px;display:block}.letter-sheet{padding:49px 25px 45px;backdrop-filter:blur(12px)}.letter-folio{right:15px;top:15px}.letter-title{margin-bottom:36px}.letter-overline{font-size:9px;letter-spacing:.14em;margin-bottom:16px}.letter-title h1{font-size:57px}.letter-title>span{margin-top:25px}.letter-copy{font-size:16px;line-height:2.05;letter-spacing:.035em;text-align:left}.letter-copy p{margin-bottom:1.45em}.letter-copy p:first-child:first-letter{font-size:50px;margin-right:7px}.letter-closing{margin-top:42px;padding-top:31px}.letter-closing>p:first-child{font-size:22px}.letter-english{font-size:29px;margin-top:10px}.letter-footer{width:auto;margin:-58px 18px 0;justify-content:center}.letter-footer .page-navigation{display:none}.letter-footer .motion-toggle{min-height:44px}.letter-door{width:100%;min-height:58px;margin-bottom:14px}.music-stage{padding-bottom:16px}
}
@media(max-width:360px){.letter-sheet{padding-left:21px;padding-right:21px}.letter-copy{font-size:15px}.letter-title h1{font-size:51px}.letter-english{font-size:26px}.letter-door{padding-left:16px;padding-right:16px}}
@media(prefers-reduced-motion:reduce){.letter-title,.letter-copy p,.letter-closing{opacity:1;filter:none;transform:none}.letter-atmosphere:before,.letter-atmosphere i{animation:none}}

/* The final chapter: twenty-two flames, one quiet wish. */
.wish-page{min-height:100svh;position:relative;isolation:isolate;overflow-x:hidden;background:#260c17;color:#f4ead9;--cream:#f4ead9;--line:#f4ead929}
.wish-atmosphere{position:fixed;inset:0;z-index:-3;overflow:hidden;background:radial-gradient(ellipse at 50% 62%,#74313b4c 0%,transparent 42%),radial-gradient(ellipse at 18% 8%,#8e465132 0%,transparent 32%),linear-gradient(155deg,#37101f 0%,#250b16 54%,#11080d 100%);pointer-events:none}
.wish-atmosphere:before{content:'';position:absolute;width:88vmax;height:88vmax;left:50%;bottom:-72vmax;transform:translateX(-50%);border:1px solid #e7cbb12b;border-radius:50%;box-shadow:0 0 0 10vmax #a74b550c,0 0 0 23vmax #a74b5508}
.wish-atmosphere:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 49.9%,#f1dec217 50%,transparent 50.1%);mask-image:linear-gradient(transparent,#000 24%,#000 76%,transparent)}
.wish-atmosphere i{position:absolute;width:2px;height:2px;border-radius:50%;background:#f6ddbc;box-shadow:0 0 18px #ffd9a7;opacity:.4;animation:wish-star 4s ease-in-out infinite}.wish-atmosphere i:nth-child(1){left:12%;top:24%}.wish-atmosphere i:nth-child(2){right:15%;top:31%;animation-delay:-1.4s}.wish-atmosphere i:nth-child(3){left:22%;bottom:18%;animation-delay:-2.8s}
.wish-header{position:absolute;padding:20px 5vw 14px;z-index:55}.wish-header .wordmark span{color:#d49791}.wish-back{color:#eadcc8b6}.wish-audio-toggle{min-height:42px;padding:0 13px;display:flex;align-items:center;gap:9px;border:1px solid #f1e5d038;background:#17091038;backdrop-filter:blur(10px);font-size:11px;color:#eadcc8c7;letter-spacing:.04em}.wish-audio-toggle span{font-family:var(--serif);font-size:17px;color:#e7b593}.wish-audio-toggle b{font-weight:400}.wish-audio-toggle[aria-pressed=true]{border-color:#e7b59373;color:#fff2df}
.wish-stage{min-height:max(780px,100svh);position:relative;display:flex;flex-direction:column;align-items:center;padding:88px 20px 72px;overflow:hidden}
.wish-heading{text-align:center;position:relative;z-index:8;transition:opacity .8s ease,transform .8s ease}.wish-heading>.overline{font-size:10px;letter-spacing:.2em;color:#ddc9b3a6}.wish-heading h1{font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:clamp(48px,7vw,78px);font-weight:400;line-height:.94;letter-spacing:-.035em;margin:10px 0 11px}.wish-heading h1 em{font-weight:400;color:#e5a89d}.wish-heading>p:last-child{font-family:'Songti SC','Noto Serif CJK SC',STSong,serif;font-size:13px;line-height:1.8;letter-spacing:.08em;color:#eadfcec2;transition:opacity .5s}
.cake-scene{width:min(390px,96vw);height:340px;position:relative;flex:1 0 340px;margin:-2px auto 0;z-index:5;transition:transform 1s cubic-bezier(.2,.7,.25,1),filter 1s ease}
.cake-halo{position:absolute;width:315px;height:220px;left:50%;top:72px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,#eebd8654 0%,#c65c6432 31%,transparent 70%);filter:blur(16px);animation:cake-halo 3.2s ease-in-out infinite alternate}
.cake{position:absolute;width:310px;height:230px;left:50%;bottom:28px;transform:translateX(-50%);filter:drop-shadow(0 24px 32px #0803088c)}
.cake-shadow{position:absolute;width:310px;height:38px;left:50%;bottom:10px;transform:translateX(-50%);border-radius:50%;background:#08020782;filter:blur(12px)}
.wish-actions{width:min(100%,420px);position:relative;z-index:12;text-align:center;margin-top:-7px}.wish-status{min-height:22px;margin-bottom:11px;font-size:11px;letter-spacing:.08em;color:#ddcdb7a8}.wish-action{width:100%;min-height:58px;padding:0 20px 0 24px;display:flex;align-items:center;justify-content:space-between;border:1px solid #f0dec45c;background:linear-gradient(90deg,#471827b5,#29101a9c);box-shadow:0 13px 35px #0d050b61;color:#fff0db;backdrop-filter:blur(12px);transition:transform .4s,background .4s,border-color .4s,opacity .4s}.wish-action:hover:not(:disabled){transform:translateY(-2px);background:linear-gradient(90deg,#5d2131d1,#351420c2);border-color:#f0dec4a6}.wish-action:disabled{cursor:default;opacity:.58}.wish-action span{font-family:'Songti SC','Noto Serif CJK SC',STSong,serif;font-size:15px;letter-spacing:.18em}.wish-action i{font-family:var(--serif);font-size:20px;font-style:normal;font-weight:400}
.wish-overlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 50% 43%,#531e2fbd,#13080ee8 61%,#080408f5);backdrop-filter:blur(22px);opacity:0;visibility:hidden;transition:opacity .8s ease,visibility .8s}.wish-overlay.is-open{opacity:1;visibility:visible}.wish-overlay.is-leaving{opacity:0}.wish-overlay-inner{text-align:center;transform:translateY(13px);opacity:0;transition:transform 1s .25s cubic-bezier(.2,.7,.25,1),opacity 1s .25s}.wish-overlay.is-open .wish-overlay-inner{transform:none;opacity:1}.wish-overlay-inner>p{font-size:9px;letter-spacing:.28em;color:#e0c7b5a3}.wish-overlay-inner h2{font-family:'Songti SC','Noto Serif CJK SC',STSong,serif;font-size:clamp(34px,8vw,54px);font-weight:400;letter-spacing:.18em;margin:18px 0 13px}.wish-overlay-inner>span{font-family:var(--serif);font-size:14px;font-style:italic;color:#e7dac8a8}.wish-timer-ring{--wish-progress:0deg;width:82px;height:82px;margin:42px auto 0;position:relative;display:grid;place-items:center;border-radius:50%;background:conic-gradient(#e5a89d var(--wish-progress),#f4e5d31a 0);box-shadow:0 0 45px #b75a6754}.wish-timer-ring:before{content:'';position:absolute;inset:2px;border-radius:50%;background:#260d18}.wish-timer-ring b{position:relative;font-family:'Bodoni 72','Didot',var(--serif);font-size:29px;font-weight:400;color:#f4e8d7}
.wish-celebration{position:absolute;z-index:38;top:122px;left:20px;right:20px;text-align:center;opacity:0;visibility:hidden;transform:translateY(17px);pointer-events:none}.wish-celebration>p{font-size:9px;letter-spacing:.32em;color:#ebcfb9a3}.wish-celebration h2{font-family:'Songti SC','Noto Serif CJK SC',STSong,serif;font-size:clamp(28px,6vw,48px);font-weight:400;line-height:1.45;letter-spacing:.12em;margin:10px 0 8px;text-shadow:0 3px 30px #10070c}.wish-celebration h2 em{font-family:'Bodoni 72','Didot',var(--serif);font-size:1.4em;font-style:italic;font-weight:400;color:#eab09f}.wish-celebration>span{font-size:12px;letter-spacing:.1em;color:#eddfc9c2}
.fireworks{position:fixed;inset:0;z-index:32;overflow:hidden;pointer-events:none}.firework-burst{position:absolute;width:4px;height:4px}.firework-burst:before{content:'';position:absolute;inset:-5px;border-radius:50%;background:#fff3ce;box-shadow:0 0 22px #ffd5a8;animation:firework-flash .45s ease-out forwards}.firework-burst i{position:absolute;width:4px;height:4px;border-radius:50%;background:var(--spark);box-shadow:0 0 7px var(--spark);opacity:0;animation:firework-spark 1.45s var(--spark-delay) cubic-bezier(.12,.65,.24,1) forwards}
.is-wishing .wish-heading,.is-celebrating .wish-heading{opacity:.1;transform:translateY(-8px)}.is-wishing .cake-scene{filter:saturate(.84)}.is-celebrating .cake-scene{transform:translateY(54px) scale(.92);filter:saturate(.78) brightness(.77)}.is-celebrating .wish-actions{opacity:.72}.is-celebrating .wish-celebration{opacity:1;visibility:visible;transform:none;transition:opacity 1.1s ease,transform 1.1s cubic-bezier(.2,.7,.25,1)}
.wish-footer{position:absolute;z-index:20;left:5vw;right:5vw;bottom:max(15px,env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;gap:22px}.wish-footer .page-navigation{gap:20px}.wish-footer>span{font-size:9px;letter-spacing:.2em;color:#d8c4ad75;white-space:nowrap}
.wish-door{position:relative;z-index:2;width:min(100%,460px);min-height:62px;margin:49px 0 0 auto;padding:10px 18px 10px 20px;display:flex;align-items:center;justify-content:space-between;gap:20px;border:1px solid #f2e2cf45;background:#1b091263;transition:background .35s,border-color .35s,transform .35s}.wish-door:hover{background:#f2e2cf12;border-color:#f2e2cf91;transform:translateY(-2px)}.wish-door>span{display:flex;flex-direction:column;gap:4px}.wish-door small{font-size:9px;letter-spacing:.18em;color:#d8c0aba0}.wish-door strong{font-size:14px;font-weight:400;letter-spacing:.04em}.wish-door i{font-family:'Bodoni 72','Didot',var(--serif);font-size:18px;font-weight:400}.wish-door>b{font-size:20px;font-weight:400}
@keyframes wish-star{0%,100%{opacity:.18;transform:scale(.7)}50%{opacity:.72;transform:scale(1.2)}}
@keyframes cake-halo{from{opacity:.62;transform:translateX(-50%) scale(.94)}to{opacity:1;transform:translateX(-50%) scale(1.07)}}
@keyframes wish-flame-out{0%{opacity:1;transform:translateX(-50%) scale(1)}60%{opacity:.75;transform:translate(-60%,5px) scale(.35,1.4) rotate(-24deg)}100%{opacity:0;transform:translate(-80%,9px) scale(.05)}}
@keyframes candle-smoke{0%{opacity:0;transform:translate(-50%,5px) scale(.4)}15%{opacity:.55}100%{opacity:0;transform:translate(calc(-50% + 12px),-54px) scale(3)}}
@keyframes firework-flash{from{opacity:1;transform:scale(.25)}to{opacity:0;transform:scale(2.2)}}
@keyframes firework-spark{0%{opacity:0;transform:translate(0,0) scale(.3)}12%{opacity:1}76%{opacity:.95}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.15)}}
@media(max-width:600px){
  .wish-header{padding:17px 20px 10px}.wish-header .wordmark{font-size:37px}.wish-back{font-size:12px}.wish-audio-toggle{padding:0 10px;min-height:40px}.wish-stage{min-height:max(760px,100svh);padding:78px 17px 67px}.wish-heading>.overline{font-size:9px;letter-spacing:.13em}.wish-heading h1{font-size:47px;margin:7px 0 8px}.wish-heading>p:last-child{font-size:12px}.cake-scene{height:334px;flex-basis:334px;width:100%;margin-top:-1px}.cake{width:292px;bottom:24px}.cake-halo{width:285px}.cake-shadow{width:286px}.wish-actions{margin-top:-4px}.wish-action{min-height:56px}.wish-footer{left:18px;right:18px;justify-content:center}.wish-footer .page-navigation{display:none}.wish-footer>span{font-size:8px}.wish-celebration{top:113px}.wish-celebration h2{font-size:30px}.wish-door{width:100%;min-height:58px;margin-top:39px}.letter-sheet{padding-bottom:36px}
}
@media(max-width:360px){.wish-stage{padding-left:13px;padding-right:13px}.wish-heading h1{font-size:43px}.cake-scene{transform:scale(.94);margin-top:-9px;margin-bottom:-11px}.wish-actions{width:calc(100% - 10px)}.wish-audio-toggle b{display:none}.wish-door{padding-left:16px;padding-right:16px}}
@media(prefers-reduced-motion:reduce){.wish-atmosphere i,.cake-halo{animation:none}.firework-burst:before{display:none}.firework-burst i{animation:none;opacity:.75;transform:translate(var(--dx),var(--dy)) scale(.55)}.wish-heading,.cake-scene,.wish-celebration,.wish-overlay,.wish-overlay-inner{transition:none}}

/* Chapter colors: the dot carries each page's visual key. */
.home-page .wordmark span{color:#d99b87}
.cinema-page .wordmark span{color:var(--accent,#9d87c8)}
.music-page .wordmark span{color:color-mix(in srgb,var(--music-accent,#b2778b) 72%,#fff 28%);text-shadow:0 0 14px color-mix(in srgb,var(--music-accent,#b2778b) 52%,transparent);transition:color .7s,text-shadow .7s}
.letter-page .wordmark span{color:#cba867}
.wish-page .wordmark span{color:#e5b963}

/* Letter stays cool and nocturnal; Wish opens into warm candlelight. */
.letter-page{background:#10131a}
.letter-atmosphere{background:linear-gradient(145deg,#20242e 0%,#141821 52%,#090c12 100%)}
.letter-atmosphere:before{border-color:#d7bc8624;box-shadow:0 0 0 9vmax #9a7b3b0b,0 0 0 21vmax #9a7b3b08}
.letter-atmosphere:after{background:radial-gradient(ellipse at 74% 15%,#7d90a524 0%,transparent 40%),radial-gradient(ellipse at 18% 82%,#95733e1d 0%,transparent 38%)}
.letter-atmosphere i{background:#dec894;box-shadow:0 0 24px #dec89470}
.letter-sheet{background:linear-gradient(145deg,#212630e8 0%,#171c25e8 57%,#10141bcc 100%);box-shadow:0 40px 120px #02050a8a,0 0 0 1px #05080d77 inset}
.letter-title h1 em,.letter-copy p:first-child:first-letter,.letter-english{color:#d3b577}
.letter-title>span{background:#d3b5778c}

.wish-page{background:#3b1018}
.wish-celebration h2{line-height:1.08;margin-top:7px;margin-bottom:3px}
.wish-celebration .birthday-line{display:block;line-height:1.12}
.wish-celebration .birthday-line-one{transform:translateX(-9px)}
.wish-celebration .birthday-line-two{margin-top:-.02em;transform:translateX(7px)}
.wish-celebration .birthday-line-three{margin-top:.02em}
.wish-celebration .birthday-name{display:inline-block;margin:0 .15em 0 .08em;font-family:'Bodoni 72','Didot','Iowan Old Style','Baskerville','Times New Roman',serif;font-size:1.12em;font-weight:400;font-style:italic;line-height:.88;letter-spacing:-.025em;color:#eab09f;text-shadow:0 3px 22px #16070b}
.wish-celebration .birthday-signature{display:block;margin-top:7px;font-family:'Snell Roundhand','Apple Chancery','URW Chancery L','Bodoni 72','Didot',serif;font-size:29px;font-weight:400;font-style:italic;line-height:1;letter-spacing:.025em;color:#ead4bd;text-shadow:0 3px 22px #16070b}

/* A nostalgic bakery cake and a mechanical lotus candle. */
.wish-page .cake-scene{height:350px;flex-basis:350px;margin-top:-9px}
.wish-page .cake{width:min(350px,92vw);height:auto;aspect-ratio:1;bottom:-14px;filter:drop-shadow(0 25px 31px #08030878)}
.nostalgic-cake-art{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:contain;user-select:none;-webkit-user-drag:none}
.wish-page .cake-halo{width:325px;height:260px;top:58px;background:radial-gradient(ellipse,#efb46e4d 0%,#c8556430 33%,transparent 72%)}
.wish-page .cake-shadow{width:315px;height:32px;bottom:-1px;background:#0802076e}
.lotus-candle{position:absolute;z-index:12;left:50%;top:-47px;width:180px;height:151px;transform:translateX(-50%);filter:drop-shadow(0 7px 9px #46101c70);perspective:500px}
.lotus-rotor{position:absolute;left:50%;bottom:9px;width:0;height:0;transform-style:preserve-3d}

/* Product-accurate lotus candle: crossfade from folded toy to its rotating open mechanism. */
.lotus-candle{top:-35px;width:246px;height:164px;filter:drop-shadow(0 4px 6px #46101c4f)}
.lotus-candle:after{content:'';position:absolute;z-index:8;left:50%;top:33%;width:16px;height:16px;transform:translate(-50%,-50%) scale(.15);border-radius:50%;background:#fff8c8;box-shadow:0 0 12px #fff1a4,0 0 30px #f4a858,0 0 54px #da5575;opacity:0;pointer-events:none}
.lotus-closed-art,.lotus-open-art,.lotus-open-base{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none}
.lotus-closed-art{z-index:4;opacity:1;clip-path:inset(0 0 22% 0);transform:scale(.9);transform-origin:50% 167%;transition:opacity .42s .42s ease,transform 1.35s cubic-bezier(.2,.72,.2,1),filter .65s}
.lotus-open-wrap{position:absolute;inset:0;z-index:3;opacity:0;transform:translateY(2px) scale(.28,.8);transform-origin:50% 74%;transition:opacity .36s .48s ease,transform 1.42s .18s cubic-bezier(.16,.78,.18,1)}
.lotus-open-base{display:none}
.lotus-candle .lotus-rotor{position:absolute;z-index:2;inset:0;left:0;bottom:auto;width:100%;height:100%;transform-origin:50% 55%;animation:none}
.lotus-open-art{z-index:1;clip-path:inset(0 0 23% 0)}
.lotus-flames{position:absolute;z-index:3;inset:0}
.toy-flame-anchor{position:absolute;left:var(--x);top:var(--y);width:0;height:0;opacity:0;transform:translateY(4px) scale(.22);filter:blur(1px) brightness(.55);transition:opacity .28s var(--ignite-delay),transform .48s var(--ignite-delay) cubic-bezier(.18,.85,.24,1.35),filter .45s var(--ignite-delay)}
.toy-flame{position:absolute;left:-5px;top:-15px;width:10px;height:16px;display:block;transform-origin:50% 100%;border-radius:50% 48% 50% 48%;background:radial-gradient(ellipse at 50% 72%,#fffbd3 0 18%,#ffd36d 27%,#f09051 58%,#b8384a 84%,transparent 86%);box-shadow:0 0 5px #fff3a1,0 0 11px #f7af57,0 0 20px #d64f768c;animation:toy-flame-flicker .76s var(--flicker-delay) ease-in-out infinite alternate,toy-flame-bloom .55s var(--ignite-delay) ease-out both}
.toy-flame:after{content:'';position:absolute;inset:6px 3px 2px;border-radius:50%;background:#fffbe8d4}
.toy-smoke{position:absolute;left:-3px;top:-14px;width:6px;height:6px;display:block;opacity:0;border:1px solid #ded0ca;border-radius:50%;filter:blur(1px)}
.is-lotus-open .lotus-closed-art{opacity:0;transform:translateY(-8px) scale(.72,1.06);filter:blur(3px)}
.is-lotus-open .lotus-open-wrap{opacity:1;transform:none}
.is-lotus-open .lotus-candle:after{animation:toy-ignition-flash .85s .62s ease-out both}
.is-lotus-open .lotus-candle .lotus-rotor{animation:toy-lotus-turn 3.4s 1.45s ease-in-out infinite alternate}
.is-lotus-open .toy-flame-anchor{opacity:1;transform:none;filter:none}
.is-blown .lotus-candle .lotus-rotor,.is-blown .toy-flame-anchor{animation-play-state:paused}
.is-blown .toy-flame{animation:wish-flame-out .42s cubic-bezier(.5,0,1,.4) forwards}
.is-blown .toy-smoke{animation:candle-smoke 2.2s var(--smoke-delay) ease-out forwards}
@keyframes toy-lotus-turn{0%{transform:perspective(460px) rotateY(-7deg) translateX(-2px);filter:brightness(.94)}50%{transform:perspective(460px) rotateY(0deg);filter:brightness(1.06)}100%{transform:perspective(460px) rotateY(7deg) translateX(2px);filter:brightness(.97)}}
@keyframes toy-ignition-flash{0%{opacity:0;transform:translate(-50%,-50%) scale(.15)}30%{opacity:.95;transform:translate(-50%,-50%) scale(1.2)}100%{opacity:0;transform:translate(-50%,-50%) scale(3.2)}}
@keyframes toy-flame-bloom{0%{filter:brightness(.3);box-shadow:0 0 2px #fff3a1}55%{filter:brightness(1.45);box-shadow:0 0 9px #fff3a1,0 0 23px #f7af57,0 0 35px #d64f76}100%{filter:brightness(1)}}
@keyframes toy-flame-flicker{0%{transform:rotate(-4deg) scale(.92,1.05)}45%{transform:rotate(4deg) scale(1.06,.94)}100%{transform:rotate(-1deg) scale(.98,1.08)}}
@media(max-width:600px){.lotus-candle{top:-32px;width:238px;height:159px;transform:translateX(-50%)}}
@media(max-width:360px){.lotus-candle{top:-29px;width:224px;height:149px;transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.is-lotus-open .lotus-candle .lotus-rotor,.is-lotus-open .toy-flame-anchor{animation:none}.lotus-closed-art,.lotus-open-wrap{transition-duration:.2s}.toy-flame{animation:none}}

/* Final cake scale and placement: the lotus base sits inside the cream surface. */
.wish-page .cake-scene{height:332px;flex-basis:332px}
.wish-page .cake{width:min(330px,88vw);bottom:-5px}
.wish-page .cake-halo{width:300px;height:238px;top:62px}
.wish-page .cake-shadow{width:292px}
.lotus-candle{top:15px;width:232px;height:155px}
@media(max-width:600px){.wish-page .cake-scene{height:326px;flex-basis:326px}.wish-page .cake{width:min(324px,88vw);bottom:-3px}.lotus-candle{top:17px;width:222px;height:148px}}
@media(max-width:360px){.wish-page .cake{width:310px}.lotus-candle{top:18px;width:212px;height:141px}}
.wish-atmosphere{background:radial-gradient(ellipse at 50% 62%,#ad5f4748 0%,transparent 42%),radial-gradient(ellipse at 18% 8%,#cc85502b 0%,transparent 32%),linear-gradient(155deg,#521725 0%,#341019 54%,#16080c 100%)}
