/* /online-casino/ hub — Casino-Vergleich.
   Own class system (oc-*/opcard-*/oprow-*), theme-aware via tokens, distinct from home §4 (.rcard).
   Reuses site systems: .btn, .eyebrow*, .section-head*, .anim-line-*, --shadow-alt, .faq-item. */

.oc .container { max-width: 72rem; }

/* ---------- static decorative hero backdrop (oseg_hero_art) ----------
   The utility-page counterpart to the flagship animated motif: a flat-geometric SVG,
   ZERO JS. Opt-in — drop <div class="oseg-hero-art">…</div> as the hero's first child and
   give the hero position:relative + its content z-index:1. Fills follow the site's
   data-theme toggle via the tokens (inline SVG in the DOM, not an <img>). */
.oseg-hero-art { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; user-select: none; }
.oseg-hero-art svg { position: absolute; right: 0; top: 45%; transform: translateY(-50%); height: 118%; width: auto; opacity: .85; }
.oseg-hero-art--left svg { right: auto; left: 0; top: 60%; }
/* slot-review + casino-review backdrops: smaller + more muted */
.slr-hero .oseg-hero-art svg,
.ocr-hero .oseg-hero-art svg { height: 100%; opacity: .5; }
.oseg-hero-art .ha-v { fill: var(--accent); }
.oseg-hero-art .ha-g { fill: var(--primary); }
.oseg-hero-art .ha-gold { fill: var(--star); }
.oseg-hero-art .ha-line { fill: none; stroke: var(--accent); stroke-width: 3; }
.oseg-hero-art .ha-line-gold { fill: none; stroke: var(--star); stroke-width: 3; }
.oseg-hero-art .ha-line-g { fill: none; stroke: var(--primary); stroke-width: 3; }
/* tinted hero (opt-in modifier; the shared .oc-hero base stays transparent for /online-casino/) */
.oc-hero--tint { background: linear-gradient(90deg, var(--hero), var(--bg)); }

/* ---------- shared inline glyphs ---------- */
.oc-ico { flex: none; vertical-align: -0.15em; }
.oc-ico--check { flex: none; margin-top: var(--s-4); color: var(--primary); }
.oc-ico--shield { color: var(--nav-gold); }

/* ---------- star bar (muted base + gold overlay clipped to rating %) ---------- */
.oc-stars { position: relative; display: inline-block; font-family: var(--font-display);
  font-size: var(--fs-16); line-height: 1.15; white-space: nowrap; }
.oc-stars::before { content: "★★★★★"; color: var(--line); letter-spacing: .12em; }
.oc-stars__fill { position: absolute; inset: 0; width: var(--star-pct, 0%); overflow: hidden;
  color: var(--star); letter-spacing: .12em; }

/* ---------- HERO (same illustration bg + two-column grid as the home hero) ---------- */
.oc-hero { position: relative; width: 100%;
  padding-block: var(--s-96); }
/* hero content paints ABOVE the animated motif backdrop (.oseg-hhero, z-index:0) */
.oc-hero > .container { position: relative; z-index: 1; }
.oc-hero__copy { max-width: 55rem; text-align: center; margin: 0 auto; }
/* jump-nav lives in its own .oc-nav band below the hero (like .pv-nav / .sk-nav) — pull it up so the pill floats over the seam */
.oc-nav .oc-toc { margin-top: 0; top: calc(var(--s-32) * -1); }
.oc-hero__copy .lead { margin-block: var(--s-20) 0; }
.oc-hero h1 { margin: 0; }
.oc-hero .accent { color: var(--accent); }

/* ---------- TRUST BAND (dark panel under the hero) ---------- */
.oc-trust { padding-top: var(--s-48); padding-bottom: var(--s-32); }
.oc-trust__band { --tg: #57C99A; --tv: #A98FD8; --tgold: #E7B24E;
  background: var(--panel); color: var(--panel-ink); border-radius: var(--radius);
  border: 1px solid var(--line); padding: var(--s-32); box-shadow: var(--shadow); }
.oc-trust__row { display: flex; align-items: center; gap: var(--s-32); }
.oc-trust__main { display: flex; align-items: center; gap: var(--s-16); flex: 1 1 auto; min-width: 0; }
.oc-trust__icon { flex: none; display: grid; place-content: center; width: 3.5rem; height: 3.5rem;
  border-radius: var(--radius-s); background: rgba(255, 255, 255, .06);
  border: 1px solid rgba(255, 255, 255, .1); }
.oc-trust__icon .oc-ico { width: 26px; height: 26px; }
.oc-trust__h { margin: 0; font-family: var(--font-display); font-weight: 700; font-size: var(--fs-19); color: var(--panel-ink); }
.oc-trust__sub { margin: var(--s-2) 0 0; font-size: var(--fs-14); color: var(--panel-ink); opacity: 0.7; }
.oc-trust__stats { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; flex: none; }
.oc-trust__stats li { padding: 0 var(--s-32); text-align: center; border-left: 1px solid rgba(255, 255, 255, .15); }
.oc-trust__stats li:last-child { padding-right: 0; }
.oc-trust__stats strong { display: block; font-family: var(--font-display); font-weight: 800;
  font-size: var(--fs-28); line-height: 1; color: var(--tc, var(--panel-ink)); }
