:root{--gob-wim-gold:#c7a86a;--gob-wim-gold-dark:#9d7a3d;--gob-wim-bg:rgba(255,255,255,.18)}
.gob-wedding-music{position:fixed;z-index:2147483000;display:flex;align-items:center;gap:6px;font-family:inherit;left:clamp(12px,var(--gob-music-x,96%),calc(100vw - 12px));right:auto;transform:translateX(-100%);max-width:calc(100vw - 24px);box-sizing:border-box}
.gob-wedding-music--bottom-right,.gob-wedding-music--bottom-left{bottom:18px;top:auto}.gob-wedding-music--top-right,.gob-wedding-music--top-left{top:18px;bottom:auto}
.gob-wedding-music__button{height:30px;border:1px solid var(--gob-wim-gold);border-radius:0;padding:0 10px;cursor:pointer;background:var(--gob-wim-bg);color:var(--gob-wim-gold-dark);box-shadow:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:11px;font-weight:400;line-height:1;letter-spacing:.12em;text-transform:uppercase;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);transition:background .2s ease,color .2s ease,border-color .2s ease}
.gob-wedding-music__button:hover,.gob-wedding-music__button:focus{background:rgba(255,255,255,.34);color:#7d5e25;border-color:#b99349;outline:0}
.gob-wedding-music__icon{width:auto;height:auto;border-radius:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:inherit;font-size:12px;line-height:1;transform:translateY(-1px)}
.gob-wedding-music[data-state="playing"] .gob-wedding-music__icon{animation:gobWeddingPulse 1.6s ease-in-out infinite}
.gob-wedding-music__volume{height:30px;border:1px solid var(--gob-wim-gold);border-radius:0;padding:0 8px;background:var(--gob-wim-bg);box-shadow:none;display:inline-flex;align-items:center;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.gob-wedding-music__volume input{width:76px;display:block;accent-color:var(--gob-wim-gold-dark)}
@keyframes gobWeddingPulse{0%,100%{opacity:1;transform:translateY(-1px) scale(1)}50%{opacity:.55;transform:translateY(-1px) scale(1.08)}}
@media (max-width:600px){.gob-wedding-music{position:fixed!important;display:flex!important;visibility:visible!important;opacity:1!important;left:clamp(8px,var(--gob-music-x,96%),calc(100vw - 8px))!important;right:auto!important;bottom:12px;top:auto;gap:5px;z-index:2147483000!important}.gob-wedding-music--top-right,.gob-wedding-music--top-left{top:12px;bottom:auto}.gob-wedding-music__button{height:28px;padding:0 8px;font-size:10px;letter-spacing:.1em;white-space:nowrap}.gob-wedding-music__volume{height:28px;padding:0 6px;display:inline-flex}.gob-wedding-music__volume input{width:58px}.gob-wedding-music__icon{font-size:11px}}
@media (max-width:380px){.gob-wedding-music{gap:4px}.gob-wedding-music__label{max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gob-wedding-music__volume input{width:46px}}

/* Envelope reveal transition - Version 1.2.1 */
body.gob-envelope-opening{overflow-x:hidden}
.gob-envelope-animating{will-change:transform,opacity;animation:gobEnvelopeMoveBack .95s cubic-bezier(.2,.8,.2,1) forwards;transform-origin:center center}
.gob-invitation-reveal{animation:gobInvitationFromEnvelope 1.25s cubic-bezier(.17,.84,.28,1) both;transform-origin:center top;will-change:transform,opacity,filter,clip-path}
.gob-envelope-light{position:fixed;left:50%;top:50%;width:18vmin;height:18vmin;pointer-events:none;z-index:99998;border-radius:999px;background:radial-gradient(circle,rgba(199,168,106,.28) 0%,rgba(255,255,255,.32) 40%,rgba(255,255,255,0) 72%);transform:translate(-50%,-50%) scale(.2);animation:gobEnvelopeGlow 1.15s ease-out forwards}
.gob-envelope-flap{animation:gobEnvelopeFlap .72s cubic-bezier(.2,.8,.2,1) forwards;transform-origin:center top;will-change:transform}
@keyframes gobEnvelopeMoveBack{0%{transform:translateY(0) scale(1);opacity:1;filter:none}45%{transform:translateY(-14px) scale(.96);opacity:.98;filter:drop-shadow(0 18px 28px rgba(157,122,61,.16))}100%{transform:translateY(-42px) scale(.86);opacity:0;filter:blur(2px)}}
@keyframes gobInvitationFromEnvelope{0%{opacity:0;transform:translateY(90px) scale(.72);filter:blur(8px);clip-path:polygon(50% 100%,50% 100%,50% 100%,50% 100%)}18%{opacity:1}58%{filter:blur(0);clip-path:polygon(0 22%,100% 22%,100% 100%,0 100%)}100%{opacity:1;transform:translateY(0) scale(1);filter:none;clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}}
@keyframes gobEnvelopeGlow{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}35%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(8)}}
@keyframes gobEnvelopeFlap{0%{transform:rotateX(0deg)}100%{transform:rotateX(74deg)}}
@media (prefers-reduced-motion:reduce){.gob-envelope-animating,.gob-invitation-reveal,.gob-envelope-light,.gob-envelope-flap{animation:none!important}.gob-invitation-reveal{opacity:1!important;transform:none!important;clip-path:none!important}}

/* Wedding envelope confetti burst - Version 1.2.1 - stronger overlay */
.gob-wedding-confetti{position:fixed!important;inset:0!important;pointer-events:none!important;z-index:2147483647!important;overflow:hidden!important}
.gob-wedding-confetti__piece{position:absolute!important;display:block;font-size:var(--gob-s);line-height:1;color:var(--gob-wim-gold-dark);text-shadow:0 2px 8px rgba(157,122,61,.18);transform:translate(-50%,-50%) scale(.2);opacity:0;animation:gobWeddingConfettiFly cubic-bezier(.18,.78,.25,1) forwards;will-change:transform,opacity}
.gob-wedding-confetti__piece--0{color:#9d7a3d}.gob-wedding-confetti__piece--1{color:#c7a86a}.gob-wedding-confetti__piece--2{color:#d9c79d}.gob-wedding-confetti__piece--3{color:#b88a8a}.gob-wedding-confetti__piece--4{color:#f7efe3}
.gob-wedding-confetti__ribbon{position:absolute;width:18px;height:18px;border:1px solid rgba(199,168,106,.75);border-radius:999px;transform:translate(-50%,-50%) scale(.2);animation:gobWeddingRingPulse 1.1s ease-out forwards;box-shadow:0 0 0 8px rgba(199,168,106,.08),0 0 52px rgba(199,168,106,.26)}
.gob-envelope-animating:after{content:'Click to open';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:rgba(157,122,61,.72);opacity:0;animation:gobEnvelopeTextSpark 1.15s ease-out forwards;pointer-events:none;white-space:nowrap}
@keyframes gobWeddingConfettiFly{0%{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(0deg)}12%{opacity:1}72%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--gob-x)),calc(-50% + var(--gob-y))) scale(1) rotate(var(--gob-r))}}
@keyframes gobWeddingRingPulse{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}28%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(11)}}
@keyframes gobEnvelopeTextSpark{0%,100%{opacity:0;letter-spacing:.35em}40%{opacity:.9;letter-spacing:.22em}}
@media (max-width:600px){.gob-wedding-confetti__piece{font-size:calc(var(--gob-s) * .82)}}
@media (prefers-reduced-motion:reduce){.gob-wedding-confetti{display:none!important}}


