:root{--cream:#fff6e5;--pink:#ffc9d4;--peach:#ffd5b5;--red:#d64550;--ink:#5a3a3a}
html{scroll-behavior:smooth}
body{font-family:'Patrick Hand',cursive;font-size:1.15rem;color:var(--ink);background:#f5d9c0;background-image:radial-gradient(rgba(214,69,80,.12) 2px,transparent 2px);background-size:22px 22px;overflow-x:hidden}
.hand{font-family:'Caveat',cursive;font-weight:700}
.paper{background-color:var(--cream);background-image:radial-gradient(rgba(150,100,60,.08) 1px,transparent 1px),repeating-linear-gradient(0deg,transparent 0 27px,rgba(214,69,80,.07) 27px 28px);background-size:5px 5px,auto;box-shadow:0 2px 0 #fff inset,0 10px 25px rgba(120,60,40,.25);border-radius:6px;transform:rotate(var(--r,0deg))}
.tape{position:absolute;top:-13px;left:50%;width:90px;height:26px;margin-left:-45px;transform:rotate(-3deg);background:rgba(255,170,190,.75);box-shadow:0 1px 3px rgba(0,0,0,.15);z-index:3;clip-path:polygon(0 0,4% 50%,0 100%,100% 100%,96% 50%,100% 0)}
.reveal{opacity:0;transform:perspective(1400px) rotateY(-18deg) translateY(22px);transform-origin:left center;filter:brightness(.97);transition:opacity 1.4s ease,transform 1.9s cubic-bezier(.22,.61,.36,1),filter 1.9s ease;will-change:transform,opacity}
.reveal.in{opacity:1;transform:none;filter:none}
.reveal .paper{position:relative}
.reveal .paper::before{content:'';position:absolute;left:0;top:0;bottom:0;width:30px;background:linear-gradient(90deg,rgba(0,0,0,.14),transparent);opacity:0;transition:opacity 1.9s ease;pointer-events:none;z-index:1}
.reveal.in .paper::before{opacity:1}
.dd{position:absolute;pointer-events:none;animation:fl 4s ease-in-out infinite}
@keyframes fl{50%{transform:translateY(-8px) rotate(10deg)}}
.stk{display:inline-block;animation:wig 2.4s ease-in-out infinite;filter:drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff) drop-shadow(0 2px 0 #fff) drop-shadow(0 -2px 0 #fff) drop-shadow(0 4px 3px rgba(0,0,0,.25))}
@keyframes wig{0%,100%{rotate:-9deg}50%{rotate:9deg;scale:1.1}}
.pol{background:#fff;padding:9px 9px 40px;box-shadow:0 6px 14px rgba(90,40,30,.3);position:relative;transform:rotate(var(--r));transition:.3s}
.pol:hover{transform:rotate(0) scale(1.06);z-index:5}
.pol img{width:100%;aspect-ratio:1;object-fit:cover;background:linear-gradient(135deg,var(--peach),var(--pink))}
.pol p{position:absolute;bottom:5px;left:0;right:0;text-align:center;font-family:'Caveat';font-weight:700;font-size:1.35rem;line-height:1.2}
.pol .tape{width:64px;margin-left:-32px;height:22px}
.fc{perspective:800px;height:180px;cursor:pointer}
.fi{position:relative;height:100%;transition:transform .7s;transform-style:preserve-3d}
.fc.o .fi{transform:rotateY(180deg)}
.fc .f,.fc .b{position:absolute;inset:0;backface-visibility:hidden;border-radius:8px;padding:14px;display:flex;align-items:center;justify-content:center;text-align:center;box-shadow:0 5px 12px rgba(90,40,30,.25)}
.f{background:var(--pink);font-family:'Caveat';font-weight:700;font-size:1.6rem;border:3px dashed #fff}
.b{background:#fff;transform:rotateY(180deg);font-size:1.05rem;line-height:1.3}
.note{padding:22px 14px 16px;font-family:'Caveat';font-weight:700;font-size:1.45rem;line-height:1.15;box-shadow:3px 8px 12px rgba(90,40,30,.25);transform:rotate(var(--r));position:relative;transition:.3s}
.note:hover{transform:rotate(0) scale(1.05)}
.note:before{content:'📌';position:absolute;top:-10px;left:50%;margin-left:-10px;font-size:1.3rem}
.letter{font-family:'Caveat';font-weight:500;font-size:1.55rem;line-height:32px;background:#fffdf6;background-image:repeating-linear-gradient(transparent 0 31px,rgba(214,69,80,.22) 31px 32px);padding:6px 18px 10px 40px;border-left:2px solid rgba(214,69,80,.4)}
.btn{font-family:'Caveat';font-weight:700;font-size:1.5rem;background:var(--red);color:#fff;padding:2px 22px;border-radius:999px;box-shadow:0 4px 0 #9c2c36;transition:.15s;cursor:pointer}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 #9c2c36}
.opt{background:#fff;border:2.5px dashed var(--red);border-radius:12px;padding:8px 12px;transition:.2s;width:100%;text-align:left}
.opt:hover,.opt.sel{background:var(--pink);transform:rotate(-1deg) scale(1.02)}
.opt.ok{background:#d8f5c9;border-style:solid}.opt.no{background:#ffd0cc;border-style:solid}
.fall{position:absolute;top:-40px;font-size:2.2rem;animation:fall 3.2s linear forwards;filter:drop-shadow(0 2px 2px rgba(0,0,0,.2))}
@keyframes fall{to{top:105%}}
@keyframes shake{20%,60%{transform:rotate(-10deg)}40%,80%{transform:rotate(10deg)}}
.shake{animation:shake .6s}
.book{width:230px;height:310px;perspective:1000px;position:relative}
.cov{position:absolute;inset:0;background:linear-gradient(135deg,#e0606b,#b73540);border-radius:4px 14px 14px 4px;transform-origin:left;transition:transform 1s;box-shadow:0 12px 30px rgba(0,0,0,.4);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff0d6;border-left:12px solid #8c2430;z-index:2}
.pg{position:absolute;inset:0;background:var(--cream);border-radius:4px 12px 12px 4px}
#ld.go .cov{transform:rotateY(-165deg)}
#ld{transition:opacity .8s}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none;filter:none}.reveal .paper::before{display:none}}

/* ===== animasi unlock special ===== */
@keyframes unlockPop{0%{scale:.6;rotate:-20deg;filter:brightness(1)}50%{scale:1.35;rotate:8deg;filter:brightness(1.3)}100%{scale:1;rotate:0;filter:brightness(1)}}
@keyframes lockGlow{0%,100%{box-shadow:0 0 0 rgba(214,69,80,0)}50%{box-shadow:0 0 30px rgba(214,69,80,.6),0 0 60px rgba(255,201,212,.9)}}
@keyframes heartBurst{0%{transform:translate(-50%,0) scale(0);opacity:1}100%{transform:translate(-50%,-90px) scale(1.2);opacity:0}}
@keyframes secretIn{from{opacity:0;transform:translateY(16px) rotate(-1deg) scale(.96)}to{opacity:1;transform:none}}
@keyframes ringPulse{0%{transform:translate(-50%,-50%) scale(.3);opacity:.9}100%{transform:translate(-50%,-50%) scale(2.2);opacity:0}}
#lock{position:relative;transition:color .3s}
#lock.ok{animation:unlockPop .7s cubic-bezier(.34,1.56,.64,1),lockGlow 1.2s ease;color:#f59e0b!important}
#smsg.reveal-msg{animation:secretIn .6s ease both}
.heart-burst{position:absolute;left:50%;top:32%;font-size:1.7rem;animation:heartBurst .9s ease-out forwards;pointer-events:none;z-index:4}
.unlock-wrap{position:relative}
.unlock-ring{position:absolute;left:50%;top:46%;width:90px;height:90px;border:3px solid rgba(245,158,11,.5);border-radius:50%;transform:translate(-50%,-50%) scale(.3);pointer-events:none;opacity:0}
.unlock-ring.go{animation:ringPulse .9s ease-out forwards}
#secret .paper{overflow:visible}