.oc-trust__stats .is-green  { --tc: var(--tg); }
.oc-trust__stats .is-violet { --tc: var(--tv); }
.oc-trust__stats .is-gold   { --tc: var(--tgold); }
.oc-trust__stats span { display: block; margin-top: var(--s-8); font-size: var(--fs-12);
  color: var(--panel-ink); opacity: 0.6; }
.oc-trust__ad { margin: var(--s-24) 0 0; padding-top: var(--s-24); text-align: center;
  border-top: 1px solid rgba(255, 255, 255, .1); font-size: var(--fs-12);
  color: var(--panel-ink); opacity: 0.7; }

/* Shared <dialog> entrance spring — reused by the /spielautomaten/ compare modal (.sk-modal) and the
   slot-review dialogs (.slr-duell, .slr-demodlg). CSS-only on [open] so a top-layer dialog isn't
   ejected from the top layer by JS transforms; back-out overshoot springs it up from below. */
@keyframes oc-pop-in { from { opacity: 0; transform: translateY(28px) scale(.97); } to { opacity: 1; transform: none; } }

/* ---------- jump nav (rounded pill bar + gliding "liquid" blob) ---------- */
/* anchor-target sections clear the sticky header on jump (direct #hash landings; JS scroll adds its own offset) */
.section[id] { scroll-margin-top: calc(var(--header-h, 82px) + var(--s-32)); }
.oc-toc { text-align: center; margin-top: var(--s-32); position: relative; top: var(--s-32); z-index: 1; }
.oc-toc__nav { position: relative; display: inline-flex; align-items: center;
  max-width: 100%; padding: var(--s-8); background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius-pill); box-shadow: var(--shadow);
  /* long TOCs (some ratgeber guides) don't fit ≤1359px → scroll the pills instead of overflowing
     the page. Self-activating (no scroll/bar when they fit). Scrollbar hidden cross-browser so it
     never clips the pill's rounded corners; the active pill is scrolled into view by casino.js. */
  overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.oc-toc__nav::-webkit-scrollbar { display: none; }
/* the sliding blob — position/size driven by casino.js; the two transition speeds differ so it
   stretches toward the target and settles (liquid feel). */
.oc-toc__pill { position: absolute; left: 0; top: 0; height: 0; opacity: 0; z-index: 0;
  background: var(--primary); border-radius: var(--radius-pill);
  transition: transform .42s cubic-bezier(.34, 1.56, .64, 1), width .55s cubic-bezier(.65, 0, .35, 1); }
.oc-toc__pill.is-ready { opacity: 1; }
.oc-toc__link { position: relative; z-index: 1; white-space: nowrap; padding: var(--s-12) var(--s-20);
  font-family: var(--font-display); font-weight: 700; font-size: var(--fs-14); color: var(--ink);
  border-radius: var(--radius-pill); transition: color .3s ease; }
/* text turns white on the link the blob currently sits under (JS toggles .is-current) */
.oc-toc__link.is-current, .oc-toc__link:focus-visible { color: var(--on-primary); }
@media (prefers-reduced-motion: reduce) { .oc-toc__pill { transition: none; } }

/* ---------- ranked: PODIUM (top 3) ---------- */
.oc-rank { padding-top: var(--s-32); }
.oc-podium { list-style: none; margin: var(--s-32) 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-24); }

.opcard { position: relative; display: flex; flex-direction: column; gap: var(--s-12);
  padding: var(--s-28) var(--s-24) var(--s-20); background: var(--surface);
  border: 1px solid var(--line); border-radius: var(--radius-m);
  transition: box-shadow .25s ease, transform .25s ease; }
.opcard:hover { box-shadow: var(--shadow-alt); transform: translateY(-0.25rem); }
/* #3 (bwin): only the rank badge is violet (no border accent) */
.opcard--violet .opcard__rank { background: var(--accent); color: var(--on-primary); }

.opcard__rank { position: absolute; top: 0; left: var(--s-24); transform: translateY(-50%);
  display: grid; place-content: center; width: 2.5rem; height: 2.5rem; padding: 0 var(--s-8);
  font-family: var(--font-display); font-weight: 800; font-size: var(--fs-16); color: var(--on-primary);
  background: var(--primary); border-radius: var(--radius-pill); }
