:root{color-scheme:dark;font-family:Songti SC,"Noto Serif CJK SC",STSong,serif;color:#f7ecd2;background:#07110e;font-synthesis:none;--app-height: 100dvh;--paper: #eee2c4;--ink: #26382f;--gold: #e3c27e;--line: rgba(238, 213, 159, .25);--panel: rgba(7, 17, 14, .9)}*{box-sizing:border-box}html,body,#app{width:100%;min-width:320px;min-height:100%;margin:0}body{min-height:var(--app-height);overflow:hidden;overscroll-behavior:none;background:#07110e;-webkit-tap-highlight-color:transparent}button,textarea{font:inherit}button{min-width:44px;min-height:44px;color:inherit}button:focus-visible,textarea:focus-visible,canvas:focus-visible{outline:3px solid #ffe0a0;outline-offset:3px}button[hidden],[hidden]{display:none!important}.experience{position:relative;isolation:isolate;width:100%;height:var(--app-height);min-height:560px;overflow:hidden;background:#07110e}.ambient-canvas,.vignette{position:fixed;inset:0;width:100%;height:100%;pointer-events:none}.ambient-canvas{z-index:-3}.vignette{z-index:30;box-shadow:inset 0 0 110px #000000ad}.topbar{position:relative;z-index:40;display:grid;grid-template-columns:minmax(84px,1fr) auto minmax(84px,1fr);align-items:center;gap:10px;min-height:62px;padding:max(8px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left));border-bottom:1px solid var(--line);background:linear-gradient(180deg,#050d0af7,#050d0ab8);backdrop-filter:blur(14px)}.brand-lockup{display:grid;align-content:center;min-width:0}.brand-lockup .brand-en{overflow:hidden;color:#b99c66;font:7px/1.3 ui-monospace,monospace;letter-spacing:.18em;white-space:nowrap}.brand-lockup strong{overflow:hidden;font-size:13px;font-weight:500;letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap}.page-progress{display:flex;align-items:flex-start;justify-content:center;gap:6px}.page-dot{display:grid;justify-items:center;gap:2px;color:#ecdab07a;font:8px/1 ui-monospace,monospace}.page-dot i{display:grid;place-items:center;width:20px;height:20px;border:1px solid rgba(226,198,137,.32);border-radius:50%;font-style:normal}.page-dot b{font-weight:400;white-space:nowrap}.page-dot.is-active{color:#ffe5ad}.page-dot.is-active i{border-color:#e5c27b;background:#e2be752e;box-shadow:0 0 18px #e9c37742}.page-dot.is-complete i{color:#13251c;border-color:#d9bc7d;background:#d9bc7d}.page-dot.is-skipped i{color:#cbb998;background:#cbb9982e}.top-actions{display:flex;justify-content:flex-end;gap:6px}.icon-button{border:1px solid rgba(226,203,151,.28);border-radius:999px;color:#e8d9b7;background:#08130fad;font-size:11px;cursor:pointer}.sound-button{width:44px;font-size:18px}.scene-viewport{position:relative;z-index:2;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:10px;height:calc(var(--app-height) - 62px);padding:10px max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}.stage-shell{position:relative;width:min(100%,720px);min-height:0;margin:0 auto;overflow:hidden;border:1px solid rgba(237,210,149,.3);border-radius:18px 18px 8px 8px;background:#050d0ab8;box-shadow:0 20px 55px #0000005c,inset 0 0 45px #0000004d}.stage-shell:before{content:"";position:absolute;z-index:20;inset:0;border:8px solid transparent;border-top-color:#86242bb8;border-inline-color:rgba(101,28,33,.46);pointer-events:none}.scene-art{position:absolute;inset:0;overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(228,196,128,.42) transparent;opacity:0;transform:translateY(8px) scale(.992);transition:opacity .42s ease,transform .52s cubic-bezier(.22,1,.36,1)}.scene-art.is-entered{opacity:1;transform:none}.scene-art.is-leaving{opacity:0;transform:translateY(-6px) scale(.995)}.story-panel{position:relative;width:min(100%,720px);min-height:192px;max-height:244px;margin:0 auto;overflow:auto;padding:13px 14px 12px;border:1px solid rgba(233,209,157,.24);border-radius:8px 8px 15px 15px;background:var(--panel);box-shadow:0 14px 34px #00000042;backdrop-filter:blur(16px)}.scene-heading{color:#c9aa6f;font:9px/1.3 ui-monospace,monospace;letter-spacing:.17em;text-transform:uppercase}.subtitle-speaker{margin-top:7px;color:#edcf8f;font-size:11px}.subtitle-copy{min-height:46px;margin:4px 0 8px;color:#fff3d7;font-size:clamp(14px,4vw,17px);line-height:1.52;white-space:pre-line}.interaction-guide{display:flex;align-items:center;gap:9px;min-height:40px;padding:7px 9px;border:1px solid rgba(231,197,127,.24);border-radius:8px;background:#d3b26e14}.guide-gesture{flex:0 0 auto;padding:5px 7px;border-radius:5px;color:#1b2d23;background:#ddbd79;font:10px/1 ui-monospace,monospace;letter-spacing:.06em}.guide-copy{color:#eadcbf;font-size:12px;font-weight:400;line-height:1.4}.story-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:7px}.assist-button,.quiet-action,.tool-text{border:1px solid rgba(231,207,158,.32);border-radius:999px;color:#dbcba9;background:#ffffff0a;font-size:11px;cursor:pointer}.assist-button{flex:0 0 auto;padding-inline:13px}.assist-button.is-emphasized{border-color:#d9b96f;color:#ffe1a4;animation:soft-pulse 1.4s ease infinite}.primary-action{min-height:48px;padding:0 24px;border:1px solid #e6ca8b;border-radius:999px;color:#17271f;background:linear-gradient(180deg,#f3d99d,#cfa85f);box-shadow:0 9px 28px #04090757,inset 0 1px #ffffff75;font-size:14px;font-weight:600;cursor:pointer}.primary-action:active{transform:translateY(1px) scale(.99)}.primary-action.compact{min-height:44px;padding-inline:17px;font-size:12px}.primary-action:disabled,.quiet-action:disabled{opacity:.46;cursor:default}.scene-status{min-height:18px;margin:8px 0;color:#e7d6b4;font-size:11px;line-height:1.4}.full-photo,.memory-photo img,.galaxy-photo img,.keepsake-photo{display:block;width:100%;height:100%}.memory-photo{position:relative;min-width:0;min-height:0;margin:0;overflow:hidden;border:6px solid #e7d9b8;background:#18251e;box-shadow:0 14px 32px #00000052}.memory-photo img{object-fit:contain}.memory-photo figcaption{position:absolute;inset:auto 0 0;padding:8px 7px;color:#fff1cf;text-align:center;background:linear-gradient(transparent,#020705db);font-size:10px}.intro-scene{display:grid;place-items:center;background:radial-gradient(circle at 52% 34%,rgba(224,185,105,.24),transparent 33%),linear-gradient(145deg,#16271e,#07100d 70%)}.intro-stage{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(120px,36%);grid-template-rows:1fr auto;align-items:center;gap:12px;width:min(92%,610px);height:88%}.program-book{position:relative;color:var(--ink);background:repeating-linear-gradient(0deg,rgba(42,58,47,.035) 0 1px,transparent 1px 5px),var(--paper);box-shadow:0 18px 42px #00000061,inset 0 0 40px #6a4a2517}.intro-book{align-self:stretch;display:flex;flex-direction:column;justify-content:center;min-height:250px;padding:clamp(22px,6vw,40px);border-left:8px solid #b39151;transform:rotate(-1.2deg)}.book-kicker,.book-date{font:9px/1.4 ui-monospace,monospace;letter-spacing:.18em}.intro-book h1{margin:12px 0 7px;font-size:clamp(26px,8vw,43px);font-weight:500}.intro-book p{margin:0;color:#665a45;font-size:11px;line-height:1.6}.empty-pages{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:23px 0}.empty-pages i{aspect-ratio:1;border:1px dashed #9d895f;border-radius:4px;background:#ffffff29}.otter-host{position:relative;z-index:3;align-self:end;margin:0;text-align:center}.otter-host img{display:block;width:100%;max-height:240px;object-fit:contain;border-radius:48% 48% 18px 18px;filter:drop-shadow(0 14px 18px rgba(0,0,0,.32))}.otter-host figcaption{position:relative;z-index:2;display:inline-block;margin-top:-7px;padding:6px 9px;border-radius:999px;color:#29372f;background:#eadab4;font-size:9px}.intro-stage>.primary-action{grid-column:1 / -1;justify-self:center}.photo-stage{position:relative;min-height:100%;overflow:hidden;background:#15120f}.song-photo-stage .full-photo{position:absolute;inset:0;object-fit:cover;object-position:center 44%}.photo-gradient{position:absolute;inset:0;background:linear-gradient(90deg,#050a0814,#050a0845),linear-gradient(0deg,rgba(5,10,8,.68),transparent 60%)}.song-console{position:absolute;z-index:3;right:3%;bottom:3%;width:min(94%,430px);padding:15px;border:1px solid rgba(245,218,160,.56);border-radius:18px;background:linear-gradient(145deg,#080f0b8f,#0a0f0c66);box-shadow:0 18px 48px #0000005c,inset 0 1px #ffffff0f;backdrop-filter:blur(13px) saturate(1.08)}.song-track{display:grid;grid-template-columns:54px minmax(0,1fr);align-items:center;gap:12px;margin-bottom:11px}.song-track-copy{position:relative;min-width:0}.song-now-playing{display:block;margin-bottom:5px;overflow:hidden;color:#f5ddaebd;font:7px/1.2 ui-monospace,monospace;letter-spacing:.14em;text-overflow:ellipsis;white-space:nowrap}.round-play{position:relative;z-index:2;width:52px;height:52px;border:1px solid #ecd39c;border-radius:50%;color:#24372d;background:#ead09a;font-size:18px;cursor:pointer}.round-play:before{display:block;width:0;height:0;margin:auto;border-top:9px solid transparent;border-bottom:9px solid transparent;border-left:14px solid #24372d;transform:translate(2px);content:""}.song-console.is-playing .round-play:before{width:15px;height:18px;border:0;background:linear-gradient(90deg,#24372d 0 32%,transparent 32% 68%,#24372d 68% 100%);transform:none}.song-wave{display:flex;align-items:center;gap:4px;height:19px;margin-bottom:-19px;pointer-events:none}.song-wave i{width:3px;height:35%;border-radius:3px;background:#cfae70;animation:wave .85s ease-in-out infinite alternate;animation-play-state:paused}.song-console.is-playing .song-wave i{animation-play-state:running}.song-wave i:nth-child(2n){height:80%;animation-delay:-.3s}.song-wave i:nth-child(3n){height:55%;animation-delay:-.5s}.song-time{margin:0 0 7px 46px;color:#e8d9bc;font:10px ui-monospace,monospace}.song-progress{height:3px;margin:0;overflow:hidden;border-radius:3px;background:#ffffff24}.song-progress span{display:block;width:0;height:100%;background:#e5c27b;transition:width .12s linear}.song-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.song-choices button{padding:6px 4px;border:1px solid rgba(240,214,159,.58);border-radius:9px;color:#fff0d1;background:#030906b8;box-shadow:inset 0 1px #ffffff0d;font:12px ui-monospace,monospace;text-shadow:0 1px 5px #000;cursor:pointer}.song-choices button.is-wrong{color:#eab6b9;border-color:#a9555d;background:#a9555d29}.song-choices button.is-correct{color:#14271d;border-color:#e5c781;background:#dcbf7b}.song-console>.primary-action{width:100%}.portrait-stage,.letter-stage{display:grid;grid-template-columns:minmax(105px,34%) minmax(0,1fr);align-items:stretch;gap:10px;min-height:100%;padding:17px;background:linear-gradient(135deg,#28392e,#0b1611)}.portrait-memory{transform:rotate(-1.3deg);transition:transform .7s cubic-bezier(.22,1,.36,1),box-shadow .7s ease}.portrait-stage.is-complete .portrait-memory{transform:rotate(0) scale(1.025);box-shadow:0 0 0 3px #e5c27b85,0 18px 40px #0000005c}.portrait-desk{align-self:center;min-width:0;padding:10px;border-radius:13px;color:var(--ink);background:#ddd0ad;box-shadow:0 15px 35px #00000047}.portrait-canvas-wrap{position:relative;width:100%;max-height:250px;aspect-ratio:1;overflow:hidden;border:1px dashed rgba(54,74,61,.35);border-radius:8px;background:#f3ead7}#portrait-canvas,#portrait-preview,#note-portrait{display:block;width:100%;height:100%}#portrait-canvas{position:relative;z-index:2;touch-action:none;cursor:crosshair}.canvas-placeholder{position:absolute;z-index:1;inset:50% 0 auto;color:#2f43376b;text-align:center;font-size:12px;pointer-events:none}.portrait-canvas-wrap.has-drawing .canvas-placeholder{display:none}.drawing-tools{display:flex;align-items:center;gap:5px;margin-top:7px;overflow-x:auto}.color-tools,.line-tools{display:flex;gap:4px}.color-tool,.line-tool,.tool-text{flex:0 0 auto;min-width:38px;min-height:38px;border-color:#2b3c313d;color:#33483c;background:#ffffff47}.color-tool{position:relative;border:0;border-radius:50%;background:transparent}.color-tool:after{content:"";position:absolute;inset:9px;border-radius:50%;background:var(--tool-color)}.color-tool.is-active,.line-tool.is-active{box-shadow:inset 0 0 0 2px #8c6934}.portrait-desk .scene-status{color:#5b6559}.portrait-desk>.primary-action{width:100%}.needs-input{animation:input-nudge .42s ease}.piano-stage{display:grid;grid-template-rows:minmax(145px,38%) minmax(0,1fr);gap:10px;min-height:100%;padding:16px;background:linear-gradient(145deg,#102d38,#071116 72%)}.piano-memory{width:min(100%,520px);justify-self:center;border-color:#cfd8d0}.piano-studio{align-self:center;width:min(100%,620px);margin:auto;padding:12px;border:1px solid rgba(222,205,167,.4);border-radius:14px;background:#091316e0;box-shadow:0 14px 34px #0000005c}.piano-keyboard{position:relative;height:clamp(98px,19vh,145px);overflow:hidden;border:5px solid #1d2522;border-radius:8px;background:#111;touch-action:none;user-select:none}.piano-key{position:absolute;top:0;border-radius:0 0 5px 5px;cursor:pointer;touch-action:none}.piano-key.white{z-index:1;left:var(--key-position);width:12.5%;height:100%;border:1px solid #a59d8f;color:#65615b;background:linear-gradient(90deg,#d9d5cb,#fffef7 48%,#d4d0c6)}.piano-key.white span{position:absolute;inset:auto 0 6px;font:9px ui-monospace,monospace}.piano-key.black{z-index:2;left:var(--key-position);width:7.7%;height:62%;min-width:28px;min-height:62px;transform:translate(-50%);border:1px solid #000;background:linear-gradient(90deg,#050706,#303532 55%,#060807);box-shadow:0 6px 8px #0000007a}.piano-key.is-playing{background:linear-gradient(#f2ce80,#bc8b42);box-shadow:inset 0 0 18px #fff3bcd1;transform:translateY(3px)}.piano-key.black.is-playing{transform:translate(-50%) translateY(3px)}.record-readout{display:flex;align-items:center;gap:8px;margin-top:9px;color:#e5d7b9;font:11px ui-monospace,monospace}.record-readout strong{font-size:15px}.record-count{color:#ab9e84}.record-light{width:9px;height:9px;border-radius:50%;background:#685e51}.record-light.is-recording{background:#d75861;box-shadow:0 0 12px #d75861;animation:record-blink 1s ease infinite}.piano-actions{display:flex;flex-wrap:wrap;gap:7px}.piano-actions .quiet-action{padding-inline:15px}.letter-stage{background:linear-gradient(145deg,#314432,#111c15 72%)}.letter-memory{transform:rotate(1.2deg)}.letter-paper{align-self:center;min-width:0;padding:14px;border-radius:4px;color:var(--ink);background:repeating-linear-gradient(0deg,transparent 0 29px,rgba(61,80,66,.12) 30px),#eee3c8;box-shadow:0 16px 35px #0000004d;transition:transform .65s ease,opacity .65s ease}.letter-paper.is-sealed{transform:scale(.84) rotate(-2deg);opacity:.68}.prompt-chips{display:flex;gap:5px;margin-bottom:8px;overflow-x:auto}.prompt-chips button{flex:0 0 auto;min-height:38px;padding:0 10px;border:1px solid rgba(66,86,71,.28);border-radius:999px;color:#465c4d;background:#ffffff52;font-size:10px;cursor:pointer}.letter-paper label{display:block;margin-bottom:5px;color:#6d5733;font-size:12px}.letter-paper textarea{display:block;width:100%;min-height:122px;resize:vertical;border:1px solid rgba(51,71,58,.2);border-radius:7px;color:#26382f;background:#ffffff47;padding:10px;font-size:15px;line-height:1.8}.letter-meta{display:flex;justify-content:space-between;gap:8px;min-height:31px;padding:6px 1px;color:#667267;font-size:9px}.letter-paper>.primary-action{width:100%}.experience.is-keyboard-open{height:var(--app-height);min-height:0}.experience.is-keyboard-open .topbar,.experience.is-keyboard-open .story-panel{display:none}.experience.is-keyboard-open .scene-viewport{grid-template:minmax(0,1fr) / minmax(0,1fr);gap:0;height:var(--app-height);padding:max(6px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))}.experience.is-keyboard-open .stage-shell{width:100%;height:100%;border-radius:12px}.experience.is-keyboard-open .letter-scene{overflow:auto;scroll-padding-block:8px}.experience.is-keyboard-open .letter-stage{grid-template-columns:minmax(0,1fr);align-content:center;min-height:100%;padding:8px}.experience.is-keyboard-open .letter-memory,.experience.is-keyboard-open .prompt-chips{display:none}.experience.is-keyboard-open .letter-paper{align-self:center;width:min(100%,520px);margin:0 auto;padding:10px 12px;box-shadow:none}.experience.is-keyboard-open .letter-paper textarea{min-height:96px;max-height:128px;resize:none}.experience.is-keyboard-open .letter-meta{min-height:24px;padding-block:4px}.reveal-scene{display:grid;place-items:start center;min-height:100%;padding:18px;background:radial-gradient(circle at 50% 28%,rgba(230,188,105,.27),transparent 32%),linear-gradient(145deg,#39201b,#0d1210 70%)}.reveal-stage{display:grid;place-items:center;width:min(100%,680px);min-height:100%}.reveal-cover{display:flex;flex-direction:column;justify-content:center;width:min(84%,390px);min-height:min(76%,430px);padding:38px;border:0;border-left:10px solid #aa8346;cursor:pointer;transition:transform .52s cubic-bezier(.4,0,.2,1),opacity .42s ease}.reveal-cover strong{margin:17px 0;font-size:clamp(28px,8vw,46px);font-weight:500}.cover-question{padding:13px 0;border-block:1px solid rgba(50,67,55,.25);font-size:15px}.cover-open{margin-top:35px;color:#79623d;font-size:11px}.reveal-cover.is-opening{opacity:0;transform:perspective(900px) rotateY(-72deg) translate(-20%);transform-origin:left center}.reveal-content{width:100%;padding:3px 0 16px;overflow-anchor:none}.reveal-content.is-revealed{animation:reveal-in .7s cubic-bezier(.22,1,.36,1) both}.reveal-content.is-revealed .lead-card{animation:reveal-card-arrive .78s 1.62s cubic-bezier(.16,.8,.2,1) backwards}.reveal-content.is-revealed>.primary-action{animation:reveal-card-arrive .68s 1.84s cubic-bezier(.16,.8,.2,1) backwards}.galaxy-reveal{position:relative;isolation:isolate;height:clamp(390px,55vh,460px);margin:0 4px 12px;overflow:hidden;border:1px solid rgba(229,203,148,.34);border-radius:18px;color:#fff2d4;background:#030711;box-shadow:0 22px 54px #00000085,inset 0 0 72px #24335e6b}.galaxy-stars,.galaxy-nebula{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.galaxy-stars{z-index:1}.galaxy-nebula{z-index:0;background:radial-gradient(ellipse at 48% 45%,rgba(85,118,208,.3),transparent 30%),radial-gradient(ellipse at 24% 64%,rgba(139,73,171,.22),transparent 34%),radial-gradient(ellipse at 76% 28%,rgba(215,163,90,.18),transparent 28%),linear-gradient(160deg,#06091a,#03040b 68%)}.galaxy-warp{position:absolute;z-index:140;inset:0;overflow:hidden;opacity:0;background:radial-gradient(circle at 50% 48%,rgba(236,244,255,.38),rgba(105,135,235,.12) 12%,transparent 34%);pointer-events:none}.galaxy-warp i,.galaxy-warp span{position:absolute;top:48%;left:50%;border-radius:50%;opacity:0;transform:translate(-50%,-50%) scale(.04)}.galaxy-warp i{width:34vmin;max-width:220px;aspect-ratio:1;border:1px solid rgba(205,220,255,.88);box-shadow:0 0 24px #a5bfffb3,inset 0 0 24px #a5bfff5c}.galaxy-warp span{width:16px;aspect-ratio:1;background:#fff8dc;box-shadow:0 0 18px #fff,0 0 54px #a8c5ff,0 0 100px #7e6ed8}.galaxy-reveal.is-arriving .galaxy-warp{animation:galaxy-warp-fade 1.65s cubic-bezier(.16,.75,.24,1) both}.galaxy-reveal.is-arriving .galaxy-warp i:first-child{animation:galaxy-ring-burst 1.2s .12s cubic-bezier(.12,.72,.22,1) both}.galaxy-reveal.is-arriving .galaxy-warp i:nth-child(2){animation:galaxy-ring-burst 1.35s .36s cubic-bezier(.12,.72,.22,1) both}.galaxy-reveal.is-arriving .galaxy-warp span{animation:galaxy-flare 1.05s .17s ease-out both}.galaxy-reveal.is-arriving .galaxy-nebula{animation:galaxy-nebula-bloom 1.8s .25s cubic-bezier(.16,.8,.2,1) both}.galaxy-reveal.is-arriving .galaxy-title{animation:galaxy-title-arrive 1.05s .9s cubic-bezier(.16,.8,.2,1) both}.galaxy-reveal.is-arriving .galaxy-orbit{pointer-events:none}.galaxy-reveal.is-arriving .galaxy-touch-guide{opacity:0}.galaxy-reveal.is-settled .galaxy-touch-guide{animation:reveal-card-arrive .52s ease-out both}.galaxy-title{position:absolute;z-index:150;top:16px;left:50%;display:grid;width:min(92%,430px);gap:3px;text-align:center;transform:translate(-50%);pointer-events:none;text-shadow:0 3px 16px #03040b}.galaxy-title span{color:#bdcdfb;font:7px/1.2 ui-monospace,monospace;letter-spacing:.26em}.galaxy-title strong{font-size:clamp(13px,3.5vw,18px);font-weight:500;letter-spacing:.08em}.galaxy-orbit{position:absolute;z-index:10;inset:42px 0 58px;overflow:hidden;perspective:720px;transform-style:preserve-3d;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.galaxy-orbit.is-grabbing{cursor:grabbing}.galaxy-photo{position:absolute;top:50%;left:50%;width:clamp(108px,32vw,158px);height:clamp(148px,43vw,218px);min-width:0;min-height:0;margin:0;overflow:hidden;padding:5px 5px 25px;border:1px solid rgba(255,235,195,.72);border-radius:5px;color:#2e332f;background:#eee4cb;box-shadow:0 14px 32px #00000094,0 0 24px #7b99e71f;transform-style:preserve-3d;transform-origin:center;transition:filter .15s ease,box-shadow .18s ease;will-change:transform;cursor:zoom-in}.galaxy-photo:focus-visible{box-shadow:0 0 0 3px #ffe1a4,0 14px 32px #00000094}.galaxy-photo img{border-radius:2px;background:#111622;object-fit:contain;pointer-events:none}.galaxy-photo span{position:absolute;inset:auto 5px 5px;overflow:hidden;font-size:9px;line-height:15px;letter-spacing:.08em;text-align:center;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}.galaxy-touch-guide{position:absolute;z-index:160;right:7px;bottom:14px;left:7px;display:flex;justify-content:center;gap:5px;pointer-events:none}.galaxy-touch-guide span{display:flex;align-items:center;min-height:28px;padding:5px 7px;border:1px solid rgba(201,218,255,.2);border-radius:999px;color:#dce6ff;background:#040916b3;backdrop-filter:blur(8px);font-size:9px;white-space:nowrap}.galaxy-touch-guide i{margin-right:4px;color:#ffdca0;font:12px/1 sans-serif;font-style:normal}.photo-focus{position:absolute;z-index:500;inset:0;display:grid;place-items:center;padding:34px 20px 46px;opacity:0;background:#010309e6;backdrop-filter:blur(16px);transition:opacity .22s ease}.photo-focus.is-visible{opacity:1}.photo-focus img{width:auto;max-width:100%;height:auto;max-height:100%;border:7px solid #eee3c9;border-radius:4px;box-shadow:0 18px 52px #000000b8,0 0 42px #84a2eb33;object-fit:contain}.photo-focus-close{position:absolute;z-index:2;top:8px;right:8px;width:44px;min-width:44px;border:1px solid rgba(255,239,204,.42);border-radius:50%;color:#fff0d2;background:#090d19c2;font:24px/1 sans-serif;cursor:pointer}.photo-focus-caption{position:absolute;right:18px;bottom:13px;left:18px;text-align:center;text-shadow:0 2px 9px #000;font-size:11px;letter-spacing:.08em}.lead-card{display:grid;grid-template-columns:84px 1fr;align-items:center;gap:13px;margin:7px 4px 10px;padding:10px;border:1px solid rgba(232,204,147,.5);border-radius:12px;color:#f5e8c9;background:#060f0be0}.lead-card canvas{width:84px;height:84px;border:3px solid #e9dcbd;border-radius:7px}.lead-card span{color:#c9aa6f;font:8px ui-monospace,monospace;letter-spacing:.18em}.lead-card h1{margin:4px 0;font-size:clamp(18px,5vw,28px);font-weight:500}.lead-card p{margin:0;color:#cfc1a3;font:9px/1.55 ui-monospace,monospace}.reveal-content>.primary-action{display:block;margin:auto}.note-scene{min-height:100%;background:linear-gradient(145deg,#1a2e24,#07100d 75%)}.note-stage{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center;gap:12px;width:min(100%,700px);min-height:100%;margin:auto;padding:16px}.keepsake-preview{position:relative;min-height:360px;overflow:hidden;border:8px solid #e7dab9;border-radius:5px;color:#fff1cf;background:#13231b;box-shadow:0 18px 42px #0006}.keepsake-photo,.keepsake-shade{position:absolute;inset:0}.keepsake-photo{object-fit:cover}.keepsake-shade{background:linear-gradient(0deg,rgba(5,13,10,.92),transparent 62%)}.keepsake-copy{position:absolute;z-index:2;inset:17px 17px auto;text-shadow:0 2px 12px rgba(0,0,0,.55)}.keepsake-copy span,.keepsake-copy p{font:8px ui-monospace,monospace;letter-spacing:.15em}.keepsake-copy h1{margin:4px 0;font-size:clamp(21px,6vw,33px);font-weight:500}.keepsake-creative{position:absolute;z-index:3;right:13px;bottom:13px;left:13px;display:grid;grid-template-columns:76px 1fr;align-items:center;gap:10px}.keepsake-creative canvas{width:76px;height:76px;border:4px solid #eee1c2;border-radius:5px}.keepsake-creative blockquote{margin:0;padding:9px;border-left:2px solid #dec181;color:#f2e3c4;background:#040a0894;font-size:12px;line-height:1.55}.final-note{padding:18px;border-radius:5px;color:#2a3b31;background:#eadfc1;box-shadow:0 15px 34px #0000004d}.final-note>p{margin:0 0 14px;font-size:clamp(14px,4.2vw,18px);line-height:1.75;white-space:pre-line}.favorite-cameos{display:block;margin:0 0 12px;padding:9px;border:1px solid rgba(62,80,67,.2);border-radius:9px;background:#ffffff2e}.favorite-cameos>span{display:block;margin-bottom:7px;color:#5c674d;font:8px/1.35 ui-monospace,monospace;letter-spacing:.08em}.favorite-cameos>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.favorite-cameos figure{min-width:0;margin:0}.favorite-cameos img{display:block;width:100%;aspect-ratio:1;border:2px solid rgba(255,255,255,.78);border-radius:50%;background:#ddcfaa;box-shadow:0 4px 10px #29352c33;object-fit:cover}.favorite-cameos figure:nth-child(2) img{object-position:50% 58%}.favorite-cameos figcaption{min-height:15px;margin-top:4px;overflow:hidden;color:#536054;font-size:7px;line-height:1.1;text-align:center;overflow-wrap:anywhere}.note-actions{display:grid;gap:7px}.final-note .quiet-action{color:#405448;border-color:#374c3f4d;background:#ffffff2e}.privacy-note{display:block;margin-top:10px;color:#2d3f34ad;font-size:9px;line-height:1.45}.save-overlay{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) 18px max(18px,env(safe-area-inset-bottom));background:#020705e6;backdrop-filter:blur(12px)}.save-overlay-card{position:relative;width:min(100%,390px);max-height:100%;overflow:auto;padding:16px;border:1px solid rgba(232,204,147,.52);border-radius:14px;color:#f4e6c7;text-align:center;background:#0c1813;box-shadow:0 25px 70px #00000094}.save-overlay-card>button{position:absolute;z-index:2;top:7px;right:7px;width:44px;border:1px solid rgba(234,211,164,.36);border-radius:50%;color:#f4e6c7;background:#040b08b8;font-size:22px;cursor:pointer}.save-overlay-card strong{display:block;padding-inline:42px;font-size:18px;font-weight:500}.save-overlay-card p{margin:7px 0 12px;color:#cbbd9f;font-size:11px}.save-overlay-card img{display:block;width:min(100%,300px);height:auto;margin:auto;border:6px solid #e7dab9;user-select:auto;-webkit-touch-callout:default}@keyframes soft-pulse{50%{box-shadow:0 0 0 5px #e0bc6f1f}}@keyframes galaxy-warp-fade{0%,58%{opacity:1}to{opacity:0}}@keyframes galaxy-ring-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.04)}18%{opacity:.92}to{opacity:0;transform:translate(-50%,-50%) scale(4.8)}}@keyframes galaxy-flare{0%{opacity:0;transform:translate(-50%,-50%) scale(.05)}24%{opacity:1;transform:translate(-50%,-50%) scale(1)}62%{opacity:.88;transform:translate(-50%,-50%) scale(6)}to{opacity:0;transform:translate(-50%,-50%) scale(26)}}@keyframes galaxy-nebula-bloom{0%{opacity:0;transform:scale(.48) rotate(-8deg);filter:blur(20px)}58%{opacity:1;transform:scale(1.08) rotate(1deg);filter:blur(2px)}to{opacity:1;transform:none;filter:none}}@keyframes galaxy-title-arrive{0%{opacity:0;transform:translate(-50%,13px) scale(.94);filter:blur(8px);letter-spacing:.12em}to{opacity:1;transform:translate(-50%);filter:none}}@keyframes reveal-card-arrive{0%{opacity:0;transform:translateY(10px) scale(.98);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}@keyframes wave{to{transform:scaleY(.36);opacity:.55}}@keyframes record-blink{50%{opacity:.34}}@keyframes reveal-in{0%{opacity:0;transform:translateY(18px)}}@keyframes input-nudge{20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}@media(max-width:560px){.page-dot b{display:none}.page-progress{gap:4px}.scene-viewport{gap:8px;padding-top:8px}.story-panel{min-height:198px}.intro-stage{grid-template-columns:minmax(0,1fr) 118px}.intro-book{padding-inline:19px}.song-console{right:3%;width:94%}.portrait-stage,.letter-stage{padding:13px}.drawing-tools{gap:2px}.color-tool,.line-tool,.tool-text{min-width:36px;min-height:36px;font-size:9px}.piano-stage{grid-template-rows:170px minmax(0,1fr);height:100%;overflow:hidden;padding:13px}.piano-memory{height:170px;min-height:0}.piano-studio{align-self:stretch;max-height:100%;overflow:auto;padding:9px}.piano-keyboard{height:96px}.piano-studio .scene-status{min-height:16px;margin-block:5px}.note-stage{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px}.final-note{padding:12px}.scene-viewport[data-scene=reveal] .story-panel{min-height:154px;max-height:170px;padding:9px 11px}.scene-viewport[data-scene=reveal] .subtitle-speaker{margin-top:3px;font-size:9px}.scene-viewport[data-scene=reveal] .subtitle-copy{min-height:34px;margin:2px 0 5px;font-size:12px;line-height:1.38}.scene-viewport[data-scene=reveal] .interaction-guide{min-height:32px;padding:5px 7px}.scene-viewport[data-scene=reveal] .guide-copy{font-size:10px}.scene-viewport[data-scene=reveal] .story-footer{margin-top:3px}.galaxy-reveal{height:clamp(380px,48vh,420px)}.lead-card{grid-template-columns:64px 1fr;gap:9px;margin-block:6px;padding:8px}.lead-card canvas{width:64px;height:64px}.lead-card h1{font-size:18px}.lead-card p{font-size:8px}}@media(orientation:landscape)and (min-width:760px),(min-width:900px){.topbar{min-height:68px;padding-inline:clamp(18px,4vw,54px)}.page-progress{gap:14px}.page-dot i{width:24px;height:24px}.scene-viewport{grid-template-columns:minmax(0,1fr) minmax(330px,410px);grid-template-rows:minmax(0,1fr);align-items:center;gap:20px;height:calc(var(--app-height) - 68px);padding:18px clamp(20px,4vw,60px) 24px}.stage-shell{width:100%;height:100%;max-height:760px}.story-panel{width:100%;min-height:260px;max-height:76vh;padding:23px}.subtitle-copy{min-height:95px;font-size:20px;line-height:1.65}.interaction-guide{min-height:54px;padding:10px}.guide-copy{font-size:14px}.portrait-stage,.letter-stage{grid-template-columns:minmax(220px,42%) minmax(0,1fr);gap:24px;padding:28px}.portrait-canvas-wrap{max-height:330px}.piano-stage{grid-template-columns:minmax(210px,38%) minmax(0,1fr);grid-template-rows:minmax(0,1fr);align-items:center;gap:24px;padding:28px}.piano-memory{width:100%;height:88%}.piano-keyboard{height:170px}.galaxy-reveal{height:min(70vh,610px)}.galaxy-orbit{bottom:58px}.galaxy-touch-guide span{font-size:10px}.note-stage{gap:24px;padding:28px}.keepsake-preview{min-height:520px}}@media(max-height:700px){.experience{min-height:520px}.topbar{min-height:54px;padding-block:5px}.scene-viewport{height:calc(var(--app-height) - 54px)}.story-panel{min-height:178px;max-height:206px;padding-block:9px}.subtitle-copy{min-height:38px;margin-block:2px 5px;font-size:13px;line-height:1.38}.interaction-guide{min-height:34px;padding-block:4px}.story-footer{margin-top:4px}.piano-stage{grid-template-rows:125px minmax(0,1fr)}.piano-keyboard{height:88px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
