:root{color-scheme:dark;--bg:#100910;--panel:#1a101b;--rose:#ff789b;--pink:#ffc1d0;--cream:#fff0e8;--muted:#c7b5c4;--line:#ffffff1b}
*{box-sizing:border-box}html{min-height:100%;background:var(--bg);scroll-behavior:smooth}body{margin:0;min-height:100vh;min-height:100dvh;overflow-x:hidden;background:radial-gradient(ellipse at 50% 0%,#35172c 0%,#180d1b 40%,#100910 75%);color:var(--cream);font-family:ui-serif,Georgia,"Times New Roman",serif;display:flex;flex-direction:column;align-items:center;position:relative}
button{font:inherit}.starfield{position:fixed;inset:0;pointer-events:none;opacity:.5;background-image:radial-gradient(1px 1px at 8% 14%,#fff 98%,transparent),radial-gradient(1px 1px at 78% 22%,#ffd5e2 98%,transparent),radial-gradient(1.5px 1.5px at 25% 68%,#fff 98%,transparent),radial-gradient(1px 1px at 87% 78%,#fff 98%,transparent),radial-gradient(1px 1px at 52% 42%,#ffd5e2 98%,transparent),radial-gradient(1px 1px at 64% 90%,#fff 98%,transparent);background-size:350px 320px;animation:twinkle 5s ease-in-out infinite alternate}
.ambient-glow{position:fixed;width:240px;height:240px;border-radius:50%;filter:blur(90px);opacity:.16;pointer-events:none}.glow-one{background:#ff3978;top:20%;left:-150px}.glow-two{background:#a45bff;right:-160px;bottom:10%}
.topbar{width:min(100%,760px);padding:calc(18px + env(safe-area-inset-top)) 22px 14px;display:flex;align-items:center;justify-content:space-between;z-index:1;font-family:system-ui,sans-serif}.brand{font-size:11px;letter-spacing:.17em;text-transform:uppercase;color:#e8cad6}.brand-heart{color:var(--rose);font-size:16px;margin-right:7px}.sound-toggle{display:flex;gap:7px;align-items:center;border:1px solid var(--line);border-radius:99px;background:#ffffff08;color:#f7dbe4;padding:9px 12px;font-size:11px;letter-spacing:.03em;cursor:pointer}.sound-toggle span:first-child{font-size:15px;color:var(--pink)}
.app-shell{width:min(100%,620px);padding:8px 22px 12px;flex:1;display:flex;flex-direction:column;z-index:1}.progress{height:2px;background:#ffffff14;border-radius:10px;overflow:hidden;margin:4px 0 14px}.progress span{display:block;height:100%;width:20%;background:linear-gradient(90deg,#ff7196,#ffd1dc);transition:width .5s ease}
.scene{min-height:590px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:15px 0 22px;animation:arrive .55s ease both}.scene[hidden]{display:none}.eyebrow{font:10px/1.4 system-ui,sans-serif;letter-spacing:.19em;text-transform:uppercase;color:#e8a9bd;margin-bottom:25px}.sparkle{color:#ff9eb7;font-size:15px}.dot{display:inline-block;width:3px;height:3px;background:var(--rose);border-radius:50%;vertical-align:middle;margin:0 9px}
h1,h2{font-weight:400;letter-spacing:-.045em;line-height:1.08;margin:0;color:#fff4f0}h1{font-size:clamp(39px,10vw,62px)}h2{font-size:clamp(34px,8vw,48px)}h1 em,h2 em{font-weight:400;color:var(--pink);font-style:italic}.lede{font:14px/1.8 system-ui,sans-serif;color:var(--muted);max-width:290px;margin:22px auto 27px}.body-copy{font:13px/1.9 system-ui,sans-serif;color:#d1bdcd;max-width:360px;margin:17px auto 24px}
.hero-heart{width:110px;height:100px;position:relative;display:grid;place-items:center;margin:0 auto 22px;color:#ff6d96;filter:drop-shadow(0 0 24px #ff4e8b55);animation:heartBeat 2.6s ease-in-out infinite}.hero-heart span{font-size:76px;line-height:1;text-shadow:0 0 35px #ff4e8b7a}.hero-heart i,.hero-heart b{position:absolute;border:1px solid #ff9bb84a;border-radius:50%;width:105px;height:105px;animation:ripple 3.3s ease-out infinite}.hero-heart b{animation-delay:1.6s}
.primary-btn{border:1px solid #ff9dbb77;background:linear-gradient(120deg,#a72b56,#6f2149);color:#fff5f7;border-radius:99px;padding:15px 22px;min-height:48px;box-shadow:0 8px 30px #a72b562b;font:12px system-ui,sans-serif;letter-spacing:.04em;cursor:pointer;transition:transform .2s,filter .2s}.primary-btn span{padding-left:13px}.primary-btn:active{transform:scale(.98)}.primary-btn:hover{filter:brightness(1.13)}.microcopy{font:10px/1.7 system-ui,sans-serif;letter-spacing:.05em;color:#9d879b;margin-top:24px}.memory-card{width:min(100%,290px);height:175px;border:1px solid #ffb1ca35;border-radius:20px;background:linear-gradient(145deg,#46203a99,#1a101b99);display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;overflow:hidden;margin:0 0 28px;box-shadow:inset 0 0 50px #ff5d8c0b,0 18px 60px #0002}.memory-icon{font-size:43px;color:#ffb2c8;text-shadow:0 0 25px #ff5d8c88;z-index:1}.memory-caption{font:11px/1.7 system-ui,sans-serif;color:#e9d1dd;max-width:180px;margin-top:9px;z-index:1}.memory-orbit{position:absolute;border:1px solid #ffb2c82b;width:180px;height:180px;border-radius:50%;transform:rotate(35deg) scaleY(.55)}.orbit-b{transform:rotate(-35deg) scaleY(.55);width:235px;height:235px}
.letter-wrap{width:min(100%,370px);padding:1px;border-radius:8px;background:linear-gradient(135deg,#e4a4b8,#6d3a58,#d7a2ad);box-shadow:0 20px 65px #0004;margin-bottom:24px}.letter{background:#f8e9e4;color:#4b2839;text-align:left;padding:20px 22px 22px;border-radius:7px}.letter-top{display:flex;justify-content:space-between;align-items:center;padding:11px 17px;background:#f0d8dc;color:#8e4964;font:9px system-ui,sans-serif;letter-spacing:.2em}.letter-top span{font-size:13px}.letter h2{font-size:29px;color:#622b45;margin:2px 0 16px}.letter p{font:12px/1.8 system-ui,sans-serif;color:#694557;margin:0 0 12px}.letter #letterGreeting{font-family:Georgia,serif;font-style:italic;font-size:15px;color:#7f3655}.letter .signature{margin-top:17px;margin-bottom:0;font-family:Georgia,serif;font-style:italic}.signature span{display:block;font-size:14px;margin-top:5px;color:#9a3e61}
.secret-lock{width:138px;height:138px;border-radius:50%;display:grid;place-items:center;position:relative;margin:4px 0 25px;cursor:pointer;outline:none}.lock-halo{position:absolute;inset:7px;border:1px solid #ff9fba4a;border-radius:50%;box-shadow:0 0 55px #ff3f7930,inset 0 0 45px #ff3f7910;animation:halo 3s ease-in-out infinite}.lock-heart{font-size:65px;color:#ff7199;text-shadow:0 0 35px #ff5486aa;transition:transform .3s}.secret-lock:hover .lock-heart,.secret-lock:focus .lock-heart{transform:scale(1.12)}.lock-spark{position:absolute;color:#ffd2df;font-size:19px;animation:float 3s ease-in-out infinite}.s1{top:10px;right:10px}.s2{bottom:12px;left:8px;animation-delay:1s}.secret-message{max-width:350px;border:1px solid #ff9fba45;border-radius:16px;padding:18px 20px;background:#ffffff08;animation:arrive .5s ease both;margin:0 0 22px}.secret-label{font:9px system-ui,sans-serif;letter-spacing:.2em;color:#ff9fba}.secret-message p{font:13px/1.9 system-ui,sans-serif;color:#f5dce5;margin:10px 0 0}
.final-heart{font-size:83px;color:#ff7299;text-shadow:0 0 45px #ff4e8b77;animation:heartBeat 2.4s ease-in-out infinite;margin:4px 0 24px}.final-message{font:14px/1.9 system-ui,sans-serif;color:#d8c3d2;max-width:330px;margin:20px auto 25px}.final-actions{display:flex;flex-direction:column;gap:12px;width:min(100%,280px)}.final-actions .primary-btn{width:100%}.text-btn{background:transparent;border:0;color:#f5b8cb;padding:12px;font:12px system-ui,sans-serif;cursor:pointer}.story-nav{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #ffffff10;padding:15px 0 7px;font:10px system-ui,sans-serif;color:#a993a5;letter-spacing:.08em}.nav-btn{background:transparent;border:0;color:#e7b8ca;font:11px system-ui,sans-serif;padding:9px 0;cursor:pointer}.nav-btn:disabled{opacity:.25;cursor:default}.footer{font:10px system-ui,sans-serif;letter-spacing:.04em;color:#8d778b;text-align:center;padding:10px 18px calc(18px + env(safe-area-inset-bottom));z-index:1}.footer span{color:#ff779b;margin-left:5px}.toast{position:fixed;left:50%;bottom:35px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#2a1627;border:1px solid #ff9fba55;color:#ffe7ef;padding:12px 16px;border-radius:99px;font:12px system-ui,sans-serif;transition:.25s;z-index:5;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%,0)}
.particle{position:fixed;pointer-events:none;z-index:4;color:#ff83a7;animation:particleFly 1.7s ease-out forwards;font-size:17px}
@keyframes arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes twinkle{from{opacity:.28}to{opacity:.65}}@keyframes heartBeat{0%,100%{transform:scale(1)}12%{transform:scale(1.07)}24%{transform:scale(1)}36%{transform:scale(1.04)}}@keyframes ripple{0%{transform:scale(.7);opacity:.7}100%{transform:scale(1.65);opacity:0}}@keyframes halo{0%,100%{transform:scale(1);opacity:.7}50%{transform:scale(1.06);opacity:1}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes particleFly{0%{opacity:1;transform:translate(0,0) scale(.7)}100%{opacity:0;transform:translate(var(--dx),-150px) rotate(35deg) scale(1.4)}}
@media(min-width:650px){.app-shell{padding-left:35px;padding-right:35px}.scene{min-height:650px}.topbar{padding-left:35px;padding-right:35px}}
@media(max-height:740px){.scene{min-height:510px}.hero-heart{margin-bottom:12px}.eyebrow{margin-bottom:18px}.letter{padding:15px 18px}.letter p{line-height:1.65;margin-bottom:8px}.letter-wrap{margin-bottom:15px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