.opcard--lead .opcard__rank { background: var(--nav-gold); color: #2E241D; }
.opcard__ribbon { position: absolute; top: 0; right: var(--s-24); transform: translateY(-50%);
  padding: var(--s-4) var(--s-16); font-size: var(--fs-12); font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; color: #2E241D; background: var(--nav-gold); border-radius: var(--radius-pill); }

.opcard__logo { display: grid; place-content: center; height: 5rem; margin-top: var(--s-8);
  border-radius: var(--radius-s); background: var(--panel); border: 1px solid var(--line); }
.opcard__logo img { width: 150px; height: 60px; object-fit: contain; }

.opcard__namerow { display: flex; align-items: center; justify-content: space-between; gap: var(--s-8); flex-wrap: wrap; }
.opcard__name { margin: 0; font-family: var(--font-display); font-size: var(--fs-19); font-weight: 700; }
.opcard__rateline { display: flex; align-items: center; gap: var(--s-8); }
.opcard__score { font-weight: 700; font-size: var(--fs-16); color: var(--ink); }
.opcard__score span { color: var(--sub); font-weight: 500; font-size: var(--fs-12); }

.opcard__ggl { display: inline-flex; align-items: center; gap: var(--s-8); margin: 0;
  font-size: var(--fs-12); font-weight: 600; color: var(--sub); }
/* bonus box tinted to each card's rank accent (card2/default = green, lead = gold, violet = accent) */
.opcard__bonus { margin: 0; padding: var(--s-16); text-align: center; font-family: var(--font-display);
  font-weight: 700; font-size: var(--fs-16); color: var(--ink);
  background: color-mix(in srgb, var(--primary) 20%, transparent);
  border: 1px solid color-mix(in srgb, var(--primary) 40%, transparent); border-radius: var(--radius-s); }
.opcard__bonus-fs { color: var(--primary); white-space: nowrap; }
.opcard--lead .opcard__bonus { background: color-mix(in srgb, var(--nav-gold) 20%, transparent);
  border-color: color-mix(in srgb, var(--nav-gold) 60%, transparent); }
.opcard--lead .opcard__bonus-fs { color: var(--nav-gold); }
.opcard--violet .opcard__bonus { background: color-mix(in srgb, var(--accent) 20%, transparent);
  border-color: color-mix(in srgb, var(--accent) 40%, transparent); }
.opcard--violet .opcard__bonus-fs { color: var(--accent); }

.opcard__stats { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-12); }
.opcard__stats li { display: flex; flex-direction: column; gap: var(--s-2); }
.opcard__stats span { font-size: var(--fs-12); text-transform: uppercase; letter-spacing: .05em; color: var(--sub); }
.opcard__stats strong { font-family: var(--font-display); font-size: var(--fs-16); color: var(--ink); }

.opcard__feats { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-8); }
.opcard__feats li { display: flex; align-items: flex-start; gap: var(--s-8); font-size: var(--fs-14); color: var(--ink); }

.opcard__pay { list-style: none; margin: 0; padding-top: var(--s-4); padding-left: 0; display: flex; flex-wrap: wrap; gap: var(--s-8); }

.opcard__cta { display: flex; flex-direction: column; gap: var(--s-8); margin-top: auto; padding-top: var(--s-8); }
.opcard__terms { margin: 0; font-size: var(--fs-10); color: var(--sub); text-align: center; }

/* ---------- ranked: LIST (ranks 4–10, flat comparison rows) ---------- */
.oc-list { list-style: none; margin: var(--s-24) 0 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-12); }

.oprow { position: relative; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-m);
  display: grid; align-items: center; gap: var(--s-12) var(--s-20); padding: var(--s-20) var(--s-24);
  grid-template-columns: 2rem 10.5rem 12rem 15rem auto 13rem;
  grid-template-areas:
    "rank logo id bonus rating cta"
    "terms terms terms terms terms terms";
  transition: box-shadow .25s ease, border-color .25s ease; }
.oc-list--pay .oprow { grid-template-columns: 2rem 10.5rem 12rem 15rem auto auto 13rem;
  grid-template-areas:
    "rank logo id bonus rating pay cta"
    "terms terms terms terms terms terms terms"; }
.oprow:hover { box-shadow: var(--shadow); }

/* .opcard__trace / .oprow__trace (hover gold perimeter-draw) removed per Martin. */

.oprow__rank { grid-area: rank; font-family: var(--font-display); font-weight: 800; font-size: var(--fs-16);
  color: var(--sub); text-align: center; }
.oprow__logo { grid-area: logo; display: grid; place-content: center; width: 10.5rem; height: 60px;
  background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius-s); padding: 0 var(--s-8); }
.oprow__logo img { width: 100%; height: 100%; object-fit: contain; }

.oprow__id { grid-area: id; display: flex; flex-direction: column; min-width: 0; }
.oprow__name { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-16); color: var(--ink); }
.oprow__tag { font-size: var(--fs-12); color: var(--sub); line-height: 1.4; }

.oprow__bonus { grid-area: bonus; display: flex; flex-direction: column; gap: 2px; }
.oprow__bonus-main { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-16); color: var(--ink); line-height: 1.25; }
.oprow__bonus-fs { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-14); color: var(--nav-gold); }

