/* hero_swaps.css — de-scoped cross-vibe looks (GENERATED). Hero+Editorial+Formal. var() fallbacks. vibelooks-20260718 */

/* ===== SLOT: headline ===== */
/* headliner */
.hdl-hero__title { font-family: 'Archivo Black', sans-serif; font-weight: 900; font-size: clamp(44px, 7.5vw, 100px); line-height: 1; letter-spacing: -0.03em; margin: 0; background: linear-gradient(135deg, #fef3c7 0%, var(--event-accent, #ff8a3d) 50%, var(--event-accent-2, #ff3d81) 100%); -webkit-background-clip: text; background-clip: text; color: transparent; text-wrap: balance; text-transform: uppercase; }
/* junglist */
.jng-hero__title { font-family: 'Archivo Black', sans-serif; font-weight: 900; font-size: clamp(44px, 7.5vw, 100px); line-height: 0.95; letter-spacing: -0.03em; margin: 0; color: #fff; text-transform: uppercase; text-wrap: balance; text-shadow: 4px 4px 0 var(--event-accent, #ff8a3d), 8px 8px 0 var(--event-accent-2, #ff3d81); transform: rotate(-1deg); transform-origin: left; }
@media (max-width: 860px) {
  .jng-hero__title { transform: none; }
}
/* sub_bass */
.sb-hero__title { font-family: 'Archivo Black', sans-serif; font-weight: 900; font-size: clamp(44px, 7.5vw, 100px); line-height: 0.92; letter-spacing: -0.04em; margin: var(--s-3, 12px) 0 var(--s-5, 24px); color: #f5f0ff; text-transform: uppercase; text-shadow: -2px 0 0 rgba(168, 85, 247, 0.85), 2px 0 0 rgba(34, 211, 238, 0.75); text-wrap: balance; }
/* substation */
.sub-hero__title { font-family: 'Archivo Black', 'Inter', sans-serif; font-weight: 900; font-size: clamp(44px, 7.5vw, 100px); line-height: 0.92; letter-spacing: -0.04em; margin: 0; color: #f5f5f5; text-transform: uppercase; text-wrap: balance; text-shadow: 0.028em 0 0 rgba(255, 42, 120, 0.75), -0.028em 0 0 rgba(0, 240, 255, 0.75), 0 0 18px rgba(0, 255, 157, 0.55); animation: sub-glitch 3.8s steps(1) infinite; will-change: transform, text-shadow; }
@media (prefers-reduced-motion: reduce) {
  .sub-hero__title { animation: none; }
}
/* playa */
.ply-title { font-family: 'Archivo Black', sans-serif; font-size: clamp(48px, 12vw, 150px); line-height: 0.88; letter-spacing: -0.02em; text-transform: uppercase; margin: 0; color: #fbe9cd; text-shadow: 0 0 26px rgba(255,170,90,0.45), 0 4px 0 rgba(58,30,18,0.6); text-wrap: balance; }
/* candlelight */
.cdl-title { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: clamp(38px, 8.5vw, 84px); line-height: 1.04; margin: clamp(12px,2vw,18px) 0; color: var(--cream, #f3e7d2); text-shadow: 0 0 30px rgba(230,179,92,.35); }
/* deco */
.dco-title { font-family: 'Poiret One', cursive; font-weight: 400; font-size: clamp(40px, 9vw, 96px); line-height: 1.02; letter-spacing: 0.04em; text-transform: uppercase; margin: 0; background: linear-gradient(100deg, var(--gold-d, #9a7f34), var(--gold-l, #f4e3a6) 45%, var(--gold, #d9b95c) 60%, var(--gold-d, #9a7f34)); background-size: 220% auto; -webkit-background-clip: text; background-clip: text; color: transparent; animation: dco-foil 9s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  .dco-sun, .dco-title, .dco-pilaster::before,
  .dco-kicker span, .vx-pay, .dco-sticky { animation: none; }
  .dco-title { background-position: 0 center; }
}
/* garden */
.grd-title { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: clamp(40px, 9vw, 88px); line-height: 1.04; margin: 6px 0 0; color: var(--ink, #34372c); }
/* harvest */
.hrv-title { font-family: 'Fraunces', serif; font-weight: 600; font-size: clamp(38px, 8.5vw, 84px); line-height: 1.04; margin: 8px 0 0; color: var(--cream, #f1e6d2); text-shadow: 0 0 30px rgba(217,154,82,.3); }
/* noir */
.noir-title { font-family: 'Cinzel', serif; font-weight: 700; font-size: clamp(34px, 7.5vw, 80px); line-height: 1.06; letter-spacing: .02em; margin: clamp(12px,2vw,18px) 0; background: linear-gradient(100deg, #9a7d20, var(--gold-l, #f3e2a3) 45%, var(--gold, #d4af37) 60%, #9a7d20); background-size: 220% auto; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; animation: noir-sheen 6.5s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  body.noir-sparkle, .noir-title, .noir-rule,
  .noir-panel .vx-pay, .noir-sticky { animation: none; }
  .noir-title { background: none; -webkit-text-fill-color: var(--gold, #d4af37); color: var(--gold, #d4af37); }
}
/* velvet */
.vlv-title { font-family: 'Fraunces', serif; font-weight: 600; font-size: clamp(38px, 8.5vw, 84px); line-height: 1.04; margin: 6px 0 12px; color: var(--ink, #f3ecdd); background: linear-gradient(100deg, var(--gold-d, #b8943f), #fff4d8 45%, var(--gold, #e6c98a) 60%, var(--gold-d, #b8943f)); background-size: 220% auto; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; animation: vlv-sheen 8s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  body.vibe-velvet::before, .vlv-title, .vlv-panel .vx-pay, .vlv-sticky { animation: none; }
  .vlv-title { background: none; -webkit-text-fill-color: var(--gold, #e6c98a); color: var(--gold, #e6c98a); }
}
/* eternal */
.etn-title { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: clamp(38px, 8vw, 76px); line-height: 1.05; margin: 0; letter-spacing: 0.01em; background: linear-gradient(100deg, var(--gold-d, #9c7c31), #eacd82 45%, var(--gold, #c8a24a) 60%, var(--gold-d, #9c7c31)); background-size: 220% auto; -webkit-background-clip: text; background-clip: text; color: transparent; animation: etn-foil 9s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  .etn-petals i, .etn-title { animation: none; }
  .etn-title { background-position: 0 center; }
}
/* launch */
.lnch-title { font-weight: 700; font-size: clamp(38px, 8vw, 92px); line-height: .98; letter-spacing: -.03em; margin: 0 0 12px; background: linear-gradient(100deg, var(--violet, #7c5cff), var(--cyan, #22d3ee) 45%, var(--pink, #ff5ca8) 75%, var(--violet, #7c5cff)); background-size: 240% auto; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; animation: lnch-flow 7s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  body.lnch-mesh, .lnch-title, .lnch-panel .vx-pay, .lnch-sticky { animation: none; }
  .lnch-title { background: none; -webkit-text-fill-color: var(--violet, #7c5cff); color: var(--violet, #7c5cff); }
}
/* boardroom */
.brd-title { font-weight: 700; font-size: clamp(34px, 6vw, 66px); line-height: 1.04; letter-spacing: -0.02em; margin: clamp(22px,4vw,36px) 0 8px; color: var(--ink, #16202e); }
/* house */
.hse-title { font-family: 'Archivo Black', sans-serif; font-size: clamp(34px, 6.5vw, 68px); line-height: 1.02; letter-spacing: -0.02em; margin: clamp(12px, 2vw, 18px) 0 0; color: var(--hse-ink, #fef3c7); text-shadow: 0 2px 30px rgba(249,115,22,0.3); text-wrap: balance; }
/* summit */
.smt-title { font-weight: 700; font-size: clamp(36px, 7vw, 74px); line-height: 1.03; letter-spacing: -0.02em; margin: clamp(8px,1.5vw,14px) 0 10px; color: var(--ink, #eaf1fb); }
/* supper */
.sup-title { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: clamp(38px, 8vw, 76px); line-height: 1.02; letter-spacing: 0.005em; margin: 0; background: linear-gradient(100deg, var(--gold, #b08a3e) 0%, #7a5f27 30%, var(--gold-l, #e6c877) 50%, #7a5f27 70%, var(--gold, #b08a3e) 100%); background-size: 220% auto; -webkit-background-clip: text; background-clip: text; color: transparent; animation: sup-foil 9s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  .sup-table, .sup-title, .sup-divider span { animation: none; }
  .sup-title { background-position: 0 center; }
}

/* ===== SLOT: venue ===== */
/* headliner */
.hdl-hero__venue { margin-top: var(--s-5, 24px); font-size: 18px; color: #c8c0a8; display: flex; flex-wrap: wrap; gap: var(--s-3, 12px); justify-content: center; }
.hdl-hero__venue strong { color: #f8f5e8; font-weight: 600; }
.hdl-hero__venue { justify-content: flex-start; }
@media (max-width: 900px) {
  .hdl-hero, .hdl-hero__venue { text-align: center; justify-content: center; }
}
/* junglist */
.jng-hero__venue { margin-top: var(--s-6, 32px); font-size: 16px; color: #b8e6b8; display: flex; flex-wrap: wrap; gap: var(--s-3, 12px); }
.jng-hero__venue strong { color: var(--event-accent-2, #ff3d81); font-weight: 700; }
/* sub_bass */
.sb-hero__venue { font-size: 18px; color: #c8b5dd; display: flex; flex-wrap: wrap; gap: var(--s-3, 12px); align-items: baseline; margin-top: var(--s-3, 12px); }
.sb-hero__venue strong { color: #f5f0ff; font-weight: 700; }
/* substation */
.sub-hero__venue { margin-top: var(--s-5, 24px); font-size: 16px; letter-spacing: 0.04em; color: #b8b8b8; display: flex; flex-wrap: wrap; gap: var(--s-3, 12px); align-items: baseline; }
.sub-hero__venue strong { color: #f5f5f5; font-weight: 600; }
/* candlelight */
.cdl-venue { font-size: clamp(14px,1.9vw,17px); margin: 8px 0 0; }
/* deco */
.dco-venue { font-size: clamp(15px,2vw,19px); font-weight: 500; margin: 8px 0 0; }
/* garden */
.grd-venue { font-size: clamp(14px,1.9vw,17px); margin: 8px 0 0; }
/* harvest */
.hrv-venue { font-size: clamp(14px,1.9vw,17px); margin: 8px 0 0; }
/* noir */
.noir-venue { font-size: clamp(15px,2vw,19px); font-weight: 500; margin: 8px 0 0; }
/* velvet */
.vlv-venue { font-size: clamp(14px,1.9vw,17px); font-weight: 500; margin: 8px 0 0; }
/* eternal */
.etn-venue { font-size: clamp(16px,2.2vw,20px); font-weight: 600; margin: 6px 0 0; }
/* launch */
.lnch-venue { font-size: clamp(15px,2vw,19px); font-weight: 500; margin: 0; }
/* house */
.hse-venue { display: flex; flex-wrap: wrap; gap: 8px 18px; justify-content: center; margin-top: clamp(14px, 2vw, 20px); font-size: 16px; color: var(--hse-mid, #c9a98a); }
.hse-venue strong { color: var(--hse-cream, #f4e3c3); font-weight: 700; }
/* summit */
.smt-venue { font-size: clamp(15px,2vw,19px); font-weight: 500; margin: 0; }

/* ===== SLOT: date ===== */
/* headliner */
.hdl-hero__eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.36em; text-transform: uppercase; color: var(--event-accent, #ff8a3d); margin-bottom: var(--s-5, 24px); display: inline-flex; align-items: center; gap: 16px; }
.hdl-hero__eyebrow::before,
.hdl-hero__eyebrow::after { content: ''; width: 40px; height: 1px; background: var(--event-accent, #ff8a3d); opacity: 0.5; }
@media (max-width: 860px) {
  .hdl-hero__eyebrow::before,
  .hdl-hero__eyebrow::after { width: 20px; }
}
/* junglist */
.jng-hero__date { display: inline-block; padding: 6px 12px; background: var(--event-accent, #ff8a3d); color: #020a05; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; margin-bottom: var(--s-4, 16px); box-shadow: 4px 4px 0 #020a05, 4px 4px 0 1px var(--event-accent-2, #ff3d81); }
/* sub_bass */
.sb-hero__date { font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace; font-size: 12px; letter-spacing: 0.3em; text-transform: uppercase; color: var(--event-accent-2, #ff3d81); margin-bottom: var(--s-3, 12px); display: inline-block; padding: 4px 10px; border: 1px solid rgba(34, 211, 238, 0.3); background: rgba(34, 211, 238, 0.06); }
/* substation */
.sub-hero__date { font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace; font-size: 12px; letter-spacing: 0.32em; text-transform: uppercase; color: var(--event-accent, #ff8a3d); margin-bottom: var(--s-3, 12px); }
/* candlelight */
.cdl-date { font-family: 'Cormorant Garamond', serif; font-size: clamp(18px,2.6vw,24px); }
/* deco */
.dco-date { font-weight: 500; letter-spacing: 0.2em; text-transform: uppercase; font-size: clamp(11px,1.5vw,13px); color: var(--gold-l, #f4e3a6); }
/* garden */
.grd-date { font-family: 'Cormorant Garamond', serif; font-size: clamp(18px, 2.6vw, 24px); }
/* harvest */
.hrv-date { font-family: 'Fraunces', serif; font-size: clamp(18px,2.6vw,24px); }
/* noir */
.noir-date { font-size: clamp(18px,2.6vw,24px); letter-spacing: .08em; color: var(--ink, #efe9da); }
/* velvet */
.vlv-date { font-family: 'Fraunces', serif; font-size: clamp(18px,2.6vw,24px); }
/* eternal */
.etn-date { font-style: italic; font-size: clamp(17px,2.4vw,22px); color: var(--ink, #3a3128); }

/* ===== SLOT: presented ===== */
/* headliner */
.hdl-hero__presented { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: #8a8470; margin-top: var(--s-3, 12px); }
.hdl-hero__presented a { color: var(--event-accent, #ff8a3d); }
.hdl-hero__presented a:hover { color: var(--event-accent-2, #ff3d81); }
/* junglist */
.jng-hero__presented { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: #6ba66b; margin-top: var(--s-3, 12px); }
.jng-hero__presented a { color: var(--event-accent, #ff8a3d); }
.jng-hero__presented a:hover { color: var(--event-accent-2, #ff3d81); }
/* sub_bass */
.sb-hero__presented { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: #9b85ba; margin-top: var(--s-3, 12px); }
.sb-hero__presented a { color: var(--event-accent-2, #ff3d81); text-decoration: none; }
.sb-hero__presented a:hover { text-decoration: underline; }
/* substation */
.sub-hero__presented { font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace; font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: #8a8a8a; margin-top: var(--s-3, 12px); }
.sub-hero__presented a { color: var(--event-accent, #ff8a3d); text-decoration: none; }
.sub-hero__presented a:hover { text-decoration: underline; }
/* candlelight */
.cdl-presented { font-size: 13px; opacity: .7; margin: 6px 0 0; }
.cdl-presented a { color: var(--amber, #e6b35c); text-decoration: none; border-bottom: 1px solid var(--evt-border, rgba(230,179,92,.28)); }
/* deco */
.dco-presented { font-size: 12.5px; letter-spacing: 0.06em; color: #b9a877; margin: 6px 0 0; }
.dco-presented a { color: var(--gold, #d9b95c); text-decoration: none; border-bottom: 1px solid rgba(217,185,92,0.4); }
/* garden */
.grd-presented { font-size: 13px; opacity: .7; margin: 6px 0 0; }
.grd-presented a { color: var(--sage-d, #56624a); text-decoration: none; border-bottom: 1px solid var(--evt-border, rgba(86,98,74,.28)); }
/* harvest */
.hrv-presented { font-size: 13px; opacity: .72; margin: 6px 0 0; }
.hrv-presented a { color: var(--wheat, #d99a52); text-decoration: none; border-bottom: 1px solid var(--evt-border, rgba(217,154,82,.30)); }
/* noir */
.noir-presented { font-size: 13px; opacity: .7; margin: 6px 0 0; }
.noir-presented a { color: var(--gold, #d4af37); text-decoration: none; border-bottom: 1px solid var(--evt-border, rgba(212,175,55,.30)); }
.noir-presented { font-size: 14px; }
/* velvet */
.vlv-presented { font-size: 13px; opacity: .72; margin: 6px 0 0; }
.vlv-presented a { color: var(--gold, #e6c98a); text-decoration: none; border-bottom: 1px solid var(--evt-border, rgba(230,201,138,.28)); }
/* launch */
.lnch-presented { font-size: 13px; opacity: .72; margin: 6px 0 0; }
.lnch-presented a { color: var(--cyan, #22d3ee); text-decoration: none; }
/* house */
.hse-presented { margin-top: 10px; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: #a07a5a; }
.hse-presented a { color: var(--event-accent, #ff8a3d); }
.hse-presented a:hover { filter: brightness(1.15); }
/* summit */
.smt-presented { font-size: 13px; color: var(--mute, #93a6c4); margin: 6px 0 0; }
.smt-presented a { color: var(--blue-l, #6ea0ff); text-decoration: none; }

/* ===== SLOT: blurb ===== */
/* headliner */
.hdl-blurb { border-top: 1px solid var(--event-accent, #ff8a3d); border-bottom: 1px solid var(--event-accent, #ff8a3d); padding: var(--s-5, 24px) var(--s-5, 24px); background: rgba(251, 191, 36, 0.04); color: #d4cdb8; font-style: italic; font-size: 15px; line-height: 1.7; white-space: pre-line; text-align: center; }
.hdl-about,
.hdl-blurb { overflow-wrap: anywhere; word-wrap: break-word; }
/* junglist */
.jng-blurb { border-left: 3px solid var(--event-accent-2, #ff3d81); padding: var(--s-4, 16px) var(--s-5, 24px); background: rgba(0, 255, 255, 0.06); color: #b8d8b8; font-style: italic; font-size: 14px; line-height: 1.65; white-space: pre-line; box-shadow: 3px 3px 0 rgba(0, 255, 65, 0.3); }
.jng-blurb { overflow-wrap: anywhere; word-wrap: break-word; }
/* sub_bass */
.sb-blurb { border-left: 2px solid var(--event-accent-2, #ff3d81); padding: var(--s-4, 16px) var(--s-5, 24px); background: linear-gradient(90deg, rgba(34, 211, 238, 0.07) 0%, transparent 100%); color: #c0b5d0; font-style: italic; font-size: 15px; line-height: 1.7; white-space: pre-line; }
.sb-about,
.sb-blurb { overflow-wrap: anywhere; word-wrap: break-word; }
/* substation */
.sub-blurb { border-left: 3px solid var(--event-accent, #ff8a3d); padding: var(--s-4, 16px) var(--s-5, 24px); background: rgba(255,255,255,0.025); color: #c0c0c0; font-style: italic; font-size: 15px; line-height: 1.65; white-space: pre-line; }
.sub-about,
.sub-blurb { overflow-wrap: anywhere; word-wrap: break-word; }
/* playa */
.ply-blurb { margin-top: clamp(24px, 4vw, 34px); font-style: italic; text-align: center; color: #cbaa80; line-height: 1.7; border-top: 2px dashed rgba(232,121,74,0.35); border-bottom: 2px dashed rgba(232,121,74,0.35); padding: clamp(16px, 2.5vw, 22px) 0; white-space: pre-line; overflow-wrap: anywhere; }
/* candlelight */
.cdl-blurb { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: clamp(17px,2.4vw,21px); opacity: .85; margin: clamp(20px,3vw,28px) 0 0; }
/* deco */
.dco-blurb { font-family: 'Poiret One', cursive; font-size: clamp(18px,2.6vw,24px); color: var(--gold-l, #f4e3a6); margin: clamp(24px,4vw,34px) auto 0; max-width: 46ch; letter-spacing: 0.02em; overflow-wrap: anywhere; }
/* garden */
.grd-blurb { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: clamp(17px,2.4vw,21px); opacity: .85; margin: clamp(20px,3vw,28px) 0 0; }
/* harvest */
.hrv-blurb { font-family: 'Fraunces', serif; font-style: italic; font-size: clamp(17px,2.4vw,21px); opacity: .85; margin: clamp(20px,3vw,28px) 0 0; }
/* noir */
.noir-blurb { font-style: italic; font-size: clamp(18px,2.4vw,22px); opacity: .85; margin: clamp(20px,3vw,28px) 0 0; }
/* velvet */
.vlv-blurb { font-family: 'Fraunces', serif; font-style: italic; font-size: clamp(17px,2.4vw,21px); opacity: .85; margin: clamp(20px,3vw,28px) 0 0; }
/* eternal */
.etn-blurb { font-style: italic; font-size: clamp(17px,2.3vw,21px); color: var(--gold-d, #9c7c31); margin: clamp(22px,3vw,30px) auto 0; max-width: 44ch; overflow-wrap: anywhere; }
/* launch */
.lnch-blurb { opacity: .85; line-height: 1.6; border-left: 3px solid var(--violet, #7c5cff); padding-left: 14px; margin: clamp(18px,3vw,26px) 0 0; }
/* boardroom */
.brd-blurb { border-left: 3px solid var(--navy, #1f3a5f); padding-left: 14px; color: var(--slate, #5b6b7e); font-size: clamp(15px,2vw,17px); line-height: 1.6; margin: clamp(18px,3vw,24px) 0 0; overflow-wrap: anywhere; }
/* house */
.hse-blurb { margin-top: clamp(22px, 3vw, 32px); font-style: italic; font-size: 15px; line-height: 1.7; color: var(--hse-mid, #c9a98a); border-top: 1px solid rgba(249,115,22,0.25); border-bottom: 1px solid rgba(249,115,22,0.25); padding: clamp(16px, 2.5vw, 22px) 0; white-space: pre-line; overflow-wrap: anywhere; }
/* summit */
.smt-blurb { font-style: italic; font-size: clamp(16px,2.2vw,20px); color: var(--mute, #93a6c4); margin: 0; overflow-wrap: anywhere; }
/* supper */
.sup-blurb { font-style: italic; font-size: clamp(17px, 2.3vw, 21px); line-height: 1.6; color: var(--ink-2, #4a3b30); text-align: center; margin: clamp(24px, 4vw, 34px) auto 0; max-width: 46ch; overflow-wrap: anywhere; }
.sup-blurb::before, .sup-blurb::after { content: '\201C'; color: var(--gold, #b08a3e); }
.sup-blurb::after { content: '\201D'; }

/* ===== SLOT: about ===== */
/* headliner */
.hdl-about { color: #d4cdb8; font-size: 15px; line-height: 1.7; white-space: pre-line; margin: 0; text-align: center; max-width: 60ch; margin-left: auto; margin-right: auto; }
.hdl-about,
.hdl-blurb { overflow-wrap: anywhere; word-wrap: break-word; }
.hdl-about { overflow-wrap: anywhere; word-break: break-word; }
.hdl-about a { overflow-wrap: anywhere; word-break: break-all; }
/* junglist */
.jng-about { color: #c8e8c8; font-size: 15px; line-height: 1.65; white-space: pre-line; overflow-wrap: anywhere; word-wrap: break-word; margin: 0; }
/* sub_bass */
.sb-about { color: #d0c4e4; font-size: 16px; line-height: 1.7; white-space: pre-line; margin: 0; overflow-wrap: anywhere; word-break: break-word; }
.sb-about a { overflow-wrap: anywhere; word-break: break-all; }
.sb-about,
.sb-blurb { overflow-wrap: anywhere; word-wrap: break-word; }
/* substation */
.sub-about { color: #d0d0d0; font-size: 16px; line-height: 1.65; white-space: pre-line; margin: 0; overflow-wrap: anywhere; word-break: break-word; }
.sub-about a { overflow-wrap: anywhere; word-break: break-all; }
.sub-about,
.sub-blurb { overflow-wrap: anywhere; word-wrap: break-word; }
/* playa */
.ply-about { font-size: 15px; line-height: 1.8; color: #e6d0ac; text-align: center; max-width: 60ch; margin: 0 auto; white-space: pre-line; overflow-wrap: anywhere; word-wrap: break-word; }
.ply-about a { color: var(--event-accent, #ff8a3d); word-break: break-all; }

/* ===== SLOT: buy ===== */
/* headliner */
.hdl-buy-btn { display: block; width: 100%; margin-top: var(--s-6, 32px); padding: 20px 28px; background: linear-gradient(135deg, var(--event-accent, #ff8a3d) 0%, #fef3c7 50%, var(--event-accent-2, #ff3d81) 100%); color: #0a0e1a; border: 0; border-radius: 4px; font-family: 'Archivo Black', sans-serif; font-weight: 900; font-size: 17px; letter-spacing: 0.06em; text-transform: uppercase; cursor: pointer; box-shadow: 0 12px 32px -10px rgba(251, 191, 36, 0.5); transition: transform 0.18s, box-shadow 0.18s, filter 0.18s; }
.hdl-buy-btn:hover { transform: translateY(-2px); box-shadow: 0 18px 44px -10px rgba(251, 191, 36, 0.7), 0 0 70px -10px rgba(245, 158, 11, 0.5); filter: brightness(1.05); }
/* junglist */
.jng-buy-btn { display: block; width: 100%; margin-top: var(--s-6, 32px); padding: 20px 24px; background: var(--event-accent, #ff8a3d); color: #020a05; border: 0; border-radius: 0; font-family: 'Archivo Black', sans-serif; font-weight: 900; font-size: 18px; letter-spacing: 0.06em; text-transform: uppercase; cursor: pointer; box-shadow: 6px 6px 0 var(--event-accent-2, #ff3d81); transition: transform 0.15s, box-shadow 0.15s, filter 0.15s; }
.jng-buy-btn:hover { transform: translate(-3px, -3px); box-shadow: 9px 9px 0 var(--event-accent-2, #ff3d81), 0 0 40px var(--event-accent, #ff8a3d); filter: brightness(1.1); }
.jng-buy-btn:active { transform: translate(0, 0); box-shadow: 3px 3px 0 var(--event-accent-2, #ff3d81); }
/* sub_bass */
.sb-buy-btn { display: block; width: 100%; margin-top: var(--s-5, 24px); padding: 20px 24px; background: linear-gradient(135deg, var(--event-accent, #ff8a3d) 0%, #7c3aed 50%, var(--event-accent-2, #ff3d81) 100%); color: #0a0214; border: 0; border-radius: 0; font-family: 'Archivo Black', sans-serif; font-weight: 900; font-size: 18px; letter-spacing: 0.04em; text-transform: uppercase; cursor: pointer; position: relative; clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px)); transition: filter 0.15s, transform 0.1s; box-shadow: 0 0 30px -8px var(--event-accent, #ff8a3d); }
.sb-buy-btn:hover { filter: brightness(1.12); transform: translateY(-1px); }
.sb-buy-btn:active { transform: translateY(0); }
/* substation */
.sub-buy-btn { display: block; width: 100%; margin-top: var(--s-5, 24px); padding: 20px 24px; background: var(--event-accent, #ff8a3d); color: #050505; border: 0; border-radius: 0; font-family: 'Archivo Black', sans-serif; font-weight: 900; font-size: 18px; letter-spacing: 0.04em; text-transform: uppercase; cursor: pointer; transition: transform 0.1s, box-shadow 0.15s; box-shadow: 0 0 24px -8px var(--event-accent, #ff8a3d); }
.sub-buy-btn:hover { transform: translateY(-1px); box-shadow: 0 0 36px -6px var(--event-accent, #ff8a3d); }
.sub-buy-btn:active { transform: translateY(0); }

/* ===== SLOT: lineup ===== */
/* headliner */
.hdl-lineup-list { list-style: none; margin: 0; padding: 0; text-align: center; }
.hdl-lineup-list li { font-family: 'Archivo Black', sans-serif; letter-spacing: -0.01em; text-transform: uppercase; padding: var(--s-2, 8px) 0; color: #f8f5e8; border-bottom: 1px solid rgba(251, 191, 36, 0.12); }
.hdl-lineup-list li:last-child { border-bottom: 0; }
.hdl-lineup-list li:nth-child(1) { font-size: clamp(26px, 4vw, 40px); line-height: 1; color: var(--event-accent, #ff8a3d); text-shadow: 0 2px 16px rgba(251, 191, 36, 0.4); }
.hdl-lineup-list li:nth-child(2),
.hdl-lineup-list li:nth-child(3) { font-size: clamp(20px, 2.8vw, 28px); line-height: 1.05; }
.hdl-lineup-list li:nth-child(n+4) { font-size: clamp(16px, 2vw, 20px); line-height: 1.1; color: #c8c0a8; }
/* junglist */
.jng-lineup-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-3, 12px); }
.jng-lineup-list li { font-family: 'Archivo Black', sans-serif; font-size: clamp(20px, 3vw, 30px); line-height: 1.05; letter-spacing: -0.015em; text-transform: uppercase; color: #fff; padding: var(--s-2, 8px) 0; text-shadow: 2px 2px 0 var(--event-accent, #ff8a3d); }
.jng-lineup-list li:nth-child(even) { margin-left: var(--s-4, 16px); text-shadow: -2px 2px 0 var(--event-accent-2, #ff3d81); }
@media (max-width: 860px) {
  .jng-lineup-list li:nth-child(even) { margin-left: var(--s-2, 8px); }
}
/* sub_bass */
.sb-lineup-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-2, 8px); }
.sb-lineup-list li { font-family: 'Archivo Black', sans-serif; font-weight: 900; font-size: clamp(22px, 3.4vw, 34px); line-height: 1.1; letter-spacing: -0.02em; text-transform: uppercase; color: #f5f0ff; padding: var(--s-3, 12px) 0; border-bottom: 1px solid rgba(168, 85, 247, 0.15); text-shadow: 0 0 12px rgba(168, 85, 247, 0.25); }
.sb-lineup-list li:last-child { border-bottom: 0; }
@media (max-width: 860px) {
  .sb-lineup-list li { font-size: 22px; }
}
/* substation */
.sub-lineup-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-2, 8px); }
.sub-lineup-list li { font-family: 'Archivo Black', 'Inter', sans-serif; font-weight: 900; font-size: clamp(22px, 3.5vw, 36px); line-height: 1.05; letter-spacing: -0.02em; text-transform: uppercase; color: #f5f5f5; padding: var(--s-2, 8px) 0; border-bottom: 1px solid rgba(255,255,255,0.06); display: flex; align-items: baseline; gap: var(--s-4, 16px); }
.sub-lineup-list li::before { content: counter(lineup, decimal-leading-zero); counter-increment: lineup; font-family: 'JetBrains Mono', monospace; font-weight: 500; font-size: 14px; letter-spacing: 0.1em; color: var(--event-accent, #ff8a3d); min-width: 32px; }
.sub-lineup-list { counter-reset: lineup; }
.sub-lineup-list li:last-child { border-bottom: 0; }
@media (max-width: 860px) {
  .sub-lineup-list li { font-size: 22px; }
}
/* candlelight */
.cdl-lineup { font-family: 'Cormorant Garamond', serif; font-size: clamp(20px,3.4vw,28px); line-height: 1.3; margin: 0; }
/* deco */
.dco-lineup { font-family: 'Poiret One', cursive; text-transform: uppercase; font-size: clamp(20px,3.4vw,30px); }
/* garden */
.grd-lineup { font-family: 'Cormorant Garamond', serif; font-size: clamp(20px,3.4vw,28px); line-height: 1.3; margin: 0; }
/* harvest */
.hrv-lineup { font-family: 'Fraunces', serif; font-size: clamp(20px,3.4vw,28px); line-height: 1.3; margin: 0; }
/* noir */
.noir-lineup { font-size: clamp(20px,3.4vw,30px); line-height: 1.25; margin: 0; }
/* velvet */
.vlv-lineup { font-family: 'Fraunces', serif; font-size: clamp(20px,3.4vw,28px); line-height: 1.25; margin: 0; }
/* eternal */
.etn-lineup { font-family: 'Cormorant Garamond', serif; font-size: clamp(20px,3.2vw,28px); color: var(--ink, #3a3128); margin: 0; }
/* launch */
.lnch-lineup { font-size: clamp(18px,2.6vw,24px); font-weight: 500; line-height: 1.4; margin: 0; }

/* ===== SLOT: section ===== */
/* headliner */
.hdl-block { background: rgba(251, 191, 36, 0.03); border: 1px solid rgba(251, 191, 36, 0.2); padding: var(--s-6, 32px); margin-bottom: var(--s-5, 24px); transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s; }
.hdl-block:hover { border-color: var(--event-accent, #ff8a3d); box-shadow: 0 16px 40px -16px rgba(251, 191, 36, 0.35); transform: translateY(-2px); }
/* junglist */
.jng-block { position: relative; background: rgba(0, 255, 65, 0.04); border: 1px solid var(--event-accent, #ff8a3d); padding: var(--s-6, 32px); margin-bottom: var(--s-6, 32px); box-shadow: 4px 4px 0 rgba(0, 255, 255, 0.4); transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s; }
.jng-block:hover { transform: translate(-1px, -1px); box-shadow: 7px 7px 0 var(--event-accent-2, #ff3d81); border-color: var(--event-accent-2, #ff3d81); }
/* sub_bass */
.sb-block { background: rgba(168, 85, 247, 0.04); border: 1px solid rgba(168, 85, 247, 0.18); padding: var(--s-6, 32px); margin-bottom: var(--s-5, 24px); position: relative; }
.sb-block::before { content: ''; position: absolute; top: 0; right: 0; width: 14px; height: 14px; background: linear-gradient(135deg, transparent 0%, transparent 50%, var(--event-accent-2, #ff3d81) 50%, var(--event-accent-2, #ff3d81) 100%); }
.sb-block { transition: border-color 0.18s, box-shadow 0.18s, transform 0.18s; }
.sb-block:hover { border-color: var(--event-accent, #ff8a3d); box-shadow: 0 0 32px -8px var(--event-accent, #ff8a3d), 0 0 18px -10px var(--event-accent-2, #ff3d81); transform: translateY(-2px); }
/* substation */
.sub-block { border: 1px solid rgba(255,255,255,0.08); background: rgba(255,255,255,0.015); padding: var(--s-6, 32px) var(--s-6, 32px); margin-bottom: var(--s-6, 32px); }
.sub-block { transition: border-color 0.18s, box-shadow 0.18s, transform 0.18s; }
.sub-block:hover { border-color: var(--event-accent, #ff8a3d); box-shadow: 0 0 28px -8px var(--event-accent, #ff8a3d); transform: translateY(-2px); }
/* candlelight */
.cdl-panel { text-align: left; margin-top: clamp(30px,5vw,46px); border: 1px solid var(--evt-border, rgba(230,179,92,.28)); border-radius: 12px; padding: clamp(20px,4vw,34px); background: linear-gradient(180deg, rgba(230,179,92,.06), rgba(22,18,14,.6)); box-shadow: 0 30px 70px -40px rgba(0,0,0,.6); }
.cdl-panel .vx-tickets__head { font-family: 'Cormorant Garamond', serif; font-weight: 600; color: var(--amber, #e6b35c); }
.cdl-panel .vx-tier__low { color: var(--amber, #e6b35c); }
/* deco */
.dco-panel { margin-top: clamp(30px,5vw,46px); text-align: left; border: 1px solid rgba(217,185,92,0.34); background: linear-gradient(180deg, rgba(217,185,92,0.06), rgba(18,18,24,0.7)); padding: clamp(20px,4vw,34px); box-shadow: inset 0 0 0 1px rgba(217,185,92,0.08); }
.dco-panel .dco-label { margin-top: 0; }
/* garden */
.grd-panel { text-align: left; margin-top: clamp(30px,5vw,46px); background: linear-gradient(180deg, #fff, var(--cream-2, #eee9da)); border: 1px solid var(--evt-border, rgba(86,98,74,.28)); border-radius: 18px; padding: clamp(20px,4vw,34px); box-shadow: 0 30px 70px -40px rgba(52,55,44,.35); }
.grd-panel .vx-tickets__head { font-family: 'Cormorant Garamond', serif; font-weight: 600; color: var(--ink, #34372c); }
.grd-panel .vx-tier__low { color: var(--terra, #c47a52); }
/* harvest */
.hrv-panel { text-align: left; margin-top: clamp(30px,5vw,46px); border: 1px solid var(--evt-border, rgba(217,154,82,.30)); border-radius: 14px; padding: clamp(20px,4vw,34px); background: linear-gradient(180deg, rgba(217,154,82,.06), rgba(36,29,20,.6)); box-shadow: 0 30px 70px -40px rgba(0,0,0,.6); }
.hrv-panel .vx-tickets__head { font-family: 'Fraunces', serif; font-weight: 600; color: var(--wheat, #d99a52); }
.hrv-panel .vx-tier__low { color: var(--wheat-l, #f0c585); }
/* noir */
.noir-panel { text-align: left; margin-top: 0; border: 1px solid var(--evt-border, rgba(212,175,55,.30)); border-radius: 6px; padding: clamp(20px,4vw,34px); background: linear-gradient(180deg, rgba(212,175,55,.05), rgba(7,7,10,.6)); box-shadow: 0 30px 70px -40px rgba(212,175,55,.4); }
.noir-panel .vx-tickets__head { font-family: 'Cinzel', serif; letter-spacing: .04em; color: var(--gold, #d4af37); }
.noir-panel .vx-pay { background: linear-gradient(100deg, #b9962b, var(--gold-l, #f3e2a3), #b9962b); background-size: 200% auto; animation: noir-sheen 6s linear infinite; letter-spacing: .06em; text-transform: uppercase; font-size: clamp(13px,1.7vw,15px); }
.noir-panel .vx-tier__low { color: var(--gold-l, #f3e2a3); }
.noir-panel { background: linear-gradient(180deg, rgba(16,16,22,0.74), rgba(7,7,10,0.84)); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.noir-panel .vx-tickets__head { font-size: clamp(22px, 2.8vw, 28px); }
.noir-panel .vx-tier { padding: clamp(13px, 2vw, 17px) 0; }
.noir-panel .vx-tier__name { font-family: 'Cinzel', serif; font-size: clamp(17px, 2.2vw, 21px); color: var(--ink, #efe9da); }
.noir-panel .vx-tier__desc { font-size: clamp(13px, 1.7vw, 15px); opacity: .8; }
.noir-panel .vx-tier__price { font-size: clamp(15px, 1.9vw, 18px); color: var(--gold-l, #f3e2a3); }
.noir-panel .vx-qty { font-size: 15px; }
.noir-panel .vx-field label { font-size: 13px; }
.noir-panel .vx-field input { font-size: 15px; }
.noir-panel .vx-help,
.noir-panel .vx-secure { font-size: 12.5px; }
.noir-panel .vx-pay { font-size: clamp(15px, 1.9vw, 17px); }
@media (prefers-reduced-motion: reduce) {
  body.noir-sparkle, .noir-title, .noir-rule,
  .noir-panel .vx-pay, .noir-sticky { animation: none; }
}
/* velvet */
.vlv-panel { text-align: left; margin-top: clamp(30px,5vw,46px); border: 1px solid var(--evt-border, rgba(230,201,138,.28)); border-radius: 22px; padding: clamp(20px,4vw,34px); background: linear-gradient(180deg, rgba(230,201,138,.06), rgba(21,64,47,.55)); box-shadow: 0 30px 70px -40px rgba(0,0,0,.6), inset 0 0 0 1px rgba(230,201,138,.06); }
.vlv-panel .vx-tickets__head { font-family: 'Fraunces', serif; color: var(--gold, #e6c98a); }
.vlv-panel .vx-pay { background: linear-gradient(100deg, var(--gold-d, #b8943f), #fff4d8, var(--gold-d, #b8943f)); background-size: 200% auto; animation: vlv-sheen 7s linear infinite; border-radius: 999px; }
.vlv-panel .vx-tier__low { color: var(--gold, #e6c98a); }
@media (prefers-reduced-motion: reduce) {
  body.vibe-velvet::before, .vlv-title, .vlv-panel .vx-pay, .vlv-sticky { animation: none; }
}
/* launch */
.lnch-panel { border: 1px solid var(--evt-border, rgba(124,92,255,.30)); border-radius: 18px; padding: clamp(20px,3vw,28px); background: linear-gradient(180deg, var(--bg-2, #11111d), rgba(8,8,15,.6)); box-shadow: 0 30px 70px -40px rgba(124,92,255,.5); }
.lnch-panel .vx-tickets__head { color: var(--ink, #eef0fb); }
.lnch-panel .vx-pay { background: linear-gradient(100deg, var(--violet, #7c5cff), var(--cyan, #22d3ee)); background-size: 200% auto; animation: lnch-flow 6s linear infinite; }
.lnch-panel .vx-tier__low { color: var(--cyan, #22d3ee); }
@media (prefers-reduced-motion: reduce) {
  body.lnch-mesh, .lnch-title, .lnch-panel .vx-pay, .lnch-sticky { animation: none; }
}
/* eternal */
.etn-card { position: relative; width: min(640px, 94vw); margin: clamp(28px,5vw,60px) auto clamp(90px,12vw,120px); background: linear-gradient(180deg, var(--ivory, #faf5ec), var(--ivory-2, #f3ead9)); padding: clamp(40px,7vw,72px) clamp(26px,6vw,64px) clamp(30px,5vw,50px); text-align: center; box-shadow: 0 50px 100px -46px rgba(120,70,60,0.55); }
.etn-card::before { content: ''; position: absolute; inset: clamp(12px,2.4vw,20px); border: 1px solid var(--gold-d, #9c7c31); box-shadow: inset 0 0 0 3px var(--ivory, #faf5ec), inset 0 0 0 4px rgba(200,162,74,0.5); pointer-events: none; }
.etn-card > * { position: relative; z-index: 1; }
/* house */
.hse-block { margin-top: clamp(30px, 5vw, 52px); text-align: left; }
@media (max-width: 560px) {
  .hse-block { text-align: left; }
}
/* summit */
.smt-section { position: relative; padding: clamp(18px,3vw,26px) 0; border-bottom: 1px solid rgba(110,160,255,0.12); }
.smt-section:last-child { border-bottom: 0; }
/* supper */
.sup-section { margin-top: clamp(30px, 5vw, 46px); text-align: left; }


/* ===== ONE-OFF VIBES — titles + lineups (GENERATED, vibelooks-oneoffs-20260718) ===== */

/* ===== SLOT: headline (one-offs) ===== */
/* acid */
.acid-title { position: relative; font-family: 'Archivo Black', sans-serif; font-weight: 400; font-size: clamp(38px, 9vw, 92px); line-height: 0.98; letter-spacing: -0.02em; text-transform: uppercase; margin: clamp(8px,2vw,14px) 0 10px; color: #fff; text-shadow: 3px 0 var(--acid-mag, #ff17c3), -3px 0 var(--acid-cyan, #00e5ff), 0 0 30px rgba(182,255,0,0.4); animation: acid-wave 4s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) {
  .acid-warp, .acid-ring, .acid-title { animation: none; }
}
/* berlin */
.bln-title { position: relative; font-family: 'Archivo Black', sans-serif; font-weight: 900; font-size: clamp(46px, 11vw, 150px); line-height: 0.9; letter-spacing: -0.03em; text-transform: uppercase; color: #fff; margin: 0; text-shadow: 0 0 24px rgba(55,230,255,0.5), 0 0 60px rgba(55,230,255,0.25); overflow-wrap: anywhere; animation: bln-jitter 5.5s steps(1) infinite; }
.bln-title::before,
.bln-title::after { content: attr(data-text); position: absolute; left: 0; top: 0; width: 100%; text-transform: uppercase; pointer-events: none; }
.bln-title::before { color: var(--event-accent, #37e6ff); mix-blend-mode: screen; animation: bln-glitch-a 3.2s infinite steps(2); }
.bln-title::after { color: var(--bln-acc2, #ff2fb0); mix-blend-mode: screen; animation: bln-glitch-b 2.6s infinite steps(2); }
@media (prefers-reduced-motion: reduce) {
  .bln-fx *, .bln-fx::before,
  .bln-title, .bln-title::before, .bln-title::after,
  .bln-panel, .bln-caret, .bln-ico,
  .bln-kick, .vx-pay,
  .bln-flyerpanel::after { animation: none !important; }
}
/* discotheque */
.disco-title { font-family: 'Playfair Display', serif; font-style: italic; font-weight: 900; font-size: clamp(42px, 9vw, 96px); line-height: 1.0; margin: 10px 0 12px; background: linear-gradient(100deg, var(--disco-gold, #f5c451), #fff3cf 40%, var(--disco-pink, #ff4fa3) 60%, var(--disco-gold, #f5c451)); background-size: 220% auto; -webkit-background-clip: text; background-clip: text; color: transparent; filter: drop-shadow(0 4px 24px rgba(245,196,81,0.4)); animation: disco-shimmer 7s linear infinite; }
.disco-hero .disco-title,
.disco-hero .disco-venue { text-shadow: 0 3px 26px rgba(0,0,0,0.6); }
@media (prefers-reduced-motion: reduce) {
  .disco-floor, .disco-dots, .disco-beams,
  .disco-ball, .disco-ball__shine, .disco-title,
  .vx-pay, .disco-sticky { animation: none; }
  .disco-title { background-position: 0 center; }
}
/* dnb */
.dnb-title { margin: clamp(6px,1.5vw,12px) 0; padding: 0; line-height: 0.95; display: flex; flex-wrap: wrap; gap: 8px 10px; align-items: center; }
/* forest */
.fst-title { font-family: 'Fraunces', serif; font-weight: 600; font-size: clamp(38px, 8vw, 82px); line-height: 1.02; margin: clamp(10px,2vw,16px) 0 10px; color: var(--ink, #f0e6d2); text-shadow: 0 2px 30px rgba(212,160,86,0.3); }
/* stub */
.stub-title { font-family: 'Archivo Black', sans-serif; font-size: clamp(30px, 6.5vw, 64px); line-height: .96; letter-spacing: -.015em; margin: 8px 0 10px; color: var(--ink, #1a1714); word-break: break-word; }
/* vow */
.vow-title { font-weight: 200; font-size: clamp(40px, 9vw, 88px); line-height: 1.08; letter-spacing: 0.06em; text-transform: uppercase; margin: clamp(16px,3vw,26px) 0; color: var(--ink, #2b2926); animation: vow-fade 1.6s ease 0.1s both; }
@media (prefers-reduced-motion: reduce) {
  .vow-kicker, .vow-title { animation: none; opacity: 1; transform: none; }
}

/* ===== SLOT: lineup (one-offs) ===== */
/* acid */
.acid-names { list-style: none; margin: 0; padding: 0; }
.acid-names li { font-family: 'Archivo Black', sans-serif; text-transform: uppercase; font-size: clamp(20px,3.6vw,34px); line-height: 1.15; padding: 5px 0; color: var(--acid-ink, #eaffea); }
.acid-names li:first-child { color: var(--acid-lime, #b6ff00); text-shadow: 0 0 16px rgba(182,255,0,0.5); }
/* berlin */
.bln-index { list-style: none; margin: 0; padding: 0; }
.bln-index li { display: flex; align-items: baseline; gap: clamp(14px, 2vw, 24px); padding: clamp(10px, 1.4vw, 14px) 10px; border-bottom: 1px solid rgba(55,230,255,0.14); transition: background 0.2s, box-shadow 0.2s, transform 0.2s; }
.bln-index li:last-child { border-bottom: 0; }
.bln-index li:hover { background: rgba(55,230,255,0.07); transform: translateX(6px); box-shadow: inset 3px 0 0 var(--event-accent, #37e6ff), 0 0 22px rgba(55,230,255,0.15); }
.bln-index li:first-child .bln-index__name { color: var(--event-accent, #37e6ff); text-shadow: 0 0 18px rgba(55,230,255,0.6); }
/* discotheque */
.disco-billing { list-style: none; margin: 0; padding: 0; }
.disco-billing li { font-family: 'Playfair Display', serif; font-weight: 900; text-transform: uppercase; font-size: clamp(20px,3.4vw,34px); line-height: 1.15; color: var(--disco-ink, #f6ecff); padding: 6px 0; transition: color 0.2s, text-shadow 0.2s; }
.disco-billing li:hover { color: var(--disco-gold, #f5c451); text-shadow: 0 0 18px rgba(245,196,81,0.6); }
.disco-billing li:first-child { color: var(--disco-gold, #f5c451); }
/* dnb */
.dnb-roster__list { list-style: none; margin: 0; padding: 0; }
.dnb-roster__list li { font-family: 'Anton', sans-serif; text-transform: uppercase; font-size: clamp(18px,2.8vw,26px); line-height: 1.06; padding: 5px 0; border-bottom: 1px dashed rgba(20,19,15,0.35); }
.dnb-roster__list li:first-child { color: #6f7a00; }
.dnb-roster__list li:last-child { border-bottom: 0; }
/* forest */
.fst-lineup { list-style: none; margin: 0; padding: 0; }
.fst-lineup li { font-family: 'Fraunces', serif; font-size: clamp(20px,3.2vw,30px); line-height: 1.2; padding: 5px 0; color: var(--ink, #f0e6d2); }
.fst-lineup li:first-child { color: var(--gold, #d4a056); }
/* stub */
.stub-lineup { font-family: 'Archivo Black', sans-serif; font-size: clamp(17px,3.2vw,26px); line-height: 1.15; margin: 0; }
/* vow */
.vow-acts { list-style: none; margin: 0; padding: 0; }
.vow-acts li { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: clamp(21px,3.4vw,30px); line-height: 1.3; color: var(--ink, #2b2926); }

/* ===== KEYFRAMES carried with swapped looks (vibelooks-oneoffs-20260718) ===== */
/* acid */ @keyframes acid-wave { 0%,100% { transform: skewX(0deg); } 25% { transform: skewX(-3deg); } 75% { transform: skewX(3deg); } }
/* berlin */ @keyframes bln-glitch-a { 0%,92%,100% { transform: translate(0,0); opacity: 0; } 93% { transform: translate(-4px,2px); opacity: 0.9; } 96% { transform: translate(3px,-2px); opacity: 0.9; } }
/* berlin */ @keyframes bln-glitch-b { 0%,90%,100% { transform: translate(0,0); opacity: 0; } 91% { transform: translate(4px,-2px); opacity: 0.85; } 95% { transform: translate(-3px,2px); opacity: 0.85; } }
/* berlin */ @keyframes bln-jitter { 0%,96%,100% { transform: translate(0,0); } 97% { transform: translate(-2px,1px); } 98% { transform: translate(2px,-1px); } }
/* deco */ @keyframes dco-foil { to { background-position: 220% center; } }
/* discotheque */ @keyframes disco-shimmer { to { background-position: 220% center; } }
/* eternal */ @keyframes etn-foil { to { background-position: 220% center; } }
/* launch */ @keyframes lnch-flow { to { background-position: 240% center; } }
/* noir */ @keyframes noir-sheen { to { background-position: 220% center; } }
/* substation */ @keyframes sub-glitch { 0%, 90%, 100% { text-shadow: 0.028em 0 0 rgba(255,42,120,.75), -0.028em 0 0 rgba(0,240,255,.75), 0 0 18px rgba(0,255,157,.55); transform: translate(0, 0) skewX(0); } 91% { text-shadow: -0.06em 0 0 rgba(255,42,120,.95), 0.06em 0 0 rgba(0,240,255,.95), 0 0 30px rgba(0,255,157,.85); transform: translate(3px,-1px) skewX(-3deg); } 93% { text-shadow: 0.07em 0 0 rgba(255,42,120,.95), -0.07em 0 0 rgba(0,240,255,.95), 0 0 30px rgba(0,255,157,.85); transform: translate(-3px, 1px) skewX(2deg); } 95% { transform: translate(2px, 0) skewX(0); } 97% { transform: translate(-1px, 0); } }
/* supper */ @keyframes sup-foil { to { background-position: 220% center; } }
/* velvet */ @keyframes vlv-sheen { to { background-position: 220% center; } }
/* vow */ @keyframes vow-fade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* ===== ONE-OFF VIBES — remaining slots (GENERATED, vibelooks-oneoffs2-20260718) ===== */

/* ===== SLOT: venue (one-offs) ===== */
/* acid */
.acid-venue { font-size: clamp(15px,2vw,19px); font-weight: 700; margin: 0; color: var(--acid-ink, #eaffea); }
/* berlin */
.bln-metabar__venue { color: var(--event-accent, #37e6ff); text-shadow: 0 0 12px rgba(55,230,255,0.5); }
/* discotheque */
.disco-venue { font-size: clamp(15px,2vw,19px); font-weight: 500; margin: 0; color: var(--disco-ink, #f6ecff); }
.disco-hero .disco-title,
.disco-hero .disco-venue { text-shadow: 0 3px 26px rgba(0,0,0,0.6); }
.disco-hero .disco-venue { color: #fff; }
/* dnb */
.dnb-venue { display: inline-flex; flex-wrap: wrap; gap: 6px 14px; align-items: baseline; transform: rotate(0.8deg); margin: clamp(14px,2.5vw,22px) 0 0; font-size: clamp(12px,1.6vw,14px); }
.dnb-venue strong { font-family: 'Anton', sans-serif; font-weight: 400; letter-spacing: 0.02em; font-size: clamp(16px,2.4vw,22px); text-transform: uppercase; }
/* forest */
.fst-venue { font-family: 'Fraunces', serif; font-style: italic; font-size: clamp(17px,2.4vw,22px); color: var(--sage, #8aa97a); margin: 0; }
/* stub */
.stub-venue { font-weight: 700; font-size: clamp(14px,1.9vw,18px); margin: 0; }
/* vow */
.vow-where { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: clamp(19px,2.6vw,25px); margin: 10px 0 0; color: var(--ink, #2b2926); }

/* ===== SLOT: date (one-offs) ===== */
/* acid */
.acid-date { font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; font-size: clamp(11px,1.6vw,13px); color: var(--acid-lime, #b6ff00); text-shadow: 0 0 12px rgba(182,255,0,0.6); }
/* berlin */
.bln-kick { display: inline-block; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: clamp(11px, 1.3vw, 13px); letter-spacing: 0.3em; text-transform: uppercase; color: var(--event-accent, #37e6ff); padding: 6px 12px; border: 1px solid var(--bln-line, rgba(55, 230, 255, 0.28)); box-shadow: 0 0 18px rgba(55,230,255,0.25), inset 0 0 12px rgba(55,230,255,0.08); margin-bottom: clamp(16px, 2vw, 24px); animation: bln-flicker 6s steps(1) infinite; }
@media (prefers-reduced-motion: reduce) {
  .bln-fx *, .bln-fx::before,
  .bln-title, .bln-title::before, .bln-title::after,
  .bln-panel, .bln-caret, .bln-ico,
  .bln-kick, .vx-pay,
  .bln-flyerpanel::after { animation: none !important; }
}
/* discotheque */
.disco-date { font-weight: 700; letter-spacing: 0.24em; text-transform: uppercase; font-size: clamp(11px, 1.5vw, 13px); color: var(--disco-gold, #f5c451); margin-top: clamp(14px,2.5vw,22px); }
/* forest */
.fst-kicker { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; letter-spacing: 0.22em; text-transform: uppercase; font-size: clamp(10px,1.4vw,12px); color: var(--gold, #d4a056); }
.fst-kicker .fst-leaf-i { width: 16px; height: 16px; color: var(--sage, #8aa97a); }
/* stub */
.stub-date { font-weight: 700; letter-spacing: .14em; font-size: clamp(11px,1.5vw,13px); color: var(--stamp, #d8402f); }
/* vow */
.vow-when { font-weight: 300; letter-spacing: 0.16em; font-size: clamp(13px,1.8vw,16px); }

/* ===== SLOT: presented (one-offs) ===== */
/* acid */
.acid-presented { font-size: 12.5px; color: #9fdca0; margin: 8px 0 0; }
.acid-presented a { color: var(--acid-lime, #b6ff00); }
/* berlin */
.bln-metabar span + span:not(.bln-metabar__pres)::before { content: '//'; position: absolute; left: -14px; color: var(--event-accent, #37e6ff); opacity: 0.6; }
.bln-metabar__pres { margin-left: auto; }
.bln-metabar__pres a { color: var(--bln-ink, #eaf6ff); text-decoration: none; border-bottom: 1px solid var(--event-accent, #37e6ff); transition: text-shadow 0.2s, color 0.2s; }
.bln-metabar__pres a:hover { color: var(--event-accent, #37e6ff); text-shadow: 0 0 14px rgba(55,230,255,0.8); }
@media (max-width: 820px) {
  .bln-metabar__pres { margin-left: 0; width: 100%; }
}
/* discotheque */
.disco-presented { font-size: 12.5px; letter-spacing: 0.04em; color: var(--disco-mid, #b9a6d6); margin: 8px 0 0; }
.disco-presented a { color: var(--disco-gold, #f5c451); text-decoration: none; border-bottom: 1px solid rgba(245,196,81,0.4); }
/* dnb */
.dnb-pres { flex-basis: 100%; font-size: 12px; opacity: 0.72; }
.dnb-pres a { color: #7a7a1a; text-decoration: underline; }
/* forest */
.fst-presented { font-size: 12.5px; letter-spacing: 0.05em; color: #b9b089; margin: 8px 0 0; }
.fst-presented a { color: var(--gold, #d4a056); text-decoration: none; border-bottom: 1px solid rgba(212,160,86,0.4); }
/* stub */
.stub-presented { font-size: 13px; opacity: .72; margin: 6px 0 0; }
.stub-presented a { color: var(--stamp, #d8402f); text-decoration: none; border-bottom: 1px solid rgba(216,64,47,.4); }
/* vow */
.vow-host { font-weight: 300; font-size: 12.5px; letter-spacing: 0.06em; color: var(--mute, #8a8178); margin: 8px 0 0; }
.vow-host a { color: var(--clay-d, #a96a4e); text-decoration: none; border-bottom: 1px solid var(--evt-border, rgba(43,41,38,0.14)); }

/* ===== SLOT: blurb (one-offs) ===== */
/* acid */
.acid-blurb { margin-top: clamp(22px,3vw,30px); font-style: italic; color: var(--acid-mag, #ff17c3); font-size: clamp(15px,2vw,18px); line-height: 1.6; overflow-wrap: anywhere; text-shadow: 0 0 14px rgba(255,23,195,0.4); }
/* berlin */
.bln-blurb { font-size: 14.5px; line-height: 1.75; color: #d9c7e8; font-style: italic; white-space: pre-line; overflow-wrap: anywhere; }
/* discotheque */
.disco-blurb { font-family: 'Playfair Display', serif; font-style: italic; font-size: clamp(17px,2.4vw,21px); color: var(--disco-mid, #b9a6d6); margin: clamp(22px,3vw,30px) auto 0; max-width: 46ch; overflow-wrap: anywhere; }
/* dnb */
.dnb-blurb { transform: rotate(0.7deg); margin-top: clamp(20px,3vw,30px); background: var(--dnb-ink, #14130f); color: var(--dnb-paper, #f3f0e6); font-style: italic; line-height: 1.65; overflow-wrap: anywhere; }
.dnb-blurb::after { opacity: 0.06; background-image: radial-gradient(var(--dnb-paper, #f3f0e6) 22%, transparent 24%); }
/* forest */
.fst-blurb { position: relative; text-align: center; font-family: 'Fraunces', serif; font-style: italic; font-size: clamp(17px,2.4vw,21px); color: var(--sage, #8aa97a); margin: clamp(30px,5vw,46px) auto 0; max-width: 46ch; overflow-wrap: anywhere; }
/* stub */
.stub-blurb { font-style: italic; opacity: .8; line-height: 1.6; margin: clamp(16px,3vw,22px) 0 0; }
/* vow */
.vow-blurb { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: clamp(19px,2.6vw,24px); color: var(--clay-d, #a96a4e); margin: clamp(30px,5vw,46px) auto 0; max-width: 40ch; overflow-wrap: anywhere; }

/* ===== SLOT: about (one-offs) ===== */
/* acid */
.acid-prose { font-size: clamp(15px,2vw,17px); line-height: 1.8; color: #d4ffd4; margin: 0; white-space: pre-line; overflow-wrap: anywhere; word-wrap: break-word; }
.acid-prose a { color: var(--acid-lime, #b6ff00); word-break: break-all; }
/* berlin */
.bln-about { font-size: 15.5px; line-height: 1.8; color: #c7dbe8; margin: 0; white-space: pre-line; overflow-wrap: anywhere; word-wrap: break-word; }
.bln-about a { color: var(--event-accent, #37e6ff); text-decoration: underline; text-underline-offset: 3px; text-shadow: 0 0 10px rgba(55,230,255,0.4); overflow-wrap: anywhere; word-break: break-all; }
/* discotheque */
.disco-prose { font-size: clamp(15px,2vw,17px); line-height: 1.8; color: #dccff2; margin: 0; white-space: pre-line; overflow-wrap: anywhere; word-wrap: break-word; }
.disco-prose a { color: var(--disco-gold, #f5c451); word-break: break-all; }
/* dnb */
.dnb-brief__txt { margin: 0; font-family: 'Space Mono', monospace; font-size: 14px; line-height: 1.75; color: #2a2822; white-space: pre-line; overflow-wrap: anywhere; word-wrap: break-word; }
.dnb-brief__txt a { color: #6f7a00; word-break: break-all; }
/* forest */
.fst-prose { font-size: clamp(15px,2vw,17px); line-height: 1.85; color: #ddd2b8; margin: 0; white-space: pre-line; overflow-wrap: anywhere; word-wrap: break-word; }
.fst-prose a { color: var(--gold, #d4a056); word-break: break-all; }
/* stub */
.stub-prose { line-height: 1.7; margin: 0; white-space: pre-line; }
/* vow */
.vow-prose { font-weight: 300; font-size: clamp(15px,2vw,17px); line-height: 1.9; color: #55504a; margin: 0 auto; max-width: 46ch; white-space: pre-line; overflow-wrap: anywhere; word-wrap: break-word; }
.vow-prose a { color: var(--clay-d, #a96a4e); word-break: break-all; }

/* ===== SLOT: section (one-offs) ===== */
/* acid */
.acid-block { margin-top: clamp(28px,5vw,44px); }
/* berlin */
.bln-panel { position: relative; background: linear-gradient(180deg, rgba(12,18,30,0.9), rgba(8,12,22,0.9)); border: 1px solid var(--bln-line, rgba(55, 230, 255, 0.28)); border-radius: 4px; padding: clamp(20px, 2.6vw, 30px); box-shadow: 0 0 22px rgba(55,230,255,0.12), inset 0 0 0 1px rgba(55,230,255,0.05); transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease; animation: bln-panelglow 4.5s ease-in-out infinite; }
.bln-panel::before,
.bln-panel::after { content: ''; position: absolute; width: 16px; height: 16px; pointer-events: none; border: 2px solid var(--event-accent, #37e6ff); filter: drop-shadow(0 0 6px var(--event-accent, #37e6ff)); }
.bln-panel::before { top: -1px; left: -1px; border-right: 0; border-bottom: 0; }
.bln-panel::after { bottom: -1px; right: -1px; border-left: 0; border-top: 0; }
.bln-panel:hover { transform: translateY(-4px); border-color: var(--event-accent, #37e6ff); box-shadow: 0 12px 40px -8px rgba(55,230,255,0.45), 0 0 40px rgba(255,47,176,0.2); }
@media (prefers-reduced-motion: reduce) {
  .bln-fx *, .bln-fx::before,
  .bln-title, .bln-title::before, .bln-title::after,
  .bln-panel, .bln-caret, .bln-ico,
  .bln-kick, .vx-pay,
  .bln-flyerpanel::after { animation: none !important; }
}
/* discotheque */
.disco-panel { margin-top: clamp(30px,5vw,46px); text-align: left; background: linear-gradient(180deg, rgba(40,22,64,0.72), rgba(16,8,28,0.72)); border: 1px solid rgba(245,196,81,0.34); border-radius: 18px; padding: clamp(20px,4vw,32px); box-shadow: 0 30px 70px -34px rgba(0,0,0,0.8), inset 0 0 0 1px rgba(255,255,255,0.04); backdrop-filter: blur(4px); }
.disco-panel .disco-rule { margin-top: 0; }
/* dnb */
.dnb-scrap { position: relative; background: var(--dnb-paper, #f3f0e6); color: var(--dnb-ink, #14130f); padding: clamp(14px, 2.4vw, 22px) clamp(16px, 2.6vw, 26px); box-shadow: 0 16px 30px -18px rgba(0,0,0,0.85); transition: transform 0.22s ease; }
.dnb-scrap::after { content: ''; position: absolute; inset: 0; pointer-events: none; opacity: 0.10; background-image: radial-gradient(var(--dnb-ink, #14130f) 22%, transparent 24%); background-size: 6px 6px; }
/* forest */
.fst-station { position: relative; z-index: 1; text-align: center; padding: clamp(18px,3vw,28px) clamp(16px,4vw,32px); margin: clamp(30px,5vw,50px) 0 0; background: rgba(11,21,14,0.62); -webkit-backdrop-filter: blur(12px) saturate(1.1); backdrop-filter: blur(12px) saturate(1.1); border: 1px solid rgba(212,160,86,0.34); border-radius: 24px; box-shadow: 0 24px 60px -30px rgba(0,0,0,0.9), inset 0 0 0 1px rgba(212,160,86,0.06); }
.fst-station:first-child { margin-top: clamp(20px,4vw,34px); }
/* stub */
.stub-panel { margin-top: clamp(18px,3vw,26px); background: linear-gradient(135deg, var(--cream, #f6efe0), var(--cream-2, #efe5d2)); color: var(--ink, #1a1714); border-radius: 16px; padding: clamp(20px,4vw,34px); box-shadow: 0 30px 70px -40px rgba(0,0,0,.7); }
.stub-panel .vx-tickets__head { font-family: 'Archivo Black', sans-serif; color: var(--ink, #1a1714); }
.stub-panel .vx-tier__low { color: var(--stamp, #d8402f); }
.stub-panel .vx-pay { box-shadow: 0 12px 30px -12px rgba(216,64,47,.6); }
/* vow */
.vow-moment { position: relative; padding: clamp(22px,4vw,34px) 0; }
/* ===== KEYFRAMES (remaining-slot pass) ===== */
/* berlin */ @keyframes bln-flicker { 0%,97%,100% { opacity: 1; } 98% { opacity: 0.55; } 99% { opacity: 0.85; } }
/* berlin */ @keyframes bln-panelglow { 0%,100% { box-shadow: 0 0 18px rgba(55,230,255,0.10), inset 0 0 0 1px rgba(55,230,255,0.05); } 50% { box-shadow: 0 0 30px rgba(55,230,255,0.20), inset 0 0 0 1px rgba(55,230,255,0.08); } }

/* ===== SECTION INK — a swapped-in container carries readable text color for its children
       (scoped to [data-vk-look] so home pages are untouched). vibelooks-fix2-20260718 ===== */
/* headliner */ .hdl-block[data-vk-look], .hdl-block[data-vk-look] p, .hdl-block[data-vk-look] li, .hdl-block[data-vk-look] div, .hdl-block[data-vk-look] span, .hdl-block[data-vk-look] h1, .hdl-block[data-vk-look] h2, .hdl-block[data-vk-look] h3, .hdl-block[data-vk-look] h4, .hdl-block[data-vk-look] a { color: #d4cdb8; }
/* junglist */ .jng-block[data-vk-look], .jng-block[data-vk-look] p, .jng-block[data-vk-look] li, .jng-block[data-vk-look] div, .jng-block[data-vk-look] span, .jng-block[data-vk-look] h1, .jng-block[data-vk-look] h2, .jng-block[data-vk-look] h3, .jng-block[data-vk-look] h4, .jng-block[data-vk-look] a { color: #c8e8c8; }
/* sub_bass */ .sb-block[data-vk-look], .sb-block[data-vk-look] p, .sb-block[data-vk-look] li, .sb-block[data-vk-look] div, .sb-block[data-vk-look] span, .sb-block[data-vk-look] h1, .sb-block[data-vk-look] h2, .sb-block[data-vk-look] h3, .sb-block[data-vk-look] h4, .sb-block[data-vk-look] a { color: #d0c4e4; }
/* substation */ .sub-block[data-vk-look], .sub-block[data-vk-look] p, .sub-block[data-vk-look] li, .sub-block[data-vk-look] div, .sub-block[data-vk-look] span, .sub-block[data-vk-look] h1, .sub-block[data-vk-look] h2, .sub-block[data-vk-look] h3, .sub-block[data-vk-look] h4, .sub-block[data-vk-look] a { color: #d0d0d0; }
/* candlelight */ .cdl-panel[data-vk-look], .cdl-panel[data-vk-look] p, .cdl-panel[data-vk-look] li, .cdl-panel[data-vk-look] div, .cdl-panel[data-vk-look] span, .cdl-panel[data-vk-look] h1, .cdl-panel[data-vk-look] h2, .cdl-panel[data-vk-look] h3, .cdl-panel[data-vk-look] h4, .cdl-panel[data-vk-look] a { color: #f0e4cf; }
/* deco */ .dco-panel[data-vk-look], .dco-panel[data-vk-look] p, .dco-panel[data-vk-look] li, .dco-panel[data-vk-look] div, .dco-panel[data-vk-look] span, .dco-panel[data-vk-look] h1, .dco-panel[data-vk-look] h2, .dco-panel[data-vk-look] h3, .dco-panel[data-vk-look] h4, .dco-panel[data-vk-look] a { color: #f4e3a6; }
/* garden */ .grd-panel[data-vk-look], .grd-panel[data-vk-look] p, .grd-panel[data-vk-look] li, .grd-panel[data-vk-look] div, .grd-panel[data-vk-look] span, .grd-panel[data-vk-look] h1, .grd-panel[data-vk-look] h2, .grd-panel[data-vk-look] h3, .grd-panel[data-vk-look] h4, .grd-panel[data-vk-look] a { color: #34372c; }
/* harvest */ .hrv-panel[data-vk-look], .hrv-panel[data-vk-look] p, .hrv-panel[data-vk-look] li, .hrv-panel[data-vk-look] div, .hrv-panel[data-vk-look] span, .hrv-panel[data-vk-look] h1, .hrv-panel[data-vk-look] h2, .hrv-panel[data-vk-look] h3, .hrv-panel[data-vk-look] h4, .hrv-panel[data-vk-look] a { color: #efe2cc; }
/* noir */ .noir-panel[data-vk-look], .noir-panel[data-vk-look] p, .noir-panel[data-vk-look] li, .noir-panel[data-vk-look] div, .noir-panel[data-vk-look] span, .noir-panel[data-vk-look] h1, .noir-panel[data-vk-look] h2, .noir-panel[data-vk-look] h3, .noir-panel[data-vk-look] h4, .noir-panel[data-vk-look] a { color: #efe9da; }
/* velvet */ .vlv-panel[data-vk-look], .vlv-panel[data-vk-look] p, .vlv-panel[data-vk-look] li, .vlv-panel[data-vk-look] div, .vlv-panel[data-vk-look] span, .vlv-panel[data-vk-look] h1, .vlv-panel[data-vk-look] h2, .vlv-panel[data-vk-look] h3, .vlv-panel[data-vk-look] h4, .vlv-panel[data-vk-look] a { color: #f3ecdd; }
/* eternal */ .etn-card[data-vk-look], .etn-card[data-vk-look] p, .etn-card[data-vk-look] li, .etn-card[data-vk-look] div, .etn-card[data-vk-look] span, .etn-card[data-vk-look] h1, .etn-card[data-vk-look] h2, .etn-card[data-vk-look] h3, .etn-card[data-vk-look] h4, .etn-card[data-vk-look] a { color: #9c7c31; }
/* launch */ .lnch-panel[data-vk-look], .lnch-panel[data-vk-look] p, .lnch-panel[data-vk-look] li, .lnch-panel[data-vk-look] div, .lnch-panel[data-vk-look] span, .lnch-panel[data-vk-look] h1, .lnch-panel[data-vk-look] h2, .lnch-panel[data-vk-look] h3, .lnch-panel[data-vk-look] h4, .lnch-panel[data-vk-look] a { color: #eef0fb; }
/* house */ .hse-block[data-vk-look], .hse-block[data-vk-look] p, .hse-block[data-vk-look] li, .hse-block[data-vk-look] div, .hse-block[data-vk-look] span, .hse-block[data-vk-look] h1, .hse-block[data-vk-look] h2, .hse-block[data-vk-look] h3, .hse-block[data-vk-look] h4, .hse-block[data-vk-look] a { color: #c9a98a; }
/* summit */ .smt-section[data-vk-look], .smt-section[data-vk-look] p, .smt-section[data-vk-look] li, .smt-section[data-vk-look] div, .smt-section[data-vk-look] span, .smt-section[data-vk-look] h1, .smt-section[data-vk-look] h2, .smt-section[data-vk-look] h3, .smt-section[data-vk-look] h4, .smt-section[data-vk-look] a { color: #93a6c4; }
/* supper */ .sup-section[data-vk-look], .sup-section[data-vk-look] p, .sup-section[data-vk-look] li, .sup-section[data-vk-look] div, .sup-section[data-vk-look] span, .sup-section[data-vk-look] h1, .sup-section[data-vk-look] h2, .sup-section[data-vk-look] h3, .sup-section[data-vk-look] h4, .sup-section[data-vk-look] a { color: #4a3b30; }
/* acid */ .acid-block[data-vk-look], .acid-block[data-vk-look] p, .acid-block[data-vk-look] li, .acid-block[data-vk-look] div, .acid-block[data-vk-look] span, .acid-block[data-vk-look] h1, .acid-block[data-vk-look] h2, .acid-block[data-vk-look] h3, .acid-block[data-vk-look] h4, .acid-block[data-vk-look] a { color: #d4ffd4; }
/* berlin */ .bln-panel[data-vk-look], .bln-panel[data-vk-look] p, .bln-panel[data-vk-look] li, .bln-panel[data-vk-look] div, .bln-panel[data-vk-look] span, .bln-panel[data-vk-look] h1, .bln-panel[data-vk-look] h2, .bln-panel[data-vk-look] h3, .bln-panel[data-vk-look] h4, .bln-panel[data-vk-look] a { color: #c7dbe8; }
/* discotheque */ .disco-panel[data-vk-look], .disco-panel[data-vk-look] p, .disco-panel[data-vk-look] li, .disco-panel[data-vk-look] div, .disco-panel[data-vk-look] span, .disco-panel[data-vk-look] h1, .disco-panel[data-vk-look] h2, .disco-panel[data-vk-look] h3, .disco-panel[data-vk-look] h4, .disco-panel[data-vk-look] a { color: #dccff2; }
/* dnb */ .dnb-scrap[data-vk-look], .dnb-scrap[data-vk-look] p, .dnb-scrap[data-vk-look] li, .dnb-scrap[data-vk-look] div, .dnb-scrap[data-vk-look] span, .dnb-scrap[data-vk-look] h1, .dnb-scrap[data-vk-look] h2, .dnb-scrap[data-vk-look] h3, .dnb-scrap[data-vk-look] h4, .dnb-scrap[data-vk-look] a { color: #2a2822; }
/* forest */ .fst-station[data-vk-look], .fst-station[data-vk-look] p, .fst-station[data-vk-look] li, .fst-station[data-vk-look] div, .fst-station[data-vk-look] span, .fst-station[data-vk-look] h1, .fst-station[data-vk-look] h2, .fst-station[data-vk-look] h3, .fst-station[data-vk-look] h4, .fst-station[data-vk-look] a { color: #ddd2b8; }
/* stub */ .stub-panel[data-vk-look], .stub-panel[data-vk-look] p, .stub-panel[data-vk-look] li, .stub-panel[data-vk-look] div, .stub-panel[data-vk-look] span, .stub-panel[data-vk-look] h1, .stub-panel[data-vk-look] h2, .stub-panel[data-vk-look] h3, .stub-panel[data-vk-look] h4, .stub-panel[data-vk-look] a { color: #1a1714; }
/* vow */ .vow-moment[data-vk-look], .vow-moment[data-vk-look] p, .vow-moment[data-vk-look] li, .vow-moment[data-vk-look] div, .vow-moment[data-vk-look] span, .vow-moment[data-vk-look] h1, .vow-moment[data-vk-look] h2, .vow-moment[data-vk-look] h3, .vow-moment[data-vk-look] h4, .vow-moment[data-vk-look] a { color: #55504a; }

/* ===== SLOT: flyer — the hero/flyer image treatment (GENERATED, vibeflyer-20260718) ===== */
/* headliner */
.hdl-flyer { position: relative; box-shadow: 0 30px 70px -24px rgba(0, 0, 0, 0.5); transition: transform 0.3s, box-shadow 0.3s; } /* goldframe-20260720: removed the gold gradient frame + 8px pad + gold glow (Shock: gold frame around the flyer not good) — clean neutral card; gold TITLE untouched */
.hdl-flyer:hover { transform: scale(1.012) translateY(-3px); box-shadow: 0 36px 90px -22px rgba(0, 0, 0, 0.6); } /* goldframe-20260720: neutral hover shadow (was gold glow) */
.hdl-flyer img { display: block; width: 100%; height: auto; }
.hdl-flyer { max-width: 100%; }
.hdl-flyer img { max-width: 100%; }
.hdl-flyer { position: relative; z-index: 1; border-radius: 3px; overflow: hidden; background: #05060a; }
.hdl-flyer img { display: block; width: 100%; height: auto; max-height: 84vh; object-fit: contain; }
@media (max-width: 900px) {
  .hdl-flyer img { max-height: none; }
}
/* junglist */
.jng-flyer { position: relative; background: #050505; border: 2px solid var(--event-accent, #00ff41); box-shadow: 6px 6px 0 var(--event-accent-2, #00ffff); transition: transform 0.2s, box-shadow 0.2s; }
.jng-flyer:hover { transform: translate(-2px, -2px) rotate(-0.5deg); box-shadow: 10px 10px 0 var(--event-accent-2, #00ffff); }
.jng-flyer img { display: block; width: 100%; height: auto; }
.jng-flyer { max-width: 100%; }
.jng-flyer img { max-width: 100%; }
/* sub_bass */
.sb-flyer { background: #0c0220; display: block; }
.sb-flyer img { display: block; width: 100%; height: auto; }
.sb-flyer { max-width: 100%; }
.sb-flyer img { max-width: 100%; }
/* substation */
.sub-flyer { position: relative; border: 1px solid rgba(255,255,255,0.08); background: #0c0c0c; }
.sub-flyer img { display: block; width: 100%; height: auto; }
.sub-flyer::before,
.sub-flyer::after { content: ''; position: absolute; width: 18px; height: 18px; border: 1px solid var(--event-accent, #00ff9d); pointer-events: none; }
.sub-flyer::before { top: -6px; left: -6px; border-right: 0; border-bottom: 0; }
.sub-flyer::after { bottom: -6px; right: -6px; border-left: 0; border-top: 0; }
.sub-flyer { transition: transform 0.25s, box-shadow 0.25s; }
.sub-flyer:hover { transform: scale(1.012); box-shadow: 0 0 40px -10px var(--event-accent, #00ff9d); }
.sub-flyer { max-width: 100%; }
.sub-flyer img { max-width: 100%; }
/* playa */
.ply-flyer { position: relative; margin: clamp(20px, 4vw, 40px) auto clamp(30px, 5vw, 50px); max-width: 440px; transform: rotate(-1.6deg); background: #120a06; padding: 10px; border: 1px solid rgba(233,211,172,0.25); box-shadow: 0 30px 60px -28px rgba(0,0,0,0.8); }
.ply-flyer img { display: block; width: 100%; height: auto; max-width: 100%; }
@media (max-width: 560px) {
  .ply-flyer { transform: none; max-width: 100%; }
}
/* candlelight */
/* flyerwhole-20260902: swapped-in frames now match the native ones — the flyer is shown WHOLE (see each vibe's own stylesheet). */
.cdl-photo { width: min(440px, 88vw); height: auto; overflow: hidden; margin: clamp(26px,5vw,40px) auto 0; border: 1px solid var(--evt-border, rgba(230,179,92,.28)); border-radius: 8px; box-shadow: 0 30px 70px -40px rgba(230,179,92,.45); }
.cdl-photo img { width: 100%; height: auto; object-fit: contain; display: block; }
/* deco */
.dco-photo { position: relative; margin: clamp(26px,4vw,40px) auto 0; width: 100%; overflow: hidden; padding: 10px; background: linear-gradient(135deg, var(--gold-d, #9a7f34), var(--gold, #d9b95c) 50%, var(--gold-d, #9a7f34)); box-shadow: 0 30px 70px -34px rgba(0,0,0,0.8); }
.dco-photo::before { content: ''; position: absolute; inset: 10px; z-index: 0; pointer-events: none; background: var(--onyx, #0a0a0d); }
.dco-photo::after { content: ''; position: absolute; inset: -20px; z-index: 0; pointer-events: none; background: var(--flyer) center / cover no-repeat; filter: blur(30px) brightness(.45) saturate(.9); clip-path: inset(30px); }
.dco-photo img { position: relative; z-index: 1; display: block; width: min(440px, 100%); height: auto; object-fit: contain; margin: clamp(14px,3vw,28px) auto; box-shadow: 0 24px 50px -24px rgba(0,0,0,.9); }
/* garden */
.grd-photo { --grd-crown: clamp(58px, 11vw, 84px); position: relative; width: min(440px, 88vw); height: auto; margin: clamp(26px,5vw,40px) auto 0; padding: calc(var(--grd-crown) + clamp(8px,1.6vw,12px)) clamp(10px,2vw,14px) clamp(10px,2vw,14px); background: linear-gradient(180deg, #fffdf6, #f9f6ec); border: 1px solid var(--evt-border, rgba(86,98,74,.28)); border-radius: 50% 50% 16px 16px / calc(var(--grd-crown) + 14px) calc(var(--grd-crown) + 14px) 16px 16px; box-shadow: 0 30px 60px -34px rgba(52,55,44,.4), 0 1px 0 rgba(255,255,255,.8) inset; }
.grd-photo::before { content: ''; position: absolute; inset: 6px; pointer-events: none; border: 1px solid rgba(86,98,74,.22); border-radius: 50% 50% 12px 12px / calc(var(--grd-crown) + 8px) calc(var(--grd-crown) + 8px) 12px 12px; }
.grd-photo::after { content: ''; position: absolute; left: 50%; top: calc(var(--grd-crown) * .42); transform: translate(-50%, -50%); width: clamp(60px,14vw,110px); height: 18px; pointer-events: none; background: radial-gradient(closest-side, var(--terra, #c47a52) 0 60%, transparent 62%) center/12px 18px no-repeat, linear-gradient(90deg, transparent, var(--sage, #7d8b6a), transparent) center/100% 1px no-repeat; }
.grd-photo img { position: relative; width: 100%; height: auto; display: block; object-fit: contain; border-radius: 8px; outline: 1px solid rgba(86,98,74,.18); outline-offset: -1px; }
/* harvest */
.hrv-photo { width: min(440px, 88vw); height: auto; overflow: hidden; margin: clamp(26px,5vw,40px) auto 0; border: 1px solid var(--evt-border, rgba(217,154,82,.30)); border-radius: 10px; box-shadow: 0 30px 70px -40px rgba(217,154,82,.4); }
.hrv-photo img { width: 100%; height: auto; object-fit: contain; display: block; }
/* noir */
.noir-photo { width: 100%; height: auto; overflow: hidden; margin: 0; border: 1px solid var(--gold, #d4af37); border-radius: 3px; box-shadow: 0 30px 70px -40px rgba(212,175,55,.5); }
.noir-photo img { width: 100%; height: auto; object-fit: contain; display: block; }
@media (max-width: 860px) {
  .noir-photo { width: min(440px, 88vw); margin: 0 auto; }
}
/* velvet */
.vlv-photo { width: min(440px, 88vw); height: auto; overflow: hidden; margin: clamp(26px,5vw,40px) auto 0; border-radius: 20px; border: 1px solid var(--gold, #e6c98a); box-shadow: 0 30px 70px -40px rgba(230,201,138,.5); }
.vlv-photo img { width: 100%; height: auto; object-fit: contain; display: block; }
/* launch */
.lnch-photo { border-radius: 16px; overflow: hidden; border: 1px solid var(--evt-border, rgba(124,92,255,.30)); margin-bottom: clamp(18px,3vw,26px); box-shadow: 0 30px 60px -36px rgba(124,92,255,.5); }
.lnch-photo img { width: 100%; display: block; }
/* acid */
.acid-portal { position: relative; width: min(70vw, 380px); aspect-ratio: 1; margin: 0 auto clamp(20px,4vw,34px); display: grid; place-items: center; }
/* berlin */
.bln-flyerpanel { padding: 8px; overflow: hidden; }
.bln-flyerpanel img { display: block; width: 100%; height: auto; max-width: 100%; border-radius: 2px; transition: transform 0.4s ease, filter 0.4s ease; }
.bln-flyerpanel:hover img { transform: scale(1.03); filter: saturate(1.15) contrast(1.05); }
.bln-flyerpanel > img + span, .bln-flyerpanel::after { content: ''; position: absolute; left: 0; right: 0; height: 40%; top: -40%; background: linear-gradient(180deg, transparent, rgba(55,230,255,0.18), transparent); pointer-events: none; animation: bln-flyerscan 4.5s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  .bln-fx *, .bln-fx::before,
  .bln-title, .bln-title::before, .bln-title::after,
  .bln-panel, .bln-caret, .bln-ico,
  .bln-kick, .vx-pay,
  .bln-flyerpanel::after { animation: none !important; }
}
/* dnb */
.dnb-photo { position: relative; flex: 1 1 300px; max-width: 420px; margin: 0; background: #fff; padding: 10px 10px 12px; transform: rotate(-3deg); box-shadow: 0 26px 44px -20px rgba(0,0,0,0.9); transition: transform 0.25s ease; }
.dnb-photo:hover { transform: rotate(0deg); }
.dnb-photo img { display: block; width: 100%; height: auto; filter: grayscale(1) contrast(1.35) brightness(0.98); }
@media (max-width: 640px) {
  .dnb-photo { transform: rotate(-1.5deg); max-width: 100%; }
}
/* forest */
.fst-arch { --fst-crown: clamp(58px, 11vw, 84px); position: relative; width: 100%; height: auto; overflow: hidden; display: grid; place-items: center; padding: calc(var(--fst-crown) + 14px) clamp(14px,3vw,24px) clamp(14px,3vw,24px); background: var(--moss-2, #14241a); border-radius: 50% 50% 20px 20px / calc(var(--fst-crown) + 17px) calc(var(--fst-crown) + 17px) 20px 20px; border: 3px solid var(--gold, #d4a056); box-shadow: 0 40px 80px -34px rgba(0,0,0,0.8), inset 0 0 60px rgba(0,0,0,0.4); margin-bottom: clamp(20px,4vw,32px); }
.fst-arch::before { content: ''; position: absolute; inset: -32px; z-index: 0; pointer-events: none; background: var(--flyer) center / cover no-repeat; filter: blur(32px) brightness(.5) saturate(.9); }
.fst-arch img { position: relative; z-index: 2; width: min(440px, 100%); height: auto; object-fit: contain; display: block; border-radius: 8px; box-shadow: 0 26px 56px -26px rgba(0,0,0,.9), 0 0 0 1px rgba(212,160,86,.35); }
.fst-arch__scrim { z-index: 1; pointer-events: none; }
/* stub */
.stub-flyer { border-radius: 10px; overflow: hidden; margin-bottom: clamp(16px,3vw,24px); box-shadow: 0 14px 34px -16px rgba(0,0,0,.4); }
.stub-flyer img { width: 100%; display: block; }
/* vow */
.vow-band { position: relative; width: 100%; overflow: hidden; margin: clamp(34px,6vw,54px) 0 0; padding: clamp(22px,4vw,40px) 0; display: grid; place-items: center; border-radius: 2px; background: var(--paper-2, #f1ece4); -webkit-mask: radial-gradient(120% 100% at 50% 50%, #000 78%, transparent 100%); mask: radial-gradient(120% 100% at 50% 50%, #000 78%, transparent 100%); }
.vow-band::before { content: ''; position: absolute; inset: -32px; z-index: 0; pointer-events: none; background: var(--flyer) center / cover no-repeat; filter: blur(34px) saturate(.8) brightness(1.08); opacity: .8; }
.vow-band img { position: relative; z-index: 1; width: min(420px, 72%); height: auto; object-fit: contain; display: block; filter: saturate(0.94); border-radius: 2px; box-shadow: 0 30px 60px -30px rgba(43,41,38,.45); }
@media (max-width: 640px) { .vow-band img { width: 82%; } }
/* =============================================================================
   [flyerfit-20260817]  THE FRAMES CROPPED THE FLYER.

   Shock, looking at event 50 in the studio: "all of the text is getting cut off
   … the vibe actually looks pretty terrible."

   Measured, not guessed. The flyer is 1080x1080 — a square, which is what a
   promoter exports from Instagram and where the text runs to the very edge. It
   was rendered into `.fst-arch`, a frame with `aspect-ratio: 4 / 3.4` and
   `overflow: hidden`, through `object-fit: cover`. Cover fills the wider box,
   so the square scaled to 538x538 inside a frame only 457 tall: 81px destroyed,
   40 off the top and 40 off the bottom. The top 40 was the promoter's
   "BASSBIN BLISS PRODUCTIONS" line; the bottom 40 was their artwork.

   This was never an arch problem. EIGHT frames in this file pair a hard ratio
   with object-fit:cover, and every one of them does the same thing to a square
   flyer — the arch is just where it got noticed. Cover is right for a
   photograph, where trimming an edge costs nothing. It is wrong for a FLYER,
   which is a finished composition: every edge is somebody's typography.

   The rule below says: a frame stops dictating a shape once a real image is in
   it, and the image is fitted rather than cropped. Empty frames keep their
   ratio — without it a placeholder collapses to zero height.

   Frames that already sized to their image (.ply-flyer, .lnch-photo,
   .bln-flyerpanel, .dnb-photo, .stub-flyer) are untouched: they were correct.
   `.acid-portal` is NOT in this list — it is a decorative grid container with
   no image rule, so it never cropped anything.

   The `max-height` caps are restated on the img, not left on the frame. The cap
   exists so a hero cannot eat the screen, and that is still worth having — but
   a cap on a clipping frame is just cropping by another name, so it moves onto
   the image where `contain` can letterbox instead of cut.

   :has() is Chrome 105+ / Safari 15.4+ / Firefox 121+. Older browsers drop the
   frame half of each pair and keep today's behaviour — degraded, never worse.
   ========================================================================== */
/* flyerwhole-20260902: the rules that used to sit here are RETIRED. They only ever reached a hero SWAPPED IN from
   another vibe — a native page declares `.event-garden .grd-photo img { object-fit: cover }`, which is
   more specific than the bare `.grd-photo img` this file could write, so the 08-17 fix never applied
   to a plain garden / forest / vow page, and on 2026-09-02 a new promoter's flyer was cropped exactly
   this way on a native garden page. The fix now lives in EVERY vibe's own stylesheet (whole flyer, the
   frame kept as a mat), and the frames above are de-scoped copies of those rules, so swapped and
   native heroes render the same. Note for the record: `.acid-portal__img img` DID crop (object-fit:
   cover in acid.css) — the note above saying acid never cropped was wrong; fixed natively. */

/* -----------------------------------------------------------------------------
   [flyerdome-20260817]  AND THEN THE DOME WAS STILL EATING THE TOP LINE.

   Fitting the image fixed the top and bottom EDGES, and Shock came straight
   back: "the flyer is still getting clipped." He was right, and it was a second
   mechanism, not a miss — `overflow:hidden` clips to the border-radius, so the
   frame's SHAPE was cutting the artwork even though the whole image was inside
   its box.

   .fst-arch's dome is `50% 50% ... / 34% 34% ...`. On the 544px frame that is a
   272x185px ellipse at each top corner. Solving it for how far in the curve
   cuts at a given depth:

       10px down .... 184px hidden EACH side
       25px down .... 135px
       40px down .... 103px   <- the "FOUNDATION ENTERTAINMENT" line
       80px down ....  71px

   206px of a 544px frame — 38% of the width — gone at exactly the line a
   promoter puts their name on. A flyer is not a photograph: it is composed to
   its own edges, so a decorative curve drawn over it is drawn over somebody's
   typography.

   Softened to 30%/8%, which Shock picked from four rendered against this real
   flyer. It still reads as an arch — the shape the Forest swap is known for —
   and takes 1px at that line instead of 103.

   .grd-photo gets the same treatment: its `999px 999px` top is a FULL dome, so
   it clips a square flyer at least as hard. Fixed in the same pass rather than
   waiting for the next promoter to find it.

   :has(img) again, so an EMPTY frame keeps the dramatic dome it was designed
   with. The curve is only a problem when there is artwork underneath it.
   -------------------------------------------------------------------------- */
/* flyerwhole-20260902: retired — the crown is now an elliptical MAT whose vertical radius equals its own height,
   so the curve can never reach the flyer; the shape is set on the frames above. */

/* -----------------------------------------------------------------------------
   [flyertop-20260817]  THE TWO COLUMNS STOPPED STARTING AT THE SAME LINE.

   Letting the arch keep its own height moved the flyer up, and the misalignment
   that had been hiding underneath it showed. Shock: "that pushed the right side
   higher then the left side can we bring the left side up to meet the right."

   It measured as exactly one margin. Both grid columns already start at the same
   y — 32px, the .sub-grid padding — and `align-items: start` holds them there.
   The flyer's .fst-arch sits at 32. The other column's first block sat at 66,
   because .fst-station:first-child (line ~630) carries margin-top
   clamp(20px,4vw,34px), which computes to 34 at this width. 32 + 34 = 66.

   That margin is CORRECT where it was written for: the Forest layout stacks the
   station block under a hero in one column, and it needs air above it. It is
   wrong when the block is the first thing in its own column standing BESIDE the
   flyer, because then there is nothing above it to be spaced from — the grid
   padding already did that job, and the margin just adds a second helping.

   So it is removed only in that arrangement, scoped to .sub-grid, and only for
   the FIRST station block: stacked siblings keep the spacing between them.

   The left comes UP to 32 rather than the flyer being pushed DOWN to 66, which
   is what was asked for and also the right answer — 34px of dead space at the
   top of the page is not worth preserving for symmetry's sake.
   -------------------------------------------------------------------------- */
.sub-grid > * > .fst-station:first-child { margin-top: 0; }

/* -----------------------------------------------------------------------------
   [blurbswap-20260817]  A SWAPPED BLURB KEPT WEARING SUBSTATION'S CLOTHES.

   Shock, on the LIVE event page: "it's selected as forest just like the rest of
   the boxes but it's not showing up the same … the text font is different and so
   is the text size."

   Worth being exact about what was actually wrong, because my first reading was
   not: the swap system does NOT restyle typography at all. applyLook()
   (assets/vibe_looks.js:61) swaps the CLASS on the slot host and nothing else —
   it never touches inline style and never touches inner elements. The neighbouring
   About block is not Forest-fonted either; it just uses the page's default body
   font, so it reads as consistent. The blurb stood out because .sub-blurb layers
   its OWN decoration on top — a left accent bar, a background tint, italic, and
   15px against About's 16px — and all of it survived the swap.

   So the fix is not to teach swaps about fonts. It is to let substation's blurb
   decoration step aside when its host has been swapped to somebody else's look,
   which is what [data-vk-look] on the host means. Unswapped, none of this
   matches and the blurb is untouched.

   Kept to the decoration only. Nothing here sets a font-family: the per-look
   descendant rules above (the GENERATED colour block) are the one place looks
   reach inside a host, and widening that to typography would change every
   swapped block on every live page — a bigger change than this bug earns.
   -------------------------------------------------------------------------- */
/* [blurbtop-20260817] The blurb sat 46px below the top of its own panel.

   Shock: "the text is pushed down in the box and doesn't start at the top of the
   box like the rest of them do."

   Measured against its neighbour rather than by eye, which is what made it
   clear-cut: the About panel's text also starts low — 62px — but that space is
   OCCUPIED, by the "ABOUT" label. The blurb panel has no label, so its 75px
   (28px panel padding + `.fst-blurb`'s own `margin: clamp(30px,5vw,46px) 0 0`)
   is 46px of nothing.

   That margin is right when the blurb FOLLOWS something — it is the gap between
   the blurb and whatever it trails. As the first and only thing in a panel there
   is nothing above it to be spaced from, and the panel's padding already did the
   job. Exactly the same mistake, and the same fix, as
   `.sub-grid > * > .fst-station:first-child` above.

   CLASS-AGNOSTIC on purpose. The obvious rule is
   `.fst-station > .fst-blurb:first-child`, and it works — until the blurb is
   swapped to another vibe, at which point the class becomes .sub-blurb or any of
   a dozen others and the fix silently stops applying. Shock swapped this very
   block twice while I was measuring it, which is how that got caught.

   The general statement is also the true one, and this is now the THIRD place it
   has bitten: A PANEL'S FIRST CHILD NEVER NEEDS A TOP MARGIN — the panel's own
   padding (28px here) IS that space, so a margin stacked on it is always double
   spacing. Bounded to .fst-station rather than made global, because that is
   where it has actually been observed. */
.fst-station > :first-child { margin-top: 0; }

[data-vk-look] > .sub-blurb {
  border-left: 0;
  background: transparent;
  padding: 0;
  font-style: normal;
  font-size: 16px;     /* match .sub-about, its neighbour in the same column */
}

/* ===== KEYFRAMES (flyer pass) ===== */
/* berlin */ @keyframes bln-flyerscan { 0% { top: -45%; } 100% { top: 105%; } }


/* =============================================================================
   paybtn-20260718 — BUY BUTTON swap library (Shock: "swap out buttons from
   other vibes"). .vx-pay is the SAME markup class on every vibe (it must stay
   for the ticket form), so unlike other slots these swaps ride a COMPANION
   class: .vx-pay.vkpay-<vibe>, generated from each vibe's own panel-button
   styling with vars resolved to literals. !important beats the home vibe's
   ancestor-scoped rules (.event-x .x-panel .vx-pay). 17 vibes donate distinct
   looks; 7 (hero family + candlelight/garden/harvest) style their panel button
   with the base theme so they carry marker-only entries below (receive-only).
   ============================================================================= */
.vx-pay.vkpay-playa { background:linear-gradient(135deg, #b8531f, #e8794a) !important; border-radius:6px !important; font-family:'Archivo Black', sans-serif !important; text-transform:uppercase !important; letter-spacing:0.04em !important; box-shadow:0 12px 26px -10px rgba(184,83,31,0.6) !important; }
.vx-pay.vkpay-deco { background:linear-gradient(100deg, #9a7f34, #f4e3a6, #9a7f34) !important; background-size:200% auto !important; color:#0a0a0d !important; border-radius:0 !important; font-family:'Poiret One', cursive !important; letter-spacing:0.14em !important; text-transform:uppercase !important; font-size:clamp(15px,1.9vw,17px) !important; animation:dco-foil 7s linear infinite !important; }
.vx-pay.vkpay-noir { background:linear-gradient(100deg, #b9962b, #f3e2a3, #b9962b) !important; background-size:200% auto !important; animation:noir-sheen 6s linear infinite !important; letter-spacing:.06em !important; text-transform:uppercase !important; font-size:clamp(15px, 1.9vw, 17px) !important; }
.vx-pay.vkpay-velvet { background:linear-gradient(100deg, #b8943f, #fff4d8, #b8943f) !important; background-size:200% auto !important; animation:vlv-sheen 7s linear infinite !important; border-radius:999px !important; }
.vx-pay.vkpay-eternal { background:linear-gradient(135deg, #c8a24a, #9c7c31) !important; color:#fffdf8 !important; border-radius:999px !important; font-family:'Cinzel', serif !important; letter-spacing:0.1em !important; text-transform:uppercase !important; font-size:13px !important; box-shadow:0 12px 28px -12px rgba(200,162,74,0.6) !important; }
.vx-pay.vkpay-launch { background:linear-gradient(100deg, #7c5cff, #22d3ee) !important; background-size:200% auto !important; animation:lnch-flow 6s linear infinite !important; }
.vx-pay.vkpay-boardroom { background:#1f3a5f !important; color:#fff !important; border-radius:8px !important; font-weight:600 !important; box-shadow:0 12px 28px -14px rgba(31,58,95,0.55) !important; }
.vx-pay.vkpay-boardroom:hover { background:#142840 !important; }
.vx-pay.vkpay-house { --vx-pay-ink:#2a1206 !important; background:linear-gradient(135deg, #f97316, #f59e0b) !important; border-radius:999px !important; font-family:'Archivo Black', sans-serif !important; font-weight:400 !important; letter-spacing:0.02em !important; box-shadow:0 12px 30px -10px rgba(249,115,22,0.6) !important; }
.vx-pay.vkpay-summit { background:linear-gradient(90deg, #2f6df6, #6ea0ff) !important; color:#fff !important; border-radius:10px !important; font-weight:700 !important; box-shadow:0 14px 34px -12px rgba(47,109,246,0.6) !important; }
.vx-pay.vkpay-supper { margin-top:clamp(22px, 3vw, 30px) !important; background:linear-gradient(180deg, #8a3a44, #6d2a33) !important; color:#f7f0e1 !important; border:1px solid rgba(176,138,62,0.6) !important; border-radius:4px !important; font-family:'Jost', sans-serif !important; font-weight:500 !important; letter-spacing:0.16em !important; text-transform:uppercase !important; font-size:13px !important; box-shadow:0 12px 26px -12px rgba(138,58,68,0.6) !important; }
.vx-pay.vkpay-supper:hover { filter:brightness(1.08) !important; }
.vx-pay.vkpay-acid { background:#b6ff00 !important; color:#06080a !important; border-radius:999px !important; font-family:'Archivo Black', sans-serif !important; text-transform:uppercase !important; letter-spacing:0.04em !important; box-shadow:0 0 34px -6px rgba(182,255,0,0.7) !important; }
.vx-pay.vkpay-acid:hover { background:#d2ff4d !important; }
.vx-pay.vkpay-berlin { margin-top:clamp(24px,3.5vw,34px) !important; background:linear-gradient(100deg, #37e6ff, #6bf0ff) !important; color:#04121a !important; border:0 !important; border-radius:2px !important; font-family:'Archivo Black', sans-serif !important; font-weight:400 !important; font-size:17px !important; letter-spacing:0.04em !important; text-transform:uppercase !important; padding:18px !important; box-shadow:0 0 24px rgba(55,230,255,0.5) !important; animation:none !important; transition:transform 0.15s, box-shadow 0.15s, filter 0.15s !important; transform:translateY(0) !important; }
.vx-pay.vkpay-berlin:hover { transform:translateY(-3px) !important; filter:brightness(1.08) !important; box-shadow:0 10px 40px -6px rgba(55,230,255,0.8), 0 0 50px rgba(255,47,176,0.4) !important; }
.vx-pay.vkpay-discotheque { background:linear-gradient(100deg, #f5c451, #fff3cf, #f5c451) !important; background-size:200% auto !important; color:#1a0f24 !important; border-radius:999px !important; font-weight:700 !important; letter-spacing:0.04em !important; box-shadow:0 14px 34px -12px rgba(245,196,81,0.6) !important; animation:disco-shimmer 6s linear infinite !important; }
.vx-pay.vkpay-dnb { margin-top:18px !important; background:#c6ff00 !important; color:#0a0a09 !important; border-radius:0 !important; border:2px solid #14130f !important; font-family:'Anton', sans-serif !important; letter-spacing:0.06em !important; text-transform:uppercase !important; font-size:clamp(17px,2.4vw,20px) !important; box-shadow:5px 6px 0 rgba(20,19,15,0.7) !important; transition:transform 0.12s, box-shadow 0.12s !important; }
.vx-pay.vkpay-dnb:hover { transform:translate(2px,2px) !important; box-shadow:2px 3px 0 rgba(20,19,15,0.7) !important; filter:none !important; }
.vx-pay.vkpay-forest { background:linear-gradient(135deg, #d4a056, #b8823a) !important; color:#12200f !important; border-radius:999px !important; font-weight:600 !important; box-shadow:0 14px 34px -12px rgba(212,160,86,0.6) !important; }
.vx-pay.vkpay-stub { box-shadow:0 12px 30px -12px rgba(216,64,47,.6) !important; }
.vx-pay.vkpay-vow { background:#c98a6d !important; color:#fff !important; border-radius:3px !important; font-weight:400 !important; letter-spacing:0.14em !important; text-transform:uppercase !important; font-size:13px !important; box-shadow:0 12px 26px -14px rgba(201,138,109,0.6) !important; }
.vx-pay.vkpay-vow:hover { background:#a96a4e !important; }
/* receive-only markers (slot detection needs a class; base styling paints) */
.vx-pay.vkpay-headliner, .vx-pay.vkpay-junglist, .vx-pay.vkpay-sub_bass, .vx-pay.vkpay-substation,
.vx-pay.vkpay-candlelight, .vx-pay.vkpay-garden, .vx-pay.vkpay-harvest { /* home look = base */ }
/* berlin */ @keyframes bln-btnpulse { 0%,100% { box-shadow: 0 0 20px rgba(55,230,255,0.4); } 50% { box-shadow: 0 0 34px rgba(55,230,255,0.7), 0 0 60px rgba(255,47,176,0.25); } }
