:root{--color-bg:#030408;--color-sky-deep:#05070d;--color-sky-mid:#090c15;--color-star:#fffbf0;--color-star-dim:#fffbf04d;--color-star-glow:#fffbf026;--color-flower:#facc15;--color-flower-light:#fde047;--color-flower-dark:#ca8a04;--color-flower-glow:#facc1566;--color-petal:#facc15;--color-stem:#14532d;--color-leaf:#064e3b;--color-text:#f3f4f6;--color-text-dim:#f3f4f699;--color-line:#fffbf014;--color-line-bright:#fffbf04d;--font-serif:"Cormorant Garamond", Georgia, serif;--font-sans:"Inter", "DM Sans", system-ui, sans-serif;--ease-smooth:cubic-bezier(.25, 1, .5, 1);--ease-out-quart:cubic-bezier(.25, 1, .5, 1);--ease-in-quart:cubic-bezier(.5, 0, .75, 0);--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;height:100%;overflow:hidden}body{background:var(--color-bg);height:100%;color:var(--color-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-weight:300;overflow:hidden}#root{width:100%;height:100%}.scene{width:100%;height:100dvh;padding-top:var(--safe-top);padding-bottom:var(--safe-bottom);position:fixed;inset:0;overflow:hidden}.message{font-family:var(--font-serif);letter-spacing:.02em;color:var(--color-text);text-align:center;text-shadow:0 2px 10px #00000080;padding:0 2rem;font-size:clamp(1.4rem,5.5vw,1.85rem);font-weight:300;line-height:1.4}.message.italic{color:var(--color-text-dim);font-style:italic}.message.small{font-family:var(--font-serif);color:var(--color-text-dim);letter-spacing:.04em;font-size:clamp(.9rem,3.5vw,1.1rem);font-weight:300}.message.large{letter-spacing:.06em;font-size:clamp(2rem,8vw,3rem);font-weight:400}.message.emphasis{color:var(--color-flower-light);text-shadow:0 0 30px var(--color-flower-glow);font-size:clamp(1.6rem,6.5vw,2.4rem);font-style:italic}.date-display{font-family:var(--font-serif);letter-spacing:.15em;color:var(--color-text);text-shadow:0 0 40px #ffffff1a;font-size:clamp(3rem,15vw,6rem);font-weight:300}.btn-minimal{font-family:var(--font-sans);letter-spacing:.25em;text-transform:uppercase;color:#ffffffb3;cursor:pointer;transition:color .4s var(--ease-smooth), background .4s var(--ease-smooth), border-color .4s var(--ease-smooth), transform .3s var(--ease-smooth);-webkit-tap-highlight-color:transparent;background:0 0;border:1px solid #ffffff26;border-radius:100px;justify-content:center;align-items:center;gap:.75rem;min-width:160px;min-height:52px;padding:1rem 2.5rem;font-size:.8rem;font-weight:400;display:inline-flex}.btn-minimal:hover,.btn-minimal:focus-visible{color:#fff;background:#ffffff0d;border-color:#fff6;outline:none}.btn-minimal:active{background:#ffffff1a;transform:scale(.96)}.sound-toggle{top:calc(1.5rem + var(--safe-top));right:calc(1.5rem + var(--safe-right));z-index:100;cursor:pointer;color:#ffffff80;width:40px;height:40px;transition:color .4s var(--ease-smooth), opacity .4s;-webkit-tap-highlight-color:transparent;background:0 0;border:none;justify-content:center;align-items:center;font-size:1.1rem;display:flex;position:fixed}.sound-toggle:hover{color:#fff}canvas{display:block;position:absolute;inset:0}@keyframes sway-a{0%,to{transform:rotate(-2deg)translate(0)}50%{transform:rotate(1.5deg)translate(1px)}}@keyframes sway-b{0%,to{transform:rotate(1.5deg)translate(1px)}50%{transform:rotate(-1.5deg)translate(-1px)}}@keyframes sway-c{0%,to{transform:rotate(-1deg)}50%{transform:rotate(2deg)translate(1px)}}.sway-a{animation:4s ease-in-out infinite sway-a}.sway-b{animation:4.8s ease-in-out infinite sway-b}.sway-c{animation:5.5s ease-in-out infinite sway-c}@keyframes pulse-interactive{0%,to{opacity:.6;filter:drop-shadow(0 0 2px var(--color-star-glow));transform:scale(1)}50%{opacity:1;filter:drop-shadow(0 0 8px var(--color-star-glow));transform:scale(1.4)}}.star-interactive{cursor:pointer;animation:2s ease-in-out infinite pulse-interactive}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.1s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width>=600px){.scene-inner{max-width:480px;margin:0 auto}}
