@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--bg:#160b31;--pink:#ff61bd;--purple:#a580ff;--yellow:#ffe584;--mint:#92f9df;--white:#fff9ff}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--white);font-family:'DM Sans',system-ui,sans-serif;overflow-x:hidden}button,a{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid var(--yellow);outline-offset:4px}.ambient{position:fixed;inset:0;overflow:hidden;z-index:-1;pointer-events:none;background:radial-gradient(circle at 50% -30%,#553278 0,transparent 55%),#160b31}.orb{position:absolute;border-radius:50%;filter:blur(90px);opacity:.35;animation:float 11s ease-in-out infinite alternate}.o1{width:390px;height:390px;background:#e844b2;top:20%;left:-180px}.o2{width:450px;height:450px;background:#554dec;right:-220px;top:44%;animation-delay:-5s}.o3{width:310px;height:310px;background:#f7c2fb;bottom:1%;left:25%;animation-delay:-9s}#fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:80}#cursorGlow{position:fixed;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,#ff5cb61a,transparent 70%);pointer-events:none;z-index:1;transform:translate(-50%,-50%)}.app.locked{visibility:hidden;height:0;overflow:hidden}.intro{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 45% 20%,#64358f 0%,#271244 50%,#130820 100%);transition:opacity .8s,visibility .8s}.intro.hide{opacity:0;visibility:hidden}.intro-card{width:min(100%,650px);text-align:center;border:1px solid #ffffff30;background:#ffffff0c;backdrop-filter:blur(18px);padding:64px 26px;border-radius:35px;box-shadow:0 30px 100px #0005}.intro-emoji{font-size:90px;animation:bob 2.5s infinite}.intro h1{font-size:clamp(3rem,9vw,5rem);margin:14px 0;letter-spacing:-.06em}.intro p{color:#f4ddec;font-size:1.15rem;line-height:1.8;margin:0 auto 32px;max-width:450px}.intro small{display:block;color:#bdb0ce;margin-top:24px}.eyebrow{font-family:'Space Grotesk',sans-serif;color:#f6bff1;font-size:.76rem;letter-spacing:.19em;font-weight:800;text-transform:uppercase}.nav{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,85px);position:relative;z-index:8;border-bottom:1px solid #ffffff14}.brand{font-family:'Space Grotesk';font-weight:800;letter-spacing:-.05em;font-size:1.3rem}.brand span{color:var(--pink)}.nav-actions{display:flex;gap:10px}.icon-button{border:1px solid #ffffff3b;color:white;background:#ffffff13;padding:11px 16px;border-radius:100px;font-size:.77rem;font-weight:800}.btn{border:0;display:inline-flex;justify-content:center;align-items:center;min-height:54px;padding:15px 27px;border-radius:100px;font-weight:900;font-size:.82rem;letter-spacing:.025em;transition:transform .2s,box-shadow .2s;text-align:center}.btn:hover{transform:translateY(-5px) rotate(-1deg)}.primary{color:#321037;background:linear-gradient(115deg,#ff8cc9,#ffb3e5,#ffe381);box-shadow:0 12px 36px #fc5dba4f}.yellow{background:var(--yellow);color:#362344}.ghost{background:#ffffff14;color:white;border:1px solid #ffffff50}.giant{min-height:65px;padding:20px 36px;font-size:.94rem}.hero{min-height:calc(100svh - 76px);padding:115px 20px 70px;position:relative;display:flex;align-items:center;flex-direction:column;justify-content:center;text-align:center;isolation:isolate}.hero-stars{color:var(--yellow);letter-spacing:2vw;font-size:26px;opacity:.65}.pill{margin:15px 0 25px;border:1px solid #ffb5e858;background:#ffffff15;border-radius:60px;padding:10px 18px}.hero-title{font-family:'Space Grotesk',sans-serif;font-size:clamp(3.65rem,11.5vw,11rem);letter-spacing:-.095em;line-height:.89;margin:0;text-shadow:0 20px 50px #0003}.outline{color:transparent;-webkit-text-stroke:2px #ff9cdb}.shine{background:linear-gradient(100deg,#ff86cd,#fff1ae,#b9ffef,#d9b4ff,#ff86cd);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 5s linear infinite}.hero-star{color:var(--yellow);font-size:.32em;vertical-align:top;display:inline-block;animation:spin 10s linear infinite}.hero-sub{font-size:clamp(1rem,2.2vw,1.28rem);color:#e8c7e9;max-width:530px;line-height:1.7;margin:35px 0 29px}.hero-buttons{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.floating{position:absolute;font-size:clamp(30px,5vw,65px);animation:bob 4s ease-in-out infinite;filter:drop-shadow(0 10px 15px #0003);pointer-events:none}.f1{top:14%;left:13%}.f2{top:20%;right:13%;animation-delay:-1s}.f3{bottom:14%;left:16%;animation-delay:-2s}.f4{bottom:25%;right:15%;animation-delay:-3s}.scroll-cue{font-size:.65rem;letter-spacing:.25em;color:#ab92c4;font-weight:800;position:absolute;bottom:20px;display:flex;flex-direction:column;gap:8px}.scroll-cue span{font-size:25px}.ticker{background:var(--yellow);color:#2c1336;overflow:hidden;transform:rotate(-1deg) scale(1.03);font-weight:900;white-space:nowrap;padding:18px 0;font-size:.97rem;letter-spacing:.09em}.ticker-track{width:max-content;animation:marquee 20s linear infinite}.section{padding:115px clamp(20px,6vw,110px);max-width:1500px;margin:auto;text-align:center;scroll-margin-top:20px}.section h2{font:800 clamp(2.45rem,6vw,5rem)/1.03 'Space Grotesk',sans-serif;letter-spacing:-.075em;margin:18px 0 25px}.section h2 em{font-style:normal;color:#ff83cb}.section p{color:#d2badf;line-height:1.7}.count-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));max-width:750px;margin:45px auto 25px;gap:14px}.count-tile{background:#ffffff10;border:1px solid #ffffff24;padding:25px 10px;border-radius:22px;box-shadow:inset 0 1px #ffffff25}.count-tile strong{display:block;font:800 clamp(2rem,6vw,4.4rem) 'Space Grotesk';color:#ffabe3}.count-tile span{color:#e0cee8;font-size:.72rem;letter-spacing:.15em}.muted{color:#947fae!important;font-size:.88rem}.section-head{display:flex;justify-content:space-between;align-items:center;gap:25px;text-align:left}.section-head p{margin-top:0}.sticker{border:2px dashed var(--yellow);color:var(--yellow);font-weight:900;border-radius:50%;padding:30px 15px;transform:rotate(13deg);white-space:nowrap}.photo-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:18px;margin-top:45px}.photo-card{background:#301947;padding:9px 9px 17px;border-radius:10px;box-shadow:0 15px 35px #0003;grid-column:span 4;transform:rotate(var(--rot,0deg));transition:transform .25s;cursor:pointer}.photo-card:nth-child(5n+1){--rot:-3deg}.photo-card:nth-child(5n+2){--rot:2deg}.photo-card:nth-child(5n+3){--rot:-1deg}.photo-card:nth-child(5n+4){--rot:3deg}.photo-card:hover{transform:rotate(0deg) scale(1.04);z-index:3}.photo-card img{display:block;width:100%;height:280px;object-fit:cover;border-radius:5px}.photo-card figcaption{font-weight:900;margin-top:13px;color:#ffcae9}.placeholder-photo{height:280px;border-radius:5px;display:grid;place-items:center;font-size:80px;background:linear-gradient(145deg,#f9a4de,#a587ed,#96dcfc)}.photo-card:nth-child(2n) .placeholder-photo{background:linear-gradient(145deg,#7fded9,#d7a4f3,#ffb5b5)}.photo-hint code{background:#ffffff19;border-radius:5px;padding:3px 7px}.reason-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:48px}.reason-card{border-radius:24px;padding:34px 20px;min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #ffffff29;background:#ffffff10;transition:transform .2s}.reason-card:hover{transform:translateY(-8px) rotate(-2deg)}.reason-card .emoji{font-size:37px;margin-bottom:18px}.reason-card b{font-size:1.11rem;line-height:1.5}.game-panel{max-width:820px;margin:auto;border-radius:35px;padding:42px;background:linear-gradient(135deg,#69358b80,#46236180);border:1px solid #ffffff2a}.game-arena{position:relative;height:300px;overflow:hidden;border-radius:21px;background:radial-gradient(circle at 50% 70%,#8557a4,#3f215e);margin:25px 0;touch-action:manipulation}.game-prompt{position:absolute;inset:0;display:grid;place-items:center;color:#f6c8ec;font-size:1.3rem;font-weight:900;pointer-events:none}.scorebar{display:flex;justify-content:space-between;font-size:.8rem;letter-spacing:.12em;font-weight:900}.heart-target{position:absolute;font-size:42px;background:none;border:0;animation:heartPop .3s ease-out;touch-action:manipulation}.cake-wrap{width:300px;height:300px;position:relative;margin:50px auto 0}.candles{position:absolute;bottom:219px;left:62px;right:62px;display:flex;justify-content:space-between;z-index:3}.candle{height:64px;width:18px;border:0;border-radius:5px 5px 0 0;background:repeating-linear-gradient(45deg,#fff 0 9px,#e987d0 9px 18px);position:relative}.flame{position:absolute;width:19px;height:28px;background:radial-gradient(circle at 50% 80%,#fff8b4,#ffae20 60%,#ff6571);top:-31px;left:0;border-radius:80% 10% 70% 40%;transform:rotate(45deg);filter:drop-shadow(0 0 13px #ffcb54);animation:flicker .5s alternate infinite}.candle.out .flame{display:none}.cake-top{position:absolute;bottom:199px;left:25px;width:250px;height:42px;background:#ffd4e8;border-radius:50%;z-index:2}.cake-body{position:absolute;bottom:68px;left:25px;width:250px;height:146px;background:linear-gradient(95deg,#ee75ad,#ffb2d3,#e177af);border-radius:9px 9px 30px 30px;display:grid;place-items:center;box-shadow:inset -25px 0 #bc5e9a40}.icing{font-size:25px;color:#fff1d2;letter-spacing:4px}.cake-base{position:absolute;bottom:51px;left:2px;width:296px;height:28px;background:#d8b5ff;border-radius:60%}.cake-status{font-weight:800;font-size:1.1rem!important}.wish-panel{max-width:850px;margin:auto;background:linear-gradient(130deg,#fe77c54a,#7c5ee55c);border:1px solid #ffffff37;border-radius:35px;padding:60px 20px}.wish-output{margin:35px auto;padding:25px;max-width:500px;background:#ffffff12;border-radius:20px;font-size:1.45rem;font-weight:900;min-height:110px;display:grid;place-items:center}.envelope{max-width:690px;margin:40px auto;perspective:800px}.envelope-front{width:100%;background:linear-gradient(145deg,#ff92c7,#e874b5);border:0;min-height:240px;border-radius:20px;color:#51224f;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;box-shadow:0 20px 50px #0004;transition:transform .4s}.envelope-front span{font-size:80px}.envelope-front b{letter-spacing:.1em}.envelope.open .envelope-front{transform:rotateX(13deg);opacity:.8;min-height:90px}.envelope.open .envelope-front span{font-size:25px}.letter-paper{display:none;text-align:left;background:#fff5f3;color:#58294d;border-radius:8px;padding:clamp(25px,5vw,55px);box-shadow:0 15px 65px #0005;margin:-10px 18px 0;position:relative;animation:paperAppear .7s both}.envelope.open .letter-paper{display:block}.letter-paper h3{font:800 2rem 'Space Grotesk';margin:0 0 30px}.letter-paper p{white-space:pre-line;color:#653c59;line-height:2;font-size:1.1rem}.paper-heart{float:right;color:#f05b9c;font-size:35px}.signoff{margin-top:35px;line-height:1.8}.finale{text-align:center;padding:110px 20px 80px;background:radial-gradient(ellipse at 50% 70%,#79396d 0%,#3c1a59 45%,transparent 70%)}.finale h2{font:800 clamp(2.8rem,7vw,7rem)/1.1 'Space Grotesk';letter-spacing:-.08em}.finale p{color:#f7cce7;font-size:1.15rem;margin:25px 0 35px}.big-heart{font-size:90px;margin-top:30px;animation:bob 3s infinite}footer{text-align:center;padding:30px;font-size:.8rem;color:#b497c4;border-top:1px solid #ffffff15}#toast{position:fixed;z-index:120;bottom:25px;left:50%;transform:translate(-50%,120px);background:#ffdfef;color:#481a45;border-radius:50px;padding:15px 24px;font-weight:900;box-shadow:0 15px 40px #0005;transition:transform .4s;width:max-content;max-width:95vw;text-align:center}#toast.show{transform:translate(-50%,0)}.lightbox{position:fixed;z-index:130;inset:0;background:#11081aeF;display:flex;align-items:center;justify-content:center;padding:50px 20px}.lightbox[hidden]{display:none}.lightbox img{max-width:100%;max-height:85vh;object-fit:contain;border-radius:10px}.lightbox button{position:absolute;right:25px;top:20px;border:none;background:#ffffff22;color:white;border-radius:50%;padding:12px 17px;font-size:24px}@keyframes shimmer{to{background-position:250% 0}}@keyframes bob{50%{transform:translateY(-24px) rotate(5deg)}}@keyframes float{to{transform:translate(100px,80px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes marquee{to{transform:translateX(-50%)}}@keyframes flicker{to{transform:rotate(35deg) scale(.85)}}@keyframes paperAppear{from{transform:translateY(-40px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes heartPop{from{transform:scale(0)}to{transform:scale(1)}}@media(max-width:700px){.nav{height:66px;padding:0 16px}.brand{font-size:1.08rem}.nav-actions{gap:6px}.icon-button{padding:9px 10px;font-size:.67rem}.hero{min-height:calc(100svh - 66px);padding:75px 16px}.hero-title{font-size:clamp(3.2rem,12vw,6rem)}.outline{-webkit-text-stroke:1.2px #ff9cdb}.hero-buttons{flex-direction:column;width:min(100%,330px)}.hero-buttons .btn{width:100%}.floating{font-size:31px}.f1{left:4%;top:18%}.f2{right:5%;top:23%}.f3{left:4%;bottom:17%}.f4{right:6%;bottom:14%}.section{padding:85px 19px}.count-grid{gap:7px}.count-tile{padding:19px 4px;border-radius:12px}.count-tile span{font-size:.56rem;letter-spacing:.05em}.section-head{display:block;text-align:center}.sticker{display:none}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.photo-card{grid-column:span 1;padding:6px 6px 11px}.photo-card img,.placeholder-photo{height:190px}.placeholder-photo{font-size:55px}.photo-card figcaption{font-size:.78rem}.reason-grid{grid-template-columns:repeat(2,1fr);gap:10px}.reason-card{padding:20px 9px;min-height:155px}.reason-card b{font-size:.83rem}.game-panel{padding:27px 15px}.game-arena{height:270px}.wish-output{font-size:1.2rem}.intro-card{padding:45px 20px}.intro-emoji{font-size:70px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}

