/* decor_swaps.css — cross-vibe DECOR library (GENERATED). vibedecor-20260718
   Each item scoped under .vkd-<key>; injected by assets/vibe_decor.js. */

/* ===== deco-frame (deco, slot frame) ===== */
.vkd-deco-frame .dco-pilaster { position: absolute; top: 6%; bottom: 6%; width: 16px; z-index: 1; opacity: 0.5; background: repeating-linear-gradient(0deg, transparent 0 14px, rgba(217,185,92,0.55) 14px 15px, transparent 15px 16px); }
.vkd-deco-frame .dco-pilaster::before { content: ''; position: absolute; inset: 0; background: repeating-linear-gradient(180deg, transparent 0 26px, rgba(217,185,92,0.4) 26px 30px); -webkit-mask: repeating-linear-gradient(180deg, #000 0 15px, transparent 15px 30px); mask: repeating-linear-gradient(180deg, #000 0 15px, transparent 15px 30px); animation: dco-shim 5s linear infinite; }
.vkd-deco-frame .dco-pilaster--l { left: clamp(14px,3vw,30px); }
.vkd-deco-frame .dco-pilaster--r { right: clamp(14px,3vw,30px); }
@media (max-width: 768px) {
  .vkd-deco-frame .dco-pilaster { display: none; }
}

/* ===== deco-sun (deco, slot emblem) ===== */
.vkd-deco-sun .dco-medallion { position: relative; width: clamp(120px, 22vw, 190px); aspect-ratio: 1; margin: 0 auto clamp(10px,2vw,18px); display: grid; place-items: center; }
.vkd-deco-sun .dco-sun { position: absolute; inset: 0; border-radius: 50%; background: repeating-conic-gradient(from 0deg, var(--gold, #d9b95c) 0deg 4deg, transparent 4deg 11deg); -webkit-mask: radial-gradient(circle, transparent 26%, #000 27%, #000 100%); mask: radial-gradient(circle, transparent 26%, #000 27%, #000 100%); opacity: 0.85; animation: dco-spin 26s linear infinite; }
.vkd-deco-sun .dco-medallion::after { content: ''; position: absolute; inset: 20%; border-radius: 50%; border: 2px solid var(--gold, #d9b95c); box-shadow: 0 0 24px rgba(217,185,92,0.5); }
@media (prefers-reduced-motion: reduce) {
  .vkd-deco-sun .dco-sun, .vibe-deco .dco-title, .vibe-deco .dco-pilaster::before, .vibe-deco .dco-kicker span, .vibe-deco .vx-pay, .vibe-deco .dco-sticky { animation: none; }
}

/* ===== disco-ball (discotheque, slot emblem) ===== */
.vkd-disco-ball .disco-rig { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; padding-top: 4px; }
.vkd-disco-ball .disco-cord { width: 2px; height: clamp(20px, 4vw, 40px); background: linear-gradient(#8a7fb0, transparent); }
.vkd-disco-ball .disco-ball { position: relative; width: clamp(80px, 14vw, 128px); aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 38% 32%, #ffffff 0%, #cbb7e8 8%, #7c6aa0 55%, #2a1c47 100%); box-shadow: 0 0 40px rgba(245,196,81,0.5), 0 0 90px rgba(255,79,163,0.35); overflow: hidden; animation: disco-spin 7s linear infinite; }
.vkd-disco-ball .disco-ball__facets { position: absolute; inset: 0; border-radius: 50%; background: repeating-linear-gradient(90deg, rgba(255,255,255,0.16) 0 8px, rgba(0,0,0,0.14) 8px 16px), repeating-linear-gradient(0deg, rgba(255,255,255,0.12) 0 8px, rgba(0,0,0,0.14) 8px 16px); mix-blend-mode: overlay; }
.vkd-disco-ball .disco-ball__shine { position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(from 0deg, transparent, rgba(255,255,255,0.5) 20deg, transparent 60deg, transparent 200deg, rgba(245,196,81,0.4) 250deg, transparent 300deg); animation: disco-spin 4s linear infinite reverse; }

/* ===== forest-leaves (forest, slot scene) ===== */
.vkd-forest-leaves .fst-leaves { position: fixed; inset: 0; z-index: 0; pointer-events: none; }
.vkd-forest-leaves .fst-leaves span { position: absolute; top: -6%; width: 12px; height: 12px; border-radius: 0 100% 0 100%; background: var(--sage, #8aa97a); opacity: 0.35; animation: fst-fall linear infinite; }
.vkd-forest-leaves .fst-leaves span:nth-child(1) { left: 8%; animation-duration: 13s; animation-delay: 0s; background: var(--gold, #d4a056); }
.vkd-forest-leaves .fst-leaves span:nth-child(2) { left: 24%; animation-duration: 17s; animation-delay: 3s; }
.vkd-forest-leaves .fst-leaves span:nth-child(3) { left: 46%; animation-duration: 15s; animation-delay: 6s; background: var(--gold, #d4a056); }
.vkd-forest-leaves .fst-leaves span:nth-child(4) { left: 63%; animation-duration: 19s; animation-delay: 2s; }
.vkd-forest-leaves .fst-leaves span:nth-child(5) { left: 78%; animation-duration: 14s; animation-delay: 8s; }
.vkd-forest-leaves .fst-leaves span:nth-child(6) { left: 91%; animation-duration: 16s; animation-delay: 5s; background: var(--gold, #d4a056); }
@media (prefers-reduced-motion: reduce) {
  .vkd-forest-leaves .fst-leaves span, .vibe-forest .fst-node { animation: none; }
}

/* ===== disco-lights (discotheque, slot scene) ===== */
.vkd-disco-lights .disco-floor { position: fixed; left: -20%; right: -20%; bottom: 0; height: 46vh; z-index: 0; pointer-events: none; background-image: linear-gradient(rgba(245,196,81,0.14) 1px, transparent 1px), linear-gradient(90deg, rgba(245,196,81,0.14) 1px, transparent 1px); background-size: 46px 46px; transform: perspective(340px) rotateX(62deg); transform-origin: bottom center; -webkit-mask: linear-gradient(to top, #000 0%, transparent 92%); mask: linear-gradient(to top, #000 0%, transparent 92%); animation: disco-floorpulse 5s ease-in-out infinite; }
.vkd-disco-lights .disco-dots { position: fixed; inset: 0; z-index: 0; pointer-events: none; opacity: 0.55; background-image: radial-gradient(circle, rgba(245,196,81,0.9) 0 3px, transparent 4px), radial-gradient(circle, rgba(255,79,163,0.85) 0 2px, transparent 3px), radial-gradient(circle, rgba(85,230,255,0.85) 0 2px, transparent 3px), radial-gradient(circle, rgba(255,255,255,0.8) 0 2px, transparent 3px); background-size: 180px 180px, 140px 140px, 220px 220px, 160px 160px; background-position: 0 0, 40px 80px, 120px 30px, 90px 120px; animation: disco-dots 12s linear infinite; }
.vkd-disco-lights .disco-beams { position: fixed; top: 0; left: 50%; width: 200vmax; height: 200vmax; z-index: 0; transform: translate(-50%, -60%); pointer-events: none; opacity: 0.4; background: repeating-conic-gradient(from 0deg at 50% 50%, transparent 0deg 16deg, rgba(245,196,81,0.10) 16deg 18deg, transparent 18deg 34deg, rgba(255,79,163,0.08) 34deg 36deg); -webkit-mask: radial-gradient(circle at 50% 50%, #000 0%, transparent 55%); mask: radial-gradient(circle at 50% 50%, #000 0%, transparent 55%); animation: disco-beams 24s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  .vkd-disco-lights .disco-floor, .vibe-disco .disco-dots, .vibe-disco .disco-beams, .vibe-disco .disco-ball, .vibe-disco .disco-ball__shine, .vibe-disco .disco-title, .vibe-disco .vx-pay, .vibe-disco .disco-sticky { animation: none; }
}

/* ===== acid-warp (acid, slot scene) ===== */
.vkd-acid-warp .acid-warp { position: fixed; inset: -30%; z-index: 0; pointer-events: none; opacity: 0.5; background: radial-gradient(40vmax 40vmax at 30% 30%, rgba(182,255,0,0.28), transparent 60%), radial-gradient(44vmax 44vmax at 72% 68%, rgba(255,23,195,0.24), transparent 60%), conic-gradient(from 0deg at 50% 50%, rgba(0,229,255,0.10), transparent 30%, rgba(182,255,0,0.10) 60%, transparent 90%); filter: blur(20px); animation: acid-warp 18s ease-in-out infinite, acid-hue 14s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  .vkd-acid-warp .acid-warp, .vibe-acid .acid-ring, .vibe-acid .acid-title { animation: none; }
}

/* ===== berlin-fx (berlin, slot scene) ===== */
.vkd-berlin-fx .bln-fx { position: fixed; inset: 0; z-index: 0; pointer-events: none; }
.vkd-berlin-fx .bln-fx::before { content: ''; position: absolute; inset: 0; background: radial-gradient(60% 45% at 18% 0%, rgba(55,230,255,0.16), transparent 60%), radial-gradient(55% 45% at 100% 100%, rgba(255,47,176,0.12), transparent 60%); animation: bln-breathe 5s ease-in-out infinite; }
.vkd-berlin-fx .bln-scan { position: absolute; inset: 0; background: repeating-linear-gradient(0deg, transparent 0 2px, rgba(55,230,255,0.035) 2px 3px); animation: bln-scandrift 8s linear infinite; }
.vkd-berlin-fx .bln-beam { position: absolute; top: -30%; left: -40%; width: 55%; height: 180%; background: linear-gradient(90deg, transparent, rgba(55,230,255,0.12), rgba(255,255,255,0.06), transparent); transform: rotate(14deg); filter: blur(6px); animation: bln-sweep 7s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) {
  .vkd-berlin-fx .bln-fx *, .vibe-berlin .bln-fx::before, .vibe-berlin .bln-title, .vibe-berlin .bln-title::before, .vibe-berlin .bln-title::after, .vibe-berlin .bln-panel, .vibe-berlin .bln-caret, .vibe-berlin .bln-ico, .vibe-berlin .bln-kick, .vibe-berlin .vx-pay, .vibe-berlin .bln-flyerpanel::after { animation: none !important; }
}

/* ===== dnb-grain (dnb, slot scene) ===== */
.vkd-dnb-grain .dnb-grain { position: fixed; inset: -50%; z-index: 3; pointer-events: none; opacity: 0.5; background-image: radial-gradient(rgba(255,255,255,0.10) 0.5px, transparent 0.6px), radial-gradient(rgba(0,0,0,0.16) 0.5px, transparent 0.6px); background-size: 3px 3px, 4px 4px; background-position: 0 0, 1px 2px; animation: dnb-grain 0.6s steps(3) infinite; }
.vkd-dnb-grain .dnb-tape { position: relative; overflow: hidden; height: 34px; margin: 0 -2vw; background: repeating-linear-gradient(45deg, var(--dnb-acc, #c6ff00) 0 18px, #111 18px 36px); box-shadow: 0 8px 20px -8px rgba(0,0,0,0.7); display: flex; align-items: center; }
.vkd-dnb-grain .dnb-tape--top { transform: rotate(-1.6deg); }
.vkd-dnb-grain .dnb-tape--mid { transform: rotate(1.2deg); margin-top: clamp(28px,5vw,44px); margin-bottom: clamp(20px,4vw,34px); }
.vkd-dnb-grain .dnb-tape span { white-space: nowrap; font-family: 'Space Mono', monospace; font-weight: 700; font-size: 13px; letter-spacing: 0.2em; text-transform: uppercase; color: #0a0a09; background: rgba(243,240,230,0.86); padding: 3px 0; mix-blend-mode: normal; animation: dnb-march 14s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  .vkd-dnb-grain .dnb-grain, .vibe-dnb .dnb-tape span { animation: none; }
}
/* wrapper: deco-frame */
.vkd-deco-frame{position:fixed;inset:0;z-index:6;pointer-events:none}.vkd-deco-frame::before{content:'';position:absolute;inset:clamp(10px,2vw,20px);border:2px solid var(--gold-d,#9a7f34);box-shadow:inset 0 0 0 4px var(--onyx,#12100b),inset 0 0 0 6px rgba(217,185,92,0.5),inset 0 0 0 8px var(--onyx,#12100b),inset 0 0 0 9px rgba(217,185,92,0.25);pointer-events:none}.vkd-deco-frame .dco-pilaster--l{left:clamp(14px,2.4vw,26px)}.vkd-deco-frame .dco-pilaster--r{right:clamp(14px,2.4vw,26px)}
/* wrapper: deco-sun */
.vkd-deco-sun{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:6;pointer-events:none;opacity:.92}.vkd-deco-sun .dco-medallion{width:clamp(84px,11vw,132px);margin:0}
/* wrapper: disco-ball */
.vkd-disco-ball{position:fixed;top:0;left:50%;transform:translateX(-50%);z-index:6;pointer-events:none}.vkd-disco-ball .disco-ball{width:clamp(64px,9vw,104px)}
/* wrapper: dnb-grain */
.vkd-dnb-grain .dnb-tape{position:fixed;top:0;left:0;right:0;margin:0;z-index:6}

/* ===== KEYFRAMES ===== */
/* acid */ @keyframes acid-hue { to { filter: blur(20px) hue-rotate(360deg); } }
/* acid */ @keyframes acid-warp { 0%,100% { transform: scale(1) translate(0,0) rotate(0deg); } 50% { transform: scale(1.15) translate(3%,-3%) rotate(8deg); } }
/* berlin */ @keyframes bln-breathe { 0%,100% { opacity: 0.6; } 50% { opacity: 1; } }
/* berlin */ @keyframes bln-scandrift { to { background-position: 0 60px; } }
/* berlin */ @keyframes bln-sweep { 0% { left: -50%; opacity: 0; } 40% { opacity: 1; } 100% { left: 130%; opacity: 0; } }
/* deco */ @keyframes dco-shim { to { background-position: 0 60px; } }
/* deco */ @keyframes dco-spin { to { transform: rotate(360deg); } }
/* discotheque */ @keyframes disco-beams { to { transform: translate(-50%, -60%) rotate(360deg); } }
/* discotheque */ @keyframes disco-dots { to { background-position: 180px 90px, -100px 200px, 320px -120px, -140px 240px; } }
/* discotheque */ @keyframes disco-floorpulse { 0%,100% { filter: hue-rotate(0deg) brightness(1); } 50% { filter: hue-rotate(40deg) brightness(1.35); } }
/* discotheque */ @keyframes disco-spin { to { transform: rotate(360deg); } }
/* dnb */ @keyframes dnb-grain { 0% { transform: translate(0,0); } 33% { transform: translate(-3%,2%); } 66% { transform: translate(2%,-2%); } 100% { transform: translate(-1%,1%); } }
/* dnb */ @keyframes dnb-march { to { transform: translateX(-50%); } }
/* forest */ @keyframes fst-fall { 0% { transform: translateY(0) rotate(0deg); opacity: 0; } 10% { opacity: 0.4; } 100% { transform: translateY(108vh) rotate(420deg); opacity: 0; } }