.oprow__rating { grid-area: rating; display: flex; flex-direction: column; align-items: flex-start; gap: var(--s-4); }
.oprow__badge { display: inline-block; background: var(--accent); color: var(--on-primary); font-family: var(--font-display); font-weight: 800;
  font-size: var(--fs-16); line-height: 1.15; padding: var(--s-4) var(--s-8); border-radius: var(--radius-xs); }

.oprow__pay { grid-area: pay; list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-8); }
.oprow__pay-more { flex: 0 0 100%; font-size: var(--fs-12); color: var(--sub); }

.oprow__cta { grid-area: cta; display: flex; flex-direction: column; align-items: stretch; gap: var(--s-12); text-align: center; }
.oprow__cta .btn { width: 100%; }
/* "Zum Test" is now a real button (.btn.btn--ghost.btn--sm, same as the top-3 opcards) — no bespoke link style. */

.oprow__terms { grid-area: terms; width: 100%; margin: 0; padding-top: var(--s-12); border-top: 1px solid var(--line);
  font-size: var(--fs-10); color: var(--sub); }

/* ---------- payment chips (placeholder text now → logos later) ---------- */
.oc-paychip { display: inline-flex; align-items: center; padding: var(--s-4) var(--s-12);
  font-size: var(--fs-12); font-weight: 600; color: var(--sub);
  background: var(--hero); border: 1px solid var(--line); border-radius: var(--radius-xs); }
.oc-paychip--lg { font-size: var(--fs-14); padding: var(--s-12) var(--s-20); color: var(--ink);
  background: var(--surface); border-radius: var(--radius-s); }

/* ---------- testkriterien ---------- */
.oc-crit { background: var(--hero); }
.oc-crit__grid { list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-16); }
.oc-crit__grid li { position: relative; background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius-m); padding: var(--s-24);
  transition: box-shadow .25s ease, transform .25s ease; }
.oc-crit__grid li:hover { box-shadow: var(--shadow); transform: translateY(-0.25rem); }
/* perimeter-trace hover (same as home Rechtslage cards; rx = card radius − 4px avoids the corner bug) */
.oc-crit__trace { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.oc-crit__trace rect { x: 0px; y: 0px; width: calc(100% - 0px); height: calc(100% - 0px); rx: var(--radius-s); ry: var(--radius-s);
  fill: none; stroke: var(--nav-gold); stroke-width: 1px; stroke-dasharray: 100; stroke-dashoffset: -100;
  transition: stroke-dashoffset 0.6s ease; }
.oc-crit__grid li:hover .oc-crit__trace rect { stroke-dashoffset: 0; }
@media (prefers-reduced-motion: reduce) { .oc-crit__trace rect { transition: none; } }
.oc-crit__n { display: block; font-family: var(--font-display); font-weight: 800; font-size: var(--fs-14);
  color: var(--nav-gold); margin-bottom: var(--s-4); }
.oc-crit__grid h3 { margin: 0 0 var(--s-12); font-size: var(--fs-20); }
.oc-crit__grid h3::after { content: ""; display: block; width: 3rem; height: 0.25rem; margin-top: var(--s-12);
  border-radius: var(--radius-pill);
  background: linear-gradient(90deg, var(--grad-1), var(--grad-2)); }
.oc-crit__grid p { margin: 0; font-size: var(--fs-16); color: var(--sub); line-height: var(--lh-lead); }
.oc-crit__note { margin: var(--s-16) 0 0; font-size: var(--fs-14); color: var(--sub); }
.oc-crit__note a { color: var(--accent); text-decoration: none; border-bottom: 1px solid transparent;
  transition: color .25s ease, border-color .25s ease; }
.oc-crit__note a:hover { color: var(--primary); border-bottom-color: currentColor; }

/* ---------- GGL-Lizenz & Recht ---------- */
.oc-legal { padding-bottom: var(--s-32); }
.oc-legal__grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: var(--s-48); align-items: start; }
.oc-legal__prose h2 { margin: var(--s-8) 0 var(--s-16); }
.oc-legal__prose p:not(.eyebrow) { color: var(--sub); line-height: var(--lh-lead); margin: 0 0 var(--s-16); }
.oc-legal__prose p:last-child { margin-bottom: 0; }
.oc-legal__prose strong { color: var(--ink); }
.oc-legal__updated { display: inline-flex; align-items: center; gap: var(--s-8); font-size: var(--fs-14);
  font-weight: 600; color: var(--sub); }

.oc-rules { padding: var(--s-24); background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius-m); transition: box-shadow .25s ease; }
.oc-rules:hover { box-shadow: var(--shadow); }
.oc-rules__h { margin: 0 0 var(--s-16); font-family: var(--font-display); font-weight: 700; font-size: var(--fs-16); }
.oc-rules ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-12); }
.oc-rules li { display: flex; flex-direction: column; padding-left: var(--s-16);
  border-left: 2px solid var(--nav-gold); }
