:root{--bg:#241326;--bg2:#3a1833;--text:#fff7fb;--muted:#d8c2d1;--accent:#f49ac5;--card:rgba(255,255,255,.09)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at top,#4a1d42 0,#241326 45%,#160d1d 100%);color:var(--text);font-family:Georgia,'Times New Roman',serif}button,input{font:inherit}button{cursor:pointer}.experience{min-height:100vh;overflow:hidden}.screen,.section{position:relative;min-height:100svh;padding:48px 22px;display:grid;place-items:center;text-align:center}.screen-loading{background:#1d1020}.screen-loading .ornament{font-size:64px;animation:pulse 1.6s infinite}.screen-loading p{margin-top:-20px;color:var(--muted);font-style:italic}.gate-card,.celebration-card,.message-card,.letter-card,.player{width:min(100%,560px);padding:28px;border:1px solid rgba(255,255,255,.13);border-radius:24px;background:var(--card);backdrop-filter:blur(12px);box-shadow:0 18px 60px rgba(0,0,0,.25)}.flower-mark{font-size:42px}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:#e8b6cf;font-size:12px}.gate-card h1{font-size:26px;font-weight:400}.code-indicators{display:flex;justify-content:center;gap:10px;margin:24px}.code-indicators i{width:12px;height:12px;border-radius:50%;border:1px solid #f49ac5}.code-indicators i.filled{background:#f49ac5}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:280px;margin:auto}.keypad button{height:54px;border:1px solid rgba(255,255,255,.15);border-radius:14px;background:rgba(255,255,255,.08);color:#fff}.hint{color:var(--muted);font-size:13px}.gift-scene{gap:24px;align-content:center}.gift-box{width:170px;height:170px;border:0;background:transparent;position:relative}.gift-body{position:absolute;inset:55px 10px 10px;background:#d85d9a;border-radius:8px;box-shadow:0 0 35px rgba(244,154,197,.4)}.gift-lid{position:absolute;z-index:2;left:0;right:0;top:38px;height:40px;background:#ef79ae;border-radius:8px}.gift-lid:after,.gift-body:after{content:'';position:absolute;left:calc(50% - 8px);top:0;width:16px;height:100%;background:#ffd2e6}.bow{position:absolute;top:-28px;left:50%;transform:translateX(-50%);font-size:42px}.gift-box.opening{animation:giftOpen .9s ease forwards}.hero-scene{background:radial-gradient(circle,#54204d 0,#241326 65%)}.hero-scene h1{max-width:650px;font-size:clamp(38px,10vw,76px);font-weight:400;letter-spacing:.04em}.hero-scene p:not(.eyebrow){max-width:620px;color:var(--muted);line-height:1.8}.celebration-scene{position:fixed;inset:0;z-index:20;background:rgba(19,7,23,.76);backdrop-filter:blur(8px)}.celebration-card{animation:pop .45s ease}.celebration-card button,.player button,#shake-jar{border:0;border-radius:12px;padding:10px 16px;background:#e986b5;color:#fff}.section{display:block;max-width:850px;margin:auto;padding-top:90px;padding-bottom:90px}.section h2{font-size:clamp(32px,8vw,54px);font-weight:400}.section>p:not(.eyebrow){color:var(--muted);line-height:1.7}.bouquet{display:flex;flex-wrap:wrap;justify-content:center;gap:18px;margin:42px auto 28px}.flower{font-size:54px;background:none;border:0;filter:drop-shadow(0 0 12px rgba(244,154,197,.35));transition:transform .2s}.flower:active{transform:scale(.88)}.flower.selected{transform:scale(1.12)}.message-card{margin:20px auto;line-height:1.8}.letter-card{text-align:left;line-height:2;margin:32px auto}.photo-card{width:min(100%,430px);min-height:280px;border:14px solid white;background:#eee;color:#4a3040;box-shadow:0 16px 40px rgba(0,0,0,.3);display:grid;place-items:center;margin:36px auto;transform:rotate(-1deg)}.photo-card span{font-size:14px}.timeline{text-align:left;max-width:650px;margin:40px auto}.timeline article{border-left:2px solid #d982ae;padding:0 0 42px 25px;margin-left:8px}.timeline h3{font-size:24px;font-weight:400}.timeline p{color:var(--muted);line-height:1.7}.timeline small{color:#e8b6cf;letter-spacing:.1em}.player{margin:30px auto;display:grid;gap:12px}.player span{color:var(--muted)}.player input{width:100%}.player div{display:flex;justify-content:center;gap:10px}.track-list{display:grid;gap:10px;margin-top:20px}.track{padding:15px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:rgba(255,255,255,.05);text-align:left}.track.active{outline:1px solid #f49ac5}.jar{display:block;margin:35px auto 18px;border:0;background:none;font-size:110px;filter:drop-shadow(0 0 20px rgba(244,154,197,.3))}.jar.shake{animation:shake .65s ease}.finale{padding-bottom:150px}.finale h2{font-style:italic}.finale p{max-width:650px;margin:24px auto;line-height:2}.music-toggle{position:fixed;right:18px;bottom:18px;z-index:30;width:48px;height:48px;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:rgba(36,19,38,.8);color:#fff}.photo-modal{border:0;border-radius:22px;background:#211222;color:#fff;padding:22px;width:min(92vw,600px);text-align:center}.photo-modal::backdrop{background:rgba(0,0,0,.82)}.photo-modal>button{float:right;border:0;background:none;color:#fff;font-size:30px}.photo-placeholder{min-height:320px;display:grid;place-items:center;font-size:80px;background:#eee;color:#4a3040;margin-top:25px}@keyframes pulse{50%{transform:scale(1.08);opacity:.7}}@keyframes giftOpen{50%{transform:translateY(-20px) scale(1.05)}100%{transform:scale(1.15);opacity:0}}@keyframes pop{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes shake{25%{transform:rotate(-10deg)}50%{transform:rotate(10deg)}75%{transform:rotate(-6deg)}}@media(max-width:520px){.screen,.section{padding-left:18px;padding-right:18px}.hero-scene h1{font-size:40px}.section h2{font-size:34px}}