/* === 3-lucky-rainbows-slot-review === */
/* =======================================================================
   VegasPokie · Master · 3-Lucky-Rainbows Slot Review — stylesheet
   Widget folder: widgets/3-lucky-rainbows-slot-review/styles.css
   deploy.py bundles this into vegaspokie-games-review-master.bundle.css (filemtime cache-bust)

   ⚠ SELECTOR CONTRACT: every selector below maps 1:1 to a class/attr that the
   render() in class.php (L655–694) + inc/class-eeat.php + inc/class-compliance.php
   actually emit. Zero orphan selectors. DO NOT add a selector the PHP never prints.

   Canonical design DNA (project-vegaspokie-design-dna): LIGHT AU-cream base +
   eucalyptus green #16a34a primary, gold #facc15 accent, ocean-blue #0284c7 trust,
   orange->red #f97316->#dc2626 CTA with WHITE (#fff) text, Inter font, inline-SVG icons,
   2 dark forest-green interludes (hero + games), radial colour-blooms, layered offers.

   Hard rules baked in:
   - Buttons/CTAs ALWAYS #fff text (orange/red/saturated bg). 5-state magenta guard.
   - Icon LEFT + title RIGHT in cards/steps (grid-template-areas, never icon-above).
   - Mobile ladder: <=768 (tablet+phone) + <=430 (phone compact) + <=375.
   - Every swipe-able row -> horizontal swipe on mobile (snap + edge-fade + hidden bar).
   - KPI/stat tiles -> ALWAYS 2-col on mobile, tabular-nums (.vpm-stat-grid).
   - Card padding-top >= 24px when anything sits at the top; ::before strip radius:inherit.
   - Edge-to-edge full-bleed via margin:calc(50% - 50vw); width:100vw (.vpm-bleed).
   - Top-gap guard: no padding/margin above the first full-bleed band (hero).
   - Sticky TOC -> static on mobile.
   - No transform:scale in flex/grid rows.
   ======================================================================= */

/* ---- FOUC guard (mirror of the id-less inline \3c style> emitted per widget) ---- */
.vpm svg { width: 1em; height: 1em; }