.oc-rules li strong { font-family: var(--font-display); font-size: var(--fs-16); color: var(--ink); }
.oc-rules li span { font-size: var(--fs-14); color: var(--sub); }
.oc-rules__link { margin: var(--s-16) 0 0; }
/* animated underline + encoded arrow (same as home "Wie wir bewerten" scorecard link) */
.oc-rules__link a { position: relative; display: inline-block; padding-right: 1.5rem;
  font-size: var(--fs-14); font-weight: 700; color: var(--accent); text-decoration: none; }
.oc-rules__link a::after { content: '\2192'; position: absolute; top: 0; right: 0; width: 1rem; height: auto; font: inherit; }
.oc-rules__link a::before { content: ''; position: absolute; bottom: 0; right: 1.5rem; left: 0; height: 2px;
  background-color: currentColor; transform: scaleX(0); transform-origin: right center; transition: transform 0.3s ease; }
.oc-rules__link a:hover::before { transform-origin: left center; transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) { .oc-rules__link a::before { transition: none; } }

/* ---------- warning: casinos ohne deutsche Lizenz ---------- */
.oc-warn { padding-block: var(--s-32); }
.oc-warn__box { padding: var(--s-32); background: var(--hero);
  border: 1px solid var(--line); border-radius: var(--radius-m);
  border-inline-start: 4px solid var(--nav-gold); }
.oc-warn__h { margin: 0 0 var(--s-16); font-size: var(--fs-24); }
.oc-warn__box p { margin: 0 0 var(--s-16); color: var(--sub); }
.oc-warn__box p:last-child { margin-bottom: 0; }
.oc-warn__box strong { color: var(--ink); }

/* ---------- Zahlungsmethoden (cards + "Gut zu wissen" dark panel) ---------- */
.oc-pay { padding-top: var(--s-32); }
.oc-pay__layout { display: grid; grid-template-columns: 1.5fr 1fr; gap: var(--s-24) var(--s-48); }
.oc-pay__left .section-head { margin-bottom: var(--s-24); }
.oc-pay__cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-16); }
.oc-paycard { position: relative; display: flex; flex-direction: column; align-items: center; gap: var(--s-12);
  padding: var(--s-20); background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius-m); transition: box-shadow .25s ease, transform .25s ease; }
