/* 2HC design system (FIX_PLAN §4.1 / Appendix B).
   Injected as a BASE layer before the page's own CSS so every site looks
   intentional by default. Brand colors are overridden per project by the
   pipeline (the :root block below is replaced with the brand palette). */
:root{
  /* Brand colors — overridden per project */
  --color-primary:   #00ff66;
  --color-accent:    #00d15e;
  --color-bg:        #1f2528;
  --color-bg-2:      #101619;
  --color-text:      #ffffff;
  --color-muted:     #9fb0ab;
  --color-cta:       #00d15e;
  --color-cta-hover: #00c24f;

  /* Spacing scale (8px base) */
  --s-1: .25rem; --s-2: .5rem; --s-3: .75rem; --s-4: 1rem;
  --s-6: 1.5rem; --s-8: 2rem; --s-12: 3rem; --s-16: 4rem; --s-24: 6rem;

  /* Radii */
  --r-sm: 8px; --r-md: 14px; --r-lg: 22px; --r-pill: 999px;

  /* Elevation */
  --shadow-1: 0 1px 2px rgba(0,0,0,.4);
  --shadow-2: 0 8px 24px rgba(0,0,0,.45);
  --shadow-glow: 0 0 0 1px rgba(0,255,102,.25), 0 8px 30px rgba(0,255,102,.25);

  /* Layout + type */
  --container: 1180px;
  --section-y: clamp(3rem, 7vw, 6rem);
  --fs-h1: clamp(2.2rem, 5vw, 3.4rem);
  --fs-h2: clamp(1.6rem, 3.5vw, 2.3rem);
  --fs-body: 1.0625rem;
  --lh-body: 1.65;
}*,*::before,*::after{ box-sizing: border-box; }body,h1,h2,h3,p,ul,ol,figure,blockquote{ margin: 0; padding: 0; }body{
  background: radial-gradient(1200px 600px at 50% -10%, #243033 0%, var(--color-bg) 40%, var(--color-bg-2) 100%);
  color: var(--color-text);
  font-family: Inter, system-ui, sans-serif;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
}.xab29-container{ width: min(100% - 2rem, var(--container)); margin-inline: auto; }section{ padding-block: var(--section-y); }section + section{ padding-block-start: 0; }h1{ font-size: var(--fs-h1); line-height: 1.1; font-weight: 800; letter-spacing: -.02em; }h2{ font-size: var(--fs-h2); line-height: 1.15; font-weight: 700; margin-bottom: var(--s-6); }p{ color: var(--color-text); max-width: 68ch; }/* CTA button with glow */
.xab29-btn{
  display: inline-flex; align-items: center; gap: .5rem;
  padding: .85rem 1.6rem; border-radius: var(--r-pill);
  font-weight: 700; text-decoration: none;
  background: linear-gradient(180deg, var(--color-primary), var(--color-cta));
  color: #06210f; box-shadow: var(--shadow-glow);
  transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}.xab29-btn:hover{ transform: translateY(-2px); filter: brightness(1.05);
  box-shadow: 0 0 0 1px rgba(0,255,102,.4), 0 12px 38px rgba(0,255,102,.35); }.xab29-btn:focus-visible{ outline: 3px solid var(--color-primary); outline-offset: 3px; }/* Game card — real image,gradient ONLY as overlay{
  position: relative; aspect-ratio: 3/4; border-radius: var(--r-md);
  overflow: hidden; box-shadow: var(--shadow-2);
}/* Tables (bonus terms,payments,limits) */
table{ width: 100%; max-width: 100%; border-collapse: collapse; border-radius: var(--r-md); overflow: hidden; }caption{ text-align: left; font-weight: 700; margin-bottom: var(--s-3); }th,td{ padding: .85rem 1rem; text-align: left; border-bottom: 1px solid rgba(255,255,255,.08); overflow-wrap: anywhere; }thead th{ background: rgba(255,255,255,.05); }@media (prefers-reduced-motion: reduce){*,*::before,*::after{ animation: none !important; transition: none !important; }}@media (prefers-reduced-motion: no-preference){html{ scroll-behavior: smooth; }}

/* ── Content panels over image-backed sections ──────────────────────────────
   The CWV step injects a fal.ai background-image onto #bonus/#hero. fal casino
   images often bake the word "BONUS" into the picture, so a data panel sitting
   directly on that section lets the art bleed through behind the terms table and
   obscure values (vision-gate HOLD, Basswin 2026-06-16). Give content panels an
   OPAQUE surface so the table is always readable. */
.bonus-card,.steps,.step{
  background: var(--color-bg-2, #101619);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: var(--r-md, 14px);
  padding: clamp(1.1rem, 3vw, 1.9rem);
  box-shadow: var(--shadow-2, 0 8px 24px rgba(0,0,0,.45));
  position: relative; z-index: 1;
}
.bonus-card table{ background: transparent; }

/* ── FAQ accordion ───────────────────────────────────────────────────────────
   Bare <details> render as broken/empty with dead whitespace (vision). Give
   items a surface, padding and a +/- affordance so even a collapsed FAQ reads
   as an intentional accordion. */
.xab29-faq{ display: flex; flex-direction: column; gap: .6rem; max-width: 820px; margin-inline: auto; }
.xab29-faq-item{
  background: color-mix(in srgb, var(--color-bg-2, #101619) 80%, transparent);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: var(--r-sm, 8px);
  padding: .9rem 1.1rem;
}
.xab29-faq-item>summary{
  cursor: pointer; font-weight: 600; list-style: none;
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  color: var(--color-text);
}
.xab29-faq-item>summary::-webkit-details-marker{ display: none; }
.xab29-faq-item>summary::after{ content: "+"; font-size: 1.3em; line-height: 1; opacity: .7; }
.xab29-faq-item[open]>summary::after{ content: "\2013"; }
.xab29-faq-item>*:not(summary){ margin-top: .7rem; }

/* ── Image-free build helpers (text logo / text payment pills / text game tiles)
   These give an intentional look when the project is generated with no pictures
   (logo as text, favicon only). Harmless when images ARE used — themes/layout
   CSS override the .xab29-game-card gradient. */
.brand-mark--text{ font-weight: 800; font-size: 1.45rem; letter-spacing: -.02em;
  color: var(--color-text); text-decoration: none; display: inline-flex; align-items: center; }
.brand-mark--text.xab29-brand-mark--footer{ font-size: 1.05rem; }
.pay,.payment-pill{ display: inline-flex; align-items: center; gap: .3rem;
  padding: .3rem .7rem; border-radius: var(--r-sm, 8px); border: 1px solid rgba(255,255,255,.18);
  background: rgba(255,255,255,.06); font-size: .8rem; font-weight: 600; color: var(--color-text); }
.xab29-game-card:not(:has(img)){ display: flex; align-items: center; justify-content: center;
  text-align: center; min-height: 90px; padding: .75rem; border-radius: var(--r-md, 14px);
  background: linear-gradient(135deg,
    color-mix(in srgb, var(--color-primary, #4f46e5) 30%, #0b0b14),
    color-mix(in srgb, var(--color-accent, #a855f7) 24%, #0b0b14));
  border: 1px solid rgba(255,255,255,.10); font-weight: 700; color: var(--color-text); }
.game-name{ display: flex; align-items: center; justify-content: center; text-align: center;
  padding: .5rem; font-weight: 600; color: var(--color-text); }
/* Games grid — responsive columns. design-system OWNS this so it applies in
   NO-IMAGES mode too: generate_images only injects the grid on the image path,
   so the phased writer's <div class="games-grid"> was otherwise unstyled →
   full-width stacked bars that read as "broken artwork" (vision-gate 2026-06). */
.xab29-games-grid,.game-grid{ display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--s-4, 1rem); }
/* ── Review-page components (rendered by _review_blocks) ─────────────────────
   Every one is built from the palette variables, so all 15 themes carry it. A
   review page is components, not prose: lists, tables, cards and an accordion
   are what make its structure independent of how much text there is. */
.xab29-hero-sub{ margin-top: var(--s-4, 1rem); font-size: 1.15rem; opacity: .92; }
.xab29-key-points{ list-style: none; padding: 0; margin-top: var(--s-4, 1rem);
  display: flex; flex-wrap: wrap; gap: .5rem .6rem; }
.xab29-key-points li{ padding: .35rem .85rem; border-radius: var(--r-pill, 999px);
  border: 1px solid var(--line, rgba(255,255,255,.18)); background: rgba(255,255,255,.06); font-size: .92rem; }
.xab29-table-wrap{ overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: var(--r-md, 14px); }
.xab29-table-wrap table{ min-width: 540px; }
.xab29-compare-table th:first-child,.xab29-compare-table td:first-child{ white-space: nowrap; font-weight: 600; }
/* CTA column — the last cell of every comparison row. `width:1%` makes the
   column shrink to the button, so it cannot take space from the fact columns
   (it took 292px of a 1060px table and squeezed "Licenca" to 91px, where the
   base `overflow-wrap:anywhere` — there for long licence numbers — split the
   HEADING mid-word as "LICENC/A"). A column LABEL is a short word and must
   never break; a long licence VALUE in a `td` still wraps as before. */
.xab29-compare-table th{ overflow-wrap: normal; }
.xab29-compare-table .xab29-cta-cell,.xab29-compare-table th:last-child{ width: 1%; white-space: nowrap; text-align: center; }
.xab29-btn-sm{ padding: .45rem 1rem; font-size: .86rem; }
.xab29-compare-table .xab29-cta-cell .xab29-btn{ display: inline-block; width: 100%; min-width: 7.5rem; text-align: center; }
.xab29-op-cards{ display: grid; gap: var(--s-6, 1.5rem);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.xab29-op-card,.pick{ background: var(--color-bg-2, #101619); border: 1px solid var(--line, rgba(255,255,255,.12));
  border-radius: var(--r-md, 14px); padding: clamp(1.1rem, 3vw, 1.7rem); }
.xab29-op-card{ display: flex; flex-direction: column; gap: .9rem; }
.xab29-op-card p,.pick p{ max-width: none; }
.xab29-op-card h3,.pick h3{ font-size: 1.3rem; line-height: 1.2; }
.xab29-op-card .xab29-btn{ align-self: flex-start; margin-top: auto; }
/* One compared operator's own logo, next to its name in a card/table/pick
   row (see _review_blocks.py's op-logo-slot marker + _gi_review.py, which
   fills or drops it once the file exists on disk). Base rule, not per-skin —
   works on all 4 skins without an override. */
.xab29-op-logo{ height: 1.5em; width: auto; max-width: 6.5rem; vertical-align: -0.3em;
  margin-inline-end: .5em; object-fit: contain; }
.op-logo-slot:empty{ display: none; }
.xab29-facts{ list-style: none; padding: 0; display: grid; gap: .5rem; }
.xab29-facts li{ display: grid; grid-template-columns: minmax(6.5rem, 30%) 1fr; gap: .1rem .8rem; }
.xab29-facts li span{ font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; opacity: .7; }
@media (max-width: 480px){ .xab29-facts li{ grid-template-columns: 1fr; } }
.xab29-pros-cons,.xab29-pros,.xab29-cons{ display: grid; gap: .35rem; }
.xab29-pros,.xab29-cons{ list-style: none; padding: 0; }
.xab29-pros li,.xab29-cons li{ position: relative; padding-left: 1.5rem; }
.xab29-pros li::before,.xab29-cons li::before{ position: absolute; left: 0; font-weight: 700; }
.xab29-pros li::before{ content: "+"; color: var(--color-primary, #0a0); }
.xab29-cons li::before{ content: "\2212"; opacity: .7; }
.pick-grid{ display: grid; gap: var(--s-4, 1rem);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
/* Keyword topics (_review_blocks.render_topic): an intro, then points as a
   two-part list — a bold lead-in and its sentence. A list by construction, so
   eight topics cannot become a paragraph wall. */
.xab29-topic-intro{ max-width: 70ch; }
.xab29-topic-points{ list-style: none; padding: 0; display: grid; gap: .8rem;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.xab29-topic-points li{ padding: .9rem 1rem; border: 1px solid var(--line, rgba(255,255,255,.12));
  border-radius: var(--r-md, 12px); background: var(--color-bg-2, transparent); }
.xab29-topic-points li strong{ display: block; margin-bottom: .25rem; }
/* A topic's data table (one per page, _review_blocks.TABLE_KINDS). It borrows
   the comparison table's look but not its CTA column rules: its last column is
   prose ("what to check"), which `width:1%; nowrap` would squeeze into one
   endless line. */
.xab29-topic-table-wrap{ margin: var(--s-4, 1rem) 0; }
.xab29-topic-table th:last-child{ width: auto; white-space: normal; text-align: left; }
.xab29-topic-table th:first-child,.xab29-topic-table td:first-child{ white-space: normal; min-width: 7.5rem; }
.xab29-criteria{ list-style: none; padding: 0; counter-reset: crit; display: grid; gap: 1rem; }
.xab29-criteria li{ counter-increment: crit; position: relative; padding-left: 3rem; }
.xab29-criteria li::before{ content: counter(crit); position: absolute; left: 0; top: .1rem;
  width: 2rem; height: 2rem; display: grid; place-items: center; border-radius: 50%;
  font-weight: 700; background: var(--color-primary, #0a0); color: #06210f; }
.xab29-criteria li strong{ display: block; }
.xab29-checklist{ list-style: none; padding: 0; display: grid; gap: .55rem; }
.xab29-checklist li{ position: relative; padding-left: 1.8rem; }
.xab29-checklist li::before{ content: "\2713"; position: absolute; left: 0; font-weight: 700;
  color: var(--color-primary, #0a0); }
.xab29-glossary{ display: grid; gap: .9rem; margin: 0; }
.xab29-glossary dt{ font-weight: 700; }
.xab29-glossary dd{ margin: .15rem 0 0; opacity: .88; }
.xab29-container > h3{ margin: 1.6rem 0 .6rem; }
.xab29-container > h3:first-child{ margin-top: 0; }

/* Keyword-topic pictures (_gi_review.apply_topic_figures): one under each
   topic's intro. Capped near the reading column, fixed 16:9 box so the page does
   not shift while a lazy image arrives. */
.xab29-topic-figure{ margin: var(--s-4, 1rem) 0 var(--s-5, 1.25rem); max-width: 860px; }
.xab29-topic-figure img{ display: block; width: 100%; height: auto; aspect-ratio: 16 / 9;
  object-fit: cover; border-radius: var(--r-md, 14px); }

/* ── page-specific CSS ── */
:root {
  --color-primary: #0066cc;
  --color-accent: #ff9900;
  --color-bg: #1a1a2e;
  --color-bg-2: #0b0b1f;
  --color-text: #ffffff;
  --color-secondary: #cccccc;
  --color-cta: #985900;
  --color-cta-hover: #a25d00;
}

.hero-ctas > .xab29-btn { margin: .3rem .35rem; }

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body,'Inter',system-ui,sans-serif);background:linear-gradient(160deg,var(--color-bg) 0%,var(--color-bg-2) 100%);color:var(--color-text);line-height:1.6;font-size:16px;min-height:100vh}img{max-width:100%;display:block}a{color:var(--color-accent);text-decoration:none}h1,h2,h3{line-height:1.15;font-weight:800}h1{font-size:clamp(1.9rem,4.5vw,3.2rem)}h2{font-size:clamp(1.4rem,3vw,2rem);margin-bottom:.75em}h3{font-size:1.1rem}p{margin-bottom:1em;color:var(--color-text)}.xab29-container{max-width:1120px;margin:0 auto;padding:0 20px}.xab29-site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--color-bg) 96%,#000);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.08)}.xab29-site-header .xab29-container{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px}.xab29-brand-mark{display:flex;align-items:center;gap:10px;min-height:38px;font-weight:800;white-space:nowrap}.xab29-brand-mark img{height:36px;width:auto;max-width:150px;object-fit:contain}.xab29-nav{display:flex;gap:22px;align-items:center;flex-wrap:wrap}.xab29-nav a{color:var(--color-text);font-weight:600;font-size:.95rem;opacity:.85}.xab29-nav a:hover{opacity:1;color:var(--color-accent)}.xab29-btn{display:inline-block;padding:13px 28px;border-radius:10px;font-weight:700;font-size:1rem;text-align:center;transition:transform .15s,box-shadow .15s;border:0;cursor:pointer}.xab29-btn:hover{transform:translateY(-2px)}.xab29-btn-primary{background:linear-gradient(135deg,var(--color-cta),var(--color-cta-hover));color:#fff;box-shadow:0 6px 22px color-mix(in srgb,var(--color-cta) 45%,transparent)}.xab29-hero{padding:72px 0 56px;text-align:center;position:relative}.xab29-hero .xab29-container{display:flex;flex-direction:column;align-items:center;gap:18px}table{width:100%;border-collapse:collapse;margin:18px 0;font-size:.95rem}th,td{padding:12px 14px;text-align:left;border-bottom:1px solid rgba(255,255,255,.09)}th{color:var(--color-accent);font-weight:700;text-transform:uppercase;font-size:.8rem;letter-spacing:.05em}.xab29-site-footer{background:var(--color-bg-2);border-top:1px solid rgba(255,255,255,.08);padding:44px 0 30px;font-size:.95rem}.xab29-site-footer .xab29-container{display:flex;flex-direction:column;gap:18px}.footer-nav{display:flex;gap:18px;flex-wrap:wrap}.footer-nav a{color:var(--color-text);opacity:.82}.footer-nav a:hover{opacity:1;color:var(--color-accent)}@media (max-width:720px){.xab29-nav{display:none}.xab29-hero{padding:48px 0 40px}main .xab29-btn{width:100%}.xab29-site-header .xab29-btn{width:auto;padding:9px 14px;font-size:.85rem;white-space:nowrap}}
body[data-skin="arcade"] h1,body[data-skin="arcade"] h2,body[data-skin="arcade"] h3{-webkit-text-fill-color:initial}

body[data-skin="arcade"]{
  --color-bg:#0d0d14; --color-bg-2:#16161f; --color-text:#f5f5fa; --color-secondary:#c9c9d6;
  --color-primary:#ffd400; --color-accent:#ffd400; --color-cta:#ffd400; --color-cta-hover:#ffe14d;
  --line:rgba(245,245,250,.28); --ink-dark:#0d0d14;
  --font-body:'Helvetica Neue',Arial,system-ui,sans-serif;
  --font-head:'Arial Black','Helvetica Neue',Impact,Arial,sans-serif;
  background:var(--color-bg); color:var(--color-text);
}
body[data-skin="arcade"] h1,body[data-skin="arcade"] h2,body[data-skin="arcade"] h3{
  font-family:var(--font-head); font-weight:900; text-transform:uppercase; letter-spacing:.02em; text-shadow:none}
body[data-skin="arcade"] .xab29-site-header{background:var(--ink-dark); backdrop-filter:none;
  border-bottom:3px solid var(--color-accent)}
body[data-skin="arcade"] .xab29-nav{gap:20px}

body[data-skin="arcade"] .xab29-nav a{text-transform:uppercase; font-weight:800; letter-spacing:.04em;
  font-size:.74rem; opacity:1; border-bottom:3px solid transparent; padding:.3rem 0; color:var(--color-text);
  flex:0 1 auto; min-width:0}
body[data-skin="arcade"] .xab29-nav a:hover{border-bottom-color:var(--color-accent); color:var(--color-accent)}
body[data-skin="arcade"] .xab29-hero{text-align:left; padding:96px 0 76px}
body[data-skin="arcade"] .xab29-hero .xab29-container{align-items:flex-start; gap:24px}
body[data-skin="arcade"] .xab29-hero,body[data-skin="arcade"] .xab29-hero p,body[data-skin="arcade"] .xab29-hero li{color:#fff}
body[data-skin="arcade"] .xab29-hero h1{font-size:clamp(2.3rem,6.4vw,4.8rem); line-height:1;
  background:var(--color-accent); color:#0d0d14; display:inline-block; padding:.12em .3em;
  transform:skew(-5deg); box-shadow:8px 8px 0 #000}
body[data-skin="arcade"] .xab29-hero-sub{max-width:58ch; font-size:1.15rem; font-weight:600;
  background:rgba(13,13,20,.72); padding:.6rem .9rem; border-left:6px solid var(--color-accent)}
body[data-skin="arcade"] .xab29-key-points li{border:2px solid var(--color-accent); border-radius:0;
  background:rgba(13,13,20,.8); font-weight:700; text-transform:uppercase; font-size:.78rem; letter-spacing:.05em}
body[data-skin="arcade"] .xab29-section{padding:64px 0}
body[data-skin="arcade"] main h2{display:inline-block; background:var(--color-accent); color:#0d0d14;
  padding:.18em .55em; transform:skew(-5deg); margin-bottom:1.1em; font-size:clamp(1.3rem,2.8vw,2rem)}
body[data-skin="arcade"] .xab29-btn{border-radius:0; border:2px solid #000; text-transform:uppercase; font-weight:900;
  letter-spacing:.06em; font-size:.85rem; box-shadow:5px 5px 0 #fff; transform:skew(-5deg);
  background:var(--color-cta); color:#0d0d14}
body[data-skin="arcade"] .xab29-btn:hover{transform:skew(-5deg) translate(-2px,-2px); box-shadow:7px 7px 0 #fff}
body[data-skin="arcade"] .xab29-op-card,body[data-skin="arcade"] .pick{background:var(--color-bg-2);
  border:2px solid var(--color-text); border-radius:0; box-shadow:7px 7px 0 var(--color-accent)}
body[data-skin="arcade"] .xab29-op-card h3,body[data-skin="arcade"] .pick h3{color:var(--color-accent)}
body[data-skin="arcade"] .xab29-facts li span{color:var(--color-accent); opacity:1; font-weight:800}
body[data-skin="arcade"] .xab29-pros li::before{color:var(--color-accent)}
body[data-skin="arcade"] .xab29-table-wrap{border-radius:0; border:2px solid var(--color-text)}
body[data-skin="arcade"] table{border-radius:0}
body[data-skin="arcade"] th{background:var(--color-accent); color:#0d0d14; font-weight:900}
body[data-skin="arcade"] th,body[data-skin="arcade"] td{border-bottom:2px solid var(--line)}
body[data-skin="arcade"] .xab29-criteria li::before{border-radius:0; background:var(--color-accent); color:#0d0d14;
  font-family:var(--font-head); width:2.3rem; height:2.3rem; transform:skew(-5deg)}
body[data-skin="arcade"] .xab29-criteria li{padding-left:3.5rem}
body[data-skin="arcade"] .xab29-checklist li::before{color:var(--color-accent)}
body[data-skin="arcade"] .xab29-glossary dt{color:var(--color-accent); text-transform:uppercase; font-family:var(--font-head); font-size:.95rem}
body[data-skin="arcade"] .xab29-faq-item{background:var(--color-bg-2); border:2px solid var(--line); border-radius:0}
body[data-skin="arcade"] .xab29-faq-item[open]{border-color:var(--color-accent)}
body[data-skin="arcade"] .xab29-faq-item>summary{font-weight:800; text-transform:uppercase; font-size:.92rem; letter-spacing:.03em}
body[data-skin="arcade"] .xab29-site-footer{background:#000; border-top:3px solid var(--color-accent)}


#nav-toggle { position: absolute; width: 1px; height: 1px; opacity: 0; }
.xab29-nav-burger { display: none; }
@media (min-width: 721px) {
  
  .xab29-site-header .xab29-container { flex-wrap: nowrap; }
  .xab29-nav { flex-wrap: nowrap; min-width: 0; }
  .xab29-nav a { white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
           max-width: 24ch; }
}
@media (max-width: 720px) {
  .xab29-site-header .xab29-container { position: relative; flex-wrap: nowrap; }
  
  .xab29-nav-burger { display: flex; flex-direction: column; justify-content: center;
                align-items: center; width: 44px; height: 44px;
                cursor: pointer; flex: 0 0 auto; color: var(--color-text, #fff); }
  .xab29-nav-burger::before, .xab29-nav-burger::after {
    content: ""; display: block; width: 22px; height: 2px; border-radius: 2px;
    background: currentColor; transition: transform .2s; }
  .xab29-nav-burger::before { box-shadow: 0 -7px 0 currentColor, 0 7px 0 currentColor; }
  .xab29-nav-burger::after { display: none; }
  #nav-toggle:checked ~ .xab29-nav-burger::before { box-shadow: none;
    transform: rotate(45deg) translateY(1px); }
  #nav-toggle:checked ~ .xab29-nav-burger::after { display: block; margin-top: -2px;
    transform: rotate(-45deg) translateY(-1px); }
  
  #nav-toggle:checked ~ .xab29-nav {
    display: flex; flex-direction: column; align-items: stretch; gap: 0;
    position: absolute; top: 100%; left: 0; right: 0; z-index: 60;
    background: var(--color-bg-2, var(--color-bg, #111));
    padding: 4px 22px 14px; box-shadow: 0 14px 28px rgba(0,0,0,.45);
  }
  #nav-toggle:checked ~ .xab29-nav a { padding: 13px 0; max-width: none;
    border-bottom: 1px solid rgba(255,255,255,.09); }
}
#hero, section#hero, .xab29-hero, .hero-section, [id*="hero"] { background-image: linear-gradient(180deg, rgba(10,12,24,.20) 0%, rgba(10,12,24,.45) 55%, rgba(10,12,24,.72) 100%), url('../images/hero.jpg?v=a0d954b7') !important; background-size: cover !important; background-position: center center !important; background-repeat: no-repeat !important; }
#bonus, section#bonus, .bonus-section, [id*="bonus"] { background-image: linear-gradient(rgba(0,0,0,.6), rgba(0,0,0,.6)), url('../images/bonus_bg.jpg?v=1710cd79') !important; background-size: cover !important; background-position: center !important; }
img[src*="hero"], img[src*="bonus_bg"], img.hero-image, img.bonus-banner { width: 100% !important; height: auto !important; max-height: 60vh !important; aspect-ratio: 16 / 9 !important; object-fit: cover !important; display: block !important; }
