/* GERADO por scripts/build-niche-css.mjs — não edite à mão. */

/* ===== Correção: '.invite > *{position:relative}' anulava o fixed de TODAS as aberturas ===== */
.invite>.opening[data-opening]{position:fixed!important;inset:0!important;width:auto;height:100vh;height:100dvh;z-index:60}
/* ===== Neutraliza regras legadas (largura/altura/raio/filtro/::after e temas com !important) ===== */
.invite>.opening.opening-niche{width:auto!important;max-width:none!important;height:100vh!important;height:100dvh!important;aspect-ratio:auto!important;border:0!important;border-radius:0!important;box-shadow:none!important;filter:none!important;overflow:hidden!important;display:block!important;margin:0!important;padding:0!important;background:var(--n-bg,#0b0810)!important;color:var(--n-ink,#fff8ee)!important}
.invite>.opening.opening-niche:before,.invite>.opening.opening-niche:after{display:none!important;content:none!important}
/* Desempenho: aparelhos fracos (classe aplicada pelo runtime) */
.opening-niche.n3d-lite .n3d-spark,.opening-niche.n3d-lite .cf:nth-child(2n){display:none}
.opening-niche.n3d-lite *{filter:none!important;animation-iteration-count:1}
.opening-niche.n3d-lite .n3d-glow{animation:none;opacity:.35}
/* Acessibilidade: foco visível por teclado */
.opening-niche .opening-hit:focus-visible{outline:3px solid var(--n-glow,#ffdca0);outline-offset:-10px}
/* ===== Aberturas 3D por nicho — base ===== */
.invite>.opening.opening-niche{position:fixed!important;inset:0;height:100vh;height:100dvh;z-index:60;display:block;overflow:hidden;padding:0;background:var(--n-bg,#0b0810)!important;color:var(--n-ink,#fff8ee)!important;touch-action:none;perspective:none}
.opening-niche .opening-hit{position:absolute;inset:0;width:100%;height:100%;display:block;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;overflow:hidden;-webkit-tap-highlight-color:transparent;outline-offset:-6px}
.opening-niche:before,.opening-niche:after{display:none!important}
.opening-niche .n3d-bg,.opening-niche .n3d-bg>i{position:absolute;inset:0;pointer-events:none;display:block}
.opening-niche .n3d-glow{background:radial-gradient(ellipse 70% 55% at 50% 42%,var(--n-glow,#ffdca0),transparent 62%);opacity:.5;filter:blur(30px);animation:n3d-breathe 6s ease-in-out infinite}
.opening-niche .n3d-vig{background:radial-gradient(ellipse at 50% 46%,transparent 40%,rgba(0,0,0,.6) 100%)}
.opening-niche .n3d-stage{--k:1;position:absolute;left:50%;top:44%;width:440px;height:440px;margin:-220px 0 0 -220px;transform:scale(var(--k));perspective:1150px;perspective-origin:50% 38%;pointer-events:none}
@media(max-width:470px){.opening-niche .n3d-stage{--k:.84}}
@media(max-width:380px){.opening-niche .n3d-stage{--k:.72}}
@media(max-height:720px){.opening-niche .n3d-stage{--k:.78;top:41%}}
@media(max-height:600px){.opening-niche .n3d-stage{--k:.62;top:40%}}
@media(min-width:900px) and (min-height:800px){.opening-niche .n3d-stage{--k:1.18}}
.opening-niche .n3d-rig{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(calc(var(--ty,0) * 1deg)) rotateY(calc(var(--tx,0) * 1deg));transition:transform .28s cubic-bezier(.2,.7,.2,1)}
.opening-niche .n3d-rig *{transform-style:preserve-3d}
.opening-niche .n3d-copy{position:absolute;left:0;right:0;bottom:calc(max(24px,env(safe-area-inset-bottom)) + 40px);display:grid;gap:6px;justify-items:center;padding:0 24px;text-align:center;z-index:8;text-shadow:0 3px 22px rgba(0,0,0,.6);animation:n3d-copy-in .9s .2s cubic-bezier(.2,.7,.2,1) both;transition:opacity .45s,transform .45s}
.opening-niche .opening-hit:after{content:"";position:absolute;left:0;right:0;bottom:0;height:38%;background:linear-gradient(180deg,transparent,rgba(5,3,10,.62));pointer-events:none;z-index:7;transition:opacity .4s}
.opening-clouds .opening-hit:after{background:linear-gradient(180deg,transparent,rgba(235,244,255,.7))}
.opening-blocks .opening-hit:after{background:linear-gradient(180deg,transparent,rgba(255,240,246,.72))}
.opening-niche.is-open .opening-hit:after{opacity:0}
.opening-niche .n3d-copy{z-index:8}
.opening-niche .n3d-copy small{font:750 10px/1.4 var(--invite-sans);letter-spacing:.26em;text-transform:uppercase;opacity:.72}
.opening-niche .n3d-copy strong{font:500 clamp(26px,7vw,42px)/1.02 var(--invite-font);letter-spacing:-.03em;text-wrap:balance}
.opening-niche .n3d-copy em{font:500 12px/1.4 var(--invite-sans);font-style:normal;letter-spacing:.05em;opacity:.62;min-height:1em}
.opening-niche .opening-tip{color:var(--n-glow,#ffdca0)!important;z-index:9;bottom:max(22px,env(safe-area-inset-bottom))}
.opening-niche.is-open .n3d-copy{opacity:0;transform:translateY(14px);animation:none}
.opening-niche.is-open .opening-tip{opacity:0!important;transition:opacity .3s}
.opening-niche.is-open .opening-hit{pointer-events:none}
.opening-niche.is-open{animation:n3d-exit .75s ease-in calc(var(--open-ms,3200ms) - 750ms) forwards}
@keyframes n3d-exit{to{opacity:0;filter:blur(6px)}}
@keyframes n3d-copy-in{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes n3d-breathe{50%{opacity:.72;transform:scale(1.06)}}
@keyframes n3d-float{0%,100%{translate:0 0}50%{translate:0 -9px}}
@keyframes n3d-twinkle{0%,100%{opacity:0;transform:scale(.2) rotate(0)}50%{opacity:1;transform:scale(var(--s,1)) rotate(90deg)}}
@keyframes n3d-rise-dust{from{opacity:0;transform:translate3d(0,30px,0)}20%{opacity:.9}to{opacity:0;transform:translate3d(var(--dx,0px),-190px,0)}}

/* Cubo 3D genérico: --w --h --d e --c (cor base) */
.cub{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d}
.cub>i{position:absolute;display:block;font-style:normal;overflow:hidden;backface-visibility:visible}
.cub>.f-f{width:var(--w);height:var(--h);left:calc(var(--w) / -2);top:calc(var(--h) / -2);transform:translateZ(calc(var(--d) / 2))}
.cub>.f-b{width:var(--w);height:var(--h);left:calc(var(--w) / -2);top:calc(var(--h) / -2);transform:rotateY(180deg) translateZ(calc(var(--d) / 2))}
.cub>.f-r{width:var(--d);height:var(--h);left:calc(var(--d) / -2);top:calc(var(--h) / -2);transform:rotateY(90deg) translateZ(calc(var(--w) / 2))}
.cub>.f-l{width:var(--d);height:var(--h);left:calc(var(--d) / -2);top:calc(var(--h) / -2);transform:rotateY(-90deg) translateZ(calc(var(--w) / 2))}
.cub>.f-t{width:var(--w);height:var(--d);left:calc(var(--w) / -2);top:calc(var(--d) / -2);transform:rotateX(90deg) translateZ(calc(var(--h) / 2))}
.cub>.f-d{width:var(--w);height:var(--d);left:calc(var(--w) / -2);top:calc(var(--d) / -2);transform:rotateX(-90deg) translateZ(calc(var(--h) / 2))}
.cub>i em,.cub>i b{position:absolute;inset:0;display:block;font-style:normal}

/* Prisma facetado (cilindro): raio R, largura de cada face W, altura H */
.prism{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d}
.prism>.pf{position:absolute;display:block;left:calc(var(--fw) / -2);top:calc(var(--fh) / -2);width:var(--fw);height:var(--fh);transform:rotateY(calc(var(--i) * 360deg / var(--n))) translateZ(var(--r));backface-visibility:visible}

.n3d-spark{position:absolute;left:var(--x);top:var(--y);width:14px;height:14px;margin:-7px;background:radial-gradient(circle,#fff 0 12%,transparent 13%),conic-gradient(from 0deg,transparent 0 20deg,#fff 22deg 26deg,transparent 28deg 65deg,#fff 67deg 70deg,transparent 72deg 110deg,#fff 112deg 116deg,transparent 118deg 155deg,#fff 157deg 160deg,transparent 162deg);filter:drop-shadow(0 0 6px var(--n-glow,#ffdca0));opacity:0;animation:n3d-twinkle var(--t) var(--d) ease-in-out infinite;pointer-events:none}

/* Confetes */
.confetti-burst{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;pointer-events:none}
.confetti-burst .cf{position:absolute;left:0;top:0;width:var(--w);height:var(--h);margin:calc(var(--h) / -2) 0 0 calc(var(--w) / -2);background:var(--c);border-radius:1.5px;opacity:0;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
@keyframes n3d-confetti{0%{opacity:0;transform:translate3d(0,0,0) rotate3d(1,.6,.3,0)}8%{opacity:1}55%{opacity:1;transform:translate3d(var(--x),var(--y),var(--z)) rotate3d(1,.6,.3,calc(var(--r) * .55))}100%{opacity:0;transform:translate3d(calc(var(--x) * 1.15),calc(var(--y) + var(--fall)),var(--z)) rotate3d(1,.6,.3,var(--r))}}


/* ===== Caixa de alianças ===== */
.opening-rings{--n-bg:radial-gradient(ellipse at 50% 30%,#3a1424 0,#170812 55%,#07030a 100%);--n-glow:#ffd48a;--n-ink:#fff4e4}
.opening-rings .n3d-rig{transform:rotateX(calc(var(--ty,0) * 1deg)) rotateY(calc(var(--tx,0) * 1deg))}
.rb-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(46px) rotateX(-24deg) rotateY(-26deg);animation:n3d-float 5.5s ease-in-out infinite}
.rb-floor{position:absolute;left:50%;top:50%;width:420px;height:300px;margin:-110px 0 0 -210px;background:radial-gradient(ellipse,rgba(255,206,130,.35) 0,rgba(255,206,130,.08) 42%,transparent 68%);transform:translateY(60px) rotateX(90deg) translateZ(-1px)}
.rb-floor:after{content:"";position:absolute;left:50%;top:50%;width:300px;height:200px;margin:-100px 0 0 -150px;background:radial-gradient(ellipse,rgba(0,0,0,.72),transparent 68%);filter:blur(10px)}
.rb-spot{position:absolute;left:50%;top:50%;width:300px;height:420px;margin:-390px 0 0 -150px;background:linear-gradient(180deg,rgba(255,232,178,.0),rgba(255,232,178,.34) 55%,rgba(255,232,178,.08));clip-path:polygon(40% 0,60% 0,100% 100%,0 100%);filter:blur(7px);transform:translateZ(-40px) rotateY(26deg) rotateX(24deg);animation:n3d-breathe 5s ease-in-out infinite;pointer-events:none;opacity:.8}
.rb-base{--c:#4b1322}
.rb-base>i,.rb-lid-cube>i{background:linear-gradient(180deg,#5d1a2c,#35101c);box-shadow:inset 0 0 0 1px rgba(0,0,0,.4)}
.rb-base>.f-f,.rb-lid-cube>.f-f{filter:brightness(1.12)}
.rb-base>.f-l,.rb-lid-cube>.f-l{filter:brightness(.72)}
.rb-base>.f-r,.rb-lid-cube>.f-r{filter:brightness(.84)}
.rb-base>.f-d{background:#12060b}
.rb-base i:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(45deg,rgba(255,255,255,.03) 0 1px,transparent 1px 3px),radial-gradient(ellipse at 30% 0,rgba(255,255,255,.14),transparent 60%);pointer-events:none}
.rb-trim{border-top:4px solid #e0b866;box-shadow:inset 0 3px 0 rgba(255,236,190,.55),inset 0 -3px 0 rgba(0,0,0,.25);background:linear-gradient(90deg,transparent 0,rgba(224,184,102,.0) 100%)}
.rb-trim:after{content:"";position:absolute;left:14px;right:14px;bottom:10px;height:1px;background:linear-gradient(90deg,transparent,rgba(224,184,102,.8),transparent)}
.rb-lid-cube .f-t{background:radial-gradient(ellipse at 30% 20%,#7a2238,#3b1120 70%);box-shadow:inset 0 0 0 5px #3b1120,inset 0 0 0 6px #e0b866}
.rb-monogram{display:grid!important;place-items:center;font:italic 500 62px/1 var(--invite-font);color:#f0cf86;text-shadow:0 1px 0 #fff3cc,0 -1px 0 #8a5a12,0 8px 14px rgba(0,0,0,.5);transform:rotate(-8deg)}
.rb-satin{background:linear-gradient(135deg,#f6ead2,#e6d2ae)!important;box-shadow:inset 0 0 26px rgba(120,80,30,.35)}
.rb-lid-cube>.f-d{background:linear-gradient(135deg,#f6ead2,#dcc79f)}
.rb-rim{position:absolute;left:50%;top:50%;width:240px;height:172px;margin:-86px 0 0 -120px;border:9px solid #3a0e1b;box-shadow:inset 0 0 0 2px #e0b866,0 0 0 1px rgba(0,0,0,.4);transform:rotateX(90deg) translateZ(37px)}
.rb-velvet{position:absolute;left:50%;top:50%;width:222px;height:154px;margin:-77px 0 0 -111px;background:radial-gradient(ellipse at 50% 40%,#9a2942,#5a1425 62%,#33091a);transform:rotateX(90deg) translateZ(27px);box-shadow:inset 0 0 30px rgba(0,0,0,.6)}
.rb-slit{position:absolute!important;left:50%;top:50%;inset:auto!important;width:132px;height:30px;margin:-15px 0 0 -66px;border-radius:15px;background:linear-gradient(180deg,#14050b,#3a0f1f);box-shadow:inset 0 3px 8px #000,0 1px 0 rgba(255,150,170,.25)}
.rb-rings{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;transform:translate3d(0,-22px,0)}
.rb-ring{position:absolute;left:-35px;top:-35px;width:70px;height:70px;transform-style:preserve-3d;transform-origin:50% 50%}
.rb-ring.r1{transform:translate3d(-30px,-24px,3px) rotateY(16deg);animation:rb-sway1 4.6s ease-in-out infinite}
.rb-ring.r2{transform:translate3d(30px,-24px,-3px) rotateY(-14deg) scale(.94);animation:rb-sway2 4.6s ease-in-out infinite}
.rb-ring .rg{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 210deg,#fff4c9,#e6b652 12%,#8a5a12 28%,#f6d98a 42%,#fff8d8 52%,#c99530 68%,#7a4d0d 82%,#f2d27f 92%,#fff4c9);-webkit-mask:radial-gradient(circle,transparent 0 24px,#000 25px);mask:radial-gradient(circle,transparent 0 24px,#000 25px);transform:translateZ(var(--z));filter:brightness(var(--b))}
.rb-ring.r2 .rg{background:conic-gradient(from 40deg,#f8f8fb,#c9ccd6 12%,#767a88 28%,#e9ebf2 42%,#fff 52%,#b4b8c6 68%,#6b6f7d 82%,#eef0f6 92%,#f8f8fb)}
.rb-gem{position:absolute;left:50%;top:-7px;width:22px;height:22px;margin-left:-11px;transform:translateZ(6px)}
.rb-gem b{position:absolute;inset:0;clip-path:polygon(50% 0,100% 38%,50% 100%,0 38%);background:conic-gradient(from 20deg,#fff,#bfe6ff,#fff,#8fc9ff,#fff,#d6f0ff,#fff);filter:drop-shadow(0 0 7px #cfeaff);animation:rb-gem-glint 2.4s ease-in-out infinite}
.rb-ring.r2 .rb-gem{display:none}
.rb-lid{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;transform:translate3d(0,-37px,-86px) rotateX(9deg);transform-origin:50% 100% 0;animation:rb-lid-breathe 4.6s ease-in-out infinite}
.rb-lid .rb-lid-cube{transform:translate3d(0,-19px,86px)}
.rb-flash{position:absolute;left:50%;top:50%;width:360px;height:360px;margin:-180px 0 0 -180px;background:radial-gradient(circle,#fff 0,rgba(255,235,190,.85) 18%,rgba(255,210,140,.25) 42%,transparent 66%);transform:translate3d(0,-60px,90px);opacity:0;pointer-events:none}
.rb-sparks{position:absolute;left:50%;top:50%;width:300px;height:220px;margin:-190px 0 0 -150px;transform:translateZ(60px)}
@keyframes rb-sway1{50%{transform:translate3d(-30px,-24px,3px) rotateY(-10deg)}}
@keyframes rb-sway2{50%{transform:translate3d(30px,-24px,-3px) rotateY(12deg) scale(.94)}}
@keyframes rb-gem-glint{0%,100%{filter:drop-shadow(0 0 5px #cfeaff) brightness(1)}50%{filter:drop-shadow(0 0 14px #fff) brightness(1.5)}}
@keyframes rb-lid-breathe{50%{transform:translate3d(0,-37px,-86px) rotateX(13deg)}}
@keyframes rb-lid-open{0%{transform:translate3d(0,-37px,-86px) rotateX(11deg)}55%{transform:translate3d(0,-37px,-86px) rotateX(126deg)}100%{transform:translate3d(0,-37px,-86px) rotateX(118deg)}}
@keyframes rb-ring-rise1{0%{transform:translate3d(-30px,-24px,3px) rotateY(16deg)}40%{transform:translate3d(-34px,-112px,30px) rotateY(240deg) scale(1.15)}100%{transform:translate3d(-58px,-120px,120px) rotateY(720deg) scale(1.55)}}
@keyframes rb-ring-rise2{0%{transform:translate3d(30px,-24px,-3px) rotateY(-14deg) scale(.94)}40%{transform:translate3d(34px,-96px,30px) rotateY(-240deg) scale(1.1)}100%{transform:translate3d(58px,-108px,120px) rotateY(-720deg) scale(1.5)}}
@keyframes rb-flash{0%{opacity:0;transform:translate3d(0,-60px,90px) scale(.3)}45%{opacity:1}100%{opacity:0;transform:translate3d(0,-60px,90px) scale(1.7)}}
@keyframes rb-camera{0%{translate:0 0;scale:1}100%{translate:0 46px;scale:1.16}}
.opening-rings.is-open .rb-group{animation:rb-camera 3s .2s cubic-bezier(.5,0,.2,1) forwards}
.opening-rings.is-open .rb-lid{animation:rb-lid-open 1.1s cubic-bezier(.3,1.2,.4,1) forwards}
.opening-rings.is-open .rb-ring.r1{animation:rb-ring-rise1 2.2s .75s cubic-bezier(.3,.7,.2,1) forwards}
.opening-rings.is-open .rb-ring.r2{animation:rb-ring-rise2 2.2s .82s cubic-bezier(.3,.7,.2,1) forwards}
.opening-rings.is-open .rb-flash{animation:rb-flash 1.3s 1.5s ease-out forwards}
.opening-rings.is-open .n3d-glow{opacity:.95;transition:opacity 1.2s .6s}


/* ===== Presente 3D e balões ===== */
.opening-party{--n-bg:radial-gradient(ellipse at 50% 30%,#7b2f8a 0,#3a1450 52%,#170a26 100%);--n-glow:#ff9bd0;--n-ink:#fff6ff}
.gb-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(64px) rotateX(-16deg) rotateY(-30deg)}
.gb-floor{position:absolute;left:50%;top:50%;width:440px;height:320px;margin:-160px 0 0 -220px;background:radial-gradient(ellipse,rgba(255,150,220,.28),transparent 66%);transform:translateY(74px) rotateX(90deg)}
.gb-floor:after{content:"";position:absolute;left:50%;top:50%;width:250px;height:190px;margin:-95px 0 0 -125px;background:radial-gradient(ellipse,rgba(0,0,0,.65),transparent 70%);filter:blur(8px)}
.gb-body,.gb-lid-cube{--gc:color-mix(in srgb,var(--invite-accent,#d778b7) 78%,#ff7ab8)}
.gb-body>i,.gb-lid-cube>i{background:linear-gradient(160deg,color-mix(in srgb,var(--gc) 100%,#fff 14%),var(--gc) 55%,color-mix(in srgb,var(--gc) 78%,#000));box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.gb-body>.f-f,.gb-lid-cube>.f-f{filter:brightness(1.08)}
.gb-body>.f-l,.gb-lid-cube>.f-l{filter:brightness(.68)}
.gb-body>.f-r,.gb-lid-cube>.f-r{filter:brightness(.82)}
.gb-lid-cube>.f-t{filter:brightness(1.2)}
.gb-body i:before,.gb-lid-cube i:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 15%,rgba(255,255,255,.28),transparent 46%),repeating-linear-gradient(135deg,rgba(255,255,255,.07) 0 6px,transparent 6px 18px);pointer-events:none}
.gb-band{background:linear-gradient(90deg,transparent calc(50% - 15px),#ffe9a8 calc(50% - 15px),#fff6d2 calc(50% - 6px),#f1c95c 50%,#c99a2c calc(50% + 15px),transparent calc(50% + 15px))}
.gb-band.gb-h{background:linear-gradient(0deg,transparent calc(50% - 15px),#ffe9a8 calc(50% - 15px),#fff6d2 calc(50% - 6px),#f1c95c 50%,#c99a2c calc(50% + 15px),transparent calc(50% + 15px))}
.gb-body{transform:translateY(0)}
.gb-lid{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;transform:translate3d(0,-90px,0)}
.gb-bow{position:absolute;left:0;top:-22px;width:0;height:0;transform-style:preserve-3d;transform:translateZ(0)}
.gb-loop{position:absolute;left:-52px;top:-52px;width:104px;height:66px;border-radius:50%;background:radial-gradient(ellipse at 50% 72%,transparent 0 30%,#c99a2c 34%,#f1c95c 60%,#fff2c2 100%);box-shadow:inset 0 -6px 12px rgba(120,70,0,.35),0 6px 10px rgba(0,0,0,.28);transform-origin:50% 100%}
.gb-loop.l1{transform:translateZ(6px) rotate(-30deg) translateX(-30px)}
.gb-loop.l2{transform:translateZ(6px) rotate(30deg) translateX(30px)}
.gb-knot{position:absolute;left:-15px;top:-30px;width:30px;height:30px;border-radius:46%;background:radial-gradient(circle at 35% 30%,#fff6d2,#f1c95c 55%,#b8862a);transform:translateZ(14px);box-shadow:0 5px 8px rgba(0,0,0,.35)}
.gb-tail{position:absolute;left:-11px;top:-14px;width:22px;height:70px;background:linear-gradient(90deg,#c99a2c,#f5d878 50%,#c99a2c);clip-path:polygon(0 0,100% 0,100% 100%,50% 84%,0 100%);transform-origin:50% 0;transform:translateZ(4px) rotate(var(--rot))}
.gb-tail.t1{--rot:18deg}
.gb-tail.t2{--rot:-18deg}
.balloons{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d}
.bl{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d;transform:translate3d(var(--bx),var(--by),var(--bz));animation:bl-bob calc(3.6s + var(--i) * .4s) ease-in-out calc(var(--i) * -.6s) infinite}
.bl-body{position:absolute;left:-38px;top:-48px;width:76px;height:94px;border-radius:50% 50% 47% 47% / 46% 46% 54% 54%;background:radial-gradient(circle at 32% 26%,rgba(255,255,255,.95) 0 5%,rgba(255,255,255,.4) 6% 15%,transparent 16%),radial-gradient(circle at 50% 44%,color-mix(in srgb,var(--bc) 88%,#fff),var(--bc) 62%,color-mix(in srgb,var(--bc) 62%,#000) 100%);box-shadow:inset -10px -14px 22px rgba(0,0,0,.28),inset 8px 10px 16px rgba(255,255,255,.2),0 14px 26px rgba(0,0,0,.25)}
.bl-body:before{content:"";position:absolute;left:50%;bottom:-8px;width:14px;height:12px;margin-left:-7px;background:var(--bc);clip-path:polygon(50% 0,100% 100%,0 100%);filter:brightness(.8)}
.bl-string{position:absolute;left:-.5px;top:46px;width:1.5px;height:170px;background:linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,.1));transform-origin:50% 0;transform:rotate(var(--rot))}
.gb-flash{position:absolute;left:50%;top:50%;width:380px;height:380px;margin:-190px 0 0 -190px;background:radial-gradient(circle,#fff,rgba(255,210,240,.7) 22%,rgba(255,150,220,.2) 44%,transparent 66%);opacity:0;transform:translateZ(60px)}
@keyframes bl-bob{50%{transform:translate3d(var(--bx),var(--by2),var(--bz))}}
@keyframes gb-shake{0%,100%{transform:translate3d(0,0,0)}20%{transform:translate3d(-5px,0,0) rotateZ(-1.2deg)}40%{transform:translate3d(5px,0,0) rotateZ(1.2deg)}60%{transform:translate3d(-4px,0,0) rotateZ(-.8deg)}80%{transform:translate3d(4px,0,0) rotateZ(.8deg)}}
@keyframes gb-lid-pop{0%{transform:translate3d(0,-90px,0) rotateZ(0)}30%{transform:translate3d(0,-108px,0)}100%{transform:translate3d(60px,-520px,180px) rotateZ(-28deg) rotateX(34deg)}}
@keyframes gb-balloons-fly{0%{transform:translate3d(var(--bx),var(--by),var(--bz)) scale(1)}100%{transform:translate3d(calc(var(--bx) + var(--tx2)),calc(var(--by) - 640px),calc(var(--bz) + 120px)) scale(1.1)}}
@keyframes gb-pulse{0%{opacity:0;transform:translateZ(60px) scale(.3)}30%{opacity:1}100%{opacity:0;transform:translateZ(60px) scale(1.8)}}
.opening-party.is-open .gb-body{animation:gb-shake .4s ease-in-out both}
.opening-party.is-open .gb-lid{animation:gb-lid-pop 1.6s .38s cubic-bezier(.2,.8,.3,1) forwards}
.opening-party.is-open .bl{animation:gb-balloons-fly 2.5s calc(.5s + var(--i) * .1s) cubic-bezier(.4,.05,.3,1) forwards}
.opening-party.is-open .cf{animation:n3d-confetti 2.4s calc(.4s + var(--dl)) cubic-bezier(.2,.7,.3,1) forwards}
.opening-party.is-open .gb-flash{animation:gb-pulse 1.1s .4s ease-out forwards}


/* ===== Coroa real (15 anos) ===== */
.opening-crown{--n-bg:radial-gradient(ellipse at 50% 28%,#6a2a76 0,#33123f 52%,#12081c 100%);--n-glow:#ffcdf0;--n-ink:#fff5fc}
.cr-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(34px) rotateX(-16deg)}
.cr-floor{position:absolute;left:50%;top:50%;width:420px;height:300px;margin:-150px 0 0 -210px;background:radial-gradient(ellipse,rgba(255,170,230,.3),transparent 66%);transform:translateY(142px) rotateX(90deg)}
.cr-halo{position:absolute;left:50%;top:50%;width:300px;height:300px;margin:-215px 0 0 -150px;border-radius:50%;background:radial-gradient(circle,rgba(255,225,250,.5),rgba(255,160,230,.12) 50%,transparent 70%);filter:blur(6px);transform:translateZ(-80px);animation:n3d-breathe 4.6s ease-in-out infinite}
.cr-pedestal{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d}
.cr-ped{--fw:33px;--fh:44px;--r:70px;margin-top:120px}
.cr-ped-face{position:absolute;inset:0;background:linear-gradient(90deg,#3a1646,#8a4aa6 45%,#2a0f36);box-shadow:inset 0 3px 0 rgba(255,220,250,.4),inset 0 -3px 0 rgba(0,0,0,.4)}
.cr-ped-top{position:absolute;left:-70px;top:-70px;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#ffe6a8,#d49c3c 60%,#8a5a16);box-shadow:0 0 0 4px #7a4d12,0 0 30px rgba(255,200,120,.45);transform:translateY(98px) rotateX(90deg)}
.cr-lift{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;transform:translateY(-36px);animation:cr-float 4.4s ease-in-out infinite}
.cr-spin{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d;animation:cr-spin 15s linear infinite}
.cr-body{--fw:67px;--fh:96px;--r:80px;margin-top:-6px}
.cr-body>.pf{background:linear-gradient(180deg,#fff0b8 0,#f1c35c 28%,#d19a2e 62%,#9a6516 100%);clip-path:polygon(0 100%,0 48%,25% 72%,50% 0,75% 72%,100% 48%,100% 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}
.cr-body>.pf:nth-child(odd){filter:brightness(1.05)}
.cr-body>.pf:nth-child(even){filter:brightness(.82)}
.cr-shine{position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.55) 48%,transparent 60%);mix-blend-mode:overlay}
.cr-gem{position:absolute;left:50%;width:15px;height:15px;margin-left:-7px;border-radius:50%}
.cr-gem.g1{top:32%;background:radial-gradient(circle at 35% 30%,#fff,#ff7ac0 45%,#a01058);box-shadow:0 0 10px #ff7ac0}
.cr-gem.g2{top:32%;background:radial-gradient(circle at 35% 30%,#fff,#9ad4ff 45%,#1a5fb0);box-shadow:0 0 10px #9ad4ff}
.cr-rim{--fw:68px;--fh:24px;--r:80px;margin-top:35px}
.cr-rim-face{position:absolute;inset:0;background:linear-gradient(180deg,#ffe9a0,#c98d2a 60%,#7a4d0d);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25),inset 0 -2px 4px rgba(0,0,0,.35);background-image:radial-gradient(circle at 50% 50%,#fff 0 2px,transparent 3px),linear-gradient(180deg,#ffe9a0,#c98d2a 60%,#7a4d0d)}
.cr-velvet{--fw:60px;--fh:40px;--r:70px;margin-top:14px}
.cr-velvet-face{position:absolute;inset:0;background:linear-gradient(180deg,#b01a58,#6a0c36);box-shadow:inset 0 0 14px rgba(0,0,0,.5)}
.cr-orb{position:absolute;left:-14px;top:-18px;width:28px;height:28px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#ffe08a 40%,#c98d2a);box-shadow:0 0 18px #ffd98a;transform:translateZ(0)}
.cr-rays{position:absolute;left:50%;top:50%;width:520px;height:520px;margin:-330px 0 0 -260px;background:repeating-conic-gradient(from 0deg,rgba(255,235,250,.55) 0 4deg,transparent 4deg 22deg);-webkit-mask:radial-gradient(circle,#000 0,transparent 66%);mask:radial-gradient(circle,#000 0,transparent 66%);opacity:0;transform:translateZ(-40px)}
.cr-flash{position:absolute;left:50%;top:50%;width:400px;height:400px;margin:-290px 0 0 -200px;background:radial-gradient(circle,#fff,rgba(255,220,250,.8) 22%,rgba(255,150,230,.22) 46%,transparent 68%);opacity:0;transform:translateZ(90px)}
.cr-sparks{position:absolute;left:50%;top:50%;width:340px;height:300px;margin:-250px 0 0 -170px;transform:translateZ(70px)}
@keyframes cr-float{50%{transform:translateY(-52px)}}
@keyframes cr-spin{to{transform:rotateY(360deg)}}
@keyframes cr-rise{0%{transform:translateY(-36px) scale(1)}100%{transform:translateY(-190px) scale(1.55)}}
@keyframes cr-spin-fast{from{transform:rotateY(0)}to{transform:rotateY(1080deg)}}
@keyframes cr-rays-on{0%{opacity:0;transform:translateZ(-40px) rotate(0) scale(.5)}40%{opacity:.9}100%{opacity:0;transform:translateZ(-40px) rotate(40deg) scale(1.7)}}
@keyframes cr-flash-on{0%{opacity:0;transform:translateZ(90px) scale(.3)}40%{opacity:1}100%{opacity:0;transform:translateZ(90px) scale(1.8)}}
.opening-crown.is-open .cr-lift{animation:cr-rise 1.9s .1s cubic-bezier(.3,.8,.2,1) forwards}
.opening-crown.is-open .cr-spin{animation:cr-spin-fast 2.6s .1s cubic-bezier(.25,.7,.2,1) forwards}
.opening-crown.is-open .cr-rays{animation:cr-rays-on 2.3s .9s ease-out forwards}
.opening-crown.is-open .cr-flash{animation:cr-flash-on 1.2s 1.1s ease-out forwards}
.opening-crown.is-open .cf{animation:n3d-confetti 2.2s calc(1s + var(--dl)) cubic-bezier(.2,.7,.3,1) forwards}


/* ===== Capelo ao alto (formatura) ===== */
.opening-cap{--n-bg:radial-gradient(ellipse at 50% 26%,#1d3260 0,#0d1a38 55%,#050b1c 100%);--n-glow:#ffd98a;--n-ink:#f6f8ff}
.cp-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(30px) rotateX(-22deg) rotateY(-20deg)}
.cp-floor{position:absolute;left:50%;top:50%;width:440px;height:320px;margin:-160px 0 0 -220px;background:radial-gradient(ellipse,rgba(255,215,140,.26),transparent 66%);transform:translateY(120px) rotateX(90deg)}
.cp-floor:after{content:"";position:absolute;left:50%;top:50%;width:230px;height:170px;margin:-85px 0 0 -115px;background:radial-gradient(ellipse,rgba(0,0,0,.6),transparent 70%);filter:blur(9px)}
.cp-beam{position:absolute;left:50%;top:50%;width:340px;height:470px;margin:-420px 0 0 -170px;background:linear-gradient(180deg,transparent,rgba(255,226,160,.3) 60%,rgba(255,226,160,.08));clip-path:polygon(38% 0,62% 0,100% 100%,0 100%);filter:blur(8px);transform:translateZ(-60px);animation:n3d-breathe 5s ease-in-out infinite}
.cp-hat{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;transform:translateY(-20px);animation:cp-bob 4.6s ease-in-out infinite}
.cp-hat-spin{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d}
.cp-board>i{background:linear-gradient(160deg,#242c44,#0c1020)}
.cp-board>.f-t{background:linear-gradient(135deg,#2c3552 0,#161c30 55%,#0a0d1a);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.cp-board>.f-l{filter:brightness(.7)}
.cp-board>.f-r{filter:brightness(.85)}
.cp-top{background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.16) 46%,transparent 58%),repeating-linear-gradient(45deg,rgba(255,255,255,.035) 0 2px,transparent 2px 5px)}
.cp-button{position:absolute;left:50%;top:50%;width:16px;height:16px;margin:-8px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff1b8,#e0b050 55%,#8a5a12);box-shadow:0 0 8px rgba(255,210,120,.6)}
.cp-skull{--fw:29px;--fh:50px;--r:44px;margin-top:30px}
.cp-skull-face{position:absolute;inset:0;background:linear-gradient(90deg,#10152a,#2a3250 50%,#0c1020);border-radius:0 0 12px 12px}
.cp-tassel{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d}
.cp-cord{position:absolute;left:0;top:-3px;width:138px;height:3px;background:linear-gradient(90deg,#ffe08a,#c98d2a);transform-origin:0 50%;transform:translateY(-5px) rotateY(-45deg) rotateX(90deg);box-shadow:0 0 6px rgba(255,210,120,.5)}
.cp-fringe{position:absolute;left:94px;top:-3px;width:14px;height:64px;background:repeating-linear-gradient(90deg,#f4c24d 0 2px,#c98d2a 2px 3px);clip-path:polygon(25% 0,75% 0,100% 100%,0 100%);transform:translateZ(94px);box-shadow:0 2px 6px rgba(0,0,0,.3)}
.cp-fringe:before{content:"";position:absolute;left:0;top:-4px;width:100%;height:18px;background:radial-gradient(circle at 40% 35%,#fff1b8,#c98d2a);border-radius:40%}
.cp-diploma{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;transform:translate3d(0,112px,86px) rotateZ(-8deg);animation:cp-bob 5.2s -1.2s ease-in-out infinite}
.cp-roll-wrap{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d;transform:rotateZ(90deg)}
.cp-roll{--fw:9px;--fh:136px;--r:15px}
.cp-roll-face{position:absolute;inset:0;background:linear-gradient(90deg,#c9b98f,#fff8e2 45%,#d7c89e)}
.cp-roll>.pf:nth-child(3n){filter:brightness(.85)}
.cp-ribbon{position:absolute;left:-17px;top:-17px;width:34px;height:34px;border-radius:50%;border:6px solid #b3202e;box-shadow:inset 0 0 0 1px rgba(255,255,255,.2),0 0 0 1px rgba(0,0,0,.2);transform:rotateY(90deg)}
.cp-flash{position:absolute;left:50%;top:50%;width:420px;height:420px;margin:-300px 0 0 -210px;background:radial-gradient(circle,#fff,rgba(255,230,170,.7) 22%,rgba(255,200,120,.2) 46%,transparent 68%);opacity:0;transform:translateZ(80px)}
.cp-sparks{position:absolute;left:50%;top:50%;width:340px;height:300px;margin:-250px 0 0 -170px;transform:translateZ(70px)}
@keyframes cp-bob{50%{translate:0 -10px}}
@keyframes cp-toss{0%{transform:translate3d(0,0,0) rotateX(0) rotateZ(0)}20%{transform:translate3d(0,24px,0) rotateX(8deg)}100%{transform:translate3d(30px,-560px,220px) rotateX(900deg) rotateY(540deg) rotateZ(160deg)}}
@keyframes cp-diploma-up{0%{transform:translate3d(0,112px,86px) rotateZ(-8deg)}100%{transform:translate3d(-40px,-150px,200px) rotateZ(-62deg) scale(1.6)}}
@keyframes cp-fade{to{opacity:0}}
.opening-cap.is-open .cp-hat-spin{animation:cp-toss 2s cubic-bezier(.2,.75,.25,1) forwards}
.opening-cap.is-open .cp-diploma{animation:cp-diploma-up 2.2s .45s cubic-bezier(.3,.7,.2,1) forwards,cp-fade .5s 2.35s forwards}
.opening-cap.is-open .cp-flash{animation:cr-flash-on 1.2s .55s ease-out forwards}
.opening-cap.is-open .cf{animation:n3d-confetti 2.3s calc(.6s + var(--dl)) cubic-bezier(.2,.7,.3,1) forwards}


/* ===== Céu e nuvens (batizado) ===== */
.opening-clouds{--n-bg:linear-gradient(180deg,#8cc4ff 0,#c8e4ff 46%,#fff4e4 100%);--n-glow:#fff3c4;--n-ink:#18365c}
.opening-clouds .n3d-glow{background:radial-gradient(ellipse 60% 50% at 50% 24%,#fff8d8,transparent 64%);opacity:.9}
.opening-clouds .n3d-vig{background:radial-gradient(ellipse at 50% 40%,transparent 50%,rgba(40,90,160,.32) 100%)}
.opening-clouds .n3d-copy{text-shadow:0 2px 14px rgba(255,255,255,.85);color:#16345a}
.opening-clouds .opening-tip{color:#2c64b0!important}
.cl-group{position:absolute;inset:0;transform-style:preserve-3d}
.cl-sun{position:absolute;left:50%;top:50%;width:250px;height:250px;margin:-300px 0 0 -125px;border-radius:50%;background:radial-gradient(circle,#fff 0,#fff3c4 34%,rgba(255,235,170,.4) 56%,transparent 72%);transform:translateZ(-300px) scale(1.2);opacity:.8}
.cl-ray{position:absolute;left:50%;top:50%;width:150px;height:560px;margin:-340px 0 0 -75px;background:linear-gradient(180deg,rgba(255,250,220,.75),rgba(255,250,220,0));clip-path:polygon(40% 0,60% 0,100% 100%,0 100%);transform-origin:50% 0;opacity:.55;animation:cl-ray 6s ease-in-out infinite;transform:translateZ(-200px) rotate(var(--r))}
.cl-ray.r1{--r:-30deg}.cl-ray.r2{--r:-10deg;animation-delay:-1.5s}.cl-ray.r3{--r:12deg;animation-delay:-3s}.cl-ray.r4{--r:32deg;animation-delay:-4.5s}
.cl{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d}
.cl-puff{position:absolute;left:calc(var(--px) - 55px);top:calc(var(--py) - 40px);width:110px;height:84px;border-radius:50%;background:radial-gradient(ellipse at 45% 38%,#fff 0,rgba(255,255,255,.95) 34%,rgba(238,247,255,.6) 56%,rgba(255,255,255,0) 70%);filter:blur(2.5px);transform:scale(var(--ps))}
.cl.c-back{transform:translate3d(0,-60px,-230px) scale(1.25)}
.cl.c-left{transform:translate3d(-185px,40px,60px) scale(1);animation:cl-drift 9s ease-in-out infinite}
.cl.c-right{transform:translate3d(185px,30px,40px) scale(1.05);animation:cl-drift 11s -4s ease-in-out infinite reverse}
.cl.c-front{transform:translate3d(0,205px,150px) scale(1.25)}
.cl-dove{position:absolute;left:50%;top:50%;width:110px;height:73px;margin:-70px 0 0 -55px;transform:translateZ(60px) scale(1.25);animation:n3d-float 3.2s ease-in-out infinite;filter:drop-shadow(0 8px 10px rgba(60,100,160,.28))}
.cl-dove svg{overflow:visible}
.dv-body{fill:#fff}
.dv-wing{fill:#f4f9ff;stroke:#c7dcf5;stroke-width:1.2;transform-box:fill-box;animation:dv-flap 1.1s ease-in-out infinite}
.dv-wl{transform-origin:100% 80%}
.dv-wr{transform-origin:0% 80%;animation-delay:0s}
.cl-sparks{position:absolute;left:50%;top:50%;width:360px;height:300px;margin:-250px 0 0 -180px;transform:translateZ(60px)}
.opening-clouds .n3d-spark{filter:drop-shadow(0 0 5px #ffd98a)}
@keyframes cl-ray{50%{opacity:.8}}
@keyframes cl-drift{50%{translate:22px 0}}
@keyframes dv-flap{0%,100%{transform:rotate(0) scaleY(1)}50%{transform:rotate(var(--fl,-14deg)) scaleY(.82)}}
.dv-wl{--fl:16deg}
@keyframes cl-open-l{to{transform:translate3d(-640px,10px,260px) scale(1.7);opacity:0}}
@keyframes cl-open-r{to{transform:translate3d(640px,0,260px) scale(1.7);opacity:0}}
@keyframes cl-open-f{to{transform:translate3d(0,620px,420px) scale(1.8);opacity:0}}
@keyframes cl-open-b{to{transform:translate3d(0,-120px,-230px) scale(1.8);opacity:0}}
@keyframes cl-dove-fly{0%{transform:translateZ(60px) scale(1.25)}100%{transform:translate3d(120px,-470px,420px) scale(.7) rotateZ(20deg);opacity:0}}
@keyframes cl-sun-on{to{transform:translateZ(-300px) scale(3.4);opacity:.95}}
.opening-clouds.is-open .cl.c-left{animation:cl-open-l 2.3s .1s cubic-bezier(.5,0,.3,1) forwards}
.opening-clouds.is-open .cl.c-right{animation:cl-open-r 2.3s .1s cubic-bezier(.5,0,.3,1) forwards}
.opening-clouds.is-open .cl.c-front{animation:cl-open-f 2.2s .2s cubic-bezier(.5,0,.3,1) forwards}
.opening-clouds.is-open .cl.c-back{animation:cl-open-b 2.4s .3s ease-in forwards}
.opening-clouds.is-open .cl-dove{animation:cl-dove-fly 2.4s .7s cubic-bezier(.3,.6,.2,1) forwards}
.opening-clouds.is-open .dv-wing{animation-duration:.38s}
.opening-clouds.is-open .cl-sun{animation:cl-sun-on 2.6s ease-out forwards}
.opening-clouds.is-open .cl-ray{opacity:.95;animation:none}


/* ===== Cubos de bebê (chá de bebê) ===== */
.opening-blocks{--n-bg:radial-gradient(ellipse at 50% 24%,#fff6e8 0,#ffe6ef 52%,#d8ecff 100%);--n-glow:#ffb8d1;--n-ink:#5a3550}
.opening-blocks .n3d-vig{background:radial-gradient(ellipse at 50% 46%,transparent 50%,rgba(180,120,160,.28) 100%)}
.opening-blocks .n3d-glow{opacity:.35}
.opening-blocks .n3d-copy{text-shadow:0 2px 14px rgba(255,255,255,.9);color:#5a3550}
.opening-blocks .opening-tip{color:#c4608f!important}
.bk-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(50px) rotateX(-14deg) rotateY(-22deg)}
.bk-floor{position:absolute;left:50%;top:50%;width:440px;height:320px;margin:-160px 0 0 -220px;background:radial-gradient(ellipse,rgba(255,255,255,.7),transparent 66%);transform:translateY(106px) rotateX(90deg)}
.bk-rug{position:absolute;left:50%;top:50%;width:300px;height:210px;margin:-105px 0 0 -150px;border-radius:50%;background:radial-gradient(ellipse,rgba(120,60,100,.28),transparent 68%);filter:blur(6px);transform:translateY(104px) rotateX(90deg)}
.bk{transform:translate3d(var(--x),var(--y),var(--z)) rotateX(var(--rx)) rotateY(var(--ry)) rotateZ(var(--rz));animation:bk-bob 3.8s calc(var(--dl) * -6) ease-in-out infinite}
.bk>i{background:linear-gradient(150deg,color-mix(in srgb,var(--bc) 78%,#fff),var(--bc) 58%,color-mix(in srgb,var(--bc) 82%,#000));border-radius:10px;box-shadow:inset 0 0 0 3px rgba(255,255,255,.35),inset 0 -6px 10px rgba(0,0,0,.08)}
.bk>.f-l{filter:brightness(.8)}
.bk>.f-r{filter:brightness(.9)}
.bk-face{display:grid!important;place-items:center;font:900 52px/1 'Baloo 2','Fredoka','Trebuchet MS',var(--invite-sans);color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.14),0 0 0 #000}
.bk-shape{font-size:38px;opacity:.85}
.bk-letter{text-shadow:0 3px 0 rgba(120,60,100,.25)}
.bk-sparks{position:absolute;left:50%;top:50%;width:360px;height:360px;margin:-260px 0 0 -180px;transform:translateZ(120px)}
.opening-blocks .n3d-spark{filter:drop-shadow(0 0 5px #ff9ec6)}
@keyframes bk-bob{50%{translate:0 -6px}}
@keyframes bk-fly{0%{transform:translate3d(var(--x),var(--y),var(--z)) rotateX(var(--rx)) rotateY(var(--ry)) rotateZ(var(--rz))}18%{transform:translate3d(var(--x),calc(var(--y) + 6px),var(--z)) rotateX(var(--rx)) rotateY(var(--ry)) rotateZ(var(--rz)) scale(1.04,.94)}100%{transform:translate3d(var(--ex),var(--ey),var(--ez)) rotateX(calc(var(--rx) + var(--er))) rotateY(calc(var(--ry) + var(--er))) rotateZ(calc(var(--rz) + 120deg))}}
.bk-group>.bk:nth-of-type(1){--ex:-420px;--ey:640px;--ez:220px;--er:560deg}
.bk-group>.bk:nth-of-type(2){--ex:420px;--ey:620px;--ez:260px;--er:-520deg}
.bk-group>.bk:nth-of-type(3){--ex:-200px;--ey:-540px;--ez:420px;--er:700deg}
.bk-group>.bk:nth-of-type(4){--ex:200px;--ey:-640px;--ez:520px;--er:-740deg}
.opening-blocks.is-open .bk{animation:bk-fly 1.9s calc(.1s + var(--dl)) cubic-bezier(.35,.05,.3,1) forwards}
.opening-blocks.is-open .cf{animation:n3d-confetti 2.3s calc(.5s + var(--dl)) cubic-bezier(.2,.7,.3,1) forwards}


/* ===== Caixa surpresa (chá revelação) ===== */
.opening-mystery{--n-bg:radial-gradient(ellipse at 50% 30%,#4a2a6a 0,#251440 54%,#0e0720 100%);--n-glow:#ffc2e0;--n-ink:#fff6fc}
.my-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(40px) rotateX(-16deg)}
.my-floor{position:absolute;left:50%;top:50%;width:440px;height:320px;margin:-160px 0 0 -220px;background:radial-gradient(ellipse,rgba(255,170,220,.22),rgba(120,190,255,.1) 50%,transparent 68%);transform:translateY(140px) rotateX(90deg)}
.my-aura{position:absolute;left:50%;top:50%;width:360px;height:360px;margin:-190px 0 0 -180px;border-radius:50%;background:conic-gradient(from 0deg,rgba(255,130,190,.5),rgba(120,190,255,.5),rgba(255,130,190,.5));filter:blur(46px);opacity:.55;transform:translateZ(-100px);animation:my-aura 8s linear infinite}
.my-spin{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;animation:my-spin 11s linear infinite,my-hover 3.8s ease-in-out infinite}
.my-box>i{background:linear-gradient(150deg,#2c1850,#190c34);box-shadow:inset 0 0 0 3px rgba(255,255,255,.12),inset 0 0 40px rgba(255,150,220,.2);border-radius:6px}
.my-box>.f-l,.my-box>.f-b{box-shadow:inset 0 0 0 3px rgba(255,255,255,.12),inset 0 0 40px rgba(120,190,255,.25)}
.mq{display:grid!important;place-items:center;font:900 118px/1 var(--invite-sans);background:linear-gradient(160deg,#fff,#ffd1e6 40%,#ff6fb0);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 14px rgba(255,130,190,.9))}
.mq.q-blue{background:linear-gradient(160deg,#fff,#cfe9ff 40%,#5ab0ff);-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 0 14px rgba(120,190,255,.9))}
.mq.q-mix{background:linear-gradient(90deg,#ff6fb0,#fff,#5ab0ff);-webkit-background-clip:text;background-clip:text}
.my-smokes{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d}
.my-smoke{position:absolute;left:-90px;top:-90px;width:180px;height:180px;border-radius:50%;opacity:0;filter:blur(10px);transform:translateZ(60px) scale(.2)}
.my-smoke[class*=" p"]{background:radial-gradient(circle,rgba(255,170,215,.95),rgba(255,120,190,.5) 55%,transparent 72%)}
.my-smoke[class*=" b"]{background:radial-gradient(circle,rgba(150,205,255,.95),rgba(100,175,255,.5) 55%,transparent 72%)}
.my-smoke.p1{--sx:-210px;--sy:-120px}.my-smoke.p2{--sx:-120px;--sy:90px}.my-smoke.p3{--sx:-300px;--sy:10px}.my-smoke.p4{--sx:-60px;--sy:-210px}.my-smoke.p5{--sx:-190px;--sy:-250px}.my-smoke.p6{--sx:-250px;--sy:150px}
.my-smoke.b1{--sx:210px;--sy:-130px}.my-smoke.b2{--sx:120px;--sy:100px}.my-smoke.b3{--sx:300px;--sy:0px}.my-smoke.b4{--sx:60px;--sy:-220px}.my-smoke.b5{--sx:190px;--sy:-260px}.my-smoke.b6{--sx:250px;--sy:150px}
.my-flash{position:absolute;left:50%;top:50%;width:420px;height:420px;margin:-210px 0 0 -210px;background:radial-gradient(circle,#fff,rgba(255,220,240,.8) 22%,rgba(180,210,255,.25) 46%,transparent 68%);opacity:0;transform:translateZ(110px)}
.my-sparks{position:absolute;left:50%;top:50%;width:360px;height:320px;margin:-190px 0 0 -180px;transform:translateZ(80px)}
@keyframes my-spin{to{transform:rotateY(360deg) rotateX(0)}}
@keyframes my-hover{50%{translate:0 -12px}}
@keyframes my-aura{to{transform:translateZ(-100px) rotate(360deg)}}
@keyframes my-shake{0%,100%{translate:0 0}15%{translate:-7px 3px}30%{translate:7px -3px}45%{translate:-6px 2px}60%{translate:6px -2px}80%{translate:-3px 0}}
@keyframes my-smoke-on{0%{opacity:0;transform:translateZ(60px) scale(.2)}25%{opacity:1}100%{opacity:0;transform:translate3d(var(--sx),var(--sy),220px) scale(2.6)}}
@keyframes my-face-f{to{transform:translateZ(460px) rotateX(48deg);opacity:0}}
@keyframes my-face-b{to{transform:rotateY(180deg) translateZ(460px) rotateX(-48deg);opacity:0}}
@keyframes my-face-r{to{transform:rotateY(90deg) translateZ(460px) rotateZ(60deg);opacity:0}}
@keyframes my-face-l{to{transform:rotateY(-90deg) translateZ(460px) rotateZ(-60deg);opacity:0}}
@keyframes my-face-t{to{transform:rotateX(90deg) translateZ(460px) rotateZ(70deg);opacity:0}}
@keyframes my-face-d{to{transform:rotateX(-90deg) translateZ(460px) rotateZ(-70deg);opacity:0}}
.opening-mystery.is-open .my-spin{animation:my-shake .55s ease-in-out both,my-spin 11s linear infinite}
.opening-mystery.is-open .my-box>.f-f{animation:my-face-f 1.8s .55s cubic-bezier(.3,.1,.2,1) forwards}
.opening-mystery.is-open .my-box>.f-b{animation:my-face-b 1.8s .55s cubic-bezier(.3,.1,.2,1) forwards}
.opening-mystery.is-open .my-box>.f-r{animation:my-face-r 1.8s .55s cubic-bezier(.3,.1,.2,1) forwards}
.opening-mystery.is-open .my-box>.f-l{animation:my-face-l 1.8s .55s cubic-bezier(.3,.1,.2,1) forwards}
.opening-mystery.is-open .my-box>.f-t{animation:my-face-t 1.8s .55s cubic-bezier(.3,.1,.2,1) forwards}
.opening-mystery.is-open .my-box>.f-d{animation:my-face-d 1.8s .55s cubic-bezier(.3,.1,.2,1) forwards}
.opening-mystery.is-open .my-smoke{animation:my-smoke-on 2.2s .6s ease-out forwards}
.opening-mystery.is-open .my-flash{animation:cr-flash-on 1.2s .6s ease-out forwards}
.opening-mystery.is-open .cf{animation:n3d-confetti 2.3s calc(.65s + var(--dl)) cubic-bezier(.2,.7,.3,1) forwards}


/* ===== Largada neon ===== */
.opening-race{--n-bg:#07040f;--n-glow:#20d9c5;--n-ink:#f2fbff}
.opening-race .n3d-stage{top:40%}
.rc-group{position:absolute;inset:0;transform-style:preserve-3d}
.rc-sky{position:absolute;left:50%;top:50%;width:1400px;height:900px;margin:-560px 0 0 -700px;background:linear-gradient(180deg,#07040f 0,#1c0b3c 38%,#6a1b72 62%,#ff4f9a 80%,#ffb25b 100%);transform:translateZ(-400px)}
.rc-sun{position:absolute;left:50%;top:50%;width:260px;height:260px;margin:-250px 0 0 -130px;border-radius:50%;background:linear-gradient(180deg,#ffe36e,#ff8a3d 55%,#ff3d8a);-webkit-mask:repeating-linear-gradient(180deg,#000 0 20px,transparent 20px 26px);mask:repeating-linear-gradient(180deg,#000 0 20px,transparent 20px 26px);-webkit-mask-size:100% 100%;transform:translateZ(-380px);filter:drop-shadow(0 0 30px rgba(255,120,150,.7))}
.rc-road{position:absolute;left:50%;top:50%;width:900px;height:1700px;margin:30px 0 0 -450px;transform-origin:50% 0;transform:translateZ(-60px) rotateX(78deg);background:linear-gradient(90deg,#0a0716 0,#1a1330 40%,#1a1330 60%,#0a0716 100%);overflow:hidden;box-shadow:0 0 120px rgba(32,217,197,.3)}
.rc-road:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 118px,rgba(32,217,197,.18) 118px 122px),repeating-linear-gradient(90deg,transparent 0 118px,rgba(32,217,197,.14) 118px 122px);animation:rc-grid 1.2s linear infinite}
.rc-lane{position:absolute;left:0;right:0;top:0;bottom:0;background:linear-gradient(180deg,rgba(7,4,15,1) 0,transparent 25%)}
.rc-dash{position:absolute;left:50%;top:0;bottom:0;width:18px;margin-left:-9px;background:repeating-linear-gradient(0deg,#ffd23f 0 70px,transparent 70px 170px);box-shadow:0 0 14px #ffd23f;animation:rc-dash 1s linear infinite}
.rc-edge{position:absolute;top:0;bottom:0;width:10px;background:#20d9c5;box-shadow:0 0 22px #20d9c5}
.rc-edge.l{left:90px}.rc-edge.r{right:90px;background:#ff4fa3;box-shadow:0 0 22px #ff4fa3}
.rc-gantry{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;transform:translate3d(0,-120px,40px)}
.rc-post{position:absolute;top:0;width:12px;height:330px;background:linear-gradient(90deg,#1c1c2e,#3c3c58 50%,#14141f);box-shadow:0 0 16px rgba(32,217,197,.25)}
.rc-post.l{left:-190px}.rc-post.r{left:178px}
.rc-bar{position:absolute;left:-200px;top:-30px;width:400px;height:96px;border-radius:16px;background:linear-gradient(180deg,#2a2a42,#10101c);box-shadow:inset 0 0 0 2px #3f3f60,0 14px 40px rgba(0,0,0,.6),0 0 40px rgba(255,79,163,.25);display:flex;justify-content:space-around;align-items:center;padding:0 40px}
.rc-lamp{display:block;width:62px;height:62px;border-radius:50%;background:#2a0a12;box-shadow:inset 0 3px 8px #000,0 0 0 3px #3a3a58;position:relative}
.rc-lamp b{position:absolute;inset:6px;border-radius:50%;background:radial-gradient(circle at 36% 30%,#ffd6d6,#ff2a2a 52%,#7a0000);box-shadow:0 0 28px #ff2a2a;opacity:.12}
.rc-lamp.a b{animation:rc-lamp 3s 0s steps(1) infinite}
.rc-lamp.b b{animation:rc-lamp 3s 1s steps(1) infinite}
.rc-lamp.c b{animation:rc-lamp 3s 2s steps(1) infinite}
.rc-streaks{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d}
.rc-streak{position:absolute;left:var(--sx);top:var(--sy);width:3px;height:70px;background:linear-gradient(180deg,transparent,var(--sc));border-radius:2px;opacity:0;transform:rotate(var(--a)) translateZ(-600px);box-shadow:0 0 10px var(--sc)}
.rc-flash{position:absolute;left:50%;top:50%;width:520px;height:520px;margin:-260px 0 0 -260px;background:radial-gradient(circle,#fff,rgba(120,255,235,.7) 22%,rgba(32,217,197,.2) 48%,transparent 68%);opacity:0;transform:translateZ(120px)}
@keyframes rc-lamp{0%{opacity:1}33.3%{opacity:.12}}
@keyframes rc-grid{to{background-position:0 244px,0 0}}
@keyframes rc-dash{to{background-position:0 340px}}
@keyframes rc-go-lamp{0%{opacity:.12}30%{opacity:1;background:radial-gradient(circle at 36% 30%,#d6ffd6,#2aff6a 52%,#007a2a);box-shadow:0 0 36px #2aff6a}100%{opacity:1;background:radial-gradient(circle at 36% 30%,#d6ffd6,#2aff6a 52%,#007a2a);box-shadow:0 0 36px #2aff6a}}
@keyframes rc-streak-on{0%{opacity:0;transform:rotate(var(--a)) translateZ(-600px)}15%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateZ(900px)}}
@keyframes rc-rush{0%{transform:translateZ(0)}100%{transform:translateZ(1000px)}}
@keyframes rc-gantry-pass{0%{transform:translate3d(0,-120px,40px)}100%{transform:translate3d(0,-120px,1100px)}}
.opening-race.is-open .rc-lamp b{animation:rc-go-lamp .35s both}
.opening-race.is-open .rc-road:before{animation-duration:.22s}
.opening-race.is-open .rc-dash{animation-duration:.18s}
.opening-race.is-open .rc-gantry{animation:rc-gantry-pass 1.7s .75s cubic-bezier(.6,0,.9,.5) forwards}
.opening-race.is-open .rc-streak{animation:rc-streak-on 1.1s calc(.6s + var(--sd)) ease-in forwards}
.opening-race.is-open .rc-flash{animation:rb-flash 1.1s 1.7s ease-out forwards}
.opening-race.is-open .rc-sun{animation:cl-sun-on 2.4s ease-in forwards}


/* ===== Clássicas 3D: tema herdado ===== */
.opening-envelope,.opening-book,.opening-lamp,.opening-curtain,.opening-doors,.opening-ribbon,.opening-film,.opening-portal{--n-bg:radial-gradient(ellipse at 50% 28%,color-mix(in srgb,var(--invite-primary) 62%,#000) 0,color-mix(in srgb,var(--invite-primary) 30%,#000) 58%,#06030a 100%);--n-glow:color-mix(in srgb,var(--invite-accent) 62%,#fff);--n-ink:#fff8ee}

/* ===== Envelope ===== */
.ev-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(24px) rotateX(-14deg) rotateY(-16deg);animation:n3d-float 5.6s ease-in-out infinite}
.ev-floor{position:absolute;left:50%;top:50%;width:460px;height:320px;margin:-160px 0 0 -230px;background:radial-gradient(ellipse,color-mix(in srgb,var(--n-glow) 30%,transparent),transparent 66%);transform:translateY(120px) rotateX(90deg)}
.ev-floor:after{content:"";position:absolute;left:50%;top:50%;width:300px;height:190px;margin:-95px 0 0 -150px;background:radial-gradient(ellipse,rgba(0,0,0,.65),transparent 70%);filter:blur(10px)}
.ev-glow{position:absolute;left:50%;top:50%;width:420px;height:420px;margin:-240px 0 0 -210px;background:radial-gradient(circle,color-mix(in srgb,var(--n-glow) 55%,transparent),transparent 62%);filter:blur(24px);opacity:.5;transform:translateZ(-60px);animation:n3d-breathe 5s ease-in-out infinite}
.ev-env{position:absolute;left:50%;top:50%;width:300px;height:196px;margin:-98px 0 0 -150px;transform-style:preserve-3d}
.ev-back{position:absolute;inset:0;border-radius:5px;background:linear-gradient(160deg,color-mix(in srgb,var(--invite-accent) 62%,#000),color-mix(in srgb,var(--invite-accent) 34%,#000));box-shadow:0 0 0 1px rgba(255,255,255,.1)}
.ev-card{position:absolute;left:16px;right:16px;top:10px;bottom:10px;border-radius:3px;background:linear-gradient(160deg,var(--invite-surface),color-mix(in srgb,var(--invite-surface) 84%,#bfa97c));transform:translateZ(2px);display:grid;place-items:center;overflow:hidden;box-shadow:0 2px 12px rgba(0,0,0,.3)}
.ev-card-frame{position:absolute;inset:8px;border:1px solid color-mix(in srgb,var(--invite-accent) 70%,transparent)}
.ev-crest{font:400 34px/1 var(--invite-font);color:var(--invite-accent);margin-top:-18px;filter:drop-shadow(0 1px 0 rgba(255,255,255,.6))}
.ev-line{position:absolute;left:30%;right:30%;height:2px;border-radius:2px;background:color-mix(in srgb,var(--invite-primary) 38%,transparent)}
.ev-line.l1{top:58%}.ev-line.l2{top:68%;left:36%;right:36%}.ev-line.l3{top:78%;left:42%;right:42%}
.ev-front{position:absolute;inset:0;transform:translateZ(5px)}
.ev-front.fl{clip-path:polygon(0 0,52% 54%,0 100%);background:linear-gradient(110deg,color-mix(in srgb,var(--invite-accent) 82%,#fff 6%),color-mix(in srgb,var(--invite-accent) 58%,#000))}
.ev-front.fr{clip-path:polygon(100% 0,48% 54%,100% 100%);background:linear-gradient(250deg,color-mix(in srgb,var(--invite-accent) 70%,#000),color-mix(in srgb,var(--invite-accent) 46%,#000))}
.ev-front.fb{clip-path:polygon(0 100%,50% 44%,100% 100%);background:linear-gradient(180deg,color-mix(in srgb,var(--invite-accent) 90%,#fff 8%),color-mix(in srgb,var(--invite-accent) 62%,#000))}
.ev-flap{position:absolute;left:0;top:0;width:300px;height:122px;transform-origin:50% 0;transform:translateZ(8px);transform-style:preserve-3d}
.ev-flap i{position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 100%);backface-visibility:hidden}
.ev-flap-out{background:linear-gradient(180deg,color-mix(in srgb,var(--invite-accent) 92%,#fff 8%),color-mix(in srgb,var(--invite-accent) 66%,#000))}
.ev-flap-in{transform:rotateY(180deg);background:linear-gradient(180deg,color-mix(in srgb,var(--invite-surface) 80%,var(--invite-accent)),color-mix(in srgb,var(--invite-surface) 70%,#000))}
.ev-seal{position:absolute;left:50%;top:92px;width:54px;height:54px;margin-left:-27px;border-radius:50%;transform:translateZ(14px);display:grid;place-items:center;background:radial-gradient(circle at 36% 30%,color-mix(in srgb,var(--invite-accent) 40%,#ffb3a6),color-mix(in srgb,var(--invite-accent) 50%,#8a1020) 55%,#4a0812);box-shadow:inset 0 -4px 8px rgba(0,0,0,.4),inset 0 3px 5px rgba(255,255,255,.35),0 6px 12px rgba(0,0,0,.5)}
.ev-seal b{font:400 22px/1 var(--invite-font);color:rgba(255,255,255,.85);text-shadow:0 -1px 0 rgba(0,0,0,.4)}
.ev-sparks{position:absolute;left:50%;top:50%;width:360px;height:260px;margin:-170px 0 0 -180px;transform:translateZ(80px)}
@keyframes ev-flap-open{to{transform:translateZ(8px) rotateX(-178deg)}}
@keyframes ev-card-out{0%{transform:translate3d(0,0,2px)}42%{transform:translate3d(0,-132px,2px)}100%{transform:translate3d(0,-64px,310px) rotateX(6deg) scale(1.08)}}
@keyframes ev-seal-break{25%{transform:translateZ(14px) scale(1.25)}100%{transform:translateZ(14px) translateY(24px) scale(.1) rotate(40deg);opacity:0}}
@keyframes ev-push{to{translate:0 30px;scale:1.14}}
.opening-envelope.is-open .ev-seal{animation:ev-seal-break .55s ease-in forwards}
.opening-envelope.is-open .ev-flap{animation:ev-flap-open 1s .35s cubic-bezier(.4,0,.2,1) forwards}
.opening-envelope.is-open .ev-card{animation:ev-card-out 1.9s .95s cubic-bezier(.4,.1,.2,1) forwards}
.opening-envelope.is-open .ev-group{animation:ev-push 3s .2s ease-in-out forwards}

/* ===== Livro ===== */
.bo-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(24px) rotateX(-18deg) rotateY(-28deg);animation:n3d-float 5.8s ease-in-out infinite}
.bo-floor{position:absolute;left:50%;top:50%;width:460px;height:340px;margin:-170px 0 0 -230px;background:radial-gradient(ellipse,color-mix(in srgb,var(--n-glow) 28%,transparent),transparent 66%);transform:translateY(170px) rotateX(90deg)}
.bo-floor:after{content:"";position:absolute;left:50%;top:50%;width:300px;height:220px;margin:-110px 0 0 -150px;background:radial-gradient(ellipse,rgba(0,0,0,.65),transparent 70%);filter:blur(10px)}
.bo-glow{position:absolute;left:50%;top:50%;width:420px;height:420px;margin:-230px 0 0 -210px;background:radial-gradient(circle,color-mix(in srgb,var(--n-glow) 40%,transparent),transparent 62%);filter:blur(26px);opacity:.45;transform:translateZ(-70px)}
.bo-book{position:absolute;left:50%;top:50%;width:230px;height:316px;margin:-158px 0 0 -115px;transform-style:preserve-3d}
.bo-back{position:absolute;inset:0;transform:translateZ(-27px);border-radius:3px 9px 9px 3px;background:linear-gradient(130deg,color-mix(in srgb,var(--invite-primary) 70%,#fff 8%),color-mix(in srgb,var(--invite-primary) 78%,#000))}
.bo-pg{position:absolute;inset:5px 7px 5px 5px;transform:translateZ(var(--z));border-radius:2px 5px 5px 2px;background:linear-gradient(90deg,#d6c9ac,#fffaf0 14%,#efe5cf);box-shadow:0 0 0 1px rgba(0,0,0,.06)}
.bo-open-page{position:absolute;inset:7px 9px 7px 6px;transform:translateZ(-1px);border-radius:2px 5px 5px 2px;background:linear-gradient(90deg,#d0c3a4,#fffdf6 15%,#fffaf0);display:grid;place-items:center;overflow:hidden}
.bo-open-page b{font:400 44px/1 var(--invite-font);color:var(--invite-accent);opacity:.9}
.bo-lines{position:absolute;inset:44px 34px 44px 38px;background:repeating-linear-gradient(180deg,color-mix(in srgb,var(--invite-primary) 26%,transparent) 0 1px,transparent 1px 16px);opacity:.7}
.bo-cover{position:absolute;inset:0;transform-origin:0 50%;transform-style:preserve-3d;transform:rotateY(-3deg);animation:bo-ajar 5s ease-in-out infinite}
.bo-cover-out,.bo-cover-in{position:absolute;inset:0;backface-visibility:hidden;border-radius:3px 9px 9px 3px}
.bo-cover-out{background:linear-gradient(125deg,color-mix(in srgb,var(--invite-primary) 78%,#fff 14%),var(--invite-primary) 55%,color-mix(in srgb,var(--invite-primary) 78%,#000));box-shadow:inset 0 0 0 2px rgba(255,255,255,.07),inset 8px 0 14px rgba(0,0,0,.35);display:grid;place-items:center;overflow:hidden}
.bo-cover-out:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(45deg,rgba(255,255,255,.035) 0 1px,transparent 1px 4px),linear-gradient(115deg,transparent 30%,rgba(255,255,255,.2) 48%,transparent 62%)}
.bo-frame{position:absolute;inset:16px 16px 16px 24px;border:1.5px solid color-mix(in srgb,var(--invite-accent) 85%,#fff 10%);border-radius:3px;box-shadow:inset 0 0 0 4px transparent,inset 0 0 0 5px color-mix(in srgb,var(--invite-accent) 45%,transparent)}
.bo-crest{font:400 64px/1 var(--invite-font);color:color-mix(in srgb,var(--invite-accent) 88%,#fff 12%);text-shadow:0 2px 0 rgba(0,0,0,.35),0 0 24px color-mix(in srgb,var(--invite-accent) 60%,transparent);margin-top:-20px}
.bo-rule{position:absolute;left:34%;right:30%;top:62%;height:2px;background:linear-gradient(90deg,transparent,var(--invite-accent),transparent)}
.bo-cover-in{transform:rotateY(180deg);background:linear-gradient(270deg,#d0c3a4,#f4ecd9 18%,#efe5cf)}
.bo-spine{position:absolute;left:0;top:0;width:27px;height:100%;transform-origin:0 50%;transform:rotateY(90deg);background:linear-gradient(180deg,color-mix(in srgb,var(--invite-primary) 70%,#000),color-mix(in srgb,var(--invite-primary) 55%,#000));box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.bo-sparks{position:absolute;left:50%;top:50%;width:360px;height:300px;margin:-210px 0 0 -180px;transform:translateZ(90px)}
@keyframes bo-ajar{50%{transform:rotateY(-9deg)}}
@keyframes bo-cover-open{to{transform:rotateY(-172deg)}}
@keyframes bo-center{to{transform:translate3d(118px,0,70px)}}
@keyframes bo-glow-on{to{opacity:1;transform:translateZ(-70px) scale(1.7)}}
.opening-book.is-open .bo-cover{animation:bo-cover-open 1.6s .1s cubic-bezier(.45,0,.2,1) forwards}
.opening-book.is-open .bo-book{animation:bo-center 2.8s .1s cubic-bezier(.4,0,.2,1) forwards}
.opening-book.is-open .bo-glow{animation:bo-glow-on 2.4s .8s ease-out forwards}
.opening-book.is-open .bo-open-page{box-shadow:0 0 70px 20px color-mix(in srgb,var(--n-glow) 70%,transparent);transition:box-shadow 1s .9s}

/* ===== Luz ===== */
.lm-group{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(-10deg)}
.lm-floor{position:absolute;left:50%;top:50%;width:420px;height:300px;margin:-150px 0 0 -210px;background:radial-gradient(ellipse,color-mix(in srgb,var(--n-glow) 38%,transparent),transparent 66%);transform:translateY(150px) rotateX(90deg)}
.lm-halo{position:absolute;left:50%;top:50%;width:420px;height:420px;margin:-230px 0 0 -210px;background:radial-gradient(circle,color-mix(in srgb,var(--n-glow) 52%,transparent),transparent 64%);filter:blur(20px);transform:translateZ(-80px);animation:n3d-breathe 4.2s ease-in-out infinite}
.lm-rays{position:absolute;left:50%;top:50%;width:560px;height:560px;margin:-340px 0 0 -280px;background:repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--n-glow) 38%,transparent) 0 3deg,transparent 3deg 20deg);-webkit-mask:radial-gradient(circle,#000 0,transparent 66%);mask:radial-gradient(circle,#000 0,transparent 66%);transform:translateZ(-60px);animation:lm-rays 30s linear infinite;opacity:.8}
.lm-orb{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;transform:translateY(-60px);animation:lm-hover 4s ease-in-out infinite}
.lm-core{position:absolute;left:-52px;top:-52px;width:104px;height:104px;border-radius:50%;background:radial-gradient(circle at 36% 30%,#fff 0,#fffbe8 24%,color-mix(in srgb,var(--invite-accent) 55%,#fff) 58%,color-mix(in srgb,var(--invite-accent) 70%,#000) 100%);box-shadow:0 0 50px 14px color-mix(in srgb,var(--n-glow) 75%,transparent),0 0 150px 54px color-mix(in srgb,var(--n-glow) 38%,transparent)}
.lm-ring{position:absolute;left:-112px;top:-112px;width:224px;height:224px;border-radius:50%;border:2px solid rgba(255,255,255,.75);box-shadow:0 0 16px var(--n-glow),inset 0 0 16px color-mix(in srgb,var(--n-glow) 70%,transparent);animation:lm-spin var(--sp) linear infinite}
.lm-ring u{position:absolute;left:50%;top:-7px;width:13px;height:13px;margin-left:-6px;border-radius:50%;background:#fff;box-shadow:0 0 14px 4px var(--n-glow)}
.lm-ring.a{--rx:72deg;--ry:0deg;--sp:7s}
.lm-ring.b{--rx:72deg;--ry:60deg;--sp:9s;width:264px;height:264px;left:-132px;top:-132px}
.lm-ring.c{--rx:72deg;--ry:-60deg;--sp:11s;width:184px;height:184px;left:-92px;top:-92px}
.lm-flash{position:absolute;left:50%;top:50%;width:520px;height:520px;margin:-320px 0 0 -260px;background:radial-gradient(circle,#fff,color-mix(in srgb,var(--n-glow) 70%,#fff) 24%,transparent 66%);opacity:0;transform:translateZ(120px)}
.lm-sparks{position:absolute;left:50%;top:50%;width:420px;height:420px;margin:-270px 0 0 -210px;transform:translateZ(40px)}
@keyframes lm-hover{50%{transform:translateY(-78px)}}
@keyframes lm-rays{to{transform:translateZ(-60px) rotate(360deg)}}
@keyframes lm-spin{from{transform:rotateX(var(--rx)) rotateY(var(--ry)) rotateZ(0)}to{transform:rotateX(var(--rx)) rotateY(var(--ry)) rotateZ(360deg)}}
@keyframes lm-core-burst{0%{transform:scale(1)}30%{transform:scale(.8)}100%{transform:scale(16);opacity:0}}
@keyframes lm-ring-burst{to{transform:rotateX(var(--rx)) rotateY(var(--ry)) rotateZ(180deg) scale(3.4);opacity:0}}
.opening-lamp.is-open .lm-core{animation:lm-core-burst 1.9s .1s cubic-bezier(.5,0,.2,1) forwards}
.opening-lamp.is-open .lm-ring{animation:lm-ring-burst 1.7s .1s ease-in forwards}
.opening-lamp.is-open .lm-flash{animation:cr-flash-on 1.5s .8s ease-out forwards}
.opening-lamp.is-open .lm-rays{opacity:1}

/* ===== Cortinas ===== */
.cu-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(10px) rotateX(-6deg) rotateY(-10deg)}
.cu-floor{position:absolute;left:50%;top:50%;width:420px;height:340px;margin:-170px 0 0 -210px;background:linear-gradient(180deg,rgba(255,214,140,.35),rgba(255,214,140,.04));transform:translateY(215px) rotateX(90deg)}
.cu-spot{position:absolute;left:50%;top:50%;width:200px;height:520px;margin:-470px 0 0 -100px;background:linear-gradient(180deg,rgba(255,236,190,.4),rgba(255,236,190,0));clip-path:polygon(35% 0,65% 0,100% 100%,0 100%);filter:blur(7px);transform-origin:50% 0;animation:n3d-breathe 4.8s ease-in-out infinite}
.cu-spot.a{transform:translateZ(-20px) rotate(24deg) translateX(-100px)}
.cu-spot.b{transform:translateZ(-20px) rotate(-24deg) translateX(100px);animation-delay:-2.4s}
.cu-stage{position:absolute;left:50%;top:50%;width:340px;height:430px;margin:-215px 0 0 -170px;transform-style:preserve-3d}
.cu-behind{position:absolute;inset:0;transform:translateZ(-34px);background:radial-gradient(ellipse at 50% 62%,#fff1c8,#e3a94a 38%,#5a300c 78%,#1a0c04);box-shadow:0 0 90px 10px color-mix(in srgb,var(--n-glow) 50%,transparent)}
.cu-panel{position:absolute;top:0;bottom:0;width:50.4%;transform:translateZ(26px);background:linear-gradient(180deg,rgba(0,0,0,.5),transparent 20%,transparent 72%,rgba(0,0,0,.5)),repeating-linear-gradient(90deg,#4a0616 0,#a3162f 10px,#e24a62 16px,#a3162f 22px,#4a0616 34px);box-shadow:inset 0 -14px 24px rgba(0,0,0,.4)}
.cu-panel.pl{left:0;transform-origin:0 50%}
.cu-panel.pr{right:0;transform-origin:100% 50%}
.cu-valance{position:absolute;left:-16px;right:-16px;top:-6px;height:70px;transform:translateZ(44px);display:flex;background:linear-gradient(180deg,#3a0410,#7c0f26);box-shadow:0 10px 24px rgba(0,0,0,.55)}
.cu-valance b{flex:1;border-radius:0 0 50% 50%/0 0 100% 100%;background:repeating-linear-gradient(90deg,#4a0616 0,#b01a36 8px,#e24a62 12px,#b01a36 16px,#4a0616 24px);border-bottom:3px solid #d9a441;margin:0 -1px}
.cu-pole{position:absolute;left:-30px;right:-30px;top:-20px;height:15px;border-radius:8px;transform:translateZ(52px);background:linear-gradient(180deg,#fff0b8,#d9a441 50%,#7a4d0d);box-shadow:0 5px 10px rgba(0,0,0,.5)}
.cu-tie{position:absolute;top:262px;width:22px;height:78px;transform:translateZ(50px);background:linear-gradient(90deg,#b8801c,#ffe08a 50%,#a8700e);clip-path:polygon(35% 0,65% 0,100% 100%,0 100%)}
.cu-tie.tl{left:-8px}.cu-tie.tr{right:-8px}
.cu-sparks{position:absolute;left:50%;top:50%;width:380px;height:380px;margin:-220px 0 0 -190px;transform:translateZ(90px)}
@keyframes cu-open-l{to{transform:translate3d(-8px,0,64px) scaleX(.15)}}
@keyframes cu-open-r{to{transform:translate3d(8px,0,64px) scaleX(.15)}}
@keyframes cu-lift{to{transform:translate3d(0,-14px,44px)}}
@keyframes cu-reveal{to{transform:translateZ(-34px) scale(1.12);filter:brightness(1.25)}}
@keyframes cu-push{to{translate:0 0;scale:1.38}}
.opening-curtain.is-open .cu-panel.pl{animation:cu-open-l 2.2s .25s cubic-bezier(.5,0,.25,1) forwards}
.opening-curtain.is-open .cu-panel.pr{animation:cu-open-r 2.2s .25s cubic-bezier(.5,0,.25,1) forwards}
.opening-curtain.is-open .cu-valance{animation:cu-lift 1s 1.2s ease-out forwards}
.opening-curtain.is-open .cu-behind{animation:cu-reveal 2.6s .4s ease-out forwards}
.opening-curtain.is-open .cu-group{animation:cu-push 3.3s .3s cubic-bezier(.5,0,.3,1) forwards}

/* ===== Portas ===== */
.dr-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(8px) rotateX(-4deg) rotateY(-12deg)}
.dr-floor{position:absolute;left:50%;top:50%;width:420px;height:340px;margin:-170px 0 0 -210px;background:linear-gradient(180deg,rgba(255,220,150,.25),rgba(255,220,150,.03));transform:translateY(210px) rotateX(90deg)}
.dr-spill{position:absolute;left:50%;top:50%;width:300px;height:420px;margin:-80px 0 0 -150px;background:linear-gradient(180deg,rgba(255,230,170,.7),rgba(255,230,170,0));clip-path:polygon(25% 0,75% 0,100% 100%,0 100%);transform:translateY(130px) rotateX(86deg);opacity:0;filter:blur(8px)}
.dr-frame{position:absolute;left:50%;top:50%;width:300px;height:420px;margin:-210px 0 0 -150px;transform-style:preserve-3d}
.dr-behind{position:absolute;inset:0;border-radius:150px 150px 0 0;transform:translateZ(-44px);background:radial-gradient(ellipse at 50% 72%,#fffbe6,#ffe29a 32%,#c98a2a 66%,#2a1404);box-shadow:0 0 130px 30px color-mix(in srgb,var(--n-glow) 50%,transparent);display:grid;place-items:center;overflow:hidden}
.dr-behind u{width:130px;height:130px;border-radius:50%;background:radial-gradient(circle,#fff,transparent 66%);filter:blur(4px)}
.dr-door{position:absolute;top:0;width:150.5px;height:420px;transform-style:preserve-3d}
.dr-door.dl{left:0;transform-origin:0 50%;border-radius:150px 0 0 0}
.dr-door.dr{right:0;transform-origin:100% 50%;border-radius:0 150px 0 0}
.dr-face,.dr-back{position:absolute;inset:0;border-radius:inherit;backface-visibility:hidden}
.dr-face{background:linear-gradient(90deg,color-mix(in srgb,var(--invite-primary) 40%,#2c180a),color-mix(in srgb,var(--invite-primary) 56%,#4a2a14) 50%,color-mix(in srgb,var(--invite-primary) 38%,#24120a));box-shadow:inset 0 0 0 2px rgba(255,255,255,.07),inset 0 -30px 40px rgba(0,0,0,.35)}
.dr-face:before{content:"";position:absolute;inset:0;border-radius:inherit;background:repeating-linear-gradient(90deg,rgba(255,255,255,.03) 0 1px,transparent 1px 6px),linear-gradient(115deg,transparent 30%,rgba(255,255,255,.12) 48%,transparent 60%)}
.dr-face b{position:absolute;left:20px;right:20px;border:2px solid rgba(0,0,0,.4);border-radius:4px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.08)}
.dr-face b:nth-of-type(1){top:70px;height:130px}
.dr-face b:nth-of-type(2){top:222px;height:150px}
.dr-face em{position:absolute;top:52%;width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff6c8,#d9a441 55%,#7a4d0d);box-shadow:0 3px 6px rgba(0,0,0,.5)}
.dr-door.dl .dr-face em{right:12px}
.dr-door.dr .dr-face em{left:12px}
.dr-back{transform:rotateY(180deg);background:color-mix(in srgb,var(--invite-primary) 30%,#1c0e06)}
.dr-arch{position:absolute;left:-12px;right:-12px;top:-12px;bottom:0;border:12px solid color-mix(in srgb,#d9a441 70%,var(--invite-accent));border-bottom:0;border-radius:162px 162px 0 0;transform:translateZ(10px);pointer-events:none;box-shadow:0 0 24px rgba(0,0,0,.6),inset 0 0 12px rgba(0,0,0,.4)}
.dr-sparks{position:absolute;left:50%;top:50%;width:360px;height:360px;margin:-210px 0 0 -180px;transform:translateZ(80px)}
@keyframes dr-open-l{0%{transform:rotateY(0)}20%{transform:rotateY(-3deg)}100%{transform:rotateY(108deg)}}
@keyframes dr-open-r{0%{transform:rotateY(0)}20%{transform:rotateY(3deg)}100%{transform:rotateY(-108deg)}}
@keyframes dr-spill-on{to{opacity:1;transform:translateY(130px) rotateX(86deg) scale(1.5)}}
@keyframes dr-glow-on{to{transform:translateZ(-44px) scale(1.08);filter:brightness(1.35)}}
@keyframes dr-push{to{translate:0 0;scale:1.6}}
.opening-doors.is-open .dr-door.dl{animation:dr-open-l 2.1s .2s cubic-bezier(.5,0,.2,1) forwards}
.opening-doors.is-open .dr-door.dr{animation:dr-open-r 2.1s .2s cubic-bezier(.5,0,.2,1) forwards}
.opening-doors.is-open .dr-spill{animation:dr-spill-on 2s .5s ease-out forwards}
.opening-doors.is-open .dr-behind{animation:dr-glow-on 2.4s .4s ease-out forwards}
.opening-doors.is-open .dr-group{animation:dr-push 3.2s .4s cubic-bezier(.5,0,.3,1) forwards}

/* ===== Presente (ribbon) ===== */
.opening-ribbon .gf-group{transform:translateY(60px) rotateX(-16deg) rotateY(-30deg)}
.opening-ribbon .gb-body,.opening-ribbon .gb-lid-cube{--gc:color-mix(in srgb,var(--invite-accent) 82%,#fff 6%)}
.gf-group .gb-lid{animation:gf-wiggle 3.4s ease-in-out infinite}
.gf-beam{position:absolute;left:50%;top:50%;width:200px;height:560px;margin:-560px 0 0 -100px;background:linear-gradient(180deg,rgba(255,244,210,0),rgba(255,244,210,.85));clip-path:polygon(30% 0,70% 0,100% 100%,0 100%);filter:blur(8px);opacity:0;transform:translateY(-60px) translateZ(-30px)}
.gf-flash{position:absolute;left:50%;top:50%;width:420px;height:420px;margin:-260px 0 0 -210px;background:radial-gradient(circle,#fff,color-mix(in srgb,var(--n-glow) 70%,#fff) 24%,transparent 66%);opacity:0;transform:translateZ(80px)}
.gf-sparks{position:absolute;left:50%;top:50%;width:360px;height:320px;margin:-260px 0 0 -180px;transform:translateZ(80px)}
@keyframes gf-wiggle{0%,100%{rotate:0deg}30%{rotate:-1.6deg}60%{rotate:1.4deg}}
@keyframes gf-beam-on{0%{opacity:0;transform:translateY(-60px) translateZ(-30px) scaleY(.2)}30%{opacity:1}100%{opacity:.75;transform:translateY(-60px) translateZ(-30px) scaleY(1.2)}}
.opening-ribbon.is-open .gb-body{animation:gb-shake .4s ease-in-out both}
.opening-ribbon.is-open .gb-lid{animation:gb-lid-pop 1.7s .38s cubic-bezier(.2,.8,.3,1) forwards}
.opening-ribbon.is-open .gf-beam{animation:gf-beam-on 1.8s .4s ease-out forwards}
.opening-ribbon.is-open .gf-flash{animation:cr-flash-on 1.3s .5s ease-out forwards}

/* ===== Cinema ===== */
.fl-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(24px) rotateX(-12deg) rotateY(-18deg)}
.fl-floor{position:absolute;left:50%;top:50%;width:460px;height:320px;margin:-160px 0 0 -230px;background:radial-gradient(ellipse,rgba(255,255,255,.14),transparent 66%);transform:translateY(130px) rotateX(90deg)}
.fl-spot{position:absolute;left:50%;top:50%;width:360px;height:520px;margin:-470px 0 0 -180px;background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.3) 60%,rgba(255,255,255,.06));clip-path:polygon(38% 0,62% 0,100% 100%,0 100%);filter:blur(9px);transform:translateZ(-60px);animation:n3d-breathe 5s ease-in-out infinite}
.fl-clap{position:absolute;left:50%;top:50%;width:280px;height:230px;margin:-115px 0 0 -140px;transform-style:preserve-3d;animation:n3d-float 4.6s ease-in-out infinite}
.fl-board{position:absolute;left:0;right:0;top:44px;bottom:0;background:linear-gradient(160deg,#17171d,#08080b);border:2px solid #34343e;border-radius:0 0 8px 8px;overflow:hidden}
.fl-grid{position:absolute;inset:0;background:linear-gradient(#34343e,#34343e) 0 38% / 100% 2px no-repeat,linear-gradient(#34343e,#34343e) 0 70% / 100% 2px no-repeat,linear-gradient(#34343e,#34343e) 50% 70% / 2px 30% no-repeat}
.fl-text{position:absolute;white-space:nowrap;font:700 11px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.16em;color:#f1f1f5;font-style:normal}
.fl-text.t1{left:14px;top:14px;color:var(--n-glow)}
.fl-text.t2{left:14px;top:62%;font-size:15px}
.fl-text.t3{left:54%;top:62%;font-size:15px}
.fl-stick{position:absolute;left:0;right:0;top:0;height:42px;border:2px solid #34343e;border-radius:5px;background:#0b0b0f;overflow:hidden}
.fl-stick.base{top:0;transform:translateZ(1px)}
.fl-stick i{position:absolute;inset:0 -40px;display:flex;transform:skewX(-30deg)}
.fl-stick b{flex:1;background:#f1f1f5}
.fl-stick b:nth-child(even){background:#0b0b0f}
.fl-arm{position:absolute;left:0;right:0;top:-44px;height:44px;transform-origin:0 100%;transform:translateZ(6px) rotateZ(-28deg);animation:fl-idle 3.2s ease-in-out infinite}
.fl-arm .fl-stick{top:0;left:0;right:0;height:44px}
.fl-flash{position:absolute;left:50%;top:50%;width:520px;height:520px;margin:-300px 0 0 -260px;background:radial-gradient(circle,#fff,rgba(255,255,255,.7) 22%,rgba(255,255,255,.14) 50%,transparent 68%);opacity:0;transform:translateZ(120px)}
.fl-bar{position:absolute;left:50%;width:900px;margin-left:-450px;height:0;background:#000;transform:translateZ(130px)}
.fl-bar.t{top:-120px}.fl-bar.b{bottom:-120px}
.fl-sparks{position:absolute;left:50%;top:50%;width:360px;height:300px;margin:-210px 0 0 -180px;transform:translateZ(60px)}
@keyframes fl-idle{50%{transform:translateZ(6px) rotateZ(-33deg)}}
@keyframes fl-clap{0%{transform:translateZ(6px) rotateZ(-28deg)}16%{transform:translateZ(6px) rotateZ(0)}23%{transform:translateZ(6px) rotateZ(-6deg)}30%,100%{transform:translateZ(6px) rotateZ(0)}}
@keyframes fl-shake{0%,100%{translate:0 0}20%{translate:-5px 2px}40%{translate:5px -2px}60%{translate:-3px 1px}}
@keyframes fl-zoom{0%{transform:scale(1);opacity:1}100%{transform:scale(7);opacity:0}}
@keyframes fl-bar-in{to{height:120px}}
.opening-film.is-open .fl-arm{animation:fl-clap 1.2s .1s ease-out forwards}
.opening-film.is-open .fl-clap{animation:fl-shake .35s .3s ease-in-out both,fl-zoom 1.5s 1.1s cubic-bezier(.6,0,.9,.4) forwards}
.opening-film.is-open .fl-flash{animation:cr-flash-on 1s .3s ease-out forwards}
.opening-film.is-open .fl-bar{animation:fl-bar-in .9s .2s ease-out forwards}

/* ===== Portal ===== */
.pt-group{position:absolute;inset:0;transform-style:preserve-3d}
.pt-nebula{position:absolute;left:50%;top:50%;width:900px;height:900px;margin:-450px;background:radial-gradient(circle at 38% 40%,color-mix(in srgb,var(--invite-accent) 80%,transparent) 0,transparent 42%),radial-gradient(circle at 64% 62%,color-mix(in srgb,var(--invite-primary) 70%,#8a6bff) 0,transparent 46%);filter:blur(42px);opacity:.6;transform:translateZ(-720px) scale(1.5)}
.pt-star{position:absolute;left:50%;top:50%;width:3px;height:3px;border-radius:50%;background:var(--c);box-shadow:0 0 6px var(--c);transform:translate3d(var(--x),var(--y),var(--z))}
.pt-tunnel{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;animation:pt-spin 36s linear infinite}
.pt-ring{text-decoration:none;position:absolute;left:-175px;top:-175px;width:350px;height:350px;border-radius:50%;border:3px solid color-mix(in srgb,var(--invite-accent) 75%,#fff);box-shadow:0 0 22px var(--n-glow),inset 0 0 22px var(--n-glow);transform:translateZ(var(--z)) scale(var(--s)) rotate(calc(var(--i) * 18deg));opacity:calc(1 - var(--i) * .085);animation:pt-pulse 3s calc(var(--i) * -.3s) ease-in-out infinite}
.pt-ring:nth-child(even){border-style:dashed;border-width:2px}
.pt-core{position:absolute;left:50%;top:50%;width:140px;height:140px;margin:-70px;border-radius:50%;background:radial-gradient(circle,#fff 0,color-mix(in srgb,var(--n-glow) 60%,#fff) 30%,transparent 70%);filter:blur(3px);transform:translateZ(-700px) scale(2.6);animation:n3d-breathe 3.4s ease-in-out infinite}
.pt-flash{position:absolute;left:50%;top:50%;width:560px;height:560px;margin:-280px;background:radial-gradient(circle,#fff,color-mix(in srgb,var(--n-glow) 70%,#fff) 26%,transparent 68%);opacity:0;transform:translateZ(160px)}
@keyframes pt-spin{to{transform:rotateZ(360deg)}}
@keyframes pt-pulse{50%{filter:brightness(1.7)}}
@keyframes pt-rush{0%{transform:translateZ(0)}100%{transform:translateZ(820px)}}
.opening-portal.is-open .pt-group{animation:pt-rush 2.3s .1s cubic-bezier(.55,0,.8,.4) forwards}
.opening-portal.is-open .pt-tunnel{animation-duration:3s}
.opening-portal.is-open .pt-flash{animation:cr-flash-on 1.2s 1.5s ease-out forwards}


/* V4: composição, materiais e passagem para o convite; sem assets externos. */
.opening[data-art-direction="v4"]{--oc-ease:cubic-bezier(.2,.72,.2,1);isolation:isolate}
.opening-niche[data-art-direction="v4"] .opening-hit{font-family:var(--invite-sans,system-ui);touch-action:manipulation}
.opening-niche[data-art-direction="v4"] .n3d-glow{filter:none;background:radial-gradient(ellipse at 50% 40%,color-mix(in srgb,var(--n-glow) 26%,transparent),transparent 62%);opacity:.52}
.opening-niche[data-art-direction="v4"] .n3d-vig{background:radial-gradient(ellipse at 50% 42%,transparent 35%,#0005 100%)}
.oc-atmosphere,.oc-atmosphere>i,.oc-motes{position:absolute;inset:0;display:block;pointer-events:none;overflow:hidden}
.oc-aura{background:radial-gradient(ellipse at 30% 25%,color-mix(in srgb,var(--n-glow,#d5b681) 15%,transparent),transparent 55%);opacity:.7;animation:oc-aura 12s ease-in-out infinite alternate}
.oc-aura.b{background:radial-gradient(ellipse at 80% 70%,color-mix(in srgb,var(--invite-accent,#d5b681) 13%,transparent),transparent 55%);animation-delay:-6s}
.oc-horizon{background:radial-gradient(ellipse 48% 9% at 50% 57%,color-mix(in srgb,var(--n-glow,#d5b681) 10%,transparent),transparent 90%)}
.oc-frame{inset:22px!important;border:1px solid color-mix(in srgb,var(--n-glow,#d5b681) 17%,transparent);border-radius:180px 180px 12px 12px}
.oc-frame:after{content:"";position:absolute;inset:6px;border:1px solid color-mix(in srgb,var(--n-glow,#d5b681) 6%,transparent);border-radius:inherit}
.oc-grain{opacity:.14;background-image:repeating-linear-gradient(115deg,transparent 0 3px,#ffffff08 3px 4px);background-size:7px 9px}
.oc-mote{position:absolute;left:var(--mx);top:var(--my);width:var(--ms);height:var(--ms);border-radius:50%;background:var(--n-glow,#d5b681);opacity:0;animation:oc-drift var(--mt) var(--md) linear infinite;box-shadow:0 0 7px currentColor}
.oc-botanical{position:absolute;left:-42px;bottom:12%;width:180px;height:380px;stroke:var(--n-glow,#d5b681);stroke-width:.7;opacity:.13;transform:rotate(-14deg);fill:color-mix(in srgb,var(--n-glow,#d5b681) 12%,transparent)}
.oc-heading{position:absolute;top:max(72px,calc(env(safe-area-inset-top) + 52px));left:40px;right:40px;text-align:center;color:var(--n-ink,#fff5e5);font:500 9px/1.6 var(--invite-sans,system-ui);letter-spacing:.24em;opacity:.68;z-index:3;text-transform:uppercase}
.oc-heading:after{content:"";display:block;margin:18px auto 0;width:1px;height:28px;background:linear-gradient(var(--n-glow,#d5b681),transparent)}
.opening-niche[data-art-direction="v4"] .n3d-stage{top:42%;perspective:1300px;perspective-origin:50% 42%;animation:oc-scene-in 1.15s var(--oc-ease) both}
.opening-niche[data-art-direction="v4"] .n3d-copy{bottom:max(106px,calc(env(safe-area-inset-bottom) + 90px));gap:10px;padding:0 36px;animation:oc-copy-in 1s .15s var(--oc-ease) both;pointer-events:none}
.opening-niche[data-art-direction="v4"] .n3d-copy small{font-size:9px;line-height:1.4;font-weight:500;letter-spacing:.23em;opacity:.58}
.opening-niche[data-art-direction="v4"] .n3d-copy strong{font:400 clamp(30px,8vw,48px)/1.08 var(--invite-font,Georgia);letter-spacing:-.035em;max-width:680px;overflow-wrap:anywhere}
.opening-niche[data-art-direction="v4"] .n3d-copy em{font-size:11px;line-height:1.5;letter-spacing:.035em;opacity:.65;max-width:340px}
.oc-date{font:500 9px/1.5 var(--invite-sans,system-ui);letter-spacing:.2em;text-transform:uppercase;color:var(--n-glow,#d5b681)}
.opening-niche[data-art-direction="v4"] .opening-tip{display:flex;align-items:center;justify-content:center;gap:10px;width:max-content;max-width:calc(100% - 60px);left:50%;right:auto;transform:translateX(-50%);bottom:max(39px,calc(env(safe-area-inset-bottom) + 26px));border:1px solid color-mix(in srgb,var(--n-glow,#d5b681) 28%,transparent);background:#ffffff05;border-radius:50px;padding:14px 22px;font:500 9px/1.4 var(--invite-sans,system-ui);letter-spacing:.18em!important;text-transform:uppercase}
.opening-niche[data-art-direction="v4"] .opening-tip i{width:5px;height:5px;box-shadow:0 0 0 4px #ffffff08;background:currentColor;border-radius:50%}
.opening-skip{pointer-events:auto;position:absolute;right:max(20px,env(safe-area-inset-right));top:max(16px,env(safe-area-inset-top));z-index:15;min-height:44px;padding:10px 13px;border:1px solid #ffffff1f;background:#11121766;color:#fff8ee;border-radius:40px;font:500 10px/1.3 system-ui;cursor:pointer;touch-action:manipulation}
.opening-skip:focus-visible{outline:2px solid var(--n-glow,#d5b681);outline-offset:3px}
.oc-progress{position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--n-glow,#d5b681);transform:scaleX(0);transform-origin:left;opacity:.6;z-index:20;pointer-events:none}
.opening-niche[data-art-direction="v4"].is-open{animation:oc-exit 650ms var(--oc-ease) calc(var(--open-ms) - 650ms) forwards!important}
.opening-niche[data-art-direction="v4"].is-open .n3d-stage{animation:oc-camera var(--open-ms) var(--oc-ease) both}
.opening-niche[data-art-direction="v4"].is-open .n3d-copy{animation:oc-copy-out .5s ease forwards}
.opening[data-art-direction="v4"].is-open .oc-heading{opacity:0;transition:opacity .45s}
.opening[data-art-direction="v4"].is-open .oc-progress{animation:oc-progress var(--open-ms,3000ms) linear forwards}
.opening[data-art-direction="v4"].is-open .oc-frame{opacity:.35;transition:opacity 1s}
.invite.is-opening>.invite-control-dock,.invite.is-opening>.invite-scene-rail{visibility:hidden;pointer-events:none}
.invite.is-opening>.invite-hero-title{opacity:0;transform:translateY(24px) scale(.985)}
.invite.opening-complete>.invite-hero-title{animation:oc-content-in .85s var(--oc-ease,cubic-bezier(.2,.72,.2,1)) both}
.preview-banner{font:600 8px/1.4 system-ui,sans-serif!important;letter-spacing:.08em!important;left:16px!important;top:21px!important;transform:none!important;max-width:calc(100vw - 170px);padding:8px 10px!important;border-radius:8px!important;pointer-events:none}
.preview-banner span{display:none}
@keyframes oc-scene-in{from{opacity:0;translate:0 18px;scale:.94}to{opacity:1;translate:0 0;scale:1}}
@keyframes oc-camera{0%{translate:0 0;scale:1}18%{translate:0 3px;scale:.985}62%{translate:0 -7px;scale:1.035}100%{translate:0 -14px;scale:1.1}}
@keyframes oc-exit{0%{opacity:1}100%{opacity:0;visibility:hidden}}
@keyframes oc-content-in{from{opacity:0;transform:translateY(24px) scale(.985)}to{opacity:1;transform:none}}
@keyframes oc-copy-in{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@keyframes oc-copy-out{to{opacity:0;translate:0 12px}}
@keyframes oc-aura{to{transform:translate3d(3%,-3%,0) scale(1.08);opacity:.9}}
@keyframes oc-drift{0%,100%{opacity:0;transform:translate3d(0,25px,0)}20%,75%{opacity:.45}99%{transform:translate3d(16px,-85px,0)}}
@keyframes oc-progress{to{transform:scaleX(1)}}
/* Papel texturizado, relevo, selo dourado e personalização real. */
.opening-envelope[data-art-direction="v4"]{--n-bg:radial-gradient(ellipse at 50% 36%,color-mix(in srgb,var(--invite-primary) 75%,#566c5a),#0b1512 72%);--n-glow:#dfc397}
.opening-niche .ev-front,.opening-niche .ev-flap-out{background-blend-mode:soft-light;box-shadow:inset 0 0 0 1px #ffffff1c}
.opening-niche .ev-back:after,.opening-niche .ev-front:after,.opening-niche .ev-flap-out:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(32deg,#ffffff08 0 1px,transparent 1px 3px);opacity:.5}
.opening-niche .ev-seal{width:58px;height:58px;margin-left:-29px;background:radial-gradient(circle at 32% 24%,#f7ddaa,#c69e5c 35%,#96703c 65%,#d0a660);box-shadow:inset 0 0 0 3px #ebc88a66,inset 0 0 0 5px #6a4e2840,inset 1px 3px 6px #fff5,0 5px 14px #0007}
.opening-niche .ev-seal b{font:500 15px/1 Georgia,serif;color:#624720;text-shadow:0 1px #ffe6ae;letter-spacing:.05em}
.oc-card-copy{position:absolute;inset:38px 20px 20px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:10px;color:#44362b;text-align:center}
.oc-card-copy b{font:400 26px/1.1 var(--invite-font,Georgia);max-width:100%;overflow-wrap:anywhere}
.oc-card-copy small{font:500 8px/1.4 var(--invite-sans,system-ui);letter-spacing:.16em}
.oc-card-copy em{font:italic 10px/1.4 var(--invite-font,Georgia)}
.opening-niche .ev-crest{position:absolute;top:21px;margin:0;font-size:17px;color:#a7864e}
.opening-niche .ev-card{opacity:0;background:repeating-linear-gradient(0deg,#fff6 0 1px,transparent 1px 4px),#fbf3e1}
.opening-niche .ev-card-frame{inset:12px;border-color:#c6a36880}
@keyframes oc-envelope-card{0%,15%{opacity:0}35%,100%{opacity:1}0%{transform:translate3d(0,0,2px)}45%{transform:translate3d(0,-150px,2px)}75%{transform:translate3d(0,-112px,110px) rotateY(16deg) rotateX(14deg)}100%{transform:translate3d(0,-104px,180px) rotateY(16deg) rotateX(14deg)}}
.opening-envelope.is-open .ev-card{animation:oc-envelope-card 2s .78s var(--oc-ease) forwards}
.opening-envelope.is-open .ev-flap{animation:oc-flap-open .9s .28s var(--oc-ease) forwards}
@keyframes oc-flap-open{0%{transform:translateZ(8px) rotateX(0)}75%{transform:translateZ(8px) rotateX(-178deg)}100%{transform:translateZ(-3px) rotateX(-178deg)}}
/* Livro: capa gravada e páginas que se viram em sequência. */
.oc-book-title{position:absolute;left:32px;right:24px;top:56%;text-align:center;color:#eed6ad;font:400 20px/1.15 var(--invite-font,Georgia);overflow-wrap:anywhere}
.oc-book-title small{display:block;margin-top:18px;font:500 7px/1.5 system-ui;letter-spacing:.18em}
.opening-niche .bo-crest{color:#e7c791;text-shadow:0 1px 0 #0006;font-size:31px;margin-top:-62px;letter-spacing:.07em}
.opening-niche .bo-open-page .oc-card-copy{inset:45px 20px}
.oc-turn-page{position:absolute;inset:5px 2px 5px 2px;transform-origin:0 50%;transform:translateZ(2px);backface-visibility:hidden;background:linear-gradient(90deg,#bfb394,#fff9eb 10%,#f2e8d2 98%);border-radius:0 6px 6px 0;box-shadow:inset -1px 0 #c6b995}
.oc-turn-page:after{content:"";position:absolute;inset:32px 26px;background:repeating-linear-gradient(0deg,transparent 0 16px,#80663a28 17px 18px)}
.opening-book.is-open .bo-book{animation:oc-book-center 2.8s .1s var(--oc-ease) forwards}
@keyframes oc-book-center{to{transform:translate3d(102px,0,35px) scale(.82)}}
.opening-book.is-open .oc-turn-page{animation:oc-page-turn 1.6s calc(.65s + var(--page)*.2s) cubic-bezier(.45,0,.15,1) forwards}
@keyframes oc-page-turn{0%{transform:translateZ(2px) rotateY(0)}45%{transform:translateZ(2px) rotateY(-95deg)}100%{transform:translateZ(2px) rotateY(-176deg)}}
/* Alianças: aproximação suave e encontro das peças, sem giros bruscos. */
.opening-niche .rb-spot{opacity:.28;filter:none;background:linear-gradient(180deg,transparent,#f8db9622,transparent)}
.opening-niche .rb-satin:after{content:"PARA SEMPRE";display:grid;place-items:center;color:#947040;font:500 10px/1 system-ui;letter-spacing:.2em}
.opening-niche .rb-monogram{font-size:28px;letter-spacing:.08em}
.opening-rings[data-art-direction="v4"]{--n-bg:radial-gradient(ellipse at 50% 35%,#492132,#160a15 65%,#0a060c);--n-glow:#e3c38e}
.opening-rings.is-open .rb-ring.r1{animation:oc-ring-one 2.2s .6s var(--oc-ease) forwards}
.opening-rings.is-open .rb-ring.r2{animation:oc-ring-two 2.2s .72s var(--oc-ease) forwards}
@keyframes oc-ring-one{0%{transform:translate3d(-30px,-24px,3px) rotateY(16deg)}45%{transform:translate3d(-42px,-110px,70px) rotateY(50deg) scale(1.18)}100%{transform:translate3d(-15px,-125px,105px) rotateY(-20deg) rotateZ(-20deg) scale(1.25)}}
@keyframes oc-ring-two{0%{transform:translate3d(30px,-24px,-3px) rotateY(-14deg) scale(.94)}45%{transform:translate3d(42px,-98px,65px) rotateY(-45deg) scale(1.12)}100%{transform:translate3d(21px,-111px,115px) rotateY(20deg) rotateZ(20deg) scale(1.2)}}
/* Palco e portas: o destino aparece no fundo enquanto as peças se afastam. */
.oc-destination{position:absolute;inset:18% 7%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;color:#e7cfa4;text-align:center;font:400 25px/1.15 var(--invite-font,Georgia)}
.oc-destination small{font:500 8px/1.4 system-ui;letter-spacing:.2em}
.opening-niche .cu-behind{background:radial-gradient(ellipse at 50% 60%,#d9b87d44,#171117 75%)}
.opening-niche .dr-behind{background:radial-gradient(ellipse at 50% 40%,#fbefcf,#b4bda2 70%,#4e705f)}
.opening-niche .dr-behind .oc-destination{color:#435848}
.opening-niche .cu-panel{box-shadow:inset 10px 0 30px #0005,inset -10px 0 30px #0005,0 0 12px #0008}
.opening-party[data-art-direction="v4"]{--n-bg:radial-gradient(ellipse at 50% 35%,#4f315c,#211528 65%,#100b18)}
.opening-niche .gb-body>i{border-radius:2px}
.opening-niche .fl-text.t1{font-size:11px;letter-spacing:.12em}
.opening-niche .fl-text.t2{font-size:18px;text-transform:none}
.opening-niche .pt-ring{box-shadow:0 0 12px #fff3,0 0 22px color-mix(in srgb,var(--invite-accent) 60%,transparent)}
/* Cristal: três lâminas com refração e afastamento em profundidade. */
.opening-glass.opening-niche{--n-bg:radial-gradient(ellipse at 50% 38%,#365c66,#12252e 60%,#0b131e);--n-glow:#bdeaf0;--n-ink:#ecfaff}
.oc-glass-group{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(-8deg) rotateY(-15deg)}
.oc-glass-pane{position:absolute;left:50%;top:50%;width:220px;height:290px;margin:-145px 0 0 -110px;border:1px solid #e1ffff80;border-radius:25px;transform:translate3d(calc(var(--pane)*25px),calc(var(--pane)*-12px),calc(var(--pane)*45px));background:linear-gradient(125deg,#ffffff3d,#d7fbff08 40%,#ffffff15 65%,#a0cbd233);box-shadow:inset 1px 1px 0 #fff7,inset -2px -2px 12px #b9f7ff30,10px 20px 35px #0003;overflow:hidden}
.oc-glass-pane.pane-1{background:linear-gradient(135deg,#e2faff28,#d5f5ff0d);backdrop-filter:blur(8px)}
.oc-glass-edge{position:absolute;inset:12px;border:1px solid #fff3;border-radius:17px}
.oc-glass-reflection{position:absolute;inset:-80%;background:linear-gradient(115deg,transparent 43%,#fff5 49%,transparent 55%);animation:oc-crystal-light 7s ease-in-out infinite}
.oc-glass-monogram{position:absolute;inset:0;display:grid;place-items:center;font:400 52px var(--invite-font,Georgia);color:#d5f3f5;text-shadow:1px 2px #fff6,0 0 26px #b9f7ff55}
.oc-glass-caption{position:absolute;left:12px;right:12px;bottom:60px;text-align:center;font:500 7px system-ui;letter-spacing:.25em;color:#dcffffb3}
.oc-glass-shadow{position:absolute;left:50%;top:85%;width:290px;height:45px;margin-left:-145px;border-radius:50%;background:radial-gradient(ellipse,#0005,transparent 70%)}
.oc-glass-orbit{position:absolute;left:50%;top:50%;width:370px;height:370px;margin:-185px;border:1px solid #c5f2ff30;border-radius:50%;transform:rotateX(65deg) rotateY(-20deg)}
.opening-glass.is-open .oc-glass-pane{animation:oc-crystal-open 2.25s calc(.08s + (var(--pane) + 1)*.1s) var(--oc-ease) forwards}
@keyframes oc-crystal-light{0%,20%{translate:-25% 0}60%,100%{translate:25% 0}}
@keyframes oc-crystal-open{30%{transform:translate3d(calc(var(--pane)*44px),calc(var(--pane)*-22px),calc(var(--pane)*70px)) rotateY(calc(var(--pane)*8deg));opacity:1}100%{transform:translate3d(calc(var(--pane)*260px),-25px,190px) rotateY(calc(var(--pane)*50deg)) scale(1.12);opacity:0}}
/* Névoa: volume em camadas, símbolo central e dispersão radial. */
.opening-smoke.opening-niche{--n-bg:radial-gradient(ellipse at 50% 35%,#514469,#1a152d 62%,#0d0b17);--n-glow:#ddc3fa;--n-ink:#f5edff}
.oc-smoke-group{position:absolute;inset:0;transform-style:preserve-3d}
.oc-smoke-moon{position:absolute;inset:20%;border-radius:50%;background:radial-gradient(circle,#f4e4ff55,#b590d92b 40%,transparent 72%)}
.oc-smoke-emblem{position:absolute;inset:0;display:grid;place-items:center;font:400 54px var(--invite-font,Georgia);color:#eddef9;text-shadow:0 0 30px #e4c3ff80;transform:translateZ(10px)}
.oc-cloud{position:absolute;left:50%;top:50%;width:180px;height:170px;margin:-85px 0 0 -90px;border-radius:50%;background:radial-gradient(ellipse at 35% 35%,#d4b5ee80,#b794cf38 42%,transparent 70%);transform:translate3d(var(--cx),var(--cy),40px) rotate(var(--cr));animation:oc-cloud-idle 6s calc(var(--ci)*-.5s) ease-in-out infinite alternate;opacity:.8}
.oc-smoke-ring{position:absolute;inset:16%;border-radius:50%;border:1px solid #e9caff33;transform:rotateX(55deg)}
.opening-smoke.is-open .oc-cloud{animation:oc-cloud-away 2.1s calc(var(--ci)*.035s) var(--oc-ease) forwards}
.opening-smoke.is-open .oc-smoke-emblem{animation:oc-emblem-reveal 2.5s var(--oc-ease) forwards}
@keyframes oc-cloud-idle{to{translate:8px -12px;scale:1.16;opacity:.55}}
@keyframes oc-cloud-away{30%{opacity:.85;scale:1.1}100%{transform:translate3d(calc(var(--cx)*3.7),calc(var(--cy)*3.7),160px) rotate(calc(var(--cr) + 25deg));scale:1.8;opacity:0}}
@keyframes oc-emblem-reveal{0%{opacity:.4}45%{opacity:1;scale:1.15}100%{opacity:0;scale:1.6}}
/* Fada mágica 3D: presença cenográfica, iluminação celestial, levitação e toque da varinha. */
.opening-fairy.opening-niche{--n-bg:radial-gradient(ellipse at 50% 32%,#4a2256 0%,#261132 52%,#0e0716 100%);--n-glow:#ffd89c;--n-ink:#fff8ee}
.fy-group{position:absolute;inset:0;transform-style:preserve-3d;transform:translateY(18px) rotateX(-10deg)}
.fy-floor{position:absolute;left:50%;top:50%;width:380px;height:240px;margin:-120px 0 0 -190px;background:radial-gradient(ellipse,rgba(255,216,156,.28),transparent 65%);transform:translateY(150px) rotateX(90deg)}
.fy-floor:after{content:"";position:absolute;left:50%;top:50%;width:180px;height:120px;margin:-60px 0 0 -90px;background:radial-gradient(ellipse,rgba(14,7,22,.65),transparent 70%);filter:blur(10px)}
.fy-moon{position:absolute;left:50%;top:50%;width:260px;height:260px;margin:-200px 0 0 -130px;border-radius:50%;background:radial-gradient(circle at 45% 40%,#fffee8 0 2%,#ffe6b044 32%,rgba(240,190,255,.12) 58%,transparent 72%);box-shadow:0 0 90px rgba(255,230,176,.35);transform:translateZ(-110px)}
.fy-halo{position:absolute;left:50%;top:50%;width:340px;height:340px;margin:-230px 0 0 -170px;border-radius:50%;background:radial-gradient(circle,rgba(255,230,170,.4),rgba(220,160,255,.18) 46%,transparent 70%);filter:blur(12px);transform:translateZ(-80px);animation:n3d-breathe 4.8s ease-in-out infinite}
.fy-beam{position:absolute;left:50%;top:50%;width:300px;height:420px;margin:-380px 0 0 -150px;background:linear-gradient(180deg,transparent,rgba(255,236,180,.24) 55%,rgba(255,236,180,.06));clip-path:polygon(36% 0,64% 0,100% 100%,0 100%);filter:blur(8px);transform:translateZ(-50px);animation:n3d-breathe 5.2s ease-in-out infinite}
.fy-lift{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d;animation:fy-bob 4.4s ease-in-out infinite}
.fy-actor{position:absolute;left:0;top:0;width:300px;height:400px;margin:-210px 0 0 -150px;transform-style:preserve-3d;transform:translateZ(14px)}
.fy-portrait{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;filter:drop-shadow(0 26px 36px rgba(10,5,20,.6)) drop-shadow(0 0 24px rgba(255,225,160,.42))}
.fy-idle{opacity:1;transition:opacity .35s ease}
.fy-cast{opacity:0;transition:opacity .35s ease}
.fy-wand{position:absolute;left:73%;top:22%;width:22px;height:22px;margin:-11px;transform-style:preserve-3d;transform:translateZ(36px);pointer-events:none}
.fy-wand-star{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,#fff 0 20%,#ffeb9c 35%,#ffd76e66 58%,transparent 70%);box-shadow:0 0 14px #fff,0 0 30px #ffe58f,0 0 54px #f7b9ff99;animation:fy-wand-pulse 1.6s ease-in-out infinite}
.fy-wand-core{position:absolute;left:50%;top:50%;width:5px;height:5px;margin:-2.5px;background:#fff;border-radius:50%;box-shadow:0 0 10px #fff}
.fy-wand-core:before,.fy-wand-core:after{content:"";position:absolute;left:50%;top:50%;background:#fff;transform:translate(-50%,-50%);border-radius:999px}
.fy-wand-core:before{width:22px;height:2px}
.fy-wand-core:after{width:2px;height:22px}
.fy-rays{position:absolute;left:50%;top:50%;width:480px;height:480px;margin:-300px 0 0 -240px;background:repeating-conic-gradient(from 0deg,rgba(255,235,190,.55) 0 4deg,transparent 4deg 24deg);-webkit-mask:radial-gradient(circle,#000 0,transparent 65%);mask:radial-gradient(circle,#000 0,transparent 65%);opacity:0;transform:translateZ(-30px)}
.fy-flash{position:absolute;left:50%;top:50%;width:440px;height:440px;margin:-280px 0 0 -220px;background:radial-gradient(circle,#fff,rgba(255,235,180,.8) 24%,rgba(235,160,255,.24) 48%,transparent 70%);opacity:0;transform:translateZ(100px)}
.fy-sparks{position:absolute;left:50%;top:50%;width:340px;height:340px;margin:-230px 0 0 -170px;transform:translateZ(65px)}
@keyframes fy-bob{0%,100%{transform:translate3d(0,0,0) rotateZ(-.8deg)}50%{transform:translate3d(0,-16px,0) rotateZ(1.2deg)}}
@keyframes fy-wand-pulse{50%{transform:scale(1.24);box-shadow:0 0 20px #fff,0 0 44px #ffe58f,0 0 74px #f7b9ffcc}}
@keyframes fy-wand-burst{0%{transform:scale(1)}35%{transform:scale(3.8);filter:drop-shadow(0 0 35px #fff)}100%{transform:scale(8);opacity:0}}
@keyframes fy-ascend{0%{transform:translate3d(0,0,0) scale(1)}30%{transform:translate3d(8px,-14px,20px) scale(1.04)}100%{transform:translate3d(24px,-210px,140px) scale(1.2);opacity:0}}
.opening-fairy.is-open .fy-idle{opacity:0}
.opening-fairy.is-open .fy-cast{opacity:1}
.opening-fairy.is-open .fy-wand-star{animation:fy-wand-burst 1.3s ease-out forwards}
.opening-fairy.is-open .fy-lift{animation:fy-ascend 2.5s .15s cubic-bezier(.2,.75,.2,1) forwards}
.opening-fairy.is-open .fy-rays{animation:cr-rays-on 2.4s .3s ease-out forwards}
.opening-fairy.is-open .fy-flash{animation:cr-flash-on 1.3s .4s ease-out forwards}
.opening-fairy.is-open .cf{animation:n3d-confetti 2.4s calc(.35s + var(--dl)) cubic-bezier(.2,.7,.3,1) forwards}
/* Limites de movimento: cena estável em economia de dados e acessibilidade. */
.opening-niche.n3d-lite .oc-motes,.opening-niche.n3d-lite .oc-grain{display:none}
.opening-niche.n3d-lite .oc-aura,.opening-niche.n3d-lite .oc-glass-reflection{animation:none}
.opening-niche.n3d-lite .oc-glass-pane{backdrop-filter:none}
.opening[data-opening-paused="true"] *{animation-play-state:paused!important}
@media(max-height:660px){.opening-niche[data-art-direction="v4"] .n3d-stage{--k:.58;top:40%}.opening-niche[data-art-direction="v4"] .n3d-copy{bottom:90px;gap:5px}.opening-niche[data-art-direction="v4"] .n3d-copy strong{font-size:28px}.opening-niche[data-art-direction="v4"] .n3d-copy em{display:none}.oc-heading{top:65px}.oc-heading:after{height:12px;margin-top:10px}}
@media(max-height:450px){.opening-niche[data-art-direction="v4"] .n3d-stage{left:27%;top:54%;--k:.48}.opening-niche[data-art-direction="v4"] .n3d-copy{left:46%;bottom:31%;padding:0 22px}.oc-heading{display:none}.opening-niche[data-art-direction="v4"] .opening-tip{left:72%;bottom:13%}.oc-frame{inset:14px!important}}
@media(prefers-reduced-motion:reduce){.opening[data-art-direction="v4"] *{animation:none!important;transition:none!important}.opening-niche[data-art-direction="v4"] .n3d-stage,.opening-niche[data-art-direction="v4"] .n3d-copy{opacity:1!important;translate:none;scale:1}.opening-niche .oc-motes{display:none}.invite.opening-complete>.invite-hero-title{animation:none!important;opacity:1;transform:none}}
/* VISUAL-20261021: fada integrada a um cenario vivo, sem duplicar asas no retrato. */
.opening-fairy.opening-niche{--n-bg:radial-gradient(ellipse at 50% 31%,#513353 0%,#22142e 52%,#0b0915 100%);--n-glow:#ffe2a6}
.opening-fairy .fy-group{transform:translateY(0) rotateX(-3deg);perspective:1000px;filter:drop-shadow(0 24px 38px #05030a88)}
.opening-fairy .fy-halo{background:radial-gradient(circle,#fff0c477 0%,#dfb3eb44 34%,#b18cdb1a 58%,transparent 74%);filter:blur(20px);animation:fy-aura-shift 6s ease-in-out infinite alternate}
.opening-fairy .fy-moon{background:radial-gradient(circle at 42% 38%,#ffefc57d 0%,#ebc4ed33 31%,#b797ed13 63%,transparent 74%);box-shadow:0 0 96px #e8c7f244,inset 0 0 45px #f5dfb533}
.opening-fairy .fy-beam{opacity:.64;filter:blur(16px);animation:fy-aura-shift 7s ease-in-out infinite alternate}
.opening-fairy .fy-actor{transform:translateZ(26px) rotateY(-3deg);animation:fy-presence 5.5s ease-in-out infinite alternate}
.opening-fairy .fy-portrait{filter:drop-shadow(0 16px 22px #100a1799) drop-shadow(0 0 14px #f7d8aa55);-webkit-mask-image:linear-gradient(180deg,transparent,#000 4%,#000 94%,#000b);mask-image:linear-gradient(180deg,transparent,#000 4%,#000 94%,#000b);backface-visibility:hidden}
.opening-fairy .fy-idle,.opening-fairy .fy-cast{transition:opacity .7s cubic-bezier(.2,.7,.2,1)}
.opening-fairy .fy-floor{background:radial-gradient(ellipse,#f8d7af30,transparent 70%);filter:blur(11px)}
.opening-fairy .fy-sparks{inset:0;width:100%;height:100%;margin:0;left:0;top:0;transform:translateZ(80px);pointer-events:none}
.opening-fairy .fy-spark{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;transform:scale(var(--s));border-radius:50%;background:#fff8dc;box-shadow:0 0 10px #ffe1a9,0 0 23px #e6b4f2;opacity:0;animation:fy-mote-twinkle var(--t) ease-in-out var(--d) infinite}
.opening-fairy .fy-path{position:absolute;left:50%;top:44%;width:min(62vw,410px);height:min(62vw,410px);transform:translate(-50%,-50%) translateZ(76px);border:1px solid #f4d9b82b;border-radius:50%;box-shadow:0 0 35px #ecbdfa20,inset 0 0 45px #f3cda618;pointer-events:none;opacity:.72;animation:fy-orbit-turn 18s linear infinite}
.opening-fairy .fy-path:before,.opening-fairy .fy-path:after{content:"";position:absolute;inset:7%;border:1px dashed #ffdea44a;border-radius:50%;transform:rotateX(65deg) rotate(-18deg)}
.opening-fairy .fy-path:after{inset:18%;border-style:solid;border-color:#ecb8ed48;transform:rotateY(70deg) rotate(22deg)}
.opening-fairy .fy-burst{position:absolute;left:50%;top:45%;width:32px;height:32px;border:2px solid #fff4c9;border-radius:50%;opacity:0;transform:translate(-50%,-50%) scale(.15);pointer-events:none;box-shadow:0 0 20px #fff3bb77,0 0 70px #e9affc66}
.opening-fairy.is-open .fy-burst{animation:fy-magic-ring 1.5s .3s cubic-bezier(.15,.7,.2,1) forwards}
.opening-fairy.is-open .fy-path{animation:fy-path-release 1.5s .25s ease-out forwards}
.opening-fairy.is-open .fy-cast,.opening-fairy.is-open .fy-idle{transition-delay:.34s}
.opening-fairy.is-open .fy-actor{animation:fy-casting-turn 1.6s ease-in-out both}
.opening-fairy.n3d-lite .fy-path,.opening-fairy.n3d-lite .fy-sparks{display:none}
@keyframes fy-presence{from{transform:translateZ(25px) rotateY(-3deg) rotateZ(-.3deg)}to{transform:translateZ(44px) rotateY(3deg) rotateZ(.5deg)}}
@keyframes fy-aura-shift{from{opacity:.45;scale:.95}to{opacity:.92;scale:1.1}}
@keyframes fy-mote-twinkle{0%,100%{opacity:0;translate:0 7px}40%,68%{opacity:.8;translate:0 -8px}}
@keyframes fy-orbit-turn{to{transform:translate(-50%,-50%) translateZ(76px) rotate(360deg)}}
@keyframes fy-path-release{to{opacity:0;scale:1.5}}
@keyframes fy-magic-ring{15%{opacity:.9}to{opacity:0;transform:translate(-50%,-50%) scale(14)}}
@keyframes fy-casting-turn{0%{transform:translateZ(25px) rotateY(-3deg)}35%{transform:translateZ(70px) rotateY(5deg)}100%{transform:translateZ(25px) rotateY(-3deg)}}
@media(max-width:700px){.opening-fairy .fy-path{width:min(76vw,350px);height:min(76vw,350px)}}
@media(prefers-reduced-motion:reduce){.opening-fairy .fy-actor,.opening-fairy .fy-halo,.opening-fairy .fy-beam,.opening-fairy .fy-path,.opening-fairy .fy-spark{animation:none!important}.opening-fairy .fy-spark{opacity:.5}}

/* FAIRY-PREMIUM-25D-20261021
   A arte original permanece inteiramente preservada. As quatro camadas transparentes
   sao amostras da MESMA pintura: brilho em asas organicas, sem partes do corpo falsas.
*/
.opening-fairy.opening-niche{
 --n-bg:radial-gradient(ellipse 62% 54% at 51% 31%,#62455d 0%,#2c1b39 46%,#110d1d 83%,#0c0a15 100%);
 --n-glow:#f9deab;
}
.opening-fairy .fy-group{transform:translateY(0) rotateX(-1.2deg);filter:none;perspective:1500px}
.opening-fairy .fy-lift{animation:fy25-hover 6.5s cubic-bezier(.45,0,.55,1) infinite;will-change:transform}
.opening-fairy .fy-actor{isolation:isolate;animation:fy25-portrait-breathe 6.5s ease-in-out infinite alternate;transform:translateZ(24px);filter:drop-shadow(0 20px 29px #07050e7c)}
.opening-fairy .fy-portrait{
 z-index:2;opacity:1;mask-image:none!important;-webkit-mask-image:none!important;
 filter:drop-shadow(0 12px 22px #0d061688) drop-shadow(0 0 14px #f2c9a33a);
 will-change:opacity;
}
.opening-fairy .fy-idle{transition:opacity .35s ease}
.opening-fairy .fy-cast{opacity:0;transition:opacity .5s ease}
.opening-fairy .fy-wing{display:none!important}
.opening-fairy .fy25-wings{position:absolute;inset:0;z-index:3;pointer-events:none;transform-style:preserve-3d;isolation:isolate}
.opening-fairy .fy25-wing{
 position:absolute;inset:0;width:100%;height:100%;object-fit:contain;
 pointer-events:none;user-select:none;
 opacity:.18;mix-blend-mode:screen;filter:brightness(1.09) saturate(1.07) drop-shadow(0 0 5px #ffe8bc77);
 will-change:transform,opacity;transform-style:preserve-3d;backface-visibility:hidden;
}
.opening-fairy .fy25-wing.lu{transform-origin:52% 37%;animation:fy25-left-upper 5.4s cubic-bezier(.45,.03,.58,.97) infinite alternate}
.opening-fairy .fy25-wing.ll{transform-origin:53% 42%;animation:fy25-left-lower 6.4s cubic-bezier(.45,.03,.58,.97) -.9s infinite alternate}
.opening-fairy .fy25-wing.ru{transform-origin:61% 36%;animation:fy25-right-upper 5.6s cubic-bezier(.45,.03,.58,.97) -.5s infinite alternate}
.opening-fairy .fy25-wing.rl{transform-origin:60% 43%;animation:fy25-right-lower 6.1s cubic-bezier(.45,.03,.58,.97) -1s infinite alternate}
@keyframes fy25-hover{
 0%,100%{transform:translate3d(0,2px,0) rotate(-.35deg)}
 50%{transform:translate3d(0,-13px,12px) rotate(.6deg)}
}
@keyframes fy25-portrait-breathe{
 0%{transform:translateZ(20px) rotateY(-1.35deg) rotateZ(-.3deg)}
 100%{transform:translateZ(44px) rotateY(1.35deg) rotateZ(.45deg)}
}
@keyframes fy25-left-upper{
 from{transform:perspective(1000px) rotateY(-2.5deg) rotateZ(-.4deg) translate(-1px,1px);opacity:.10}
 to{transform:perspective(1000px) rotateY(7deg) rotateZ(1.65deg) translate(0,-2px);opacity:.3}
}
@keyframes fy25-left-lower{
 from{transform:perspective(1000px) rotateY(-2deg) rotateZ(.5deg) translateX(-.8px);opacity:.08}
 to{transform:perspective(1000px) rotateY(6deg) rotateZ(-1.1deg) translateX(-2px);opacity:.3}
}
@keyframes fy25-right-upper{
 from{transform:perspective(1000px) rotateY(2.5deg) rotateZ(.4deg) translate(1px,1px);opacity:.1}
 to{transform:perspective(1000px) rotateY(-7deg) rotateZ(-1.65deg) translate(0,-2px);opacity:.3}
}
@keyframes fy25-right-lower{
 from{transform:perspective(1000px) rotateY(2deg) rotateZ(-.5deg) translateX(.8px);opacity:.08}
 to{transform:perspective(1000px) rotateY(-6deg) rotateZ(1.1deg) translateX(2px);opacity:.3}
}
/* Organic warm highlights follow the original art, never copy facial features. */
.opening-fairy .fy25-wings:after{
 content:"";position:absolute;inset:0;pointer-events:none;border-radius:50%;
 background:radial-gradient(ellipse 30% 45% at 50% 34%,#ffeca012,transparent 78%);
 mix-blend-mode:screen;opacity:.54;animation:fy25-luminous-pulse 6s ease-in-out infinite alternate
}
.opening-fairy .fy25-hair-glow{
 position:absolute;z-index:4;left:19%;top:7%;width:59%;height:47%;opacity:.21;
 pointer-events:none;border-radius:60% 54% 70% 39%;
 background:linear-gradient(116deg,transparent 28%,#fbd49025 49%,transparent 62%);
 transform:rotate(-13deg);
 animation:fy25-hair-light 6.5s ease-in-out infinite alternate
}
.opening-fairy .fy25-dress-light{
 position:absolute;z-index:4;left:11%;right:9%;top:39%;height:46%;
 background:radial-gradient(ellipse at 52% 30%,#ffe4db12,transparent 60%);
 opacity:.55;pointer-events:none;
 animation:fy25-fabric-light 6.5s ease-in-out -.8s infinite alternate
}
@keyframes fy25-hair-light{from{transform:translateX(-4px) rotate(-15deg);opacity:.1}to{transform:translateX(4px) rotate(-10deg);opacity:.35}}
@keyframes fy25-fabric-light{from{transform:translateX(-2px) skewX(-.5deg);opacity:.36}to{transform:translateX(2px) skewX(.7deg);opacity:.65}}
@keyframes fy25-luminous-pulse{from{opacity:.22}to{opacity:.72}}
.opening-fairy .fy25-aurora{
 position:absolute;inset:-22%;pointer-events:none;
 background:radial-gradient(ellipse at 50% 29%,#edc3dc26 0,transparent 44%),
            radial-gradient(ellipse at 26% 58%,#bba4fa0c 0,transparent 46%);
 filter:blur(17px);transform:translateZ(-90px);
 animation:fy25-aura 10s ease-in-out infinite alternate
}
.opening-fairy .fy25-radiance{
 position:absolute;left:50%;top:41%;width:min(77vw,410px);height:min(77vw,410px);
 transform:translate(-50%,-50%) translateZ(-65px);
 border:1px solid #f7ddbc14;border-radius:50%;pointer-events:none;
 box-shadow:inset 0 0 40px #ecc1fa0b,0 0 40px #fbeab50a;
 animation:fy25-radiance 15s linear infinite
}
.opening-fairy .fy25-radiance:before,.opening-fairy .fy25-radiance:after{
 content:"";position:absolute;inset:9%;border-radius:50%;border:1px solid #f6ddbb16
}
.opening-fairy .fy25-radiance:before{transform:rotateX(61deg) rotate(-26deg)}
.opening-fairy .fy25-radiance:after{inset:18%;transform:rotateY(66deg) rotate(15deg);border-color:#e4baf41c}
@keyframes fy25-aura{from{opacity:.5;transform:translateZ(-90px) scale(.93)}to{opacity:1;transform:translateZ(-90px) scale(1.06)}}
@keyframes fy25-radiance{to{transform:translate(-50%,-50%) translateZ(-65px) rotate(360deg)}}
/* The wand draws a gold-pink hand-painted path. */
.opening-fairy .fy25-trail{
 position:absolute;inset:0;z-index:8;width:100%;height:100%;
 overflow:visible;opacity:0;pointer-events:none;
 filter:drop-shadow(0 0 5px #fff0b8) drop-shadow(0 0 12px #edb9fd)
}
.opening-fairy .fy25-trail-path{
 fill:none;stroke:#fff1c8;stroke-width:1.9;stroke-linecap:round;
 stroke-dasharray:600;stroke-dashoffset:600
}
.opening-fairy .fy25-trail-soft{stroke:#cf98dd;stroke-width:6;opacity:.25;filter:blur(5px)}
.opening-fairy .fy25-flash{
 position:absolute;inset:-25%;z-index:8;border-radius:50%;pointer-events:none;
 opacity:0;background:radial-gradient(circle at 58% 32%,#fff7dcae 0%,#ffe9bd4d 9%,#f2c8ec30 23%,transparent 51%);
 transform:scale(.5);mix-blend-mode:screen;
}
.opening-fairy .fy25-sheen{
 position:absolute;inset:0;z-index:7;pointer-events:none;opacity:0;
 background:linear-gradient(107deg,transparent 30%,#ffe7cf00 35%,#fff4d180 48%,transparent 62%);
 mix-blend-mode:screen;transform:translateX(-100%) skewX(-10deg)
}
.opening-fairy .fy-wand{z-index:9}
.opening-fairy .fy-wand-star{
 background:radial-gradient(circle,#fff 0 12%,#fff1c9 25%,#ffdc91a6 40%,transparent 67%);
 box-shadow:0 0 8px #fff,0 0 23px #ffedb7a8,0 0 37px #f9d4ff63
}
.opening-fairy .fy-moon{opacity:.5;filter:blur(1px)}
.opening-fairy .fy-halo{opacity:.63;filter:blur(26px)}
.opening-fairy .fy-path{opacity:.2}
.opening-fairy .fy-spark{width:2px;height:2px;box-shadow:0 0 7px #fff1ca,0 0 15px #dcbaf5}
/* Staged release: wand -> magic stroke -> cinematic bloom -> invitation. */
.opening-fairy.is-open .fy25-trail{animation:fy25-trail-show 2.7s .12s ease-in-out both}
.opening-fairy.is-open .fy25-trail-path{animation:fy25-trace 1.78s .18s cubic-bezier(.24,.71,.26,.99) both}
.opening-fairy.is-open .fy25-flash{animation:fy25-magic-wash 2.1s .55s cubic-bezier(.18,.7,.23,1) both}
.opening-fairy.is-open .fy25-sheen{animation:fy25-sheen-sweep 1.3s 1.06s ease-in-out both}
.opening-fairy.is-open .fy25-wings{animation:fy25-wings-release 1.5s .58s ease-out both}
.opening-fairy.is-open .fy25-wing{animation-duration:1.25s}
.opening-fairy.is-open .fy-cast{transition-delay:.4s}
.opening-fairy.is-open .fy-idle{transition-delay:.4s}
.opening-fairy.is-open .n3d-copy strong{text-shadow:0 2px 18px #e9bbbc80,0 0 35px #f8d9a34d}
@keyframes fy25-trail-show{0%{opacity:0}16%,72%{opacity:.92}100%{opacity:0}}
@keyframes fy25-trace{0%{stroke-dashoffset:600}92%,100%{stroke-dashoffset:0}}
@keyframes fy25-magic-wash{0%{opacity:0;transform:scale(.5)}40%{opacity:.42}90%,100%{opacity:0;transform:scale(1.4)}}
@keyframes fy25-sheen-sweep{0%{opacity:0;transform:translateX(-120%) skewX(-10deg)}36%{opacity:.35}100%{opacity:0;transform:translateX(110%) skewX(-10deg)}}
@keyframes fy25-wings-release{0%{opacity:1}100%{opacity:0}}
/* Legibility and visual handoff for the invitation immediately after opening. */
.invite[data-opening-type="fairy"] .invite-hero-title:not(.model-capitulo):not(.model-midnight){
 background:radial-gradient(ellipse at 50% 13%,#b87ca653,transparent 38%),
            radial-gradient(ellipse at 75% 75%,#dcc08c12,transparent 40%),
            linear-gradient(148deg,#382744,#1c152b 55%,#0e0d19 100%)!important;
 color:#fff8ee!important
}
.invite[data-opening-type="fairy"] .invite-hero-title h1{color:#fffaef!important;text-shadow:0 4px 22px #07050d9c,0 0 45px #c69eaf5e}
.invite[data-opening-type="fairy"] .invite-hero-title .invite-kicker{color:#f4ddb6!important}
.opening-fairy.n3d-lite .fy25-radiance,.opening-fairy.n3d-lite .fy25-hair-glow,.opening-fairy.n3d-lite .fy25-wings{display:none!important}
@media(max-width:700px){
 .opening-fairy .fy25-radiance{width:min(87vw,350px);height:min(87vw,350px)}
 .opening-fairy .fy25-aurora{filter:blur(12px)}
 .opening-fairy .fy25-wing{filter:brightness(1.07)}
}
@media(prefers-reduced-motion:reduce){
 .opening-fairy .fy25-aurora,.opening-fairy .fy25-radiance,.opening-fairy .fy25-wings,
 .opening-fairy .fy25-wing,.opening-fairy .fy25-hair-glow,.opening-fairy .fy25-dress-light,
 .opening-fairy .fy-lift,.opening-fairy .fy-actor,.opening-fairy .fy25-trail,
 .opening-fairy .fy25-flash,.opening-fairy .fy25-sheen{animation:none!important;transition:none!important}
 .opening-fairy .fy25-wings,.opening-fairy .fy25-trail,.opening-fairy .fy25-sheen{display:none!important}
 .opening-fairy .fy-lift,.opening-fairy .fy-actor{transform:none!important}
}


#hero-opening .opening-niche[data-art-direction="v4"] .oc-heading{top:34px;font-size:7px}
#hero-opening .opening-niche[data-art-direction="v4"] .oc-frame{inset:12px!important}
#hero-opening .opening-niche[data-art-direction="v4"] .n3d-copy{bottom:74px;padding:0 16px;transform:none}
#hero-opening .opening-niche[data-art-direction="v4"] .n3d-copy strong{font-size:25px}
#hero-opening .opening-niche[data-art-direction="v4"] .n3d-copy em{display:none}
#hero-opening .opening-niche[data-art-direction="v4"] .opening-tip{bottom:25px!important;left:50%!important;right:auto;transform:translateX(-50%)!important;padding:10px 14px;font-size:7px}
#hero-opening .opening-skip{top:8px;right:8px;font-size:8px;min-height:30px;padding:6px 9px}

/* Studio 3D Extra Openings */
.opening-card3d.opening-niche{--n-bg:radial-gradient(ellipse at 50% 30%,#38261e 0,#16100d 58%,#080605 100%);--n-glow:#f3d28e;--n-ink:#fff8ec}
.oc-card3d-group,.oc-pp-group,.oc-fly-group,.oc-tun-group,.ws-group,.fa-group,.ct-group,.sd-group{position:absolute;inset:0;display:grid;place-items:center;transform-style:preserve-3d}
.oc-card3d-aura{position:absolute;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(243,210,142,.38),transparent 68%);filter:blur(16px)}
.oc-card3d-slab{position:relative;width:min(280px,74vw);min-height:330px;padding:30px 22px;border-radius:26px;background:linear-gradient(145deg,#2a1f1a,#15100d 62%,#33241b);border:1.5px solid rgba(243,210,142,.55);box-shadow:0 28px 70px rgba(0,0,0,.65),inset 0 0 32px rgba(243,210,142,.18);display:grid;place-items:center;text-align:center;transform:rotateY(-18deg) rotateX(10deg) translateZ(28px);animation:n3d-float 4.8s ease-in-out infinite}
.oc-card3d-bevel{position:absolute;inset:12px;border:1px solid rgba(243,210,142,.28);border-radius:18px;pointer-events:none}
.oc-card3d-mono{font:500 58px/1 var(--invite-font,Georgia);color:#f3d28e;text-shadow:0 4px 20px rgba(243,210,142,.45)}
.oc-card3d-title{font:500 clamp(22px,5vw,30px)/1.1 var(--invite-font,Georgia);color:#fff8ec}
.oc-card3d-date{letter-spacing:.2em;font-size:10px;color:#f3d28e;text-transform:uppercase}
.opening-card3d.is-open .oc-card3d-slab{transform:rotateY(0deg) rotateX(0deg) translateZ(220px) scale(1.25);opacity:0;transition:transform 1.4s cubic-bezier(.2,.8,.2,1),opacity 1.2s .2s}

.opening-photo-particles.opening-niche{--n-bg:radial-gradient(ellipse at 50% 32%,#231b3f 0,#0f0c20 58%,#06050e 100%);--n-glow:#d8b8ff;--n-ink:#f8f2ff}
.oc-pp-core{position:absolute;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(216,184,255,.38),transparent 68%);filter:blur(16px)}
.oc-pp-orb{position:absolute;width:10px;height:10px;border-radius:50%;background:#fff;box-shadow:0 0 14px #d8b8ff,0 0 28px #ffb8e6;transform:rotate(var(--ang)) translateX(var(--rad)) translateZ(24px);animation:fy-orbit-turn 9s linear infinite}
.oc-pp-badge{position:relative;width:190px;height:190px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.16),rgba(35,27,63,.78));border:1.5px solid rgba(216,184,255,.5);display:grid;place-content:center;gap:6px;text-align:center;padding:18px;transform:translateZ(38px);backdrop-filter:blur(8px)}
.oc-pp-badge b{font:500 38px/1 var(--invite-font,Georgia);color:#f3d28e}
.oc-pp-badge strong{font-size:15px;color:#fff}
.opening-photo-particles.is-open .oc-pp-orb{transform:rotate(var(--ang)) translateX(260px) translateZ(180px) scale(0);opacity:0;transition:all 1.4s cubic-bezier(.2,.8,.2,1)}
.opening-photo-particles.is-open .oc-pp-badge{transform:translateZ(200px) scale(1.35);opacity:0;transition:all 1.4s .1s cubic-bezier(.2,.8,.2,1)}

.opening-flythrough.opening-niche{--n-bg:radial-gradient(ellipse at 50% 32%,#2e2038 0,#130d1a 58%,#060409 100%);--n-glow:#f5cf90;--n-ink:#fff7eb}
.oc-fly-gate{position:absolute;width:calc(180px + var(--fk)*58px);height:calc(230px + var(--fk)*68px);border-radius:140px 140px 18px 18px;border:2px solid rgba(245,207,144,.46);box-shadow:0 0 32px rgba(245,207,144,.2),inset 0 0 24px rgba(245,207,144,.12);transform:translateZ(calc(var(--fk)*-70px))}
.oc-fly-center{position:relative;text-align:center;display:grid;gap:6px;transform:translateZ(30px)}
.oc-fly-center small{letter-spacing:.22em;font-size:9px;color:#f5cf90}
.oc-fly-center strong{font:500 clamp(24px,5vw,34px)/1.08 var(--invite-font,Georgia)}
.opening-flythrough.is-open .oc-fly-gate{transform:translateZ(420px) scale(1.8);opacity:0;transition:all 1.5s calc(var(--fk)*0.12s) cubic-bezier(.2,.8,.2,1)}

.opening-tunnel.opening-niche{--n-bg:radial-gradient(ellipse at 50% 34%,#18293a 0,#0a121c 58%,#04070c 100%);--n-glow:#93e5ff;--n-ink:#eefaff}
.oc-tun-ring{position:absolute;width:calc(120px + var(--tk)*56px);height:calc(120px + var(--tk)*56px);border-radius:50%;border:2px solid rgba(147,229,255,.48);box-shadow:0 0 28px rgba(147,229,255,.25);transform:translateZ(calc(var(--tk)*-55px))}
.oc-tun-core{position:relative;width:110px;height:110px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,rgba(147,229,255,.32),transparent 70%);font:500 36px var(--invite-font,Georgia);color:#fff;transform:translateZ(32px)}
.opening-tunnel.is-open .oc-tun-ring{transform:translateZ(380px) scale(2);opacity:0;transition:all 1.4s calc(var(--tk)*0.09s) cubic-bezier(.2,.8,.2,1)}

.opening-wax-scroll.opening-niche{--n-bg:radial-gradient(ellipse at 50% 30%,#3d2419 0,#1b0f0a 58%,#090504 100%);--n-glow:#f6d38b;--n-ink:#fff7e8}
.ws-aura{position:absolute;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(246,211,139,.38),transparent 68%);filter:blur(18px)}
.ws-parchment{position:relative;width:min(300px,78vw);padding:34px 24px;border-radius:14px;background:linear-gradient(165deg,#fff9eb,#f2e2c4 58%,#dec396);color:#3b2316;box-shadow:0 26px 70px rgba(0,0,0,.62),inset 0 0 0 2px rgba(180,130,60,.45);display:grid;gap:8px;text-align:center;transform:scaleY(.35) rotateX(20deg);transition:transform 1.1s cubic-bezier(.2,.8,.2,1)}
.ws-parchment small{letter-spacing:.2em;text-transform:uppercase;font-size:10px;color:#7c5230}
.ws-parchment strong{font:600 clamp(24px,5vw,34px)/1.05 var(--invite-font,Georgia);color:#2d180e}
.ws-rod{width:min(332px,84vw);height:14px;border-radius:99px;background:linear-gradient(90deg,#7a4f1d,#f2cf82 50%,#6e4516);box-shadow:0 8px 22px rgba(0,0,0,.5)}
.ws-seal{position:absolute;width:72px;height:72px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 30%,#d94b43,#8f1d18 65%,#4f0c09);color:#ffe7b8;box-shadow:0 10px 26px rgba(0,0,0,.55),inset 0 0 0 3px rgba(255,215,150,.4);font:600 22px var(--invite-font,Georgia);transform:translateZ(36px);transition:all .9s ease}
.opening-wax-scroll.is-open .ws-parchment{transform:scaleY(1.05) rotateX(0deg) translateZ(120px)}
.opening-wax-scroll.is-open .ws-seal{transform:translateZ(180px) scale(1.6);opacity:0}

.opening-floral-arch.opening-niche{--n-bg:radial-gradient(ellipse at 50% 28%,#253b2f 0,#111f17 58%,#070d0a 100%);--n-glow:#f5d6b8;--n-ink:#fff9f2}
.fa-sunbeam{position:absolute;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,rgba(255,224,186,.42),transparent 68%);filter:blur(16px)}
.fa-arch{position:absolute;width:290px;height:330px;border-radius:160px 160px 24px 24px;border:3px solid rgba(235,198,150,.55);box-shadow:0 0 50px rgba(235,198,150,.28),inset 0 0 40px rgba(120,180,140,.25);transition:all 1.3s cubic-bezier(.2,.8,.2,1)}
.fa-petal{position:absolute;left:50%;top:50%;width:20px;height:32px;margin:-16px 0 0 -10px;border-radius:50% 50% 50% 0;background:linear-gradient(145deg,#ffd9df,#d98a9c);transform:rotate(var(--ang)) translateY(-142px)}
.fa-card{position:relative;padding:26px 24px;border-radius:22px;background:rgba(255,250,244,.12);backdrop-filter:blur(10px);border:1px solid rgba(255,230,205,.35);text-align:center;display:grid;gap:6px;transform:translateZ(32px);transition:all 1.3s cubic-bezier(.2,.8,.2,1)}
.opening-floral-arch.is-open .fa-arch{transform:translateZ(260px) scale(1.5);opacity:0}
.opening-floral-arch.is-open .fa-card{transform:translateZ(180px) scale(1.2);opacity:0}

.opening-champagne-toast.opening-niche{--n-bg:radial-gradient(ellipse at 50% 28%,#3b2a1d 0,#18110b 58%,#080504 100%);--n-glow:#ffe29a;--n-ink:#fff9ec}
.ct-glow{position:absolute;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(255,222,145,.42),transparent 68%);filter:blur(18px)}
.ct-glass{position:absolute;width:54px;height:150px;display:grid;justify-items:center;transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.ct-glass b{width:52px;height:86px;border-radius:8px 8px 26px 26px;border:2px solid rgba(255,245,220,.75);background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(245,202,105,.58))}
.ct-glass i{width:4px;height:56px;background:rgba(255,245,220,.75);box-shadow:0 4px 0 14px rgba(255,245,220,.5)}
.ct-left{transform:translate3d(-44px,-18px,24px) rotate(-14deg)}
.ct-right{transform:translate3d(44px,-18px,24px) rotate(14deg)}
.ct-bub{position:absolute;left:50%;top:48%;width:8px;height:8px;border-radius:50%;background:#fff3c4;box-shadow:0 0 10px #ffd97d;transform:translateX(var(--bx));animation:n3d-rise-dust 2.2s var(--bd) ease-out infinite}
.ct-badge{position:relative;margin-top:160px;text-align:center;display:grid;gap:4px}
.opening-champagne-toast.is-open .ct-left{transform:translate3d(-14px,-38px,110px) rotate(6deg)}
.opening-champagne-toast.is-open .ct-right{transform:translate3d(14px,-38px,110px) rotate(-6deg)}

.opening-starlight-dome.opening-niche{--n-bg:radial-gradient(ellipse at 50% 30%,#141d3b 0,#090d1f 58%,#04060e 100%);--n-glow:#9ec5ff;--n-ink:#f2f7ff}
.sd-nebula{position:absolute;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,rgba(130,180,255,.36),rgba(190,140,255,.16) 48%,transparent 70%);filter:blur(18px)}
.sd-ring{position:absolute;width:calc(190px + var(--rk)*62px);height:calc(190px + var(--rk)*62px);border-radius:50%;border:1.5px dashed rgba(210,230,255,.48);box-shadow:0 0 24px rgba(140,190,255,.25);animation:fy-orbit-turn 16s linear infinite;transition:all 1.3s ease}
.sd-ring.r1{transform:rotateX(58deg) rotateY(22deg)}
.sd-ring.r2{transform:rotateX(-52deg) rotateY(-28deg)}
.sd-core{position:relative;padding:24px;text-align:center;display:grid;gap:6px;transform:translateZ(42px);transition:all 1.3s ease}
.opening-starlight-dome.is-open .sd-ring{transform:scale(1.85) translateZ(220px);opacity:0}
.opening-starlight-dome.is-open .sd-core{transform:translateZ(200px) scale(1.25);opacity:0}



@media(prefers-reduced-motion:reduce){.opening-niche *{animation-iteration-count:1!important}}


/* Vitrine da home: a abertura fica dentro do celular, não em tela cheia */
#hero-opening{--invite-sans:Inter,ui-sans-serif,system-ui,sans-serif;--invite-font:Georgia,'Times New Roman',serif;--invite-accent:#d778b7;--invite-primary:#2a1a24;position:absolute;inset:0;z-index:5}
.phone-screen{position:relative;overflow:hidden}
#hero-opening .opening-niche{position:absolute!important;inset:0!important;height:100%!important;width:100%}
#hero-opening .opening-niche .n3d-stage{--k:.62;top:42%}
#hero-opening .opening-niche .n3d-copy{bottom:46px;transform:scale(.8)}
#hero-opening .opening-niche .opening-tip{position:absolute!important;top:auto!important;bottom:58px!important;left:0;right:0;margin:0 auto;width:max-content;transform:none!important}
#hero-opening .opening-niche .n3d-stage{top:38%}