.oc-paycard:hover { box-shadow: var(--shadow-alt); transform: translateY(-0.25rem); }
/* perimeter-trace hover (same as Testkriterien cards; rx = card radius − 4px) */
.oc-paycard__trace { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.oc-paycard__trace rect { x: 0px; y: 0px; width: calc(100% - 0px); height: calc(100% - 0px); rx: var(--radius-s); ry: var(--radius-s);
  fill: none; stroke: var(--nav-gold); stroke-width: 1px; stroke-dasharray: 100; stroke-dashoffset: -100;
  transition: stroke-dashoffset 0.6s ease; }
.oc-paycard:hover .oc-paycard__trace rect { stroke-dashoffset: 0; }
@media (prefers-reduced-motion: reduce) { .oc-paycard__trace rect { transition: none; } }
.oc-paybadge { display: grid; place-content: center; min-width: 4rem; height: 2.75rem; padding: 0 var(--s-12);
  font-family: var(--font-display); font-weight: 800; font-size: var(--fs-14); letter-spacing: .03em;
  border-radius: var(--radius-s); color: #fff; }
.oc-paybadge--visa { background: #1A1F71; }
.oc-paybadge--mc   { background: #EB001B; }
.oc-paybadge--tr   { background: #34C77B; color: #08321f; }
.oc-paybadge--kl   { background: #FFB3C7; color: #2E241D; }
.oc-paybadge--psc  { background: #0AA0D9; }
.oc-paybadge--bank { background: #2E241D; }
.oc-paybadge--pp   { background: #003087; }
.oc-paycard__name { font-size: var(--fs-14); font-weight: 600; color: var(--ink); }

.oc-pay__know { background: var(--panel); color: var(--panel-ink); border-radius: var(--radius-m); padding: var(--s-32);
  display: flex; flex-direction: column; gap: var(--s-24); }
.oc-pay__know-h { margin: 0; color: var(--panel-ink); }
.oc-pay__know > ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-16); }
.oc-pay__know > ul > li { display: flex; gap: var(--s-12); }
.oc-pay__ico { flex: none; color: var(--nav-gold); padding-top: 3px; }
.oc-pay__ico .oc-ico { width: var(--s-20); height: var(--s-20); color: var(--nav-gold); }
.oc-pay__know strong { display: block; font-family: var(--font-display); font-weight: 700; font-size: var(--fs-16); color: var(--panel-ink); }
.oc-pay__know li > div > span { display: block; margin-top: var(--s-2); font-size: var(--fs-14); line-height: var(--lh-lead);
  color: var(--panel-ink); opacity: .7; }
.oc-pay__know-link { margin: auto 0 0; }
.oc-pay__know-link a { position: relative; display: inline-block; padding-right: 1.5rem;
  font-weight: 700; font-size: var(--fs-14); color: var(--nav-gold); text-decoration: none; }
.oc-pay__know-link a::after { content: '\2192'; position: absolute; top: 0; right: 0; width: 1rem; font: inherit; }
.oc-pay__know-link a::before { content: ''; position: absolute; bottom: 0; right: 1.5rem; left: 0; height: 2px;
  background-color: currentColor; transform: scaleX(0); transform-origin: right center; transition: transform 0.3s ease; }
.oc-pay__know-link a:hover::before { transform-origin: left center; transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) { .oc-pay__know-link a::before { transition: none; } }

/* ---------- 8 Tipps (dark panel, both themes via --panel) ---------- */
.oc-tips { background: var(--panel); color: var(--panel-ink); }
.oc-tips__eyebrow { color: var(--nav-gold); }
.oc-tips__h { color: var(--panel-ink); margin: var(--s-8) 0 var(--s-32); }
.oc-tips__list { margin: 0; padding: 0; list-style: none; counter-reset: tip;
  display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--s-24); }
.oc-tips__list li { counter-increment: tip; position: relative; padding-left: var(--s-48); }
.oc-tips__list li::before { content: counter(tip); position: absolute; left: 0; top: 0;
  display: grid; place-content: center; width: var(--s-32); height: var(--s-32); font-family: var(--font-display);
  font-weight: 700; font-size: var(--fs-16); color: var(--nav-gold);
  border: 1px solid var(--nav-gold); border-radius: var(--radius-pill); }
.oc-tips__list h3 { margin: 0 0 var(--s-8); font-size: var(--fs-20); color: inherit; }
.oc-tips__list p { margin: 0; font-size: var(--fs-16); color: inherit; opacity: 0.7; line-height: var(--lh-lead); }

/* ---------- Responsible Gambling + weiterlesen ---------- */
.oc-rg__grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: var(--s-48); align-items: start; }
/* prevent 1fr grid tracks blowing out past the container on min-content children */
.oc-legal__grid > *, .oc-rg__grid > *, .oc-crit__grid > li, .oc-tips__list > li { min-width: 0; }
.oc-rg__main h2 { margin: var(--s-8) 0 var(--s-16); }
.oc-rg__lead { color: var(--sub); max-width: 40rem; margin: 0 0 var(--s-24); }

/* hotline card (accent left-border) */
.oc-rg__card { display: flex; align-items: center; flex-wrap: wrap; gap: var(--s-24) var(--s-32);
  padding: var(--s-24) var(--s-32); background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius-m); border-inline-start: 4px solid var(--accent); }
.oc-rg__hotline { flex: 1 1 12rem; min-width: 0; }
.oc-rg__hotline-label { margin: 0; font-size: var(--fs-12); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--sub); }
.oc-rg__hotline-num { margin: var(--s-4) 0 0; font-family: var(--font-display); font-weight: 800; font-size: var(--fs-32); line-height: 1.15; color: var(--ink); }
.oc-rg__hotline-sub { margin: 0; font-size: var(--fs-14); color: var(--sub); }
.oc-rg__badges { list-style: none; margin: 0; padding: 0; display: flex; gap: var(--s-24); flex: none; }
.oc-rg__badges li { padding-left: var(--s-24); border-left: 1px solid var(--line); }
.oc-rg__badges strong { display: block; font-family: var(--font-display); font-weight: 800; font-size: var(--fs-20); line-height: 1.15; color: var(--ink); }
.oc-rg__badges span { font-size: var(--fs-14); color: var(--sub); }

/* "Mehr zum …" link — green, animated underline + encoded arrow */
.oc-rg__more { margin: var(--s-24) 0 0; }
.oc-rg__more a { position: relative; display: inline-block; padding-right: 1.5rem;
  font-weight: 700; font-size: var(--fs-16); color: var(--primary); text-decoration: none; }
.oc-rg__more a::after { content: '\2192'; position: absolute; top: 0; right: 0; width: 1rem; font: inherit; }
.oc-rg__more a::before { content: ''; position: absolute; bottom: 0; right: 1.5rem; left: 0; height: 2px;
  background-color: currentColor; transform: scaleX(0); transform-origin: right center; transition: transform 0.3s ease; }
.oc-rg__more a:hover::before { transform-origin: left center; transform: scaleX(1); }

/* weiterlesen panel + link cards */
.oc-rg__links { padding: var(--s-24); background: var(--hero); border: 1px solid var(--line); border-radius: var(--radius-m); }
.oc-rg__links-h { margin: 0 0 var(--s-16); font-family: var(--font-display); font-weight: 700; font-size: var(--fs-14);
  text-transform: uppercase; letter-spacing: .06em; color: var(--sub); }
.oc-rg__links ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-12); }
.oc-rg__links a { display: flex; align-items: center; justify-content: space-between; gap: var(--s-16);
  padding: var(--s-16) var(--s-20); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-s);
  font-weight: 600; color: var(--ink); transition: border-color .2s ease, box-shadow .2s ease; }
