/* DOLORES 35 · 1991–2026 — decorative only, no layout ownership. */
:root{
  --vivi35-gold-1:#8f6728;
  --vivi35-gold-2:#d6ad55;
  --vivi35-gold-3:#f6dfa0;
  --vivi35-cream:#fffaf0;
}

.vivi35-fx-layer,
.vivi35-intro,
.vivi35-cart-burst{
  position:fixed;
  inset:0;
  pointer-events:none !important;
  z-index:999970;
  overflow:hidden;
}

.vivi35-fx-layer{z-index:9990}
.vivi35-intro{z-index:999980;display:grid;place-items:center}

/* The shop UI already has a single flying dot. During the anniversary burst we replace that dot instead of stacking two particle effects. */
body.dolores-35-suppress-cart-pop .dlsu-cart-pop{display:none !important}

.vivi35-spark{
  position:absolute;
  top:-28px;
  width:var(--vivi35-size,5px);
  height:var(--vivi35-size,5px);
  border-radius:999px;
  opacity:0;
  background:radial-gradient(circle at 34% 30%,#fff 0 10%,#fff8df 18%,var(--vivi35-gold-3) 34%,var(--vivi35-gold-2) 66%,rgba(143,103,40,.16) 100%);
  box-shadow:0 0 calc(var(--vivi35-size,5px) * 2.8) rgba(214,173,85,.54);
  animation:vivi35-fall var(--vivi35-duration,12s) linear var(--vivi35-delay,0s) infinite;
  will-change:transform,opacity;
}

.vivi35-spark:nth-child(3n){border-radius:1px;transform:rotate(45deg)}
.vivi35-spark:nth-child(5n){
  background:linear-gradient(135deg,rgba(255,255,255,.98),#f7dfa1 44%,#c99535 100%);
  box-shadow:0 0 calc(var(--vivi35-size,5px) * 3.4) rgba(231,193,105,.64);
}

@keyframes vivi35-fall{
  0%{transform:translate3d(0,-4vh,0) rotate(0deg) scale(.72);opacity:0}
  8%{opacity:.68}
  48%{opacity:.46}
  78%{opacity:.28}
  100%{transform:translate3d(var(--vivi35-drift,20px),108vh,0) rotate(300deg) scale(1.08);opacity:0}
}

.vivi35-intro::before{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 50% 47%,rgba(255,251,242,.24) 0,rgba(255,250,239,.10) 28%,transparent 62%);
  animation:vivi35-backdrop 4.35s ease-out both;
}
.vivi35-intro__halo{
  position:absolute;
  width:min(570px,90vw);
  aspect-ratio:1;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,243,207,.52) 0,rgba(238,204,123,.25) 31%,rgba(214,173,85,.10) 49%,transparent 71%);
  filter:blur(1px);
  animation:vivi35-halo 4.2s cubic-bezier(.2,.7,.15,1) both;
}

