:root{color-scheme:light;--blue:#427db6;--ink:#182b40;--cream:#fff2d4;--yellow:#ffe293;--stage-width:min(86vw,1180px);--stage-space:clamp(24px,4.5svh,52px)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--blue)}body{min-height:100svh;display:flex;flex-direction:column;justify-content:center;font-family:"Segoe Print","Comic Sans MS","Microsoft YaHei",sans-serif;color:var(--cream)}button{font:inherit}button:focus-visible,.character:focus-visible{outline:3px solid #ffe16c;outline-offset:6px}button{cursor:pointer}button:disabled{cursor:default;opacity:.65}
.homepage{display:flex;flex-direction:column;align-items:center;padding:var(--stage-space) 0 clamp(32px,5svh,60px);background:radial-gradient(ellipse at top,#5c91c0,transparent 80%),#427db6}
.scene{position:relative;width:var(--stage-width);aspect-ratio:1672/941;isolation:isolate;overflow:hidden;border-radius:10px;background:#fff3d8;box-shadow:0 12px 40px #1c49703d;container-type:inline-size}
.scene-background{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:-2;user-select:none;pointer-events:none}
.fallback-title{position:absolute;top:16%;left:7%;font-size:clamp(30px,5.6vw,98px);font-weight:950;line-height:1.1;color:#171d25;letter-spacing:.02em;transform:rotate(-4deg);margin:0}
.has-background .fallback-title{width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.mobile-title{display:none}.moon{position:absolute;left:55.8%;top:21.1%;width:38.8%;height:auto;z-index:-1;overflow:visible;pointer-events:none}.moon-shadow{fill:#292b2e;stroke:#494341;stroke-width:2.2}
.character{position:absolute;left:54.7%;top:32.3%;width:29.67%;max-width:452px;aspect-ratio:452/494;touch-action:none;outline:none;user-select:none;-webkit-user-select:none}
.character-poster,.character-fixed,.character-sprite{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.character-fixed{display:none}.has-motion .character-fixed{display:block}
.character-sprite{display:none;background-repeat:no-repeat}.has-motion .character-sprite{display:block}.has-motion .character-poster{visibility:hidden}
.character-focus{display:none;position:absolute;right:-8%;bottom:38%;font-size:20px;line-height:1.5;text-align:center;background:#fff3d8ed;color:#2c527b;border:2px dashed #2c527b;border-radius:50%;padding:12px}.character:focus-visible .character-focus{display:block}
.loading-panel{position:absolute;left:15.55%;top:min(67%,calc(100% - 180px));width:26.65%;color:#fff9eb}
.loading-heading{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:0 5px;margin-bottom:10px;font-weight:800;font-style:italic;font-size:clamp(14px,1.65cqw,29px);letter-spacing:.02em;white-space:nowrap}
.loading-heading #progressNumber{font-size:1.2em;font-variant-numeric:tabular-nums}
.loading-track{height:clamp(25px,3.24cqw,55px);overflow:hidden;border:4px solid #fff9e8;border-radius:42px 45px 40px 42px/48px 45px 42px 45px;background:#ffe398;box-shadow:0 2px 0 #f8ecd34d,inset 0 1px 3px #fff9e8}
.loading-fill{display:block;height:100%;width:0%;background:#467fb7;border-radius:30px 26px 25px 28px;box-shadow:inset 0 1px 1px #8fbae1}
.loading-caption{margin:12px 0 0;font-size:clamp(12px,1.35cqw,24px);font-weight:700;letter-spacing:.04em;white-space:nowrap;text-align:center}
.control-dock{width:min(1280px,94%);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 28px;padding:18px 0 16px}
.welcome-note{display:flex;align-items:center;gap:13px}.welcome-note p{margin:0 0 4px;font-size:15px;font-weight:700;letter-spacing:.02em}.welcome-note span:not(.tiny-star){font-size:12px;opacity:.85}.tiny-star{color:var(--yellow);font-size:30px;transform:rotate(10deg)}
.actions{display:flex;gap:10px}.actions button{border:1.5px solid #fff2d4ad;background:transparent;color:var(--cream);padding:10px 17px;border-radius:14px 10px 15px 11px;line-height:1.2;font-size:13px;min-height:40px;transition:background .15s,color .15s}.actions button:first-child{background:var(--cream);border-color:var(--cream);color:#2d5f93;font-weight:700;transform:rotate(-1deg)}.actions button:hover{background:#fff2d426}.actions button:first-child:hover{background:var(--yellow)}.actions button[aria-pressed=true]{background:#254f7c}
.motion-status{width:100%;margin:0;text-align:center;font-size:11px;letter-spacing:.035em;opacity:.78}.no-js .actions{display:none}.noscript-note{font-size:14px;text-align:center}
@media(max-width:700px){
 .homepage{padding:20px 0 28px}.scene{width:min(calc(100% - 32px),420px);aspect-ratio:390/720;min-height:600px}
 .scene-background{object-fit:cover;object-position:right bottom}.mobile-title{display:block;position:absolute;top:2%;left:1%;width:98%;height:auto;overflow:hidden;pointer-events:none;mask-image:linear-gradient(to right,transparent,#000 5%,#000 95%,transparent),linear-gradient(to bottom,transparent,#000 10%,#000 90%,transparent);mask-composite:intersect}
 .fallback-title{top:7%;left:7%;font-size:13vw}.moon{left:50%;top:23%;width:86%;transform:translateX(-50%)}.character{left:50%;top:25%;width:64%;height:auto;max-width:452px;transform:translateX(-50%)}
 .loading-panel{left:13%;top:auto;bottom:4%;width:74%}.loading-heading{font-size:clamp(14px,4.4cqw,17px);margin-bottom:8px;padding:6px 10px;background:#326da5;border-radius:10px 8px 11px 7px;box-shadow:0 1px 0 #fff2d43d}.loading-track{height:37px;border-width:3px}.loading-caption{font-size:clamp(12px,3.6cqw,14px);margin-top:12px;text-align:center;background:#326da5;border-radius:7px}
 .control-dock{padding:15px 0 18px;justify-content:center;gap:14px}.welcome-note{text-align:center;gap:9px}.welcome-note p{font-size:14px}.welcome-note span:not(.tiny-star){font-size:11px}.tiny-star{font-size:23px}.actions button{font-size:12px;padding:10px 15px}.motion-status{font-size:10px}.character-focus{right:-8%;font-size:15px;padding:7px}
}
@media(max-width:360px){.loading-heading{font-size:15px}.loading-caption{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.character-focus{display:none!important}}
