/* Playvite invitation kit: shared resets and motion primitives. Themes live in each page. */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.locked{overflow:hidden;height:100svh}
img{max-width:100%;display:block}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
[hidden]{display:none!important}

/* Scroll reveals */
.rv{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.2,.8,.2,1),transform .9s cubic-bezier(.2,.8,.2,1)}
.rv.in{opacity:1;transform:none}
.rv.d1{transition-delay:.1s}.rv.d2{transition-delay:.2s}.rv.d3{transition-delay:.3s}.rv.d4{transition-delay:.4s}

/* Gate leaves */
.gate{position:fixed;inset:0;z-index:60;transition:opacity 1s ease,visibility 1s ease,transform 1s ease}
.gate.gone{opacity:0;visibility:hidden;pointer-events:none}

/* Toast */
.pv-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,40px);opacity:0;z-index:999;
  background:rgba(20,20,20,.92);color:#fff;font:500 14px/1.3 system-ui,sans-serif;padding:12px 18px;border-radius:999px;
  transition:all .35s ease;pointer-events:none;max-width:calc(100% - 32px);text-align:center}
.pv-toast.show{opacity:1;transform:translate(-50%,0)}

/* Floating music toggle */
.pv-music{position:fixed;right:14px;bottom:14px;z-index:40;width:46px;height:46px;border-radius:50%;
  display:grid;place-items:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.pv-music svg{width:20px;height:20px}
.pv-music .bars{display:none;gap:2px;align-items:flex-end;height:16px}
.pv-music .bars i{width:3px;background:currentColor;border-radius:2px;animation:pvbar .9s ease-in-out infinite}
.pv-music .bars i:nth-child(2){animation-delay:.2s}.pv-music .bars i:nth-child(3){animation-delay:.4s}
.pv-music.on .bars{display:flex}.pv-music.on svg{display:none}
@keyframes pvbar{0%,100%{height:4px}50%{height:16px}}

.pv-made{display:block;text-align:center;font:500 11px/1 system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;opacity:.45;padding:28px 0 40px}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .rv{opacity:1;transform:none}
}
