:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#504637;background:#f5eee2;font-synthesis:none;--cream: #f5eee2;--ivory: #fffaf0;--ink: #504637;--muted: #7e705c;--gold: #ae7b2c;--line: rgba(126, 100, 57, .16);--serif: Georgia, "Times New Roman", serif}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}button{font:inherit;cursor:pointer}button:focus-visible,.flower-canvas:focus-visible{outline:2px solid var(--gold);outline-offset:5px}::selection{background:#ead49c}.gift{min-height:100vh;min-height:100dvh;position:relative;isolation:isolate;display:flex;flex-direction:column;overflow:hidden;padding-inline:max(22px,env(safe-area-inset-left));background:radial-gradient(circle at 50% 44%,rgba(255,246,202,.7),transparent 30%),radial-gradient(ellipse at 50% 48%,var(--ivory),var(--cream) 66%,#ece0d2 100%)}.gift:after{content:"";position:absolute;inset:14px;border:1px solid var(--line);pointer-events:none;z-index:-1}.page-header{display:flex;align-items:center;gap:10px;min-height:64px;padding-top:max(23px,env(safe-area-inset-top));font-size:.66rem;letter-spacing:.2em}.header-season{margin-left:auto;font-size:.61rem}.page-footer{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:auto;padding:12px 0 max(20px,env(safe-area-inset-bottom));color:var(--muted);font:italic .76rem var(--serif)}.footer-line{width:30px;height:1px;background:#89704659}.intro-wrap{flex:1;display:grid;place-items:center;min-height:calc(100dvh - 130px);transition:opacity .7s ease,transform .85s ease}.intro-wrap.is-leaving{position:absolute;inset:64px 20px 60px;opacity:0;transform:translateY(-10px) scale(.99);pointer-events:none}.intro{max-width:520px;padding:16px 0 34px;text-align:center;animation:arrive 1.1s both}.eyebrow{margin:0 0 18px;color:var(--gold);font-size:.64rem;font-weight:600;letter-spacing:.25em}.intro h1{margin:0 0 20px;font:400 clamp(2.15rem,7vw,4rem)/1.08 var(--serif);letter-spacing:-.045em}.intro-text{margin:0;color:var(--muted);white-space:pre-line;font:400 1.03rem/1.72 var(--serif)}.open-button{display:inline-flex;align-items:center;gap:28px;margin-top:25px;padding:15px 23px;border:1px solid #756143;border-radius:999px;background:#756143;color:#fff9ed;font-size:.84rem;transition:transform .2s ease,background .2s ease}.open-button:hover{transform:translateY(-2px);background:#604e34}.open-button span{font-size:18px}.intro-hint{margin:20px 0 0;color:var(--muted);font-size:.73rem}.sun-icon{position:relative;display:block;width:clamp(92px,26vw,128px);aspect-ratio:1;margin:0 auto 28px;animation:sun-enter 1.2s .1s both,sun-float 7s 1.3s ease-in-out infinite}.sun-icon svg{position:relative;z-index:1;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 8px 14px rgba(176,126,38,.13))}.sun-icon__halo{position:absolute;inset:8%;border-radius:50%;background:#e3b04833;filter:blur(20px);animation:halo-breathe 5.8s ease-in-out infinite}.sun-icon__rays{stroke:#b98936;stroke-width:1.7;stroke-linecap:round;transform-origin:60px 60px;animation:ray-breathe 9s ease-in-out infinite}.sun-icon__orbit{fill:none;stroke:#b787326b;stroke-width:1}.sun-icon__core{fill:#d6a648;stroke:#b37d29;stroke-width:1.2}.sun-icon__shine{fill:#fff1b885}.sun-icon--compact{width:25px;margin:0;animation:none}.sun-icon--compact .sun-icon__halo{filter:blur(7px)}.sun-icon--compact .sun-icon__rays{animation:none}.gift-content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;animation:arrive 1s .2s both}.flower-area{position:relative;flex:1;width:calc(100% + 32px);max-width:1050px;min-height:0;height:69dvh}.flower-canvas{position:absolute;inset:0;width:100%;height:100%;border-radius:0;touch-action:pan-y;outline-offset:-7px!important}.flower-canvas canvas{touch-action:none}.interaction-hint{position:absolute;right:0;bottom:2px;left:0;margin:0;color:var(--muted);text-align:center;font-size:.68rem;letter-spacing:.025em;pointer-events:none;animation:arrive 1s 2.6s both}.interaction-hint span{margin-right:6px;font-size:18px;vertical-align:-1px}.romantic-message{padding:10px 0 2px;text-align:center;animation:arrive 1.15s 1.25s both}.romantic-message h1{margin:0;outline:none;font:400 clamp(1.65rem,4vw,2.25rem)/1.15 var(--serif);letter-spacing:-.035em}.title-dot{color:var(--gold)}.love-message{margin:7px 0 0;color:var(--muted);font-size:.87rem}.little-heart{margin-left:3px;color:#9b7747;font-size:17px}.ambient{position:absolute;inset:0;z-index:-1;pointer-events:none}.ambient i{position:absolute;top:var(--y);left:var(--x);width:4px;height:4px;border-radius:50%;background:#c8a750;opacity:.18;animation:float 13s var(--delay) ease-in-out infinite}.loading{display:grid;place-items:center;color:var(--muted);font-family:var(--serif)}.scene-fallback{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--muted)}.scene-fallback .sun-icon{margin-bottom:12px}.scene-fallback p{margin:0 0 6px;color:var(--ink);font:1.2rem var(--serif)}.scene-fallback small{max-width:250px;line-height:1.5}@keyframes arrive{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes float{50%{transform:translate(10px,-22px);opacity:.36}}@keyframes sun-enter{0%{opacity:0;transform:translateY(8px) scale(.88)}to{opacity:1;transform:none}}@keyframes sun-float{50%{transform:translateY(-3px) scale(1.018)}}@keyframes halo-breathe{50%{opacity:.66;transform:scale(1.13)}}@keyframes ray-breathe{50%{transform:rotate(1.4deg) scale(1.025)}}@media(min-width:900px){.gift{padding-inline:54px}.gift:after{inset:21px}.page-header{padding-top:30px}.flower-area{height:74dvh;max-width:1180px}.romantic-message{padding-top:8px}.page-footer{padding-bottom:24px}}@media(max-width:899px){.header-season{display:none}}@media(max-width:380px){.gift{padding-inline:18px}.flower-area{width:calc(100% + 24px);height:65dvh}.romantic-message h1{font-size:1.55rem}}@media(max-height:740px){.page-header{min-height:55px;padding-top:18px}.flower-area{height:62dvh}.romantic-message{padding-top:6px}.page-footer{padding-top:8px;padding-bottom:16px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
