@import "https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;500;600&family=Playfair+Display:ital,wght@0,600;1,600&display=swap";:root{color:#fff9e9;font-synthesis:none;text-rendering:optimizelegibility;background:#08061f;font-family:Be Vietnam Pro,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{min-width:320px}button,dialog{font:inherit}button:focus-visible{outline-offset:4px;outline:3px solid #ffcf72}.experience-shell,.scene-canvas{width:100%;height:100%}.experience-shell{isolation:isolate;background:radial-gradient(circle at 70% 18%,#54469d3d,#0000 32%),#08061f;position:relative}.experience-shell:after{z-index:1;pointer-events:none;content:"";background:linear-gradient(#04021247,#0000 28% 72%,#04021273),radial-gradient(#0000 48%,#0402126b 100%);position:absolute;inset:0}.wish-eyebrow{color:#f6c66f;letter-spacing:.18em;text-transform:uppercase;margin:0 0 8px;font-size:.72rem;font-weight:600}.wish-eyebrow.is-secret{color:#f7cf86;letter-spacing:.025em;text-transform:none;font-size:.8rem;font-style:italic;font-weight:500;line-height:1.55}.scene-hint{z-index:2;color:#fff9e9c7;letter-spacing:.04em;white-space:nowrap;text-shadow:0 2px 14px #06031ae6;align-items:center;gap:10px;font-size:.78rem;display:flex;position:absolute;bottom:clamp(82px,11vh,116px);left:50%;transform:translate(-50%)}.hint-lantern{background:#f26d4c;border:1px solid #ffd47e;border-radius:4px;width:9px;height:13px;box-shadow:0 0 13px #ffad4d}.music-toggle{z-index:3;color:#ffd680;-webkit-backdrop-filter:blur(13px);backdrop-filter:blur(13px);cursor:pointer;background:#120c30a3;border:1px solid #ffd58666;border-radius:50%;place-items:center;width:46px;height:46px;padding:0;transition:border-color .18s,background .18s,transform .18s;display:grid;position:absolute;top:clamp(20px,3vw,34px);right:clamp(20px,3vw,34px);box-shadow:0 10px 28px #03010f59,inset 0 1px #ffffff14}.music-toggle:hover{background:#2c1941d1;border-color:#ffd586;transform:translateY(-2px)}.music-toggle span{font-size:1.25rem;line-height:1}.music-toggle.is-playing{color:#fff2bd;background:#692947c2;box-shadow:0 0 22px #ffa7683d,inset 0 1px #ffffff1a}.music-toggle.has-error{color:#fff9e98c;border-color:#ffffff2e}.loading-screen{z-index:20;background:#08061f;place-content:center;justify-items:center;transition:opacity .3s;display:grid;position:absolute;inset:0}.loading-screen p{color:#fff9e9cc;margin:22px 0 14px;font-size:.84rem}.loading-moon{aspect-ratio:1;background:#fff0b6;border-radius:50%;width:58px;animation:1.8s ease-in-out infinite breathe;box-shadow:0 0 36px #ffdd8a8c}.loading-track{background:#ffffff1f;border-radius:999px;width:min(220px,62vw);height:3px;overflow:hidden}.loading-track span{border-radius:inherit;background:linear-gradient(90deg,#e85746,#ffd176);height:100%;transition:width .2s;display:block}.wish-dialog{color:#fff8e9;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:#130d30ed;border:1px solid #ffdb9647;border-radius:28px;width:min(860px,100vw - 32px);max-height:calc(100dvh - 32px);padding:0;overflow:visible;box-shadow:0 34px 100px #02010ead,inset 0 1px #ffffff14}.wish-dialog::backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#050314ab}.wish-card{grid-template-columns:minmax(0,1.05fr) minmax(280px,.95fr);align-items:center;gap:clamp(24px,4vw,46px);padding:clamp(20px,4vw,44px);display:grid;position:relative}.wish-image-wrap{aspect-ratio:16/9;background:#0c0928;border-radius:20px;position:relative;overflow:hidden;box-shadow:0 20px 54px #0301126b}.wish-image-wrap.is-portrait{aspect-ratio:3/4;max-height:min(64vh,560px)}.wish-image-wrap img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .24s;display:block}.wish-image-wrap.is-loaded img{opacity:1}.wish-image-status{color:#fff9e9b8;text-align:center;background:linear-gradient(110deg,#0000 28%,#ffffff12 44%,#0000 60%),#0c0928;place-items:center;padding:24px;font-size:.82rem;line-height:1.5;animation:1.5s linear infinite image-shimmer;display:grid;position:absolute;inset:0}.wish-image-wrap.is-error .wish-image-status{animation:none}.wish-image-glow{filter:blur(24px);background:#ffb34e3d;border-radius:50%;height:42%;position:absolute;inset:auto 16% -20%}.wish-copy h2{margin:0 0 18px;font-family:Playfair Display,Georgia,serif;font-size:clamp(2rem,4vw,3.4rem);line-height:1}.wish-message{color:#fff9e9e0;margin:0;font-size:clamp(1rem,1.6vw,1.16rem);line-height:1.8}.dialog-close{z-index:2;color:#fff8e9;cursor:pointer;background:#09061f9e;border:1px solid #ffffff24;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;display:grid;position:absolute;top:14px;right:14px}.dialog-close span{font-size:1.7rem;line-height:1;transform:translateY(-1px)}@keyframes breathe{50%{transform:scale(1.08);box-shadow:0 0 52px #ffdd8ab8}}@keyframes image-shimmer{to{background-position:280px 0,0 0}}@media (width<=720px){.music-toggle{width:44px;height:44px;top:18px;right:18px}.scene-hint{font-size:.7rem;bottom:91px}.wish-dialog{border-radius:22px;max-height:calc(100dvh - 20px);overflow-y:auto}.wish-card{grid-template-columns:1fr;gap:24px;padding:16px 16px 28px}.wish-copy{padding:0 8px}.dialog-close{top:24px;right:24px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
