:root{--pink:#ff6fa8;--hot:#ff4f93;--cream:#fff8f2;--ink:#3b2431;--lav:#b99cff;--peach:#ffc1a6}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:'Baloo 2',system-ui,sans-serif;overflow-x:hidden}.grain{position:fixed;inset:0;pointer-events:none;opacity:.06;z-index:4;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E")}#confetti{position:fixed;inset:0;z-index:10;pointer-events:none}.section{min-height:100svh;padding:80px 7vw;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;position:relative}.hero{background:radial-gradient(circle at 20% 15%,#ffd4e5 0 15%,transparent 35%),radial-gradient(circle at 85% 75%,#ddd0ff 0 12%,transparent 35%),linear-gradient(145deg,#fff5f8,#fff8ef)}.badge{font-size:12px;font-weight:800;letter-spacing:1.5px;background:#fff;border:2px solid #ffd1e2;border-radius:999px;padding:8px 15px;box-shadow:0 8px 25px #e79ab833}.eyebrow{margin:0 0 10px;text-transform:uppercase;letter-spacing:2px;font-size:13px;font-weight:800;color:#c65a86}.hero h1,h2{margin:0;line-height:.95;font-weight:800}.hero h1{font-size:clamp(58px,11vw,130px);margin:20px 0 25px;letter-spacing:-3px}.hero h1 span,h2 span{color:var(--hot);font-family:Pacifico,cursive;font-weight:400}.sub{max-width:650px;font-size:clamp(17px,2vw,22px);line-height:1.35;margin:0 auto 28px}.primary{border:0;background:var(--ink);color:white;border-radius:999px;padding:15px 24px;font:700 17px 'Baloo 2';cursor:pointer;box-shadow:0 10px 0 #24151d;transition:.2s transform,.2s box-shadow}.primary:hover{transform:translateY(-3px);box-shadow:0 13px 0 #24151d}.primary:active{transform:translateY(4px);box-shadow:0 6px 0 #24151d}.scroll-hint{position:absolute;bottom:28px;font-size:14px;opacity:.6}.floating span{position:fixed;z-index:2;color:#ff7eac;opacity:.45;font-size:28px;animation:float 8s ease-in-out infinite}.floating span:nth-child(1){left:5%;top:20%}.floating span:nth-child(2){right:8%;top:25%;animation-delay:1s}.floating span:nth-child(3){left:12%;bottom:25%;animation-delay:2s}.floating span:nth-child(4){right:12%;bottom:18%;animation-delay:3s}.floating span:nth-child(5){left:45%;top:8%;animation-delay:1.5s}.floating span:nth-child(6){right:45%;bottom:7%;animation-delay:2.5s}@keyframes float{50%{transform:translateY(-25px) rotate(15deg)}}h2{font-size:clamp(42px,7vw,78px)}.memory{background:#fff}.photo-grid{width:min(1000px,100%);display:grid;grid-template-columns:1.2fr .8fr;gap:18px;margin-top:45px}.photo-card{min-height:220px;border:8px solid white;background:#f5e8ee;box-shadow:0 15px 35px #6e40511c;border-radius:5px;overflow:hidden}.photo-card.large{grid-row:span 2;min-height:470px}.placeholder{height:100%;min-height:220px;display:flex;align-items:center;justify-content:center;flex-direction:column;background:repeating-linear-gradient(135deg,#fbe4ed,#fbe4ed 12px,#f6d8e3 12px,#f6d8e3 24px);font-weight:800;color:#a95778;letter-spacing:1px}.placeholder small{font-size:12px;font-weight:600;opacity:.65}.tilt-left{transform:rotate(-2deg)}.tilt-right{transform:rotate(2deg)}.message{background:#ffddeb;padding-top:110px;padding-bottom:110px}.letter{width:min(720px,100%);background:#fffdf8;text-align:left;padding:55px clamp(25px,7vw,70px);position:relative;box-shadow:0 25px 55px #8f466022;transform:rotate(-1deg);font-size:18px;line-height:1.55}.letter:after{content:'♡';position:absolute;right:25px;bottom:10px;font-size:55px;color:#ffd0df}.tape{position:absolute;width:130px;height:30px;background:#ffd3df;top:-14px;left:50%;transform:translateX(-50%) rotate(2deg);opacity:.8}.letter h2{font-size:42px;margin-bottom:20px}.signature{font-family:Pacifico,cursive;color:#e85c92;font-size:24px}.signature span{font-family:'Baloo 2';font-size:14px;color:#8d5a6e}.cake-section{background:linear-gradient(#fff8f2,#fff0f6)}.instruction{font-size:18px;margin:18px 0}.cake-wrap{width:280px;height:250px;position:relative;margin:20px 0 10px}.plate{position:absolute;width:280px;height:24px;border-radius:50%;background:#e7a5ba;bottom:8px;left:0;box-shadow:0 5px 0 #d783a2}.cake-body{position:absolute;width:210px;height:110px;left:35px;bottom:25px;background:#ff91b7;border-radius:12px 12px 20px 20px;box-shadow:inset 0 -12px #ef6c9b}.cake-top{position:absolute;width:210px;height:55px;left:35px;bottom:112px;border-radius:50%;background:#fff0f5;border:7px solid #ff8eaf}.icing{position:absolute;left:0;top:15px;width:100%;height:28px;background:#fff4f7;border-radius:50%;box-shadow:0 12px #fff4f7}.sprinkles{position:absolute;bottom:20px;width:100%;font-size:25px;letter-spacing:5px;color:#fff}.candle{position:absolute;width:14px;height:55px;background:#fff;border-radius:4px;bottom:165px;z-index:2}.c1{left:85px}.c2{left:133px}.c3{left:181px}.candle:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(-45deg,transparent 0 6px,#ff7da8 6px 10px);border-radius:4px}.flame{position:absolute;width:18px;height:25px;background:#ffbd45;border-radius:50% 50% 50% 0;transform:rotate(-45deg);bottom:220px;z-index:3;filter:drop-shadow(0 0 8px #ffb400);animation:flicker .45s infinite alternate}.flame1{left:83px}.flame2{left:131px}.flame3{left:179px}@keyframes flicker{to{transform:rotate(-40deg) scale(1.1)}}.wish{font-size:18px;font-weight:700;max-width:500px}.cake-section.blown .flame{display:none}.gift{background:#f0eaff}.gift-box{width:170px;height:170px;position:relative;margin-bottom:35px;cursor:pointer;animation:bob 2s infinite}.box{position:absolute;width:125px;height:90px;background:#ff6fa8;bottom:0;left:22px;border-radius:4px;box-shadow:inset 0 -8px #e9508c}.lid{position:absolute;width:145px;height:38px;background:#ff85b5;left:12px;top:45px;border-radius:7px;z-index:2;box-shadow:0 6px #df4f8d}.ribbon-v{position:absolute;width:24px;height:125px;background:#ffd35c;left:73px;top:45px;z-index:3}.ribbon-h{position:absolute;width:145px;height:20px;background:#ffd35c;left:12px;top:65px;z-index:4}@keyframes bob{50%{transform:translateY(-8px) rotate(2deg)}}.gift-message{max-height:0;overflow:hidden;transition:.7s ease;margin-top:25px}.gift-message.open{max-height:300px}.gift-card{background:white;border-radius:20px;padding:25px;max-width:500px;box-shadow:0 15px 40px #6c4eaa1c;font-size:20px}.gift-card span{display:block;margin:12px 0;font-size:17px}.final{background:linear-gradient(145deg,#ffecf4,#eae2ff);min-height:90svh}.big-heart{font-size:95px;color:#ff5b9c;animation:heart 1s infinite;line-height:1}@keyframes heart{50%{transform:scale(1.15)}}footer{margin-top:60px;font-size:12px;opacity:.55}.reveal{opacity:0;transform:translateY(35px);transition:1s ease}.reveal.visible{opacity:1;transform:none}@media(max-width:650px){.section{padding:70px 20px}.hero h1{letter-spacing:-1px}.sub{font-size:17px}.photo-grid{grid-template-columns:1fr 1fr;gap:10px}.photo-card.large{grid-column:span 2;grid-row:auto;min-height:300px}.photo-card{min-height:170px;border-width:5px}.placeholder{min-height:165px;font-size:12px;text-align:center}.letter{font-size:16px;padding:48px 24px}.letter h2{font-size:36px}.cake-wrap{transform:scale(.9)}.floating span{font-size:20px}.badge{font-size:10px}.scroll-hint{bottom:16px}}

/* --- Cute game zone --- */
.games { padding-top: 80px; }
.game-grid { width:min(100%, 980px); margin:35px auto 0; display:grid; grid-template-columns:repeat(2,1fr); gap:22px; }
.game-card { position:relative; background:rgba(255,255,255,.82); border:2px solid rgba(255,111,168,.18); border-radius:30px; padding:26px; box-shadow:0 18px 45px rgba(116,63,94,.10); overflow:hidden; }
.game-icon { font-size:2.6rem; margin-bottom:4px; }
.game-card h3 { font-size:1.65rem; margin:0 0 4px; }
.game-card p { margin:6px 0 14px; }
.game-stats { display:flex; justify-content:space-between; font-size:.95rem; background:#fff3f8; border-radius:14px; padding:9px 13px; margin-bottom:10px; }
.heart-arena { height:245px; border-radius:22px; position:relative; overflow:hidden; background:radial-gradient(circle at 50% 20%, #fff 0 2%, transparent 3%), linear-gradient(145deg,#fff4f8,#ffe4ef); border:2px dashed #ffc0d8; }
.heart-target { position:absolute; border:0; background:transparent; font-size:2rem; cursor:pointer; animation:heartPop .8s ease-out; z-index:2; filter:drop-shadow(0 4px 3px rgba(255,85,145,.22)); }
@keyframes heartPop { 0%{transform:scale(.2) rotate(-20deg);opacity:0} 70%{transform:scale(1.15) rotate(8deg);opacity:1} 100%{transform:scale(1)} }
.game-start-overlay { position:absolute; inset:0; display:grid; place-items:center; z-index:5; background:rgba(255,244,248,.65); backdrop-filter:blur(2px); }
.game-start-overlay.hidden { display:none; }
.small { padding:11px 17px; font-size:.95rem; }
.game-result { min-height:25px; font-weight:700; color:#e75591; }
.quiz-question { min-height:78px; display:grid; place-items:center; text-align:center; background:#fff3f8; border-radius:18px; padding:12px; font-weight:800; font-size:1.15rem; margin:18px 0 12px; }
.quiz-options { display:grid; gap:9px; }
.quiz-options button { width:100%; }
.quiz-progress { text-align:center; font-size:.9rem; margin-top:12px; opacity:.7; }
.secondary { border:2px solid #ff91bb; background:white; color:#d84d89; padding:13px 20px; border-radius:999px; font:inherit; font-weight:800; cursor:pointer; transition:.2s; }
.secondary:hover { transform:translateY(-2px); }
.choice-buttons { display:flex; justify-content:center; align-items:center; gap:14px; flex-wrap:wrap; margin:25px 0 10px; }
.no-button { transition:transform .15s ease; }
.crying-elephant { display:none; position:relative; margin:20px auto 0; min-height:185px; max-width:400px; }
.crying-elephant.show { display:block; animation:elephantEnter .5s ease both; }
.elephant { font-size:7rem; line-height:1; filter:drop-shadow(0 8px 8px rgba(100,70,80,.13)); animation:elephantCry 1s ease-in-out infinite; }
@keyframes elephantCry { 0%,100%{transform:translateY(0) rotate(-2deg)} 50%{transform:translateY(8px) rotate(2deg)} }
@keyframes elephantEnter { from{opacity:0;transform:scale(.7)} to{opacity:1;transform:scale(1)} }
.tear { position:absolute; font-size:1.4rem; animation:tearDrop 1.15s infinite; }
.tear-one { left:calc(50% - 42px); top:67px; }.tear-two { left:calc(50% + 10px); top:68px; animation-delay:.3s; }
@keyframes tearDrop { 0%{opacity:0;transform:translateY(-4px)} 30%{opacity:1} 100%{opacity:0;transform:translateY(48px)} }
.speech-bubble { position:absolute; right:0; top:0; background:white; border:2px solid #ffb7d1; border-radius:18px; padding:11px 14px; font-weight:800; font-size:.85rem; box-shadow:0 8px 25px rgba(110,50,80,.1); transform:rotate(2deg); }
.speech-bubble small { font-weight:600; opacity:.7; }
.gift-message { max-height:0; overflow:hidden; transition:max-height .8s ease; }
.gift-message.open { max-height:300px; }
.gift-box.opened { animation:giftBounce .65s ease; }
@keyframes giftBounce { 30%{transform:translateY(-22px) rotate(-4deg)} 60%{transform:translateY(0) rotate(4deg)} 100%{transform:none} }

@media (max-width:720px){
  .game-grid{grid-template-columns:1fr;}
  .game-card{padding:20px;border-radius:24px;}
  .heart-arena{height:220px;}
  .speech-bubble{position:relative;right:auto;top:auto;display:inline-block;margin-top:4px;}
  .crying-elephant{min-height:230px;}
  .elephant{font-size:6.3rem;}
  .choice-buttons .primary,.choice-buttons .secondary{width:100%;max-width:320px;}
}

/* --- Birthday points + extra games --- */
.points-bar{width:min(980px,100%);margin:24px auto 0;background:#fff;border:2px solid #ffd0e0;border-radius:18px;padding:12px 16px;font-weight:800;box-shadow:0 10px 25px rgba(116,63,94,.07)}
.points-bar b{color:#e85591}.points-bar span{display:block;font-size:.82rem;font-weight:600;opacity:.65;margin-top:2px}
.balloon-arena,.runner-arena{height:245px;border-radius:22px;position:relative;overflow:hidden;background:linear-gradient(180deg,#eef1ff,#fff0f6);border:2px dashed #ffc0d8}
.balloon{position:absolute;border:0;background:transparent;font-size:2.8rem;cursor:pointer;z-index:2;animation:balloonFloat 2.8s linear forwards;filter:drop-shadow(0 5px 3px rgba(100,70,100,.15));padding:0}
@keyframes balloonFloat{from{transform:translateY(270px) rotate(-5deg)}to{transform:translateY(-85px) rotate(7deg)}}
.balloon.pop{animation:balloonPop .18s ease forwards}@keyframes balloonPop{to{transform:scale(1.7);opacity:0}}
.memory-board{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:15px 0;min-height:190px}
.memory-card-item{border:0;border-radius:14px;background:#ffedf5;color:#d84d89;font-size:1.7rem;cursor:pointer;min-height:72px;box-shadow:inset 0 -4px #ffd0e0;transition:.2s;position:relative;transform-style:preserve-3d}
.memory-card-item.flipped,.memory-card-item.matched{background:#fff;border:2px solid #ff9fc2;transform:rotateY(180deg)}
.memory-card-item.matched{background:#fff4c9;border-color:#ffd76b}
.memory-card-item .front,.memory-card-item .back{position:absolute;inset:0;display:grid;place-items:center;backface-visibility:hidden}.memory-card-item .front{font-size:1.4rem}.memory-card-item .back{transform:rotateY(180deg)}
.runner-arena{background:linear-gradient(#dff7ff 0 68%,#d5f1ce 68%);touch-action:manipulation}
.runner-ground{position:absolute;left:0;right:0;bottom:22px;height:4px;background:#7cb36e}
.runner-elephant{position:absolute;left:35px;bottom:24px;font-size:3rem;z-index:3;filter:drop-shadow(0 4px 2px rgba(0,0,0,.1));transition:bottom .12s}
.runner-elephant.jump{bottom:105px}
.runner-obstacle{position:absolute;right:-45px;bottom:24px;font-size:2rem;z-index:2;animation:obstacleRun 2.2s linear forwards}.runner-obstacle.cake{font-size:2.2rem}
@keyframes obstacleRun{to{right:calc(100% + 50px)}}
.runner-start{position:absolute;inset:0;display:grid;place-items:center;background:rgba(255,255,255,.45);z-index:5}.runner-start.hidden{display:none}
.runner-arena.hit .runner-elephant{animation:ouch .4s ease}@keyframes ouch{50%{transform:rotate(-15deg) scale(1.15)}}
@media(max-width:720px){.points-bar{font-size:.9rem}.balloon-arena,.runner-arena{height:220px}.memory-board{gap:6px}.memory-card-item{min-height:62px;font-size:1.45rem}}

/* --- Unlock / secret ending --- */
.points-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.points-track{height:10px;background:#ffe4ee;border-radius:99px;overflow:hidden;margin:10px 0 7px}
.points-fill{height:100%;width:0%;background:linear-gradient(90deg,#ff91b8,#c89bff);border-radius:99px;transition:width .6s cubic-bezier(.2,.8,.2,1)}
.locked-gift .gift-box,.locked-gift .choice-buttons{opacity:.55;filter:grayscale(.25)}
.choice-buttons button:disabled{opacity:.45;cursor:not-allowed;transform:none!important}
.unlock-note{width:min(720px,100%);margin:0 auto 20px;padding:14px 18px;border:2px dashed #ffc0d8;border-radius:18px;background:#fff5f9;font-size:.92rem}
.unlocked-gift .unlock-note{background:#f2fff5;border-color:#a9e8bc;animation:unlockPulse 1.2s ease}
@keyframes unlockPulse{0%{transform:scale(.96);opacity:.4}60%{transform:scale(1.02)}100%{transform:scale(1);opacity:1}}
.secret-ending{display:none}
.secret-ending.gold-unlocked{display:block;background:linear-gradient(135deg,#fff7cf,#fff0f7)}
.secret-badge{display:inline-block;padding:7px 12px;border-radius:999px;background:#fff;border:2px solid #ffd66b;font-weight:900;font-size:.8rem}
.secret-card{margin:20px auto 0;max-width:520px;padding:22px;border-radius:24px;background:#fff;border:2px solid #ffd66b;box-shadow:0 12px 30px rgba(120,80,30,.1);font-size:1.1rem}
.secret-card small{opacity:.7}
@media(max-width:720px){.unlock-note{font-size:.84rem}.points-head{font-size:.9rem}}
.real-photos .photo-card{position:relative;display:flex;flex-direction:column;background:#fff;cursor:zoom-in;transition:transform .25s ease,box-shadow .25s ease}.real-photos .photo-card:hover{transform:translateY(-5px) rotate(0deg);box-shadow:0 20px 40px #6e40512b}.real-photos .photo-card img{width:100%;height:100%;min-height:220px;object-fit:cover;display:block}.real-photos .photo-card.large img{min-height:470px}.real-photos figcaption{padding:10px 12px 12px;font-size:14px;font-weight:700;background:#fff;text-align:center;color:#7b4c60}.photo-tip{margin:18px 0 0;font-size:13px;opacity:.6}.photo-lightbox{position:fixed;inset:0;background:#1e1018eF;z-index:30;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:24px;opacity:0;visibility:hidden;transition:.25s ease}.photo-lightbox.open{opacity:1;visibility:visible}.photo-lightbox img{max-width:min(92vw,900px);max-height:82vh;object-fit:contain;border:7px solid white;border-radius:8px;box-shadow:0 25px 70px #0008}.photo-lightbox p{color:white;font-size:17px;margin:12px 0 0;text-align:center}.lightbox-close{position:absolute;right:20px;top:16px;width:46px;height:46px;border:0;border-radius:50%;background:white;color:var(--ink);font-size:30px;cursor:pointer;line-height:1}.no-scroll{overflow:hidden}@media(max-width:650px){.real-photos .photo-card img{min-height:165px}.real-photos .photo-card.large img{min-height:300px}.real-photos figcaption{font-size:12px;padding:8px 5px 10px}.photo-lightbox{padding:16px}.photo-lightbox img{max-width:95vw;max-height:78vh;border-width:4px}}
