@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,600;0,700;1,600;1,700&display=swap');
:root{--cream:#fff5ec;--white:#fffcf8;--pink:#f4c8cc;--rose:#c98288;--deep:#9e4e61;--brown:#80564f;--ink:#583e3b;--line:#efd9d1;--shadow:0 14px 36px #a66c6520}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:86px}body{margin:0;background:var(--cream);color:var(--ink);font-family:'DM Sans',sans-serif;overflow-x:hidden}.paper-grain{pointer-events:none;position:fixed;inset:0;z-index:10;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.15'/%3E%3C/svg%3E")}.topbar{height:70px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(16px,5vw,76px);background:#fffcf8ed;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;backdrop-filter:blur(14px)}a{color:inherit;text-decoration:none}.brand{font-family:'Playfair Display',serif;font-weight:700;font-size:1.25rem;color:var(--deep);white-space:nowrap}.brand span{color:var(--rose)}nav{display:flex;gap:clamp(10px,1.7vw,25px);font-size:.82rem}nav a:hover{color:var(--deep)}.top-actions{display:flex;gap:10px;align-items:center}.round,.admin-link{border:0;border-radius:99px;background:#f7dce0;color:var(--deep);padding:10px 14px;cursor:pointer}.admin-link{background:var(--rose);color:white}.menu-toggle{display:none;border:0;background:none;font-size:1.5rem;color:var(--deep)}.section-wrap{width:min(1160px,calc(100% - 40px));margin:auto;padding:82px 0}.hero{min-height:590px;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:35px;padding-top:64px;padding-bottom:70px}.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:.7rem;font-weight:700;color:var(--rose)}h1,h2,h3,p{margin-top:0}h1,h2{font-family:'Playfair Display',serif}h1{font-size:clamp(2.7rem,5.2vw,4.8rem);line-height:1.05;letter-spacing:-.04em;color:var(--deep);margin:18px 0}h1 em{font-weight:600;color:#bd6d7b}h2{font-size:clamp(2rem,4vw,3rem);color:var(--deep);margin:12px 0}h2 span{font-family:serif;color:var(--rose)}.hero-copy>p{font-size:1.1rem;color:#9b716b;margin-bottom:28px}.hero-buttons{display:flex;flex-wrap:wrap;gap:12px}.btn{border:0;border-radius:99px;padding:13px 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font:600 .9rem 'DM Sans',sans-serif;cursor:pointer;transition:transform .2s,box-shadow .2s}.btn:hover{transform:translateY(-2px);box-shadow:0 8px 18px #b86b7626}.primary{background:var(--rose);color:white;box-shadow:0 5px 0 #a95f69}.secondary{background:#fffaf6;color:var(--deep);border:1px solid #e9c6c5}.tiny{font-size:.78rem;padding:9px 15px;background:#f3d6d9;color:var(--deep)}.handnote{font-family:'Playfair Display',serif;font-style:italic;transform:rotate(-7deg);color:var(--rose);margin:28px 0 0 35px}.hero-art{height:450px;position:relative;display:flex;align-items:center;justify-content:center;background:#f9e6df;border:1px solid #efd4ca;border-radius:48% 48% 45% 45% / 35% 35% 50% 50%;box-shadow:var(--shadow);background-image:radial-gradient(#fff9f5 1px,transparent 1px);background-size:19px 19px}.polaroid{background:#fffdf9;padding:10px 10px 16px;box-shadow:0 8px 20px #71463c2b;text-align:center;position:absolute;z-index:2}.tilt-left{left:2%;top:10%;transform:rotate(-9deg)}.photo-frame{width:105px;height:115px;background:linear-gradient(145deg,#f7dce0,#fff1e7);display:grid;place-items:center;color:#b7797b;font-family:'Playfair Display',serif;font-size:.85rem}.polaroid small{display:block;margin-top:9px;font-family:'Playfair Display',serif;font-style:italic;font-size:.7rem}.cake-scene{position:relative;margin-top:70px;width:270px;height:250px;display:flex;align-items:flex-end;justify-content:center}.cake{width:230px;position:relative;text-align:center}.candle-row{height:64px;display:flex;justify-content:center;gap:15px;align-items:flex-end}.candle{height:52px;width:10px;border:0;border-radius:4px 4px 1px 1px;background:repeating-linear-gradient(135deg,#f8b7c4 0 5px,#fff3e9 5px 9px);position:relative;cursor:pointer}.candle i{position:absolute;width:12px;height:18px;background:radial-gradient(ellipse at 50% 65%,#fff9c6 0 15%,#ffbd57 40%,#ef7c69 72%,transparent 74%);top:-19px;left:-1px;filter:drop-shadow(0 0 5px #ffc46c);animation:flicker .8s infinite alternate}.candle:not(.lit) i{display:none}.icing{height:26px;border-radius:50% 50% 12px 12px;background:#fff1e8;border:2px solid #f7c7cb;position:relative;z-index:1}.cake-top{position:absolute;top:53px;left:0;right:0;font-family:'Playfair Display',serif;font-style:italic;font-size:.8rem;color:#a95f69;z-index:2}.cake-body{height:80px;background:repeating-linear-gradient(90deg,#f5b7c2 0 18px,#fbe0db 18px 36px);border-radius:5px 5px 20px 20px;display:flex;align-items:center;justify-content:space-around;color:#fff;font-size:1.5rem;box-shadow:inset 0 -8px #d88d9a}.cake-base{height:14px;background:#fff3e9;border-radius:50%;box-shadow:0 7px 0 #eab5b8}.cat-sticker{position:absolute;right:-15px;bottom:25px;transform:rotate(9deg);background:#fffaf5;padding:12px;border-radius:45% 45% 30% 30%;box-shadow:var(--shadow);text-align:center;color:#bc7a82;font-size:1.25rem}.cat-sticker span{font-size:.65rem}.sticker{position:absolute;color:var(--rose);font-size:2rem}.sticker-bow{right:6%;top:8%;transform:rotate(12deg)}.sticker-heart{left:18%;bottom:8%;font-size:3rem}.sparkle{position:absolute;color:#d99aa2;font-size:2rem}.s1{left:0;top:30px}.s2{right:0;top:60px}@keyframes flicker{to{transform:rotate(8deg) scale(.9);opacity:.8}}.section-heading{text-align:center;margin-bottom:32px}.section-heading p{color:#9b7770}.details{padding-top:25px}.detail-card{background:#fffaf6;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:22px;padding:25px;display:flex;align-items:center;gap:20px}.calendar-icon{width:65px;height:65px;border-radius:18px;background:#f8dfe0;display:grid;place-items:center;color:var(--deep);font-size:1.7rem;flex-shrink:0}.calendar-icon small{font-size:.55rem;letter-spacing:.1em}.detail-card h3{margin:3px 0 5px;font-family:'Playfair Display',serif}.detail-card p{margin:0;color:var(--rose);font-size:.8rem}.detail-card span{font-size:.8rem;color:#a58a83}.countdown{display:flex;gap:10px;margin-left:auto}.countdown div{background:#f8dfe0;border-radius:13px;min-width:65px;padding:13px 8px;text-align:center}.countdown b,.countdown small{display:block}.countdown b{font-size:1.4rem;color:var(--deep)}.countdown small{font-size:.65rem;color:#9b6e70}.wish-section{padding-top:70px}.wish-card{max-width:700px;margin:auto;text-align:center;background:#fffaf6;border:1px solid var(--line);border-radius:28px;padding:35px;box-shadow:var(--shadow)}.wish-cake-mini{font-size:4.5rem;filter:drop-shadow(0 8px 6px #b7787430)}.wish-card>p:first-of-type{font-family:'Playfair Display',serif;font-size:1.4rem;color:var(--deep);margin:12px 0}.muted{font-size:.78rem;color:#a58a83}.wish-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:20px 0}.status{font-size:.8rem;color:var(--rose);min-height:1.2em}.candle-controls{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.gift-stage{text-align:center;padding:30px;background:radial-gradient(ellipse,#f9e1e0,transparent 70%);border-radius:30px}.gift-box{width:190px;height:170px;margin:30px auto 22px;position:relative;cursor:pointer;perspective:500px;transition:transform .25s}.gift-box:hover{transform:rotate(-2deg) scale(1.03)}.gift-body{position:absolute;bottom:0;left:15px;right:15px;height:115px;border-radius:8px 8px 15px 15px;background:linear-gradient(90deg,#e89da9,#f4c5c8 48%,#d98596);box-shadow:inset -9px 0 #d88797,0 15px 20px #b86b762b;display:flex;justify-content:center;align-items:center;color:#fff8f4;font-family:'Playfair Display',serif}.gift-ribbon{position:absolute;top:0;bottom:0;left:44%;width:25px;background:#fff1e4;box-shadow:inset 4px 0 #fce2d5}.gift-lid{position:absolute;z-index:2;top:28px;left:0;right:0;height:32px;background:#d98596;border-radius:5px;box-shadow:0 5px 0 #c97486;transform-origin:left;transition:transform .8s}.bow{position:absolute;left:50%;top:-33px;transform:translateX(-50%);font-size:3.2rem;filter:drop-shadow(0 4px 2px #a95f6940)}.gift-glow{position:absolute;inset:-30px;background:#fff5b8;border-radius:50%;filter:blur(35px);opacity:0;transition:opacity .6s}.gift-box.open .gift-lid{transform:translate(-15px,-75px) rotate(-24deg)}.gift-box.open .gift-glow{opacity:.8}.gift-box.open .bow{opacity:.3}.gift-reveal{max-width:400px;margin:24px auto;padding:24px;background:#fffdf9;border:1px dashed #dfa9ac;border-radius:20px;animation:pop .5s both}.reveal-icon{font-size:2.5rem}@keyframes pop{from{opacity:0;transform:translateY(15px) scale(.9)}to{opacity:1;transform:none}}.letter-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.letter-card{background:#fffaf6;border:1px solid var(--line);border-radius:18px;padding:20px 12px;cursor:pointer;color:var(--ink);box-shadow:var(--shadow);transition:transform .2s}.letter-card:hover{transform:translateY(-5px) rotate(-1deg)}.envelope{display:block;font-size:2.7rem;color:var(--rose);margin-bottom:13px}.letter-card b,.letter-card small{display:block}.letter-card b{font-family:'Playfair Display',serif;font-size:.95rem}.letter-card small{font-size:.7rem;color:#a58a83;margin-top:7px}.gallery-tools{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin-bottom:25px}.upload-btn{cursor:pointer}.gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;align-items:start}.memory{position:relative;transform:rotate(-2deg);width:100%;padding:12px 12px 18px}.memory:nth-child(2){transform:rotate(3deg);margin-top:20px}.memory:nth-child(3){transform:rotate(-1deg);margin-top:5px}.memory-photo{height:245px;background:#f6dfda;display:grid;place-items:center;color:#b47d7d;overflow:hidden;cursor:zoom-in}.memory-photo img{width:100%;height:100%;object-fit:cover}.placeholder{font-family:'Playfair Display',serif;font-style:italic}.memory small{font-size:.85rem}.gallery-grid .polaroid small{margin-top:13px}.games-section{padding-top:70px}.game-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:13px}.game-card{background:#fffaf6;border:1px solid var(--line);border-radius:20px;padding:22px 14px;text-align:center;box-shadow:var(--shadow)}.game-emoji{font-size:2.8rem}.game-card h3{font-family:'Playfair Display',serif;color:var(--deep);margin:12px 0 7px}.game-card p{font-size:.76rem;line-height:1.5;color:#9b7770;min-height:44px}.game-output{margin:20px auto 0;max-width:600px;background:#fffaf6;border:1px dashed #dfa9ac;border-radius:20px;padding:24px;text-align:center}.message-form{max-width:600px;margin:0 auto 28px;background:#fffaf6;padding:22px;border:1px solid var(--line);border-radius:20px;display:grid;gap:12px}.message-form input,.message-form textarea,.admin-form input,.admin-form textarea,.admin-form select{font:inherit;color:var(--ink);background:#fffdf9;border:1px solid var(--line);border-radius:10px;padding:12px;width:100%}.message-form textarea{min-height:100px;resize:vertical}.message-form .muted{margin:0}.message-list{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.message-note{background:#fffaf6;padding:20px;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);transform:rotate(-1deg)}.message-note:nth-child(even){transform:rotate(1deg)}.message-note b{color:var(--deep);font-family:'Playfair Display',serif}.message-note p{margin:8px 0 0;font-size:.9rem;overflow-wrap:anywhere}footer{padding:28px 5%;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:#a17b74;font-size:.8rem}.music-player{position:fixed;z-index:15;bottom:14px;left:50%;transform:translateX(-50%);width:min(500px,calc(100% - 24px));background:#fffdf9f2;backdrop-filter:blur(15px);border:1px solid var(--line);border-radius:99px;box-shadow:0 8px 30px #8f5d5420;display:flex;align-items:center;gap:12px;padding:9px 15px}.music-disc{width:38px;height:38px;border-radius:50%;background:#f5d6d9;display:grid;place-items:center;color:var(--deep)}.music-info{flex:1;min-width:0}.music-info b,.music-info small{display:block}.music-info b{font-size:.8rem}.music-info small{font-size:.65rem;color:#a58a83}.music-player button{border:0;background:none;color:var(--deep);cursor:pointer}.volume{display:flex;align-items:center;font-size:.8rem;color:var(--rose)}.volume input{width:65px;accent-color:var(--rose)}.modal{position:fixed;inset:0;z-index:40;background:#543b3bb0;backdrop-filter:blur(6px);display:grid;place-items:center;padding:20px}.hidden{display:none!important}.modal-paper{position:relative;width:min(580px,100%);max-height:90vh;overflow:auto;background:#fff8ee;border:1px solid #e7c9bd;box-shadow:0 20px 80px #412c2c50;padding:42px;border-radius:5px;background-image:repeating-linear-gradient(0deg,transparent 0 31px,#e8cfc333 32px)}.modal-close{position:absolute;right:15px;top:12px;border:0;background:#f6dfe0;color:var(--deep);width:35px;height:35px;border-radius:50%;font-size:1.5rem;cursor:pointer}.modal-flower{text-align:center;font-size:2rem;color:var(--rose)}.modal-paper h2{text-align:center;font-size:2.2rem}.typed-letter{font-family:'Playfair Display',serif;line-height:1.9;white-space:pre-wrap;min-height:100px}.modal-actions{display:flex;justify-content:center;gap:10px;margin-top:24px;flex-wrap:wrap}.lightbox-content{position:relative;display:flex;align-items:center;gap:15px;max-width:90vw;max-height:90vh}.lightbox-content img{max-width:min(70vw,700px);max-height:75vh;object-fit:contain;border:12px solid white;box-shadow:var(--shadow)}.lightbox-content .modal-close{top:-15px;right:-15px}.lightbox-nav{border:0;border-radius:50%;width:40px;height:40px;background:#fffaf6;color:var(--deep);font-size:2rem;cursor:pointer}.lightbox-content p{position:absolute;bottom:-35px;left:0;right:0;text-align:center;color:white}.toast{position:fixed;z-index:60;top:85px;left:50%;transform:translate(-50%,-15px);background:#80564f;color:#fffaf6;padding:12px 20px;border-radius:99px;opacity:0;pointer-events:none;transition:.25s;font-size:.85rem}.toast.show{opacity:1;transform:translate(-50%,0)}.confetti{position:fixed;z-index:50;top:-20px;pointer-events:none;animation:fall 2.7s linear forwards;font-size:1.3rem}@keyframes fall{to{transform:translateY(110vh) rotate(600deg);opacity:.2}}@media(max-width:900px){nav{gap:10px;font-size:.75rem}.hero{gap:20px}.letter-grid{grid-template-columns:repeat(3,1fr)}.game-grid{grid-template-columns:repeat(3,1fr)}.countdown div{min-width:48px}.detail-card{flex-wrap:wrap}.countdown{width:100%;margin:8px 0 0}.memory-photo{height:190px}}@media(max-width:650px){.topbar{height:62px}.topbar nav{display:none;position:absolute;top:61px;left:0;right:0;background:#fffcf8;padding:18px;box-shadow:var(--shadow);flex-direction:column}.topbar nav.open{display:flex}.top-actions{margin-left:auto;margin-right:12px}.menu-toggle{display:block}.section-wrap{width:calc(100% - 28px);padding:60px 0}.hero{grid-template-columns:1fr;padding-top:45px;text-align:center;gap:20px}.hero-buttons{justify-content:center}.hero-art{height:350px;max-width:460px;width:100%;margin:auto}.cake-scene{transform:scale(.8);margin-top:50px}.tilt-left{left:2%;top:8%}.photo-frame{width:75px;height:85px}.polaroid{padding:7px 7px 12px}.polaroid small{font-size:.6rem}.sticker-bow{right:4%}h1{font-size:2.8rem}.handnote{margin-left:0}.section-heading{margin-bottom:25px}.detail-card{padding:18px}.calendar-icon{width:50px;height:50px}.countdown{gap:6px}.countdown div{flex:1;min-width:0;padding:10px 4px}.countdown b{font-size:1.1rem}.wish-card{padding:24px 15px}.letter-grid{grid-template-columns:repeat(2,1fr);gap:10px}.letter-card{padding:15px 8px}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.memory-photo{height:160px}.memory{padding:8px 8px 13px}.memory:nth-child(2){margin-top:10px}.game-grid{grid-template-columns:repeat(2,1fr)}.message-list{grid-template-columns:1fr}.modal-paper{padding:30px 22px}.music-player{bottom:7px;padding:7px 12px}.volume{display:none}footer{padding-bottom:85px}.brand{font-size:1.05rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
/* AI-generated scrapbook asset accents */
.hero-art:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at center,#f8dfe2aa,transparent 70%);opacity:.65;pointer-events:none}.hero-art>*{z-index:1}.hero-art .cake-scene{z-index:2}

/* Generated birthday scrapbook image asset sheet */
.generated-sticker-sheet{display:block;width:min(100%,1100px);height:auto;margin:24px auto;border-radius:18px;box-shadow:0 12px 35px rgba(128,86,79,.12)}

/* Illustrated scrapbook elements generated for this project */
.generated-hero-art{position:absolute;right:2%;bottom:8%;width:62%;height:74%;display:grid;place-items:center;pointer-events:none}
.generated-hero-art img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 12px 18px #87504a25);border-radius:16px}
.visual-kit{padding-top:12px!important;padding-bottom:12px!important}
.visual-kit img{display:block;width:100%;height:auto;border-radius:20px;box-shadow:0 12px 34px #87504a18;border:1px solid #f0d4d0}
.wish-cake-mini{height:145px;display:grid;place-items:center;overflow:hidden}
.wish-cake-mini img{height:100%;width:220px;object-fit:cover;object-position:center;border-radius:16px}
.bow{width:90px;height:70px;top:-48px;display:flex;justify-content:center;align-items:center;overflow:hidden}
.bow img{width:130px;height:95px;object-fit:cover;mix-blend-mode:multiply}
.reveal-icon img{width:90px;height:90px;object-fit:cover;border-radius:12px}
.envelope{height:74px;display:grid;place-items:center;overflow:hidden}
.envelope img{height:95px;width:110px;object-fit:cover;border-radius:10px}
.game-emoji{height:125px;display:grid;place-items:center;overflow:hidden;border-radius:14px;background:#fff0ed}
.game-emoji img{max-width:100%;max-height:125px;width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply}
.sticker-bow{width:88px;height:70px;overflow:hidden}
.sticker-bow img{width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply}
@media(max-width:650px){.generated-hero-art{right:0;width:70%;height:65%;bottom:7%}.visual-kit img{border-radius:12px}.game-emoji{height:110px}}
.music-disc{overflow:hidden}.music-disc img{width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply}.confetti{font-family:serif}

/* ===== Reference-matched illustrated birthday scrapbook skin ===== */
:root{--cream:#fff0ed;--white:#fffaf7;--pink:#f7cbd0;--rose:#d96f87;--deep:#a83e61;--brown:#80564f;--ink:#68464b;--line:#f0c8cb;--shadow:0 10px 28px rgba(159,73,95,.14)}
body.birthday-scrapbook{background:#fff0ed;background-image:radial-gradient(ellipse at 8% 8%,#f5c9cf80 0,transparent 25%),radial-gradient(ellipse at 93% 17%,#f9d7d180 0,transparent 24%),linear-gradient(135deg,#fff4ef,#ffe8e8 50%,#fff6f0);color:#68464b}
body.birthday-scrapbook:before{content:none!important}
.topbar{height:60px;padding:0 clamp(12px,3vw,45px);background:#fffaf7e8;border-color:#efc6cb}
.brand{font-size:1.06rem;color:#a83e61}nav{font-size:.76rem;gap:clamp(9px,1.5vw,22px)}.admin-link{background:#d96f87;padding:8px 15px}
.section-wrap{width:min(1240px,calc(100% - 30px));padding:54px 0}
.hero{width:100%;max-width:none;padding:42px clamp(20px,5vw,75px) 40px;min-height:480px;grid-template-columns:1fr 1fr;gap:12px;position:relative;overflow:hidden;background:linear-gradient(100deg,#fff2edee,#f9d9d9a6);border-bottom:3px solid #fff9f4}
.hero:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 82% 30%,#f6cdd355 0,transparent 34%),radial-gradient(ellipse at 18% 72%,#fffaf088 0,transparent 38%);opacity:1;pointer-events:none}
.hero-copy,.hero-art{z-index:1}.hero-copy{padding-left:clamp(0px,2vw,28px)}h1{font-family:'Playfair Display',serif;font-size:clamp(2.7rem,5.2vw,4.65rem);line-height:1.02;color:#c65372;text-shadow:0 2px #fff7f0;margin:15px 0}h1 em{color:#a83e61}.hero-copy>p{color:#8e656b;font-size:1rem}.eyebrow{color:#bf647b}.hero-art{height:410px;border-radius:0;background:transparent;border:0;box-shadow:none;background-image:none;overflow:visible}
.hero-art:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at center,#f8dfe2aa,transparent 70%);opacity:.65;pointer-events:none}
.hero-generated-art{position:absolute;width:100%;height:100%;object-fit:contain;inset:0;z-index:2;filter:drop-shadow(0 9px 12px #a74d5c20);pointer-events:none}
.cake-scene{z-index:3;transform:scale(.82);margin-top:85px}.tilt-left{z-index:4}.cat-sticker{z-index:4}.sticker{z-index:4}
.hero-buttons .primary,.wish-actions .primary,.gift-stage>.primary{background:linear-gradient(180deg,#e8849a,#ce5e7c);box-shadow:0 4px 0 #b84b69;color:white;border:1px solid #fff7f3}
.secondary{background:#fffaf7;color:#a83e61;border-color:#edbdc6}
.details{position:relative;padding-top:30px}.detail-decoration{position:absolute;width:160px;height:100px;object-fit:contain;right:0;top:0;opacity:.85;pointer-events:none}.detail-card{border-radius:10px;background:#fffaf7eF;border:1px solid #f0c8cb;padding:17px 22px}.calendar-icon{background:#f6d2d7;color:#b44b68;border-radius:9px}
.countdown div{background:#f6d2d7;border-radius:8px;min-width:60px}.countdown b{color:#b44b68}
.section-heading h2{color:#b34d6b}.section-heading p{font-size:.9rem}
.wish-section,.gift-section,.letters-section,.gallery-section,.games-section,.wall-section{position:relative}
.wish-card{border-radius:12px;background:#fffaf7eF;border-color:#efc7ca;padding:24px;max-width:680px}
.wish-generated-art{width:min(100%,480px);height:205px;object-fit:contain;display:block;margin:-5px auto 12px;filter:drop-shadow(0 7px 9px #b85c6c20)}
.wish-cake-mini{display:none}.wish-actions .btn{font-size:.82rem}
.gift-stage{background:linear-gradient(145deg,#f9d9dcaa,#fff6f0cc);border:1px solid #f4d1d1;border-radius:12px;position:relative;overflow:hidden}
.gift-generated-art{width:min(100%,310px);height:230px;object-fit:contain;display:block;margin:0 auto -10px;filter:drop-shadow(0 8px 10px #b85c6c20)}
.gift-box{width:160px;height:125px;margin:10px auto 18px;transform:scale(.82)}.gift-box:hover{transform:scale(.86) rotate(-2deg)}.gift-stage .gift-box{margin-top:0}
.gift-stage #giftCaption{font-family:'Playfair Display',serif;color:#a83e61}
.gift-reveal{border-radius:10px;border-color:#e9b4bf}
.letter-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.letter-card{background:#fff8f4;border-radius:8px;border-color:#f0c7cc;box-shadow:0 6px 14px #ad59651a;min-height:160px;padding:13px 10px}
.letter-generated-art{display:block;width:70px;height:72px;object-fit:contain;margin:0 auto 7px;mix-blend-mode:multiply}.envelope{display:none}
.letter-card b{font-size:.82rem;color:#a44d63}.letter-card small{font-size:.65rem}
.gallery-grid{gap:20px}.memory{border:1px solid #f2d3ce;box-shadow:0 7px 20px #ad59651a}.memory-photo{background:#f9dfe0}.memory:nth-child(2){margin-top:15px}
.game-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.game-card{background:#fff8f4;border-radius:9px;border-color:#f0c7cc;padding:15px 10px;box-shadow:0 5px 13px #ad59651a}.game-art{width:100%;height:90px;object-fit:contain;display:block;margin:0 auto 7px}.game-emoji{display:none}.game-card h3{font-size:.95rem;color:#a83e61}.game-card p{font-size:.68rem;min-height:45px}.game-card .btn{background:#d96f87;color:white}
.message-form{border-radius:10px;background:#fff8f4;border-color:#f0c7cc}.message-note{border-radius:9px;background:#fff8f4;border-color:#f0c7cc}
.music-player{width:min(640px,calc(100% - 24px));border-radius:8px;bottom:10px;background:#fffaf7f5;border-color:#efc6cb;padding:7px 12px}.music-disc{display:none}.music-disc-art{width:34px;height:34px;object-fit:contain}.music-player button{font-weight:bold;color:#b44b68}
footer{background:#fff8f4;border-color:#efc6cb}
.modal-paper{border-radius:4px;background-color:#fff8ed;border-color:#eac4bd}
@media(max-width:900px){.hero{padding:35px 22px;min-height:430px}.hero-art{height:330px}.cake-scene{transform:scale(.65);margin-top:80px}.letter-grid{grid-template-columns:repeat(3,1fr)}.game-grid{grid-template-columns:repeat(3,1fr)}.detail-decoration{width:100px}}
@media(max-width:650px){.hero{padding:35px 14px 25px;grid-template-columns:1fr;text-align:center}.hero-copy{padding:0}.hero-art{height:300px;max-width:430px;margin:auto;width:100%}.hero-generated-art{opacity:.72}.cake-scene{transform:scale(.62);margin-top:45px}.hero-buttons{justify-content:center}.section-wrap{padding:42px 0}.letter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.game-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.game-art{height:80px}.detail-decoration{display:none}.gift-generated-art{height:190px}.wish-generated-art{height:165px}}

/* Final layout pass: match the supplied multi-panel birthday scrapbook reference */
.generated-hero-art{position:absolute;inset:0;display:grid;place-items:center;z-index:2;pointer-events:none}
.generated-hero-art img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 7px 10px #b65c7124)}
.hero-art .polaroid{z-index:4}.hero-art .sticker{z-index:5}.hero-art .sticker img{width:72px;height:72px;object-fit:contain;filter:drop-shadow(0 4px 4px #a65c6a22)}
.visual-kit{display:none}
.wish-cake-mini{height:auto;display:block;margin:0 auto 10px}.wish-cake-mini img{width:min(100%,470px);height:220px;object-fit:contain;display:block;margin:auto;filter:drop-shadow(0 7px 10px #b65c7120)}
.gift-generated-art{position:relative;z-index:1;width:min(100%,350px);height:255px;object-fit:contain;margin:0 auto -12px;display:block}
.gift-box{z-index:2}.gift-box .bow img{width:65px;height:55px;object-fit:contain}
.reveal-icon img{width:70px;height:75px;object-fit:contain}
.letter-generated-art,.envelope img{width:76px;height:70px;object-fit:contain;display:block;margin:0 auto 8px}
.music-disc-art{display:block;width:35px;height:35px;object-fit:contain}
.detail-card{position:relative;overflow:hidden}
.details:before{content:"";position:absolute;left:-20px;top:20px;width:110px;height:110px;background:url('/assets/paper-labels.png') center/contain no-repeat;opacity:.5;pointer-events:none}
.letter-card{min-height:165px}
.gallery-section{background:#fff4ef88;border-top:1px solid #f4d5d5;border-bottom:1px solid #f4d5d5}
.games-section{background:#ffe9e7aa;border-radius:15px;padding-left:14px;padding-right:14px}
.wall-section{padding-bottom:110px}
@media(min-width:1000px){.hero{min-height:420px}.hero-copy{max-width:590px}.hero-art{height:385px}.wish-section,.gift-section{padding-top:42px;padding-bottom:42px}.letters-section,.gallery-section,.games-section,.wall-section{padding-top:45px;padding-bottom:45px}}

/* Updated generated PNG assets: cake and kitten illustrations */
.generated-hero-art img{object-fit:contain!important;background:transparent!important;mix-blend-mode:multiply;filter:drop-shadow(0 12px 18px #87504a25)}
.wish-cake-mini{display:grid!important;height:210px!important;overflow:visible!important}
.wish-cake-mini img{width:min(100%,340px)!important;height:210px!important;object-fit:contain!important;border-radius:0!important;mix-blend-mode:multiply;filter:drop-shadow(0 10px 16px #b66b7020)}
.hero-cat-art{position:absolute;right:1%;bottom:0;width:26%;height:34%;z-index:5;pointer-events:none;display:grid;place-items:center}
.hero-cat-art img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;filter:drop-shadow(0 8px 12px #a75c6825)}
.gift-generated-art{width:min(100%,340px)!important;height:260px!important;object-fit:contain!important;mix-blend-mode:multiply;filter:drop-shadow(0 12px 18px #87504a25)}
.game-emoji img{object-fit:contain!important;mix-blend-mode:multiply;background:transparent}
.envelope img,.reveal-icon img{width:88px;height:78px;object-fit:contain;mix-blend-mode:multiply}
.letter-card .envelope img{width:100px;height:82px}

/* Newly generated kitten sticker pack */
.hero-cat-art{position:absolute;right:-3%;bottom:0;width:36%;height:46%;z-index:5;pointer-events:none;display:grid;place-items:center}
.hero-cat-art img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;filter:drop-shadow(0 8px 12px #b65c7124)}
.game-card:nth-child(3) .game-emoji img{object-fit:contain!important;mix-blend-mode:multiply}
@media(max-width:650px){.hero-cat-art{width:42%;height:40%;right:0;bottom:0}}

/* Fix: do not tile full asset sheets across the entire page. */
body.birthday-scrapbook{background-color:#fff5ec!important;background-image:radial-gradient(ellipse at 8% 8%,#f5c9cf38 0,transparent 25%),radial-gradient(ellipse at 93% 17%,#f9d7d138 0,transparent 24%),linear-gradient(135deg,#fff8f2,#fff0ef 50%,#fff8f3)!important}
body.birthday-scrapbook:before{display:none!important;background:none!important}
.hero:before{background:radial-gradient(ellipse at 82% 30%,#f6cdd355 0,transparent 34%),radial-gradient(ellipse at 18% 72%,#fffaf088 0,transparent 38%)!important}
.hero-art:after{background:radial-gradient(ellipse at center,#f8dfe255,transparent 70%)!important}
.paper-grain{opacity:.06!important}

.details,.wish-section,.gift-section,.letters-section,.gallery-section,.games-section,.wall-section{position:relative}
.details,.wish-section,.gift-section,.letters-section,.wall-section{background:transparent}
.gallery-section{background:linear-gradient(180deg,#fff9f4cc,#fff0efcc)!important}
.games-section{background:linear-gradient(135deg,#ffece9dd,#fff7f0dd)!important}
@media(min-width:1000px){.hero{min-height:540px!important}.hero-art{height:440px!important}.section-wrap{padding-top:58px;padding-bottom:58px}}

/* Candle flames react to airflow/microphone input */
.candle i{transform-origin:50% 100%;transition:transform .08s ease-out,filter .08s ease-out;will-change:transform;animation:flicker .8s infinite alternate,flame-dance .22s infinite alternate;}
.cake-scene.blowing .candle i{animation:flame-blow .24s infinite alternate!important;}
@keyframes flame-dance{from{margin-left:-1px}to{margin-left:1px;transform:rotate(7deg) scale(.92,1.08)}}
@keyframes flame-blow{from{transform:translateX(2px) skewX(12deg) scale(.9,1.05);opacity:.9}to{transform:translateX(8px) skewX(32deg) scale(.68,.95);opacity:.72}}

/* Mobile polish pass: prevent asset-sheet collage overlap and fixed-player collisions */
.gift-stage{display:flex;flex-direction:column;align-items:center;gap:10px;padding:28px 18px 34px;overflow:visible;background:linear-gradient(145deg,#fff8f3,#fbe6e7);border:1px solid #f0c8cb}
.gift-generated-art{display:none!important}
.gift-stage .gift-box{flex:0 0 auto;width:190px;height:170px;margin:30px auto 14px;transform:none;overflow:visible}
.gift-stage .gift-box:hover{transform:translateY(-3px) rotate(-2deg)}
.gift-stage .gift-lid{height:32px}
.gift-stage .bow{font-size:0;width:88px;height:58px;top:-40px;overflow:visible}
.gift-stage .bow img{width:88px;height:58px;object-fit:contain;mix-blend-mode:normal}
.gift-stage #giftCaption{margin:10px 0 8px;font-size:clamp(1.15rem,4.5vw,1.7rem);line-height:1.3}
.gift-reveal{width:min(100%,420px);padding:24px 18px;margin:18px auto 0;box-sizing:border-box}
.reveal-icon img{width:92px;height:92px;object-fit:contain;border-radius:0;mix-blend-mode:multiply}
.hero{gap:24px}.hero-art{isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 50% 65%,#f8dfe2 0,transparent 65%),linear-gradient(145deg,#fff8f4,#f9e5e2);background-size:auto;border-radius:34px}.hero-art:after{display:none!important}
.generated-hero-art{inset:8% 2% 0!important;width:auto!important;height:auto!important}.generated-hero-art img{width:100%;height:100%;object-fit:contain!important;border-radius:0!important;mix-blend-mode:multiply}
.hero-cat-art{right:1%!important;bottom:2%!important;width:27%!important;height:28%!important;opacity:.94}.hero-cat-art img{object-fit:contain!important;mix-blend-mode:multiply}
.polaroid{max-width:35%;padding:7px 7px 11px}.photo-frame{max-width:100%;font-size:.75rem}.wish-card{overflow:hidden}
.wish-cake-mini{height:190px!important;max-width:100%;overflow:hidden}.wish-cake-mini img{width:min(100%,330px)!important;height:190px!important;object-fit:contain!important;border-radius:0!important}
.letter-grid{align-items:stretch}.letter-card{min-width:0;overflow:hidden}.letter-card .envelope img{object-fit:contain!important;mix-blend-mode:multiply;border-radius:0!important}
.music-player{bottom:max(10px,env(safe-area-inset-bottom))}body{padding-bottom:92px}
@media(max-width:650px){
.topbar{height:64px;padding:0 12px;gap:7px}.brand{font-size:clamp(.92rem,4.4vw,1.12rem);max-width:calc(100vw - 210px);overflow:hidden;text-overflow:ellipsis}.top-actions{gap:6px;margin-right:4px}.round,.admin-link{padding:10px 12px}.menu-toggle{font-size:1.35rem;padding:4px}
.hero{min-height:0;padding:35px 0 28px;gap:24px}.hero-copy>p{font-size:1rem;margin-bottom:20px}h1{font-size:clamp(2.25rem,9vw,2.8rem);line-height:1.05}.hero-art{height:300px!important;max-width:100%;border-radius:28px}.generated-hero-art{inset:7% 0 0!important}.hero-cat-art{width:28%!important;height:25%!important;right:0!important;bottom:1%!important}.hero-art .polaroid{left:2%;top:7%;max-width:30%;z-index:4}.hero-art .photo-frame{width:65px;height:76px;font-size:.65rem}.hero-art .polaroid small{font-size:.53rem}.hero-art .sticker-bow{width:52px;height:42px;right:2%;top:5%}.hero-art .sticker-bow img{width:100%;height:100%;object-fit:contain}
.section-wrap{width:calc(100% - 28px);padding:42px 0}.details{padding-top:28px}.detail-card{gap:12px;padding:15px}.detail-card>div:nth-child(2){flex:1;min-width:0}.detail-card h3{font-size:1rem}.countdown{gap:5px}.countdown div{padding:8px 2px}.countdown b{font-size:1rem}
.wish-section,.gift-section{padding-top:35px;padding-bottom:35px}.wish-card{padding:22px 14px;border-radius:20px}.wish-cake-mini{height:165px!important}.wish-cake-mini img{height:165px!important}.wish-actions .btn{flex:1;min-width:130px;padding:12px 10px;font-size:.76rem}
.gift-stage{padding:22px 14px 28px;border-radius:20px}.gift-stage .gift-box{width:170px;height:145px;margin:24px auto 12px;transform:scale(.9)}.gift-stage .gift-body{height:100px}.gift-stage #giftCaption{font-size:1.25rem}.gift-reveal{padding:20px 14px}
.letter-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.letter-card{min-height:145px;padding:12px 8px}.letter-card b{font-size:.78rem;line-height:1.3}.letter-card small{font-size:.62rem}.letter-card .envelope img{width:74px;height:66px}
.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.memory-photo{height:150px}.game-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.game-card{padding:12px 9px}.game-emoji{height:90px}.game-emoji img{object-fit:contain!important}
.music-player{width:calc(100% - 24px);bottom:calc(8px + env(safe-area-inset-bottom));gap:10px;padding:9px 12px;z-index:25}body{padding-bottom:105px}footer{padding-bottom:25px}}
.gift-stage.opened .gift-box{animation:gift-pop .65s ease both}@keyframes gift-pop{0%{transform:scale(1)}35%{transform:scale(1.08) rotate(-4deg)}70%{transform:scale(.97) rotate(3deg)}100%{transform:scale(1)}}

/* Clean single-cake visual direction: no decorative image collages or letter images */
.hero-art{background:radial-gradient(ellipse at center,#fff8f3 0%,#fbe8e4 72%,#f8dfe0 100%);border-radius:30px;overflow:hidden}
.generated-hero-art{inset:3% 1% 0!important;width:auto!important;height:auto!important;right:1%!important;bottom:0!important}
.generated-hero-art img{object-fit:contain!important;background:transparent!important;border-radius:0!important;mix-blend-mode:multiply;filter:drop-shadow(0 12px 18px #87504a25)}
.wish-cake-mini{height:190px;display:flex;align-items:center;justify-content:center;font-size:0;filter:none}
.wish-cake-mini img{height:100%;max-width:100%;object-fit:contain;filter:drop-shadow(0 8px 12px #b65c7124)}
/* CSS-only envelope icon for Secret Letters */
.envelope{display:grid;place-items:center;height:62px;margin-bottom:10px;overflow:visible}
.css-envelope{display:block;position:relative;width:42px;height:29px;border:1.7px solid #c98288;border-radius:3px;background:linear-gradient(145deg,#fffaf7,#fbe7e7);box-sizing:border-box}
.css-envelope:before,.css-envelope:after{content:"";position:absolute;top:3px;width:27px;height:1.5px;background:#c98288}
.css-envelope:before{left:0;transform:rotate(37deg);transform-origin:left center}
.css-envelope:after{right:0;transform:rotate(-37deg);transform-origin:right center}
.letter-card .envelope img,.envelope img{display:none!important}
.reveal-icon{display:grid;place-items:center;margin-bottom:10px}.reveal-icon img{display:none!important}
.game-emoji{display:grid;place-items:center;background:#fff1ed;border-radius:12px;height:105px;overflow:hidden}
.game-emoji img{object-fit:contain!important;mix-blend-mode:multiply}
.cake-game-art img{width:100%;height:100%;object-fit:contain!important}
.css-game-art span{font-family:'Playfair Display',serif;font-size:4rem;line-height:1;color:#ce6d87;text-shadow:0 4px 0 #f5d4da}
.gift-game-art .css-gift{display:block;position:relative;width:60px;height:45px;background:#e88ca2;border-radius:5px;box-shadow:inset 0 -5px #ce6d87}
.gift-game-art .css-gift:before{content:"";position:absolute;left:24px;top:0;bottom:0;width:12px;background:#fff0e8}
.gift-game-art .css-gift:after{content:"";position:absolute;width:34px;height:14px;left:13px;top:-13px;border:5px solid #ce6d87;border-radius:50% 50% 0 50%;transform:rotate(-15deg);box-sizing:border-box}
.quiz-game-art{background:radial-gradient(circle,#fff7f4,#fbe1e4)}.spin-game-art{background:radial-gradient(circle,#fff7f4,#fbe1e4)}.catch-game-art{background:radial-gradient(circle,#fff7f4,#fbe1e4)}
.music-disc{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#f8dfe0;color:#b44b68;font-size:1.2rem}
@media(max-width:650px){.hero-art{height:280px!important;border-radius:22px}.generated-hero-art{inset:0!important}.generated-hero-art img{width:100%;height:100%;object-fit:contain!important}.hero-art .polaroid,.hero-art .hero-cat-art,.hero-art .sticker-bow{display:none!important}.wish-cake-mini{height:145px}.letter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.letter-card .envelope{height:48px}.game-emoji{height:88px}}
/* Remove leftover collage backgrounds; keep only the birthday-cake PNG as decorative artwork */
.details:before{background:none!important;content:none!important}
.detail-decoration{display:none!important}
.hero-art:before,.hero-art:after{background-image:none!important}

.bow{width:54px;height:28px;font-size:0!important;filter:drop-shadow(0 3px 2px #a95f6940)}.bow:before,.bow:after{content:"";position:absolute;top:3px;width:25px;height:19px;border:6px solid #f4b2c1;background:#f9d0d6;box-sizing:border-box}.bow:before{left:1px;border-radius:80% 20% 65% 25%;transform:rotate(22deg)}.bow:after{right:1px;border-radius:20% 80% 25% 65%;transform:rotate(-22deg)}


/* Lucky Spin — real segmented wheel with a fixed pointer */
.lucky-wheel-wrap{position:relative;width:min(82vw,320px);aspect-ratio:1;margin:24px auto 12px;display:grid;place-items:center}
.lucky-wheel{position:relative;width:100%;height:100%;border-radius:50%;border:7px solid #fffaf6;box-shadow:0 9px 24px rgba(128,62,81,.22),inset 0 0 0 2px #d8899b;background:conic-gradient(#f7c8d1 0deg 60deg,#fff4e9 60deg 120deg,#eaa5b5 120deg 180deg,#ffe4d8 180deg 240deg,#f4bdca 240deg 300deg,#fff8f0 300deg 360deg);transition:transform 4.5s cubic-bezier(.12,.72,.12,1);will-change:transform;overflow:hidden}
.lucky-wheel:after{content:"";position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(from 0deg,transparent 0deg 58.8deg,rgba(255,255,255,.95) 58.8deg 60deg);pointer-events:none}
.lucky-wheel-label{position:absolute;z-index:1;left:50%;top:50%;width:84px;margin-left:-42px;margin-top:-10px;text-align:center;font-size:clamp(9px,2.5vw,12px);font-weight:700;line-height:1.15;color:#814b5c;transform:translate(-50%,-50%) rotate(calc(var(--i)*60deg + 30deg)) translateY(-88px) rotate(calc((var(--i)*-60deg) - 30deg));}
.lucky-wheel-center{position:absolute;z-index:3;left:50%;top:50%;width:48px;height:48px;transform:translate(-50%,-50%);display:grid;place-items:center;border:4px solid #fffaf6;border-radius:50%;background:#c65f7d;color:white;font-size:25px;box-shadow:0 3px 9px #a84d6c55}
.lucky-pointer{position:absolute;z-index:5;top:-7px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:15px solid transparent;border-right:15px solid transparent;border-top:0;border-bottom:30px solid #a74765;filter:drop-shadow(0 3px 2px #8c496044)}
#spinAgain:disabled{opacity:.55;cursor:wait}
@media(max-width:480px){.lucky-wheel-wrap{width:min(78vw,285px)}.lucky-wheel-label{width:70px;margin-left:-35px;transform:translate(-50%,-50%) rotate(calc(var(--i)*60deg + 30deg)) translateY(-76px) rotate(calc((var(--i)*-60deg) - 30deg));font-size:9px}}

@media(min-width:651px) and (max-width:950px){.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.memory-photo{height:190px}}
.gallery-grid .memory{position:relative;min-width:0;max-width:100%;padding:8px 8px 13px}.gallery-grid .memory-photo{height:clamp(115px,17vw,220px);aspect-ratio:1/1}.gallery-grid .memory-photo img{width:100%;height:100%;object-fit:cover;display:block}.gallery-grid .memory small{overflow-wrap:anywhere;font-size:.68rem}
