:root{font-family:Noto Sans TC,sans-serif;color:#f5f1ea;background:#070a13;font-synthesis:none;--gold:#e5b66b;--muted:#c0b8c9}*{box-sizing:border-box}html,body,#root{margin:0;min-width:320px;min-height:100%;height:100%}button,select{font:inherit}button{cursor:pointer}button:focus-visible,select:focus-visible{outline:2px solid #f6ca7e;outline-offset:4px}button:disabled{opacity:.55;cursor:wait}.experience{min-height:100svh;height:100svh;position:relative;overflow:hidden;isolation:isolate;background:#070a13}.backdrop,.world,.grain,.frame,.fallback-art{position:absolute;inset:0}.backdrop{background:radial-gradient(ellipse at 53% 48%,#47375d,#1c1933 34%,#0a1020 70%,#060913)}.back-moon{position:absolute;width:17vw;height:17vw;min-width:110px;min-height:110px;right:17%;top:12%;border-radius:50%;background:#eedbb7;opacity:.08;filter:blur(30px)}.mist{position:absolute;width:110%;height:24%;left:-5%;bottom:12%;background:radial-gradient(ellipse,#a795c2 0%,transparent 68%);filter:blur(42px);opacity:.11}.mist-two{bottom:0;left:25%;opacity:.13}.horizon{position:absolute;bottom:-28%;width:100%;height:45%;background:#101122;border-radius:50%;filter:blur(10px)}.world{z-index:1}.world canvas{width:100%;height:100%;touch-action:manipulation}.grain{z-index:2;pointer-events:none;opacity:.12;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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.25'/%3E%3C/svg%3E")}.frame{z-index:3;pointer-events:none;inset:15px;border:1px solid #d6b98623}.topbar,.bottom{position:absolute;z-index:5;left:clamp(28px,5vw,75px);right:clamp(28px,5vw,75px);display:flex;justify-content:space-between;align-items:center}.topbar{top:max(31px,env(safe-area-inset-top))}.wordmark{border:0;background:none;color:#f6e9d4;font-family:Cormorant Garamond,serif;font-size:19px;letter-spacing:.18em;text-align:left}.wordmark span{color:var(--gold);font-size:15px}.wordmark small{display:block;font:8px Noto Sans TC,sans-serif;letter-spacing:.3em;color:#aaa0a8;margin:2px 0 0 24px}.top-actions{display:flex;align-items:center;gap:9px}.top-actions button,.quality select{border:1px solid #e9d0a64a;background:#18152a99;color:#f2e8d7;height:37px;min-width:40px;padding:0 10px}.top-actions button:hover,.quality select:hover{border-color:var(--gold)}.quality select{font-size:11px;max-width:85px}.content{position:absolute;inset:0;z-index:3;pointer-events:none}.intro,.chapter{position:absolute;pointer-events:none;text-shadow:0 2px 25px #070a13;animation:arrive 1s ease both}.intro button,.chapter button{pointer-events:auto}.intro{top:28%;left:7.2%;width:min(43%,580px)}.eyebrow,.chapter-index{font-size:10px;letter-spacing:.22em;color:#edc78b;font-weight:500}.eyebrow{display:flex;align-items:center;gap:10px}.eyebrow span{width:25px;height:1px;background:#e5b66b80}.intro h1{font-family:Cormorant Garamond,serif;font-weight:600;font-size:clamp(60px,8vw,126px);line-height:.85;letter-spacing:.035em;margin:26px 0 0}.intro h1 span{color:#e9c68a}.script{font:italic 400 clamp(25px,3vw,43px) "Cormorant Garamond",serif;color:#dfc8a7;letter-spacing:.04em;margin:4px 0 28px}.lede{font-size:clamp(14px,1.1vw,17px);line-height:1.8;color:#e1d9dc;margin:0 0 26px}.primary{border:1px solid #e5b66b;background:linear-gradient(120deg,#e8c58d,#c79a60);color:#171321;min-height:49px;padding:0 20px;font-size:13px;font-weight:700;letter-spacing:.07em;box-shadow:0 0 28px #e9ad5b29;transition:transform .2s,box-shadow .2s}.primary span{margin-left:30px;font-size:17px}.primary:hover{transform:translateY(-2px);box-shadow:0 0 30px #e9ad5b64}.moon-action{margin-left:15px;background:none;border:0;color:#e4c88f;font-size:23px}.chapter{top:28%;left:7.2%;max-width:360px}.chapter-index span{padding:0 8px;opacity:.5}.chapter h1{font:600 clamp(44px,5vw,74px) "Cormorant Garamond","Noto Sans TC",serif;line-height:1.15;margin:20px 0}.scene-path .chapter h1,.scene-sky .chapter h1,.scene-gift .chapter h1{font-size:clamp(36px,4vw,60px)}.finale.opened{max-width:440px;top:25%}.finale .wish{line-height:1.9;color:#e8dece;font-size:15px;max-width:370px}.card-label{color:#eac78d;font-size:11px;letter-spacing:.16em;margin-top:20px}.final-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:25px}.secondary{background:#17152daa;border:1px solid #e5b66b88;color:#f1d1a1;padding:12px 18px}.interactions{position:absolute;z-index:5;right:clamp(28px,5vw,75px);bottom:80px;max-width:460px;text-align:right}.interactions-head{display:flex;justify-content:flex-end;align-items:center;gap:16px;color:#ddbc86;font-size:9px;letter-spacing:.18em}.interactions-head button{border:0;background:none;color:#c4bacd;font-size:11px;text-decoration:underline;letter-spacing:0}.chips{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:7px;margin-top:10px}.chips button{min-height:44px;border:1px solid #d7bf9a4d;color:#f2e5d8;background:#171529d9;padding:8px 13px;font-size:12px}.chips button:hover{background:#4c395c;border-color:#e5b66b}.bottom{bottom:max(32px,env(safe-area-inset-bottom));color:#bdb4c4;font-size:10px;letter-spacing:.12em}.progress{display:flex;align-items:center;gap:9px}.progress span.active{color:#f5d294}.progress i{display:block;width:27px;height:1px;background:#d5b88a55}.bottom-right span{color:var(--gold)}.message,.notice{position:absolute;z-index:8;top:14%;right:5%;max-width:min(350px,85vw);background:#252035ee;border:1px solid #d6b98688;padding:15px 18px;color:#f2e2c6;box-shadow:0 15px 50px #0005;font-size:14px;line-height:1.7}.message span{color:var(--gold)}.message button,.notice button{border:0;background:none;color:#ddd;font-size:20px;margin-left:12px}.transition{position:absolute;z-index:7;inset:0;background:radial-gradient(circle,#d29d5c22,transparent 55%);pointer-events:none;display:flex;justify-content:center;align-items:center;animation:glow 2.6s ease both}.transition span{font-size:45px;color:#f6d79c;opacity:.65}.transition button{position:absolute;right:5%;top:90px;pointer-events:auto;background:#1c1931;border:1px solid #e5b66b;color:#fff;padding:12px}.fallback-art{z-index:1;pointer-events:none}.fallback-moon{position:absolute;right:17%;top:18%;font:150px serif;color:#f0dbac;text-shadow:0 0 70px #e9c488}.fallback-symbol{position:absolute;right:29%;top:42%;font:180px serif;color:#a88bb1;text-shadow:0 0 50px #bd94d9}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes arrive{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes glow{0%,to{opacity:0}35%,75%{opacity:1}}@media(max-width:700px){.frame{inset:8px}.topbar,.bottom{left:20px;right:20px}.topbar{top:max(20px,env(safe-area-inset-top))}.wordmark{font-size:15px}.wordmark small{font-size:7px;margin-left:19px}.top-actions{gap:5px}.top-actions button,.quality select{height:38px;min-width:38px;padding:0 6px}.quality select{max-width:62px}.intro,.chapter{left:24px;right:24px;width:auto;max-width:none;top:19%}.intro h1{font-size:clamp(54px,14vw,90px);margin-top:18px}.script{font-size:29px;margin-bottom:15px}.eyebrow{font-size:9px}.chapter h1{margin:12px 0}.chapter .lede{max-width:270px}.chapter .primary{min-height:44px}.interactions{left:20px;right:20px;bottom:max(70px,calc(env(safe-area-inset-bottom) + 60px));max-width:none}.chips{gap:5px}.chips button{font-size:11px;padding:7px 9px;background:#171529ee}.interactions-head{font-size:8px}.bottom{bottom:max(24px,env(safe-area-inset-bottom));font-size:9px}.progress i{width:12px}.world canvas{opacity:.8}.finale.opened{top:20%}.scene-gift .chapter h1{font-size:35px}.message,.notice{top:auto;bottom:170px;right:20px}.fallback-moon{right:15%;top:28%;font-size:110px}.fallback-symbol{top:48%;right:25%;font-size:130px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.top-actions button,.quality select{min-height:44px;min-width:44px}.interactions-head button,.wordmark{min-height:44px}@media(max-width:700px){.intro h1{font-size:clamp(35px,10.7vw,70px);letter-spacing:0}}.back-moon{transform:translate(calc(var(--parallax-x, 0px) * -.5),calc(var(--parallax-y, 0px) * -.5))}.mist-one{transform:translate(var(--parallax-x, 0px),var(--parallax-y, 0px))}.mist-two{transform:translate(calc(var(--parallax-x, 0px) * 1.5),calc(var(--parallax-y, 0px) * 1.5))}.collect-flight{pointer-events:none;position:absolute;z-index:8;left:50%;top:55%;color:#ffe0a1;font-size:24px;text-shadow:0 0 16px #ffc46a;animation:collect 1.1s ease-in forwards}@keyframes collect{to{left:90%;top:94%;opacity:0;transform:scale(.2)}}.skip-sky{position:absolute;z-index:8;right:5%;top:90px;background:#1c1931;border:1px solid #e5b66b;color:#fff;padding:12px;min-height:44px}.backdrop:before{content:"";position:absolute;inset:-2%;background-image:linear-gradient(90deg,#070a1375,#070a1314 58%,#070a130f),linear-gradient(0deg,rgba(7,10,19,.22),transparent 48%),image-set(url(/assets/backdrops/moonlit-garden.webp) 1x);background-position:center;background-size:cover;opacity:1;transform:translate(calc(var(--parallax-x, 0px) * -.35),calc(var(--parallax-y, 0px) * -.35));transition:opacity 1s ease}.horizon{opacity:.4}@media(max-width:700px){.backdrop:before{background-image:linear-gradient(180deg,#070a137a,#070a131a 45%,#070a134d),image-set(url(/assets/backdrops/moonlit-garden-mobile.webp) 1x);background-position:58% center}}.scene-sky .backdrop:before{background-image:linear-gradient(90deg,#070a1375,#070a1314 58%,#070a130f),linear-gradient(0deg,rgba(7,10,19,.22),transparent 48%),url(/assets/backdrops/observatory.webp)}.scene-gift .backdrop:before{background-image:linear-gradient(90deg,#070a1375,#070a1314 58%,#070a130f),linear-gradient(0deg,rgba(7,10,19,.22),transparent 48%),url(/assets/backdrops/gift-pavilion.webp)}@media(max-width:700px){.scene-sky .backdrop:before{background-image:linear-gradient(180deg,#070a137a,#070a131a 45%,#070a134d),url(/assets/backdrops/observatory-mobile.webp)}.scene-gift .backdrop:before{background-image:linear-gradient(180deg,#070a137a,#070a131a 45%,#070a134d),url(/assets/backdrops/gift-pavilion-mobile.webp)}}html,body{overflow-x:hidden}.music-credit{position:absolute;bottom:25px;left:0;max-width:min(340px,82vw);letter-spacing:0;color:#e4cda8;font-size:11px;text-shadow:0 2px 8px #080715}.music-credit summary{cursor:pointer;min-height:44px;display:flex;align-items:center;list-style:none}.music-credit summary::-webkit-details-marker{display:none}.music-credit summary:focus-visible{outline:2px solid #f6ca7e;outline-offset:3px}.music-credit div{position:absolute;bottom:43px;left:0;width:max-content;max-width:min(340px,82vw);padding:12px 14px;background:#171529f5;border:1px solid #d6b98688;line-height:1.7;color:#f2e7da}.music-credit a{color:#f2ce91}.music-credit a:focus-visible{outline:2px solid #f6ca7e}.music-credit{position:fixed;left:clamp(28px,5vw,75px);top:max(72px,calc(env(safe-area-inset-top) + 48px));bottom:auto;z-index:8}.music-credit div{top:43px;bottom:auto}@media(max-width:700px){.music-credit{left:20px}}.transition.entry-transition{background:transparent;animation:none}.entry-transition span{display:none}.entry-transition:before,.entry-transition:after{content:"";position:absolute;inset:0;pointer-events:none}.entry-transition:before{background:radial-gradient(ellipse at 50% 48%,rgba(255,217,145,.22),transparent 48%);opacity:0;animation:gate-light 4.2s ease-in-out both}.entry-transition:after{background:radial-gradient(ellipse at center,transparent 12%,rgba(7,8,18,.75) 100%);opacity:0;animation:gate-veil 4.2s ease-in-out both}.entry-transition button{z-index:2}@keyframes gate-light{0%,20%,to{opacity:0}55%,75%{opacity:1}}@keyframes gate-veil{0%,55%,to{opacity:0}84%{opacity:.85}}.interactions{pointer-events:none}.interactions button{pointer-events:auto}.experience:after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(ellipse at 50% 46%,transparent 52%,rgba(5,6,14,.26) 82%,rgba(5,6,14,.5) 100%)}@media(min-width:701px){.backdrop:before{filter:blur(.7px) saturate(1.05)}}@media(prefers-reduced-motion:reduce){.backdrop:before{transition:none}}