.vivi35-intro__mark{
  position:relative;
  display:grid;
  justify-items:center;
  min-width:min(390px,82vw);
  padding:30px 40px 28px;
  border:1px solid rgba(172,126,50,.24);
  border-radius:32px;
  background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(255,249,235,.86));
  box-shadow:0 28px 80px rgba(69,47,18,.16),0 3px 18px rgba(199,151,62,.12),inset 0 0 0 6px rgba(255,255,255,.25);
  -webkit-backdrop-filter:blur(20px) saturate(118%);
  backdrop-filter:blur(20px) saturate(118%);
  transform:translateY(-2vh);
  animation:vivi35-mark-in 4.2s cubic-bezier(.18,.84,.2,1) both;
}
.vivi35-intro__mark::before{
  content:"";
  position:absolute;
  inset:-1px;
  border-radius:inherit;
  pointer-events:none;
  background:linear-gradient(112deg,transparent 15%,rgba(255,244,205,.42) 43%,rgba(255,255,255,.72) 50%,rgba(224,184,96,.20) 58%,transparent 80%);
  background-size:220% 100%;
  opacity:.55;
  mix-blend-mode:screen;
  animation:vivi35-card-sheen 1.7s .12s ease-out both;
}
.vivi35-intro__brand{
  font:700 clamp(11px,1.1vw,14px)/1.1 Arial,sans-serif;
  letter-spacing:.42em;
  color:#59401f;
  margin-left:.42em;
}
.vivi35-intro__number{
  margin-top:2px;
  font:600 clamp(88px,13vw,172px)/.9 Georgia,"Times New Roman",serif;
  letter-spacing:-.07em;
  background:linear-gradient(118deg,#745020 5%,#c69a42 32%,#fff0bd 51%,#b17d28 69%,#795522 96%);
  background-size:210% 100%;
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  filter:drop-shadow(0 8px 22px rgba(121,82,27,.22));
  animation:vivi35-gold-sweep 1.7s .1s ease-out both;
}
.vivi35-intro__years{font:700 clamp(11px,1.2vw,15px)/1.2 Arial,sans-serif;letter-spacing:.19em;color:#413722}
.vivi35-intro__subtitle{margin-top:9px;font:600 clamp(11px,1.1vw,14px)/1.3 Arial,sans-serif;letter-spacing:.05em;color:#665434}

.vivi35-pop{
  position:fixed;
  left:var(--x,50vw);
  top:var(--y,50vh);
  width:var(--s,6px);
  height:var(--s,6px);
  border-radius:50%;
  pointer-events:none;
  background:radial-gradient(circle at 35% 30%,#fff 0 9%,#fff5d2 20%,#f1d27e 39%,#d1a64c 68%,#896022 100%);
  box-shadow:0 0 15px rgba(204,158,66,.58),0 0 5px rgba(255,246,213,.8);
  transform:translate(-50%,-50%);
  animation:vivi35-pop var(--dur,1.25s) cubic-bezier(.12,.65,.23,1) var(--delay,0s) both;
  will-change:transform,opacity;
}
.vivi35-pop.vivi35-pop--diamond{border-radius:1px;transform:translate(-50%,-50%) rotate(45deg)}
.vivi35-pop.vivi35-pop--bright{background:linear-gradient(135deg,#fff 0,#fff3c2 28%,#e5bd62 62%,#a97022 100%);box-shadow:0 0 20px rgba(229,189,98,.8),0 0 7px rgba(255,255,255,.9)}

@keyframes vivi35-pop{
  0%{transform:translate(-50%,-50%) scale(.2);opacity:0}
  12%{opacity:.95}
  100%{transform:translate(calc(-50% + var(--tx,0px)),calc(-50% + var(--ty,0px))) rotate(var(--rot,140deg)) scale(.1);opacity:0}
}
@keyframes vivi35-mark-in{
  0%{opacity:0;transform:translateY(7px) scale(.95);filter:blur(1.5px)}
  14%{opacity:1;transform:translateY(-2vh) scale(1);filter:blur(0)}
  78%{opacity:1;transform:translateY(-2vh) scale(1);filter:blur(0)}
  100%{opacity:0;transform:translateY(-4vh) scale(1.015);filter:blur(.4px)}
}
@keyframes vivi35-halo{
  0%{opacity:0;transform:scale(.72)}
  15%{opacity:1;transform:scale(1)}
  79%{opacity:.92;transform:scale(1.05)}
  100%{opacity:0;transform:scale(1.18)}
}
@keyframes vivi35-backdrop{0%{opacity:0}12%{opacity:1}80%{opacity:1}100%{opacity:0}}
@keyframes vivi35-card-sheen{from{background-position:130% 0}to{background-position:-80% 0}}
@keyframes vivi35-gold-sweep{from{background-position:115% 0}to{background-position:-65% 0}}

.vivi35-badge{
  --vivi35-badge-size:116px;
  position:relative;
  display:grid;
  width:var(--vivi35-badge-size);
  min-height:var(--vivi35-badge-size);
  box-sizing:border-box;
  place-content:center;
  justify-items:center;
  padding:13px 10px 12px;
  border:1px solid rgba(160,118,46,.28);
  border-radius:50%;
  color:#3f3525;
  text-decoration:none !important;
  background:linear-gradient(145deg,rgba(255,255,255,.94),rgba(255,249,236,.91));
  box-shadow:0 12px 36px rgba(73,50,18,.13),inset 0 0 0 5px rgba(240,215,158,.12);
  -webkit-backdrop-filter:blur(14px);
  backdrop-filter:blur(14px);
  isolation:isolate;
  overflow:hidden;
}
.vivi35-badge--floating{
  position:fixed;
  bottom:142px;
  z-index:9995;
  animation:vivi35-badge-enter .9s .6s cubic-bezier(.2,.8,.2,1) backwards;
}
.vivi35-badge--right{right:22px}.vivi35-badge--left{left:22px}
.vivi35-badge__glow{position:absolute;inset:-40%;z-index:-1;background:conic-gradient(from 40deg,transparent 0 28%,rgba(236,201,117,.36) 36%,transparent 44% 73%,rgba(193,145,56,.18) 80%,transparent 88%);animation:vivi35-badge-spin 9s linear infinite}
.vivi35-badge__brand{font:700 8px/1 Arial,sans-serif;letter-spacing:.29em;margin-left:.29em;color:#72572b}
.vivi35-badge__number{font:600 45px/.89 Georgia,"Times New Roman",serif;letter-spacing:-.06em;background:linear-gradient(120deg,#805b22,#dfbd68 48%,#8d6325);-webkit-background-clip:text;background-clip:text;color:transparent}
.vivi35-badge__years{margin-top:2px;font:700 7px/1 Arial,sans-serif;letter-spacing:.12em;color:#4e4332}
.vivi35-badge__subtitle{margin-top:5px;font:500 7px/1.1 Arial,sans-serif;color:#78684e;white-space:nowrap}
a.vivi35-badge:hover{transform:translateY(-3px);box-shadow:0 17px 42px rgba(73,50,18,.17),inset 0 0 0 5px rgba(240,215,158,.15)}
.vivi35-badge--floating:not(a){pointer-events:none}

.vivi35-badge--inline{--vivi35-badge-size:148px;margin:0 auto}.vivi35-badge--inline .vivi35-badge__number{font-size:60px}.vivi35-badge--inline .vivi35-badge__brand{font-size:9px}.vivi35-badge--inline .vivi35-badge__subtitle{font-size:8px}

@keyframes vivi35-badge-spin{to{transform:rotate(360deg)}}
@keyframes vivi35-badge-enter{from{opacity:0;transform:translateY(18px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}

@media(max-width:768px){
  .vivi35-badge--floating{--vivi35-badge-size:86px;bottom:126px;padding:10px 7px}
  .vivi35-badge--right{right:12px}.vivi35-badge--left{left:12px}
  body.single-product .vivi35-badge--floating{bottom:186px}
  .vivi35-intro__mark{min-width:min(330px,84vw);padding:25px 24px 23px;border-radius:26px}
  .vivi35-intro__halo{width:min(480px,104vw)}
  .vivi35-badge__number{font-size:34px}.vivi35-badge__brand{font-size:6px}.vivi35-badge__years{font-size:5.5px}.vivi35-badge__subtitle{font-size:5.5px;margin-top:4px}
  body.dolores-35-hide-mobile .vivi35-badge--floating{display:none !important}
}

@media(prefers-reduced-motion:reduce){
  .vivi35-fx-layer,.vivi35-intro,.vivi35-cart-burst{display:none !important}
  .vivi35-badge,.vivi35-badge__glow{animation:none !important;transition:none !important}
}