.oc-rg__links a:hover { border-color: var(--nav-gold); box-shadow: var(--shadow); }
.oc-rg__links a .oc-arrow { flex: none; color: var(--nav-gold); transition: transform .2s ease; }
.oc-rg__links a:hover .oc-arrow { transform: translateX(0.25rem); }
@media (prefers-reduced-motion: reduce) { .oc-rg__more a::before, .oc-rg__links a .oc-arrow { transition: none; } }

/* ---------- responsive ---------- */
/* Laptop (1024–1359px): keep the ranked comparison table but tighten its columns so it fits.
   The full desktop 7-col layout needs ~1180px+ (the .oc container caps at 72rem/1152px), so below
   that it overflowed; here we shrink logo/name/bonus/CTA + gaps. Stacks below at ≤1023. */
@media (min-width: 64rem) and (max-width: 84.9375rem) {
  .oc-list--pay .oprow { grid-template-columns: 2rem 7rem 7rem 9rem auto auto 10rem; }
  .oprow__logo { width: 7rem; }
  .oprow { gap: var(--s-12) var(--s-16); padding: var(--s-20); }
  .opcard { padding: var(--s-28) var(--s-20) var(--s-20); }
}
@media (max-width: 63.9375rem) {
  .oc-hero { padding-top: var(--s-64); }
  .oc-list { margin: var(--s-16) 0 0; }
  .oprow, .oc-list--pay .oprow {
    grid-template-columns: 2.5rem 10.5rem 1fr;
    grid-template-areas:
      "rank logo id"
      "bonus bonus rating"
      "cta cta cta"
      "terms terms terms"; }
  .oc-list--pay .oprow {
    grid-template-areas:
      "rank logo id"
      "bonus bonus rating"
      "pay pay pay"
      "cta cta cta"
      "terms terms terms"; }
  .oprow__logo { width: 100%; }
  .oprow__rating { align-items: flex-end; }
  .oprow__cta { flex-direction: row; }
  .oprow__cta .btn { width: auto; flex: 1; }
  .oc-trust__row { flex-direction: column; align-items: flex-start; gap: var(--s-20); }
  .oc-trust__stats { width: 100%; justify-content: space-between; }
  .oc-trust__stats li { padding: 0 var(--s-12); flex: 1; }
  .oc-trust__stats li:first-child { border-left: 0; padding-left: 0; text-align: left; }
  .oc-podium { grid-template-columns: minmax(0, 1fr); gap: var(--s-32); }
  .oc-crit__grid { grid-template-columns: repeat(2, 1fr); }
  .oc-legal__grid, .oc-rg__grid, .oc-pay__layout { grid-template-columns: 1fr; gap: var(--s-32); }
  .oc-tips__list { grid-template-columns: 1fr; }
}
@media (max-width: 47.9375rem) {
  .oc-pay__cards { grid-template-columns: repeat(2, 1fr); }
  .oc-crit__grid { grid-template-columns: 1fr; }
  /* trust band: fully stacked + centred (main column, stats column) */
  .oc-trust__row { align-items: center; gap: var(--s-24); }
  .oc-trust__main { flex-direction: column; align-items: center; width: 100%; text-align: center; }
  .oc-trust__stats { flex-direction: column; align-items: center; justify-content: center; gap: var(--s-16); }
  .oc-trust__stats li { padding: 0; border: none; }
  .oc-trust__stats li:first-child { text-align: center; padding-right: 0; }
  /* 19a comparison-card layout on PHONE: rating up in the header (badge over stars, right), bonus a
     full-width gold band (centred), then chips, then STACKED full-width CTAs (green + ghost, like top-3). */
  .oc-list--pay .oprow {
    grid-template-columns: 2rem 6rem 1fr auto;
    grid-template-areas:
      "rank  logo  id    rating"
      "bonus bonus bonus bonus"
      "pay   pay   pay   pay"
      "cta   cta   cta   cta"
      "terms terms terms terms";
    gap: var(--s-12) var(--s-16);
    align-items: center; }
  .oc-list--pay .oprow__logo { width: 100%; }
  .oc-list--pay .oprow__rating { flex-direction: column; align-items: flex-end;
    justify-self: end; gap: var(--s-4); }
  .oc-list--pay .oprow__bonus {
    flex-direction: column; align-items: center; text-align: center; gap: var(--s-4);
    background: color-mix(in srgb, var(--nav-gold) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--nav-gold) 40%, transparent);
    border-radius: var(--radius-m); padding: var(--s-16) var(--s-20); }
  .oprow__bonus-fs { font-size: var(--fs-16); line-height: 1.25; }
  .oc-list--pay .oprow__cta { flex-direction: column; align-items: stretch; gap: var(--s-8); }
  .oc-list--pay .oprow__cta .btn { width: 100%; flex: none; }
  .oprow__pay-more { flex: 1; }
  .oprow__terms { text-align: center; }
  .oc-warn__box { padding: var(--s-20); }
}

