:root{color-scheme:light;font-family:system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;color:#6a4554;background:#fff2ef}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 15% 15%,#ffe1e9,transparent 55%),radial-gradient(ellipse at 90% 90%,#ffdfbc,transparent 55%),#fff6f1;min-height:100vh;min-height:100svh}button{font:inherit;cursor:pointer;border:1px solid #eacbd2;border-radius:999px;padding:9px 18px;color:#805469;background:#fff9f7}button:hover{background:#ffe8ed}button:focus-visible{outline:3px solid #a85c7c;outline-offset:4px}button:disabled{opacity:.4;cursor:default}[hidden]{display:none!important}/* A single portrait playfield on every screen; outer space never expands Unity's camera. */
#game-shell{--play-height:calc(100vh - 48px - env(safe-area-inset-top) - env(safe-area-inset-bottom));--play-height:calc(100dvh - 48px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);width:100%;height:100vh;height:100dvh;margin:0 auto;display:flex;flex-direction:column;align-items:center;overflow:hidden}
header{height:48px;min-height:48px;width:100%;padding:0 18px;display:flex;align-items:center;justify-content:space-between}.brand{font-size:12px;letter-spacing:.2em;font-weight:800}.brand span{font-weight:400;opacity:.65}header button{font-size:12px;padding:5px 14px}
#game-stage{position:relative;flex:none;width:min(100%,calc(var(--play-height) * 9 / 16));height:auto;aspect-ratio:9 / 16;margin:auto 0;overflow:hidden;background:#fff5ef;box-shadow:0 8px 44px #9b60721a}
#unity-canvas{display:block;width:100%;height:100%;background:#fff5ef;touch-action:none;-webkit-touch-callout:none;user-select:none;outline:none}
#game-shell:fullscreen{max-width:none;background:#fff2ef}
#game-shell:-webkit-full-screen{max-width:none;background:#fff2ef}
#launch-panel{position:absolute;inset:0;display:grid;place-items:center;overflow:auto;padding:24px;background:radial-gradient(ellipse at 20% 20%,#ffe8ef,transparent 65%),radial-gradient(ellipse at 80% 80%,#ffebd4,transparent 60%),#fff8f4}.intro{width:min(100%,450px);text-align:center}.orbit{width:100px;height:90px;margin:0 auto 20px;position:relative}.orbit i{position:absolute;width:66px;height:66px;left:17px;top:12px;border:1px solid #efb9c8;border-radius:50%;box-shadow:0 0 0 10px #fff5f0,0 0 0 11px #f4d2d9;transform:rotate(-20deg)}.orbit span,.orbit b{position:absolute;z-index:1;color:#cf7b96;font-weight:400}.orbit span{font-size:50px;left:33px;top:4px}.orbit b{font-size:27px;left:7px;top:43px;color:#de9a64}.eyebrow{font-size:9px;letter-spacing:.18em;color:#b78392}h1{font-size:clamp(28px,7vw,42px);font-weight:800;letter-spacing:.06em;margin:15px 0 8px}.subtitle{font-size:14px;color:#a17784;margin:0 0 24px}.controls{font-size:12px;line-height:2;color:#a67c88}kbd{display:inline-block;min-width:22px;padding:0 5px;border:1px solid #ebccd4;border-bottom-width:3px;border-radius:5px;background:#fff;color:#9c627a;font:600 12px/20px inherit}.primary{display:block;width:min(100%,260px);margin:22px auto 16px;border:0;color:#fff;background:#c77d96;box-shadow:0 5px 0 #a85c76;padding:14px 22px;font-weight:700;font-size:16px}.primary:hover{background:#bd6f8a}.primary:active{transform:translateY(2px);box-shadow:0 3px 0 #a85c76}#status{font-size:12px;line-height:1.7;overflow-wrap:anywhere;color:#966c7b;min-height:22px}.sound-note{font-size:10px;color:#b38e97;line-height:1.7;margin:22px auto 0;max-width:280px}progress{display:block;width:min(100%,280px);height:9px;margin:28px auto 18px;border:0;border-radius:10px;accent-color:#c77d96;background:#efdbe0;overflow:hidden}progress::-webkit-progress-bar{background:#efdbe0}progress::-webkit-progress-value{background:#c77d96;border-radius:10px}#runtime-notice{position:fixed;left:16px;right:16px;bottom:calc(14px + env(safe-area-inset-bottom));max-width:600px;margin:auto;padding:12px 16px;background:#fff3ed;border:1px solid #e2bcc7;border-radius:12px;color:#825265;font-size:12px;overflow-wrap:anywhere;pointer-events:none}@media(max-height:520px){.orbit{display:none}.intro{max-width:560px}h1{font-size:25px;margin:8px}.eyebrow,.sound-note{display:none}.subtitle{margin-bottom:8px}.controls{margin:7px}.primary{margin:12px auto}.intro #status{margin:8px 0}#launch-panel{padding:12px}}
#failure-title{font-size:20px;line-height:1.5;font-weight:650;margin:24px 0 10px;color:#805469}
#launch-panel[data-state="failed"] .controls,#launch-panel[data-state="failed"] .subtitle,#launch-panel[data-state="failed"] .sound-note,#launch-panel[data-state="failed"] .eyebrow{display:none}
#launch-panel[data-state="failed"] #status{max-width:310px;margin:0 auto;font-size:14px;line-height:1.8;overflow-wrap:normal}
#launch-panel[data-state="failed"] #retry{margin-top:24px}

/* v011 — the same little universe extends beyond the portrait playfield.
   Only the two small decorative elements animate; no canvas readback, blur
   loop or second WebGL surface competes with the rhythm game. */
:root{color-scheme:dark;color:#efe2ee;background:#23233e}
body{background:#23233e}
#game-shell{position:relative;isolation:isolate;background:radial-gradient(ellipse at 47% 48%,#3d3456 0%,#292840 47%,#202138 100%)}
#game-shell:fullscreen,#game-shell:-webkit-full-screen{background:#23233e}
.sky-scene{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;user-select:none}
.sky-glow{position:absolute;inset:0;background:radial-gradient(ellipse at 15% 12%,#b77b9d29,transparent 43%),radial-gradient(ellipse at 91% 84%,#cf8f9b20,transparent 48%),radial-gradient(ellipse at 69% 36%,#77adb91c,transparent 30%),radial-gradient(ellipse at 50% 100%,#9389cd20,transparent 50%)}
.sky-stars{position:absolute;inset:0;opacity:.55;background-image:radial-gradient(1px 1px at 7% 23%,#fff0e5 95%,transparent),radial-gradient(1.5px 1.5px at 18% 68%,#eed5f0 95%,transparent),radial-gradient(1px 1px at 31% 13%,#d5e0ff 95%,transparent),radial-gradient(1px 1px at 83% 18%,#fff0e5 95%,transparent),radial-gradient(1.5px 1.5px at 92% 56%,#eed5f0 95%,transparent),radial-gradient(1px 1px at 72% 85%,#d5e0ff 95%,transparent);background-size:510px 410px}
.sky-orbits{position:absolute;inset:0;width:100%;height:100%;opacity:.8}
.sky-planet{position:absolute;left:calc(50% - 440px);top:22%;width:150px;height:auto;opacity:.68;transform:rotate(-12deg);animation:planet-drift 14s ease-in-out infinite}
.sky-spark{position:absolute;color:#f1d0cf;font-weight:300;line-height:1;text-shadow:0 0 18px #f3bac455;opacity:.55}
.spark-one{left:14%;bottom:23%;font-size:28px}.spark-two{right:14%;top:25%;font-size:39px;animation:star-breathe 7s ease-in-out infinite}.spark-three{right:25%;bottom:16%;font-size:14px}
.sky-caption{position:absolute;right:7.5%;bottom:10%;font-size:9px;line-height:2.3;letter-spacing:.32em;color:#d2bfd3;opacity:.36;text-align:right}.sky-caption span{letter-spacing:.23em}
header{position:relative;z-index:2;padding:0 24px;color:#f3dfe9}
.brand{font-size:11px;letter-spacing:.22em}.brand:before{content:'✦';font-size:14px;color:#e7bbc9;margin-right:10px}.brand span{opacity:.55}
header button{color:#ead7e8;background:#d6bdd90b;border-color:#e1c8e130;transition:background .18s,border-color .18s}header button:hover{background:#d6bdd91a;border-color:#e1c8e15c}button:focus-visible{outline:2px solid #f5cbdd;outline-offset:4px}
#game-stage{background:#25233f;box-shadow:0 0 0 1px #e6c3e32b,-18px 0 70px #99c4d41b,18px 0 70px #d29dcc20,0 18px 80px #09081940;z-index:1}
#unity-canvas{background:#25233f}
#launch-panel{color:#f6e5ef;background:radial-gradient(ellipse at 0 5%,#ac729631,transparent 60%),radial-gradient(ellipse at 100% 90%,#7297ba26,transparent 55%),linear-gradient(155deg,#32314d,#25253f 55%,#3a2f49)}
.intro{position:relative}.orbit i{border-color:#edc6d26b;box-shadow:0 0 0 10px #e4a6be06,0 0 0 11px #e4a6be26}.orbit span{color:#f4d4de;text-shadow:0 0 24px #f4b7d23b}.orbit b{color:#eabb9e}.eyebrow{color:#cfb1c9;font-size:8px}h1{font-weight:750;text-shadow:0 3px 25px #e9bfd51a}.subtitle{color:#c9b5ca}.controls{color:#bbaabe}kbd{color:#f0dae8;border-color:#c7a4c43d;background:#eed3e70b}.primary{background:#e5b2c7;color:#382d43;box-shadow:0 4px 0 #a77696,0 8px 35px #e4a6c21c}.primary:hover{background:#f0c3d6}.primary:active{box-shadow:0 2px 0 #a77696}#status{color:#bca9be}.sound-note{color:#998bA3}progress,progress::-webkit-progress-bar{background:#5b4863}progress{accent-color:#e5b2c7}progress::-webkit-progress-value{background:linear-gradient(90deg,#b8bbdf,#efbacb)}#failure-title{color:#f1d4e2}#runtime-notice{z-index:5;color:#f1dbe9;background:#342d44;border-color:#b490ae55}
@keyframes planet-drift{0%,100%{transform:translateY(0) rotate(-12deg)}50%{transform:translateY(-12px) rotate(-8deg)}}
@keyframes star-breathe{0%,100%{opacity:.35;transform:scale(.94)}50%{opacity:.65;transform:scale(1.04)}}
@media(min-width:900px){#game-shell{--play-height:calc(100vh - 68px - env(safe-area-inset-top) - env(safe-area-inset-bottom));--play-height:calc(100dvh - 68px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}#game-stage{margin:0 0 20px}}
@media(max-width:1100px){.sky-planet{left:8%;width:110px;top:25%}.sky-caption{font-size:8px;right:4%}.spark-two{right:9%}}
@media(max-width:760px){.sky-planet,.sky-orbits,.sky-caption,.sky-spark{display:none}.sky-stars{opacity:.2}header{padding:0 14px}#game-stage{box-shadow:0 0 0 1px #e6c3e319,0 0 44px #b0a3d015}}
@media(prefers-reduced-motion:reduce){.sky-planet,.sky-spark{animation:none}header button{transition:none}}
