:root{--cream: #fdf7f2;--blush: #fbe9e7;--rose: #d46a84;--rose-deep: #b94a66;--plum: #45283a;--plum-soft: #7a5468;--gold: #d4a24e;--card: #fffdfb;--shadow: 0 10px 40px rgba(185, 74, 102, .13), 0 2px 8px rgba(69, 40, 58, .06)}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:Nunito,sans-serif;color:var(--plum);background:linear-gradient(160deg,#fdf7f2,#fbe9e7 45%,#f8dfe2);min-height:100vh;min-height:100dvh;overflow-x:hidden}#hearts-bg{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.wrap{position:relative;z-index:1;max-width:620px;margin:0 auto;padding:26px 20px 60px;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.charms{display:flex;justify-content:center;align-items:center;gap:10px;margin-bottom:30px;opacity:0;transform:translateY(-8px);transition:opacity .6s ease,transform .6s ease}.charms.show{opacity:1;transform:none}.charm{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:#ffffffa6;border:1.5px solid rgba(212,106,132,.25);font-family:Fraunces,serif;font-size:13px;font-style:italic;color:#cfa3b2;transition:all .5s cubic-bezier(.34,1.56,.64,1)}.charm.done{background:linear-gradient(145deg,#e98aa2,var(--rose-deep));border-color:transparent;color:#fff;font-family:Nunito,sans-serif;font-style:normal;font-size:15px;box-shadow:0 4px 14px #b94a6659}.charm.current{border-color:var(--rose);color:var(--rose-deep);animation:pulse 2s ease-in-out infinite;transform:scale(1.1)}@keyframes pulse{0%,to{box-shadow:0 0 #d46a8459}50%{box-shadow:0 0 0 8px #d46a8400}}.charm-line{flex:0 0 8px;height:1.5px;background:#d46a8440;border-radius:2px}@media (max-width: 480px){.charms{gap:4px}.charm{width:25px;height:25px;font-size:10px}.charm.done{font-size:11px}.charm-line{flex-basis:4px}}.screen{display:none;flex:1;flex-direction:column;justify-content:center}.screen.active{display:flex;animation:screenIn .7s cubic-bezier(.22,1,.36,1) both}@keyframes screenIn{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}.intro{text-align:center}.intro .env-icon{font-size:62px;display:inline-block;animation:float 3.5s ease-in-out infinite;filter:drop-shadow(0 8px 16px rgba(185,74,102,.25))}@keyframes float{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-12px) rotate(3deg)}}.intro h1{font-family:Fraunces,serif;font-weight:550;font-size:clamp(32px,8vw,50px);line-height:1.12;margin:20px 0 6px;letter-spacing:-.01em}.intro h1 em{font-style:italic;color:var(--rose-deep)}.script{font-family:Caveat,cursive;font-size:clamp(20px,5.5vw,25px);color:var(--plum-soft)}.intro p.rules{max-width:420px;margin:18px auto 26px;font-size:15.5px;line-height:1.68;color:var(--plum-soft)}.intro p.rules b{color:var(--plum)}.act-eyebrow{font-size:12px;font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);margin-bottom:12px}.countdown{font-family:Fraunces,serif;font-weight:550;font-size:clamp(36px,9vw,54px);color:var(--rose-deep);letter-spacing:.04em;margin:18px 0 10px;font-variant-numeric:tabular-nums}.btn{font-family:Nunito,sans-serif;font-weight:700;font-size:16px;border:none;cursor:pointer;padding:15px 38px;border-radius:999px;background:linear-gradient(145deg,#e98aa2,var(--rose-deep));color:#fff;box-shadow:0 8px 22px #b94a6652;transition:transform .2s ease,box-shadow .2s ease}.btn:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 12px 28px #b94a6666}.btn:active{transform:scale(.97)}.btn.ghost{background:transparent;color:var(--rose-deep);box-shadow:none;border:1.5px solid rgba(185,74,102,.35)}.card{background:var(--card);border-radius:26px;padding:34px 28px 30px;box-shadow:var(--shadow);border:1px solid rgba(212,106,132,.12);position:relative}.card:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px dashed rgba(212,106,132,.22);border-radius:19px;pointer-events:none}.chapter-label{font-size:11.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);text-align:center;margin-bottom:10px}.lock-row{text-align:center;font-size:28px;margin-bottom:6px}.question{font-family:Fraunces,serif;font-weight:500;font-size:clamp(20px,5vw,26px);line-height:1.35;text-align:center;margin-bottom:8px}.question-sub{text-align:center;font-size:14px;color:var(--plum-soft);margin-bottom:20px}.answer-row{display:flex;flex-direction:column;gap:12px;position:relative;z-index:1}.answer-input{font-family:Nunito,sans-serif;font-size:17px;padding:14px 20px;border-radius:999px;border:1.5px solid rgba(122,84,104,.25);background:#fff;color:var(--plum);text-align:center;outline:none;transition:border-color .2s,box-shadow .2s}.answer-input:focus{border-color:var(--rose);box-shadow:0 0 0 4px #d46a841f}.card.wrong{animation:shake .45s ease}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-9px)}40%{transform:translate(8px)}60%{transform:translate(-6px)}80%{transform:translate(4px)}}.feedback{min-height:22px;text-align:center;font-family:Caveat,cursive;font-size:20px;color:var(--rose-deep);margin-top:12px}.hint-zone{text-align:center;margin-top:6px;position:relative;z-index:1}.hint-link{background:none;border:none;cursor:pointer;font-family:Nunito,sans-serif;font-size:13.5px;font-weight:600;color:var(--plum-soft);text-decoration:underline dotted;padding:6px}.hint-bubble{display:none;margin:10px auto 0;max-width:400px;background:var(--blush);border-radius:16px;padding:12px 18px;font-size:14.5px;color:var(--plum-soft);line-height:1.5}.hint-bubble.show{display:block;animation:screenIn .4s ease both}.choices{display:flex;flex-direction:column;gap:10px;position:relative;z-index:1}.choice-btn{font-family:Nunito,sans-serif;font-weight:600;font-size:16px;padding:14px 18px;border-radius:16px;background:#fff;color:var(--plum);border:1.5px solid rgba(122,84,104,.22);cursor:pointer;transition:all .18s ease}.choice-btn:hover{border-color:var(--rose);background:#fff8f7;transform:translateY(-1px)}.choice-btn:active{transform:scale(.98)}.build-grid{display:flex;flex-wrap:wrap;gap:9px;justify-content:center;margin-bottom:16px;position:relative;z-index:1}.chip{font-family:Nunito,sans-serif;font-weight:600;font-size:14.5px;padding:10px 16px;border-radius:999px;background:#fff;color:var(--plum-soft);border:1.5px solid rgba(122,84,104,.22);cursor:pointer;transition:all .16s ease;-webkit-user-select:none;user-select:none}.chip.on{background:linear-gradient(145deg,#e98aa2,var(--rose-deep));color:#fff;border-color:transparent;box-shadow:0 4px 12px #b94a664d;transform:scale(1.04)}.note-card{background:linear-gradient(170deg,#fffdfb,#fdf1ea);border-radius:26px;padding:40px 30px 34px;box-shadow:var(--shadow);border:1px solid rgba(212,162,78,.25);text-align:center;position:relative}.note-card:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px solid rgba(212,162,78,.3);border-radius:19px;pointer-events:none}.note-key{font-size:38px;display:inline-block;animation:keyDrop .8s cubic-bezier(.34,1.56,.64,1) both}@keyframes keyDrop{0%{opacity:0;transform:translateY(-30px) rotate(-30deg) scale(.5)}to{opacity:1;transform:none}}.note-eyebrow{font-family:Caveat,cursive;font-size:21px;color:var(--gold);margin:10px 0 4px}.note-title{font-family:Fraunces,serif;font-style:italic;font-weight:550;font-size:clamp(23px,5.6vw,29px);color:var(--rose-deep);margin-bottom:15px;line-height:1.25}.note-body{font-size:16px;line-height:1.75;color:var(--plum-soft);max-width:430px;margin:0 auto 26px}.note-body b{color:var(--plum)}.note-card .btn{position:relative;z-index:1}.finale{text-align:center}.finale h2{font-family:Fraunces,serif;font-weight:550;font-size:clamp(27px,6.6vw,38px);margin-bottom:8px}.finale .script{margin-bottom:8px}.finale .script.days{color:var(--rose-deep);margin-bottom:30px}.envelope{position:relative;width:min(320px,82vw);aspect-ratio:4 / 2.8;margin:0 auto 28px;cursor:pointer;-webkit-tap-highlight-color:transparent}.env-body{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(160deg,#f6e3d3,#efd0bc);border-radius:10px;box-shadow:var(--shadow)}.env-flap{position:absolute;top:0;left:0;right:0;height:55%;background:linear-gradient(180deg,#eed4c0,#e5c0a6);clip-path:polygon(0 0,100% 0,50% 100%);border-radius:10px 10px 0 0;transform-origin:top center;transition:transform 1s cubic-bezier(.6,0,.2,1);z-index:3}.env-letter{position:absolute;left:7%;right:7%;top:9%;bottom:12%;background:#fffdf8;border-radius:6px;box-shadow:0 2px 10px #45283a1f;z-index:2;display:grid;place-items:center;font-family:Caveat,cursive;font-size:21px;color:var(--plum-soft);transition:transform 1s cubic-bezier(.22,1,.36,1) .5s}.env-seal{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);width:62px;height:62px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#d9506e,#9c2c47);color:#ffe9ee;font-family:Fraunces,serif;font-size:26px;font-style:italic;display:grid;place-items:center;box-shadow:0 4px 12px #78143266,inset 0 2px 4px #ffffff40;z-index:4;transition:opacity .5s ease,transform .5s ease}.envelope.open .env-flap{transform:rotateX(180deg);z-index:1}.envelope.open .env-seal{opacity:0;transform:translate(-50%,-50%) scale(.5)}.envelope.open .env-letter{transform:translateY(-46%) scale(1.04)}.tap-hint{font-size:13.5px;color:var(--plum-soft);opacity:.8}.letter-view{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#45283a8c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:4vh 16px;overflow-y:auto}.letter-view.show{display:block;animation:screenIn .5s ease both}.letter-sheet{max-width:560px;margin:0 auto;background:#fffdf8;border-radius:14px;padding:26px 22px;box-shadow:0 24px 70px #1e0a1466}.letter-sheet img{width:100%;border-radius:8px;display:block}.letter-missing{border:2px dashed rgba(185,74,102,.4);border-radius:10px;padding:60px 24px;text-align:center;font-family:Caveat,cursive;font-size:24px;line-height:1.5;color:var(--plum-soft)}.letter-close{display:block;margin:20px auto 0}.after-letter{text-align:center;font-family:Caveat,cursive;font-size:26px;color:var(--rose-deep);margin-top:22px}footer{text-align:center;margin-top:44px;font-size:12.5px;color:#7a5468a6}footer .reset-heart{cursor:default;-webkit-user-select:none;user-select:none}.confetti{position:fixed;z-index:60;pointer-events:none;font-size:20px;animation:confetti 1.6s ease-out forwards}@keyframes confetti{0%{opacity:1;transform:translate(0) rotate(0) scale(.6)}to{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rot)) scale(1.15)}}