/* Reliability fixes - Version 1.2.1 */
.gob-wedding-music{visibility:visible!important;opacity:1!important}
.gob-wedding-music__button,.gob-wedding-music__volume{font-family:inherit!important}
.gob-wedding-veil-sweep{position:fixed;inset:-20%;background:linear-gradient(115deg,rgba(255,255,255,0) 0%,rgba(255,250,240,.28) 42%,rgba(255,255,255,.62) 50%,rgba(255,250,240,.25) 58%,rgba(255,255,255,0) 100%);transform:translateX(-115%) rotate(2deg);animation:gobWeddingVeilSweep 1.35s ease-out forwards;pointer-events:none}
@keyframes gobWeddingVeilSweep{0%{opacity:0;transform:translateX(-115%) rotate(2deg)}25%{opacity:.95}100%{opacity:0;transform:translateX(115%) rotate(2deg)}}
.gob-envelope-light{transform:translate(-50%,-50%) scale(.2)}
.gob-envelope-opening .gob-wedding-confetti{display:block!important}

/* Mobile visibility and horizontal positioning - Version 1.2.1 */
body .gob-wedding-music{pointer-events:auto!important}
body .gob-wedding-music *{box-sizing:border-box}


/* Version 1.2.1: simple on/off only + separate mobile horizontal position */
.gob-wedding-music__volume{display:none!important}
@media (max-width:600px){.gob-wedding-music{left:clamp(8px,var(--gob-music-x-mobile,var(--gob-music-x,50%)),calc(100vw - 8px))!important}.gob-wedding-music__volume{display:none!important}}