/* ===================================================================== */
/* 0 · TOKENS + RESET (root .vpm / .vpm-art)                              */
/* ===================================================================== */
.vpm {
  /* palette */
  --green: #16a34a;
  --green-bright: #22c55e;
  --green-deep: #15803d;
  --gold: #facc15;
  --gold-deep: #ca8a04;
  --gold-soft: #fde68a;
  --blue: #0284c7;
  --blue-bright: #0ea5e9;
  --rose: #dc2626;
  --purple: #a855f7;
  --purple-deep: #7c3aed;
  /* CTA gradient (orange -> red), ALWAYS white text on it */
  --cta-1: #f97316;
  --cta-2: #ea580c;
  --cta-3: #dc2626;

  /* ink / surface */
  --ink-0: #0a1f14;
  --ink-1: #475569;
  --ink-2: #64748b;
  --bg-0: #ffffff;
  --bg-soft: #f6faf4;
  --bg-2: #f3f6f1;
  --cream: #faf6e6;
  --line: rgba(22, 163, 74, .14);
  --line-soft: rgba(22, 163, 74, .10);

  /* dark cinematic interludes */
  --dark-1: #06140d;
  --dark-2: #0a1f14;
  --dark-3: #0d2818;
  --dark-4: #08180e;

  --shadow-sm: 0 4px 14px rgba(8, 24, 14, .06);
  --shadow-md: 0 14px 34px -16px rgba(8, 24, 14, .22);
  --shadow-lg: 0 28px 64px -22px rgba(22, 163, 74, .26);

  --wrap: 1320px;
  --r-xs: 8px;
  --r-sm: 12px;
  --r-md: 16px;
  --r-lg: 22px;
  --r-xl: 28px;
  --r-pill: 99px;

  position: relative;
  font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  color: var(--ink-1);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  background:
    radial-gradient(900px 520px at 12% -4%, rgba(34, 197, 94, .07), transparent 60%),
    radial-gradient(820px 480px at 92% 6%, rgba(14, 165, 233, .10), transparent 60%),
    radial-gradient(760px 520px at 80% 96%, rgba(250, 204, 21, .06), transparent 62%),
    linear-gradient(180deg, #f3f6f1 0%, #f0f6fa 28%, #faf6e6 62%, #eef9ee 100%);
  overflow-x: hidden;
}

/* overflow-x clip guard (no 100vw scrollbar overflow) — clip, not hidden */
html:has(.vpm) { overflow-x: clip; }

.vpm *,
.vpm *::before,
.vpm *::after { box-sizing: border-box; }

/* TOP-GAP GUARD (bug #24): the very first band (.vpm-hero) is full-bleed at the
   top — kill any inherited padding/margin/row-gap above it so there is no cream
   strip between the page chrome and the dark hero. Disclosure (if present) sits
   above; when it is the first child we keep its own margin, but the wrapper
   itself must contribute zero top space. */
.vpm.vpm-art { margin-top: 0 !important; padding-top: 0 !important; }
.vpm.vpm-art > .vpm-hero:first-child { margin-top: 0 !important; }
.vpm.vpm-art:has(> .vpm-hero:first-child) { padding-top: 0 !important; }

.vpm a,
.vpm a:hover { text-decoration: none; }
.vpm p { overflow-wrap: break-word; }

/* ===================================================================== */
/* SHARED · section frame + heading + full-bleed                          */
/* ===================================================================== */
.vpm-sec {
  position: relative;
  padding: 54px 20px;
}
.vpm-wrap {
  max-width: var(--wrap);
  margin: 0 auto;
}

/* full-bleed modifier (.vpm-bleed) — edge-to-edge band, no 100vw overflow */
.vpm-bleed {
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
}

/* section heading: <tag class="vpm-sec-title">{lead} <em>{em}</em></tag> */
.vpm-sec-title {
  margin: 0 0 22px;
  font-weight: 900;
  font-size: clamp(26px, 3.4vw, 40px);
  line-height: 1.08;
  letter-spacing: -.02em;
  color: var(--ink-0);
}
.vpm-sec-title em {
  font-style: normal;
  color: var(--gold-deep);
  background: linear-gradient(180deg, var(--gold-deep), #b45309);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* ===================================================================== */
/* CTA PRIMITIVES — .vpm-cta / --primary / --ghost / .vpm-cta-label        */
/* CTAs ALWAYS white text on orange/red. Gold never used here.            */
/* ===================================================================== */
.vpm-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  font-family: inherit;
  font-weight: 800;
  font-size: 15px;
  line-height: 1;
  padding: 14px 22px;
  border-radius: var(--r-sm);
  border: 0;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: transform .16s ease, filter .16s ease, box-shadow .16s ease;
}
.vpm-cta svg { width: 18px; height: 18px; flex: 0 0 auto; }
.vpm-cta-label { display: inline-block; }

/* primary affiliate CTA — orange->red, WHITE text, glow + inset highlight */
.vpm-cta--primary,
.vpm-cta--primary:link,
.vpm-cta--primary:visited {
  background: linear-gradient(135deg, var(--cta-1), var(--cta-2) 52%, var(--cta-3));
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .24);
  box-shadow:
    0 12px 26px -10px rgba(220, 38, 38, .5),
    inset 0 1px 0 rgba(255, 255, 255, .28);
}
.vpm-cta--primary svg { color: var(--gold); }
.vpm-cta--primary:hover,
.vpm-cta--primary:focus-visible {
  filter: brightness(1.06);
  transform: translateY(-2px);
  color: #fff;
}
.vpm-cta--primary:active { transform: translateY(0); filter: brightness(.98); }

/* ghost / secondary CTA — used on light + on dark (recoloured under .vpm-hero) */
.vpm-cta--ghost,
.vpm-cta--ghost:link,
.vpm-cta--ghost:visited {
  background: #fff;
  color: var(--green-deep);
  border: 1.5px solid var(--line);
  box-shadow: var(--shadow-sm);
}
.vpm-cta--ghost:hover,
.vpm-cta--ghost:focus-visible {
  border-color: var(--green);
  transform: translateY(-2px);
  color: var(--green-deep);
}

/* ELEMENTOR :hover MAGENTA GUARD — all 5 states, bg+bg-color+bg-image on the
   white-text CTAs (primary + offer CTA). Beats the theme pink-on-hover inject. */
.vpm a.vpm-cta--primary,
.vpm a.vpm-cta--primary:hover,
.vpm a.vpm-cta--primary:focus,
.vpm a.vpm-cta--primary:active,
.vpm a.vpm-cta--primary[aria-selected="true"],
.vpm button.vpm-cta--primary,
.vpm button.vpm-cta--primary:hover,
.vpm button.vpm-cta--primary:focus,
.vpm button.vpm-cta--primary:active {
  background-color: var(--cta-2) !important;
  background-image: linear-gradient(135deg, var(--cta-1), var(--cta-2) 52%, var(--cta-3)) !important;
  color: #fff !important;
}
.vpm a.vpm-offer-cta,
.vpm a.vpm-offer-cta:hover,
.vpm a.vpm-offer-cta:focus,
.vpm a.vpm-offer-cta:active {
  background-color: var(--cta-2) !important;
  background-image: linear-gradient(135deg, var(--cta-1), var(--cta-2) 52%, var(--cta-3)) !important;
  color: #fff !important;
}
/* ghost guard — keep it from turning pink/white-on-pink */
.vpm a.vpm-cta--ghost:hover,
.vpm a.vpm-cta--ghost:focus,
.vpm a.vpm-cta--ghost:active,
.vpm button.vpm-cta--ghost:hover,
.vpm button.vpm-cta--ghost:focus,
.vpm button.vpm-cta--ghost:active {
  background-color: #fff !important;
  background-image: none !important;
  color: var(--green-deep) !important;
}

/* ===================================================================== */
/* 1 · DISCLOSURE (.vpm-disclosure > .vpm-wrap > .vpm-disclosure-text)     */
/* ===================================================================== */
.vpm-disclosure {
  padding: 12px 20px 0;
}
.vpm-disclosure .vpm-wrap {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 16px;
  font-size: 13px;
  color: var(--ink-2);
  background: color-mix(in oklab, var(--gold) 9%, #fff);
  border: 1px solid color-mix(in oklab, var(--gold-deep) 26%, var(--line));
  border-radius: var(--r-sm);
}
.vpm-disclosure-text { margin: 0; }

/* ===================================================================== */
/* 2 · HERO (.vpm-hero) — dark forest-green interlude + wave divider       */
/* ===================================================================== */
.vpm-hero {
  position: relative;
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  padding: 56px 20px 0;
  color: #fff;
  background:
    radial-gradient(760px 420px at 14% 8%, rgba(34, 197, 94, .26), transparent 60%),
    radial-gradient(680px 420px at 88% 0%, rgba(250, 204, 21, .14), transparent 58%),
    linear-gradient(160deg, var(--dark-1), var(--dark-2) 42%, var(--dark-3) 74%, var(--dark-4));
  overflow: hidden;
  isolation: isolate;
}
.vpm-hero > .vpm-wrap {
  position: relative;
  z-index: 2;
  padding-bottom: 60px;
}

/* breadcrumb (.vpm-crumbs > ol > li.vpm-crumb) */
.vpm-crumbs {
  margin-bottom: 16px;
  font-size: 12.5px;
}
.vpm-crumbs ol {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.vpm-crumb { color: rgba(255, 255, 255, .62); }
.vpm-crumb:not(:last-child)::after { content: "/"; margin-left: 6px; opacity: .5; }
.vpm-crumb a { color: rgba(255, 255, 255, .82); }
.vpm-crumb a:hover { color: var(--gold-soft); }
.vpm-crumb [aria-current="page"] { color: var(--gold-soft); }

.vpm-hero-title {
  margin: 0 0 14px;
  font-weight: 900;
  font-size: clamp(32px, 5vw, 56px);
  line-height: 1.04;
  letter-spacing: -.03em;
  color: #fff;
  max-width: 20ch;
}
.vpm-hero-title em {
  font-style: normal;
  background: linear-gradient(180deg, var(--gold-soft), var(--gold));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.vpm-hero-sub {
  margin: 0 0 24px;
  font-size: 17px;
  color: rgba(229, 245, 236, .92);
  max-width: 75%;
}
.vpm-hero-cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 24px;
}
/* ghost CTA recolour on dark hero */
.vpm-hero .vpm-cta--ghost,
.vpm-hero .vpm-cta--ghost:link,
.vpm-hero .vpm-cta--ghost:visited {
  background: rgba(255, 255, 255, .08);
  color: #fff;
  border: 1.5px solid rgba(255, 255, 255, .26);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}
.vpm-hero .vpm-cta--ghost:hover { border-color: var(--gold-soft); color: #fff; }
.vpm a.vpm-hero .vpm-cta--ghost:hover { background-color: rgba(255, 255, 255, .08) !important; }

/* HERO wave divider (.vpm-wave.vpm-wave--down > svg) — light/dark boundary */
.vpm-wave {
  position: relative;
  z-index: 2;
  width: 100%;
  line-height: 0;
  pointer-events: none;
}
.vpm-wave svg { width: 100%; height: 90px; display: block; }

/* ===================================================================== */
/* BYLINE (.vpm-byline …) — hero + methodology (class-eeat.php)            */
/* ===================================================================== */
.vpm-byline {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 18px;
  padding: 13px 16px;
  font-size: 13px;
  border-radius: var(--r-sm);
}
/* hero byline = on dark */
.vpm-hero .vpm-byline {
  background: rgba(255, 255, 255, .06);
  border: 1px solid rgba(255, 255, 255, .14);
  color: rgba(229, 245, 236, .9);
}
.vpm-hero .vpm-byline-name { color: var(--gold-soft); font-weight: 700; }
.vpm-hero .vpm-byline-role,
.vpm-hero .vpm-byline-label { color: rgba(255, 255, 255, .62); }
.vpm-hero .vpm-byline-dates { color: rgba(255, 255, 255, .58); }
/* methodology byline = on light */
.vpm-sec--methodology .vpm-byline {
  margin-top: 22px;
  background: var(--bg-soft);
  border: 1px solid var(--line);
  color: var(--ink-1);
}
.vpm-sec--methodology .vpm-byline-name { color: var(--green-deep); font-weight: 700; }
.vpm-sec--methodology .vpm-byline-label { color: var(--ink-2); }
.vpm-byline-by,
.vpm-byline-check { display: inline-flex; align-items: baseline; gap: 5px; flex-wrap: wrap; }
.vpm-byline-name { font-weight: 700; }
.vpm-byline-name[href]:hover { text-decoration: underline; }
.vpm-byline-role { opacity: .82; }
.vpm-byline-dates {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  font-variant-numeric: tabular-nums;
}
.vpm-byline-pub,
.vpm-byline-upd { display: inline-flex; align-items: baseline; gap: 5px; }

/* ===================================================================== */
/* 3 · FEATURED DEMO (.vpm-sec--featured-demo.vpm-bleed)                   */
/* ===================================================================== */
.vpm-sec--featured-demo {
  padding: 54px 20px;
  color: #fff;
  background:
    radial-gradient(680px 360px at 16% 0%, rgba(34, 197, 94, .18), transparent 60%),
    linear-gradient(160deg, var(--dark-2), var(--dark-3) 52%, var(--dark-4));
  overflow: hidden;
  isolation: isolate;
}
.vpm-sec--featured-demo .vpm-sec-title { color: #fff; }
.vpm-sec--featured-demo .vpm-sec-title em {
  background: linear-gradient(180deg, var(--gold-soft), var(--gold));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.vpm-demo {
  display: grid;
  gap: 14px;
  justify-items: center;
}
.vpm-demo-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: var(--r-lg);
  border: 1.5px solid rgba(250, 204, 21, .3);
  background: linear-gradient(160deg, #04100a, #0a1f14);
  box-shadow: 0 30px 70px -26px rgba(0, 0, 0, .65), inset 0 1px 0 rgba(255, 255, 255, .08);
  overflow: hidden;
  isolation: isolate;
  display: grid;
  place-items: center;
}
.vpm-demo-frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
/* once JS mounts the iframe it flags .is-live — hide the launch affordance under it */
.vpm-demo-frame.is-live .vpm-demo-launch { display: none; }
.vpm-demo-launch {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: inherit;
  font-weight: 800;
  font-size: 16px;
  color: #fff;
  padding: 16px 28px;
  border: 0;
  border-radius: var(--r-pill);
  cursor: pointer;
  background: linear-gradient(135deg, var(--cta-1), var(--cta-2) 52%, var(--cta-3));
  text-shadow: 0 1px 2px rgba(0, 0, 0, .24);
  box-shadow: 0 16px 34px -12px rgba(220, 38, 38, .6), inset 0 1px 0 rgba(255, 255, 255, .28);
  transition: transform .16s ease, filter .16s ease;
}
.vpm-demo-launch svg { width: 20px; height: 20px; color: var(--gold); }
.vpm-demo-launch:hover { transform: translateY(-2px); filter: brightness(1.06); }
.vpm a.vpm-demo-launch,
.vpm button.vpm-demo-launch,
.vpm button.vpm-demo-launch:hover,
.vpm button.vpm-demo-launch:focus,
.vpm button.vpm-demo-launch:active {
  background-color: var(--cta-2) !important;
  background-image: linear-gradient(135deg, var(--cta-1), var(--cta-2) 52%, var(--cta-3)) !important;
  color: #fff !important;
}
.vpm-demo-fs {
  background: rgba(255, 255, 255, .08);
  color: #fff;
  border: 1.5px solid rgba(255, 255, 255, .26);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  box-shadow: none;
}
.vpm-demo-fs:hover,
.vpm-demo-fs:focus-visible { border-color: var(--gold-soft); color: #fff; }
.vpm button.vpm-demo-fs:hover,
.vpm button.vpm-demo-fs:focus,
.vpm button.vpm-demo-fs:active {
  background-color: rgba(255, 255, 255, .08) !important;
  background-image: none !important;
  color: #fff !important;
}

/* ===================================================================== */
/* 4 · TOC (.vpm-toc) — sticky scroll-spy rail                             */
/* ===================================================================== */
.vpm-toc {
  position: sticky;
  top: 16px;
  z-index: 20;
  padding: 22px 20px;
}
.vpm-toc > .vpm-wrap {
  background: linear-gradient(180deg, rgba(255, 255, 255, .94), rgba(255, 255, 255, .86));
  -webkit-backdrop-filter: blur(14px) saturate(160%);
  backdrop-filter: blur(14px) saturate(160%);
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-md);
  padding: 8px;
}
.vpm-toc-list {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.vpm-toc-item { flex: 0 0 auto; }
.vpm-toc-item a {
  display: inline-flex;
  align-items: center;
  font-size: 13px;
  font-weight: 700;
  color: var(--ink-1);
  padding: 8px 13px;
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.vpm-toc-item a:hover { background: var(--bg-2); color: var(--green-deep); }
.vpm-toc-item a.is-active,
.vpm-toc-item a.active,
.vpm-toc-item a[aria-current="true"] {
  background: linear-gradient(135deg, var(--green), var(--green-deep));
  color: #fff;
}

/* ===================================================================== */
/* 5 · INTRO (.vpm-sec--intro) — app-panel cards (icon LEFT + title RIGHT) */
/* ===================================================================== */
.vpm-intro-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.vpm-intro-card {
  position: relative;
  background: linear-gradient(180deg, #fff, var(--bg-soft));
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  padding: 26px 20px 20px;
  box-shadow: var(--shadow-sm), inset 0 1px 0 rgba(255, 255, 255, .7);
  overflow: hidden;
  isolation: isolate;
  transition: transform .18s ease, border-color .18s ease;
  /* icon LEFT + title RIGHT layout: eyebrow + title flow to the right of a tile */
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  grid-template-areas:
    "ico eye"
    "ico title"
    "body body";
  column-gap: 13px;
  row-gap: 2px;
  align-content: start;
}
.vpm-intro-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--green), var(--gold));
  border-radius: inherit;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
/* the icon tile is drawn as a ::after so PHP needs no extra markup */
.vpm-intro-card::after {
  content: "";
  grid-area: ico;
  align-self: start;
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background:
    linear-gradient(150deg, var(--green-bright), var(--green-deep));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 6px 14px -6px rgba(22, 163, 74, .5);
}
.vpm-intro-card:hover { transform: translateY(-4px); border-color: var(--green); }
.vpm-intro-card .vpm-eyebrow {
  grid-area: eye;
  align-self: end;
  display: block;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--green-deep);
  margin: 0;
}
.vpm-intro-card .vpm-card-title {
  grid-area: title;
  align-self: start;
  margin: 0;
  font-size: 17px;
  font-weight: 800;
  color: var(--ink-0);
  line-height: 1.2;
}
/* card with no eyebrow: title still sits to the right of the tile */
.vpm-intro-card .vpm-card-title:first-child { grid-area: eye / eye / title / title; align-self: center; }
.vpm-intro-card .vpm-card-body {
  grid-area: body;
  border-top: 1px dashed var(--line);
  margin: 12px 0 0;
  padding-top: 12px;
  font-size: 14.5px;
  color: var(--ink-1);
  line-height: 1.62;
}
.vpm-intro-card.is-hidden { display: none; }
.vpm-intro-card.is-hidden.is-open {
  display: grid;
}
.vpm-intro-more {
  margin: 22px auto 0;
}

/* ===================================================================== */
/* 6 · SCORECARD (.vpm-sec--scorecard) — animated pillars                  */
/* ===================================================================== */
.vpm-scorecard-sub {
  margin: 0 0 22px;
  font-size: 16px;
  color: var(--ink-1);
  max-width: 75%;
}
.vpm-pillars {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px 28px;
}
.vpm-pillar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: baseline;
  column-gap: 12px;
  row-gap: 8px;
}
.vpm-pillar-label {
  font-size: 14px;
  font-weight: 700;
  color: var(--ink-0);
}
.vpm-pillar-score {
  font-weight: 900;
  font-size: 16px;
  color: var(--green-deep);
  font-variant-numeric: tabular-nums;
}
.vpm-pillar-bar {
  grid-column: 1 / -1;
  height: 9px;
  border-radius: var(--r-pill);
  background: color-mix(in oklab, var(--green) 10%, #eef2ee);
  overflow: hidden;
  isolation: isolate;
}
.vpm-pillar-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--green-bright), var(--green-deep));
  box-shadow: 0 0 10px rgba(34, 197, 94, .4);
  transition: width 1.1s cubic-bezier(.22, 1, .36, 1);
}
.vpm-pillar--gold .vpm-pillar-fill { background: linear-gradient(90deg, var(--gold), var(--gold-deep)); box-shadow: 0 0 10px rgba(250, 204, 21, .4); }
.vpm-pillar--gold .vpm-pillar-score { color: var(--gold-deep); }
.vpm-pillar--warn .vpm-pillar-fill { background: linear-gradient(90deg, #fb923c, var(--cta-3)); box-shadow: 0 0 10px rgba(220, 38, 38, .35); }
.vpm-pillar--warn .vpm-pillar-score { color: var(--rose); }
.vpm-scorecard-foot {
  margin: 18px 0 0;
  font-size: 13px;
  color: var(--ink-2);
}

/* ===================================================================== */
/* KV ROWS (.vpm-kv …) — shared by quickinfo + rtp detail                  */
/* ===================================================================== */
.vpm-kv {
  display: grid;
  gap: 0;
  margin: 0;
}
.vpm-kv-row {
  display: grid;
  grid-template-columns: minmax(120px, .6fr) minmax(0, 1fr);
  gap: 14px;
  padding: 12px 4px;
  border-bottom: 1px dashed var(--line);
}
.vpm-kv-row:last-child { border-bottom: 0; }
.vpm-kv-key {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
  color: var(--ink-2);
  text-transform: uppercase;
  letter-spacing: .04em;
}
.vpm-kv-val {
  margin: 0;
  font-size: 14.5px;
  font-weight: 600;
  color: var(--ink-0);
}
.vpm-tone--gold { color: var(--gold-deep); font-weight: 800; }
.vpm-tone--good { color: var(--green-deep); font-weight: 800; }
/* .vpm-tone--none is the default (no override) */

/* ===================================================================== */
/* 7 · QUICK INFO (.vpm-quickinfo) — 3-tab specs (SWIPE-ABLE tabbar)       */
/* ===================================================================== */
.vpm-quickinfo .vpm-tabbar {
  display: flex;
  gap: 8px;
  margin-bottom: 18px;
  border-bottom: 1.5px solid var(--line);
  padding-bottom: 2px;
}
.vpm-quickinfo .vpm-tab {
  flex: 0 0 auto;
  font-family: inherit;
  font-size: 14px;
  font-weight: 800;
  color: var(--ink-2);
  background: none;
  border: 0;
  border-bottom: 3px solid transparent;
  padding: 10px 14px;
  cursor: pointer;
  white-space: nowrap;
  scroll-snap-align: start;
  transition: color .16s ease, border-color .16s ease;
}
.vpm-quickinfo .vpm-tab[aria-selected="true"] {
  color: var(--green-deep);
  border-bottom-color: var(--green);
}
.vpm-quickinfo .vpm-tabpanel[hidden] { display: none; }
.vpm-quickinfo .vpm-tabpanel { display: block; }

/* ===================================================================== */
/* 8 · RTP (.vpm-sec--rtp) — version cards (SWIPE rail on mobile)          */
/* ===================================================================== */
.vpm-rtp-sub {
  margin: 0 0 22px;
  font-size: 16px;
  color: var(--ink-1);
  max-width: 75%;
}
.vpm-rtp-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.vpm-rtp-card {
  position: relative;
  display: grid;
  gap: 6px;
  align-content: start;
  background: linear-gradient(180deg, #fff, var(--bg-soft));
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  padding: 26px 18px 18px;
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  isolation: isolate;
}
.vpm-rtp-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--blue), var(--blue-bright));
  border-radius: inherit;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
.vpm-rtp-badge {
  justify-self: start;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--blue);
  background: color-mix(in oklab, var(--blue) 10%, #fff);
  border: 1px solid color-mix(in oklab, var(--blue) 24%, var(--line));
  border-radius: var(--r-pill);
  padding: 4px 11px;
  margin-bottom: 6px;
}
.vpm-rtp-default {
  font-weight: 900;
  font-size: 30px;
  color: var(--ink-0);
  font-variant-numeric: tabular-nums;
  letter-spacing: -.02em;
}
.vpm-rtp-low {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--rose);
  font-variant-numeric: tabular-nums;
}
.vpm-rtp-detail {
  margin-top: 8px;
}
.vpm-rtp-detail .vpm-kv-row {
  grid-template-columns: minmax(0, 1fr) auto;
  padding: 7px 0;
}
.vpm-rtp-detail .vpm-kv-key { letter-spacing: 0; text-transform: none; font-size: 12.5px; }
.vpm-rtp-detail .vpm-kv-val { font-size: 13px; font-variant-numeric: tabular-nums; }

/* ===================================================================== */
/* 9 · PROS & CONS (.vpm-proscons) + quotes                               */
/* ===================================================================== */
.vpm-proscons {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.vpm-pros,
.vpm-cons {
  list-style: none;
  margin: 0;
  padding: 22px 20px;
  display: grid;
  gap: 10px;
  align-content: start;
  border-radius: var(--r-md);
  border: 1.5px solid var(--line);
}
.vpm-pros {
  border-color: color-mix(in oklab, var(--green) 30%, var(--line));
  background: linear-gradient(180deg, #fff, color-mix(in oklab, var(--green) 6%, #fff));
}
.vpm-cons {
  border-color: color-mix(in oklab, var(--rose) 24%, var(--line));
  background: linear-gradient(180deg, #fff, color-mix(in oklab, var(--rose) 5%, #fff));
}
.vpm-pro,
.vpm-con {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  font-size: 14px;
  color: var(--ink-1);
}
.vpm-pro svg,
.vpm-con svg { width: 18px; height: 18px; margin-top: 2px; }
.vpm-pro svg { color: var(--green); }
.vpm-con svg { color: var(--rose); }
.vpm-quotes {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
  margin-top: 4px;
}
.vpm-quote {
  margin: 0;
  background: var(--bg-soft);
  border: 1px solid var(--line);
  border-left: 3px solid var(--gold);
  border-radius: var(--r-sm);
  padding: 16px 16px 14px;
}
.vpm-quote-text { margin: 0 0 10px; font-size: 14px; font-style: italic; color: var(--ink-0); }
.vpm-quote-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 12px;
  color: var(--ink-2);
}
.vpm-quote-stars { display: inline-flex; gap: 1px; color: var(--gold-deep); }
.vpm-quote-stars svg { width: 14px; height: 14px; }
.vpm-quote-source { font-weight: 700; color: var(--ink-1); }
.vpm-quote-date { font-variant-numeric: tabular-nums; }

/* ===================================================================== */
/* 10/18 · OFFER BANNERS (.vpm-offer) — bold colourful layered (dark)      */
/* ===================================================================== */
.vpm-offer {
  padding: 44px 20px;
}
.vpm-offer-card {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 26px;
  padding: 32px;
  border-radius: var(--r-lg);
  border: 1.5px solid rgba(255, 255, 255, .14);
  color: #fff;
  /* offer #1 (premium-dark-50) = welcome/gold duotone */
  background: linear-gradient(150deg, #2a1c06, #3a2708 52%, #1f1404);
  box-shadow: 0 24px 54px -22px rgba(6, 20, 13, .6), inset 0 1px 0 rgba(255, 255, 255, .14);
  overflow: hidden;
  isolation: isolate;
}
.vpm-offer-card::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: radial-gradient(460px 220px at 16% 0%, rgba(250, 204, 21, .3), transparent 62%);
  pointer-events: none;
}
.vpm-offer-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--gold), var(--cta-1));
  box-shadow: 0 0 14px rgba(250, 204, 21, .6);
  border-radius: inherit;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
/* offer #2 (premium-light-75) = ocean-blue duotone */
.vpm-offer--premium-light-75 .vpm-offer-card { background: linear-gradient(150deg, #06212e, #082c3e 52%, #04161f); }
.vpm-offer--premium-light-75 .vpm-offer-card::after { background: radial-gradient(460px 220px at 16% 0%, rgba(14, 165, 233, .3), transparent 62%); }
.vpm-offer--premium-light-75 .vpm-offer-card::before { background: linear-gradient(90deg, var(--blue-bright), var(--cta-1)); box-shadow: 0 0 14px rgba(14, 165, 233, .55); }
/* the offer text column spans rows 1-3 of the grid; CTA sits in column 2 */
.vpm-offer-logo {
  grid-column: 1;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--gold-soft);
  margin-bottom: 8px;
}
.vpm-offer--premium-light-75 .vpm-offer-logo { color: #bae6fd; }
.vpm-offer-headline {
  grid-column: 1;
  margin: 0 0 8px;
  font-size: clamp(22px, 3vw, 30px);
  font-weight: 900;
  line-height: 1.1;
  color: #fff;
}
.vpm-offer-body {
  grid-column: 1;
  margin: 0;
  font-size: 15px;
  color: rgba(229, 245, 236, .9);
}
.vpm-offer-cta {
  grid-column: 2;
  grid-row: 1 / 99;
  align-self: center;
  flex: 0 0 auto;
  padding: 16px 28px;
  font-size: 16px;
}
.vpm-offer-fine {
  grid-column: 1;
  display: block;
  margin: 10px 0 0;
  font-size: 11.5px;
  color: rgba(255, 255, 255, .58);
}

/* ===================================================================== */
/* 11 · COINS (.vpm-coins) — 3 colour tabs (SWIPE-ABLE tabbar)             */
/* ===================================================================== */
.vpm-coins .vpm-tabbar {
  display: flex;
  gap: 8px;
  margin-bottom: 18px;
}
.vpm-coins .vpm-tab {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 800;
  color: var(--ink-1);
  background: #fff;
  border: 1.5px solid var(--line);
  border-radius: var(--r-pill);
  padding: 9px 16px;
  cursor: pointer;
  white-space: nowrap;
  scroll-snap-align: start;
  transition: border-color .15s ease, background .15s ease, color .15s ease;
}
/* colour dot via ::before so PHP needs no extra markup */
.vpm-coins .vpm-tab::before {
  content: "";
  width: 11px;
  height: 11px;
  border-radius: 50%;
  box-shadow: 0 0 8px currentColor;
}
.vpm-coins .vpm-tab--green::before { background: var(--green-bright); color: var(--green-bright); }
.vpm-coins .vpm-tab--red::before { background: var(--rose); color: var(--rose); }
.vpm-coins .vpm-tab--purple::before { background: var(--purple); color: var(--purple); }
.vpm-coins .vpm-tab--green[aria-selected="true"] { border-color: var(--green); background: color-mix(in oklab, var(--green) 10%, #fff); color: var(--green-deep); }
.vpm-coins .vpm-tab--red[aria-selected="true"] { border-color: var(--rose); background: color-mix(in oklab, var(--rose) 9%, #fff); color: var(--rose); }
.vpm-coins .vpm-tab--purple[aria-selected="true"] { border-color: var(--purple); background: color-mix(in oklab, var(--purple) 9%, #fff); color: var(--purple-deep); }
.vpm-coins .vpm-tabpanel[hidden] { display: none; }
.vpm-coins .vpm-tabpanel {
  display: block;
  padding: 22px 20px;
  background: linear-gradient(180deg, #fff, var(--bg-soft));
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
}
.vpm-coins .vpm-card-title { margin: 0 0 8px; font-size: 18px; font-weight: 800; color: var(--ink-0); }
.vpm-coins .vpm-card-body { margin: 0; font-size: 14.5px; color: var(--ink-1); }

/* ===================================================================== */
/* 12 · JACKPOT (.vpm-sec--jackpot) — ladder                              */
/* ===================================================================== */
.vpm-ladder {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
}
.vpm-ladder-row {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 6px 16px;
  padding: 16px 20px;
  border-radius: var(--r-md);
  color: #fff;
  background: linear-gradient(120deg, var(--dark-2), var(--dark-3));
  border: 1px solid rgba(255, 255, 255, .1);
  overflow: hidden;
  isolation: isolate;
}
.vpm-ladder-row::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: radial-gradient(300px 120px at 10% 0%, rgba(250, 204, 21, .18), transparent 60%);
}
.vpm-ladder-name {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--gold-soft);
}
.vpm-ladder-mult {
  font-weight: 900;
  font-size: 22px;
  color: #fff;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.vpm-ladder-note {
  grid-column: 1 / -1;
  font-size: 13px;
  color: rgba(229, 245, 236, .82);
}
.vpm-ladder-row:first-child { background: linear-gradient(120deg, #3a2708, #2a1c06); }
.vpm-ladder-row:first-child .vpm-ladder-mult { color: var(--gold); }

/* ===================================================================== */
/* 13 · FREE SPINS (.vpm-grids) — grid viz                                */
/* ===================================================================== */
.vpm-grids {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}
.vpm-grid-viz {
  margin: 0;
  text-align: center;
  padding: 24px 22px;
  background: linear-gradient(180deg, #fff, var(--bg-soft));
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
}
.vpm-grid-viz--bonus {
  border-color: color-mix(in oklab, var(--gold-deep) 36%, var(--line));
  background: linear-gradient(180deg, #fff, color-mix(in oklab, var(--gold) 8%, #fff));
}
.vpm-grid-label {
  display: inline-block;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--green-deep);
  margin-bottom: 12px;
}
.vpm-grid-viz--bonus .vpm-grid-label { color: var(--gold-deep); }
.vpm-grid-caption { display: block; font-size: 13px; color: var(--ink-2); }
/* JS reveal-on-scroll: rest = slightly down + dim; .is-revealed = settle in. */
.vpm-grid-viz { opacity: .35; transform: translateY(10px); transition: opacity .5s ease, transform .5s ease; }
.vpm-grid-viz.is-revealed { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .vpm-grid-viz { opacity: 1; transform: none; transition: none; }
}

/* ===================================================================== */
/* 14 · COMPARE (.vpm-compare) — vs others (SWIPE rail on mobile)          */
/* ===================================================================== */
.vpm-compare {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.vpm-compare-card {
  position: relative;
  display: grid;
  gap: 6px;
  align-content: start;
  background: linear-gradient(180deg, #fff, var(--bg-soft));
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  padding: 24px 18px 18px;
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  isolation: isolate;
}
.vpm-compare-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--blue), var(--blue-bright));
  border-radius: inherit;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
.vpm-compare-card .vpm-card-title {
  margin: 0;
  font-size: 16px;
  font-weight: 800;
  color: var(--ink-0);
}
.vpm-compare-rtp {
  justify-self: start;
  display: inline-flex;
  font-size: 12px;
  font-weight: 800;
  color: var(--blue);
  background: color-mix(in oklab, var(--blue) 10%, #fff);
  border: 1px solid color-mix(in oklab, var(--blue) 22%, var(--line));
  border-radius: var(--r-pill);
  padding: 3px 10px;
  margin: 2px 0 6px;
  font-variant-numeric: tabular-nums;
}
.vpm-compare-card .vpm-card-body { margin: 0; font-size: 14px; color: var(--ink-1); }

/* ===================================================================== */
/* 15 · GAMES (.vpm-games.vpm-bleed) — edge-to-edge dark rail              */
/* ===================================================================== */
.vpm-games {
  padding: 56px 20px;
  color: #fff;
  background:
    radial-gradient(700px 380px at 12% 6%, rgba(34, 197, 94, .2), transparent 60%),
    linear-gradient(160deg, var(--dark-1), var(--dark-2) 48%, var(--dark-4));
  overflow: hidden;
  isolation: isolate;
}
.vpm-games .vpm-sec-title { color: #fff; }
.vpm-games .vpm-sec-title em {
  background: linear-gradient(180deg, var(--gold-soft), var(--gold));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.vpm-games-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.vpm-game-card {
  display: grid;
  grid-template-rows: auto auto auto;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: var(--r-md);
  overflow: hidden;
  isolation: isolate;
  box-shadow: 0 18px 40px -20px rgba(0, 0, 0, .6);
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease;
}
.vpm-game-card:hover { transform: translateY(-4px); border-color: rgba(250, 204, 21, .4); }
/* JS sets .is-playable when a live demo URL exists, .is-live once the iframe mounts */
.vpm-game-card.is-playable { cursor: pointer; }
.vpm-game-card.is-playable:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.vpm-game-card.is-live .vpm-game-thumb { display: none; }
.vpm-game-thumb {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  display: block;
  background: linear-gradient(150deg, var(--dark-2), var(--dark-3));
}
.vpm-game-card .vpm-card-title { margin: 14px 16px 2px; font-size: 16px; font-weight: 800; color: #fff; }
.vpm-game-provider { display: block; margin: 0 16px 16px; font-size: 12px; color: rgba(255, 255, 255, .56); }

/* ===================================================================== */
/* 16 · HOW TO PLAY (.vpm-sec--how-to-play) — steps + shots                */
/* ===================================================================== */
.vpm-htp-intro {
  font-size: 15.5px;
  color: var(--ink-1);
  max-width: 75%;
  margin: 0 0 24px;
}
.vpm-steps {
  list-style: none;
  margin: 0 0 26px;
  padding: 0;
  display: grid;
  gap: 14px;
}
/* icon LEFT (num tile) + title RIGHT */
.vpm-step {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  grid-template-areas: "ico body";
  gap: 14px;
  padding: 20px;
  background: linear-gradient(180deg, #fff, var(--bg-soft));
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-sm);
  align-items: start;
}
.vpm-step-num {
  grid-area: ico;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 12px;
  color: #fff;
  font-weight: 900;
  font-size: 18px;
  font-variant-numeric: tabular-nums;
  background: linear-gradient(150deg, var(--green-bright), var(--green-deep));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35);
}
.vpm-step-body { grid-area: body; min-width: 0; }
.vpm-step-title { margin: 0 0 5px; font-size: 16px; font-weight: 800; color: var(--ink-0); }
.vpm-step-body p { margin: 0; font-size: 14.5px; color: var(--ink-1); }
.vpm-shots {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.vpm-shot {
  margin: 0;
  border-radius: var(--r-md);
  overflow: hidden;
  isolation: isolate;
  border: 1.5px solid var(--line);
  background: #fff;
  box-shadow: var(--shadow-sm);
}
.vpm-shot img { width: 100%; display: block; aspect-ratio: 16 / 10; object-fit: cover; }
.vpm-shot figcaption { padding: 10px 14px; font-size: 12.5px; color: var(--ink-2); }
.vpm-shot:last-child { border-color: color-mix(in oklab, var(--gold-deep) 40%, var(--line)); }

/* ===================================================================== */
/* 17 · BANKROLL (.vpm-calc) — KPI 2-col results (.vpm-stat-grid)          */
/* ===================================================================== */
.vpm-calc {
  display: grid;
  gap: 22px;
}
/* JS injects the slider UI (.vpm-calc-controls > .vpm-calc-field > input.vpm-calc-range)
   before the results — these elements exist only after JS runs, style them here. */
.vpm-calc-controls {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.vpm-calc-field {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: baseline;
  column-gap: 10px;
  padding: 14px 16px;
  background: linear-gradient(180deg, #fff, var(--bg-soft));
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-sm);
}
.vpm-calc-field-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--ink-1);
}
.vpm-calc-field-val {
  justify-self: end;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: var(--green-deep);
}
.vpm-calc-range,
.vpm-calc input[type="range"] {
  grid-column: 1 / -1;
  width: 100%;
  margin-top: 10px;
  accent-color: var(--green);
}
.vpm-stat-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
.vpm-stat {
  text-align: center;
  padding: 18px 14px;
  background: linear-gradient(180deg, #fff, var(--bg-soft));
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-sm);
}
.vpm-stat-label {
  display: block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--ink-2);
  margin-top: 6px;
  order: 2;
}
.vpm-stat-val {
  display: block;
  font-weight: 900;
  font-size: 24px;
  color: var(--green-deep);
  font-variant-numeric: tabular-nums;
  letter-spacing: -.01em;
  order: 1;
}
.vpm-stat { display: flex; flex-direction: column; }

/* ===================================================================== */
/* 19 · ACCESS MATRIX (.vpm-access) — AU                                  */
/* ===================================================================== */
.vpm-access {
  display: grid;
  gap: 0;
}
.vpm-access-row {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) minmax(0, 1.2fr);
  align-items: center;
  gap: 12px 16px;
  padding: 14px 6px;
  border-bottom: 1px dashed var(--line);
}
.vpm-access-row:last-child { border-bottom: 0; }
.vpm-access-row svg { width: 20px; height: 20px; }
.vpm-access--yes svg { color: var(--green); }
.vpm-access--no svg { color: var(--rose); }
.vpm-access--caution svg { color: var(--gold-deep); }
.vpm-access-label { font-size: 14px; font-weight: 700; color: var(--ink-0); }
.vpm-access-note { font-size: 13px; color: var(--ink-2); }

/* ===================================================================== */
/* 20 · METHODOLOGY (.vpm-method) — numbered steps                        */
/* ===================================================================== */
.vpm-method {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 14px;
  counter-reset: vpm-m;
}
.vpm-method-step {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  gap: 14px;
  padding: 18px 20px;
  background: linear-gradient(180deg, #fff, var(--bg-soft));
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  align-items: start;
}
.vpm-method-step::before {
  counter-increment: vpm-m;
  content: counter(vpm-m);
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
  color: #fff;
  background: linear-gradient(150deg, var(--blue-bright), var(--blue));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35);
}
.vpm-method-step .vpm-card-title { margin: 0 0 4px; font-size: 16px; font-weight: 800; color: var(--ink-0); }
.vpm-method-step p { margin: 0; font-size: 14.5px; color: var(--ink-1); }

/* ===================================================================== */
/* 21 · TIMELINE (.vpm-timeline) — newest-first changelog                  */
/* ===================================================================== */
.vpm-timeline {
  position: relative;
  list-style: none;
  margin: 0;
  padding-left: 26px;
  display: grid;
  gap: 18px;
}
.vpm-timeline::before {
  content: "";
  position: absolute;
  left: 7px;
  top: 6px;
  bottom: 6px;
  width: 2px;
  background: linear-gradient(180deg, var(--green-bright), color-mix(in oklab, var(--green) 20%, transparent));
}
.vpm-tl-row { position: relative; display: grid; gap: 4px; }
.vpm-tl-row::before {
  content: "";
  position: absolute;
  left: -26px;
  top: 4px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--green-bright);
  border: 3px solid var(--bg-0);
  box-shadow: 0 0 0 1px var(--green);
}
.vpm-tl-row.is-latest::before { background: var(--gold); box-shadow: 0 0 0 1px var(--gold-deep), 0 0 10px var(--gold); }
.vpm-tl-pill {
  justify-self: start;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--gold-deep);
  background: color-mix(in oklab, var(--gold) 16%, #fff);
  border: 1px solid color-mix(in oklab, var(--gold-deep) 28%, var(--line));
  border-radius: var(--r-pill);
  padding: 2px 9px;
}
.vpm-tl-pill::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--gold-deep);
  animation: vpm-pulse 1.6s ease-in-out infinite;
}
@keyframes vpm-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
.vpm-tl-date {
  display: inline-flex;
  align-items: center;
  font-size: 12px;
  font-weight: 800;
  color: var(--ink-2);
  font-variant-numeric: tabular-nums;
}
.vpm-tl-title { font-size: 16px; font-weight: 800; color: var(--ink-0); }
.vpm-tl-body { margin: 0; font-size: 14.5px; color: var(--ink-1); }

/* ===================================================================== */
/* 22 · RG CALLOUT (.vpm-rg / .vpm-rg-callout) — class-compliance.php      */
/* ===================================================================== */
.vpm-rg .vpm-rg-callout {
  position: relative;
  padding: 22px 24px 22px 64px;
  background: color-mix(in oklab, var(--rose) 6%, #fff);
  border: 1.5px solid color-mix(in oklab, var(--rose) 22%, var(--line));
  border-radius: var(--r-md);
}
.vpm-rg .vpm-rg-callout::before {
  content: "";
  position: absolute;
  left: 16px;
  top: 22px;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  background: linear-gradient(150deg, #f87171, var(--rose));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .3);
}
.vpm-rg-callout-title { margin: 0 0 6px; font-size: 16px; font-weight: 800; color: var(--ink-0); }
.vpm-rg-callout-body { margin: 0 0 10px; font-size: 14px; color: var(--ink-1); }
.vpm-rg-callout-link {
  display: inline-flex;
  font-weight: 700;
  color: var(--rose);
}
.vpm-rg-callout-link:hover { text-decoration: underline; }

/* ===================================================================== */
/* 23 · VERDICT (.vpm-sec--verdict) — score + body                        */
/* ===================================================================== */
.vpm-sec--verdict > .vpm-wrap {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 26px;
  align-items: center;
  padding: 32px;
  border-radius: var(--r-lg);
  color: #fff;
  background:
    radial-gradient(420px 200px at 12% 0%, rgba(34, 197, 94, .24), transparent 62%),
    linear-gradient(150deg, var(--dark-1), var(--dark-2) 52%, var(--dark-4));
  border: 1.5px solid rgba(250, 204, 21, .26);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
  isolation: isolate;
}
.vpm-sec--verdict .vpm-sec-title {
  grid-column: 1 / -1;
  margin: 0;
  color: #fff;
}
.vpm-sec--verdict .vpm-sec-title em {
  background: linear-gradient(180deg, var(--gold-soft), var(--gold));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.vpm-verdict-score {
  display: grid;
  place-items: center;
  width: 116px;
  height: 116px;
  border-radius: 50%;
  /* gold disc (L>=0.70) — the one place dark text is allowed (NOT a CTA) */
  background: linear-gradient(150deg, var(--gold), var(--gold-deep));
  color: var(--ink-0);
  box-shadow: 0 18px 40px -16px rgba(202, 138, 4, .6), inset 0 1px 0 rgba(255, 255, 255, .5);
}
.vpm-verdict-num { font-weight: 900; font-size: 38px; font-variant-numeric: tabular-nums; line-height: 1; }
.vpm-verdict-of { font-size: 13px; font-weight: 700; opacity: .8; }
.vpm-verdict-body { margin: 0; font-size: 15px; color: rgba(229, 245, 236, .9); }

/* ===================================================================== */
/* 24 · CITATIONS (.vpm-citations) — source list                          */
/* ===================================================================== */
.vpm-citations {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.vpm-citation {
  display: grid;
  gap: 4px;
  padding: 16px 18px;
  background: var(--bg-soft);
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  font-size: 12px;
  color: var(--ink-2);
}
.vpm-citation a { font-size: 14.5px; font-weight: 700; color: var(--green-deep); }
.vpm-citation a:hover { text-decoration: underline; }
.vpm-citation > span { font-size: 14.5px; font-weight: 700; color: var(--ink-0); }
.vpm-citation-pub { font-size: 12px !important; font-weight: 600 !important; color: var(--ink-2) !important; }
.vpm-citation-date { font-size: 12px !important; font-weight: 400 !important; color: var(--ink-2) !important; font-variant-numeric: tabular-nums; }

/* ===================================================================== */
/* 25 · FAQ (.vpm-faq) — native <details> accordion (ALWAYS last)          */
/* ===================================================================== */
.vpm-faq {
  display: grid;
  gap: 10px;
}
.vpm-faq-item {
  background: linear-gradient(180deg, #fff, var(--bg-soft));
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  overflow: hidden;
  isolation: isolate;
}
.vpm-faq-q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 18px 20px;
  font-size: 15.5px;
  font-weight: 800;
  color: var(--ink-0);
  cursor: pointer;
  list-style: none;
}
.vpm-faq-q::-webkit-details-marker { display: none; }
.vpm-faq-q::after {
  content: "";
  flex: 0 0 auto;
  width: 11px;
  height: 11px;
  border-right: 2px solid var(--green);
  border-bottom: 2px solid var(--green);
  transform: rotate(45deg);
  transition: transform .2s ease;
}
.vpm-faq-item[open] .vpm-faq-q::after { transform: rotate(-135deg); }
.vpm-faq-a {
  padding: 0 20px 18px;
  font-size: 14.5px;
  color: var(--ink-1);
  line-height: 1.65;
}
.vpm-faq-a p { margin: 0; }

/* ===================================================================== */
/* 26 · FOOTER (.vpm-footer.vpm-bleed) — full-bleed dark                   */
/* ===================================================================== */
.vpm-footer {
  margin-bottom: -40px;
  padding: 48px 20px 40px;
  color: rgba(255, 255, 255, .82);
  background: linear-gradient(160deg, var(--dark-2), var(--dark-1));
  overflow: hidden;
  isolation: isolate;
}
.vpm-footer-links {
  list-style: none;
  margin: 0 0 18px;
  padding: 0 0 18px;
  display: flex;
  flex-wrap: wrap;
  gap: 10px 22px;
  border-bottom: 1px solid rgba(255, 255, 255, .12);
}
.vpm-footer-links a { font-size: 14px; color: rgba(255, 255, 255, .74); }
.vpm-footer-links a:hover { color: #fff; }
.vpm-footer-links span { font-size: 14px; color: rgba(255, 255, 255, .56); }
.vpm-rg-line {
  margin: 0 0 10px;
  font-size: 12.5px;
  color: rgba(255, 255, 255, .6);
}
.vpm-rg-text { margin-right: 4px; }
.vpm-rg-help { color: var(--gold-soft); font-weight: 700; }
.vpm-rg-help:hover { text-decoration: underline; }
.vpm-footer-copy {
  margin: 0;
  font-size: 12.5px;
  color: rgba(255, 255, 255, .5);
}

/* ===================================================================== */
/* MICRO-INTERACTION — tappable feedback                                  */
/* ===================================================================== */
@media (hover: none) {
  .vpm-cta:active,
  .vpm-demo-launch:active,
  .vpm-tab:active,
  .vpm-faq-q:active { filter: brightness(.98); }
}
@media (prefers-reduced-motion: reduce) {
  .vpm * { animation: none !important; transition: none !important; }
}

/* ===================================================================== */
/* RESPONSIVE — TABLET <=768 (tablet + phone base)                        */
/* ===================================================================== */
@media (max-width: 768px) {
  .vpm-sec { padding: 40px 16px !important; }
  .vpm-sec-title { font-size: clamp(23px, 6vw, 30px) !important; }
  .vpm-scorecard-sub,
  .vpm-rtp-sub,
  .vpm-htp-intro,
  .vpm-hero-sub { max-width: 100% !important; }

  /* HERO -> single column */
  .vpm-hero { padding: 44px 16px 0 !important; }
  .vpm-hero > .vpm-wrap { padding-bottom: 46px !important; }
  .vpm-hero-title { max-width: 100% !important; }
  .vpm-wave svg { height: 60px !important; }

  /* FEATURED DEMO */
  .vpm-sec--featured-demo { padding: 40px 16px !important; }

  /* TOC -> static (sticky off on mobile) + swipe rail */
  .vpm-toc { position: static !important; top: auto !important; padding: 20px 16px !important; }
  .vpm-toc-list {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    scroll-snap-type: x mandatory !important;
    scroll-padding: 14px !important;
    scrollbar-width: none !important;
    mask-image: linear-gradient(90deg, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%) !important;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%) !important;
  }
  .vpm-toc-list::-webkit-scrollbar { display: none !important; }
  .vpm-toc-item a { white-space: nowrap !important; scroll-snap-align: start !important; }

  /* INTRO cards -> 1-col app-panel */
  .vpm-intro-grid { grid-template-columns: 1fr !important; gap: 14px !important; }

  /* SCORECARD pillars -> 1-col */
  .vpm-pillars { grid-template-columns: 1fr !important; gap: 14px !important; }

  /* QUICK INFO tabbar -> SWIPE */
  .vpm-quickinfo .vpm-tabbar {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    scroll-snap-type: x mandatory !important;
    scroll-padding: 14px !important;
    scrollbar-width: none !important;
    mask-image: linear-gradient(90deg, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%) !important;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%) !important;
  }
  .vpm-quickinfo .vpm-tabbar::-webkit-scrollbar { display: none !important; }
  .vpm-quickinfo .vpm-tab { min-width: 104px !important; }
  .vpm-kv-row { grid-template-columns: 1fr !important; gap: 4px !important; }

  /* RTP -> SWIPE rail */
  .vpm-rtp-grid {
    grid-template-columns: none !important;
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    scroll-snap-type: x mandatory !important;
    scroll-padding: 14px !important;
    scrollbar-width: none !important;
    gap: 12px !important;
    margin: 0 -16px !important;
    padding: 4px 16px !important;
    mask-image: linear-gradient(90deg, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%) !important;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%) !important;
  }
  .vpm-rtp-grid::-webkit-scrollbar { display: none !important; }
  .vpm-rtp-card { flex: 0 0 auto !important; min-width: 240px !important; scroll-snap-align: start !important; }

  /* PROS & CONS -> stack + quotes 1-col */
  .vpm-proscons { grid-template-columns: 1fr !important; gap: 14px !important; }
  .vpm-quotes { grid-template-columns: 1fr !important; }

  /* OFFER banners -> stack, center CTA */
  .vpm-offer { padding: 28px 16px !important; }
  .vpm-offer-card { grid-template-columns: 1fr !important; gap: 18px !important; padding: 26px 22px !important; text-align: center !important; }
  .vpm-offer-logo { justify-content: center !important; }
  .vpm-offer-cta { grid-column: 1 !important; grid-row: auto !important; width: 100% !important; }

  /* COINS tabbar -> SWIPE */
  .vpm-coins .vpm-tabbar {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    scroll-snap-type: x mandatory !important;
    scroll-padding: 14px !important;
    scrollbar-width: none !important;
    mask-image: linear-gradient(90deg, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%) !important;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 14px, #000 calc(100% - 14px), transparent 100%) !important;
  }
  .vpm-coins .vpm-tabbar::-webkit-scrollbar { display: none !important; }
  .vpm-coins .vpm-tab { min-width: 112px !important; }

  /* JACKPOT rows -> compact */
  .vpm-ladder-row { padding: 14px 16px !important; }

  /* FREE SPINS -> stack */
  .vpm-grids { grid-template-columns: 1fr !important; gap: 16px !important; }

  /* COMPARE -> SWIPE rail */
  .vpm-compare {
    grid-template-columns: none !important;
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    scroll-snap-type: x mandatory !important;
    scroll-padding: 14px !important;
    scrollbar-width: none !important;
    gap: 12px !important;
    margin: 0 -16px !important;
    padding: 4px 16px !important;
    mask-image: linear-gradient(90deg, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%) !important;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%) !important;
  }
  .vpm-compare::-webkit-scrollbar { display: none !important; }
  .vpm-compare-card { flex: 0 0 auto !important; min-width: 230px !important; scroll-snap-align: start !important; }

  /* GAMES -> SWIPE rail */
  .vpm-games { padding: 40px 16px !important; }
  .vpm-games-grid {
    grid-template-columns: none !important;
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    scroll-snap-type: x mandatory !important;
    scroll-padding: 14px !important;
    scrollbar-width: none !important;
    gap: 14px !important;
    margin: 0 -16px !important;
    padding: 4px 16px !important;
    mask-image: linear-gradient(90deg, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%) !important;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%) !important;
  }
  .vpm-games-grid::-webkit-scrollbar { display: none !important; }
  .vpm-game-card { flex: 0 0 auto !important; width: 260px !important; scroll-snap-align: start !important; }

  /* HOW TO PLAY shots -> SWIPE rail */
  .vpm-shots {
    grid-template-columns: none !important;
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    scroll-snap-type: x mandatory !important;
    scroll-padding: 14px !important;
    scrollbar-width: none !important;
    gap: 12px !important;
    margin: 0 -16px !important;
    padding: 4px 16px !important;
    mask-image: linear-gradient(90deg, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%) !important;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%) !important;
  }
  .vpm-shots::-webkit-scrollbar { display: none !important; }
  .vpm-shot { flex: 0 0 auto !important; width: 230px !important; scroll-snap-align: start !important; }

  /* BANKROLL KPI -> 2-col (never 1-col) */
  .vpm-stat-grid { grid-template-columns: 1fr 1fr !important; }
  .vpm-stat:last-child:nth-child(odd) { grid-column: 1 / -1 !important; }
  /* JS slider UI -> single column on phone */
  .vpm-calc-controls { grid-template-columns: 1fr !important; }

  /* ACCESS rows -> 2-line stack */
  .vpm-access-row { grid-template-columns: 22px minmax(0, 1fr) !important; gap: 8px 12px !important; }
  .vpm-access-note { grid-column: 1 / -1 !important; padding-left: 34px !important; }

  /* CITATIONS -> 1-col */
  .vpm-citations { grid-template-columns: 1fr !important; }

  /* VERDICT -> stack, score on top */
  .vpm-sec--verdict > .vpm-wrap { grid-template-columns: 1fr !important; gap: 18px !important; text-align: center !important; padding: 26px 22px !important; }
  .vpm-verdict-score { margin: 0 auto !important; }

  /* FOOTER links wrap */
  .vpm-footer { padding: 40px 16px 36px !important; }
}

/* ===================================================================== */
/* RESPONSIVE — PHONE COMPACT <=430                                       */
/* ===================================================================== */
@media (max-width: 430px) {
  .vpm-sec { padding: 34px 14px !important; }
  .vpm-sec-title { font-size: clamp(22px, 6.4vw, 27px) !important; }
  .vpm-hero-title { font-size: clamp(28px, 8vw, 38px) !important; }

  /* BANKROLL KPI stays 2-col, tighter */
  .vpm-stat-grid { gap: 8px !important; }
  .vpm-stat-val { font-size: 20px !important; }

  /* verdict score smaller */
  .vpm-verdict-score { width: 100px !important; height: 100px !important; }
  .vpm-verdict-num { font-size: 32px !important; }

  /* slightly smaller swipe cards on tiny phones */
  .vpm-rtp-card { min-width: 220px !important; }
  .vpm-compare-card { min-width: 210px !important; }
  .vpm-game-card { width: 232px !important; }
}

/* ===================================================================== */
/* RESPONSIVE — VERY SMALL <=375                                          */
/* ===================================================================== */
@media (max-width: 375px) {
  .vpm-offer-headline { font-size: 21px !important; }
  .vpm-hero-title { font-size: 27px !important; }
  .vpm-stat-val { font-size: 18px !important; }
}

/* ======================================================================
   02 · HERO EXTRAS — kicker, hero-grid, meta chips, snapshot card,
   wave-bar chips, glow wave. 1:1 port of the source HTML hero CSS
   (.vp-art → .vpm rescope; --ink-3/--maxw inlined: #64748b / 1400px).
   Emitted by render_hero() in render-trait.php — selector contract holds.
   ====================================================================== */
.vpm .vp-hero-grid{display:grid;grid-template-columns:minmax(0,1fr) 372px;gap:48px;align-items:start;position:relative;z-index:2}
.vpm .vp-kicker{display:inline-flex;align-items:center;gap:9px;font-size:12px;font-weight:700;color:#bfe6cd;background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.28);padding:6px 13px;border-radius:99px;margin-bottom:16px}
.vpm .vp-kicker .pulse{width:8px;height:8px;border-radius:50%;background:var(--green-bright);box-shadow:0 0 0 0 rgba(34,197,94,.5);animation:vpmPulse 2.2s infinite}
@keyframes vpmPulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}70%{box-shadow:0 0 0 9px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.vpm .vp-lede{font-size:16.5px;line-height:1.62;color:#cfe6d7;margin-top:16px;max-width:96%}
.vpm .vp-lede b{color:#fff;font-weight:800}
.vpm .vp-hero-meta{display:flex;gap:16px;flex-wrap:wrap;margin-top:20px}
.vpm .vp-hm{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:#cfe6d7}
.vpm .vp-hm svg{width:15px;height:15px;stroke:var(--green-bright);fill:none;stroke-width:2.4;flex:none}
.vpm .vp-hm b{color:#fff}
/* — snapshot card — */
.vpm .vp-snap{background:linear-gradient(160deg,rgba(255,255,255,.97),rgba(250,255,252,.95));border:1.5px solid rgba(34,197,94,.25);border-radius:22px;padding:20px;box-shadow:0 28px 64px -20px rgba(0,0,0,.5);position:relative;z-index:2}
.vpm .vp-snap-head{display:flex;align-items:center;gap:14px;padding-bottom:15px;border-bottom:1.5px dashed var(--line-2)}
.vpm .vp-snap-logo{width:58px;height:58px;border-radius:15px;background:linear-gradient(135deg,#16a34a,#0a1f14);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;flex:none;box-shadow:0 6px 16px rgba(22,163,74,.3)}
.vpm .vp-snap-logo b{font-size:20px;font-weight:900;color:var(--gold);line-height:1}
.vpm .vp-snap-logo small{font-size:7.5px;letter-spacing:.5px;color:#bfe6cd;margin-top:3px}
.vpm .vp-snap-head .nm{font-size:18px;font-weight:900;color:var(--ink-0);letter-spacing:-.4px;line-height:1.1}
.vpm .vp-snap-head .ds{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:7px;margin-top:3px}
.vpm .vp-snap-head .ds .dot{width:3px;height:3px;border-radius:50%;background:#64748b}
.vpm .vp-snap-score{display:flex;align-items:center;gap:14px;margin:15px 0;padding:13px 15px;border-radius:14px;background:linear-gradient(135deg,#0a1f14,#0d2818);color:#fff}
.vpm .vp-snap-score .big{font-size:34px;font-weight:900;color:var(--gold);line-height:1;letter-spacing:-1px}
.vpm .vp-snap-score .big small{font-size:14px;color:#a8c6b3;font-weight:700}
.vpm .vp-snap-score .sl{font-size:11px;color:#bfe6cd;letter-spacing:.6px;text-transform:uppercase;font-weight:800}
.vpm .vp-snap-score .sm{font-size:11.5px;color:#9fc6ad;margin-top:3px}
.vpm .vp-snap-theme{margin-left:auto;text-align:right}
.vpm .vp-snap-theme .sl{color:#a8c6b3}
.vpm .vp-snap-theme .sm{color:#fff;font-weight:800;font-size:13px}
.vpm .vp-snap-facts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.vpm .vp-snap-fact{background:var(--bg-2);border:1px solid var(--line);border-radius:11px;padding:9px 11px}
.vpm .vp-snap-fact .k{font-size:9.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:#64748b}
.vpm .vp-snap-fact .v{font-size:14px;font-weight:800;color:var(--ink-0);margin-top:2px;letter-spacing:-.2px}
.vpm .vp-snap-fact.good{background:color-mix(in oklab,var(--green) 9%,#fff);border-color:var(--line-2)}
.vpm .vp-snap-fact.good .v{color:var(--green-deep)}
.vpm .vp-snap-fact.gold{background:color-mix(in oklab,var(--gold) 12%,#fff);border-color:color-mix(in oklab,var(--gold) 30%,var(--line))}
.vpm .vp-snap-fact.gold .v{color:var(--gold-deep)}
/* — icon tone tiles (wave chips) — */
.vpm .vp-ic{display:inline-flex;align-items:center;justify-content:center;flex:none;border-radius:12px;color:#fff}
.vpm .vp-ic svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2.2}
.vpm .vp-ic.g{background:linear-gradient(135deg,#22c55e,#15803d)}
.vpm .vp-ic.gold{background:linear-gradient(135deg,#facc15,#ca8a04)}
.vpm .vp-ic.blue{background:linear-gradient(135deg,#0ea5e9,#0284c7)}
.vpm .vp-ic.rose{background:linear-gradient(135deg,#fb7185,#e11d48)}
.vpm .vp-ic.purple{background:linear-gradient(135deg,#a855f7,#7c3aed)}
/* — hero wave-bar — */
.vpm .vp-hero-wave-bar{position:relative;margin-top:30px}
.vpm .vp-hero-wave-bar .wave-top{display:block;width:100%;height:54px;line-height:0}
.vpm .vp-hero-wave-bar .wave-top svg{display:block;width:100%;height:100%}
.vpm .vp-hero-wave-bar .bar{background:linear-gradient(135deg,#06140d,#0d2818);padding:4px 0 18px}
.vpm .vp-hero-wave-bar .wave-bot{display:block;width:100%;height:46px;line-height:0}
.vpm .vp-hero-wave-bar .wave-bot svg{display:block;width:100%;height:100%}
.vpm .vp-hwb-chips{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;max-width:1400px;margin:0 auto;padding:0 32px}
.vpm .vp-wave-chip{display:flex;align-items:center;gap:11px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.15);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:14px;padding:11px 14px;color:#fbf6ea}
.vpm .vp-wave-chip .vp-ic{width:34px;height:34px;border-radius:10px}
.vpm .vp-wave-chip .tx{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.vpm .vp-wave-chip .tx .v{font-size:15px;font-weight:900;color:#fff;letter-spacing:-.3px}
.vpm .vp-wave-chip .tx .l{font-size:10.5px;color:#a8c6b3;font-weight:600;letter-spacing:.2px;margin-top:1px}
/* — hero-bottom glow wave — */
.vpm .vp-hero-glow-wave{position:relative;width:100%;height:clamp(60px,7vw,104px);display:block;margin-top:-1px;line-height:0}
.vpm .vp-hero-glow-wave svg{display:block;width:100%;height:100%}
.vpm .vp-hero-glow-wave .wave-fill{fill:#f3f6f1}
.vpm .vp-hero-glow-wave .wave-edge{fill:none;stroke:url("#vpWaveGrad");stroke-width:3.5;filter:drop-shadow(0 0 7px rgba(34,197,94,.5)) drop-shadow(0 0 3px rgba(250,204,21,.4))}
/* — responsive (mirror of the source HTML ladder) — */
@media(max-width:1100px){
  .vpm .vp-hero-grid{grid-template-columns:1fr}
  .vpm .vp-snap{max-width:520px}
  .vpm .vp-hwb-chips{grid-template-columns:1fr 1fr}
}
@media(max-width:768px){
  .vpm .vp-hwb-chips{padding:0 16px}
}
@media(max-width:430px){
  .vpm .vp-hwb-chips{padding:0 14px;gap:8px}
  .vpm .vp-snap-facts{gap:6px}
  .vpm .vpm-hero-cta-row{display:grid !important;grid-template-columns:1fr 1fr !important;gap:10px !important}
  .vpm .vpm-hero-cta-row .vpm-cta{width:100% !important;min-width:0 !important;padding:12px 12px !important;font-size:13.5px !important;text-align:center !important;justify-content:center}
}


/* ================================================================
   GATE-3.2 CSS GAP FIX — frag A+B+C (mért hiánylista: _planning/3lucky-css-gaps.txt)
   + FOOTER (kanonikus vegaspokie-aboutpage/widgets/footer/styles.css)
   Merged 2026-06-11. Forrás-HTML 1:1 portok, .vpm/.vp scope megtartva.
   ================================================================ */

/* === frag-A === */
/* =======================================================================
   FRAG-A · 3-Lucky-Rainbows CSS port — sections: hero / featured_demo /
   intro / scorecard / quickinfo / rtp
   1:1 port from templates-html/vegaspokie/games-review/
   vegaspokie-3-lucky-rainbows-slot-2026-06-08.html \3c style> blocks
   (L67–273, L407–509, L587–686, L901–933) — .vp-art → .vpm rescope,
   HTML-only / value-drifted CSS-vars inlined as literals:
     --ink-0:#0a1f14  --ink-1:#1e2b22  --ink-2:#475569  --ink-3:#64748b
     --line:rgba(22,163,74,.12)  --line-2:rgba(22,163,74,.22)
     --bg-card:#fff  --bg-soft:#fafffd  --bg-2:#f1f6f1  --maxw:1400px
     --ocean:#0284c7  --ocean-2:#0ea5e9  --rose:#e11d48
     --shadow-sm:0 4px 14px rgba(0,0,0,.04)
   Selector contract: every selector maps to markup render-trait.php emits.
   ======================================================================= */

/* ===================================================================== */
/* SHARED HELPERS — vpm-sec-head / vpm-sec-sub / vpm-card / num-tab       */
/* (port of .sec-head / .sec-sub / .num-tab; duplicates across fragments  */
/* are intentional + harmless)                                            */
/* ===================================================================== */
.vpm .vpm-sec-head{margin-bottom:22px;padding-bottom:14px;border-bottom:1.5px dashed rgba(22,163,74,.18)}
.vpm .vpm-sec-sub{font-size:15px;color:#475569;margin:8px 0 14px;max-width:75%}
@media(max-width:768px){
  .vpm .vpm-sec-sub{max-width:100%}
}
/* .vpm-card is a widget-generic hook the render adds NEXT TO the real
   card classes (vpm-intro-card / vpm-rtp-card) which carry the visuals.
   Styling it with the .vp-card box recipe would override the existing
   .vpm-intro-card design (lower specificity), so it stays a neutral
   structural stub — the per-card rules below do the 1:1 styling. */
.vpm .vpm-card{min-width:0}
.vpm .num-tab{font-variant-numeric:tabular-nums}

/* ===================================================================== */
/* HERO — missing: vp-hero-left, vpm-ico                                  */
/* ===================================================================== */
/* .vp-hero-left has no own rule in the source HTML (pure grid child of
   .vp-hero-grid's minmax(0,1fr) column) — structural stub only. */
.vpm .vp-hero-left{min-width:0}
/* .vpm-ico — the trait's svg() helper (18×18 inline icon inside CTAs).
   Sized to its own width/height attrs; color flows via currentColor so
   the existing .vpm-cta rules keep deciding stroke color (white on the
   primary CTA — buttons-always-white-text rule holds). */
.vpm .vpm-ico{width:18px;height:18px;flex:none;fill:none;stroke:currentColor}
.vpm .vpm-cta .vpm-ico{width:17px;height:17px;stroke-width:2.6}

/* ===================================================================== */
/* FEATURED DEMO (.vpm-sec.vpm-bleed.vp-featured-demo) — full 1:1 port    */
/* of HTML L408–508. padding gets !important: the widget's mobile blocks  */
/* force .vpm-sec{padding:…!important} at ≤768/≤430 which would break the */
/* hero-overlap card; this higher-specificity !important wins everywhere. */
/* ===================================================================== */
.vpm .vpm-sec.vp-featured-demo{position:relative;width:100vw;margin-left:calc(50% - 50vw);background:transparent;color:#1e2b22;padding:0 0 8px !important;z-index:5}
.vpm .vp-fd-inner{max-width:1400px;margin:0 auto;padding:0 32px}
/* the iframe CARD floats up into the hero */
.vpm .vp-fd-card{margin-top:clamp(-150px,-13vw,-90px);position:relative;z-index:6;border-radius:22px;overflow:hidden;
  background:linear-gradient(180deg,#fff,#fafffd);border:1.5px solid rgba(255,255,255,.9);
  box-shadow:0 40px 90px -28px rgba(6,20,13,.55),0 12px 30px -12px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.95)}
.vpm .vp-fd-card-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px 20px;background:linear-gradient(135deg,#06140d,#0d2818);color:#eaf5ee}
.vpm .vp-fd-card-head .l{display:flex;align-items:center;gap:12px;min-width:0}
.vpm .vp-fd-card-head .badge{width:44px;height:44px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#16a34a,#06140d);flex:none;box-shadow:0 6px 16px rgba(22,163,74,.4)}
.vpm .vp-fd-card-head .badge b{font-size:15px;font-weight:900;color:#facc15;line-height:1}
.vpm .vp-fd-card-head .badge small{font-size:6.5px;letter-spacing:.4px;color:#bfe6cd;margin-top:2px}
.vpm .vp-fd-card-head .eb{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:900;letter-spacing:.8px;text-transform:uppercase;color:#facc15}
.vpm .vp-fd-card-head .eb svg{width:12px;height:12px;stroke:#facc15;fill:none;stroke-width:2.6}
/* heading tag is an Elementor control (default h2) — cover h2+h3 */
.vpm .vp-fd-card-head h2,
.vpm .vp-fd-card-head h3{font-size:clamp(17px,2vw,21px);font-weight:900;letter-spacing:-.4px;color:#fff;line-height:1.15;margin:2px 0 0}
.vpm .vp-fd-card-head h2 em,
.vpm .vp-fd-card-head h3 em{font-style:normal;color:#facc15}
.vpm .vp-fd-card-head .r{font-size:11.5px;color:#9fc6ad;display:flex;align-items:center;gap:7px;white-space:nowrap}
.vpm .vp-fd-card-head .r .dot{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px rgba(34,197,94,.7)}
/* STAGE — iframe (left) + verified key-specs sidebar (right) */
.vpm .vp-fd-stage{display:grid;grid-template-columns:1fr 320px;gap:0;background:linear-gradient(135deg,#06140d,#0a1f14)}
.vpm .vp-fd-frame{position:relative;overflow:hidden;background:#04100a;aspect-ratio:16/9;min-height:340px;border-right:1px solid rgba(255,255,255,.08)}
.vpm .vp-fd-frame iframe{width:100%;height:100%;border:0;display:block}
.vpm .vp-fd-frame:fullscreen{aspect-ratio:auto}
.vpm .vp-fd-frame:fullscreen iframe{width:100vw;height:100vh}
/* fullscreen toggle (revealed by JS once the demo runs) */
.vpm .vp-fd-fs{position:absolute;top:12px;right:12px;z-index:4;display:inline-flex;align-items:center;gap:7px;
  background:rgba(6,20,13,.72);color:#fff;border:1px solid rgba(255,255,255,.22);border-radius:10px;
  padding:8px 12px;font-size:12px;font-weight:800;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  box-shadow:0 6px 16px -6px rgba(0,0,0,.5);transition:.15s}
/* author display would defeat the UA [hidden] rule — keep the launcher state honest */
.vpm .vp-fd-fs[hidden]{display:none}
.vpm .vp-fd-fs:hover{background:rgba(22,163,74,.85);border-color:rgba(255,255,255,.35)}
.vpm .vp-fd-fs svg{width:15px;height:15px;stroke:#fff;fill:none;stroke-width:2.4}
.vpm .vp-fd-frame:fullscreen .vp-fd-fs{top:16px;right:16px}
/* spec sidebar */
.vpm .vp-fd-specs{padding:16px 18px;background:linear-gradient(170deg,#0a1f14,#0d2818);display:flex;flex-direction:column;gap:0;overflow-y:auto}
.vpm .vp-fd-specs .sh{display:flex;align-items:center;gap:8px;font-size:10.5px;font-weight:900;letter-spacing:.6px;text-transform:uppercase;color:#facc15;padding-bottom:10px;margin-bottom:4px;border-bottom:1px dashed rgba(255,255,255,.12)}
.vpm .vp-fd-specs .sh svg{width:14px;height:14px;stroke:#facc15;fill:none;stroke-width:2.4}
.vpm .vp-fd-srow{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed rgba(255,255,255,.08)}
.vpm .vp-fd-srow:last-of-type{border-bottom:0}
.vpm .vp-fd-srow .k{display:flex;align-items:center;gap:8px;font-size:11.5px;color:#9fc6ad;font-weight:700;flex:none}
.vpm .vp-fd-srow .k svg{width:14px;height:14px;stroke:#7fd99f;fill:none;stroke-width:2.2;flex:none}
.vpm .vp-fd-srow .v{font-size:12.5px;font-weight:800;color:#fff;text-align:right;line-height:1.3}
.vpm .vp-fd-srow .v.gold{color:#facc15}
.vpm .vp-fd-srow .v small{display:block;font-size:9.5px;color:#7da890;font-weight:600;margin-top:1px}
.vpm .vp-fd-specs .src{font-size:9px;color:#6f9a82;margin-top:10px;line-height:1.4}
/* launcher placeholder */
.vpm .vp-fd-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;text-align:center;padding:24px;background:radial-gradient(620px 320px at 50% 35%,rgba(34,197,94,.16),transparent 60%),linear-gradient(160deg,#08180e,#0a1f14)}
.vpm .vp-fd-ph .thumb{width:84px;height:84px;border-radius:22px;display:grid;place-items:center;font-size:42px;background:radial-gradient(circle at 40% 30%,#16a34a,#06140d);box-shadow:0 14px 34px -10px rgba(22,163,74,.6)}
.vpm .vp-fd-ph .pt{font-size:15px;font-weight:800;color:#fff}
.vpm .vp-fd-ph .ps{font-size:12.5px;color:#9fc6ad;max-width:46ch;line-height:1.5}
.vpm .vp-fd-ph .play{display:inline-flex;align-items:center;gap:9px;background:linear-gradient(135deg,#f97316,#dc2626);color:#fff !important;font-weight:900;font-size:14px;border:none;border-radius:12px;padding:12px 24px;cursor:pointer;text-shadow:0 1px 2px rgba(0,0,0,.22);box-shadow:0 12px 28px -8px rgba(234,88,12,.55)}
/* 5-state guard — theme :hover must not repaint the CTA (white text always) */
.vpm .vp-fd-ph .play:hover,
.vpm .vp-fd-ph .play:focus,
.vpm .vp-fd-ph .play:active{background:linear-gradient(135deg,#f97316,#dc2626) !important;background-color:#ea580c !important;color:#fff !important}
.vpm .vp-fd-ph .play svg{width:17px;height:17px;stroke:#fff;fill:none;stroke-width:2.6}
.vpm .vp-fd-ph .note{font-size:10.5px;color:#6f9a82}
/* honest "no verified AU bonus" note */
.vpm .vp-fd-onote{display:flex;align-items:flex-start;gap:10px;margin:0;padding:13px 16px 0;background:linear-gradient(180deg,#fff,#fff);font-size:12.5px;line-height:1.55;color:#475569}
.vpm .vp-fd-onote svg{width:17px;height:17px;flex:none;margin-top:1px;stroke:#15803d;fill:none;stroke-width:2.2}
.vpm .vp-fd-onote b{color:#0a1f14;font-weight:800}
/* offer deck — BOLD, COLOURFUL, LAYERED (solid duotone + bloom, no glass) */
.vpm .vp-fd-odeck{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;padding:14px 16px 16px;background:linear-gradient(180deg,#fff,#fafffd)}
.vpm .vp-fd-ocard{border-radius:16px;padding:16px 15px;position:relative;overflow:hidden;isolation:isolate;
  color:#eafff3;border:1.5px solid rgba(255,255,255,.14);
  box-shadow:0 18px 40px -16px rgba(6,20,13,.5),0 4px 14px -6px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.14);
  transition:transform .18s ease,box-shadow .18s ease}
.vpm .vp-fd-ocard:hover{transform:translateY(-3px);box-shadow:0 26px 54px -18px rgba(6,20,13,.6),0 6px 18px -6px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.2)}
.vpm .vp-fd-ocard.fs{background:linear-gradient(150deg,#0c2a18 0%,#103a22 48%,#0a2014 100%)}
.vpm .vp-fd-ocard.welcome{background:linear-gradient(150deg,#2a1c06 0%,#3a2708 48%,#1f1404 100%)}
.vpm .vp-fd-ocard.nd{background:linear-gradient(150deg,#06212e 0%,#082c3e 48%,#04161f 100%)}
.vpm .vp-fd-ocard::after{content:"";position:absolute;inset:0;z-index:-1;opacity:.9;pointer-events:none}
.vpm .vp-fd-ocard.fs::after{background:radial-gradient(420px 200px at 18% 0%,rgba(34,197,94,.30),transparent 62%)}
.vpm .vp-fd-ocard.welcome::after{background:radial-gradient(420px 200px at 18% 0%,rgba(250,204,21,.26),transparent 62%)}
.vpm .vp-fd-ocard.nd::after{background:radial-gradient(420px 200px at 18% 0%,rgba(14,165,233,.28),transparent 62%)}
.vpm .vp-fd-ocard::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;z-index:1}
.vpm .vp-fd-ocard.fs::before{background:linear-gradient(90deg,#22c55e,#15803d);box-shadow:0 0 14px rgba(34,197,94,.7)}
.vpm .vp-fd-ocard.welcome::before{background:linear-gradient(90deg,#fde047,#f97316);box-shadow:0 0 14px rgba(250,204,21,.6)}
.vpm .vp-fd-ocard.nd::before{background:linear-gradient(90deg,#38bdf8,#0284c7);box-shadow:0 0 14px rgba(14,165,233,.6)}
/* icon LEFT + title RIGHT (hard rule) */
.vpm .vp-fd-ocard .oh{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.vpm .vp-fd-ocard .oh .vp-ic{width:38px;height:38px;border-radius:11px;flex:none;box-shadow:0 8px 20px -6px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.35)}
.vpm .vp-fd-ocard.fs .oh .vp-ic{background:linear-gradient(135deg,#4ade80,#15803d)}
.vpm .vp-fd-ocard.welcome .oh .vp-ic{background:linear-gradient(135deg,#fde047,#ca8a04)}
.vpm .vp-fd-ocard.nd .oh .vp-ic{background:linear-gradient(135deg,#38bdf8,#0284c7)}
.vpm .vp-fd-ocard .oh .ot{font-size:14px;font-weight:900;color:#fff;line-height:1.1}
.vpm .vp-fd-ocard .oh .os{font-size:9.5px;color:#bfe6cd;font-weight:800;text-transform:uppercase;letter-spacing:.5px;margin-top:3px}
.vpm .vp-fd-ocard.welcome .oh .os{color:#f3dca0}
.vpm .vp-fd-ocard.nd .oh .os{color:#a9d8ef}
.vpm .vp-fd-ocard p{font-size:12px;color:#d4e9dd;line-height:1.55;margin:0 0 13px}
.vpm .vp-fd-ocard p b{color:#fff}
.vpm .vp-fd-ocard .oclaim{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;background:linear-gradient(135deg,#f97316,#ea580c 52%,#dc2626);color:#fff !important;font-weight:900;font-size:13px;border:none;border-radius:11px;padding:11px;cursor:pointer;text-decoration:none;text-shadow:0 1px 2px rgba(0,0,0,.28);box-shadow:0 12px 26px -8px rgba(234,88,12,.6),inset 0 1px 0 rgba(255,255,255,.25)}
.vpm .vp-fd-ocard .oclaim:hover,
.vpm .vp-fd-ocard .oclaim:focus,
.vpm .vp-fd-ocard .oclaim:active{background:linear-gradient(135deg,#f97316,#ea580c 52%,#dc2626) !important;background-color:#ea580c !important;color:#fff !important;filter:brightness(1.06)}
.vpm .vp-fd-ocard .oclaim svg{width:14px;height:14px;stroke:#fff;fill:none;stroke-width:2.6}
.vpm .vp-fd-ocard .ofine{display:block;font-size:9px;color:#8fbda2;margin-top:8px;text-align:center;line-height:1.4}
/* — featured-demo responsive ladder (mirror of the source) — */
@media(max-width:980px){
  .vpm .vp-fd-stage{grid-template-columns:1fr}
  .vpm .vp-fd-frame{border-right:0;border-bottom:1px solid rgba(255,255,255,.08)}
  .vpm .vp-fd-specs{flex-direction:row;flex-wrap:wrap;gap:0 18px}
  .vpm .vp-fd-specs .sh{flex-basis:100%}
  .vpm .vp-fd-srow{flex:1 1 calc(50% - 9px);min-width:140px}
  .vpm .vp-fd-specs .src{flex-basis:100%}
}
@media(max-width:880px){
  .vpm .vp-fd-odeck{grid-template-columns:1fr;gap:10px}
}
@media(max-width:768px){
  .vpm .vp-fd-inner{padding:0 14px}
  .vpm .vp-fd-card{margin-top:clamp(-110px,-22vw,-70px);border-radius:18px}
  .vpm .vp-fd-card-head{padding:14px 16px}
  .vpm .vp-fd-card-head .r{display:none}
  .vpm .vp-fd-srow{flex:1 1 100%}
}

/* ===================================================================== */
/* QUICKINFO (.vpm-sec--quickinfo.vpm-quickinfo-sec) — floating frosted   */
/* vp-frame shell (tone-gold bloom baked in) + .vp-qinfo card mapped onto */
/* the emitted .vpm-tabs.vpm-quickinfo / .vpm-tabbar / .vpm-tab nodes.    */
/* padding !important: must beat the widget's mobile .vpm-sec !important. */
/* ===================================================================== */
.vpm .vpm-sec--quickinfo.vpm-quickinfo-sec{position:relative;max-width:1400px;margin:24px auto;padding:46px 0 !important;border-radius:28px;overflow:hidden;
  background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(252,253,250,.84)),rgba(255,255,255,.4);
  backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);
  border:1.5px solid rgba(255,255,255,.85);
  box-shadow:0 28px 64px -20px rgba(22,163,74,.18),0 10px 32px -12px rgba(0,0,0,.06),inset 0 1px 0 rgba(255,255,255,.95)}
.vpm .vpm-sec--quickinfo.vpm-quickinfo-sec::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;border-radius:inherit;
  background:radial-gradient(800px 400px at 12% 0%,rgba(250,204,21,.08),transparent 60%),radial-gradient(700px 400px at 88% 100%,rgba(22,163,74,.05),transparent 60%)}
.vpm .vpm-sec--quickinfo.vpm-quickinfo-sec>.vpm-wrap{position:relative;z-index:1;padding:0 32px}
@media(max-width:1100px){
  .vpm .vpm-sec--quickinfo.vpm-quickinfo-sec{margin:18px 14px}
}
@media(max-width:768px){
  .vpm .vpm-sec--quickinfo.vpm-quickinfo-sec{margin:14px 10px;border-radius:22px;padding:34px 0 !important}
  .vpm .vpm-sec--quickinfo.vpm-quickinfo-sec>.vpm-wrap{padding:0 16px}
}
@media(max-width:430px){
  .vpm .vpm-sec--quickinfo.vpm-quickinfo-sec{margin:12px 8px;border-radius:20px}
  .vpm .vpm-sec--quickinfo.vpm-quickinfo-sec>.vpm-wrap{padding:0 14px}
}
/* tab card (.vp-qinfo 1:1) */
.vpm .vpm-tabs.vpm-quickinfo{background:#fff;border:1.5px solid rgba(22,163,74,.12);border-radius:18px;box-shadow:0 4px 14px rgba(0,0,0,.04);overflow:hidden}
/* tabbar → swipe rail (snap + hidden bar + edge fade), resets the older underline design */
.vpm .vpm-tabs.vpm-quickinfo .vpm-tabbar{display:flex;gap:6px;margin-bottom:0;border-bottom:0;padding:10px;background:#f1f6f1;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x mandatory;scroll-padding:14px;-webkit-overflow-scrolling:touch;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent);
  mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent)}
.vpm .vpm-tabs.vpm-quickinfo .vpm-tabbar::-webkit-scrollbar{display:none}
/* tab pills — 5-state magenta guard (rest/hover/focus/active/aria-selected) */
.vpm .vpm-tabs.vpm-quickinfo .vpm-tab{flex:0 0 auto;scroll-snap-align:start;white-space:nowrap;display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:800;color:#475569;
  background:#fff !important;background-color:#fff !important;background-image:none !important;
  border:1.5px solid rgba(22,163,74,.12);border-bottom:1.5px solid rgba(22,163,74,.12);border-radius:11px;padding:9px 15px;cursor:pointer;transition:.15s}
.vpm .vpm-tabs.vpm-quickinfo .vpm-tab:hover,
.vpm .vpm-tabs.vpm-quickinfo .vpm-tab:focus,
.vpm .vpm-tabs.vpm-quickinfo .vpm-tab:active{background:#fff !important;background-color:#fff !important;background-image:none !important;color:#15803d;border-color:rgba(22,163,74,.22)}
.vpm .vpm-tabs.vpm-quickinfo .vpm-tab svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2.4}
.vpm .vpm-tabs.vpm-quickinfo .vpm-tab[aria-selected="true"],
.vpm .vpm-tabs.vpm-quickinfo .vpm-tab[aria-selected="true"]:hover,
.vpm .vpm-tabs.vpm-quickinfo .vpm-tab[aria-selected="true"]:focus,
.vpm .vpm-tabs.vpm-quickinfo .vpm-tab[aria-selected="true"]:active{background:linear-gradient(135deg,#16a34a,#15803d) !important;background-color:#15803d !important;color:#fff !important;border-color:#15803d;box-shadow:0 6px 16px -6px rgba(22,163,74,.5)}
/* panels (.vp-qinfo-panel padding; keep the widget's [hidden] toggle) */
.vpm .vpm-tabs.vpm-quickinfo .vpm-tabpanel{display:block;padding:18px 20px}
.vpm .vpm-tabs.vpm-quickinfo .vpm-tabpanel[hidden]{display:none}

/* ===================================================================== */
/* SCORECARD — .vp-scc-* → .vpm-scorecard-* / .vpm-scc-* (1:1)            */
/* ===================================================================== */
.vpm .vpm-scorecard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.vpm .vpm-scorecard-card{background:#fff;border:1.5px solid rgba(22,163,74,.12);border-radius:16px;padding:16px;box-shadow:0 4px 14px rgba(0,0,0,.04)}
/* r1: icon LEFT, label RIGHT, score at the end (hard rule: never icon-above) */
.vpm .vpm-scc-r1{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.vpm .vpm-scc-ic{display:inline-flex;align-items:center;justify-content:center;flex:none;width:34px;height:34px;border-radius:10px;color:#fff}
.vpm .vpm-scc-ic svg{width:60%;height:60%;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.vpm .vpm-scc-ic.g{background:linear-gradient(135deg,#22c55e,#15803d)}
.vpm .vpm-scc-ic.gold{background:linear-gradient(135deg,#facc15,#ca8a04)}
.vpm .vpm-scc-ic.blue{background:linear-gradient(135deg,#0ea5e9,#0284c7)}
.vpm .vpm-scc-ic.rose{background:linear-gradient(135deg,#fb7185,#e11d48)}
.vpm .vpm-scc-ic.purple{background:linear-gradient(135deg,#a855f7,#7c3aed)}
.vpm .vpm-scc-ic.warn{background:linear-gradient(135deg,#fb923c,#ea580c)}
.vpm .vpm-scc-lbl{font-size:13.5px;font-weight:800;color:#0a1f14;flex:1;letter-spacing:-.2px}
.vpm .vpm-scc-scn{font-size:19px;font-weight:900;color:#0a1f14;letter-spacing:-.5px}
.vpm .vpm-scc-scn small{font-size:11px;color:#64748b;font-weight:700}
.vpm .vpm-scc-bar{height:8px;border-radius:99px;background:#f1f6f1;overflow:hidden}
.vpm .vpm-scc-bar i{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,#22c55e,#15803d);transition:width 1.4s cubic-bezier(.16,1,.3,1)}
.vpm .vpm-scc-bar--default i{background:linear-gradient(90deg,#22c55e,#15803d)}
.vpm .vpm-scc-bar--gold i{background:linear-gradient(90deg,#facc15,#ca8a04)}
.vpm .vpm-scc-bar--warn i{background:linear-gradient(90deg,#fb923c,#ea580c)}
.vpm .vpm-scc-ds{font-size:12px;color:#475569;line-height:1.5;margin-top:10px}
.vpm .vpm-scc-ds b{color:#0a1f14}
/* dark overall foot strip (.vp-scc-foot) — restyles the older light foot
   so the white/gold/ocean children below stay legible */
.vpm .vpm-scorecard-foot{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:16px 0 0;padding:14px 18px;background:linear-gradient(135deg,#0a1f14,#0d2818);border-radius:14px;color:#eaf5ee;font-size:13px}
.vpm .vpm-scc-ov{display:flex;align-items:center;gap:10px}
.vpm .vpm-scc-big{font-size:28px;font-weight:900;color:#facc15;letter-spacing:-1px}
.vpm .vpm-scc-ov-label{color:#fff;font-weight:800}
.vpm .vpm-scc-ov-sub{color:#a8c6b3;font-size:12px}
.vpm .vpm-scc-foot-link{margin-left:auto;color:#0ea5e9;font-weight:700;border-bottom:1.5px solid rgba(14,165,233,.4)}
@media(max-width:900px){
  .vpm .vpm-scorecard-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
  .vpm .vpm-scorecard-grid{grid-template-columns:1fr}
}

/* ===================================================================== */
/* RTP COMPARATOR — .vp-rtpv-* → .vpm-rtp-* (1:1, overrides the older     */
/* partial widget design where properties collide)                        */
/* ===================================================================== */
.vpm .vpm-rtp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:8px}
.vpm .vpm-card.vpm-rtp-card{display:block;background:#fff;border:1.5px solid rgba(22,163,74,.12);border-radius:18px;padding:18px;box-shadow:0 4px 14px rgba(0,0,0,.04);position:relative;overflow:hidden}
.vpm .vpm-card.vpm-rtp-card::before{content:"";position:absolute;inset:0 0 auto;height:4px;border-radius:0;background:none}
.vpm .vpm-rtp-card.v1::before{background:linear-gradient(90deg,#22c55e,#15803d)}
.vpm .vpm-rtp-card.v2::before{background:linear-gradient(90deg,#0ea5e9,#0284c7)}
.vpm .vpm-rtp-card.v3::before{background:linear-gradient(90deg,#facc15,#ca8a04)}
.vpm .vpm-rtp-card .vpm-rtp-badge.badge{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:900;letter-spacing:.5px;text-transform:uppercase;padding:4px 9px;border-radius:99px;margin-bottom:10px}
.vpm .vpm-rtp-card.v1 .badge{background:color-mix(in oklab,#16a34a 14%,#fff);color:#15803d}
.vpm .vpm-rtp-card.v2 .badge{background:color-mix(in oklab,#0284c7 12%,#fff);color:#0369a1}
.vpm .vpm-rtp-card.v3 .badge{background:color-mix(in oklab,#facc15 18%,#fff);color:#ca8a04}
.vpm .vpm-rtp-nm.nm{font-size:16px;font-weight:900;color:#0a1f14;letter-spacing:-.3px}
.vpm .vpm-rtp-yr.yr{font-size:12px;color:#64748b;font-weight:600;margin-top:2px}
.vpm .vpm-rtp-meter{margin:14px 0 6px}
.vpm .vpm-rtp-meter .top{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}
.vpm .vpm-rtp-pct.pct{font-size:26px;font-weight:900;color:#0a1f14;letter-spacing:-1px}
.vpm .vpm-rtp-pl.pl{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:#64748b}
.vpm .vpm-rtp-track{height:9px;border-radius:99px;background:#f1f6f1;overflow:hidden;position:relative}
.vpm .vpm-rtp-track i{display:block;height:100%;width:0;border-radius:99px;transition:width 1.5s cubic-bezier(.16,1,.3,1)}
.vpm .vpm-rtp-card.v1 .vpm-rtp-track i{background:linear-gradient(90deg,#22c55e,#15803d)}
.vpm .vpm-rtp-card.v2 .vpm-rtp-track i{background:linear-gradient(90deg,#0ea5e9,#0284c7)}
.vpm .vpm-rtp-card.v3 .vpm-rtp-track i{background:linear-gradient(90deg,#facc15,#ca8a04)}
.vpm .vpm-rtp-track .lo{position:absolute;top:-3px;height:15px;width:2px;background:#e11d48;border-radius:2px}
.vpm .vpm-rtp-meta{display:flex;flex-direction:column;gap:7px;margin-top:14px}
.vpm .vpm-rtp-meta .row{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;padding:6px 0;border-bottom:1px dashed rgba(22,163,74,.12)}
.vpm .vpm-rtp-meta .row:last-child{border-bottom:0}
.vpm .vpm-rtp-meta .row span{color:#475569}
.vpm .vpm-rtp-meta .row b{color:#0a1f14;font-weight:800}
/* plain-terms paragraph (was an inline-styled <p> in the source) */
.vpm .vpm-rtp-plain{font-size:13.5px;color:#475569;margin:18px 0 14px;max-width:80ch}
/* how-to-check note (.vp-rtpv-note) */
.vpm .vpm-rtp-note{display:flex;align-items:flex-start;gap:10px;margin-top:16px;padding:13px 16px;background:color-mix(in oklab,#facc15 9%,#fff);border:1px solid color-mix(in oklab,#facc15 26%,rgba(22,163,74,.12));border-radius:14px;font-size:13px;color:#1e2b22;line-height:1.5}
.vpm .vpm-rtp-note svg{width:18px;height:18px;stroke:#ca8a04;fill:none;stroke-width:2.4;flex:none;margin-top:1px}
.vpm .vpm-rtp-note b{color:#0a1f14}
@media(max-width:860px){
  .vpm .vpm-rtp-grid{grid-template-columns:1fr}
}

/* === frag-B === */
/* ======================================================================
   FRAGMENT B — 1:1 CSS port from the source HTML \3c style> blocks into the
   3-lucky-rainbows widget stylesheet. Sections: proscons · coins · jackpot
   · freespins · compare · games (dark interlude).
   Rescope: .vp-art → .vpm (wrapper). Inlined vars (HTML :root ≠ .vpm root):
     --bg-card→#fff · --bg-2→#f1f6f1 · --line→rgba(22,163,74,.12)
     --line-2→rgba(22,163,74,.22) · --ink-1→#1e2b22 · --ink-2→#475569
     --ink-3→#64748b · --rose→#e11d48 · --rose-soft→rgba(225,29,72,.10)
     --shadow-sm→0 4px 14px rgba(0,0,0,.04) · --shadow-md→0 10px 28px rgba(0,0,0,.07)
   Keyframe rename: vpFade → vpmFade.
   Appended AFTER styles.css → equal/higher specificity wins by order.
   ====================================================================== */

@keyframes vpmFade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* ---------------------------------------------------------------------
   SHARED · frosted section frame (source .vp-frame) — the render only
   prints the literal vp-frame class on #freespins; the other framed
   sections carry it via their vpm-sec--<id> class.
   --------------------------------------------------------------------- */
.vpm .vpm-sec--proscons,
.vpm .vpm-sec--coins,
.vpm .vpm-sec--jackpot,
.vpm .vpm-sec--compare,
.vpm .vp-grid-sec,
.vpm .vp-frame {
  position: relative;
  max-width: 1400px;
  margin: 24px auto;
  padding: 46px 32px;
  border-radius: 28px;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(255,255,255,.92), rgba(252,253,250,.84)), rgba(255,255,255,.4);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border: 1.5px solid rgba(255,255,255,.85);
  box-shadow: 0 28px 64px -20px rgba(22,163,74,.18), 0 10px 32px -12px rgba(0,0,0,.06), inset 0 1px 0 rgba(255,255,255,.95);
}
.vpm .vpm-sec--proscons::after,
.vpm .vpm-sec--coins::after,
.vpm .vpm-sec--jackpot::after,
.vpm .vpm-sec--compare::after,
.vpm .vp-grid-sec::after,
.vpm .vp-frame::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  border-radius: inherit;
  background: radial-gradient(900px 500px at 88% 0%, rgba(22,163,74,.06), transparent 60%), radial-gradient(700px 400px at 12% 100%, rgba(250,204,21,.06), transparent 60%);
}
.vpm .vpm-sec--proscons > .vpm-wrap,
.vpm .vpm-sec--coins > .vpm-wrap,
.vpm .vpm-sec--jackpot > .vpm-wrap,
.vpm .vpm-sec--compare > .vpm-wrap,
.vpm .vp-grid-sec > .vpm-wrap,
.vpm .vp-frame > .vpm-wrap { position: relative; z-index: 1; }
@media (max-width: 1100px) {
  .vpm .vpm-sec--proscons, .vpm .vpm-sec--coins, .vpm .vpm-sec--jackpot,
  .vpm .vpm-sec--compare, .vpm .vp-grid-sec, .vpm .vp-frame { margin: 18px 14px; }
}
@media (max-width: 768px) {
  .vpm .vpm-sec--proscons, .vpm .vpm-sec--coins, .vpm .vpm-sec--jackpot,
  .vpm .vpm-sec--compare, .vpm .vp-grid-sec, .vpm .vp-frame {
    margin: 14px 10px !important;
    border-radius: 22px;
    padding: 34px 18px !important;
  }
}
@media (max-width: 430px) {
  .vpm .vpm-sec--proscons, .vpm .vpm-sec--coins, .vpm .vpm-sec--jackpot,
  .vpm .vpm-sec--compare, .vpm .vp-grid-sec, .vpm .vp-frame {
    margin: 12px 8px !important;
    border-radius: 20px;
    padding: 32px 14px !important;
  }
}

/* ---------------------------------------------------------------------
   SHARED · section head + eyebrow + sub (source .sec-head / .eyebrow /
   .sec-sub) — scoped to this fragment's sections only.
   --------------------------------------------------------------------- */
.vpm .vpm-sec-head { margin-bottom: 22px; padding-bottom: 14px; border-bottom: 1.5px dashed rgba(22,163,74,.18); }
.vpm .vpm-sec-head .vpm-sec-title { margin: 0; }
.vpm .vpm-sec-sub { font-size: 15px; color: #475569; margin: 8px 0 0; max-width: 75%; }
@media (max-width: 768px) { .vpm .vpm-sec-sub { max-width: 100%; } }

.vpm .vpm-sec--proscons .vpm-eyebrow,
.vpm .vpm-sec--coins .vpm-eyebrow,
.vpm .vpm-sec--freespins .vpm-eyebrow,
.vpm .vpm-sec--compare .vpm-eyebrow,
.vpm .vpm-games .vpm-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--green-deep);
  background: linear-gradient(135deg, rgba(22,163,74,.10), rgba(202,138,4,.05));
  border: 1px solid rgba(22,163,74,.22);
  padding: 5px 12px;
  border-radius: 99px;
  margin: 0 0 12px;
}
.vpm .vpm-sec--proscons .vpm-eyebrow svg,
.vpm .vpm-sec--coins .vpm-eyebrow svg,
.vpm .vpm-sec--freespins .vpm-eyebrow svg,
.vpm .vpm-sec--compare .vpm-eyebrow svg,
.vpm .vpm-games .vpm-eyebrow svg { width: 13px; height: 13px; flex: none; }

/* icon tone tiles (render: .vpm-ic.vpm-ic--g/--gold/--blue/--rose/--purple) */
.vpm .vpm-ic { display: inline-flex; align-items: center; justify-content: center; flex: none; border-radius: 12px; color: #fff; }
.vpm .vpm-ic svg { width: 60%; height: 60%; stroke: currentColor; fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.vpm .vpm-ic--g { background: linear-gradient(135deg, #22c55e, #15803d); }
.vpm .vpm-ic--gold { background: linear-gradient(135deg, #facc15, #ca8a04); }
.vpm .vpm-ic--blue { background: linear-gradient(135deg, #0ea5e9, #0284c7); }
.vpm .vpm-ic--rose { background: linear-gradient(135deg, #fb7185, #e11d48); }
.vpm .vpm-ic--purple { background: linear-gradient(135deg, #a855f7, #7c3aed); }

/* =====================================================================
   PROS / CONS — two-column honest ledger (source .vp-pc-*)
   render emits paired aliases: vpm-pc-* AND vp-pc-* on the same nodes.
   ===================================================================== */
/* sub line doubles as the head divider (render prints no .vpm-sec-head here) */
.vpm .vpm-proscons-sub {
  font-size: 15px;
  color: #475569;
  margin: 8px 0 22px;
  max-width: 75%;
  padding-bottom: 14px;
  border-bottom: 1.5px dashed rgba(22,163,74,.18);
}
@media (max-width: 768px) { .vpm .vpm-proscons-sub { max-width: 100%; } }

.vpm .vpm-proscons.vp-pc-grid,
.vpm .vp-pc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.vpm .vpm-pc-col,
.vpm .vp-pc-col {
  background: #fff;
  border: 1.5px solid rgba(22,163,74,.12);
  border-radius: 18px;
  padding: 18px;
  box-shadow: 0 4px 14px rgba(0,0,0,.04);
}
.vpm .vp-pc-col.pros { border-color: color-mix(in oklab, var(--green) 30%, rgba(22,163,74,.12)); }
.vpm .vp-pc-col.cons { border-color: color-mix(in oklab, #e11d48 26%, rgba(22,163,74,.12)); }
.vpm .vpm-pc-head,
.vpm .vp-pc-head {
  display: flex;
  align-items: center;
  gap: 11px;
  padding-bottom: 12px;
  margin-bottom: 12px;
  border-bottom: 1.5px dashed rgba(22,163,74,.22);
}
.vpm .vp-pc-head .vp-ic { width: 34px; height: 34px; border-radius: 10px; }
.vpm .vp-pc-head .vp-ic svg { width: 60%; height: 60%; }
.vpm .vp-pc-head .vpm-pc-col-title { font-size: 16px; font-weight: 900; color: var(--ink-0); margin: 0; }
.vpm .vp-pc-head .meta { margin-left: auto; font-size: 10.5px; font-weight: 800; color: #64748b; text-transform: uppercase; letter-spacing: .4px; }
.vpm .vpm-pc-list,
.vpm .vp-pc-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 11px; }
.vpm .vp-pc-list li { display: flex; align-items: flex-start; gap: 10px; font-size: 13.5px; line-height: 1.5; color: #1e2b22; }
.vpm .vp-pc-list li .mk { flex: none; width: 20px; height: 20px; border-radius: 6px; display: grid; place-items: center; font-weight: 900; font-size: 12px; margin-top: 1px; }
.vpm .vp-pc-col.pros .mk { background: color-mix(in oklab, var(--green) 16%, #fff); color: var(--green-deep); }
.vpm .vp-pc-col.cons .mk { background: rgba(225,29,72,.10); color: #e11d48; }
.vpm .vp-pc-list li b { color: var(--ink-0); }
.vpm .vpm-pc-quote,
.vpm .vp-pc-quote {
  margin: 16px 0 0;
  padding: 14px 16px;
  background: #f1f6f1;
  border-left: 3px solid var(--green);
  border-radius: 0 12px 12px 0;
  font-size: 13px;
  line-height: 1.55;
  color: #1e2b22;
  font-style: italic;
}
.vpm .vp-pc-col.cons .vp-pc-quote { border-left-color: #e11d48; }
.vpm .vp-pc-quote cite { display: block; margin-top: 7px; font-style: normal; font-size: 11.5px; font-weight: 700; color: #64748b; }
@media (max-width: 768px) { .vpm .vp-pc-grid { grid-template-columns: 1fr; } }

/* =====================================================================
   COINS — Action Boost coin explorer (source .vp-coins*)
   Widget JS toggles the native [hidden] attribute (NOT a class) → panel
   base display is grid; [hidden] hides. .active stays a harmless alias.
   ===================================================================== */
.vpm .vpm-coins {
  background: #fff;
  border: 1.5px solid rgba(22,163,74,.12);
  border-radius: 20px;
  box-shadow: 0 10px 28px rgba(0,0,0,.07);
  overflow: hidden;
}
.vpm .vpm-coins-tabs {
  display: flex;
  gap: 8px;
  padding: 14px;
  max-width: 100%;
  background: linear-gradient(135deg, #0a1f14, #0d2818);
  overflow-x: auto;
  scrollbar-width: none;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 18px, #000 calc(100% - 18px), transparent);
  mask-image: linear-gradient(90deg, transparent, #000 18px, #000 calc(100% - 18px), transparent);
}
.vpm .vpm-coins-tabs::-webkit-scrollbar { display: none; }
.vpm .vpm-coins-tab {
  flex: 0 0 auto;
  scroll-snap-align: start;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 800;
  color: #cfe6d7;
  background: rgba(255,255,255,.06);
  border: 1.5px solid rgba(255,255,255,.12);
  border-radius: 13px;
  padding: 11px 17px;
  cursor: pointer;
  transition: .18s;
}
/* state guard (Elementor theme hover paints magenta on buttons) */
.vpm .vpm-coins-tab:hover,
.vpm .vpm-coins-tab:focus,
.vpm .vpm-coins-tab:active {
  background: rgba(255,255,255,.10) !important;
  background-image: none !important;
  color: #fff !important;
  border-color: rgba(255,255,255,.22);
}
.vpm .vpm-coins-tab .coin { width: 24px; height: 24px; border-radius: 50%; flex: none; box-shadow: inset 0 -3px 6px rgba(0,0,0,.25), 0 2px 6px rgba(0,0,0,.3); }
.vpm .vpm-coins-tab .coin.green { background: radial-gradient(circle at 35% 30%, #4ade80, #15803d); }
.vpm .vpm-coins-tab .coin.red { background: radial-gradient(circle at 35% 30%, #f87171, #b91c1c); }
.vpm .vpm-coins-tab .coin.purple { background: radial-gradient(circle at 35% 30%, #c084fc, #7c3aed); }
.vpm .vpm-coins-tab[aria-selected="true"] {
  color: #fff !important;
  background: rgba(255,255,255,.14) !important;
  background-image: none !important;
  border-color: rgba(255,255,255,.3);
}
.vpm .vpm-coins-tab.green[aria-selected="true"] { box-shadow: 0 0 0 1px rgba(34,197,94,.5), 0 8px 20px -8px rgba(34,197,94,.6); }
.vpm .vpm-coins-tab.red[aria-selected="true"] { box-shadow: 0 0 0 1px rgba(239,68,68,.5), 0 8px 20px -8px rgba(239,68,68,.6); }
.vpm .vpm-coins-tab.purple[aria-selected="true"] { box-shadow: 0 0 0 1px rgba(168,85,247,.5), 0 8px 20px -8px rgba(168,85,247,.6); }
.vpm .vpm-coins-panel {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 24px;
  align-items: start;
  padding: 22px 24px;
  animation: vpmFade .25s ease;
}
.vpm .vpm-coins-panel[hidden] { display: none; }
.vpm .vpm-coins-visual { width: 150px; flex: none; }
.vpm .vpm-coins-orb {
  width: 150px;
  height: 150px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  position: relative;
  box-shadow: inset 0 -10px 24px rgba(0,0,0,.3), 0 14px 30px -8px rgba(0,0,0,.3);
}
.vpm .vpm-coins-orb.green { background: radial-gradient(circle at 35% 28%, #4ade80, #15803d 70%); }
.vpm .vpm-coins-orb.red { background: radial-gradient(circle at 35% 28%, #f87171, #b91c1c 70%); }
.vpm .vpm-coins-orb.purple { background: radial-gradient(circle at 35% 28%, #c084fc, #7c3aed 70%); }
.vpm .vpm-coins-orb svg { width: 60px; height: 60px; stroke: #fff; fill: none; stroke-width: 2; opacity: .92; }
.vpm .vpm-coins-orb .fs {
  position: absolute;
  bottom: -10px;
  left: 50%;
  transform: translateX(-50%);
  background: #fff;
  color: var(--ink-0);
  font-size: 12px;
  font-weight: 900;
  padding: 4px 12px;
  border-radius: 99px;
  box-shadow: 0 10px 28px rgba(0,0,0,.07);
  white-space: nowrap;
}
.vpm .vpm-coins-info h3,
.vpm .vpm-coins-info h4 { font-size: 19px; font-weight: 900; color: var(--ink-0); letter-spacing: -.4px; margin: 0; }
.vpm .vpm-coins-info .tag {
  display: inline-block;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .5px;
  padding: 3px 10px;
  border-radius: 99px;
  margin: 8px 0 12px;
}
.vpm .vpm-coins-info .tag.green { background: color-mix(in oklab, var(--green) 14%, #fff); color: var(--green-deep); }
.vpm .vpm-coins-info .tag.red { background: rgba(225,29,72,.10); color: #e11d48; }
.vpm .vpm-coins-info .tag.purple { background: color-mix(in oklab, #7c3aed 12%, #fff); color: #6d28d9; }
.vpm .vpm-coins-info p { font-size: 14px; line-height: 1.6; color: #475569; margin: 0; }
.vpm .vpm-coins-info p b { color: var(--ink-0); }
.vpm .vpm-coins-stats { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 14px; }
.vpm .vpm-coins-stat { background: #f1f6f1; border: 1px solid rgba(22,163,74,.12); border-radius: 11px; padding: 9px 13px; }
.vpm .vpm-coins-stat .k { font-size: 9.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; color: #64748b; }
.vpm .vpm-coins-stat .v { font-size: 15px; font-weight: 900; color: var(--ink-0); margin-top: 2px; }
.vpm .vpm-coins-foot {
  padding: 14px 24px;
  background: #f1f6f1;
  border-top: 1px solid rgba(22,163,74,.12);
  font-size: 13px;
  color: #475569;
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.vpm .vpm-coins-foot svg { width: 17px; height: 17px; stroke: var(--green-deep); fill: none; stroke-width: 2.4; flex: none; margin-top: 1px; }
.vpm .vpm-coins-foot b { color: var(--ink-0); }
@media (max-width: 640px) {
  .vpm .vpm-coins-panel { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .vpm .vpm-coins-info { text-align: center; }
  .vpm .vpm-coins-stats { justify-content: center; }
}

/* =====================================================================
   JACKPOT — ladder visualizer (source .vp-jackpot*)
   Bar width comes from the PHP-emitted inline --vpm-jl-w custom property.
   ===================================================================== */
.vpm .vpm-jackpot {
  background: linear-gradient(165deg, #06140d, #0a1f14 60%, #0d2818);
  border-radius: 24px;
  padding: 26px;
  color: #eaf5ee;
  position: relative;
  overflow: hidden;
}
.vpm .vpm-jackpot::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(560px 300px at 85% 0%, rgba(250,204,21,.12), transparent 60%);
  pointer-events: none;
}
.vpm .vpm-jackpot-head { position: relative; z-index: 1; margin-bottom: 20px; }
.vpm .vpm-jackpot-head .vpm-eb { font-size: 11px; font-weight: 900; letter-spacing: 1px; text-transform: uppercase; color: var(--gold); margin: 0; }
.vpm .vpm-jackpot-title { font-size: 24px; font-weight: 900; color: #fff; letter-spacing: -.5px; margin: 6px 0 0; }
.vpm .vpm-jackpot-title em { font-style: normal; color: var(--gold); }
.vpm .vpm-jackpot-ladder { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 12px; }
.vpm .vpm-jl-row { display: grid; grid-template-columns: 120px 1fr auto; gap: 16px; align-items: center; }
.vpm .vpm-jl-name { display: flex; align-items: center; gap: 10px; }
.vpm .vpm-jl-name .vpm-ic { width: 32px; height: 32px; border-radius: 9px; }
.vpm .vpm-jl-name b { font-size: 14px; font-weight: 900; color: #fff; }
.vpm .vpm-jl-track { height: 30px; border-radius: 8px; background: rgba(255,255,255,.06); overflow: hidden; position: relative; }
.vpm .vpm-jl-track i {
  display: block;
  height: 100%;
  width: var(--vpm-jl-w, 0%);
  border-radius: 8px;
  transition: width 1.6s cubic-bezier(.16,1,.3,1);
}
.vpm .vpm-jl-row--mini i { background: linear-gradient(90deg, #4ade80, #16a34a); }
.vpm .vpm-jl-row--minor i { background: linear-gradient(90deg, #38bdf8, #0284c7); }
.vpm .vpm-jl-row--major i { background: linear-gradient(90deg, #c084fc, #7c3aed); }
.vpm .vpm-jl-row--mega i { background: linear-gradient(90deg, #facc15, #ea580c); }
.vpm .vpm-jl-val { font-size: 18px; font-weight: 900; color: #fff; letter-spacing: -.4px; min-width: 78px; text-align: right; }
.vpm .vpm-jl-val small { display: block; font-size: 10px; font-weight: 600; color: #9fc6ad; letter-spacing: .2px; }
.vpm .vpm-jackpot-note {
  position: relative;
  z-index: 1;
  margin-top: 18px;
  font-size: 13px;
  color: #cfe6d7;
  line-height: 1.55;
  display: flex;
  gap: 10px;
  align-items: flex-start;
}
.vpm .vpm-jackpot-note svg { width: 17px; height: 17px; stroke: var(--gold); fill: none; stroke-width: 2.4; flex: none; margin-top: 1px; }
.vpm .vpm-jackpot-note b { color: #fff; }
@media (max-width: 600px) {
  .vpm .vpm-jl-row { grid-template-columns: 1fr; gap: 6px; }
  .vpm .vpm-jl-val { text-align: left; display: flex; align-items: baseline; gap: 8px; }
  .vpm .vpm-jl-val small { display: inline; }
}

/* =====================================================================
   FREE SPINS — expanding-grid visualizer (source .vp-grid-* / .vp-reels)
   Reel cells are JS-built (.vp-reel-cell 1:1 with the source script).
   ===================================================================== */
.vpm .vpm-grid-body { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: center; }
.vpm .vpm-grid-stage {
  background: #fff;
  border: 1.5px solid rgba(22,163,74,.12);
  border-radius: 18px;
  padding: 22px;
  box-shadow: 0 4px 14px rgba(0,0,0,.04);
  text-align: center;
}
.vpm .vpm-grid-toggle {
  display: inline-flex;
  background: #f1f6f1;
  border: 1px solid rgba(22,163,74,.12);
  border-radius: 99px;
  padding: 4px;
  gap: 4px;
  margin-bottom: 18px;
}
.vpm .vpm-grid-toggle button {
  border: none;
  background: transparent;
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 800;
  color: #475569;
  padding: 7px 16px;
  border-radius: 99px;
  cursor: pointer;
  transition: .15s;
}
.vpm .vpm-grid-toggle button:hover,
.vpm .vpm-grid-toggle button:focus,
.vpm .vpm-grid-toggle button:active {
  background: rgba(255,255,255,.7) !important;
  background-image: none !important;
  color: var(--green-deep) !important;
}
.vpm .vpm-grid-toggle button[aria-pressed="true"] {
  background: #fff !important;
  background-image: none !important;
  color: var(--green-deep) !important;
  box-shadow: 0 4px 14px rgba(0,0,0,.04);
}
.vpm .vpm-reels {
  display: inline-grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
  padding: 10px;
  background: linear-gradient(160deg, #0a1f14, #0d2818);
  border-radius: 14px;
}
.vpm .vp-reel-cell {
  width: 46px;
  height: 46px;
  border-radius: 8px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.1);
  display: grid;
  place-items: center;
  font-size: 20px;
  transition: all .4s cubic-bezier(.16,1,.3,1);
}
.vpm .vp-reel-cell.added { opacity: 0; transform: scale(.4); }
.vpm .vp-reel-cell.show { opacity: 1; transform: scale(1); }
.vpm .vpm-grid-cap { font-size: 13px; font-weight: 800; color: var(--ink-0); margin-top: 14px; }
.vpm .vpm-grid-cap span { color: var(--green-deep); }
.vpm .vpm-grid-info { min-width: 0; }
.vpm .vpm-grid-info-body p { font-size: 14.5px; line-height: 1.7; color: #475569; margin: 0 0 14px; }
.vpm .vpm-grid-info-body p b { color: var(--ink-0); }
.vpm .vpm-grid-bullets { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.vpm .vpm-grid-bullets li { display: flex; align-items: flex-start; gap: 10px; font-size: 13.5px; color: #1e2b22; line-height: 1.5; }
.vpm .vpm-grid-bullets li .vpm-ic { width: 26px; height: 26px; border-radius: 8px; flex: none; }
.vpm .vpm-grid-bullets li b { color: var(--ink-0); }
@media (max-width: 768px) {
  .vpm .vpm-grid-body { grid-template-columns: 1fr; }
  .vpm .vp-reel-cell { width: 40px; height: 40px; }
}
@media (max-width: 430px) {
  .vpm .vp-reel-cell { width: clamp(34px, 16vw, 44px); height: clamp(34px, 16vw, 44px); }
}

/* =====================================================================
   COMPARE — Irish-slot comparison cards (source .vp-cmp-*)
   Source keeps cards STACKED on mobile (cells fold to a 3-col grid) —
   re-asserted at ≤768 against the styles.css swipe-rail attempt that
   targets an orphan card class.
   ===================================================================== */
.vpm .vpm-compare.vp-cmp-list,
.vpm .vp-cmp-list { display: flex; flex-direction: column; gap: 12px; }
.vpm .vp-cmp-card {
  position: relative; /* anchors the OUR PICK badge to the card */
  background: #fff;
  border: 1.5px solid rgba(22,163,74,.12);
  border-radius: 16px;
  box-shadow: 0 4px 14px rgba(0,0,0,.04);
  overflow: hidden;
  transition: box-shadow .15s ease;
}
.vpm .vp-cmp-card.target {
  border-color: color-mix(in oklab, var(--gold) 40%, rgba(22,163,74,.12));
  background: linear-gradient(135deg, color-mix(in oklab, var(--gold) 7%, #fff), #fff);
}
.vpm .vp-cmp-card.target::before {
  content: "OUR PICK";
  position: absolute;
  top: 12px;
  right: 14px;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: .6px;
  background: linear-gradient(135deg, #facc15, #ca8a04);
  color: #0a1f14;
  padding: 3px 8px;
  border-radius: 5px;
  z-index: 2;
}
.vpm .vp-cmp-top {
  display: grid;
  grid-template-columns: auto 1fr repeat(3, minmax(72px, auto)) auto;
  gap: 14px;
  align-items: center;
  padding: 15px 18px;
  position: relative;
}
.vpm .vp-cmp-mark { width: 48px; height: 48px; border-radius: 11px; display: grid; place-items: center; color: #fff; font-weight: 900; font-size: 15px; flex: none; }
.vpm .vp-cmp-mark.c1 { background: linear-gradient(135deg, #22c55e, #15803d); }
.vpm .vp-cmp-mark.c2 { background: linear-gradient(135deg, #0ea5e9, #0284c7); }
.vpm .vp-cmp-mark.c3 { background: linear-gradient(135deg, #a855f7, #7c3aed); }
.vpm .vp-cmp-mark.c4 { background: linear-gradient(135deg, #fb923c, #ea580c); }
.vpm .vp-cmp-mark.c5 { background: linear-gradient(135deg, #fde047, #eab308); color: #0a1f14; }
.vpm .vp-cmp-mark.c6 { background: linear-gradient(135deg, #34d399, #0d9488); }
.vpm .vp-cmp-name { min-width: 0; }
.vpm .vp-cmp-name .nm { font-size: 15px; font-weight: 900; color: var(--ink-0); letter-spacing: -.3px; line-height: 1.15; }
.vpm .vp-cmp-name .pv { font-size: 11.5px; color: #64748b; font-weight: 600; margin-top: 2px; }
.vpm .vp-cmp-cell { text-align: center; }
.vpm .vp-cmp-cell .k { font-size: 8.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; color: #64748b; }
.vpm .vp-cmp-cell .v { font-size: 14px; font-weight: 900; color: var(--ink-0); margin-top: 2px; white-space: nowrap; }
.vpm .vp-cmp-cell .v.good { color: var(--green-deep); }
.vpm .vp-cmp-cell .v.gold { color: var(--gold-deep); }
.vpm .vp-cmp-exp-btn {
  background: #f1f6f1;
  border: 1px solid rgba(22,163,74,.12);
  border-radius: 9px;
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  cursor: pointer;
  flex: none;
  transition: .15s;
}
.vpm .vp-cmp-exp-btn:hover,
.vpm .vp-cmp-exp-btn:focus,
.vpm .vp-cmp-exp-btn:active {
  background: #f1f6f1 !important;
  background-image: none !important;
  border-color: rgba(22,163,74,.3);
}
.vpm .vp-cmp-exp-btn svg { width: 16px; height: 16px; stroke: #475569; fill: none; stroke-width: 2.6; transition: transform .2s; }
.vpm .vp-cmp-exp-btn[aria-expanded="true"] svg { transform: rotate(180deg); }
.vpm .vp-cmp-exp {
  display: none;
  padding: 14px 18px 16px;
  font-size: 13px;
  color: #475569;
  line-height: 1.6;
  border-top: 1px dashed rgba(22,163,74,.12);
  margin-top: 0;
}
.vpm .vp-cmp-exp.open,
.vpm .vp-cmp-exp.is-open { display: block; animation: vpmFade .2s ease; }
/* attribute-driven fallback: works with whatever JS toggles aria-expanded */
.vpm .vp-cmp-card:has(.vp-cmp-exp-btn[aria-expanded="true"]) .vp-cmp-exp { display: block; }
.vpm .vp-cmp-exp b { color: var(--ink-0); }
@media (max-width: 880px) {
  .vpm .vp-cmp-card { overflow-x: visible; }
  .vpm .vp-cmp-top { display: flex; flex-wrap: wrap; align-items: center; }
  .vpm .vp-cmp-mark { order: 1; }
  .vpm .vp-cmp-name { order: 2; flex: 1; }
  .vpm .vp-cmp-exp-btn { order: 3; margin-left: auto; }
  .vpm .vp-cmp-cells { order: 4; display: grid !important; grid-template-columns: 1fr 1fr 1fr; gap: 8px; flex: 1 0 100%; margin-top: 12px; }
  .vpm .vp-cmp-cell { background: #f1f6f1; border: 1px solid rgba(22,163,74,.12); border-radius: 9px; padding: 7px 4px; }
}
/* keep the source stacked-card behaviour against the styles.css swipe rail */
@media (max-width: 768px) {
  .vpm .vp-cmp-list {
    display: flex !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    overflow: visible !important;
    overflow-x: visible !important;
    scroll-snap-type: none !important;
    -webkit-mask-image: none !important;
    mask-image: none !important;
    margin: 0 !important;
    padding: 0 !important;
    gap: 12px !important;
  }
  .vpm .vp-cmp-card { flex: 0 1 auto !important; min-width: 0 !important; width: auto !important; }
}

/* =====================================================================
   GAMES — dark forest-green interlude, edge-to-edge (source .vp-games*)
   Section node: .vpm-sec.vpm-bleed.vpm-games (bleed mechanics from
   styles.css stay; visuals re-asserted 1:1 from the source).
   ===================================================================== */
.vpm .vpm-games {
  background:
    radial-gradient(700px 360px at 80% 0%, rgba(34,197,94,.14), transparent 60%),
    linear-gradient(165deg, #06140d, #0a1f14 55%, #08180e);
  color: #eaf5ee;
  padding: 34px 32px 40px;
}
.vpm .vpm-games .vpm-eyebrow { color: var(--gold); background: rgba(250,204,21,.10); border-color: rgba(250,204,21,.22); }
.vpm .vpm-games .vpm-sec-title { color: #fff; }
.vpm .vpm-games .vpm-sec-head { border-bottom-color: rgba(255,255,255,.12); }
.vpm .vpm-games .vpm-sec-sub { color: #cfe6d7; }
.vpm .vpm-games .vpm-sec-sub small { color: #9fc6ad; }
.vpm .vpm-games-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.vpm .vpm-card.vpm-game-card,
.vpm .vpm-game-card {
  display: block;
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 16px;
  overflow: hidden;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.vpm .vpm-game-card:hover { transform: translateY(-4px); border-color: rgba(34,197,94,.5); box-shadow: 0 18px 36px -12px rgba(34,197,94,.35); }
.vpm .vpm-game-thumb { aspect-ratio: 16 / 9; display: grid; place-items: center; position: relative; overflow: hidden; background: none; }
.vpm .vpm-game-thumb .glow { position: absolute; inset: 0; opacity: .9; }
.vpm .vpm-game-thumb.t1 .glow { background: radial-gradient(circle at 50% 40%, #16a34a, #06140d); }
.vpm .vpm-game-thumb.t2 .glow { background: radial-gradient(circle at 50% 40%, #0284c7, #06140d); }
.vpm .vpm-game-thumb.t3 .glow { background: radial-gradient(circle at 50% 40%, #7c3aed, #06140d); }
.vpm .vpm-game-thumb.t4 .glow { background: radial-gradient(circle at 50% 40%, #ca8a04, #06140d); }
.vpm .vpm-game-thumb.t5 .glow { background: radial-gradient(circle at 50% 40%, #ea580c, #06140d); }
.vpm .vpm-game-thumb.t6 .glow { background: radial-gradient(circle at 50% 40%, #0d9488, #06140d); }
.vpm .vpm-game-thumb .em { position: relative; font-size: 42px; z-index: 1; filter: drop-shadow(0 4px 10px rgba(0,0,0,.4)); }
.vpm .vpm-game-thumb .vpm-game-thumb-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.vpm .vpm-game-body { padding: 13px 14px; }
.vpm .vpm-game-body .nm { font-size: 14.5px; font-weight: 900; color: #fff; letter-spacing: -.2px; line-height: 1.2; margin: 0; }
.vpm .vpm-game-body .pv { font-size: 11px; color: #9fc6ad; font-weight: 600; margin-top: 2px; }
.vpm .vpm-game-meta { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0; }
.vpm .vpm-game-meta .gm {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 10.5px;
  font-weight: 800;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 7px;
  padding: 3px 8px;
  color: #cfe6d7;
}
.vpm .vpm-game-meta .gm.rtp { color: #fde68a; border-color: rgba(250,204,21,.28); }
/* demo launcher button — CTA gradient, WHITE text, 5-state guard */
.vpm .vpm-game-demo {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  width: 100%;
  background: linear-gradient(135deg, var(--cta-1), var(--cta-3)) !important;
  background-color: var(--cta-2) !important;
  color: #fff !important;
  font-family: inherit;
  font-weight: 900;
  font-size: 13px;
  border: none;
  border-radius: 10px;
  padding: 10px;
  cursor: pointer;
  text-shadow: 0 1px 2px rgba(0,0,0,.22);
}
.vpm .vpm-game-demo:hover,
.vpm .vpm-game-demo:focus,
.vpm .vpm-game-demo:active {
  background: linear-gradient(135deg, var(--cta-1), var(--cta-3)) !important;
  background-color: var(--cta-2) !important;
  background-image: linear-gradient(135deg, var(--cta-1), var(--cta-3)) !important;
  color: #fff !important;
}
.vpm .vpm-game-demo svg { width: 15px; height: 15px; stroke: #fff; fill: none; stroke-width: 2.6; }
.vpm .vpm-game-frame {
  display: none;
  position: relative;
  margin-top: 10px;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.14);
  background: #000;
  aspect-ratio: 16 / 10;
}
.vpm .vpm-game-frame.live,
.vpm .vpm-game-frame.is-live { display: block; }
.vpm .vpm-game-frame iframe,
.vpm .vpm-game-frame .vpm-demo-iframe { width: 100%; height: 100%; border: 0; display: block; }
.vpm .vpm-game-card.is-live .vpm-demo-iframe { display: block; width: 100%; aspect-ratio: 16 / 10; border: 0; }
.vpm .vpm-game-frame .ph { display: grid; place-items: center; height: 100%; color: #9fc6ad; font-size: 12px; text-align: center; padding: 14px; gap: 6px; }
.vpm .vpm-game-frame:fullscreen { aspect-ratio: auto; }
.vpm .vpm-game-frame:fullscreen iframe { width: 100vw; height: 100vh; }
/* in-card offer block — layered gold/orange, affiliate CTA white text */
.vpm .vpm-game-offer {
  margin-top: 10px;
  border-radius: 11px;
  padding: 11px 12px;
  background: linear-gradient(135deg, rgba(250,204,21,.14), rgba(249,115,22,.10));
  border: 1px solid rgba(250,204,21,.30);
  position: relative;
  overflow: hidden;
}
.vpm .vpm-game-offer::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, #facc15, #f97316, #facc15);
}
.vpm .vpm-game-offer .o-eyebrow {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: .5px;
  text-transform: uppercase;
  color: #fde68a;
}
.vpm .vpm-game-offer .o-eyebrow svg { width: 12px; height: 12px; stroke: #fde68a; fill: none; stroke-width: 2.4; flex: none; }
.vpm .vpm-game-offer .o-pills { display: flex; flex-wrap: wrap; gap: 5px; margin: 8px 0 9px; }
.vpm .vpm-game-offer .o-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 800;
  color: #fff;
  background: rgba(255,255,255,.10);
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 99px;
  padding: 3px 9px;
}
.vpm .vpm-game-offer .o-pill svg { width: 11px; height: 11px; flex: none; }
.vpm .vpm-game-offer .o-pill.fs { background: rgba(34,197,94,.18); border-color: rgba(34,197,94,.34); color: #bbf7d0; }
.vpm .vpm-game-offer .o-pill.nd { background: rgba(250,204,21,.18); border-color: rgba(250,204,21,.36); color: #fde68a; }
.vpm .vpm-game-offer .o-claim {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  width: 100%;
  background: linear-gradient(135deg, var(--cta-1), var(--cta-3)) !important;
  background-color: var(--cta-2) !important;
  color: #fff !important;
  font-weight: 900;
  font-size: 12.5px;
  border: none;
  border-radius: 9px;
  padding: 9px;
  cursor: pointer;
  text-decoration: none;
  text-shadow: 0 1px 2px rgba(0,0,0,.22);
}
.vpm .vpm-game-offer .o-claim:hover,
.vpm .vpm-game-offer .o-claim:focus,
.vpm .vpm-game-offer .o-claim:active {
  background: linear-gradient(135deg, var(--cta-1), var(--cta-3)) !important;
  background-color: var(--cta-2) !important;
  background-image: linear-gradient(135deg, var(--cta-1), var(--cta-3)) !important;
  color: #fff !important;
}
.vpm .vpm-game-offer .o-claim svg { width: 14px; height: 14px; stroke: #fff; fill: none; stroke-width: 2.6; flex: none; }
.vpm .vpm-game-offer .o-fine { display: block; font-size: 9px; color: #9fc6ad; margin-top: 6px; text-align: center; line-height: 1.4; }
@media (max-width: 880px) { .vpm .vpm-games-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .vpm .vpm-games-grid { grid-template-columns: 1fr; } }
/* source mobile swipe-rail (mirrors the HTML's ≤768 block; wins over the
   styles.css rail by order at equal importance) */
@media (max-width: 768px) {
  .vpm .vpm-games-grid {
    display: flex !important;
    grid-template-columns: none !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    scroll-snap-type: x mandatory !important;
    scroll-padding: 16px !important;
    scrollbar-width: none !important;
    gap: 12px !important;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 16px, #000 calc(100% - 16px), transparent) !important;
    mask-image: linear-gradient(90deg, transparent, #000 16px, #000 calc(100% - 16px), transparent) !important;
  }
  .vpm .vpm-games-grid::-webkit-scrollbar { display: none !important; }
  .vpm .vpm-games-grid > .vpm-game-card { flex: 0 0 auto !important; width: min(78%, 280px) !important; scroll-snap-align: start !important; }
}
@media (max-width: 430px) {
  .vpm .vpm-games-grid > .vpm-game-card { width: 80% !important; }
}

/* ---------------------------------------------------------------------
   Reduced motion — kill entrance animations + bar sweep
   --------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .vpm .vpm-coins-panel,
  .vpm .vp-cmp-exp.open,
  .vpm .vp-cmp-exp.is-open { animation: none !important; }
  .vpm .vpm-jl-track i,
  .vpm .vp-reel-cell,
  .vpm .vpm-game-card { transition: none !important; }
}

/* === frag-C === */
/* ════════════════════════════════════════════════════════════════════════
   FRAG-C · 1:1 CSS port — howtoplay / bankroll / access / methodology /
   timeline / citations / faq
   Source: templates-html/vegaspokie/games-review/vegaspokie-3-lucky-rainbows-
   slot-2026-06-08.html \3c style> blocks (L67, L1500, L1657, L1994, L2293).
   Rescope: .vp-art → .vpm. Render-emitted class names used 1:1
   (render-trait.php: vpm-htp-*, vp-calc-* kept raw by render, vpm-access-*,
   vpm-meth- + vpm-byline-, vpm-timeline/vpm-tl-*, vpm-faq-*).
   Source CSS-vars inlined as literals (widget :root values DIFFER):
   --ink-1 #1e2b22 · --ink-2 #475569 · --ink-3 #64748b ·
   --line rgba(22,163,74,.12) · --line-2 rgba(22,163,74,.22) ·
   --bg-card #fff · --bg-soft #fafffd · --bg-2 #f1f6f1 · --rose #e11d48 ·
   --ocean #0284c7 · --ocean-2 #0ea5e9 · --maxw 1400px ·
   --shadow-sm 0 4px 14px rgba(0,0,0,.04) · --shadow-md 0 10px 28px rgba(0,0,0,.07)
   Keyframe rename: vp-tl-pulse → vpmTlPulse.
   Legacy-rule neutralisers: .vpm-tl-row::before dot, .vpm-tl-pill::before
   pulse-dot, .vpm-faq-q::after chevron → content:none (source uses real
   elements: .vpm-tl-node / .vpm-faq-q-ic "+").
   ════════════════════════════════════════════════════════════════════════ */

/* ───────────────────────────────────────────────────────────────────────
   0 · SHARED · floating frosted section-frame (source .vp-art .vp-frame)
   The render emits the literal vp-frame class only on bankroll/freespins;
   the other sections carry the same look via their vpm-sec--<id> class.
   ─────────────────────────────────────────────────────────────────────── */
.vpm .vp-frame,
.vpm .vp-calc-sec,
.vpm .vpm-sec--how-to-play,
.vpm .vpm-sec--bankroll,
.vpm .vpm-sec--access,
.vpm .vpm-sec--methodology,
.vpm .vpm-sec--timeline,
.vpm .vpm-sec--citations,
.vpm .vpm-sec--faq{
  position:relative;max-width:1400px;margin:24px auto;padding:46px 0;border-radius:28px;overflow:hidden;
  background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(252,253,250,.84)),rgba(255,255,255,.4);
  backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);
  border:1.5px solid rgba(255,255,255,.85);
  box-shadow:0 28px 64px -20px rgba(22,163,74,.18),0 10px 32px -12px rgba(0,0,0,.06),inset 0 1px 0 rgba(255,255,255,.95)}
.vpm .vp-frame::after,
.vpm .vpm-sec--how-to-play::after,
.vpm .vpm-sec--bankroll::after,
.vpm .vpm-sec--access::after,
.vpm .vpm-sec--methodology::after,
.vpm .vpm-sec--timeline::after,
.vpm .vpm-sec--citations::after,
.vpm .vpm-sec--faq::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;border-radius:inherit;
  background:radial-gradient(900px 500px at 88% 0%,rgba(22,163,74,.06),transparent 60%),radial-gradient(700px 400px at 12% 100%,rgba(250,204,21,.06),transparent 60%)}
/* tone overlays (source .vp-frame.tone-gold/.tone-blue) — render emits the
   bare tone class on the section (how-to-play: tone-gold, timeline: tone-blue);
   the source HTML also marks citations tone-blue, the render does not → explicit. */
.vpm .vpm-sec.tone-gold::after,
.vpm .vp-frame.tone-gold::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;border-radius:inherit;
  background:radial-gradient(800px 400px at 12% 0%,rgba(250,204,21,.08),transparent 60%),radial-gradient(700px 400px at 88% 100%,rgba(22,163,74,.05),transparent 60%)}
.vpm .vpm-sec.tone-blue::after,
.vpm .vp-frame.tone-blue::after,
.vpm .vpm-sec--citations::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;border-radius:inherit;
  background:radial-gradient(800px 400px at 88% 0%,rgba(14,165,233,.06),transparent 60%),radial-gradient(700px 400px at 12% 100%,rgba(22,163,74,.05),transparent 60%)}
/* inner wrap above the ::after tint (source .vp-frame>.wrap) */
.vpm .vp-frame > .vpm-wrap,
.vpm .vpm-sec--how-to-play > .vpm-wrap,
.vpm .vpm-sec--bankroll > .vpm-wrap,
.vpm .vpm-sec--access > .vpm-wrap,
.vpm .vpm-sec--methodology > .vpm-wrap,
.vpm .vpm-sec--timeline > .vpm-wrap,
.vpm .vpm-sec--citations > .vpm-wrap,
.vpm .vpm-sec--faq > .vpm-wrap{position:relative;z-index:1;max-width:none;padding:0 32px}
@media(max-width:1100px){
  .vpm .vp-frame,
  .vpm .vp-calc-sec,
  .vpm .vpm-sec--how-to-play,
  .vpm .vpm-sec--bankroll,
  .vpm .vpm-sec--access,
  .vpm .vpm-sec--methodology,
  .vpm .vpm-sec--timeline,
  .vpm .vpm-sec--citations,
  .vpm .vpm-sec--faq{margin:18px 14px}
}
@media(max-width:768px){
  .vpm .vp-frame,
  .vpm .vp-calc-sec,
  .vpm .vpm-sec--how-to-play,
  .vpm .vpm-sec--bankroll,
  .vpm .vpm-sec--access,
  .vpm .vpm-sec--methodology,
  .vpm .vpm-sec--timeline,
  .vpm .vpm-sec--citations,
  .vpm .vpm-sec--faq{margin:14px 10px;border-radius:22px;padding:34px 0 !important}
  .vpm .vp-frame > .vpm-wrap,
  .vpm .vpm-sec--how-to-play > .vpm-wrap,
  .vpm .vpm-sec--bankroll > .vpm-wrap,
  .vpm .vpm-sec--access > .vpm-wrap,
  .vpm .vpm-sec--methodology > .vpm-wrap,
  .vpm .vpm-sec--timeline > .vpm-wrap,
  .vpm .vpm-sec--citations > .vpm-wrap,
  .vpm .vpm-sec--faq > .vpm-wrap{padding:0 16px}
}
@media(max-width:430px){
  .vpm .vp-frame,
  .vpm .vp-calc-sec,
  .vpm .vpm-sec--how-to-play,
  .vpm .vpm-sec--bankroll,
  .vpm .vpm-sec--access,
  .vpm .vpm-sec--methodology,
  .vpm .vpm-sec--timeline,
  .vpm .vpm-sec--citations,
  .vpm .vpm-sec--faq{margin:12px 8px;border-radius:20px;padding:34px 0 !important}
  .vpm .vp-frame > .vpm-wrap,
  .vpm .vpm-sec--how-to-play > .vpm-wrap,
  .vpm .vpm-sec--bankroll > .vpm-wrap,
  .vpm .vpm-sec--access > .vpm-wrap,
  .vpm .vpm-sec--methodology > .vpm-wrap,
  .vpm .vpm-sec--timeline > .vpm-wrap,
  .vpm .vpm-sec--citations > .vpm-wrap,
  .vpm .vpm-sec--faq > .vpm-wrap{padding:0 14px}
}

/* ───────────────────────────────────────────────────────────────────────
   0b · SHARED · section head / sub / eyebrow / heading (source .sec-head /
   .sec-sub / .eyebrow / .sec-h) — global rescope, identical in every section.
   ─────────────────────────────────────────────────────────────────────── */
.vpm .vpm-sec-head{margin-bottom:22px;padding-bottom:14px;border-bottom:1.5px dashed rgba(22,163,74,.18)}
.vpm .vpm-sec-sub{font-size:15px;color:#475569;margin:8px 0 14px;max-width:75%}
/* access + timeline emit their sub OUTSIDE a head wrapper → own spacing */
.vpm .vpm-access-sub,
.vpm .vpm-timeline-sub{font-size:15px;color:#475569;margin:8px 0 22px;max-width:75%}
.vpm .vpm-eyebrow,
.vpm .vpm-access-eyebrow,
.vpm .vpm-faq-eyebrow{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:#15803d;background:linear-gradient(135deg,rgba(22,163,74,.10),rgba(202,138,4,.05));border:1px solid rgba(22,163,74,.22);padding:5px 12px;border-radius:99px;margin-bottom:12px}
.vpm .vpm-eyebrow svg{width:13px;height:13px;flex:none}
/* source .sec-h sizing + GREEN em (widget base uses a gold gradient em) */
.vpm .vpm-sec-head .vpm-sec-title,
.vpm .vpm-sec--access .vpm-sec-title,
.vpm .vpm-sec--timeline .vpm-sec-title,
.vpm .vpm-sec--citations .vpm-sec-title{font-size:clamp(24px,3.2vw,34px);font-weight:900;letter-spacing:-.6px;line-height:1.12;color:#0a1f14}
.vpm .vpm-sec-head .vpm-sec-title,
.vpm .vpm-sec--access .vpm-sec-title,
.vpm .vpm-sec--timeline .vpm-sec-title{margin:0}
.vpm .vpm-sec--citations .vpm-sec-title{margin:0 0 22px}
.vpm .vpm-sec-head .vpm-sec-title em,
.vpm .vpm-sec--access .vpm-sec-title em,
.vpm .vpm-sec--timeline .vpm-sec-title em,
.vpm .vpm-sec--citations .vpm-sec-title em{font-style:normal;color:#15803d;background:none;-webkit-background-clip:border-box;background-clip:border-box;-webkit-text-fill-color:currentColor}
@media(max-width:768px){
  .vpm .vpm-sec-sub,
  .vpm .vpm-access-sub,
  .vpm .vpm-timeline-sub{max-width:100%}
}
/* numbers always tabular (source: .vp-htp .num, .vp-tl .num + global .num-tab) */
.vpm .num-tab{font-variant-numeric:tabular-nums}
.vpm .vpm-sec--how-to-play .num,
.vpm .vpm-sec--timeline .num{font-variant-numeric:tabular-nums;letter-spacing:0}

/* ───────────────────────────────────────────────────────────────────────
   1 · HOW TO PLAY (vpm-sec--how-to-play · tone-gold) — steps + shot gallery
   ─────────────────────────────────────────────────────────────────────── */
.vpm .vpm-htp-intro{font-size:16px;color:#475569;max-width:78ch;margin:0 0 24px}

/* step list — icon LEFT, text RIGHT */
.vpm .vpm-htp-steps{list-style:none;margin:0 0 34px;padding:0;display:grid;gap:14px}
.vpm .vpm-htp-step{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:16px;
  padding:18px 20px;border-radius:18px;background:linear-gradient(180deg,#fff,#fafffd);
  border:1.5px solid rgba(22,163,74,.12);box-shadow:0 4px 14px rgba(0,0,0,.04);transition:transform .18s ease,box-shadow .18s ease}
.vpm .vpm-htp-step:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.07);border-color:rgba(22,163,74,.22)}
.vpm .vpm-htp-ico{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;flex:0 0 auto;
  background:linear-gradient(135deg,#16a34a,#15803d);color:#fff;
  box-shadow:0 6px 16px -6px rgba(22,163,74,.55),inset 0 1px 0 rgba(255,255,255,.4)}
.vpm .vpm-htp-ico svg{width:24px;height:24px}
.vpm .vpm-htp-txt h3,
.vpm .vpm-htp-txt h4{font-size:17px;font-weight:900;color:#0a1f14;letter-spacing:-.3px;margin:2px 0 6px;line-height:1.2}
.vpm .vpm-htp-txt p{font-size:14.5px;color:#475569;margin:0;line-height:1.6}
.vpm .vpm-htp-txt b{color:#0a1f14;font-weight:800}

/* gallery head */
.vpm .vpm-htp-gallery-head{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;margin:0 0 16px}
.vpm .vpm-htp-eyebrow{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:900;
  letter-spacing:1px;text-transform:uppercase;color:#ca8a04;
  background:linear-gradient(135deg,rgba(250,204,21,.16),rgba(202,138,4,.06));
  border:1px solid rgba(202,138,4,.28);padding:5px 12px;border-radius:99px;margin-bottom:0}
.vpm .vpm-htp-eyebrow svg{width:12px;height:12px;flex:none}
.vpm .vpm-htp-eyebrow-note{font-size:12px;font-weight:600;color:#64748b}

/* screenshot grid */
.vpm .vpm-htp-shots{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:0 0 18px;max-width:100%}
.vpm .vpm-htp-shot{margin:0;display:flex;flex-direction:column;gap:9px;position:relative}
.vpm .vpm-htp-shot .ph{position:relative;aspect-ratio:4/3;border-radius:16px;overflow:hidden;
  display:grid;place-items:center;color:#15803d;
  background:repeating-linear-gradient(135deg,rgba(22,163,74,.035) 0 12px,rgba(22,163,74,.07) 12px 24px),#f1f6f1;
  border:2px dashed rgba(22,163,74,.22);transition:border-color .18s ease,background .18s ease}
.vpm .vpm-htp-shot .ph svg{width:34px;height:34px;opacity:.5}
.vpm .vpm-htp-shot .ph::after{content:"Drop screenshot";position:absolute;bottom:10px;left:0;right:0;text-align:center;
  font-size:10.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:#64748b;opacity:.85}
.vpm .vpm-htp-shot:hover .ph{border-color:#16a34a;background:repeating-linear-gradient(135deg,rgba(22,163,74,.05) 0 12px,rgba(22,163,74,.10) 12px 24px),#f1f6f1}
/* real uploaded screenshot (render emits an <img> instead of the .ph slot) */
.vpm .vpm-htp-shot img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:16px;border:2px solid rgba(22,163,74,.22)}
.vpm .vpm-htp-shot figcaption{font-size:12.5px;font-weight:700;color:#1e2b22;line-height:1.35;text-align:center}

/* highlighted WIN screenshot */
.vpm .vpm-htp-shot.win .ph{border-color:#ca8a04;border-style:solid;
  background:repeating-linear-gradient(135deg,rgba(250,204,21,.08) 0 12px,rgba(250,204,21,.16) 12px 24px),#fffdf2;
  color:#ca8a04;box-shadow:0 14px 30px -14px rgba(202,138,4,.5)}
.vpm .vpm-htp-shot.win .ph::after{content:"Demo win-screen";color:#ca8a04;opacity:.9}
.vpm .vpm-htp-shot.win .ph svg{opacity:.7}
.vpm .vpm-htp-shot.win figcaption{color:#ca8a04;font-weight:800}
.vpm .vpm-htp-shot .ribbon{position:absolute;top:8px;right:8px;z-index:2;
  font-size:10.5px;font-weight:900;letter-spacing:1.5px;color:#fff;padding:4px 11px;border-radius:99px;
  background:linear-gradient(135deg,#facc15,#ca8a04);
  box-shadow:0 6px 14px -4px rgba(202,138,4,.7),inset 0 1px 0 rgba(255,255,255,.5);text-shadow:0 1px 2px rgba(0,0,0,.25)}

/* honest note */
.vpm .vpm-htp-note{display:flex;align-items:flex-start;gap:9px;font-size:13px;color:#64748b;
  margin:4px 0 0;padding:13px 16px;border-radius:14px;background:#f1f6f1;border:1px solid rgba(22,163,74,.12)}
.vpm .vpm-htp-note svg{width:14px;height:14px;flex:0 0 auto;margin-top:1px;color:#15803d}

/* tablet — gallery 2 cols, tighter steps */
@media(max-width:768px){
  .vpm .vpm-htp-shots{grid-template-columns:repeat(2,1fr);gap:12px}
  .vpm .vpm-htp-step{padding:15px 16px;gap:13px}
  .vpm .vpm-htp-ico{width:42px;height:42px;border-radius:12px}
  .vpm .vpm-htp-ico svg{width:22px;height:22px}
}
/* phone — gallery becomes a swipe rail (snap + edge-fade + hidden bar) */
@media(max-width:430px){
  .vpm .vpm-htp-shots{
    display:flex;flex-wrap:nowrap;overflow-x:auto;gap:12px;padding:2px 0 8px;
    scroll-snap-type:x mandatory;scroll-padding:14px;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent);
            mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent)}
  .vpm .vpm-htp-shots::-webkit-scrollbar{display:none}
  .vpm .vpm-htp-shot{flex:0 0 auto;width:min(80%,280px);scroll-snap-align:start}
  .vpm .vpm-htp-step{padding:14px;gap:12px}
  .vpm .vpm-htp-txt h3,
  .vpm .vpm-htp-txt h4{font-size:16px}
  .vpm .vpm-htp-intro{font-size:15px}
}

/* ───────────────────────────────────────────────────────────────────────
   2 · BANKROLL (vpm-sec--bankroll · vp-calc-sec · vp-frame) — calculator
   (render keeps the raw vp-calc* class names; generic tokens scoped)
   ─────────────────────────────────────────────────────────────────────── */
.vpm .vp-calc{background:#fff;border:1.5px solid rgba(22,163,74,.12);border-radius:20px;box-shadow:0 10px 28px rgba(0,0,0,.07);padding:24px;display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center;min-width:0}
.vpm .vp-calc-controls{min-width:0}
.vpm .vp-calc-controls .cl{display:flex;justify-content:space-between;font-size:12.5px;font-weight:800;color:#475569;margin-bottom:8px}
.vpm .vp-calc-controls .cl b{color:#0a1f14;font-size:14px}
.vpm .vp-calc-controls .field{margin-bottom:20px;min-width:0}
.vpm .vp-calc input[type="range"]{width:100%;max-width:100%;-webkit-appearance:none;appearance:none;height:7px;border-radius:99px;background:#f1f6f1;outline:none}
.vpm .vp-calc input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,#22c55e,#15803d);cursor:pointer;box-shadow:0 3px 8px rgba(22,163,74,.45);border:2px solid #fff}
.vpm .vp-calc input[type="range"]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,#22c55e,#15803d);cursor:pointer;border:2px solid #fff}
.vpm .vp-calc-seg{display:flex;background:#f1f6f1;border:1px solid rgba(22,163,74,.12);border-radius:99px;padding:4px;gap:4px}
.vpm .vp-calc-seg button{flex:1;border:none;font-family:inherit;font-size:12.5px;font-weight:800;padding:8px;border-radius:99px;cursor:pointer;transition:.15s}
/* Elementor theme :hover magenta guard — bg locked on all states */
.vpm .vp-calc-seg button,
.vpm .vp-calc-seg button:hover,
.vpm .vp-calc-seg button:focus,
.vpm .vp-calc-seg button:active{background:transparent;background-color:transparent !important;background-image:none !important;color:#475569 !important}
.vpm .vp-calc-seg button[aria-pressed="true"],
.vpm .vp-calc-seg button[aria-pressed="true"]:hover,
.vpm .vp-calc-seg button[aria-pressed="true"]:focus,
.vpm .vp-calc-seg button[aria-pressed="true"]:active{background:#fff;background-color:#fff !important;background-image:none !important;color:#15803d !important;box-shadow:0 4px 14px rgba(0,0,0,.04)}
.vpm .vp-calc-out{background:linear-gradient(160deg,#0a1f14,#0d2818);border-radius:16px;padding:20px;color:#eaf5ee}
.vpm .vp-calc-out .big{font-size:34px;font-weight:900;color:#facc15;letter-spacing:-1px;line-height:1}
.vpm .vp-calc-out .big small{font-size:14px;color:#a8c6b3;font-weight:700}
.vpm .vp-calc-out .ol{font-size:12px;color:#9fc6ad;text-transform:uppercase;letter-spacing:.5px;font-weight:800;margin-bottom:6px}
.vpm .vp-calc-out .row{display:flex;justify-content:space-between;font-size:13px;padding:8px 0;border-bottom:1px dashed rgba(255,255,255,.1)}
.vpm .vp-calc-out .row:last-child{border-bottom:0}
.vpm .vp-calc-out .row span{color:#cfe6d7}
.vpm .vp-calc-out .row b{color:#fff;font-weight:800}
.vpm .vp-calc-note{grid-column:1/-1;font-size:12px;color:#64748b;line-height:1.5;display:flex;gap:9px;align-items:flex-start}
.vpm .vp-calc-note svg{width:16px;height:16px;stroke:#64748b;fill:none;stroke-width:2.4;flex:none;margin-top:1px}
@media(max-width:768px){
  .vpm .vp-calc{grid-template-columns:1fr;gap:20px}
  /* range thumb bleed fix (source mobile audit, 1:1) */
  .vpm .vp-calc-controls{min-width:0 !important}
  .vpm .vp-calc-controls .field{overflow:visible !important;min-width:0 !important}
  .vpm .vp-calc input[type="range"]{width:calc(100% - 24px) !important;margin:0 12px !important}
}

/* ───────────────────────────────────────────────────────────────────────
   3 · ACCESS (vpm-sec--access) — two cards + AU legality matrix + RG note
   ─────────────────────────────────────────────────────────────────────── */
.vpm .vpm-access-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.vpm .vpm-access-card{background:#fff;border:1.5px solid rgba(22,163,74,.12);border-radius:16px;padding:18px;box-shadow:0 4px 14px rgba(0,0,0,.04);position:relative;overflow:hidden}
/* card head — icon LEFT, title RIGHT, pill far right */
.vpm .vpm-access-card-hd{display:flex;align-items:center;gap:11px;margin-bottom:12px}
.vpm .vpm-access-ic{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;border-radius:10px;color:#fff}
.vpm .vpm-access-ic svg{width:60%;height:60%;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.vpm .vpm-access-ic--green{background:linear-gradient(135deg,#22c55e,#15803d)}
.vpm .vpm-access-ic--gold{background:linear-gradient(135deg,#facc15,#ca8a04)}
.vpm .vpm-access-card-title{font-size:15.5px;font-weight:900;color:#0a1f14;margin:0}
.vpm .vpm-access-pill{margin-left:auto;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.4px;padding:3px 9px;border-radius:99px;white-space:nowrap}
.vpm .vpm-access-pill--yes{background:color-mix(in oklab,#16a34a 16%,#fff);color:#15803d}
.vpm .vpm-access-pill--caution{background:color-mix(in oklab,#facc15 18%,#fff);color:#ca8a04}
.vpm .vpm-access-card-body{font-size:13.5px;line-height:1.6;color:#475569;margin:0}
.vpm .vpm-access-card-body b{color:#0a1f14}
/* matrix */
.vpm .vpm-access-matrix{margin-top:16px;background:#fff;border:1.5px solid rgba(22,163,74,.12);border-radius:16px;overflow:hidden;box-shadow:0 4px 14px rgba(0,0,0,.04)}
.vpm .vpm-access-mrow{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:12px;padding:13px 18px;border-bottom:1px solid rgba(22,163,74,.12);align-items:center;font-size:13px}
.vpm .vpm-access-mrow:last-child{border-bottom:0}
.vpm .vpm-access-mrow--head{background:#f1f6f1;font-size:10.5px;font-weight:900;text-transform:uppercase;letter-spacing:.4px;color:#64748b}
.vpm .vpm-access-mc{text-align:center}
.vpm .vpm-access-lab{font-weight:800;color:#0a1f14;text-align:left}
.vpm .vpm-access-avail{font-weight:800}
.vpm .vpm-access-avail--yes{color:#15803d}
.vpm .vpm-access-avail--no{color:#e11d48}
.vpm .vpm-access-avail--caution{color:#ca8a04}
.vpm .vpm-access-know{color:#475569}
/* RG note (source .vp-rtpv-note + inline margin-top:16px) */
.vpm .vpm-access-rgnote{display:flex;align-items:flex-start;gap:10px;margin-top:16px;padding:13px 16px;background:color-mix(in oklab,#facc15 9%,#fff);border:1px solid color-mix(in oklab,#facc15 26%,rgba(22,163,74,.12));border-radius:14px;font-size:13px;color:#1e2b22;line-height:1.5}
.vpm .vpm-access-rgnote svg{width:18px;height:18px;stroke:#ca8a04;fill:none;stroke-width:2.4;flex:none;margin-top:1px}
.vpm .vpm-access-rgnote b{color:#0a1f14}
@media(max-width:768px){
  .vpm .vpm-access-grid{grid-template-columns:1fr}
  /* matrix → stacked label/value app-cards (source mobile redesign, 1:1) */
  .vpm .vpm-access-matrix{background:transparent !important;border:0 !important;border-radius:0 !important;
    box-shadow:none !important;overflow:visible !important;
    display:flex !important;flex-direction:column !important;gap:10px !important}
  .vpm .vpm-access-mrow--head{display:none !important}
  .vpm .vpm-access-mrow{display:block !important;grid-template-columns:none !important;
    background:#f1f6f1 !important;border:1px solid rgba(22,163,74,.12) !important;
    border-bottom:1px solid rgba(22,163,74,.12) !important;border-radius:10px !important;
    padding:12px 14px !important;font-size:13px !important}
  .vpm .vpm-access-mrow:last-child{border-bottom:1px solid rgba(22,163,74,.12) !important}
  .vpm .vpm-access-lab{display:block !important;font-size:14px !important;font-weight:800 !important;
    color:#0a1f14 !important;line-height:1.3 !important;margin-bottom:8px !important}
  .vpm .vpm-access-mrow .vpm-access-avail{display:inline-flex !important;align-items:center !important;width:auto !important;
    text-align:left !important;font-size:11px !important;font-weight:900 !important;
    letter-spacing:.3px !important;text-transform:uppercase !important;
    padding:4px 11px !important;border-radius:999px !important;line-height:1.2 !important;margin-bottom:8px !important}
  .vpm .vpm-access-mrow .vpm-access-avail::before{content:"Available: " !important;font-weight:800 !important;opacity:.72 !important;
    text-transform:none !important;letter-spacing:0 !important}
  .vpm .vpm-access-mrow .vpm-access-avail--yes{background:rgba(22,163,74,.12) !important;color:#15803d !important}
  .vpm .vpm-access-mrow .vpm-access-avail--no{background:rgba(225,29,72,.10) !important;color:#e11d48 !important}
  .vpm .vpm-access-mrow .vpm-access-avail:not(.vpm-access-avail--yes):not(.vpm-access-avail--no){background:rgba(202,138,4,.13) !important;color:#ca8a04 !important}
  .vpm .vpm-access-mrow .vpm-access-know{display:block !important;width:100% !important;text-align:left !important;
    font-size:12.5px !important;font-weight:600 !important;color:#475569 !important;line-height:1.45 !important}
  .vpm .vpm-access-mrow .vpm-access-know::before{content:"Note: " !important;font-weight:800 !important;color:#64748b !important}
}
@media(max-width:430px){
  .vpm .vpm-access-matrix{gap:9px !important}
  .vpm .vpm-access-mrow{padding:11px 13px !important}
  .vpm .vpm-access-lab{font-size:13.5px !important;margin-bottom:7px !important}
  .vpm .vpm-access-mrow .vpm-access-avail{font-size:10.5px !important;padding:4px 10px !important}
  .vpm .vpm-access-mrow .vpm-access-know{font-size:12px !important}
}

/* ───────────────────────────────────────────────────────────────────────
   4 · METHODOLOGY (vpm-sec--methodology) — byline panel + process steps
   ─────────────────────────────────────────────────────────────────────── */
.vpm .vpm-meth-card{background:#fff;border:1.5px solid rgba(22,163,74,.12);border-radius:20px;box-shadow:0 4px 14px rgba(0,0,0,.04);padding:24px;display:grid;grid-template-columns:300px 1fr;gap:28px}
.vpm .vpm-byline-block{background:linear-gradient(160deg,#0a1f14,#0d2818);border-radius:16px;padding:18px;color:#eaf5ee;align-self:start}
.vpm .vpm-byline-person{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px dashed rgba(255,255,255,.12)}
.vpm .vpm-byline-person:last-child{border-bottom:0}
.vpm .vpm-avatar{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;font-weight:900;font-size:15px;color:#fff;flex:none}
.vpm .vpm-avatar--a1{background:linear-gradient(135deg,#22c55e,#15803d)}
.vpm .vpm-avatar--a2{background:linear-gradient(135deg,#0ea5e9,#0284c7)}
.vpm .vpm-byline-l{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:#facc15}
.vpm .vpm-byline-nm{font-size:14px;font-weight:900;color:#fff;margin-top:1px}
.vpm .vpm-byline-rl{font-size:11.5px;color:#9fc6ad;margin-top:1px}
/* sign-off line (source: inline-styled <p> in the byline panel) */
.vpm .vpm-byline-signoff{font-size:11.5px;color:#7da890;margin:12px 0 0;line-height:1.5}
.vpm .vpm-meth-body h3,
.vpm .vpm-meth-body h4{font-size:18px;font-weight:900;color:#0a1f14;margin:0 0 8px}
.vpm .vpm-meth-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.vpm .vpm-meth-steps li{display:flex;align-items:flex-start;gap:12px;font-size:13.5px;color:#475569;line-height:1.55}
/* step icon tile — icon LEFT, text RIGHT (source .vp-ic base + 30px size) */
.vpm .vpm-meth-ic{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;flex:none;color:#fff}
.vpm .vpm-meth-ic svg{width:60%;height:60%;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.vpm .vpm-meth-ic--g{background:linear-gradient(135deg,#22c55e,#15803d)}
.vpm .vpm-meth-ic--blue{background:linear-gradient(135deg,#0ea5e9,#0284c7)}
.vpm .vpm-meth-ic--gold{background:linear-gradient(135deg,#facc15,#ca8a04)}
.vpm .vpm-meth-ic--purple{background:linear-gradient(135deg,#a855f7,#7c3aed)}
.vpm .vpm-meth-steps li b{color:#0a1f14}
.vpm .vpm-meth-foot{margin:14px 0 0;font-size:12px;color:#64748b;font-style:italic}
@media(max-width:768px){
  .vpm .vpm-meth-card{grid-template-columns:1fr}
}

/* ───────────────────────────────────────────────────────────────────────
   5 · TIMELINE (vpm-sec--timeline · tone-blue) — dated changelog, newest first
   (overrides the legacy generic .vpm-timeline block earlier in styles.css)
   ─────────────────────────────────────────────────────────────────────── */
.vpm .vpm-timeline{display:block;list-style:none;margin:0 0 22px;padding:0;position:relative;gap:0}
/* the spine */
.vpm .vpm-timeline::before{content:"";position:absolute;left:130px;top:14px;bottom:14px;width:2px;
  background:linear-gradient(180deg,#22c55e,#16a34a,rgba(22,163,74,.22));border-radius:2px}
.vpm .vpm-tl-row{position:relative;display:grid;grid-template-columns:114px 32px 1fr;align-items:start;gap:0;padding:9px 0}
/* legacy dot pseudo — the node is a real element (.vpm-tl-node) */
.vpm .vpm-tl-row::before,
.vpm .vpm-tl-row.is-latest::before{content:none}
.vpm .vpm-tl-date{display:inline-flex;align-items:center;justify-self:end;align-self:center;font-size:12.5px;font-weight:900;color:#15803d;
  background:linear-gradient(135deg,rgba(22,163,74,.10),rgba(14,165,233,.06));border:1px solid rgba(22,163,74,.22);
  padding:5px 10px;border-radius:8px;white-space:nowrap;text-align:center;line-height:1.1}
.vpm .vpm-tl-node{justify-self:center;align-self:center;position:relative;z-index:1;
  width:15px;height:15px;border-radius:50%;background:#fff;border:3px solid #16a34a;
  box-shadow:0 0 0 4px #fff,0 2px 8px -2px rgba(22,163,74,.5)}
.vpm .vpm-tl-card{padding:14px 18px;border-radius:16px;background:linear-gradient(180deg,#fff,#fafffd);
  border:1.5px solid rgba(22,163,74,.12);box-shadow:0 4px 14px rgba(0,0,0,.04);margin-left:6px;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.vpm .vpm-tl-row:hover .vpm-tl-card{transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.07);border-color:rgba(22,163,74,.22)}
.vpm .vpm-tl-title{font-size:15.5px;font-weight:900;color:#0a1f14;letter-spacing:-.2px;margin:0 0 4px;
  display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.vpm .vpm-tl-body{font-size:14px;color:#475569;margin:0;line-height:1.55}

/* latest entry — pulse + pill */
.vpm .vpm-tl-row.is-latest .vpm-tl-node{border-color:#22c55e;
  box-shadow:0 0 0 4px #fff,0 0 0 9px rgba(34,197,94,.25);animation:vpmTlPulse 2.2s ease-in-out infinite}
.vpm .vpm-tl-row.is-latest .vpm-tl-card{border-color:rgba(22,163,74,.22);
  box-shadow:0 14px 30px -16px rgba(22,163,74,.32)}
.vpm .vpm-tl-pill{display:inline-flex;align-items:center;font-size:10px;font-weight:900;letter-spacing:1px;text-transform:uppercase;color:#fff;
  padding:3px 9px;border-radius:99px;border:0;background:linear-gradient(135deg,#22c55e,#15803d);
  box-shadow:0 4px 10px -3px rgba(22,163,74,.6)}
/* legacy pulse-dot pseudo on the pill — source pill has none */
.vpm .vpm-tl-pill::before{content:none}
@keyframes vpmTlPulse{0%,100%{box-shadow:0 0 0 4px #fff,0 0 0 8px rgba(34,197,94,.30)}
  50%{box-shadow:0 0 0 4px #fff,0 0 0 13px rgba(34,197,94,0)}}
@media(prefers-reduced-motion:reduce){.vpm .vpm-tl-row.is-latest .vpm-tl-node{animation:none}}

.vpm .vpm-tl-foot{display:flex;align-items:center;gap:9px;font-size:13px;color:#64748b;margin:0;
  padding:13px 16px;border-radius:14px;background:#f1f6f1;border:1px solid rgba(22,163,74,.12)}
.vpm .vpm-tl-foot svg{width:14px;height:14px;flex:0 0 auto;color:#0ea5e9}
.vpm .vpm-tl-foot b{color:#1e2b22}

/* tablet — date collapses above the card, spine to the left */
@media(max-width:768px){
  .vpm .vpm-timeline::before{left:6px}
  .vpm .vpm-tl-row{grid-template-columns:24px 1fr;grid-template-areas:"node date" "node card";gap:0 12px;padding:8px 0}
  .vpm .vpm-tl-date{grid-area:date;justify-self:start;align-self:start;margin-bottom:6px}
  .vpm .vpm-tl-node{grid-area:node;align-self:start;margin-top:4px}
  .vpm .vpm-tl-card{grid-area:card;margin-left:0}
}
/* phone tighten */
@media(max-width:430px){
  .vpm .vpm-tl-row{padding:7px 0}
  .vpm .vpm-tl-card{padding:12px 14px}
  .vpm .vpm-tl-title{font-size:15px}
  .vpm .vpm-tl-body{font-size:13.5px}
  .vpm .vpm-htp-note,
  .vpm .vpm-tl-foot{font-size:12.5px;padding:12px 14px}
}

/* ───────────────────────────────────────────────────────────────────────
   6 · CITATIONS (vpm-sec--citations) — frame + tone-blue handled above;
   source .vp-cite-item card look mapped onto the rendered list items.
   ─────────────────────────────────────────────────────────────────────── */
.vpm .vpm-sec--citations .vpm-citations{grid-template-columns:1fr 1fr;gap:10px}
.vpm .vpm-sec--citations .vpm-citation{background:#fff;border:1px solid rgba(22,163,74,.12);border-radius:12px;padding:12px 14px;font-size:12.5px;color:#475569;line-height:1.5}
@media(max-width:640px){
  .vpm .vpm-sec--citations .vpm-citations{grid-template-columns:1fr}
}

/* ───────────────────────────────────────────────────────────────────────
   7 · FAQ (vpm-sec--faq · vpm-faq-sec) — 2-col <details> grid
   ─────────────────────────────────────────────────────────────────────── */
.vpm .vpm-faq-sec{padding:46px 0}
.vpm .vpm-faq-head{margin-bottom:22px;padding-bottom:14px;border-bottom:1.5px dashed rgba(22,163,74,.18)}
.vpm .vpm-faq-sub{font-size:15px;color:#475569;margin:8px 0 14px;max-width:75%}
.vpm .vpm-faq-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.vpm .vpm-faq-grid details,
.vpm .vpm-faq-item{background:#fff;border:1.5px solid rgba(22,163,74,.12);border-radius:14px;overflow:hidden;box-shadow:0 4px 14px rgba(0,0,0,.04);transition:box-shadow .15s ease;isolation:isolate}
.vpm .vpm-faq-item[open]{box-shadow:0 10px 28px rgba(0,0,0,.07);border-color:rgba(22,163,74,.22)}
.vpm .vpm-faq-q{list-style:none;display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:15px 17px;cursor:pointer;font-size:14.5px;font-weight:800;color:#0a1f14;line-height:1.3}
.vpm .vpm-faq-q::-webkit-details-marker{display:none}
/* legacy chevron pseudo — the toggle glyph is a real element (.vpm-faq-q-ic) */
.vpm .vpm-faq-q::after,
.vpm .vpm-faq-item[open] .vpm-faq-q::after{content:none}
.vpm .vpm-faq-q-num{font-size:11px;font-weight:900;color:#15803d;background:#f1f6f1;padding:3px 8px;border-radius:6px;flex:none}
.vpm .vpm-faq-q-tx{flex:1}
.vpm .vpm-faq-q-ic{width:28px;height:28px;border-radius:50%;background:#f1f6f1;border:1px solid rgba(22,163,74,.12);display:grid;place-items:center;font-size:18px;color:#475569;transition:.2s;flex:none;line-height:1}
.vpm .vpm-faq-item[open] .vpm-faq-q-ic{background:#16a34a;color:#fff;border-color:#16a34a;transform:rotate(45deg)}
.vpm .vpm-faq-a.ans{padding:13px 17px 16px 54px;font-size:13.5px;color:#475569;line-height:1.65;border-top:1px solid rgba(22,163,74,.12)}
.vpm .vpm-faq-a.ans b{color:#0a1f14}
@media(max-width:768px){
  .vpm .vpm-faq-grid{grid-template-columns:1fr}
  .vpm .vpm-faq-a.ans{padding-left:46px}
}

/* === footer (canonical aboutpage) === */
/* No text-decoration line anywhere on the about page — kill the WP/Elementor theme
   default text-decoration on every footer/about link (.ap-* / .vp-*),
   incl. the RG link and :hover. */
[class^="ap-"] a, [class*=" ap-"] a,
[class^="vp-"] a, [class*=" vp-"] a,
[class^="ap-"] a:hover, [class*=" ap-"] a:hover,
[class^="vp-"] a:hover, [class*=" vp-"] a:hover{ text-decoration:none; }

    .vp-foot{
      /* Full-bleed edge-to-edge. The negative left/right margins stretch the
         footer to the viewport edges; html{overflow-x:hidden} (in the nav
         widget) absorbs any sub-pixel overflow so there is NO horizontal
         scrollbar. margin-bottom:0 (no negative over-pull) → the footer ends
         exactly with its content, no giant dark tail below it. */
      width:auto !important;
      max-width:none !important;
      margin-left:calc(50% - 50vw) !important;
      margin-right:calc(50% - 50vw) !important;
      margin-top:48px !important;
      /* small negative pull to cover the ~15px light strip left by the
         Elementor section/#page bottom spacing. Negative margin ONLY (no
         matching padding — padding+negative-margin would cancel out and the
         footer would end at the same spot). 40px > the ~15px strip, safe. */
      margin-bottom:-40px !important;
      background:
        radial-gradient(1200px 600px at 10% 0%, rgba(22,163,74,.18), transparent 55%),
        radial-gradient(1000px 540px at 90% 30%, rgba(250,204,21,.10), transparent 60%),
        radial-gradient(900px 500px at 50% 100%, rgba(202,138,4,.08), transparent 55%),
        linear-gradient(180deg,#020a05 0%,#06160e 35%,#0a1f14 70%,#020a05 100%);
      color:#cbd5e1;
      border-radius:0;
      padding:0;
      position:relative;
      overflow:hidden;
    }
    .vp-foot::after{
      content:''; position:absolute; inset:0; pointer-events:none; z-index:0;
      background:
        radial-gradient(2px 2px at 18% 30%, rgba(250,204,21,.45), transparent 60%),
        radial-gradient(1.5px 1.5px at 72% 18%, rgba(34,197,94,.55), transparent 60%),
        radial-gradient(2px 2px at 88% 62%, rgba(250,204,21,.35), transparent 60%),
        radial-gradient(1.5px 1.5px at 32% 78%, rgba(34,197,94,.4), transparent 60%);
      opacity:.7;
      animation:vp-foot-twinkle 6s ease-in-out infinite;
    }
    @keyframes vp-foot-twinkle{
      0%,100% { opacity:.4; }
      50%     { opacity:.85; }
    }
    .vp-foot-wave{
      display:block; width:100%; height:90px;
      position:relative; z-index:1;
      margin-bottom:-1px;
      pointer-events:none;
    }
    .vp-foot-wave svg{ display:block; width:100%; height:100%; }
    .vp-foot-curves{
      position:absolute; inset:0; z-index:0; pointer-events:none;
      opacity:.55;
    }
    .vp-foot-curves svg{ width:100%; height:100%; }
    .vp-foot-inner{
      position:relative; z-index:2;
      max-width:1320px; margin:0 auto;
      padding:24px 40px 32px;
    }
    .vp-foot-hero{
      display:flex; align-items:center; justify-content:space-between; gap:30px;
      flex-wrap:wrap;
      padding:8px 0 28px;
      margin-bottom:32px;
      border-bottom:1px solid rgba(250,204,21,.12);
      position:relative;
    }
    .vp-foot-hero::after{
      content:''; position:absolute; bottom:-1px; left:50%; transform:translateX(-50%);
      width:120px; height:1px;
      background:linear-gradient(90deg, transparent, #ca8a04 40%, #facc15 50%, #ca8a04 60%, transparent);
      box-shadow:0 0 12px rgba(250,204,21,.55);
    }
    .vp-foot-brand-mark{
      display:flex; align-items:center; gap:12px;
      font-size:22px; font-weight:900; color:#fff; letter-spacing:-.5px;
    }
    .vp-foot-brand-mark em{ font-style:normal; color:#facc15; text-shadow:0 0 14px rgba(250,204,21,.5); }
    .vp-foot-brand-mark .vp-foot-logo{
      width:42px; height:42px; border-radius:12px;
      display:grid; place-items:center; flex-shrink:0;
      background:linear-gradient(135deg,#fde047,#facc15 40%,#f97316 100%);
      color:#0a1f14; font-size:15px; font-weight:900; letter-spacing:-.5px;
      box-shadow:
        inset 0 1px 0 rgba(255,255,255,.55),
        0 6px 18px rgba(249,115,22,.45),
        0 0 0 1.5px rgba(250,204,21,.4),
        0 0 22px rgba(250,204,21,.3);
    }
    .vp-foot-trust{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
    .vp-foot-trust-badge{
      display:inline-flex; align-items:center; gap:8px;
      padding:9px 14px; border-radius:99px;
      background:linear-gradient(135deg, rgba(34,197,94,.10), rgba(250,204,21,.08));
      border:1px solid rgba(250,204,21,.25);
      font-size:11.5px; font-weight:800; color:#fde047;
      letter-spacing:.4px; text-transform:uppercase;
    }
    .vp-foot-trust-badge svg{ width:14px; height:14px; color:#22c55e; flex-shrink:0; }
    .vp-foot-top{
      display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr 1fr; gap:36px;
      padding-bottom:30px; margin-bottom:26px;
      border-bottom:1px solid rgba(255,255,255,.08);
    }
    .vp-foot-brand{ display:flex; flex-direction:column; gap:14px; }
    .vp-foot-brand p{
      margin:0; font-size:13.5px; line-height:1.6; color:#94a3b8; font-weight:500;
      max-width:280px;
    }
    .vp-foot-social{ display:flex; gap:9px; padding-top:8px; }
    .vp-foot-social a{
      width:36px; height:36px; border-radius:10px;
      display:grid; place-items:center;
      background:linear-gradient(135deg, rgba(255,255,255,.06), rgba(255,255,255,.02));
      color:#cbd5e1;
      border:1px solid rgba(250,204,21,.18);
      transition:all .25s;
    }
    .vp-foot-social a:hover{
      color:#facc15; transform:translateY(-3px);
      border-color:rgba(250,204,21,.55);
      box-shadow:0 8px 18px rgba(250,204,21,.25);
    }
    .vp-foot-social svg{ width:15px; height:15px; }
    /* Column title rendered as a PLAIN <p> (no h-tag emphasis): no uppercase,
       no gold highlight, no decoration accent — just a normal paragraph. */
    .vp-foot-col-title{
      margin:0 0 16px;
      font-size:13px; font-weight:600; color:#cbd5e1;
      letter-spacing:0; text-transform:none;
    }
    .vp-foot-col ul{ list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:10px; }
    .vp-foot-col a{
      font-size:13px; font-weight:600; color:#cbd5e1;
      text-decoration:none;
      transition:color .18s, transform .18s;
      display:inline-flex; align-items:center; gap:6px;
    }
    .vp-foot-col a:hover{ color:#fff; transform:translateX(2px); }
    .vp-foot-rg{
      display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:20px;
      padding:20px 26px;
      background:
        radial-gradient(400px 200px at 0% 50%, rgba(220,38,38,.16), transparent 60%),
        linear-gradient(135deg, rgba(220,38,38,.10), rgba(127,29,29,.06));
      border:1px solid rgba(220,38,38,.28);
      border-radius:16px;
      margin-bottom:22px;
    }
    .vp-foot-rg-badge{
      display:inline-flex; align-items:center; gap:6px;
      padding:6px 13px; border-radius:99px;
      background:linear-gradient(135deg,#ef4444,#7f1d1d);
      color:#fff; font-size:11px; font-weight:900; letter-spacing:.5px;
      box-shadow:0 4px 12px rgba(220,38,38,.5);
    }
    .vp-foot-rg-text{ font-size:13px; color:#fca5a5; font-weight:600; }
    .vp-foot-rg-text b{ color:#fff; font-weight:800; }
    .vp-foot-rg-text a{ color:#fff; text-decoration:none; font-weight:700; }
    .vp-foot-rg-text a:hover{ color:#facc15; }
    .vp-foot-bottom{
      display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
      padding-top:20px;
      border-top:1px dashed rgba(255,255,255,.10);
      position:relative;
    }
    .vp-foot-bottom::before{
      content:''; position:absolute; top:-5px; left:50%; transform:translateX(-50%) rotate(45deg);
      width:8px; height:8px;
      background:linear-gradient(135deg, #facc15, #ca8a04);
      border:1px solid rgba(250,204,21,.4);
      box-shadow:0 0 10px rgba(250,204,21,.5);
    }
    .vp-foot-copyright{ font-size:12px; color:#64748b; font-weight:500; }
    .vp-foot-copyright b{ color:#e2e8f0; font-weight:700; }
    .vp-foot-iga{
      font-size:11.5px; color:#64748b; font-style:italic; max-width:580px; line-height:1.55;
    }

    @media (max-width:1100px){
      .vp-foot-inner{ padding:18px 28px 26px; }
      .vp-foot-top{ grid-template-columns:1.5fr 1fr 1fr; gap:28px 32px; }
      .vp-foot-brand{ grid-column:1 / -1; }
      .vp-foot-wave{ height:70px; }
    }
    @media (max-width:768px){
      /* keep full-bleed + white-strip kill on mobile; only top gap shrinks */
      .vp-foot{
        margin-left:calc(50% - 50vw) !important;
        margin-right:calc(50% - 50vw) !important;
        margin-top:32px !important;
        margin-bottom:-40px !important;
      }
      .vp-foot-inner{ padding:8px 0 24px; }
      .vp-foot-wave{ height:55px; }
      .vp-foot-hero{
        flex-direction:column; align-items:center; text-align:center;
        gap:18px; padding:14px 20px 24px; margin:0 16px 24px;
        border-bottom:0;
      }
      .vp-foot-trust{
        flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none;
        -webkit-overflow-scrolling:touch;
        gap:8px; padding:0 16px; margin:0 -16px;
        justify-content:flex-start;
      }
      .vp-foot-trust::-webkit-scrollbar{ display:none; }
      .vp-foot-trust-badge{ flex-shrink:0; font-size:10.5px; padding:7px 12px; }
      .vp-foot-top{
        display:grid; grid-template-columns:1fr 1fr; gap:0;
        padding:24px 0 22px; margin:0 16px 20px;
        border-top:1px solid rgba(250,204,21,.10);
        border-bottom:1px solid rgba(34,197,94,.10);
        position:relative;
      }
      .vp-foot-top::before{
        content:''; position:absolute; top:24px; bottom:22px;
        left:50%; width:1px; transform:translateX(-.5px);
        background:linear-gradient(180deg, transparent 0%, rgba(250,204,21,.15) 30%, rgba(34,197,94,.15) 70%, transparent 100%);
      }
      .vp-foot-brand{ display:none; }
      .vp-foot-col{
        padding:0 18px; padding-bottom:18px;
        border-bottom:1px dashed rgba(255,255,255,.06);
      }
      .vp-foot-col:nth-last-child(-n+2){ border-bottom:0; padding-bottom:0; padding-top:18px; }
      .vp-foot-col:nth-child(-n+3){ padding-top:0; }
      .vp-foot-col-title{ font-size:12.5px; margin:0 0 14px; }
      .vp-foot-col ul{ gap:11px; }
      .vp-foot-col a{ font-size:13px; }
      .vp-foot-brand-mobile{
        display:flex; flex-direction:column; align-items:center;
        gap:14px; max-width:340px;
      }
      .vp-foot-brand-mobile p{
        margin:0; font-size:13px; line-height:1.55;
        color:#94a3b8; font-weight:500; text-align:center;
      }
      .vp-foot-brand-mobile .vp-foot-social{ display:flex; gap:10px; padding:0; }
      .vp-foot-brand-mobile .vp-foot-social a{ width:40px; height:40px; }
      .vp-foot-rg{
        margin:0 16px 18px; padding:18px 18px;
        flex-direction:column; gap:10px; text-align:center; border-radius:14px;
      }
      .vp-foot-rg-text{ font-size:12px; line-height:1.55; }
      .vp-foot-bottom{
        flex-direction:column; align-items:center; text-align:center;
        gap:12px; padding:18px 20px 0; margin:0 16px;
      }
      .vp-foot-copyright{ font-size:11.5px; }
      .vp-foot-iga{ font-size:11px; max-width:100%; }
    }
    .vp-foot-brand-mobile{ display:none; }

    @media (max-width:430px){
      .vp-foot-wave{ height:42px; }
      .vp-foot-hero{ margin:0 12px 20px; padding:12px 16px 20px; gap:16px; }
      .vp-foot-brand-mark{ font-size:20px; }
      .vp-foot-brand-mark .vp-foot-logo{ width:40px; height:40px; font-size:14px; }
      .vp-foot-brand-mobile p{ font-size:12.5px; }
      .vp-foot-trust{ padding:0 12px; margin:0 -12px; }
      .vp-foot-trust-badge{ font-size:10px; padding:6px 11px; }
      .vp-foot-top{ margin:0 12px 18px; padding:20px 0 18px; }
      .vp-foot-top::before{ top:20px; bottom:18px; }
      .vp-foot-col{ padding:0 14px; padding-bottom:16px; }
      .vp-foot-col:nth-last-child(-n+2){ padding-top:16px; }
      .vp-foot-col-title{ font-size:12px; margin-bottom:12px; }
      .vp-foot-col a{ font-size:12.5px; }
      .vp-foot-rg{ margin:0 12px 16px; padding:16px 14px; border-radius:13px; }
      .vp-foot-rg-text{ font-size:11.5px; }
      .vp-foot-bottom{ margin:0 12px; padding:16px 14px 0; }
    }

    @media (prefers-reduced-motion: reduce){
      .vp-foot::after{ animation:none; }
    }

/* === POLISH 2026-06-11 · citations source-design parity =====================
   Forrás: .vp-cite-item .n számozott marker + nincs underline (katalógus #14).
   A kártya-stílust a frag-C adja; itt csak a sorszám + link-reset. */
.vpm .vpm-citations { counter-reset: vpmcite; }
.vpm .vpm-citation { counter-increment: vpmcite; }
.vpm .vpm-citation::before { content: counter(vpmcite); font-weight: 900; color: #15803d; flex: none; }
.vpm .vpm-citation a,
.vpm .vpm-citation a:hover,
.vpm .vpm-citation a:focus { text-decoration: none; font-weight: 700; }

/* TOC standalone-widget fixed state — a JS (initTocSticky) kapcsolja; az
   !important kell, hogy a mobil static-override (L1730) fölött nyerjen. */
.vpm .vpm-toc.vpm-toc--fixed {
  position: fixed !important;
  top: 0 !important;
  z-index: 80;
  margin: 0;
}

