
:root{--v2-gold:#d5a34d;--v2-bright:#f4d59a;--v2-ink:#0a0603;--v2-card:#150d08;--v2-line:#6b4821}
.jsjv2{background:#0a0603;color:#eadcc7;font-family:Arial,Helvetica,sans-serif;overflow:hidden}
.jsjv2 *{box-sizing:border-box}.jsjv2 a{transition:.25s ease}
.jsjv2-stage{position:relative;max-width:1750px;aspect-ratio:16/9;margin:0 auto;overflow:hidden;isolation:isolate;background:#050302;perspective:1800px}
.jsjv2-layer{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;user-select:none}
.jsjv2-open{z-index:1;opacity:0;transform:scale(1.07);filter:brightness(.45) saturate(.8)}
.jsjv2-rays{z-index:2;opacity:0;mix-blend-mode:screen}.jsjv2-glow{z-index:3;opacity:0;mix-blend-mode:screen}
.jsjv2-closed{z-index:4}.jsjv2-door-wrap{position:absolute;inset:0;z-index:5;transform-style:preserve-3d;transform-origin:86% 50%;pointer-events:none}.jsjv2-door{z-index:5}
.jsjv2-bars{z-index:6}.jsjv2-spokes{z-index:7;transform-origin:50.1302% 47.9492%;filter:drop-shadow(0 0 0 transparent);will-change:transform}.jsjv2-vignette{z-index:8}
.jsjv2-title{position:absolute;z-index:12;left:50%;bottom:11%;width:min(97%,1250px);transform:translateX(-50%);text-align:center;text-shadow:0 4px 18px #000}
.jsjv2-brand{font-weight:800;letter-spacing:.25em;text-transform:uppercase;color:#e0b467;font-size:clamp(.65rem,1.2vw,1.05rem)}
.jsjv2-title h1{margin:.15em 0;font:700 clamp(2.1rem,5.2vw,5.2rem)/.95 Georgia,serif;color:#f7dca8}
.jsjv2-title p{margin:.35rem 0;font-size:clamp(.9rem,1.25vw,1.15rem)}
.jsjv2-instruction{display:inline-block;margin-top:1.2rem;border:1px solid #d5a34d;border-radius:999px;padding:.6rem 1.1rem;background:#110905d9;text-transform:uppercase;letter-spacing:.10em;font-size:.88rem;font-weight:700}
.jsjv2-trigger{position:absolute;z-index:20;left:43.1%;top:38.3%;width:14%;height:20%;border:0;border-radius:50%;background:transparent;cursor:pointer}.jsjv2-trigger span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.jsjv2-trigger:before,.jsjv2-trigger:after{content:"";position:absolute;inset:18%;border-radius:50%;border:1px solid #ffc66b66;animation:v2pulse 2.2s infinite}.jsjv2-trigger:after{animation-delay:1.1s}
.jsjv2-inner{position:absolute;z-index:15;left:26%;top:24%;width:44%;display:grid;gap:.75rem;text-align:center;opacity:0;visibility:hidden;transform:translateY(35px) scale(.92);pointer-events:none}
.jsjv2-inner-kicker{margin:0;color:#f0c779;text-transform:uppercase;letter-spacing:.22em;font-size:.75rem}
.jsjv2-plaque{display:flex;min-height:112px;flex-direction:column;justify-content:center;border:2px solid #daa752;border-radius:12px;background:linear-gradient(180deg,#825022,#301707);box-shadow:0 18px 40px #000b,inset 0 1px #fff4,0 0 28px #f7af3c25;color:#fff1d3!important;text-decoration:none!important}
.jsjv2-plaque span{text-transform:uppercase;letter-spacing:.2em;font-size:.7rem}.jsjv2-plaque strong{font:700 clamp(1.45rem,3vw,2.65rem)/1 Georgia,serif}.jsjv2-plaque:hover{transform:translateY(-4px);box-shadow:0 22px 48px #000c,0 0 40px #ffbd5b66}
.jsjv2-puppy-link{color:#f3ce89!important;text-transform:uppercase;letter-spacing:.11em;font-weight:700}.jsjv2-reset{justify-self:center;border:1px solid #a97a3b;border-radius:999px;padding:.45rem .85rem;color:#f8e9cf;background:#130a05d9;cursor:pointer}
.jsjv2-sound{position:absolute;z-index:21;right:1rem;bottom:-1.2rem;border:1px solid #9e733a;border-radius:999px;padding:.42rem .75rem;color:#fff;background:#100804d9;cursor:pointer}
.jsjv2-progress{position:absolute;z-index:19;left:50%;bottom:2.1%;width:190px;height:2px;transform:translateX(-50%);background:#fff2;opacity:0}.jsjv2-progress i{display:block;width:0;height:100%;background:#e9bb65}
.jsjv2-dust{position:absolute;inset:0;z-index:14;pointer-events:none}.jsjv2-speck{position:absolute;width:4px;height:4px;border-radius:50%;background:#ffdc94;opacity:0;filter:blur(.4px)}
.jsjv2.is-opening .jsjv2-progress{opacity:1}.jsjv2.is-opening .jsjv2-progress i{animation:v2progress 3.3s linear forwards}
.jsjv2.is-opening .jsjv2-spokes{animation:v31wheel 3.8s cubic-bezier(.18,.62,.22,1) forwards}
.jsjv2.is-opening .jsjv2-bars{animation:v2bars .7s cubic-bezier(.5,0,.2,1) .8s forwards}
.jsjv2.is-opening .jsjv2-glow{animation:v2glow 2.2s ease .8s forwards}
.jsjv2.is-opening .jsjv2-closed{animation:v2closed .12s linear 3.50s forwards;transform:scale(1);filter:brightness(1) saturate(1.05)}.jsjv2.is-open .jsjv2-rays{opacity:.9}.jsjv2.is-open .jsjv2-glow{opacity:.8}.jsjv2.is-open .jsjv2-closed,.jsjv2.is-open .jsjv2-door-wrap,.jsjv2.is-open .jsjv2-bars,.jsjv2.is-open .jsjv2-spokes,.jsjv2.is-open .jsjv2-title{opacity:0}
.jsjv2.is-open .jsjv2-inner{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition:.7s ease}
.jsjv2-proof{display:grid;grid-template-columns:repeat(4,1fr);max-width:1280px;margin:auto;border:1px solid #4e3419;border-top:0;background:#100a06}.jsjv2-proof article{position:relative;padding:1.55rem;border-right:1px solid #4e3419}.jsjv2-proof article:last-child{border-right:0}.jsjv2-proof b{display:block;color:#6e4e2b;font-size:1.5rem}.jsjv2-proof strong{display:block;color:#e6bb70;margin:.15rem 0}.jsjv2-proof span{font-size:.84rem;color:#bcae99}
.jsjv2-section{max-width:1240px;margin:auto;padding:6rem 1.25rem}.jsjv2-intro{text-align:center;max-width:930px}.jsjv2-eyebrow,.jsjv2-heading span,.jsjv2-puppies span,.jsjv2-final>span{color:#d5a34d;text-transform:uppercase;letter-spacing:.2em;font-size:.75rem;font-weight:700}.jsjv2-section h2,.jsjv2-puppies h2,.jsjv2-final h2{font:700 clamp(2rem,4vw,4rem)/1.03 Georgia,serif;color:#f0d099;margin:.35rem 0 1rem}.jsjv2-intro p{font-size:1.1rem;line-height:1.75;color:#c9bca8}.jsjv2-text-link{color:#e6b968!important;font-weight:800}
.jsjv2-heading{display:flex;align-items:end;justify-content:space-between;gap:2rem;margin-bottom:2.2rem}.jsjv2-heading>p{max-width:480px;color:#bdae99;line-height:1.6}.jsjv2-heading.centered{justify-content:center;text-align:center}
.jsjv2-dog-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.jsjv2-dog-card{overflow:hidden;border:1px solid var(--v2-line);border-radius:18px;background:#130b07;box-shadow:0 24px 70px #0006}.jsjv2-dog-photo{aspect-ratio:4/3;background:radial-gradient(circle,#5b381b,#180c06);background-size:cover;background-position:center;display:grid;place-items:center;color:#cbb58f}.jsjv2-dog-copy{padding:1.7rem}.jsjv2-dog-copy small{color:#d5a34d;text-transform:uppercase;letter-spacing:.16em}.jsjv2-dog-copy h3{font:700 2.15rem Georgia,serif;color:#f3d69f;margin:.25rem 0}.jsjv2-dog-copy p{line-height:1.65;color:#c8baa5}.jsjv2-dog-copy a{color:#e5b967!important;font-weight:800}
.jsjv2-puppies{max-width:1240px;margin:0 auto 1rem;padding:3.5rem;border:1px solid #765025;border-radius:20px;background:linear-gradient(115deg,#2b190d,#100905);display:flex;align-items:center;justify-content:space-between;gap:2rem}.jsjv2-puppies p{color:#c3b49d}.jsjv2-puppies>a,.jsjv2-final a{display:inline-block;border-radius:999px;padding:.95rem 1.35rem;background:linear-gradient(#e7bc68,#9d6826);color:#170c05!important;text-decoration:none!important;font-weight:900;white-space:nowrap}
.jsjv2-testimonials{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}.jsjv2-testimonials blockquote{margin:0;padding:1.7rem;border:1px solid #5b3c1c;border-radius:15px;background:#130b07}.jsjv2-stars{color:#e4b35e;letter-spacing:.15em}.jsjv2-testimonials p{font:italic 1.04rem/1.7 Georgia,serif;color:#e5d7c2}.jsjv2-testimonials cite{color:#b89d77;font-style:normal;font-size:.82rem}
.jsjv2-commitment{border-top:1px solid #382412}.jsjv2-commit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}.jsjv2-commit-grid article{padding:1.8rem;border-top:3px solid #d5a34d;background:#120a06}.jsjv2-commit-grid b{font:700 1.45rem Georgia,serif;color:#edca88}.jsjv2-commit-grid p{line-height:1.65;color:#bfae98}
.jsjv2-final{text-align:center;padding:6rem 1.25rem;background:radial-gradient(circle at 50% 45%,#3b230f,#090502 68%);border-top:1px solid #6b4821}.jsjv2-final p{color:#c5b49d}.jsjv2-final div{display:flex;gap:.8rem;justify-content:center;margin-top:1.6rem}.jsjv2-final a.secondary{background:transparent;color:#e6bd75!important;border:1px solid #b8823f}
@keyframes v2pulse{0%{transform:scale(.75);opacity:.8}100%{transform:scale(1.65);opacity:0}}
@keyframes v2progress{to{width:100%}}@keyframes v31wheel{0%{transform:rotate(0deg);opacity:1}88%{transform:rotate(315deg);opacity:1}100%{transform:rotate(360deg);opacity:0}}10%{filter:drop-shadow(0 0 10px #ffbd54)}85%{transform:rotate(315deg);opacity:1}100%{transform:rotate(360deg);opacity:0;filter:drop-shadow(0 0 4px #ffbd54)}}18%{filter:drop-shadow(0 0 15px #ffbd54)}78%{transform:rotate(305deg);opacity:1}100%{transform:rotate(360deg);filter:drop-shadow(0 0 5px #ffbd54);opacity:0}}65%{filter:drop-shadow(0 0 24px #ffbd54)}100%{transform:rotate(1080deg);filter:drop-shadow(0 0 8px #ffbd54)}}@keyframes v2bars{to{transform:translateX(11%);opacity:0}}@keyframes v2glow{0%{opacity:0}45%{opacity:.95}100%{opacity:.7}}@keyframes v2closed{to{opacity:0}}@keyframes v2title{to{opacity:0;transform:translateX(-50%) translateY(20px)}}@keyframes v2door{0%{transform:rotateY(0) translateX(0);opacity:1}70%{transform:rotateY(-72deg) translateX(19%);opacity:1;filter:drop-shadow(30px 0 25px #000b)}100%{transform:rotateY(-90deg) translateX(36%);opacity:0}}@keyframes v2open{to{opacity:1;transform:scale(1);filter:brightness(1) saturate(1.05)}}@keyframes v2rays{to{opacity:.9}}@keyframes v2dust{0%{opacity:0;transform:translate(0,28px) scale(.5)}18%{opacity:.75}100%{opacity:0;transform:translate(var(--x),-210px) scale(1.7)}}
@media(max-width:850px){.jsjv2-stage{aspect-ratio:4/3}.jsjv2-title h1{font-size:clamp(1.8rem,7vw,3.1rem)}.jsjv2-inner{left:19%;width:57%;top:22%}.jsjv2-plaque{min-height:78px}.jsjv2-proof{grid-template-columns:1fr 1fr}.jsjv2-proof article:nth-child(2){border-right:0}.jsjv2-heading,.jsjv2-puppies{align-items:flex-start;flex-direction:column}.jsjv2-dog-grid,.jsjv2-testimonials,.jsjv2-commit-grid{grid-template-columns:1fr}}
@media(max-width:520px){.jsjv2-title{bottom:2.2%}.jsjv2-title p{display:none}.jsjv2-instruction{font-size:.6rem;padding:.45rem .7rem}.jsjv2-sound{font-size:.68rem}.jsjv2-inner{top:20%;gap:.45rem}.jsjv2-plaque{min-height:64px}.jsjv2-plaque strong{font-size:1.25rem}.jsjv2-proof article{padding:1rem}.jsjv2-section{padding:4rem 1rem}.jsjv2-puppies{padding:2rem 1.25rem;margin:0 1rem}.jsjv2-final div{flex-direction:column;align-items:center}}
@media(prefers-reduced-motion:reduce){.jsjv2-trigger:before,.jsjv2-trigger:after{animation:none}.jsjv2 *{animation-duration:.01ms!important;animation-delay:0s!important;transition-duration:.01ms!important}}


/* ===== JSJ V3.2 CORRECTIVE ANIMATION =====
   Restores the complete original closed vault, reveals the open-vault artwork,
   and synchronizes the trimmed user sound with the door movement. */

.jsjv2-open{
  z-index:1;
  opacity:0;
  transform:scale(1.025);
  filter:brightness(.72) saturate(.95);
}

.jsjv2-closed{
  z-index:4;
  opacity:1;
}

.jsjv2-spokes{
  z-index:7;
  transform-origin:50.1302% 47.9492%;
  will-change:transform,opacity;
}

.jsjv2.is-opening .jsjv2-progress i{
  animation:v32progress 5.25s linear forwards;
}

.jsjv2.is-opening .jsjv2-spokes{
  animation:v32wheel 2.05s cubic-bezier(.22,.62,.25,1) forwards;
}

.jsjv2.is-opening .jsjv2-bars{
  animation:v32bars .65s cubic-bezier(.5,0,.2,1) .9s forwards;
}

.jsjv2.is-opening .jsjv2-glow{
  animation:v32glow 3.6s ease 1.05s forwards;
}

.jsjv2.is-opening .jsjv2-rays{
  animation:v32rays 3.5s ease 1.25s forwards;
}

.jsjv2.is-opening .jsjv2-open{
  animation:v32open 3.9s ease 1.15s forwards;
}

.jsjv2.is-opening .jsjv2-closed{
  animation:v32closed .18s linear 1.42s forwards;
}

.jsjv2.is-opening .jsjv2-door-wrap{
  animation:v32door 3.75s cubic-bezier(.42,.04,.14,1) 1.35s forwards;
}

.jsjv2.is-opening .jsjv2-title{
  animation:v32title .45s ease .55s forwards;
}

.jsjv2.is-open .jsjv2-open{
  opacity:1;
  transform:scale(1);
  filter:brightness(1) saturate(1.05);
}

.jsjv2.is-open .jsjv2-rays{opacity:.82}
.jsjv2.is-open .jsjv2-glow{opacity:.58}

.jsjv2.is-open .jsjv2-closed,
.jsjv2.is-open .jsjv2-door-wrap,
.jsjv2.is-open .jsjv2-bars,
.jsjv2.is-open .jsjv2-spokes,
.jsjv2.is-open .jsjv2-title{
  opacity:0;
}

.jsjv2.is-open .jsjv2-inner{
  opacity:1;
  visibility:visible;
  transform:none;
  pointer-events:auto;
  transition:.65s ease;
}

/* Keep the links placed inside the visible vault opening instead of covering the scene. */
.jsjv2-inner{
  left:22%;
  top:25%;
  width:42%;
  max-height:68%;
  gap:.55rem;
}

.jsjv2-plaque{
  min-height:88px;
}

@keyframes v32progress{to{width:100%}}
@keyframes v32wheel{
  0%{transform:rotate(0deg);opacity:1}
  88%{transform:rotate(305deg);opacity:1}
  100%{transform:rotate(330deg);opacity:0}
}
@keyframes v32bars{
  to{transform:translateX(11%);opacity:0}
}
@keyframes v32glow{
  0%{opacity:0}
  38%{opacity:.9}
  100%{opacity:.58}
}
@keyframes v32rays{
  0%{opacity:0}
  100%{opacity:.82}
}
@keyframes v32open{
  0%{opacity:0;transform:scale(1.025);filter:brightness(.72) saturate(.95)}
  18%{opacity:.45}
  100%{opacity:1;transform:scale(1);filter:brightness(1) saturate(1.05)}
}
@keyframes v32closed{
  to{opacity:0}
}
@keyframes v32title{
  to{opacity:0;transform:translateX(-50%) translateY(18px)}
}
@keyframes v32door{
  0%{transform:rotateY(0deg) translateX(0);opacity:1}
  18%{transform:rotateY(-8deg) translateX(1%);opacity:1}
  72%{transform:rotateY(-70deg) translateX(18%);opacity:1;filter:drop-shadow(30px 0 25px #000b)}
  100%{transform:rotateY(-88deg) translateX(31%);opacity:0}
}

@media(max-width:850px){
  .jsjv2-inner{left:17%;top:23%;width:55%}
  .jsjv2-plaque{min-height:72px}
}


/* ===== JSJ V3.3 TIMING REFINEMENT ===== */

/* Much slower wheel movement to make the rotation feel heavier and reduce
   the visual effect of any remaining off-center artwork. */
.jsjv2.is-opening .jsjv2-spokes{
  animation:v33wheel 3.65s cubic-bezier(.16,.58,.22,1) forwards;
}

/* Bring the interior choices into view before the sound finishes. */
.jsjv2.is-opening .jsjv2-inner{
  animation:v33choices .7s ease 3.85s forwards;
  pointer-events:none;
}

@keyframes v33wheel{
  0%{
    transform:rotate(0deg);
    opacity:1;
  }
  86%{
    transform:rotate(250deg);
    opacity:1;
  }
  100%{
    transform:rotate(285deg);
    opacity:0;
  }
}

@keyframes v33choices{
  0%{
    opacity:0;
    visibility:visible;
    transform:translateY(18px) scale(.985);
  }
  100%{
    opacity:1;
    visibility:visible;
    transform:translateY(0) scale(1);
  }
}

/* Keep the links visible when the final open state is applied. */
.jsjv2.is-open .jsjv2-inner{
  opacity:1;
  visibility:visible;
  transform:none;
  pointer-events:auto;
}


/* ===== JSJ V3.4 FINAL VAULT-ONLY REFINEMENT ===== */

/* The rotating layer now includes the full spoke assembly and all end knobs. */
.jsjv2-spokes{
  transform-origin:50.0651% 46.875%;
  will-change:transform,opacity;
  backface-visibility:hidden;
}

/* Slow, heavy movement: only a partial turn over four seconds. */
.jsjv2.is-opening .jsjv2-spokes{
  animation:v34wheel 4.05s cubic-bezier(.18,.52,.22,1) forwards;
}

/* Do not begin opening the door until the rotating mechanism is gone. */
.jsjv2.is-opening .jsjv2-closed{
  animation:v34closed .16s linear 4.02s forwards;
}

.jsjv2.is-opening .jsjv2-door-wrap{
  animation:v34door 1.35s cubic-bezier(.42,.04,.14,1) 4.12s forwards;
}

.jsjv2.is-opening .jsjv2-open{
  animation:v34open 1.35s ease 4.08s forwards;
}

.jsjv2.is-opening .jsjv2-rays{
  animation:v34rays 1.3s ease 4.08s forwards;
}

.jsjv2.is-opening .jsjv2-glow{
  animation:v34glow 1.45s ease 3.75s forwards;
}

/* Links appear as the door reaches the open position, while the sound is finishing. */
.jsjv2.is-opening .jsjv2-inner{
  animation:v34choices .55s ease 4.72s forwards;
  pointer-events:none;
}

@keyframes v34wheel{
  0%{
    transform:rotate(0deg);
    opacity:1;
  }
  94%{
    transform:rotate(76deg);
    opacity:1;
  }
  100%{
    transform:rotate(80deg);
    opacity:0;
  }
}

@keyframes v34closed{
  to{opacity:0}
}

@keyframes v34door{
  0%{transform:rotateY(0deg) translateX(0);opacity:1}
  70%{transform:rotateY(-72deg) translateX(19%);opacity:1;filter:drop-shadow(30px 0 25px #000b)}
  100%{transform:rotateY(-90deg) translateX(36%);opacity:0}
}

@keyframes v34open{
  0%{opacity:0;transform:scale(1.025);filter:brightness(.72) saturate(.95)}
  100%{opacity:1;transform:scale(1);filter:brightness(1) saturate(1.05)}
}

@keyframes v34rays{
  to{opacity:.82}
}

@keyframes v34glow{
  0%{opacity:0}
  100%{opacity:.58}
}

@keyframes v34choices{
  0%{opacity:0;visibility:visible;transform:translateY(16px) scale(.985)}
  100%{opacity:1;visibility:visible;transform:none}
}

/* Vault only: no extra homepage content below the animated scene. */
.jsjv2{
  min-height:auto;
}


/* ===== JSJ V3.5 CENTER-HUB BREATHING CUE ===== */

/* A subtle visual cue centered over the clickable hub. */
.jsjv2-vault-stage::after{
  content:"";
  position:absolute;
  z-index:9;
  left:50.0651%;
  top:46.875%;
  width:9.2%;
  aspect-ratio:1;
  transform:translate(-50%,-50%);
  border-radius:50%;
  pointer-events:none;
  opacity:.18;
  background:
    radial-gradient(circle,
      rgba(255,211,126,.42) 0%,
      rgba(225,155,66,.18) 42%,
      rgba(255,181,76,0) 72%);
  box-shadow:
    0 0 10px rgba(255,195,98,.18),
    0 0 24px rgba(255,170,62,.10);
  animation:v35hubBreathe 3.6s ease-in-out infinite;
}

/* Stop the idle cue once the opening sequence begins or the vault is open. */
.jsjv2.is-opening .jsjv2-vault-stage::after,
.jsjv2.is-open .jsjv2-vault-stage::after{
  animation:none;
  opacity:0;
  transition:opacity .25s ease;
}

@keyframes v35hubBreathe{
  0%,100%{
    opacity:.10;
    transform:translate(-50%,-50%) scale(.96);
    filter:brightness(.95);
  }
  50%{
    opacity:.30;
    transform:translate(-50%,-50%) scale(1.045);
    filter:brightness(1.16);
  }
}

/* Keep the longer instruction readable on desktop and mobile. */
.jsjv2-trigger{
  white-space:normal;
  text-align:center;
  line-height:1.25;
  max-width:min(92%,560px);
}

@media(max-width:700px){
  .jsjv2-trigger{
    max-width:88%;
    font-size:clamp(.82rem,3.2vw,1rem);
  }

  .jsjv2-vault-stage::after{
    width:11.5%;
  }
}


/* ===== JSJ V3.7 COMPLETE THEME HOVER/FOCUS RESET =====
   Prevent Kadence and other themes from painting the transparent hub button blue. */
.jsjv2 button.jsjv2-trigger,
.jsjv2 button.jsjv2-trigger:hover,
.jsjv2 button.jsjv2-trigger:active,
.jsjv2 button.jsjv2-trigger:focus,
.jsjv2 button.jsjv2-trigger:focus-visible,
.jsjv2 button.jsjv2-trigger:visited {
  -webkit-appearance: none !important;
  appearance: none !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  color: transparent !important;
  filter: none !important;
  text-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
  opacity: 1;
  -webkit-tap-highlight-color: transparent !important;
}

/* Preserve only the subtle gold pulse rings created by the vault plugin. */
.jsjv2 button.jsjv2-trigger::before,
.jsjv2 button.jsjv2-trigger::after,
.jsjv2 button.jsjv2-trigger:hover::before,
.jsjv2 button.jsjv2-trigger:hover::after,
.jsjv2 button.jsjv2-trigger:focus::before,
.jsjv2 button.jsjv2-trigger:focus::after {
  background: transparent !important;
  box-shadow: none !important;
}

/* Remove the click target once the opening sequence begins. */
.jsjv2.is-opening button.jsjv2-trigger,
.jsjv2.is-open button.jsjv2-trigger {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* ===== JSJ V3.8 LOCKED ORIGINAL TITLE POSITION =====
   Anchor the complete title group to the vault artwork so Kadence or another
   theme cannot move the brand line onto the center wheel. */
.jsjv2 .jsjv2-stage > .jsjv2-title{
  position:absolute !important;
  z-index:12 !important;
  left:50% !important;
  right:auto !important;
  top:auto !important;
  bottom:11% !important;
  width:min(97%,1250px) !important;
  min-width:0 !important;
  max-width:1100px !important;
  margin:0 !important;
  padding:0 !important;
  display:block !important;
  transform:translateX(-50%) !important;
  text-align:center !important;
  line-height:normal !important;
  text-shadow:0 4px 18px #000 !important;
  pointer-events:none !important;
}

.jsjv2 .jsjv2-title > .jsjv2-brand{
  position:static !important;
  display:block !important;
  width:auto !important;
  margin:0 !important;
  padding:0 !important;
  transform:none !important;
  font-family:Arial,Helvetica,sans-serif !important;
  font-size:clamp(.65rem,1.2vw,1.05rem) !important;
  font-weight:800 !important;
  font-style:normal !important;
  line-height:1.2 !important;
  letter-spacing:.25em !important;
  text-transform:uppercase !important;
  text-align:center !important;
  color:#e0b467 !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}

.jsjv2 .jsjv2-title > h1{
  position:static !important;
  display:block !important;
  width:auto !important;
  margin:.15em 0 !important;
  padding:0 !important;
  transform:none !important;
  font-family:Georgia,'Times New Roman',serif !important;
  font-size:clamp(2.1rem,5.2vw,5.2rem) !important;
  font-weight:700 !important;
  font-style:normal !important;
  line-height:.95 !important;
  letter-spacing:normal !important;
  text-align:center !important;
  color:#f7dca8 !important;
  background:transparent !important;
}

.jsjv2 .jsjv2-title > p{
  position:static !important;
  display:block !important;
  width:auto !important;
  margin:.35rem 0 !important;
  padding:0 !important;
  transform:none !important;
  font-family:Arial,Helvetica,sans-serif !important;
  font-size:clamp(.9rem,1.25vw,1.15rem) !important;
  font-weight:400 !important;
  line-height:1.35 !important;
  text-align:center !important;
  color:#eadcc7 !important;
  background:transparent !important;
}

.jsjv2 .jsjv2-title > .jsjv2-instruction{
  position:static !important;
  display:inline-block !important;
  width:auto !important;
  margin:1rem 0 0 !important;
  transform:none !important;
}

/* Retain the original title exit animation while overriding theme transforms. */
.jsjv2.is-opening .jsjv2-stage > .jsjv2-title{
  animation:v38title .45s ease .55s forwards !important;
}

@keyframes v38title{
  to{
    opacity:0;
    transform:translateX(-50%) translateY(18px);
  }
}

@media(max-width:850px){
  .jsjv2 .jsjv2-title > h1{
    font-size:clamp(1.8rem,7vw,3.1rem) !important;
  }
}

@media(max-width:520px){
  .jsjv2 .jsjv2-stage > .jsjv2-title{
    bottom:2.2% !important;
  }
  .jsjv2 .jsjv2-title > p{
    display:none !important;
  }
}


/* ===== JSJ V3.8.2 VIEWPORT FIT REFINEMENT =====
   Keep the complete vault invitation visible on shorter desktop screens while
   preserving the original artwork, click target, and animation alignment. */
@media (min-width:851px) and (max-height:950px){
  .jsjv2 .jsjv2-stage{
    width:min(100%, calc((100vh - 55px) * 16 / 9));
    width:min(100%, calc((100svh - 55px) * 16 / 9));
  }
}

@media (max-width:520px){
  .jsjv2 .jsjv2-stage > .jsjv2-title{
    bottom:5% !important;
  }
}

/* ===== JSJ V3.8.6 ARTWORK-ONLY RESPONSIVE ZOOM =====
   Keeps the navigation, headline, instruction, progress and sound controls at
   their V3.8.4 size. Only the synchronized vault artwork, wheel hotspot and
   inside-vault menu are enlarged. The artwork is shifted downward to preserve
   the complete top of the circular wheel while reducing dark side walls. */
.jsjv2-artwork{
  position:absolute;
  inset:0;
  transform-origin:center center;
}

@media (min-width:1400px){
  .jsjv2 .jsjv2-artwork{
    transform:translateY(4.5%) scale(1.10);
  }
}

@media (min-width:1100px) and (max-width:1399px){
  .jsjv2 .jsjv2-artwork{
    transform:translateY(2.8%) scale(1.06);
  }
}

@media (max-width:1099px){
  .jsjv2 .jsjv2-artwork{
    transform:none;
  }
}

/* ===== JSJ V3.8.7 FINAL DESKTOP COMPOSITION POLISH =====
   Slightly enlarges and lowers only the synchronized vault artwork, while
   lifting the title group and tightening its instruction spacing. Controls,
   navigation and animation geometry remain unchanged. */
@media (min-width:1400px){
  .jsjv2 .jsjv2-artwork{
    transform:translateY(5.8%) scale(1.125);
  }
  .jsjv2 .jsjv2-stage > .jsjv2-title{
    bottom:calc(11% + 20px) !important;
  }
  .jsjv2 .jsjv2-title > .jsjv2-instruction{
    margin:.35rem 0 0 !important;
  }
}

@media (min-width:1100px) and (max-width:1399px){
  .jsjv2 .jsjv2-artwork{
    transform:translateY(3.8%) scale(1.08);
  }
  .jsjv2 .jsjv2-stage > .jsjv2-title{
    bottom:calc(11% + 14px) !important;
  }
  .jsjv2 .jsjv2-title > .jsjv2-instruction{
    margin:.45rem 0 0 !important;
  }
}


/* ===== JSJ V3.8.7.1 TEXT-ONLY FINAL POLISH =====
   Leaves the vault artwork, animation, navigation and controls unchanged.
   Raises the title group for clearer separation from the lower vault ring and
   keeps the instruction button visually grouped with the headline. */
@media (min-width:1400px){
  .jsjv2 .jsjv2-stage > .jsjv2-title{
    bottom:calc(11% + 40px) !important;
  }
  .jsjv2 .jsjv2-title > .jsjv2-instruction{
    margin:.15rem 0 0 !important;
  }
}

@media (min-width:1100px) and (max-width:1399px){
  .jsjv2 .jsjv2-stage > .jsjv2-title{
    bottom:calc(11% + 30px) !important;
  }
  .jsjv2 .jsjv2-title > .jsjv2-instruction{
    margin:.25rem 0 0 !important;
  }
}