/* Personal memory album */
.photo-filters{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:32px}
.photo-filter{border:1px solid #ffffff30;background:#ffffff0b;color:var(--white);padding:12px 19px;border-radius:30px;font-weight:700}
.photo-filter.active{background:var(--pink);color:#271244;border-color:var(--pink)}
.photo-count{text-align:center;color:#d7bddf;font-size:.85rem;margin:18px 0 0}
.photo-grid{margin-top:30px;align-items:start}
.photo-card{margin:0;min-width:0;padding:10px 10px 20px;cursor:default;background:linear-gradient(145deg,#44244f,#29163f);border:1px solid #ffcae925}
.photo-open{display:block;width:100%;padding:0;border:0;border-radius:6px;overflow:hidden;background:#1c102a}
.photo-card .photo-open img{width:100%;height:auto;aspect-ratio:9/16;object-fit:contain;border-radius:0}
.photo-card figcaption{padding:0 7px}
.photo-label{display:block;font-size:.65rem;letter-spacing:.12em;color:#e6b4d9;margin-bottom:10px}
.photo-card figcaption strong{display:block;font-size:1rem;line-height:1.5}
.photo-card figcaption p{font-size:.84rem;line-height:1.65;font-weight:400;color:#ddc9e2;margin:8px 0 0}
@media(max-width:700px){.photo-grid{gap:22px 14px}.photo-card{padding:6px 6px 14px}.photo-card figcaption{padding:0 3px}.photo-card figcaption strong{font-size:.85rem}.photo-card figcaption p{font-size:.75rem}.photo-label{font-size:.55rem;letter-spacing:.06em}.photo-filter{font-size:.8rem;padding:10px 13px}}
@media(max-width:380px){.photo-grid{grid-template-columns:1fr}.photo-card{max-width:290px;margin:auto;width:100%}}

/* Animated memory cards and an interactive story viewer. */
.album-actions{text-align:center;margin-top:22px}
.photo-filter{transition:background .25s,transform .25s,box-shadow .25s}
.photo-filter:hover{transform:translateY(-3px);box-shadow:0 6px 22px #ff61bd24}
.photo-card{animation:memoryReveal .55s backwards;animation-delay:var(--reveal-delay,0ms);transition:transform .3s,box-shadow .3s,border-color .3s}
.photo-open{position:relative}
.photo-open::after{content:'↗ Open memory';position:absolute;bottom:14px;left:50%;transform:translate(-50%,8px);opacity:0;background:#241333d9;color:#fff;padding:9px 14px;border-radius:30px;font-size:.75rem;white-space:nowrap;transition:opacity .25s,transform .25s;pointer-events:none}
.photo-open:hover::after,.photo-open:focus-visible::after{opacity:1;transform:translate(-50%,0)}
@media(hover:hover){.photo-card:hover{transform:translateY(-9px) rotate(0deg);border-color:#ff9ddf90;box-shadow:0 24px 55px #0006,0 0 30px #ff61bd18}}
.lightbox{backdrop-filter:blur(16px);padding:70px 20px 24px;overflow-y:auto}
.lightbox-story{width:min(100%,850px);text-align:center;margin:auto}
.lightbox-story img{display:block;margin:auto;max-height:calc(100svh - 255px);max-width:100%;touch-action:pan-y pinch-zoom;box-shadow:0 20px 70px #0006}
#lightboxCaption{font-size:clamp(.95rem,3vw,1.2rem);color:#ffcee8;margin:18px 0 12px;font-weight:700}
.story-controls{display:flex;justify-content:center;align-items:center;gap:14px}
.lightbox .story-controls button{position:static;border-radius:30px;min-width:44px;min-height:44px;padding:10px 16px;font-size:1rem}
.lightbox .story-controls button:hover{background:#ff61bd55}
.lightbox .story-controls button:disabled{opacity:.4;cursor:default}
#photoPosition{font-size:.8rem;min-width:45px;color:#edd5f5;font-variant-numeric:tabular-nums}
.lightbox-story small{display:block;margin-top:14px;color:#bb9ccf;font-size:.7rem}
@keyframes memoryReveal{from{opacity:0;translate:0 24px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:reduce){.photo-card{animation:none}.photo-filter:hover,.photo-card:hover{transform:none}}