/* ── 19a "comparison-card" layout for the #4–10 rows — TABLET ONLY (768–1023) ──────────────
   Prototype (desktop ≥1024 + phone ≤767 untouched). Reuses the existing .oprow elements, no
   markup change: rating rides up into the header (stars + badge, right); bonus becomes a tinted
   band sitting beside the payment chips; the two CTAs become equal-width buttons (Zum Test →
   outlined). Placed after the ≤63.9375 + ≤47.9375 blocks so it wins in the 768–1023 range only. */
@media (min-width: 48rem) and (max-width: 63.9375rem) {
  .oc-list--pay .oprow {
    grid-template-columns: 2.5rem 8rem 1fr auto;
    grid-template-areas:
      "rank  logo  id     rating"
      "bonus bonus bonus  pay"
      "cta   cta   cta    cta"
      "terms terms terms  terms";
    gap: var(--s-16) var(--s-20);
    align-items: center;
  }
  .oc-list--pay .oprow__logo { width: 8rem; }
  /* rating up in the header: stars then badge, right-aligned (DOM is badge→stars, so row-reverse) */
  .oc-list--pay .oprow__rating { flex-direction: row-reverse; align-items: center;
    justify-content: flex-end; justify-self: end; gap: var(--s-8); }
  /* bonus → tinted band beside the chips */
  .oc-list--pay .oprow__bonus {
    flex-direction: row; align-items: baseline; flex-wrap: wrap; gap: var(--s-4) var(--s-8);
    /* gold tint to match the #1 podium card's bonus (.opcard--lead) — harmonises with the gold FS text */
    background: color-mix(in srgb, var(--nav-gold) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--nav-gold) 40%, transparent);
    border-radius: var(--radius-m); padding: var(--s-16) var(--s-20); }
  .oprow__bonus-fs { font-size: var(--fs-16); line-height: 1.25; }
  .oc-list--pay .oprow__pay { align-content: center; gap: var(--s-4) var(--s-8); }
  /* two equal CTA buttons side by side (both .btn: primary green + ghost violet, like the top-3 opcards) */
  .oc-list--pay .oprow__cta { flex-direction: row; align-items: stretch; gap: var(--s-12); }
  .oc-list--pay .oprow__cta .btn { flex: 1; }
}

/* ─── slim RG note — SHARED component (provider archive + ratgeber-guide; both load casino.css) ─── */
.rgg-rgnote {
  background: var(--footer-bg);
  padding-block: var(--s-32) var(--s-32);
}
/* animated top line, same subtle light-on-dark as the footer — consistent seam above this pre-footer band */
.rgg-rgnote.anim-line-top::before { background: rgba(255, 255, 255, .1); }
.rgg-rgnote__band {
  padding: var(--s-16) var(--s-32);
  background: var(--hero);
  border: 1px solid var(--line);
  border-radius: var(--radius-m);
}
.rgg-rgnote__band p { margin: 0; color: var(--ink); }
.rgg-rgnote__band a { color: var(--accent); transition: color 0.3s ease; }
.rgg-rgnote__band a:hover { color: var(--primary); }

/* Responsive fixes 2026-07-16 — laptop↓ (≤1359px) */
@media (max-width: 84.9375rem) {
  .oc-rg__hotline { flex: 0 0 100%; }
  .oc-rg__badges li:first-child { padding-left: 0; border-left: 0; }
  .rgg-rgnote__band { padding: var(--s-16) var(--s-24); }
}

/* ── 19a table, narrowest phones (≤460px) ──────────────────────────────────
   Header row (rank · logo · id · rating) gets too cramped. Reflow to two header
   rows: row 1 = the logo, TRULY centred across the full card width; row 2 = casino
   name/slots (left) + rating (right). The rank (#N) is pulled OUT of the grid and
   pinned to the top-left corner so it no longer offsets the logo's centring.
   Placed last so it wins over the ≤767 phone block. */
@media (max-width: 28.75rem) {
  .oc-list--pay .oprow {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "logo  logo"
      "id    rating"
      "bonus bonus"
      "pay   pay"
      "cta   cta"
      "terms terms"; }
  .oc-list--pay .oprow__rank { position: absolute; top: var(--s-12); left: var(--s-12); margin: 0; }
  .oc-list--pay .oprow__logo { width: 10.5rem; max-width: 100%; justify-self: center; }
  /* RG hilfe card — tighten padding + badge spacing on the narrowest phones */
  .oc-rg__card { padding: var(--s-24); }
  .oc-rg__badges { gap: var(--s-16); }
  .oc-rg__badges li:not(:first-child) { padding-left: var(--s-16); }
  .oc-rg__more a { font-size: var(--fs-14); }
  .oc-rg__links a { line-height: 1.25; }
  .oc-rg__hotline-num { font-size: var(--fs-28); }
}
