@font-face{font-family:StarSerif;src:local('Noto Serif CJK SC'),local('Source Han Serif SC'),local('方正小标宋简体'),local('STSong'),local('SimSun');font-display:swap}
:root{color-scheme:dark;--ink:#050710;--cream:#faebdc;--gold:#dfb88a;--soft:#af9f98;--line:rgba(233,205,182,.19)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--ink);color:var(--cream);font-family:system-ui,-apple-system,'Microsoft YaHei',sans-serif}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:6px}button:disabled{cursor:wait}#experience{position:relative;width:100%;height:100%;height:100svh;min-height:360px;isolation:isolate}#scene,#wishes,.vignette{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#scene canvas{width:100%;height:100%;display:block}#wishes{z-index:2}.vignette{z-index:3;background:radial-gradient(ellipse at center,transparent 30%,rgba(2,3,9,.42) 100%);box-shadow:inset 0 0 160px 20px rgba(0,0,0,.2)}.topbar{position:absolute;z-index:10;top:0;left:0;width:100%;padding:max(26px,env(safe-area-inset-top)) 42px;display:flex;align-items:center;justify-content:space-between}.wordmark{display:flex;align-items:center;gap:12px;color:#e3cfbc;text-decoration:none;font-size:14px;letter-spacing:.22em}.brand-star{font-size:30px;line-height:1;color:#e8b885}.top-actions{display:flex;gap:8px}.icon-button{display:grid;place-items:center;width:44px;height:44px;background:rgba(9,10,19,.3);border:1px solid transparent;border-radius:50%;color:#d5c3b5;transition:background .25s,border .25s}.icon-button:hover{border-color:var(--line);background:rgba(224,188,150,.1)}.icon-button svg{width:20px;height:20px}.sound-off{display:none}.muted .sound-waves{display:none}.muted .sound-off{display:block}.intro{position:absolute;z-index:5;left:12%;top:50%;transform:translateY(-45%);transition:opacity 1.2s,transform 1.2s;max-width:580px}.intro.leaving{opacity:0;transform:translateY(-49%);pointer-events:none}.eyebrow{font-size:12px;line-height:1.6;letter-spacing:.28em;color:#c59d76;margin:0 0 24px}.intro h1{font-family:StarSerif,'Songti SC','SimSun',serif;font-weight:400;font-size:clamp(52px,5.6vw,88px);line-height:1.28;letter-spacing:.07em;margin:0;text-shadow:0 4px 45px rgba(241,159,126,.15)}.punctuation{margin-left:-.08em}.title-star{position:relative;top:-.45em;margin-left:.24em;font-size:.39em;color:#f0c49b}.intro-line{margin:28px 0 38px;font-size:16px;letter-spacing:.18em;color:#baaaa4;line-height:1.9}.start-button{min-width:212px;padding:17px 23px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-radius:4px;border:1px solid rgba(228,185,144,.55);background:linear-gradient(120deg,rgba(129,76,44,.17),rgba(181,121,82,.1));box-shadow:0 0 40px rgba(200,143,98,.035),inset 0 0 24px rgba(200,143,98,.045);font-size:16px;letter-spacing:.2em;transition:background .3s,transform .3s,box-shadow .3s}.start-button:not(:disabled):hover{background:rgba(196,135,89,.2);box-shadow:0 0 35px rgba(211,149,103,.13);transform:translateY(-2px)}.button-spark{font-size:14px;color:#e4b583}.start-arrow{font-size:22px;color:#d4ad86}.small-note{font-size:12px;letter-spacing:.1em;color:#837c7c;margin:18px 0 0;min-height:20px}.chapter{position:absolute;z-index:5;left:50%;bottom:112px;transform:translateX(-50%);display:flex;gap:14px;align-items:center;white-space:nowrap;font-size:14px;letter-spacing:.17em;text-shadow:0 2px 15px #000;opacity:0;transition:opacity 1s}.chapter.visible{opacity:.85}#chapter-number{color:#c99c70;font-size:11px;letter-spacing:.12em}#chapter-text{color:#e1cdbd}.transport{position:absolute;z-index:12;bottom:max(25px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:15px;width:min(560px,calc(100% - 40px));padding:5px 10px;border:1px solid rgba(229,198,172,.12);border-radius:40px;background:rgba(5,7,16,.42);backdrop-filter:blur(14px)}[hidden]{display:none!important}.time{font-variant-numeric:tabular-nums;font-size:12px;color:#a69b95;white-space:nowrap}#seek{--progress:0%;appearance:none;min-width:30px;flex:1;height:16px;background:transparent;cursor:pointer;margin:0}#seek::-webkit-slider-runnable-track{height:2px;background:linear-gradient(to right,#e0b58d var(--progress),rgba(232,214,195,.2) var(--progress));border-radius:2px}#seek::-webkit-slider-thumb{appearance:none;height:8px;width:8px;border-radius:50%;background:#edc9a3;margin-top:-3px;box-shadow:0 0 10px #ddb08950}#seek::-moz-range-track{height:2px;background:#5b5050}#seek::-moz-range-progress{height:2px;background:#e0b58d}#seek::-moz-range-thumb{border:0;height:8px;width:8px;background:#edc9a3}.restart{font-size:25px}.ending{position:absolute;z-index:6;left:50%;transform:translateX(-50%);bottom:135px;text-align:center;width:90%;animation:arrive 2s both}.ending .eyebrow{font-size:10px;margin:0 0 14px}.ending h2{font-family:StarSerif,'SimSun',serif;font-weight:400;font-size:clamp(23px,2.8vw,38px);letter-spacing:.12em;margin:0 0 19px;line-height:1.5}.quiet-button{border:0;border-bottom:1px solid #a27b5e;background:transparent;padding:9px 3px;color:#dcc0a6;font-size:14px;letter-spacing:.14em}.quiet-button span{font-size:20px;padding-right:6px}.mobile-break{display:none}.error{position:absolute;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#080a14;text-align:center;padding:24px}.error h2{font-weight:400}.error p{color:#baaaa4;line-height:1.7}.toast{position:absolute;z-index:40;bottom:105px;left:50%;transform:translateX(-50%);border:1px solid var(--line);background:#11121df2;border-radius:10px;padding:12px 20px;text-align:center;font-size:14px;max-width:85%;width:max-content}.playing .topbar{opacity:.62;transition:opacity .4s}.playing .topbar:hover{opacity:1}@keyframes arrive{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
@media(max-width:700px){.topbar{padding:18px 20px}.wordmark{font-size:12px;gap:8px}.brand-star{font-size:26px}.top-actions{gap:0}.intro{left:9%;top:auto;bottom:15%;transform:none;width:82%}.intro.leaving{transform:translateY(-15px)}.intro h1{font-size:clamp(45px,11vw,64px)}.intro .eyebrow{font-size:10px;letter-spacing:.19em;margin-bottom:18px}.intro-line{font-size:14px;letter-spacing:.1em;margin:19px 0 26px}.start-button{padding:15px 20px;min-width:200px}.small-note{font-size:11px}.transport{gap:10px;padding:3px 6px;bottom:max(18px,env(safe-area-inset-bottom))}.transport .icon-button{width:36px;height:36px}.chapter{bottom:91px;font-size:12px;gap:10px}.ending{bottom:115px}.ending h2{font-size:25px}.ending .eyebrow{font-size:9px}.vignette{box-shadow:inset 0 0 80px 0 rgba(0,0,0,.2)}}
@media(max-height:520px){.topbar{padding:8px 20px}.intro{top:48%;bottom:auto;transform:translateY(-40%)}.intro h1{font-size:40px}.intro-line{margin:12px 0 15px}.intro .eyebrow{margin-bottom:10px}.small-note{margin-top:8px}.transport{bottom:8px}.chapter{bottom:70px}.ending{bottom:78px}.ending h2{font-size:23px;margin-bottom:7px}.ending .eyebrow{margin-bottom:6px}}

/* A moonlit illustrated opening. These layers dissolve before the wish rain. */
.intro-atmosphere{position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 70% 43%,#6dbea62c 0%,#154e4918 38%,transparent 68%),linear-gradient(165deg,#10272f9c,#09171e80 60%,#112c2380);transition:opacity 1.5s,visibility 1.5s}
.intro-art{position:absolute;z-index:4;right:3%;top:50%;width:53%;height:84%;transform:translateY(-50%);pointer-events:none;transition:opacity 1.2s,visibility 1.2s}
.intro-art img{display:none}
#intro-cat-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:7;pointer-events:none;transition:opacity .85s,visibility .85s}
.playing #intro-cat-canvas{opacity:0;visibility:hidden}
.cat-starting .intro h1,.cat-starting .intro-line,.cat-starting .intro .eyebrow{opacity:.35;transition:opacity .6s}
.cat-starting .intro .start-button:disabled{background:#c7e5c7;color:#1d3a36;border-color:#e4f5d8;cursor:default}
.intro .start-button.cat-pressed{transform:translateY(4px) scale(.965);background:#ecffdc;box-shadow:0 0 0 8px #c4efcf20,0 0 60px #a8f5c866;transition:transform .15s,background .15s,box-shadow .2s}
.playing .intro-art,.playing .intro-atmosphere{opacity:0;visibility:hidden}
.playing .intro-art img{animation-play-state:paused}
body:not(.playing) .wordmark{color:#d6f4e5}
body:not(.playing) .brand-star{color:#ade1c6}
body:not(.playing) .top-actions .icon-button{color:#c3dfd7;background:#233e4133}
.intro{left:11%;max-width:570px;transform:translateY(-44%);transition:opacity 1.2s}
.intro.leaving{transition:opacity 1.2s,transform 1.2s}
.intro .eyebrow{display:flex;align-items:center;gap:10px;color:#aad7c4;letter-spacing:.16em;font-size:13px;margin-bottom:25px}
.intro-dot{width:6px;height:6px;flex:none;border-radius:50%;background:#bce4bd;box-shadow:0 0 12px #a8f5c899}
.intro h1{font-family:'Microsoft YaHei','PingFang SC',system-ui,sans-serif;font-weight:600;font-size:clamp(50px,5.1vw,82px);line-height:1.35;letter-spacing:.035em;color:#f1f7e9;text-shadow:0 4px 30px #8ae6c01c}
.intro .title-star{color:#c5e4b9;font-weight:400}
.intro-line{font-size:15px;line-height:1.9;color:#b1c8c2;letter-spacing:.1em;margin:24px 0 30px}
.intro .start-button{min-width:222px;border-radius:40px;background:#c7e5c7;color:#1d3a36;border:1px solid #e4f5d8;box-shadow:0 5px 28px #70bca91c;font-weight:600;letter-spacing:.18em;padding:16px 24px}
.intro .start-button:disabled{background:#a8c3b8;color:#435d55;border-color:#b3d1c3}
.intro .start-button:not(:disabled):hover{background:#e2f3d7;box-shadow:0 8px 32px #9ad2b633;transform:translateY(-3px)}
.intro .button-spark,.intro .start-arrow{color:#355e4b}
.intro .small-note{color:#9cb2ac;letter-spacing:.08em;margin-top:17px}
@media(max-width:1000px) and (min-width:701px){.intro{left:7%}.intro-art{right:-2%;width:55%}.intro h1{font-size:56px}.intro .eyebrow{font-size:11px}}
@media(max-width:700px){
  .intro-art{top:8%;right:3%;width:94%;height:44%;transform:none}
  .intro-atmosphere{background:radial-gradient(ellipse at 50% 28%,#6dbea62e,transparent 62%),linear-gradient(#10272f9c,#08151ec0)}
  .intro{left:9%;top:auto;bottom:max(7%,28px);width:82%;transform:none;text-align:center}
  .intro .eyebrow{justify-content:center;font-size:10px;letter-spacing:.12em;margin-bottom:14px}
  .intro h1{font-size:clamp(38px,10vw,52px);line-height:1.26;letter-spacing:.05em}
  .intro h1 br{display:none}
  .intro .title-star{display:none}
  .intro-line{font-size:13px;margin:17px 0 23px;line-height:1.8;letter-spacing:.06em}
  .intro .start-button{margin-inline:auto;min-width:215px;padding:15px 23px}
  .intro .small-note{font-size:10px;margin-top:15px}
}
@media(max-width:700px) and (max-height:700px){.intro-art{top:7%;height:41%}.intro{bottom:5%}.intro h1{font-size:34px}.intro .eyebrow{margin-bottom:9px}.intro-line{margin:12px 0 17px}.intro .small-note{margin-top:12px}}
@media(max-height:520px) and (min-width:701px){.intro{left:9%;top:51%;transform:translateY(-45%)}.intro h1{font-size:38px}.intro .eyebrow{font-size:10px;margin-bottom:10px}.intro-line{font-size:12px;margin:10px 0 14px}.intro .start-button{padding:11px 21px;min-width:190px}.intro .small-note{margin-top:10px;font-size:10px}.intro-art{right:8%;width:43%;height:90%;top:52%}}
@media(prefers-reduced-motion:reduce){.intro-art img{animation:none}.intro-art,.intro-atmosphere,.intro{transition:opacity .3s}.start-button{transition:none}}
