:root{--bg:#fbf1e6;--ink:#4a2a2f;--muted:#8a6a63;--gold:#b5772f;--rose:#c44569;--card:#f4dfc9;--line:rgba(181,119,47,.45);--btn-ink:#fff;
box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#140e0b;--ink:#f8ead6;--muted:#c8b7a2;--gold:#d8ad70;--rose:#f08aa5;--card:#241913;--line:rgba(216,173,112,.45);--btn-ink:#17100a}}
html{scroll-behavior:smooth}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--ink);font-family:Georgia,"Times New Roman",serif;overflow-x:hidden}
section{padding:70px 20px;text-align:center}
.hero{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at top,rgba(196,120,60,.22),transparent 65%)}
h1{font-weight:normal;font-size:clamp(34px,7vw,70px);color:var(--gold);margin-bottom:16px;line-height:1.1}
h2{font-weight:normal;font-size:clamp(26px,4.5vw,40px);color:var(--ink);margin-bottom:12px}
p{line-height:1.8;font-size:17px;color:var(--muted);max-width:560px;margin:0 auto}
.btn{display:inline-block;margin-top:26px;background:var(--gold);color:var(--btn-ink);border:0;border-radius:30px;padding:14px 26px;font:inherit;font-size:16px;cursor:pointer;text-decoration:none;transition:transform .3s}
.btn:hover{transform:translateY(-3px)}
:focus-visible{outline:2px solid var(--rose);outline-offset:3px}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;max-width:1100px;margin:40px auto 0}
.card{aspect-ratio:3/4;perspective:1200px;cursor:pointer}
.inner{position:relative;width:100%;height:100%;transition:transform .8s cubic-bezier(.4,.2,.2,1);transform-style:preserve-3d}
.card.flipped .inner{transform:rotateY(180deg)}
.face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:10px;overflow:hidden}
.front{background:var(--card);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;padding:14px}
.frame{width:100%;height:100%;border:2px dashed var(--line);border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--gold);font-size:20px}
.frame .ico{font-size:38px;color:var(--rose)}
.frame small{font-size:13px;color:var(--muted)}
.back{transform:rotateY(180deg);background:#000}
.back img{width:100%;height:100%;object-fit:cover;display:block}
.cap{position:absolute;left:0;right:0;bottom:0;padding:40px 14px 16px;color:#fff;font-size:19px;text-align:left;background:linear-gradient(transparent,rgba(0,0,0,.85))}
.zoom{position:absolute;top:10px;right:10px;width:38px;height:38px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;font-size:18px;cursor:pointer}
.msg{background:var(--card);border-top:1px solid var(--line)}
.msg .box{max-width:620px;margin:0 auto;padding:10px}
.msg h2{color:var(--rose)}
.msg p+p{margin-top:18px}
.final{font-size:clamp(24px,4vw,34px);color:var(--gold);line-height:1.4;margin-top:30px;font-style:italic}
#secret{display:none;margin-top:28px}#secret.show{display:block;animation:in .8s ease}
@keyframes in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
footer{text-align:center;padding:26px 15px;color:var(--muted);border-top:1px solid var(--line)}
.fh{position:fixed;bottom:-30px;pointer-events:none;z-index:100;animation:up 5s linear forwards}
@keyframes up{to{transform:translateY(-110vh) rotate(360deg);opacity:0}}
.lb{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.94);display:none;align-items:center;justify-content:center;padding:50px 16px}
.lb.on{display:flex}.lb img{max-width:96%;max-height:90vh;object-fit:contain;border-radius:6px}
.lb button{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));right:22px;background:none;border:0;color:#fff;font-size:44px;cursor:pointer}
@media(max-width:850px){.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}}
@media(max-width:480px){.grid{gap:12px}section{padding:56px 14px}}
@media(prefers-reduced-motion:reduce){.inner{transition:none}.fh{animation-duration:.01s}}
/* ===== ADDED: countdown, questions, wish, gift ===== */
.cdwrap{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:30px 16px;text-align:center;background:radial-gradient(circle at top,rgba(196,120,60,.22),transparent 65%)}
.cdbox{width:min(100%,520px)}
.cd{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:24px 0 14px}
.cd div{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 4px}
.cd b{display:block;font-weight:normal;font-size:clamp(28px,8vw,44px);color:var(--gold);font-variant-numeric:tabular-nums}
.cd span{font-size:13px;color:var(--muted)}
.small{font-size:14px}
#site[hidden],.btn[hidden],#vid[hidden],.gift[hidden]{display:none}
#quiz{max-width:560px;margin:0 auto}
.q{font-size:clamp(18px,3.4vw,22px);color:var(--ink);margin:14px auto}
.opts{display:grid;gap:10px;margin:8px auto 0;max-width:420px}
.opts button{background:var(--card);border:1px solid var(--line);color:var(--ink);border-radius:14px;padding:13px;font:inherit;cursor:pointer;min-height:46px}
.opts button:hover,.opts button.pick{border-color:var(--rose);background:var(--bg)}
.reply{min-height:56px;margin-top:14px;color:var(--gold)}
.frame .qf{font-size:clamp(14px,2.2vw,17px);color:var(--ink);line-height:1.4}
#wish{background:var(--card);border-top:1px solid var(--line)}
.cake{margin:34px auto 0;width:200px;height:150px;position:relative}
.ctop,.cbot{position:absolute;left:0;right:0;height:52px;border-radius:12px}
.ctop{bottom:48px;background:#ffc2dd;border-top:10px solid #fff}.cbot{bottom:0;background:#ff9fc8}
.candles{position:absolute;left:20px;right:20px;bottom:100px;display:flex;justify-content:space-between}
.candles button{width:12px;height:46px;background:#fff;border:1px solid #e8c9d6;border-radius:3px;position:relative;cursor:pointer}
.candles button::before{content:"";position:absolute;left:50%;top:-20px;width:12px;height:20px;margin-left:-6px;background:radial-gradient(#fff,#ffb52e 60%,transparent 70%);border-radius:50% 50% 50% 50%/60% 60% 40% 40%;animation:fl .4s infinite alternate}
.candles button.out::before{display:none}
@keyframes fl{to{transform:scale(1.15) rotate(4deg)}}
#giftzone{margin-top:34px;border-top:1px solid var(--line);padding-top:26px}
.gift{font-size:92px;line-height:1;background:none;border:0;cursor:pointer;margin-top:10px;animation:bob 1.6s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-8px) rotate(-4deg)}}
#vid video{width:100%;max-height:60vh;border-radius:14px;margin-top:16px;background:#000}
@media(min-width:600px) and (max-width:1024px){.grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:480px){.cd{gap:6px}}
.hero{text-align:center}

/* ===== ADDED (from wish video): number, 12 things, balloons ===== */
#num,#things,#balloons{max-width:1100px;margin:0 auto}
.digits{display:flex;justify-content:center;gap:12px;margin:22px 0 8px}
.digits b{width:70px;height:92px;display:grid;place-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;font-size:56px;font-weight:normal;color:var(--gold);font-variant-numeric:tabular-nums;box-shadow:inset 0 -2px 0 var(--line)}
.digits b.land{animation:pop .5s ease}
@keyframes pop{50%{transform:scale(1.18)}}
.tgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:30px auto 0}
.tcard{aspect-ratio:1/1}
.tcard .front{background:var(--card);border:1px solid var(--line);flex-direction:column;gap:6px;color:var(--rose);font-size:34px}
.tcard .front small{font-size:12px;color:var(--muted)}
.tcard .back{background:var(--card);border:1px solid var(--rose);display:flex;align-items:center;justify-content:center;padding:14px;font-size:clamp(13px,2vw,16px);line-height:1.5;color:var(--ink)}
.bl{display:flex;flex-wrap:wrap;justify-content:center;gap:18px;margin:26px auto 0;max-width:640px}
.bl button{width:84px;height:104px;border:0;border-radius:50% 50% 48% 48%/58% 58% 42% 42%;color:#fff;font:inherit;font-size:14px;cursor:pointer;position:relative;animation:sway 3s ease-in-out infinite}
.bl button::after{content:"";position:absolute;left:50%;top:100%;width:1px;height:26px;background:var(--line)}
.bl button:nth-child(2n){animation-delay:-1s}.bl button:nth-child(3n){animation-delay:-2s}
@keyframes sway{50%{transform:translateY(-8px) rotate(3deg)}}
.bl button.popped{animation:none;transform:scale(0);opacity:0;transition:transform .35s,opacity .35s;pointer-events:none}
@media(max-width:850px){.tgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:480px){.tgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.digits b{width:60px;height:80px;font-size:46px}}
