/* Hero phone: "recipient reveal" story (driven by reveal.js). Screen is 272x548. */
.om-rv-stage{position:absolute;inset:0;overflow:hidden;border-radius:inherit;font-family:inherit;color:#4a1d2e;user-select:none}
.om-rv-bg{position:absolute;inset:0;background:linear-gradient(165deg,#fff1f4 0%,#fde2ea 45%,#fce7f3 100%);transition:opacity .8s ease}
.om-rv-bg::before{content:'';position:absolute;inset:0;background:linear-gradient(170deg,#3b1d12 0%,#7c2d12 50%,#be185d 100%);opacity:0;transition:opacity .8s ease}
.om-rv-stage[data-scene="lock"] .om-rv-bg::before{opacity:1}
.om-rv-glow{position:absolute;width:320px;height:320px;left:50%;top:40%;margin:-160px 0 0 -160px;border-radius:50%;background:radial-gradient(circle,rgba(244,114,182,.35),transparent 65%);animation:om-rv-breathe 4s ease-in-out infinite}
@keyframes om-rv-breathe{0%,100%{transform:scale(.9);opacity:.7}50%{transform:scale(1.1);opacity:1}}

/* Scenes */
.om-rv-scene{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding:56px 22px 26px;text-align:center;opacity:0;visibility:hidden;transform:scale(.96);transition:opacity .6s ease,transform .7s cubic-bezier(.22,1,.36,1),visibility 0s linear .6s}
.om-rv-scene.is-on{opacity:1;visibility:visible;transform:none;transition:opacity .6s ease,transform .7s cubic-bezier(.22,1,.36,1),visibility 0s}

/* 1. Lock screen + notification */
.om-rv-lock{color:#fff;padding-top:30px}
.om-rv-status{align-self:stretch;display:flex;justify-content:space-between;font-size:10px;font-weight:700;opacity:.85;padding:0 10px}
.om-rv-clock{margin-top:34px;font-size:62px;font-weight:300;letter-spacing:-2px;line-height:1}
.om-rv-date{font-size:12px;opacity:.8;margin-top:6px}
.om-rv-notif{margin-top:40px;align-self:stretch;display:flex;gap:10px;align-items:center;text-align:left;padding:11px 12px;border-radius:18px;background:rgba(255,255,255,.2);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.25);box-shadow:0 10px 30px rgba(0,0,0,.25);
  transform:translateY(-140px) scale(.9);opacity:0;transition:transform .7s cubic-bezier(.34,1.5,.64,1),opacity .4s ease}
.om-rv-lock.is-notif .om-rv-notif{transform:none;opacity:1}
.om-rv-lock.is-press .om-rv-notif{transform:scale(.95)}
.om-rv-notif-icon{width:34px;height:34px;flex-shrink:0;border-radius:10px;display:grid;place-items:center;font-size:18px;background:linear-gradient(135deg,#e11d74,#9d174d)}
.om-rv-notif-body{display:flex;flex-direction:column;gap:2px;font-size:11.5px;line-height:1.3}
.om-rv-notif-body b{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.8}
.om-rv-hint{margin-top:auto;font-size:11px;opacity:0;letter-spacing:.04em;transition:opacity .5s ease .4s}
.om-rv-lock.is-notif .om-rv-hint{opacity:.75;animation:om-rv-pulse 1.6s ease-in-out infinite}
@keyframes om-rv-pulse{50%{opacity:.35}}

/* 2. Gift box */
.om-rv-gift-title{font-size:19px;font-weight:800;margin-top:22px}
.om-rv-gift-title b{background:linear-gradient(135deg,#e11d74,#9d174d);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.om-rv-gift-sub{margin-top:auto;font-size:12px;font-weight:600;color:#831843;opacity:.8}
.om-rv-rays{position:absolute;left:50%;top:52%;width:420px;height:420px;margin:-210px 0 0 -210px;opacity:0;transform:scale(.3) rotate(0);
  background:repeating-conic-gradient(from 0deg,rgba(251,191,36,.45) 0 8deg,transparent 8deg 22deg);-webkit-mask:radial-gradient(circle,#000 10%,transparent 62%);mask:radial-gradient(circle,#000 10%,transparent 62%);transition:opacity .5s ease,transform .8s ease}
.om-rv-gift.is-open .om-rv-rays{opacity:1;transform:scale(1);animation:om-rv-spin 9s linear infinite}
@keyframes om-rv-spin{to{rotate:360deg}}
.om-rv-box{position:relative;width:128px;height:124px;margin-top:92px;transform:translateY(-260px);transition:transform .8s cubic-bezier(.34,1.45,.64,1)}
.om-rv-gift.is-on .om-rv-box{transform:none}
.om-rv-gift.is-shake .om-rv-box{animation:om-rv-shake .55s ease-in-out 2}
@keyframes om-rv-shake{0%,100%{rotate:0deg}20%{rotate:-9deg}40%{rotate:8deg}60%{rotate:-6deg}80%{rotate:4deg}}
.om-rv-body{position:absolute;left:8px;right:8px;bottom:0;height:86px;border-radius:0 0 12px 12px;background:linear-gradient(135deg,#ec4899,#9d174d);box-shadow:0 18px 30px -12px rgba(157,23,77,.55)}
.om-rv-body i,.om-rv-lid i{position:absolute;left:50%;top:0;bottom:0;width:18px;margin-left:-9px;background:linear-gradient(180deg,#fde68a,#fbbf24)}
.om-rv-lid{position:absolute;left:0;right:0;top:14px;height:30px;border-radius:8px;background:linear-gradient(135deg,#f472b6,#e11d74);box-shadow:0 6px 12px -4px rgba(0,0,0,.25);z-index:1;transition:transform .7s cubic-bezier(.3,1.4,.5,1)}
.om-rv-lid::before,.om-rv-lid::after{content:'';position:absolute;top:-24px;width:34px;height:28px;border:7px solid #fbbf24;border-radius:50% 50% 0 50%;left:50%}
.om-rv-lid::before{margin-left:-36px;transform:rotate(20deg)}
.om-rv-lid::after{margin-left:2px;transform:scaleX(-1) rotate(20deg)}
.om-rv-gift.is-open .om-rv-lid{transform:translate(96px,-170px) rotate(40deg);opacity:0;transition:transform .8s cubic-bezier(.3,1.4,.5,1),opacity .45s ease .4s}

/* 3. Happy Birthday message */
.om-rv-msg{justify-content:center;padding-top:40px}
.om-rv-msg-top{font-size:40px;animation:om-rv-bob 2.4s ease-in-out infinite}
@keyframes om-rv-bob{50%{transform:translateY(-8px) rotate(6deg)}}
.om-rv-msg-top,.om-rv-msg-happy,.om-rv-msg-name,.om-rv-msg-sub{position:relative;z-index:1}
.om-rv-msg-happy{font-size:38px;font-weight:900;line-height:1.02;letter-spacing:-.5px;margin-top:8px;background:linear-gradient(135deg,#e11d74 10%,#9d174d 90%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  transform:translateY(24px);opacity:0;transition:transform .8s cubic-bezier(.22,1,.36,1) .15s,opacity .6s ease .15s}
.om-rv-msg.is-on .om-rv-msg-happy{transform:none;opacity:1}
.om-rv-msg-name{margin-top:10px;font-size:30px;font-weight:800;color:#4a1d2e;min-height:38px;font-family:'Brush Script MT','Segoe Script',cursive}
.om-rv-caret{display:inline-block;width:2px;height:26px;margin-left:3px;vertical-align:-3px;background:#e11d74;animation:om-rv-blink .8s steps(1) infinite}
@keyframes om-rv-blink{50%{opacity:0}}
.om-rv-msg-sub{margin-top:14px;font-size:12.5px;line-height:1.5;color:#8a5a6a;max-width:200px;opacity:0;transition:opacity .8s ease 1.6s}
.om-rv-msg.is-on .om-rv-msg-sub{opacity:1}
.om-rv-balloons i{position:absolute;z-index:0;bottom:-90px;width:34px;height:42px;border-radius:50% 50% 48% 48%;opacity:.55}
.om-rv-balloons i::after{content:'';position:absolute;left:50%;top:100%;width:1px;height:40px;background:rgba(74,29,46,.25)}
.om-rv-balloons i:nth-child(1){left:8%;background:#f472b6}
.om-rv-balloons i:nth-child(2){left:28%;background:#f472b6;width:28px;height:35px}
.om-rv-balloons i:nth-child(3){left:52%;background:#fbbf24}
.om-rv-balloons i:nth-child(4){left:72%;background:#9d174d;width:28px;height:35px}
.om-rv-balloons i:nth-child(5){left:86%;background:#e11d74}
.om-rv-msg.is-on .om-rv-balloons i{animation:om-rv-float 5s ease-in forwards}
.om-rv-msg.is-on .om-rv-balloons i:nth-child(2){animation-delay:.5s}
.om-rv-msg.is-on .om-rv-balloons i:nth-child(3){animation-delay:.2s}
.om-rv-msg.is-on .om-rv-balloons i:nth-child(4){animation-delay:.8s}
.om-rv-msg.is-on .om-rv-balloons i:nth-child(5){animation-delay:.35s}
@keyframes om-rv-float{0%{transform:translate(0,0) rotate(-4deg)}50%{transform:translate(8px,-330px) rotate(5deg)}100%{transform:translate(-6px,-680px) rotate(-3deg)}}

/* 4. Cake */
.om-rv-cake-title{font-size:22px;font-weight:800;margin-top:26px}
.om-rv-cake-sub{margin-top:auto;font-size:12px;font-weight:600;color:#831843;opacity:.8;transition:opacity .4s ease}
.om-rv-cake.is-out .om-rv-cake-sub{opacity:0}
.om-rv-cakebox{position:relative;width:170px;height:190px;margin-top:66px;transform:translateY(30px);opacity:0;transition:transform .8s cubic-bezier(.34,1.4,.64,1) .1s,opacity .5s ease .1s}
.om-rv-cake.is-on .om-rv-cakebox{transform:none;opacity:1}
.om-rv-plate{position:absolute;left:0;right:0;bottom:0;height:14px;border-radius:50%;background:#fff;box-shadow:0 8px 18px -6px rgba(74,29,46,.3)}
.om-rv-tier{position:absolute;left:50%;border-radius:12px 12px 8px 8px}
.om-rv-tier-bot{bottom:8px;width:150px;margin-left:-75px;height:62px;background:linear-gradient(180deg,#f9a8d4,#ec4899)}
.om-rv-tier-top{bottom:68px;width:110px;margin-left:-55px;height:48px;background:linear-gradient(180deg,#fbcfe8,#f472b6)}
.om-rv-tier::before{content:'';position:absolute;left:0;right:0;top:0;height:14px;border-radius:12px 12px 0 0;background:radial-gradient(circle at 8px 12px,#fff 7px,transparent 7.5px) 0 0/16px 16px repeat-x,#fff}
.om-rv-candles{position:absolute;left:50%;bottom:114px;width:80px;margin-left:-40px;display:flex;justify-content:space-between}
.om-rv-candles i{position:relative;width:9px;height:34px;border-radius:3px;background:repeating-linear-gradient(135deg,#fff 0 5px,#f472b6 5px 9px)}
.om-rv-candles b{position:absolute;left:50%;bottom:100%;width:12px;height:20px;margin-left:-6px;border-radius:50% 50% 45% 45%/60% 60% 40% 40%;background:radial-gradient(circle at 50% 70%,#fff 0 20%,#fde047 35%,#ec4899 75%);box-shadow:0 0 16px 6px rgba(251,191,36,.55);transform-origin:50% 100%;animation:om-rv-flicker .18s ease-in-out infinite alternate;transition:opacity .25s ease,transform .25s ease}
.om-rv-candles i:nth-child(2) b{animation-delay:.07s}
.om-rv-candles i:nth-child(3) b{animation-delay:.12s}
@keyframes om-rv-flicker{from{transform:scale(1,1) rotate(-2deg)}to{transform:scale(.92,1.08) rotate(2deg)}}
.om-rv-cake.is-out .om-rv-candles b{opacity:0;transform:scale(.2,.4) translateX(6px);animation:none}
.om-rv-candles s{position:absolute;left:50%;bottom:100%;width:10px;height:10px;margin-left:-5px;border-radius:50%;background:rgba(120,110,105,.35);opacity:0}
.om-rv-cake.is-out .om-rv-candles s{animation:om-rv-smoke 1.4s ease-out forwards}
@keyframes om-rv-smoke{0%{opacity:.8;transform:translateY(0) scale(.6)}100%{opacity:0;transform:translate(8px,-46px) scale(2.2)}}

/* 5. Memories */
.om-rv-mem-title{font-size:19px;font-weight:800;margin-top:22px}
.om-rv-polaroids{position:relative;width:228px;height:300px;margin-top:18px}
.om-rv-pol{position:absolute;width:128px;padding:8px 8px 26px;background:#fff;border-radius:4px;box-shadow:0 12px 26px -8px rgba(74,29,46,.35);opacity:0;transition:transform .8s cubic-bezier(.34,1.35,.64,1),opacity .4s ease}
.om-rv-pol span{display:grid;place-items:center;height:104px;font-size:46px;border-radius:2px}
.om-rv-pol em{position:absolute;left:0;right:0;bottom:6px;font-style:normal;font-size:12px;color:#7a4a5a;font-family:'Segoe Script','Brush Script MT',cursive}
.om-rv-pol.p1{left:0;top:6px;transform:translate(-40px,-240px) rotate(-30deg)}
.om-rv-pol.p1 span{background:linear-gradient(135deg,#bae6fd,#fde68a)}
.om-rv-pol.p2{right:0;top:66px;transform:translate(40px,-260px) rotate(30deg)}
.om-rv-pol.p2 span{background:linear-gradient(135deg,#ddd6fe,#fbcfe8)}
.om-rv-pol.p3{left:44px;top:146px;transform:translate(0,-300px) rotate(-20deg)}
.om-rv-pol.p3 span{background:linear-gradient(135deg,#fbcfe0,#fda4af)}
.om-rv-mem.is-on .om-rv-pol{opacity:1}
.om-rv-mem.is-on .om-rv-pol.p1{transform:rotate(-8deg);transition-delay:.2s}
.om-rv-mem.is-on .om-rv-pol.p2{transform:rotate(7deg);transition-delay:.7s}
.om-rv-mem.is-on .om-rv-pol.p3{transform:rotate(-3deg);transition-delay:1.2s}
.om-rv-sign{margin-top:auto;font-size:15px;font-weight:700;color:#be185d;font-family:'Segoe Script','Brush Script MT',cursive;opacity:0;transform:translateY(10px);transition:opacity .6s ease 1.9s,transform .6s ease 1.9s}
.om-rv-mem.is-on .om-rv-sign{opacity:1;transform:none}

/* Tap indicator + particles */
.om-rv-tap{position:absolute;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;pointer-events:none;opacity:0;transition:opacity .3s ease,top .6s cubic-bezier(.22,1,.36,1),left .6s cubic-bezier(.22,1,.36,1);z-index:5}
.om-rv-tap::before{content:'';position:absolute;inset:8px;border-radius:50%;background:rgba(255,255,255,.9);box-shadow:0 2px 10px rgba(0,0,0,.25)}
.om-rv-tap i{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,255,255,.9);opacity:0}
.om-rv-tap.is-on{opacity:1}
.om-rv-tap.is-press i{animation:om-rv-ring .6s ease-out}
.om-rv-tap.is-press::before{transform:scale(.8)}
@keyframes om-rv-ring{0%{opacity:1;transform:scale(.5)}100%{opacity:0;transform:scale(1.8)}}
.om-rv-fx{position:absolute;inset:0;pointer-events:none;z-index:4}
.om-rv-fx i{position:absolute;box-shadow:0 1px 2px rgba(0,0,0,.12);left:var(--x);top:var(--y);width:7px;height:11px;border-radius:2px;background:var(--c);animation:om-rv-confetti var(--t) cubic-bezier(.2,.7,.4,1) forwards}
.om-rv-fx i.h{width:auto;height:auto;background:none;color:var(--c);font-size:var(--s);font-style:normal;line-height:1}
@keyframes om-rv-confetti{0%{opacity:1;transform:translate(0,0) rotate(0) scale(.6)}15%{transform:translate(calc(var(--dx) * .45),calc(var(--dy) * .2 - 60px)) rotate(calc(var(--r) * .3)) scale(1)}75%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--r)) scale(1)}}

/* Captions: reuse the existing caption swap */
@media (prefers-reduced-motion:reduce){
  .om-rv-glow,.om-rv-msg-top,.om-rv-caret,.om-rv-rays,.om-rv-lock .om-rv-hint{animation:none}
}

/* ---- Girlfriend Surprise story (styled after /girlfriend: cream, pink, plum; DynaPuff / Great Vibes / Shantell Sans) ---- */
.om-rvg{--disp:"DynaPuff","Baloo 2",system-ui,sans-serif;--script:"Great Vibes","Dancing Script",Georgia,cursive;--hand:"Shantell Sans","Comic Sans MS","Segoe Print",cursive;
  font-family:var(--hand);color:#4a1d2e;background:linear-gradient(180deg,#fff8f1 0%,#fdebe6 100%)}
.om-rvg mark{background:linear-gradient(transparent 55%,rgba(251,191,36,.55) 55%);color:#c2410c;padding:0 2px}
.om-rvg-kicker{font-family:var(--hand);font-style:italic;font-weight:600;font-size:12px;color:#b4235a;margin-top:10px}

/* Gift */
.om-rvg-gift{background:radial-gradient(circle at 50% 40%,#fff 0%,#fff6ec 55%,#fbe7df 100%)}
.om-rvg-box{position:relative;width:118px;height:112px;margin-top:92px;animation:om-rvg-hover 2.6s ease-in-out infinite}
@keyframes om-rvg-hover{50%{transform:translateY(-6px)}}
.om-rvg-gift.is-wiggle .om-rvg-box{animation:om-rv-shake .5s ease-in-out 2}
.om-rvg-body{position:absolute;left:8px;right:8px;bottom:0;height:78px;border-radius:4px 4px 10px 10px;border:2.5px solid #c0265e;
  background:repeating-linear-gradient(100deg,#f9a8c8 0 3px,#fbcfe0 3px 7px);box-shadow:0 14px 26px -12px rgba(192,38,94,.55)}
.om-rvg-lid{position:absolute;left:0;right:0;top:14px;height:26px;border-radius:5px;border:2.5px solid #c0265e;background:repeating-linear-gradient(100deg,#f472b6 0 3px,#f9a8c8 3px 7px);z-index:1;transition:transform .8s cubic-bezier(.3,1.4,.5,1),opacity .4s ease .45s}
.om-rvg-body i,.om-rvg-lid i{position:absolute;left:50%;top:0;bottom:0;width:14px;margin-left:-7px;background:#e11d74;border-left:2px solid #9d174d;border-right:2px solid #9d174d}
.om-rvg-lid::before,.om-rvg-lid::after{content:'';position:absolute;top:-24px;left:50%;width:32px;height:26px;border:5px solid #e11d74;border-radius:50% 50% 0 50%}
.om-rvg-lid::before{margin-left:-34px;transform:rotate(20deg)}
.om-rvg-lid::after{margin-left:2px;transform:scaleX(-1) rotate(20deg)}
.om-rvg-gift.is-open .om-rvg-lid{transform:translate(-70px,-150px) rotate(-38deg);opacity:0}
.om-rvg-for{margin-top:34px;font-family:var(--script);font-size:34px;color:#9d174d;line-height:1}
.om-rvg-tapnote{margin-top:10px;font-size:11px;color:#b98a7b}

/* Bow & arrow */
.om-rvg-arrow{background:radial-gradient(circle at 50% 35%,#fff 0%,#fde8ee 60%,#fbd5de 100%)}
.om-rvg-heart{position:absolute;left:50%;top:150px;width:104px;margin-left:-52px;filter:drop-shadow(0 14px 22px rgba(225,29,116,.35));animation:om-rvg-beat 1.1s ease-in-out infinite;transition:opacity .35s ease,scale .35s ease}
@keyframes om-rvg-beat{0%,100%{transform:scale(1)}15%{transform:scale(1.08)}30%{transform:scale(.98)}45%{transform:scale(1.05)}}
.om-rvg-arrow.is-hit .om-rvg-heart{scale:1.35;opacity:0}
.om-rvg-thought{position:absolute;left:20px;right:20px;top:190px;opacity:0;transform:translateY(12px);transition:opacity .8s ease .2s,transform .8s ease .2s}
.om-rvg-thought p{font-family:var(--disp);font-weight:600;font-size:19px;color:#4a1d2e;margin:0;line-height:1.3}
.om-rvg-thought span{display:block;margin-top:8px;font-family:var(--script);font-size:20px;color:#9d174d}
.om-rvg-arrow.is-msg .om-rvg-thought{opacity:1;transform:none}
.om-rvg-shooter{position:absolute;left:84px;top:398px;width:0;height:0;transform:rotate(-73deg);transition:opacity .5s ease}
.om-rvg-arrow.is-msg .om-rvg-shooter{opacity:.35}
.om-rvg-bow{position:absolute;left:-45px;top:-60px;width:100px;height:120px;overflow:visible}
.om-rvg-str-pull{opacity:0}
.om-rvg-arrow.is-pull .om-rvg-str-rest{opacity:0}
.om-rvg-arrow.is-pull .om-rvg-str-pull{opacity:1}
.om-rvg-arrow.is-shot .om-rvg-str-pull{opacity:0}
.om-rvg-arrow.is-shot .om-rvg-str-rest{opacity:1}
.om-rvg-shaft{position:absolute;left:0;top:-1.5px;width:78px;height:3px;background:#8b5a3c;border-radius:2px;transition:translate .5s ease}
.om-rvg-shaft::before{content:'';position:absolute;right:-9px;top:-5px;border:6.5px solid transparent;border-left:11px solid #e11d74}
.om-rvg-shaft::after{content:'';position:absolute;left:-2px;top:-5px;width:14px;height:13px;background:linear-gradient(135deg,#f9a8c8 50%,transparent 50%),linear-gradient(45deg,transparent 50%,#f9a8c8 50%)}
.om-rvg-arrow.is-pull .om-rvg-shaft{translate:-22px 0}
.om-rvg-arrow.is-shot .om-rvg-shaft{translate:170px 0;opacity:0;transition:translate .38s cubic-bezier(.5,0,.9,.6),opacity .15s linear .33s}
.om-rvg-hint{margin-top:auto;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#c0265e;opacity:.7;transition:opacity .4s ease}
.om-rvg-arrow.is-shot .om-rvg-hint{opacity:0}

/* Museum door */
.om-rvg-door{background:radial-gradient(ellipse at 50% 30%,#4a1733 0%,#2a0d1d 60%,#1c0813 100%);color:#fde7ef;padding-top:44px}
.om-rvg-pill{font-size:9.5px;font-weight:700;padding:4px 10px;border-radius:999px;background:#fde68a;color:#7c2d12}
.om-rvg-closed{margin-top:10px;font-size:8.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#fbbf24}
.om-rvg-doorh{margin-top:4px;font-family:var(--disp);font-weight:700;font-size:17px;color:#fff}
.om-rvg-door mark{color:#fbbf24;background:linear-gradient(transparent 60%,rgba(225,29,116,.6) 60%)}
.om-rvg-doorsub{font-size:10.5px;opacity:.8;margin-top:2px}
.om-rvg-doorwrap{position:relative;width:178px;height:250px;margin-top:16px;perspective:700px}
.om-rvg-inside{position:absolute;inset:0;border-radius:89px 89px 6px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 16px;gap:6px;
  background:radial-gradient(ellipse at 50% 55%,#fffbe6 0%,#fde68a 40%,#f59e0b 90%);color:#6b2a10;box-shadow:inset 0 0 30px rgba(120,53,15,.35)}
.om-rvg-inside b{font-family:var(--hand);font-size:17px}
.om-rvg-inside span{font-size:10px;line-height:1.35;opacity:.8}
.om-rvg-leaf{position:absolute;inset:0;border-radius:89px 89px 6px 6px;background:linear-gradient(160deg,#9d2a6c 0%,#7a1d55 55%,#5e1541 100%);border:5px solid #3b0d27;
  box-shadow:0 20px 40px -10px rgba(0,0,0,.6);transform-origin:0 50%;transition:transform 1.5s cubic-bezier(.55,0,.2,1)}
.om-rvg-door.is-open .om-rvg-leaf{transform:rotateY(-104deg)}
.om-rvg-panel{position:absolute;left:18px;right:18px;bottom:18px;height:70px;border:2px solid rgba(0,0,0,.18);border-radius:4px}
.om-rvg-sign{position:absolute;left:50%;top:34px;width:112px;margin-left:-56px;padding:7px 6px;background:#fffaf0;color:#4a1d2e;border-radius:4px;transform:rotate(-3deg);font-size:10px;font-weight:700;line-height:1.2;box-shadow:0 4px 8px rgba(0,0,0,.3)}
.om-rvg-sign small{display:block;font-size:8.5px;font-weight:500;opacity:.8}
.om-rvg-ring{position:absolute;left:50%;top:104px;width:46px;height:46px;margin-left:-23px;border-radius:50%;border:6px solid #e0a43a;box-shadow:0 0 0 1px #8a5a12,inset 0 0 0 1px #8a5a12,0 4px 8px rgba(0,0,0,.45);transform-origin:50% -6px}
.om-rvg-ring::before{content:'';position:absolute;left:50%;top:-14px;width:12px;height:12px;margin-left:-6px;border-radius:50%;background:#e0a43a;box-shadow:0 0 0 1px #8a5a12}
.om-rvg-ring.is-knock{animation:om-rvg-knock .45s ease-out}
@keyframes om-rvg-knock{0%{transform:rotateX(0)}35%{transform:rotateX(55deg) scale(.95)}60%{transform:rotateX(-10deg)}100%{transform:none}}
.om-rvg-ring.is-knock::after{content:'';position:absolute;inset:-14px;border-radius:50%;border:2px solid rgba(253,230,138,.9);animation:om-rv-ring .5s ease-out forwards}
.om-rvg-knocks{display:flex;gap:6px;margin-top:14px}
.om-rvg-knocks i{width:8px;height:8px;border-radius:50%;border:1.5px solid #fbbf24;transition:background .3s ease,box-shadow .3s ease}
.om-rvg-knocks i.is-on{background:#fbbf24;box-shadow:0 0 8px #fbbf24}
.om-rvg-doorhint{margin-top:6px;font-size:10.5px;opacity:.75;min-height:14px}

/* Note wall */
.om-rvg-notes{background:linear-gradient(180deg,#fff4ef 0%,#fde2ea 100%)}
.om-rvg-room{margin-top:8px;font-size:9px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#e11d74}
.om-rvg-roomh{margin-top:4px;font-family:var(--disp);font-weight:700;font-size:17px;color:#4a1d2e;line-height:1.2}
.om-rvg-roomsub{font-size:10.5px;color:#9a6b5e;margin-top:3px}
.om-rvg-wall{display:flex;flex-direction:column;gap:12px;margin-top:22px;align-self:stretch;padding:0 6px}
.om-rvg-note{position:relative;height:64px;transform-style:preserve-3d;transition:transform .8s cubic-bezier(.3,1.3,.5,1)}
.om-rvg-note.n1{rotate:-2deg}.om-rvg-note.n2{rotate:1.5deg;margin-left:14px}.om-rvg-note.n3{rotate:-1deg}
.om-rvg-note .f,.om-rvg-note .b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:4px;backface-visibility:hidden;-webkit-backface-visibility:hidden;padding:8px 12px;box-shadow:0 6px 14px -6px rgba(74,29,46,.35)}
.om-rvg-note .f{background:linear-gradient(135deg,#fff7df 0 86%,#f2dfae 86%);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#a0785a}
.om-rvg-note .b{background:#fff;transform:rotateX(180deg);font-size:13px;font-weight:600;color:#9d174d;border-left:4px solid #f472b6}
.om-rvg-note.is-open{transform:rotateX(180deg)}
.om-rvg-count{margin-top:16px;font-size:10.5px;font-weight:700;color:#9a6b5e}

/* Sealed letter */
.om-rvg-letter{background:radial-gradient(circle at 50% 30%,#fff 0%,#fdf0e6 60%,#f8dccf 100%)}
.om-rvg-env{position:relative;width:206px;height:136px;margin-top:196px}
.om-rvg-env::before{content:'';position:absolute;inset:0;border-radius:6px;background:#f1d9b5}
.om-rvg-paper{position:absolute;left:12px;right:12px;top:10px;height:118px;overflow:hidden;padding:14px 14px 10px;background:#fffdf8;border-radius:4px;box-shadow:0 10px 24px -10px rgba(74,29,46,.4);text-align:left;z-index:1;transition:transform 1.1s cubic-bezier(.22,1,.36,1) .35s,height 1.1s cubic-bezier(.22,1,.36,1) .35s}
.om-rvg-paper em{font-family:var(--script);font-style:normal;font-size:22px;color:#9d174d}
.om-rvg-paper p{margin:6px 0 8px;font-size:11.5px;line-height:1.5;color:#4a1d2e}
.om-rvg-paper span{font-family:var(--script);font-size:16px;color:#9d174d}
.om-rvg-letter.is-open .om-rvg-paper{transform:translateY(-180px);height:196px}
.om-rvg-pocket{position:absolute;inset:0;z-index:2;border-radius:6px;background:linear-gradient(160deg,#f7e4c6,#ecd0a6);clip-path:polygon(0 18%,50% 62%,100% 18%,100% 100%,0 100%)}
.om-rvg-flap{position:absolute;left:0;right:0;top:0;height:86px;z-index:3;background:linear-gradient(180deg,#e9c99a,#f3dcb8);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:50% 0;transition:transform .6s ease,z-index 0s linear .3s}
.om-rvg-letter.is-open .om-rvg-flap{transform:rotateX(180deg);z-index:0}
.om-rvg-seal{position:absolute;left:50%;top:62px;width:50px;height:50px;margin-left:-25px;z-index:4}
.om-rvg-seal i{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 35% 30%,#c084fc,#7e22ce 55%,#581c87);box-shadow:0 4px 10px rgba(88,28,135,.5);transition:transform .6s cubic-bezier(.3,1.2,.5,1),opacity .5s ease .15s}
.om-rvg-seal i::after{content:"\2665";position:absolute;inset:0;display:grid;place-items:center;color:rgba(255,255,255,.55);font-size:22px}
.om-rvg-seal i:first-child{clip-path:polygon(0 0,58% 0,44% 48%,56% 100%,0 100%)}
.om-rvg-seal i:last-child{clip-path:polygon(58% 0,100% 0,100% 100%,56% 100%,44% 48%)}
.om-rvg-letter.is-crack .om-rvg-seal i:first-child{transform:translate(-26px,30px) rotate(-35deg);opacity:0}
.om-rvg-letter.is-crack .om-rvg-seal i:last-child{transform:translate(26px,34px) rotate(35deg);opacity:0}
.om-rvg-always{margin-top:auto;font-family:var(--script);font-size:24px;color:#9d174d;opacity:0;transition:opacity .8s ease 1.4s}
.om-rvg-letter.is-open .om-rvg-always{opacity:1}
@media (prefers-reduced-motion:reduce){.om-rvg-box,.om-rvg-heart{animation:none}}