/* Version 1.2.1: keep music button pinned above the invitation while scrolling */
html body .gob-wedding-music{
  position:fixed!important;
  z-index:2147483646!important;
  will-change:transform!important;
  contain:layout style!important;
}
html body .gob-wedding-music--top-left,
html body .gob-wedding-music--top-right{
  top:calc(12px + env(safe-area-inset-top,0px))!important;
  bottom:auto!important;
}
html body .gob-wedding-music--bottom-left,
html body .gob-wedding-music--bottom-right{
  bottom:calc(12px + env(safe-area-inset-bottom,0px))!important;
  top:auto!important;
}
html body.admin-bar .gob-wedding-music--top-left,
html body.admin-bar .gob-wedding-music--top-right{
  top:calc(44px + env(safe-area-inset-top,0px))!important;
}
@media (min-width:783px){html body.admin-bar .gob-wedding-music--top-left,html body.admin-bar .gob-wedding-music--top-right{top:calc(44px + env(safe-area-inset-top,0px))!important}}
@media (max-width:782px){html body.admin-bar .gob-wedding-music--top-left,html body.admin-bar .gob-wedding-music--top-right{top:calc(58px + env(safe-area-inset-top,0px))!important}}


/* Version 1.2.1: slider controls real left-to-right placement */
html body .gob-wedding-music{
  left:var(--gob-music-x,14%)!important;
  right:auto!important;
  transform:none!important;
}
@media (max-width:600px){
  html body .gob-wedding-music{
    left:var(--gob-music-x-mobile,var(--gob-music-x,30%))!important;
    right:auto!important;
    transform:none!important;
  }
}


/* Version 1.2.1: hard override for fixed viewport button placement */
html body .gob-wedding-music{
  position:fixed!important;
  right:auto!important;
  transform:none!important;
  margin:0!important;
  float:none!important;
}
html body .gob-wedding-music__volume{display:none!important}

/* Version 1.2.3: final hard-position fix for desktop + mobile */
html body .gob-wedding-music,
html body .gob-wedding-music.gob-wedding-music--top-right,
html body .gob-wedding-music.gob-wedding-music--top-left,
html body .gob-wedding-music.gob-wedding-music--bottom-right,
html body .gob-wedding-music.gob-wedding-music--bottom-left{
  position:fixed!important;
  right:auto!important;
  transform:none!important;
  margin:0!important;
  float:none!important;
  z-index:2147483646!important;
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
  max-width:calc(100vw - 20px)!important;
}
html body .gob-wedding-music__volume{display:none!important}


/* Version 1.2.3: JS controls viewport-pinned coordinates with absolute fallback */
html body .gob-wedding-music{
  position:absolute!important;
  right:auto!important;
  bottom:auto!important;
  transform:none!important;
  z-index:2147483646!important;
}
