/* ==================================================
   Global CSS Variables (Theme Colors)
   Same variable names as base-template for preset compatibility
   ================================================== */
:root {
  --background-body: #f0f5ff;
  --background-alt: #1f3e61;
  --text-main: #172631;
  --links: #1b2035;
  --text-on-alt: #fffbff;
  --button-base: #2965ee;
  --button-hover: #1c4ed8;
  --login-btn-bg: #213a5c;
  --login-btn-color: #fffffb;
  --login-btn-border: none;
  --registr-btn-gradient: linear-gradient(270deg, #397ff4 100%, #2166ea 0%);
  --registr-btn-color: #fdfbff;
  --main-btn-gradient: linear-gradient(270deg, #3980f6 100%, #2467ee 0%);
  --main-btn-color: #fcfeff;
  --transition-speed: 0.3s;
  --text-muted: rgba(0, 0, 0, 0.55);
  --text-accent: #2150d9;
  --border-color: rgba(0, 0, 0, 0.12);
  --border-accent: #2367ef;
  --card-bg: rgba(37, 99, 235, 0.05);
  --card-shadow: 0 4px 20px rgba(0,0,0,0.06);
  --star-empty: #c0d7f0;
  --table-scrollbar-color: #60a5fd;
  --table-scrollbar-hover: #2364e7;

  /* Semantic status colors — NOT repainted by Theme Colors / palette engine
     (applyCssVariables only rewrites known palette keys, leaves these intact).
     Used by review content blocks: pros/cons, expert-tip callouts, score badge,
     and later traffic-light tables. Picked to read on both dark and light themes. */
  --positive: #27c281;
  --negative: #ef4b4b;
  --warning: #f0b429;
  --info: #3b9ae1;
}

/* ==================================================
   Water.css Overrides
   ================================================== */
header, main, footer, .c-70ade1 {
  max-width: 100% !important;
  margin: 0 !important;
}

/* ==================================================
   Global Reset & Base Styles
   ================================================== */
html {
  max-width: 100vw;
  overflow-x: hidden;
}

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  background: var(--background-body);
  color: var(--text-main);
  font-family: Arial, sans-serif;
  line-height: 1.6;
  overflow-x: hidden;
}

a {
  text-decoration: none;
  cursor: pointer;
  color: var(--text-accent);
}

a:hover {
  text-decoration: underline;
}

p {
  margin: 10px 0;
}

img {
  max-width: 100%;
  height: auto;
}

ul, ol {
  margin: 20px 30px;
}

/* ==================================================
   Entry Content Wrapper
   ================================================== */
.c-29ab4f {
  max-width: 1110px;
  margin: 0 auto;
  padding: 0 20px;
}

/* ==================================================
   HEADER
   ================================================== */
header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  background: var(--background-alt);
  z-index: 1000;
  height: 66px;
  padding: 0 20px;
}

.c-86d2dc {
  display: none;
}

.c-6540a9 {
  max-width: 1310px;
  margin: 0 auto;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-right: 80px;
}

.c-f2f87d img {
  max-height: 50px;
  width: auto;
}

.c-4a1818 {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
}

.c-4a1818 ul {
  list-style: none;
  display: flex;
  gap: 20px;
  margin: 0;
  padding: 0;
}

.c-4a1818 ul li a {
  /* the header is filled with --background-alt, and only --text-on-alt stays
     readable there in mixed palettes (light page + dark band) — see rule 194c */
  color: var(--text-on-alt);
  font-weight: 600;
  transition: color var(--transition-speed);
}

.c-4a1818 ul li a:hover {
  text-decoration: underline;
}

.c-3ff55f {
  display: flex;
  align-items: center;
  gap: 8px;
}

.c-f6e964 {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* ---------- Bonus Button (header CTA) ---------- */
.c-4e7ab6 {
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  padding: 12px 24px;
  font-size: 16px;
  font-weight: 700;
  border-radius: 8px;
  text-transform: uppercase;
  animation: pulse-main 2s infinite;
  transition: background var(--transition-speed);
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: none;
}

.c-4e7ab6:hover {
  background: var(--button-hover);
  text-decoration: none;
}

/* Pulse Animation */
@keyframes pulse-main {
  0% {
    transform: scale(0.95);
    box-shadow: 0 0 0 0 var(--button-base);
  }
  70% {
    transform: scale(1);
    box-shadow: 0 4px 24px 0 var(--button-hover);
  }
  100% {
    transform: scale(0.95);
    box-shadow: 0 0 0 0 transparent;
  }
}

/* Burger Icon */
.c-26c2e8 {
  display: none;
  flex-direction: column;
  justify-content: space-between;
  width: 38px;
  height: 38px;
  cursor: pointer;
  background: var(--login-btn-bg);
  padding: 8px;
  gap: 8px;
  border-radius: 6px;
  position: absolute;
  top: 50%;
  right: 20px;
  transform: translateY(-50%);
}

.c-26c2e8 span {
  display: block;
  height: 3px;
  width: 100%;
  background: var(--login-btn-color);
  border-radius: 2px;
  transition: transform var(--transition-speed), opacity var(--transition-speed);
}

/* ==================================================
   Mobile & Tablet (max-width: 1023px)
   ================================================== */
@media (max-width: 1023px) {
  .c-6540a9 {
    justify-content: space-between;
    padding-right: 40px;
  }

  .c-4a1818 {
    display: none;
  }

  .c-26c2e8 {
    display: flex;
  }

  .c-230846 {
    display: none;
    position: fixed;
    top: 0;
    right: 0;
    width: 280px;
    height: 100vh;
    background: var(--background-alt);
    flex-direction: column;
    padding-top: 60px;
    transition: transform 0.3s ease;
    z-index: 999;
  }

  .c-230846 ul {
    list-style: none;
    display: flex;
    flex-direction: column;
    margin: 0;
    padding: 0;
  }

  .c-230846 ul li {
    border-bottom: 1px solid var(--border-color);
  }

  .c-230846 ul li a {
    padding: 18px 20px;
    font-size: 18px;
    color: var(--text-on-alt);
    text-align: left;
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  .c-230846 ul li a::after {
    content: "";
    border: 5px solid transparent;
    border-left: 5px solid var(--text-on-alt);
  }

  .c-458f8d {
    padding: 20px;
  }

  .c-458f8d .c-4e7ab6 {
    width: 100%;
    text-align: center;
  }

  .c-86d2dc:checked ~ .c-230846 {
    display: flex;
  }

  .c-86d2dc:checked ~ .c-6540a9 .c-26c2e8 span:nth-child(1) {
    transform: rotate(45deg) translate(5px, 4px);
  }

  .c-86d2dc:checked ~ .c-6540a9 .c-26c2e8 span:nth-child(2) {
    opacity: 0;
  }

  .c-86d2dc:checked ~ .c-6540a9 .c-26c2e8 span:nth-child(3) {
    transform: rotate(-45deg) translate(5px, -5px);
  }

  .c-edc148 {
    position: absolute;
    top: 10px;
    right: 20px;
    font-size: 28px;
    color: var(--text-on-alt);
    cursor: pointer;
    z-index: 1001;
  }
}

/* ==================================================
   Desktop (min-width: 1024px)
   ================================================== */
@media (min-width: 1024px) {
  .c-4a1818 {
    display: flex !important;
    position: static;
    height: auto;
    background: none;
    padding: 0;
  }

  .c-230846 {
    display: none !important;
  }

  .c-26c2e8 {
    display: none;
  }
}

/* ==================================================
   Small Devices (max-width: 767px)
   ================================================== */
@media (max-width: 767px) {
  header {
    height: 54px;
  }

  .c-f2f87d img {
    max-height: 40px;
  }

  .c-4e7ab6 {
    padding: 8px 16px;
    font-size: 14px;
  }
}

/* ==== COUNTRY MENU (multi-geo) ==== */
/* Domain Groups: the composer puts <details class="geo-menu"> into .c-3ff55f,
   right before .c-f6e964 — a compact "flag + code" toggle that opens the list
   of every country of the domain. No JS: native <details>/<summary>. Lives in the
   TEMPLATE so the obfuscation map knows these classes (rule 105/173); the composer
   copies this exact block into members whose style.css predates it
   (dgReviewGeoMenuCss). On --background-alt only --text-on-alt (rules 58/194/245);
   states change the border/weight, never the text colour. The resets undo
   water.c-14318b.css's own <details>/<summary> look (overflow:hidden would clip the list). */
.c-764f8b {
  position: relative;
  display: block;
  margin: 0;
  padding: 0;
  background: none;
  border-radius: 0;
  overflow: visible;
}
.c-764f8b[open] { padding: 0; }
.c-d991ab {
  display: flex;
  align-items: center;
  gap: 6px;
  height: 38px;
  margin: 0;
  padding: 0 10px;
  list-style: none;
  background: transparent;
  border: 1px solid var(--border-color);
  border-radius: 8px;
  color: var(--text-on-alt);
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  user-select: none;
}
.c-764f8b[open] > .c-d991ab { margin-bottom: 0; border-color: var(--border-accent); }
.c-d991ab:hover,
.c-d991ab:focus { text-decoration: none; border-color: var(--border-accent); }
.c-d991ab:focus-visible { outline: 2px solid var(--border-accent); outline-offset: 2px; }
.c-d991ab::-webkit-details-marker { display: none; }
.c-d991ab::marker { content: ""; }
.c-d991ab::after {
  content: "";
  width: 6px;
  height: 6px;
  margin-left: 2px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
}
.c-764f8b[open] > .c-d991ab::after { transform: translateY(2px) rotate(-135deg); }
.c-d991ab img,
.c-35a996 img {
  display: block;
  flex: 0 0 auto;
  width: 20px;
  height: 15px;
  object-fit: cover;
  border-radius: 2px;
}
.c-35a996 {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  z-index: 1002;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2px;
  width: 420px;
  max-height: min(70vh, 520px);
  overflow-y: auto;
  margin: 0;
  padding: 8px;
  list-style: none;
  background: var(--background-alt);
  border: 1px solid var(--border-color);
  border-radius: 10px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
}
.c-21d932 { margin: 0; padding: 0; }
.c-21d932::before { content: none; }
.c-21d932 a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border: 1px solid transparent;
  border-radius: 6px;
  color: var(--text-on-alt);
  font-size: 14px;
  font-weight: 500;
  line-height: 1.25;
  text-decoration: none;
}
.c-21d932 a:hover { border-color: var(--border-color); text-decoration: none; }
.c-6b0239 a { border-color: var(--border-accent); font-weight: 700; }
@media (max-width: 767px) {
  .c-d991ab { height: 34px; padding: 0 8px; gap: 5px; }
  .c-b61146 { display: none; }
  /* full-width sheet under the fixed 54px header */
  .c-35a996 {
    position: fixed;
    top: 54px;
    left: 0;
    right: 0;
    width: auto;
    max-height: calc(100vh - 54px);
    border-radius: 0 0 10px 10px;
  }
}
/* ==== /COUNTRY MENU ==== */

/* ==================================================
   Main Content Padding (fixed header offset)
   ================================================== */
main {
  padding-top: 80px;
}

@media (max-width: 767px) {
  main {
    padding-top: 64px;
  }
}

/* ==================================================
   Breadcrumb Navigation
   ================================================== */
.c-a0b8ff {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  list-style: none;
  margin: 0 0 20px 0;
  padding: 10px 0;
  font-size: 14px;
}

.c-a0b8ff li {
  display: flex;
  align-items: center;
  margin: 0;
  padding: 0;
}

.c-a0b8ff li a {
  color: var(--links);
  opacity: 0.8;
  transition: opacity var(--transition-speed);
  text-decoration: none;
}

.c-a0b8ff li a:hover {
  opacity: 1;
  text-decoration: underline;
}

.c-a0b8ff li:not(:last-child)::after {
  content: "-";
  margin: 0 8px;
  color: var(--links);
  opacity: 0.6;
}

.c-a0b8ff li:last-child span {
  color: var(--text-accent);
}

@media (max-width: 767px) {
  .c-a0b8ff {
    padding: 8px 0;
    font-size: 12px;
  }

  .c-a0b8ff li:not(:last-child)::after {
    margin: 0 5px;
  }
}

/* ==================================================
   Review Hero Section
   ================================================== */
.c-16eeb2 {
  margin-bottom: 40px;
}

.c-05e04b {
  font-size: 60px;
  font-weight: 800;
  line-height: 1.1;
  text-align: center;
  margin: 0 0 30px 0;
  color: var(--text-main);
}

@media (max-width: 1023px) {
  .c-05e04b {
    font-size: 40px;
  }
}

@media (max-width: 767px) {
  .c-05e04b {
    font-size: 26px;
    margin-bottom: 20px;
  }
}

/* Author Block */
.c-ae8ed1 {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
}

.c-e5bacc {
  margin: 0;
  flex-shrink: 0;
}

.c-b7a4f9 {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--registr-btn-gradient);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  font-weight: 700;
  color: var(--registr-btn-color);
}

.c-e5bacc img {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
}

.c-4efcf8 {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.c-964f1b {
  font-size: 15px;
  font-weight: 600;
  color: var(--text-main);
  display: flex;
  align-items: center;
  gap: 4px;
}

.c-879d49 {
  display: inline-flex;
  margin: 0;
  flex-shrink: 0;
}

.c-879d49 img {
  width: 16px;
  height: 16px;
  vertical-align: middle;
}

.c-ae4898 {
  font-size: 13px;
  color: var(--text-muted);
}

/* Hero Text */
.c-16263b {
  margin-top: 20px;
  font-size: 16px;
  line-height: 1.7;
}

.c-16263b p {
  margin: 10px 0;
}

/* ==================================================
   Affiliate Disclosure
   ================================================== */
.c-0aeaa3 {
  display: inline-block;
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  border-radius: 6px;
  padding: 6px 12px;
  margin-top: 12px;
}

/* The whole chip is the trigger, not just the 20px "i" circle: a reader hovers the
   WORD. The icon keeps its own hover/focus/active rules below for the keyboard and
   for older builds. */
.c-2b8925 {
  font-size: 13px;
  color: var(--text-muted);
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  position: relative;
}

.c-de51a8 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 1px solid var(--border-color);
  font-size: 12px;
  cursor: pointer;
  position: relative;
  color: var(--text-muted);
  user-select: none;
  flex-shrink: 0;
}

.c-b45129 {
  display: none;
  position: absolute;
  top: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  width: 280px;
  padding: 12px 14px;
  background: var(--background-alt);
  border: 1px solid var(--border-color);
  border-radius: 8px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--text-on-alt);
  box-shadow: var(--card-shadow);
  z-index: 100;
  text-align: left;
  font-weight: 400;
}

.c-b45129::before {
  content: '';
  position: absolute;
  top: -6px;
  left: 50%;
  transform: translateX(-50%);
  width: 10px;
  height: 10px;
  background: var(--background-alt);
  border-left: 1px solid var(--border-color);
  border-top: 1px solid var(--border-color);
  transform: translateX(-50%) rotate(45deg);
}

.c-2b8925:hover .c-b45129,
.c-2b8925.active .c-b45129,
.c-de51a8:hover .c-b45129,
.c-de51a8:focus .c-b45129,
.c-de51a8.active .c-b45129 {
  display: block;
}

@media (max-width: 767px) {
  .c-b45129 {
    left: auto;
    right: -10px;
    transform: none;
    width: 250px;
  }

  .c-b45129::before {
    left: auto;
    right: 14px;
    transform: rotate(45deg);
  }
}

/* ==================================================
   Content Section
   ================================================== */
.c-5fb956 {
  max-width: 1110px;
  margin: 30px auto;
  padding: 0;
}

.c-5fb956 h2 {
  margin: 30px 0 15px;
  font-size: 28px;
}

.c-5fb956 h3 {
  margin: 25px 0 12px;
  font-size: 22px;
}

.c-5fb956 p {
  margin: 10px 0;
  line-height: 1.7;
}

.c-5fb956 img {
  border-radius: 8px;
  margin: 15px 0;
}

/* ==================================================
   Table Rate (Casino Ratings)
   ================================================== */
.c-a46e8a {
  counter-reset: table-row;
  max-width: 1110px;
  margin: 30px auto;
}

/* Support <table> rendered as flex rows */
.c-a46e8a table {
  width: 100%;
  border-spacing: 0;
  border-collapse: separate;
  margin: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.c-a46e8a thead {
  display: none;
}

.c-a46e8a tbody {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.c-a46e8a tr,
.c-a46e8a .c-3252ac {
  display: grid;
  /* counter | logo | name+bonus | CTA (score is an absolute top-right badge) */
  grid-template-columns: 32px 166px minmax(0, 1fr) auto;
  align-items: center;
  gap: 16px;
  padding: 16px 20px;
  border-radius: 10px;
  background: var(--background-alt);
  border: 1px solid var(--border-color); /* rows merge into the body bg on dark palettes without this */
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  counter-increment: table-row;
  position: relative;
}

.c-a46e8a tr:hover,
.c-a46e8a .c-3252ac:hover {
  transform: translateY(-2px);
  box-shadow: var(--card-shadow);
}

.c-a46e8a td {
  display: block;
  border: none !important;
  padding: 0 !important;
  background: transparent !important;
  color: var(--text-on-alt) !important;
}

/* Position counter (::before) */
.c-a46e8a tr::before,
.c-a46e8a .c-3252ac::before {
  content: counter(table-row);
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--login-btn-bg);
  color: var(--login-btn-color);
  font-weight: 700;
  font-size: 14px;
  flex-shrink: 0;
}

/* Top 3 rows: gradient counter */
.c-a46e8a tr:nth-child(-n+3)::before,
.c-a46e8a .c-3252ac:nth-child(-n+3)::before {
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
}

/* First row: gradient border via background-clip trick */
.c-a46e8a tr:first-child,
.c-a46e8a .c-3252ac:first-child {
  background:
    linear-gradient(var(--background-alt), var(--background-alt)) padding-box,
    var(--registr-btn-gradient) border-box;
  border: 2px solid transparent;
}

/* Logo cell */
.c-a46e8a .c-94060b img,
.c-a46e8a td img {
  width: 166px;
  height: 98px;
  object-fit: contain;
  border-radius: 10px;
  border: 1px solid var(--border-color);
  background: #fff;
}

/* Info area */
.c-a46e8a .c-e30067 {
  font-size: 18px;
  font-weight: 700;
  color: var(--text-on-alt);
}

.c-a46e8a .c-adcb68 {
  font-size: 14px;
  color: var(--text-muted);
  margin-top: 4px;
}

.c-a46e8a .c-edf496 {
  font-size: 14px;
  color: var(--text-accent);
  margin-top: 4px;
}

/* CTA button inside table-rate (scoped to .c-b6bbab — the small review link is NOT a button) */
.c-a46e8a .c-b6bbab,
.c-a46e8a .c-3863ca a.c-b6bbab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 181px;
  height: 46px;
  padding: 0 24px;
  border-radius: 6px;
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  font-size: 15px;
  font-weight: 700;
  text-decoration: none;
  text-transform: uppercase;
  transition: transform 0.2s ease;
  white-space: nowrap;
  flex-shrink: 0;
  cursor: pointer;
  border: none;
}

.c-a46e8a .c-b6bbab:hover,
.c-a46e8a .c-3863ca a.c-b6bbab:hover {
  transform: scale(1.03);
  text-decoration: none;
}

/* Table-rate mobile */
@media (max-width: 767px) {
  .c-a46e8a tr,
  .c-a46e8a .c-3252ac {
    grid-template-columns: 1fr;
    justify-items: center;
    text-align: center;
    padding: 20px 16px;
    gap: 12px;
  }

  .c-a46e8a tr::before,
  .c-a46e8a .c-3252ac::before {
    position: absolute;
    top: 12px;
    left: 12px;
    min-width: 28px;
    height: 28px;
    font-size: 12px;
  }

  .c-a46e8a .c-94060b img,
  .c-a46e8a td img {
    width: 140px;
    height: 82px;
  }

  .c-a46e8a .c-b6bbab,
  .c-a46e8a .c-3863ca a.c-b6bbab {
    width: 100%;
    min-width: unset;
  }
}

/* ==================================================
   Table Styles - Override Water.css (generic tables)
   ================================================== */
table {
  border-collapse: collapse !important;
  width: 100% !important;
  margin: 30px auto !important;
  background: var(--background-alt) !important;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

th {
  background: var(--registr-btn-gradient) !important;
  color: var(--registr-btn-color) !important;
  font-weight: 600 !important;
  padding: 12px 15px !important;
  text-align: left !important;
}

td {
  padding: 12px 15px !important;
  border-bottom: 1px solid var(--border-color) !important;
  color: var(--text-on-alt) !important;
  background: transparent !important;
}

tbody tr:nth-child(2n) {
  background: rgba(255,255,255,0.03) !important;
}

tbody tr:hover {
  background: rgba(255,255,255,0.06) !important;
  transition: background var(--transition-speed) !important;
}

/* Table Wrapper (responsive scrolling) */
.c-871fef {
  overflow-x: auto;
  margin: 30px auto;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
}

.c-871fef table {
  margin: 0 !important;
  box-shadow: none !important;
  min-width: 700px;
}

.c-871fef::-webkit-scrollbar {
  height: 8px;
}

.c-871fef::-webkit-scrollbar-track {
  background: rgba(255, 255, 255, 0.1);
  border-radius: 4px;
}

.c-871fef::-webkit-scrollbar-thumb {
  background: var(--table-scrollbar-color);
  border-radius: 4px;
}

.c-871fef::-webkit-scrollbar-thumb:hover {
  background: var(--table-scrollbar-hover);
}

/* ==================================================
   Table of Contents — minimalist text-level block (operator 2026-08-27:
   no card background, must NOT read as another big panel next to the
   casino table). Sits on the page background → body-pair vars only
   (--links / --text-accent); --text-on-alt belongs to alt-background
   surfaces (rule 58) and left this block together with the card.
   Classes/attributes (toc-wrapper/toc-container/toc-toggle/.toc[hidden])
   unchanged — the pages.js #4/#5 contract is untouched. The <button>
   resets every box prop explicitly: water.c-14318b.css paints buttons (incl.
   :hover) with --button-base/--button-hover (rule 194a).
   ================================================== */
.c-c7d152 {
  max-width: 1110px;
  margin: 30px auto;
}

.c-d74f0c {
  background: none;
  border: none;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
}

.c-6892e7 {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  width: auto;
  margin: 0 0 12px;
  padding: 0;
  background: none;
  border: none;
  border-radius: 0;
  box-shadow: none;
  color: var(--links);
  font-weight: 600;
  font-size: 15px;
  text-decoration: underline;
  text-underline-offset: 4px;
  cursor: pointer;
}

.c-6892e7:hover {
  background: none;
  box-shadow: none;
  transform: none;
  color: var(--text-accent);
}

.c-e6258c {
  background: none;
  border: none;
  border-radius: 0;
  padding: 0;
}

.c-e6258c[hidden] {
  display: none;
}

.c-e6258c ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 2px 36px;
}

@media (min-width: 768px) {
  .c-e6258c ul {
    grid-template-columns: 1fr 1fr;
  }
}

.c-e6258c ul li {
  position: relative;
  padding-left: 16px;
}

/* small accent tick instead of a bullet (no default list/box props) */
.c-e6258c ul li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.85em;
  width: 7px;
  height: 2px;
  background: var(--text-accent);
}

.c-e6258c ul li a {
  display: inline-block;
  padding: 3px 0;
  background: none;
  border: none;
  color: var(--links);
  text-decoration: none;
  font-size: 15px;
}

.c-e6258c ul li a:hover {
  color: var(--text-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.c-e6258c ul ul {
  margin: 2px 0 0;
  padding-left: 14px;
  grid-template-columns: 1fr;
  gap: 2px;
}

.c-e6258c ul ul li a {
  font-size: 14px;
  padding: 2px 0;
}

@media (max-width: 767px) {
  .c-c7d152 {
    margin: 20px auto;
  }

  .c-e6258c ul {
    grid-template-columns: 1fr;
    gap: 2px;
  }
}

/* ==================================================
   In-article images (Image plan / rendered infographics). The review template had
   NO rule for these — an authored <figure><img class="article-img" width="1536">
   then overflowed the 1110px column and pushed a horizontal scrollbar. Mirror of
   the base/prestige rule (CLAUDE.md 215): width/height stay in the markup so the
   box is reserved (CLS), CSS scales it down to the column.
   ================================================== */
figure {
  margin: 30px 0;
}

figure img,
.c-3b69c9 {
  width: 100%;
  height: auto;
  border-radius: 10px;
}

figcaption {
  margin-top: 8px;
  font-size: 14px;
  line-height: 1.55;
  color: var(--text-muted);
  text-align: center;
}

/* ==================================================
   Lead photo (Review Settings → Lead image): below the TOC, before the article
   ================================================== */
.c-502f38 {
  max-width: 1110px;
  margin: 30px auto;
}

.c-502f38 img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 15px;
}

/* ==================================================
   Best Games / Providers Grid
   ================================================== */
.c-87ee65 {
  max-width: 1110px;
  margin: 40px auto;
}

.c-87ee65 h2 {
  text-align: center;
  margin-bottom: 24px;
  font-size: 28px;
}

.c-e8d52c,
.c-87ee65 ul {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.c-5041e7,
.c-87ee65 li {
  background: var(--background-alt);
  border-radius: 12px;
  overflow: hidden;
  transition: transform 0.3s ease;
  text-align: center;
  padding: 12px;
}

.c-5041e7:hover,
.c-87ee65 li:hover {
  transform: scale(1.03);
}

.c-33c0c1 img,
.c-87ee65 li img {
  width: 100%;
  height: auto;
  border-radius: 8px;
  aspect-ratio: 1;
  object-fit: cover;
}

.c-8f63a9,
.c-87ee65 li span {
  display: block;
  margin-top: 8px;
  font-size: 14px;
  color: var(--text-muted);
  font-weight: 600;
}

@media (max-width: 1023px) {
  .c-e8d52c,
  .c-87ee65 ul {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 767px) {
  .c-e8d52c,
  .c-87ee65 ul {
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
  }

  .c-5041e7,
  .c-87ee65 li {
    padding: 8px;
  }
}

/* ==================================================
   FAQ Section
   ================================================== */
.c-f4b65d {
  max-width: 1110px;
  margin: 40px auto;
}

.c-f4b65d h2 {
  font-size: 28px;
  margin-bottom: 20px;
}

.c-f4b65d h3 {
  font-size: 18px;
  padding: 16px 0;
  border-bottom: 1px solid var(--border-color);
  cursor: default;
}

.c-f4b65d h3 + p,
.c-f4b65d h3 + div {
  padding: 12px 0;
  line-height: 1.7;
  color: var(--text-muted);
}

/* ==================================================
   Main Button (CTA in content)
   ================================================== */
.c-c65e10 {
  display: flex;
  align-items: center;
  justify-content: center;
  max-width: 320px;
  width: 100%;
  height: 70px;
  margin: 20px auto;
  border-radius: 10px;
  background: var(--main-btn-gradient);
  color: var(--main-btn-color);
  font-size: 20px;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
  border: none;
  transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
  animation: pulse-main 2s infinite;
}

.c-c65e10:hover {
  transform: scale(1.02);
  text-decoration: none;
}

/* ==================================================
   Last Updated
   ================================================== */
.c-72e0ea {
  margin: 40px 0 20px;
  font-size: 14px;
  color: var(--text-muted);
}

.c-72e0ea strong {
  color: var(--text-main);
}

/* ==================================================
   Footer
   ================================================== */
.c-70ade1 {
  max-width: 100% !important;
}

.c-def1f0 {
  background: var(--background-alt);
  color: var(--text-on-alt);
  padding: 30px 0 20px;
  text-align: center;
  margin-top: 30px;
}

/* Footer Nav (ul-based) */
.c-ad96f1 {
  margin-bottom: 20px;
  padding: 0 15px;
}

.c-46a3a9 {
  list-style: none;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0;
  margin: 0;
  padding: 0;
}

.c-46a3a9 li {
  margin: 0;
  padding: 0;
}

.c-46a3a9 li a {
  /* .c-def1f0 is --background-alt (rule 194c) — de-emphasis via opacity, not
     a second colour; --button-base on hover was unreadable on 32/45 palettes */
  color: var(--text-on-alt);
  opacity: 0.85;
  padding: 8px 15px;
  transition: opacity var(--transition-speed);
  font-size: 0.9rem;
  text-decoration: none;
  position: relative;
}

.c-46a3a9 li a:hover {
  opacity: 1;
  text-decoration: underline;
}

.c-46a3a9 li:not(:last-child) a::after {
  content: "|";
  position: absolute;
  right: -3px;
  color: var(--text-on-alt);
  opacity: 0.4;
}

@media (max-width: 767px) {
  .c-46a3a9 {
    flex-direction: column;
    align-items: center;
    gap: 0;
  }

  .c-46a3a9 li a {
    padding: 6px 10px;
    display: block;
  }

  .c-46a3a9 li:not(:last-child) a::after {
    display: none;
  }
}

/* Footer Images / Trust Logos */
.c-def1f0 .c-7f088d {
  margin-bottom: 20px;
}

.c-def1f0 .c-7f088d .c-8eb720 {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 20px;
}

.c-def1f0 .c-7f088d .c-8eb720 .c-e82195 img {
  max-width: 120px;
  height: auto;
  border-radius: 10px;
  transition: transform 0.3s ease;
}

.c-def1f0 .c-7f088d .c-8eb720 .c-e82195 img:hover {
  transform: scale(1.05);
}

/* Per-file nudge: these regulator PNGs carry baked-in bottom whitespace and ride up
   in the flex row — same fix as the base template (attribute selectors, so the CSS
   obfuscator never touches them) */
img[src*="gioco-responsabile"] { margin-top: 15px; }
img[src*="spielsuchthilfe"] { margin-top: 10px; }

/* Copyright */
.c-def1f0 .c-41f0b3 {
  font-size: 0.9rem;
}

.c-def1f0 .c-9fce2b {
  /* footer is filled with --background-alt, and --text-muted equals that band on the four light
     presets whose --text-main IS --background-alt (rule 194c) */
  color: var(--text-on-alt);
  opacity: 0.75;
}

/* ==================================================
   Two-Column Text Blocks
   ================================================== */
.c-c434b4 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 30px;
  margin: 30px 0;
  padding: 20px;
  background: rgba(255, 255, 255, 0.02);
  border-radius: 8px;
  border-left: 4px solid var(--button-base);
}

.c-b1431b,
.c-45e112 {
  display: flex;
  flex-direction: column;
  gap: 15px;
}

.c-b1431b h4,
.c-45e112 h4 {
  margin: 0;
  color: var(--button-base);
  font-size: 16px;
  font-weight: 600;
}

.c-b1431b p,
.c-45e112 p {
  margin: 0;
  line-height: 1.6;
  color: var(--text-main);
}

.c-b1431b ul,
.c-45e112 ul,
.c-b1431b ol,
.c-45e112 ol {
  margin: 0;
  padding-left: 0;
  list-style: none;
}

.c-b1431b li,
.c-45e112 li {
  margin: 8px 0;
  line-height: 1.6;
  color: var(--text-main);
  padding-left: 25px;
  position: relative;
}

.c-b1431b ul li::before,
.c-45e112 ul li::before {
  content: "\2713";
  position: absolute;
  left: 0;
  color: var(--button-base);
  font-weight: bold;
  font-size: 16px;
}

.c-b1431b ol,
.c-45e112 ol {
  counter-reset: list-item;
}

.c-b1431b ol li,
.c-45e112 ol li {
  counter-increment: list-item;
}

.c-b1431b ol li::before,
.c-45e112 ol li::before {
  content: counter(list-item);
  position: absolute;
  left: 0;
  color: var(--button-base);
  font-weight: bold;
  font-size: 16px;
}

@media (max-width: 1023px) {
  .c-c434b4 {
    grid-template-columns: 1fr;
    gap: 20px;
  }
}

@media (max-width: 767px) {
  .c-c434b4 {
    padding: 15px;
    gap: 15px;
    border-left-width: 3px;
  }

  .c-b1431b h4,
  .c-45e112 h4 {
    font-size: 15px;
  }
}

/* ==================================================
   Signup Image
   ================================================== */
.c-67265b {
  display: block;
  margin: 30px auto;
  max-width: 100%;
  height: auto;
}

/* ==================================================
   Additional Responsive (max-width: 420px)
   ================================================== */
@media (max-width: 420px) {
  .c-05e04b {
    font-size: 22px;
  }

  .c-29ab4f {
    padding: 0 12px;
  }

  .c-5fb956 h2 {
    font-size: 22px;
  }

  .c-5fb956 h3 {
    font-size: 18px;
  }
}

/* ==================================================
   REVIEW CONTENT BLOCKS (Chunk 3a)
   Appended after content-section rules on purpose: blocks authored inside
   ARTICLE_TEXT live in .c-5fb956, so their <p>/text rules must come
   later in source order to win same-specificity ties (e.g. .c-5fb956 p).
   All colors use existing palette vars + the 4 semantic status vars.
   ================================================== */

/* ---------- Hero-CTA Card (single-brand review — featured casino) ----------
   Classes emitted by build_site.py generate_hero_cta(). Logo is a manual slot:
   real <img> when the operator uploaded it, else .c-41e9ef. */
.c-d3eeb6 {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 24px;
  max-width: 1110px;
  margin: 0 auto 40px;
  padding: 24px 28px;
  border-radius: 14px;
  background:
    linear-gradient(var(--background-alt), var(--background-alt)) padding-box,
    var(--registr-btn-gradient) border-box;
  border: 2px solid transparent;
  box-shadow: var(--card-shadow);
}

.c-d4d829 img {
  width: 180px;
  height: 110px;
  object-fit: contain;
  border-radius: 10px;
  border: 1px solid var(--border-color);
  background: #fff;
}

.c-41e9ef {
  width: 180px;
  height: 110px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  border: 1px dashed var(--border-color);
  background: var(--card-bg);
  font-size: 48px;
  font-weight: 800;
  color: var(--text-on-alt);
}

.c-d47719 {
  min-width: 0;
  display: flow-root; /* contain the floated score badge */
}

.c-164142 {
  margin-bottom: 6px;
  font-size: 22px;
  font-weight: 800;
  color: var(--text-on-alt);
}

.c-9feb95 {
  float: right;
  margin: 0 0 8px 16px;
  width: 62px;
  height: 62px;
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  line-height: 1;
  background: var(--background-body);
  border: 2px solid var(--positive);
}

.c-08c75c {
  font-size: 20px;
  font-weight: 800;
  color: var(--text-on-alt);
}

.c-ac1bde {
  margin-top: 2px;
  font-size: 10px;
  color: var(--text-muted);
}

.c-769133 {
  margin-bottom: 4px;
  font-size: 18px;
  font-weight: 700;
  color: var(--text-accent);
}

.c-52c005 {
  margin-bottom: 10px;
  font-size: 13px;
  color: var(--text-muted);
}

.c-73cac7 {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.c-67fa8a {
  padding: 2px 8px;
  font-size: 12px;
  color: var(--text-muted);
  border: 1px solid var(--border-color);
  border-radius: 4px;
}

.c-22472f {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}

.c-22472f .c-4e7ab6 {
  animation: none; /* the card is already prominent — avoid double pulse with header */
}

.c-dffdf3 {
  margin: 0;
  font-size: 11px;
  color: var(--text-muted);
  text-align: center;
}

@media (max-width: 767px) {
  .c-d3eeb6 {
    grid-template-columns: 1fr;
    text-align: center;
    gap: 16px;
    padding: 20px;
  }

  .c-d4d829 img,
  .c-41e9ef {
    margin: 0 auto;
  }

  .c-9feb95 {
    float: none;
    margin: 8px auto;
  }

  .c-73cac7 {
    justify-content: center;
  }

  .c-22472f .c-4e7ab6 {
    width: 100%;
  }
}

/* ---------- Pros & Cons (two-column, semantic colors) ---------- */
.c-939deb {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  max-width: 1110px;
  margin: 30px auto;
}

.c-dd3bc9,
.c-88e675 {
  padding: 20px 22px;
  background: var(--background-alt);
  border-radius: 12px;
  border-top: 4px solid var(--border-color);
}

.c-dd3bc9 { border-top-color: var(--positive); }
.c-88e675 { border-top-color: var(--negative); }

.c-dd3bc9 h3, .c-dd3bc9 h4,
.c-88e675 h3, .c-88e675 h4 {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 12px;
  font-size: 18px;
  color: var(--text-on-alt);
}

.c-dd3bc9 h3::before { content: "\2714"; color: var(--positive); }
.c-88e675 h3::before { content: "\2716"; color: var(--negative); }

.c-dd3bc9 ul,
.c-88e675 ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.c-dd3bc9 li,
.c-88e675 li {
  position: relative;
  margin: 8px 0;
  padding-left: 26px;
  line-height: 1.6;
  color: var(--text-on-alt);
}

.c-dd3bc9 li::before {
  content: "\2714";
  position: absolute;
  left: 0;
  color: var(--positive);
  font-weight: 700;
}

.c-88e675 li::before {
  content: "\2716";
  position: absolute;
  left: 0;
  color: var(--negative);
  font-weight: 700;
}

@media (max-width: 767px) {
  .c-939deb {
    grid-template-columns: 1fr;
    gap: 14px;
  }
}

/* ---------- Expert-Tip Callouts (4 variants via modifier class) ----------
   <div class="expert-tip tip-pro"><span class="expert-tip__label">PRO Tip</span><p>..</p></div>
   Variants: tip-pro / tip-caution / tip-insider / tip-data. Emoji lives in the label text. */
.c-57a9b1 {
  max-width: 1110px;
  margin: 24px auto;
  padding: 16px 18px;
  background: var(--card-bg);
  border-left: 4px solid var(--info);
  border-radius: 0 10px 10px 0;
}

.c-545926 {
  display: block;
  margin-bottom: 6px;
  font-size: 14px;
  font-weight: 700;
  color: var(--text-main);
}

.c-57a9b1 p {
  margin: 0;
  line-height: 1.6;
  color: var(--text-muted);
}

.c-ba1da2 { border-left-color: var(--positive); }
.c-479f55 { border-left-color: var(--warning); }
.c-065205 { border-left-color: var(--info); }
.c-a32ca4 { border-left-color: var(--text-accent); }

/* ==================================================
   REVIEW CONTENT BLOCKS (Chunk 3b-1) — quick-facts, comparison, payout
   timeline, methodology, verdict, author box, RG notice, references, steps.
   Still appended after content-section so .c-01b176 p rules win same-specificity
   ties over .c-5fb956 p. Bonus-terms / payment tables reuse the generic
   <table> styling (the 🟢🟡🔴 traffic-light is emoji in the content).
   ================================================== */

/* ---------- Quick Facts (two data tables side by side) ---------- */
.c-c9b5d3 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  max-width: 1110px;
  margin: 30px auto;
}

.c-c9b5d3 table {
  margin: 0 !important; /* the grid cell is the spacer; cancel generic table margin */
}

@media (max-width: 767px) {
  .c-c9b5d3 { grid-template-columns: 1fr; gap: 14px; }
}

/* ---------- Comparison Table (reviewed casino = column 2, highlighted) ---------- */
.c-b55a22 th:nth-child(2) {
  box-shadow: inset 0 -3px 0 var(--text-accent);
}

.c-b55a22 td:nth-child(2) {
  /* this cell is filled with the PAGE colour, so it must switch to the body pair:
     the generic `td` rule paints --text-on-alt for the alt-filled table, which
     here is white text on a light card (1.00:1 on the light presets) */
  background: var(--background-body) !important;
  color: var(--text-main) !important;
  font-weight: 700;
}

/* ---------- Payout Timeline (steps with arrow connectors) ---------- */
.c-bcf1e8 {
  display: flex;
  flex-wrap: wrap;
  max-width: 1110px;
  margin: 24px auto;
}

.c-3a417a {
  flex: 1;
  min-width: 120px;
  position: relative;
  padding: 14px 12px;
  text-align: center;
  background: var(--background-alt);
  border-radius: 10px;
}

.c-3a417a:not(:last-child) { margin-right: 28px; }

.c-3a417a:not(:last-child)::after {
  content: "\2192"; /* arrow right */
  position: absolute;
  right: -22px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--text-accent);
  font-size: 18px;
}

.c-25970e { display: block; font-weight: 700; color: var(--text-on-alt); }
.c-2cd766 { display: block; margin-top: 4px; font-size: 12px; color: var(--text-on-alt); opacity: 0.8; }

@media (max-width: 767px) {
  .c-bcf1e8 { flex-direction: column; }
  .c-3a417a:not(:last-child) { margin-right: 0; margin-bottom: 28px; }
  .c-3a417a:not(:last-child)::after {
    content: "\2193"; /* arrow down */
    right: auto; left: 50%; top: auto; bottom: -22px;
    transform: translateX(-50%);
  }
}

/* ---------- Methodology Box (how we scored) ---------- */
.c-be39f3 {
  max-width: 1110px;
  margin: 24px auto;
  padding: 18px 20px;
  background: var(--background-alt);
  border-radius: 12px;
  border-left: 4px solid var(--text-accent);
}

.c-be39f3 h3 { margin: 0 0 8px; font-size: 16px; color: var(--text-on-alt); }
/* The box is --background-alt, but a bare <a> inside it fell through to the global
   `a { --text-accent }` — a body colour — and measured 2.43:1 live (fails 17/45).
   Underline carries the affordance instead of the hue. */
.c-be39f3 a { color: var(--text-on-alt); text-decoration: underline; text-underline-offset: 3px; }
.c-be39f3 p { margin: 6px 0; line-height: 1.6; color: var(--text-on-alt); }
.c-be39f3 ul { margin: 8px 0 0; padding-left: 22px; }
.c-be39f3 li { margin: 4px 0; color: var(--text-on-alt); }

/* ---------- Verdict Card (score + best-for / weak-on / avoid-if) ---------- */
.c-da0963 {
  display: flex;
  gap: 20px;
  align-items: flex-start;
  max-width: 1110px;
  margin: 30px auto;
  padding: 24px;
  border-radius: 14px;
  background:
    linear-gradient(var(--background-alt), var(--background-alt)) padding-box,
    var(--registr-btn-gradient) border-box;
  border: 2px solid transparent;
  box-shadow: var(--card-shadow);
}

.c-9564fb {
  flex-shrink: 0;
  width: 84px;
  height: 84px;
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  line-height: 1;
  background: var(--background-body);
  border: 3px solid var(--positive);
}

/* the score circle is filled with --background-body, so both figures take the
   body pair; --text-on-alt was white-on-white on every light palette */
.c-80c8c5 { font-size: 28px; font-weight: 800; color: var(--text-main); }
.c-df4de9 { margin-top: 2px; font-size: 11px; color: var(--text-muted); }

.c-410485 { min-width: 0; }
.c-410485 h3 { margin: 0 0 10px; font-size: 20px; color: var(--text-on-alt); }
.c-da0963 p { margin: 6px 0; line-height: 1.6; color: var(--text-on-alt); }

.c-68a92f { position: relative; padding-left: 24px; }
.c-68a92f::before { position: absolute; left: 0; }
.c-10d6f9::before { content: "\2714"; color: var(--positive); }
.c-067912::before { content: "\26A0"; color: var(--warning); }
.c-2deaa7::before { content: "\2716"; color: var(--negative); }

@media (max-width: 767px) {
  .c-da0963 { flex-direction: column; align-items: center; text-align: center; }
  .c-68a92f { text-align: left; }
}

/* ---------- Author Box (E-E-A-T) ---------- */
.c-c84235 {
  display: flex;
  gap: 16px;
  max-width: 1110px;
  margin: 30px auto;
  padding: 20px 22px;
  background: var(--background-alt);
  border-radius: 12px;
}

/* .c-c84235 visuals are unified in the w12/w13 END block (covers both the authored
   block — __avatar/__info/__role/__editorial — and the generated one — __body/__bio/
   __socials). Kept here: nothing, to avoid the old 64px-circle vs 84px conflict. */
.c-1ce79f { min-width: 0; }
.c-a532c3 { margin-bottom: 6px; font-size: 13px; color: var(--text-muted); }
.c-c84235 p { margin: 6px 0; line-height: 1.6; color: var(--text-on-alt); }
.c-3bd241 { font-size: 12px; font-style: italic; color: var(--text-muted); }

/* ---------- Responsible Gambling Notice (in-body) ---------- */
.c-4be952 {
  max-width: 1110px;
  margin: 24px auto;
  padding: 14px 18px;
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  border-radius: 10px;
}

.c-4c3203 { display: block; margin-bottom: 4px; font-size: 14px; font-weight: 700; color: var(--text-main); }
.c-4be952 p { margin: 0; font-size: 13px; line-height: 1.6; color: var(--text-muted); }

/* ---------- References List ---------- */
.c-865bfc {
  max-width: 1110px;
  margin: 16px auto;
  padding: 0;
  list-style: none;
}

.c-865bfc li {
  position: relative;
  margin: 6px 0;
  padding-left: 20px;
  font-size: 14px;
  color: var(--text-muted);
}

.c-865bfc li::before { content: "\2197"; position: absolute; left: 0; color: var(--text-accent); }

/* ---------- Registration / How-to Steps (numbered) ---------- */
.c-2053ea {
  max-width: 1110px;
  margin: 24px auto;
}

.c-8cb90b {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  padding: 12px 0;
  border-bottom: 1px solid var(--border-color);
}

.c-8cb90b:last-child { border-bottom: none; }

.c-0fe46b {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  font-weight: 700;
}

.c-219609 { padding-top: 4px; line-height: 1.6; color: var(--text-main); }

/* ==================================================
   REVIEW CONTENT BLOCKS (Chunk 3b-2) — FAQ accordion, similar casinos,
   screenshot slot. The FAQ keeps its h3+p markup (build_site.py split_faq /
   FAQ JSON-LD rely on it); the accordion is layered via the 'active' state
   class toggled in pages.js ('active' is obfuscation-excluded -> stays stable).
   ================================================== */

/* ---------- FAQ accordion (layered over existing .c-f4b65d h3 + p) ---------- */
.c-f4b65d h3 {
  cursor: pointer;
  position: relative;
  padding-right: 32px;
}

.c-f4b65d h3::after {
  content: "+";
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 20px;
  line-height: 1;
  color: var(--text-accent);
}

.c-f4b65d h3.active::after { content: "\2212"; } /* minus sign */

.c-f4b65d h3 + p,
.c-f4b65d h3 + div { display: none; }

.c-f4b65d h3.active + p,
.c-f4b65d h3.active + div { display: block; }

/* ---------- Similar Casinos (tail of single-brand reviews) ---------- */
.c-0f7dfc {
  max-width: 1110px;
  margin: 40px auto;
}

.c-0f7dfc h2 {
  margin-bottom: 20px;
  font-size: 28px;
  text-align: center;
}

.c-e4250b {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.c-b6bd5b {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 18px 16px;
  text-align: center;
  background: var(--background-alt);
  border-radius: 12px;
}

.c-cb59d7 img,
.c-150ceb {
  width: 120px;
  height: 72px;
  border-radius: 8px;
}

.c-cb59d7 img {
  object-fit: contain;
  border: 1px solid var(--border-color);
  background: #fff;
}

.c-150ceb {
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px dashed var(--border-color);
  background: var(--card-bg);
  font-size: 30px;
  font-weight: 800;
  color: var(--text-on-alt);
}

.c-ca8de7 { font-weight: 700; color: var(--text-on-alt); }
.c-ddaf4b { flex-grow: 1; font-size: 13px; color: var(--text-muted); }
.c-b6bd5b .c-4e7ab6 { width: 100%; animation: none; }

@media (max-width: 1023px) {
  .c-e4250b { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 767px) {
  .c-e4250b { grid-template-columns: 1fr; }
}

/* ---------- Main Illustration (generated, listicle pages) ---------- */
.c-1280a9 {
  max-width: 1110px;
  margin: 0 auto 30px;
}

.c-1280a9 img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 14px;
}

/* ---------- Casino Screenshot (manual slot) ---------- */
.c-71c67a {
  max-width: 1110px;
  margin: 24px auto;
}

.c-71c67a img {
  display: block;
  width: 100%;
  border-radius: 12px;
  border: 1px solid var(--border-color);
}

.c-71c67a figcaption {
  margin-top: 8px;
  font-size: 13px;
  color: var(--text-muted);
  text-align: center;
}

/* ==================================================
   REVIEW BLOCK ICON-SET (Step 2) — CSS-mask SVG markers.
   Replaces the unicode/emoji glyphs in fixed marker positions with crisp,
   palette/status-colored SVG icons (consistent across OS). Authored HTML is
   unchanged; tip/RG labels carry NO emoji — the icon is added here by class
   (see REVIEW-BLOCKS-GUIDE.md). -webkit-mask-* included for Safari/iOS.
   Icons live in assets/images/content/icons/ui/ (url is relative to this file).
   ================================================== */

/* Shared mask geometry for every icon marker */
.c-dd3bc9 h3::before, .c-88e675 h3::before,
.c-dd3bc9 h4::before, .c-88e675 h4::before,
.c-dd3bc9 li::before, .c-88e675 li::before,
.c-10d6f9::before, .c-067912::before, .c-2deaa7::before,
.c-ba1da2 .c-545926::before, .c-479f55 .c-545926::before,
.c-065205 .c-545926::before, .c-a32ca4 .c-545926::before,
.c-4c3203::before {
  content: "";
  display: inline-block;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-position: center; mask-position: center;
  -webkit-mask-size: contain; mask-size: contain;
}

/* Icon image + color per marker */
.c-dd3bc9 h3::before, .c-dd3bc9 h4::before, .c-dd3bc9 li::before, .c-10d6f9::before {
  -webkit-mask-image: url(icons/ui/check.svg);
  mask-image: url(icons/ui/check.svg);
  background-color: var(--positive);
}
.c-88e675 h3::before, .c-88e675 h4::before, .c-88e675 li::before, .c-2deaa7::before {
  -webkit-mask-image: url(icons/ui/cross.svg);
  mask-image: url(icons/ui/cross.svg);
  background-color: var(--negative);
}
.c-067912::before, .c-479f55 .c-545926::before {
  -webkit-mask-image: url(icons/ui/warning.svg);
  mask-image: url(icons/ui/warning.svg);
  background-color: var(--warning);
}
.c-ba1da2 .c-545926::before {
  -webkit-mask-image: url(icons/ui/bulb.svg);
  mask-image: url(icons/ui/bulb.svg);
  background-color: var(--positive);
}
.c-065205 .c-545926::before {
  -webkit-mask-image: url(icons/ui/magnifier.svg);
  mask-image: url(icons/ui/magnifier.svg);
  background-color: var(--info);
}
.c-a32ca4 .c-545926::before {
  -webkit-mask-image: url(icons/ui/chart.svg);
  mask-image: url(icons/ui/chart.svg);
  background-color: var(--text-accent);
}
.c-4c3203::before {
  -webkit-mask-image: url(icons/ui/shield.svg);
  mask-image: url(icons/ui/shield.svg);
  background-color: var(--text-accent);
}

/* Sizing / positioning per context (1em → scales with the text) */
.c-dd3bc9 h3::before, .c-88e675 h3::before,
.c-dd3bc9 h4::before, .c-88e675 h4::before { width: 1em; height: 1em; }
.c-dd3bc9 li::before, .c-88e675 li::before { width: 1em; height: 1em; top: 0.2em; }
.c-10d6f9::before, .c-067912::before, .c-2deaa7::before {
  width: 1.05em; height: 1.05em; top: 0.15em;
}
.c-ba1da2 .c-545926::before, .c-479f55 .c-545926::before,
.c-065205 .c-545926::before, .c-a32ca4 .c-545926::before,
.c-4c3203::before {
  width: 1.1em; height: 1.1em; margin-right: 6px; vertical-align: -0.18em;
}

/* ==================================================
   SCORE BARS (OPTIONAL block) — section scores / stats as CSS bars.
   The value rides on an inline custom property (style="--score: 9.2", optional
   --max, default 10) — safe with deploy obfuscation: custom properties are never
   renamed and style attributes pass through untouched. Decorative reinforcement
   only: scores in H2 headings stay the source of truth, articles must read
   complete without this block.
   ================================================== */
.c-1b59fa {
  max-width: 1110px;
  margin: 24px auto;
  display: grid;
  gap: 10px;
}

.c-8cffda {
  display: grid;
  grid-template-columns: 160px 1fr auto;
  align-items: center;
  gap: 12px;
}

.c-c77282 {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-main);
}

.c-640de4 {
  display: block;
  height: 10px;
  border-radius: 5px;
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  overflow: hidden;
}

.c-d26aee {
  display: block;
  height: 100%;
  width: calc(var(--score, 0) / var(--max, 10) * 100%);
  border-radius: 5px;
  background: var(--registr-btn-gradient);
}

.c-ba5dfc {
  min-width: 44px;
  font-size: 13px;
  font-weight: 700;
  color: var(--text-accent);
  text-align: right;
  white-space: nowrap;
}

@media (max-width: 767px) {
  .c-8cffda { grid-template-columns: 104px 1fr auto; gap: 8px; }
  .c-c77282 { font-size: 12.5px; }
}

/* ==================================================
   STAGE A REFINEMENTS (post-e2e operator feedback)
   ================================================== */

/* table-rate v1.1 — info stack, score badge, logo placeholder, highlight glow */
.c-a46e8a .c-67e784 {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
  text-align: left;
}

.c-a46e8a .c-8c229d { display: block; }

.c-a46e8a .c-9588f5 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 2px solid var(--positive);
  background: var(--background-body);
  /* the badge is filled with the PAGE colour, so it needs the body pair —
     --text-on-alt is white on every light palette (rule 194c, both directions) */
  color: var(--text-main);
  font-weight: 800;
  font-size: 15px;
}

.c-a46e8a .c-3863ca { justify-self: end; }

.c-a46e8a .c-7b777f {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 166px;
  height: 98px;
  border-radius: 10px;
  border: 1px dashed var(--border-color);
  background: var(--card-bg);
  font-size: 34px;
  font-weight: 800;
  color: var(--text-on-alt);
}

.c-a46e8a .c-c0a2f9 {
  border-color: var(--text-accent);
  box-shadow: 0 0 14px var(--text-accent);
}

/* Table extras v1.2 — label badge, params row, internal review link */
.c-a46e8a .c-577b06 {
  display: inline-block;
  margin-left: 8px;
  padding: 2px 8px;
  border-radius: 4px;
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  vertical-align: middle;
}

.c-a46e8a .c-1b7a1d {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  margin-top: 6px;
}

.c-a46e8a .c-fe6204 {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text-on-alt);
}

.c-a46e8a .c-fe6204 b {
  display: block;
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  color: var(--text-on-alt);
  opacity: 0.75;
}

.c-a46e8a .c-1ff0d9 {
  margin-left: 8px;
  font-size: 12px;
  font-weight: 400;
  color: var(--text-on-alt);
  opacity: 0.85;
  text-decoration: underline;
  vertical-align: middle;
}

@media (max-width: 767px) {
  .c-a46e8a .c-1b7a1d { justify-content: center; }
}

/* ==================================================
   TABLE v1.3 + chrome polish (operator feedback round 2, bonus.c-d24d50)
   ================================================== */

/* Score — compact numeric badge pinned top-right of the row (bonus.ca pattern) */
.c-a46e8a .c-8c229d {
  position: absolute;
  top: 10px;
  right: 14px;
}

.c-a46e8a .c-9588f5 {
  min-width: 34px;
  height: 34px;
  font-size: 13px;
  border-width: 2px;
}

/* Emphasis swap: the BONUS is the loud line, the name is secondary */
.c-a46e8a .c-e30067 {
  font-size: 15px;
  font-weight: 600;
}

.c-a46e8a .c-adcb68 {
  font-size: 18px;
  font-weight: 800;
  color: var(--text-on-alt);
  margin-top: 2px;
}

.c-a46e8a .c-adcb68 small {
  font-size: 12.5px;
  font-weight: 400;
  color: var(--text-on-alt);
  opacity: 0.8;
}

/* Founded — tiny muted note next to the name (not a params bullet) */
.c-a46e8a .c-2da6b1 {
  display: inline-block;
  margin-left: 8px;
  font-size: 11px;
  font-weight: 400;
  color: var(--text-on-alt);
  opacity: 0.75;
  vertical-align: middle;
}

/* CTA column: review link sits small + centered UNDER the button */
.c-a46e8a .c-3863ca {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}

.c-a46e8a .c-1ff0d9 {
  margin-left: 0;
  font-size: 12px;
}

@media (max-width: 767px) {
  .c-a46e8a .c-8c229d { top: 12px; right: 12px; }
}

/* Disclosure (desktop): right side of the meta row, frameless, link-like */
@media (min-width: 768px) {
  .c-0aeaa3 {
    float: right;
    background: none;
    border: none;
    padding: 0;
  }

  .c-2b8925 { text-decoration: underline; cursor: pointer; }

  /* anchored at the far right now — open the tooltip leftwards */
  .c-b45129 { left: auto; right: -8px; }
  .c-b45129::before { left: auto; right: 16px; }
}

/* Back to top — bonus.c-d24d50 panel button; desktop only */
.c-f6777b {
  width: 46px;
  height: 46px;
  border-radius: 8px;
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  color: var(--text-main);
  box-shadow: var(--card-shadow);
}

.c-f6777b svg { width: 22px; height: 22px; }

@media (max-width: 767px) {
  .c-f6777b { display: none; }
}

@media (max-width: 767px) {
  .c-a46e8a .c-67e784 { text-align: center; align-items: center; }
  .c-a46e8a .c-3863ca { justify-self: stretch; width: 100%; }
  .c-a46e8a .c-7b777f { width: 140px; height: 82px; }
}

/* Header bonus button — wrap instead of overflowing past the logo on phones */
@media (max-width: 767px) {
  .c-f6e964 .c-4e7ab6 {
    white-space: normal;
    max-width: 52vw;
    font-size: 12px;
    line-height: 1.25;
    padding: 6px 10px;
    text-align: center;
  }
}

/* Disclosure tooltip — anchor left (centered version clipped at the viewport edge) */
.c-b45129 {
  left: -8px;
  transform: none;
  width: min(280px, calc(100vw - 40px));
}

.c-b45129::before {
  left: 16px;
  right: auto;
  transform: rotate(45deg);
}

@media (max-width: 767px) {
  .c-b45129 { left: -8px; right: auto; }
  .c-b45129::before { left: 16px; right: auto; }
}

/* Hero compaction — first screen was too tall (operator feedback): smaller H1,
   author + disclosure share ONE row, tighter margins, intro paragraph spacing.
   The big author block with photo/bio belongs at the tail (author-box block). */
.c-16eeb2 { margin-bottom: 20px; }

.c-05e04b {
  font-size: 42px;
  margin-bottom: 18px;
}

@media (max-width: 1023px) { .c-05e04b { font-size: 32px; } }
@media (max-width: 767px)  { .c-05e04b { font-size: 23px; margin-bottom: 12px; } }

.c-ae8ed1 {
  display: inline-flex;
  vertical-align: middle;
  margin: 0 14px 8px 0;
}

.c-b7a4f9,
.c-e5bacc img {
  width: 36px;
  height: 36px;
  font-size: 16px;
}

.c-0aeaa3 {
  display: inline-flex;
  vertical-align: middle;
  margin-top: 0;
}

.c-16263b { margin-top: 10px; }
.c-16263b p + p { margin-top: 14px; }

/* Hero-CTA score badge — top-right of the card (was inline above the button) */
.c-d3eeb6 { position: relative; }

.c-9feb95 {
  float: none;
  position: absolute;
  top: 14px;
  right: 14px;
  margin: 0;
}

@media (max-width: 767px) {
  .c-9feb95 { position: absolute; top: 12px; right: 12px; margin: 0; width: 54px; height: 54px; }
}

/* Back to top (button is created by pages.js; 'show' is the visibility state) */
.c-f6777b {
  position: fixed;
  bottom: 22px;
  right: 22px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  font-size: 20px;
  font-weight: 700;
  border: none;
  cursor: pointer;
  z-index: 900;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s ease;
  box-shadow: var(--card-shadow);
}

.c-f6777b.show {
  opacity: 1;
  pointer-events: auto;
}

/* Author verified badge — file-based mask icon (replaces the base64 <img>) */
.c-879d49::after {
  content: "";
  display: inline-block;
  width: 16px;
  height: 16px;
  -webkit-mask-image: url(icons/ui/verified.svg);
  mask-image: url(icons/ui/verified.svg);
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-size: contain; mask-size: contain;
  background-color: var(--positive);
}

/* v1.3 order-fix — these MUST be last: earlier same-specificity rules above
   (round back-to-top, left-anchored tooltip) would win otherwise */
.c-f6777b {
  width: 46px;
  height: 46px;
  padding: 0; /* water.css button padding (10px 30px) squeezed the svg to 0 width */
  border-radius: 8px;
  background: var(--background-alt); /* solid — card-bg rgba looked transparent */
  border: 1px solid var(--border-color);
  color: var(--text-on-alt);
}

.c-f6777b svg {
  width: 22px;
  height: 22px;
  flex-shrink: 0;
}

/* CTA column: fixed slots — the button keeps the SAME vertical spot in every row,
   with or without the review link / params (the link row is always reserved) */
.c-a46e8a .c-3863ca {
  display: grid;
  grid-template-rows: 46px 20px;
  align-content: center;
  justify-items: center;
  gap: 2px;
  margin-top: 12px; /* keep clear air below the absolute top-right score badge */
}

@media (max-width: 767px) {
  .c-f6777b { display: none; }

  /* mobile breathing room: params spacing + slightly tighter row padding */
  .c-a46e8a .c-1b7a1d { margin-top: 10px; gap: 8px 18px; }
  .c-a46e8a tr,
  .c-a46e8a .c-3252ac { padding: 18px 14px 16px; }

  /* small text link, not full-width: review link is excluded from a.c-b6bbab rules */
  .c-a46e8a .c-1ff0d9 { width: auto; }
}

@media (min-width: 768px) {
  .c-b45129 { left: auto; right: -8px; }
  .c-b45129::before { left: auto; right: 16px; }

  /* params (Min. dep / Wager / Payout) — more air between items on desktop */
  .c-a46e8a .c-1b7a1d { gap: 6px 28px; }
}

/* ==================================================
   table-rate RICH variant (v3, premiumtimesng anatomy):
   bonus chips (label over title, featured frame, optional shake) + payment chips
   ================================================== */
.c-a46e8a .c-546a2d {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
}

.c-a46e8a .c-c8300e {
  position: relative;
  display: inline-block;
  padding: 8px 12px;
  border-radius: 6px;
  border: 1px solid var(--border-color);
  background: var(--card-bg);
  text-align: left;
  max-width: 300px;
}

.c-a46e8a .c-daee6a {
  display: block;
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  /* same chip, same rule as the pay chips: --text-accent collapsed to 2.25:1 live
     and failed 19/45 presets. The chip still reads as accented — the featured
     frame and glow below keep using --text-accent, which is decorative. */
  color: var(--text-on-alt);
  opacity: 0.8;
}

.c-a46e8a .c-ea4cbb {
  display: block;
  font-size: 15px;
  font-weight: 800;
  line-height: 1.3;
  color: var(--text-on-alt);
}

.c-a46e8a .c-037bd2 {
  border-color: var(--text-accent);
  box-shadow: 0 0 10px var(--text-accent);
}

.c-a46e8a .c-587327 {
  animation: tilt-shake 2.4s ease-in-out infinite;
}

/* shared attention nudge (bonus chips + header gift button) — short rotate burst,
   then rest for the remainder of the period (override via animation-duration) */
@keyframes tilt-shake {
  0% { transform: rotate(0); }
  2% { transform: rotate(1.5deg); }
  4% { transform: rotate(-1.5deg); }
  6% { transform: rotate(1.5deg); }
  8% { transform: rotate(-1.5deg); }
  10%, 100% { transform: rotate(0); }
}

/* Payment chips row (rich rows; text chips — brand payment ICONS are a later phase) */
.c-a46e8a .c-d3d94e {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}

.c-a46e8a .c-52e7cc {
  padding: 2px 8px;
  border-radius: 4px;
  border: 1px solid var(--border-color);
  background: var(--card-bg);
  font-size: 11px;
  font-weight: 600;
  /* The chip is --card-bg over the row over the table's --background-alt, so it
     takes the ALT pair. --text-muted is a body colour: on a mixed palette (light
     page + dark band) it measured 1.05:1 live and failed 20/45 presets — the
     payment names were simply not there. De-emphasis via opacity (rule 194c). */
  color: var(--text-on-alt);
  opacity: 0.8;
  white-space: nowrap;
}

/* Rich rows hold more content — a little extra padding */
.c-8ecd23 tr,
.c-8ecd23 .c-3252ac {
  padding: 20px;
}

@media (max-width: 767px) {
  .c-a46e8a .c-546a2d { justify-content: center; }
  .c-a46e8a .c-c8300e { width: 100%; max-width: 100%; text-align: center; }
  .c-a46e8a .c-d3d94e { justify-content: center; }
}

/* ==================================================
   Header gift / Extra-Bonus button (Review Settings → header_gift)
   build_site.py injects .c-1c6cdb into .header-buttons; pages.js #9 toggles 'open'
   ================================================== */
.c-1c6cdb {
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
}

.c-833aff {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 40px;
  padding: 6px 12px;
  border-radius: 8px;
  border: 1px solid var(--text-accent);
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
  text-decoration: none;
  transition: transform 0.2s ease;
}

.c-833aff:hover {
  text-decoration: none;
  transform: scale(1.03);
}

.c-ab6a57 {
  width: 26px;
  height: 26px;
  flex-shrink: 0;
}

.c-01da1d {
  animation: tilt-shake 2.5s ease-in-out infinite;
}

.c-52cb30 {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 280px;
  max-width: min(320px, calc(100vw - 24px));
  padding: 8px;
  border-radius: 10px;
  border: 1px solid var(--border-color);
  background: var(--background-alt);
  box-shadow: var(--card-shadow);
  display: none;
  flex-direction: column;
  gap: 6px;
  z-index: 950;
}

.c-1c6cdb.open .c-52cb30 { display: flex; }

.c-bd3a92 {
  display: block;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid var(--border-color);
  background: var(--card-bg);
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}

.c-bd3a92:hover {
  border-color: var(--text-accent);
  text-decoration: none;
}

.c-685cd6 {
  display: inline-block;
  margin-bottom: 2px;
  padding: 1px 6px;
  border-radius: 4px;
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
}

.c-03a25a {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-on-alt);
  opacity: 0.8;
}

.c-f95d6d {
  display: block;
  font-size: 14px;
  font-weight: 800;
  color: var(--text-on-alt);
}

@media (max-width: 767px) {
  /* the gift button REPLACES the header bonus button (one CTA) — keep the text,
     wrap it within the same width cap as the old bonus button (A1 rule) */
  .c-833aff {
    height: auto;
    min-height: 36px;
    padding: 6px 10px;
    white-space: normal;
    max-width: 52vw;
    line-height: 1.2;
    text-align: center;
  }

  /* right-anchored absolute drop overflows the left viewport edge on phones —
     pin it to the viewport just under the fixed 54px header instead */
  .c-52cb30 {
    position: fixed;
    top: 62px;
    left: 12px;
    right: 12px;
    min-width: 0;
    max-width: none;
  }
}

/* ==================================================
   w10 — operator feedback round 5:
   rank badge in the row's top-left corner (frees the 32px counter column),
   brand name 16px, review link a bit lower, mobile drawer restyle
   ================================================== */

/* Desktop rows: counter column dropped, rank pinned top-left like the score badge */
.c-a46e8a tr,
.c-a46e8a .c-3252ac {
  grid-template-columns: 190px minmax(0, 1fr) auto;
}

.c-a46e8a tr::before,
.c-a46e8a .c-3252ac::before {
  position: absolute;
  top: 10px;
  left: 12px;
  min-width: 26px;
  height: 26px;
  font-size: 12px;
}

/* logo slides right out of the rank badge's corner (td padding:0 is the base rule) */
.c-a46e8a td.c-94060b {
  padding-left: 24px !important;
}

.c-a46e8a .c-e30067 {
  font-size: 16px;
}

/* review link sits a bit lower under the CTA button */
.c-a46e8a .c-3863ca {
  gap: 6px;
}

@media (max-width: 767px) {
  /* phones keep the stacked single-column card (rank is already absolute there) */
  .c-a46e8a tr,
  .c-a46e8a .c-3252ac {
    grid-template-columns: 1fr;
  }

  .c-a46e8a td.c-94060b {
    padding-left: 0 !important;
  }
}

/* Mobile drawer — slide-in panel with dim overlay (kings/bonus.ca pattern);
   same checkbox mechanics, pure CSS restyle */
@media (max-width: 1023px) {
  .c-230846 {
    display: flex;
    width: min(320px, 86vw);
    height: 100vh;
    height: 100dvh;
    padding: 0 0 20px;
    border-left: 1px solid var(--border-color);
    transform: translateX(105%);
    visibility: hidden;
    transition: transform 0.28s ease, visibility 0.28s;
    overflow-y: auto;
    z-index: 1100;
  }

  .c-86d2dc:checked ~ .c-230846 {
    transform: translateX(0);
    visibility: visible;
    /* spread-shadow doubles as a full-screen dim overlay (no extra element) */
    box-shadow: 0 0 0 100vmax rgba(0, 0, 0, 0.55), -10px 0 28px rgba(0, 0, 0, 0.3);
  }

  .c-edc148 {
    position: static;
    align-self: flex-end;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    margin: 14px 16px 6px;
    border: 1px solid var(--border-color);
    border-radius: 8px;
    font-size: 16px;
    color: var(--text-on-alt);
  }

  .c-230846 ul li a {
    padding: 15px 22px;
    font-size: 16px;
    font-weight: 600;
    color: var(--text-on-alt);
  }

  .c-230846 ul li a::after {
    /* --text-accent collapses on --background-alt in 17/45 palettes (rule 194c) */
    border-left-color: var(--text-on-alt);
  }

  .c-230846 ul li:first-child {
    border-top: 1px solid var(--border-color);
  }

  /* CTA pinned to the drawer bottom */
  .c-458f8d {
    margin-top: auto;
    padding: 20px 20px 4px;
  }
}

/* ==================================================
   w11 — operator feedback round 6:
   gift count badge + 2-line mobile text + no burger overlap,
   bonus chips as a horizontal slider, mobile disclosure tooltip fix
   ================================================== */

/* count badge — number of bonuses the gift button holds, in the corner */
.c-833aff { position: relative; overflow: visible; }

.c-29d32c {
  position: absolute;
  top: -7px;
  right: -7px;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 9px;
  background: #E63946;
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  line-height: 1;
  border: 1.5px solid var(--background-body);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}

@media (max-width: 1023px) {
  /* burger is absolute (out of flow) at right:20 — reserve room so the gift button
     sits just LEFT of it instead of overlapping (it's the only header CTA now) */
  .c-f6e964 { margin-right: 44px; }
}

@media (max-width: 767px) {
  /* two-word CTA wraps one word per line (Extra / Bonus): min-content makes the
     text box only as wide as its longest word, so spaces break */
  .c-a49464 {
    white-space: normal;
    max-width: min-content;
    text-align: center;
    line-height: 1.12;
  }
  .c-833aff { max-width: none; height: auto; min-height: 36px; }
  .c-29d32c { top: -6px; right: -6px; }
}

/* Bonus chips → horizontal slider: one row, next chip peeks (cue to swipe),
   slim scrollbar track below. Falls back to a single full chip when only one. */
.c-8ecd23 .c-546a2d {
  flex-wrap: nowrap;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  gap: 8px;
  padding-bottom: 8px;
  scrollbar-width: thin;
  scrollbar-color: var(--text-accent) var(--border-color);
  -webkit-overflow-scrolling: touch;
}

.c-8ecd23 .c-c8300e {
  flex: 0 0 clamp(180px, 76%, 270px);
  max-width: none;
  scroll-snap-align: start;
}

.c-8ecd23 .c-546a2d::-webkit-scrollbar { height: 5px; }
.c-8ecd23 .c-546a2d::-webkit-scrollbar-track {
  background: var(--border-color);
  border-radius: 3px;
}
.c-8ecd23 .c-546a2d::-webkit-scrollbar-thumb {
  background: var(--text-accent);
  border-radius: 3px;
}

/* single bonus → no slider, chip keeps its NORMAL width (not stretched full-row) */
.c-8ecd23 .c-546a2d:has(.c-c8300e:only-child) {
  overflow-x: visible;
}

@media (max-width: 767px) {
  /* keep the slider left-aligned on phones (centering hides the peek cue) */
  .c-8ecd23 .c-546a2d { justify-content: flex-start; }
  .c-8ecd23 .c-c8300e { flex: 0 0 80%; text-align: left; }
}

/* Mobile disclosure tooltip — anchor to the icon's RIGHT edge so a right-side icon
   doesn't push the 280px box off-screen (earlier left:-8 override sent it right-off) */
@media (max-width: 767px) {
  .c-b45129 {
    left: auto;
    right: 0;
    transform: none;
    width: min(280px, calc(100vw - 24px));
  }
  .c-b45129::before { left: auto; right: 14px; transform: rotate(45deg); }
}

/* ==================================================
   w12 — operator feedback round 7:
   header CTA flush-right (symmetric to the logo), bonus pagination slider,
   single-bonus normal width, gap before the CTA column
   ================================================== */

/* Desktop: the legacy 80px right padding pushed the CTA 100px off the edge while the
   logo sits ~20px in — drop it so the gift button mirrors the logo at the edge */
@media (min-width: 1024px) {
  .c-6540a9 { padding-right: 0; }
}

/* Mobile: w11 gave .c-f6e964 a 44px margin (too big a gap from the burger) —
   tighten it so the single header CTA sits just left of the burger */
@media (max-width: 1023px) {
  .c-f6e964 { margin-right: 8px; }
}

/* Bonus chips don't butt against the CTA button (peek chip kept clear of the gap) */
.c-8ecd23 .c-67e784 { padding-right: 14px; }

/* single bonus → chip at its normal width, NOT stretched to fill the row */
.c-8ecd23 .c-546a2d:has(.c-c8300e:only-child) .c-c8300e {
  flex: 0 0 clamp(180px, 76%, 270px);
}

/* Pagination dots under the bonus slider (pages.js #10 builds & syncs them;
   'active' is obfuscation-excluded). Hidden until JS adds .c-079254 so a
   no-JS / single-chip row shows nothing. */
.c-cc5045 {
  display: none;
  gap: 6px;
  margin-top: 8px;
  justify-content: center;
}

.c-079254 { display: flex; }

.c-1b5281 {
  width: 8px;
  height: 8px;
  padding: 0;
  border: none;
  border-radius: 50%;
  background: var(--border-color);
  cursor: pointer;
  transition: background 0.2s ease, transform 0.2s ease;
}

.c-1b5281.active {
  background: var(--text-accent);
  transform: scale(1.25);
}

@media (max-width: 767px) {
  .c-8ecd23 .c-67e784 { padding-right: 0; }
}

/* ==================================================
   Author box — optional bio card before the FAQ (build_site generate_author_box)
   ================================================== */
.c-c84235 {
  display: flex;
  gap: 18px;
  align-items: flex-start;
  max-width: 1110px;
  margin: 30px auto;
  padding: 22px;
  border-radius: 12px;
  background: var(--background-alt);
  border: 1px solid var(--border-color);
}

/* Avatar = rounded SQUARE (operator preference). One element holds either the <img>
   or the initial on the gradient — works for the generated AND the authored block. */
.c-35ee6a {
  margin: 0;
  flex-shrink: 0;
  width: 84px;
  height: 84px;
  border-radius: 14px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  font-size: 34px;
  font-weight: 800;
  border: 2px solid var(--text-accent);
}

.c-35ee6a img {
  width: 100%;
  height: 100%;
  border-radius: 12px;
  object-fit: cover;
}

.c-e73bf2 { min-width: 0; }

.c-fdf5f7 {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 18px;
  font-weight: 800;
  color: var(--text-on-alt);
}

.c-4ff47d {
  margin: 8px 0 0;
  font-size: 14px;
  line-height: 1.6;
  color: var(--text-muted);
}

.c-f65302 {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 12px;
}

.c-d9e245 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  color: var(--text-on-alt);
  text-decoration: none;
  transition: transform 0.2s ease, border-color 0.2s ease;
}

.c-d9e245:hover {
  transform: translateY(-2px);
  border-color: var(--text-accent);
  text-decoration: none;
}

.c-d9e245 svg { width: 17px; height: 17px; flex-shrink: 0; }

@media (max-width: 767px) {
  .c-c84235 {
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 20px 16px;
  }
  .c-fdf5f7 { justify-content: center; }
  .c-f65302 { justify-content: center; }
}

/* ==================================================
   w13 — operator feedback round 8:
   bonus slider = drag + dash indicators + no native scrollbar; filled disclosure dot
   ================================================== */

/* hide the native horizontal scrollbar — the dash indicators replace it */
.c-8ecd23 .c-546a2d {
  scrollbar-width: none;
  -ms-overflow-style: none;
  cursor: grab;
}
.c-8ecd23 .c-546a2d::-webkit-scrollbar { height: 0; width: 0; display: none; }

/* pagination = dashes (premiumtimesng style), not round dots */
.c-1b5281 {
  width: 20px;
  height: 4px;
  border-radius: 2px;
  transform: none;
}
.c-1b5281.active {
  background: var(--text-accent);
  transform: none;
  width: 28px;
}

/* Disclosure trigger — FILLED accent dot with a contrasting glyph (the outline
   ⓘ glyph was hard to read on the page background) */
.c-de51a8 {
  background: var(--text-accent);
  border: none;
  color: var(--background-body);
}

.c-e7fc43 {
  font-family: Georgia, "Times New Roman", serif;
  font-style: italic;
  font-weight: 700;
  font-size: 13px;
  line-height: 1;
}

/* ==================================================
   w14 — operator feedback round 9:
   mobile disclosure to the right + frameless (was inline next to the author)
   ================================================== */
@media (max-width: 767px) {
  .c-0aeaa3 {
    float: right;
    background: none;
    border: none;
    padding: 0;
    margin-top: 4px;
  }
}

/* ==================================================
   w15 — kill water.css's broken mailto pseudo-icon:
   water.c-14318b.css has  a[href^=mailto]:before{content:"=� "}  (a mojibaked envelope
   emoji) — it prepended a "?"/"=�" glyph before every email link, incl. the author
   email icon. Remove it everywhere in the review template.
   ================================================== */
a[href^="mailto:"]::before { content: none !important; }

/* ==================================================
   w18 — operator feedback round 13:
   hero author = emphasized NAME (no avatar circle, saves first-screen space);
   intro collapses to ~3 lines with a localized Read all / Hide toggle (premiumtimesng)
   ================================================== */

/* drop the 48px avatar circle in the hero (the photo lives in the author-box before
   FAQ) — keep just the name + date. Works on existing baked backups via CSS. */
.c-e5bacc { display: none !important; }

.c-ae8ed1 {
  gap: 10px;
  margin-bottom: 12px;
}

.c-964f1b {
  font-size: 17px;
  font-weight: 700;
}

/* Intro Read all / Hide — the '--clamp' class IS the collapsed state (JS toggles it:
   remove = expand, add = collapse). Simpler/robust vs a separate 'expanded' class that
   lost the cascade to the base max-height. '--clamp' is in template CSS (obfuscated
   consistently); 'review-hero__readmore--ready' shows the button only when it overflows. */
/* Read all / Hide: the '--clamp' class clips to exactly 3 lines; JS toggles it
   instantly. (A max-height transition was unreliable here — animating to/from a huge
   or class-overridden value stuck mid-way and read as a jerk; instant toggle keeps the
   top anchored and just reveals the rest downward, which is what was asked.) */
/* overflow:hidden on BOTH states (not just --clamp) so the block is always a BFC —
   otherwise the <p>'s top margin collapses out only when expanded and nudges the text
   down ~10px on toggle. Expanded has no max-height, so nothing is actually clipped. */
.c-16263b { position: relative; overflow: hidden; }

.c-9720ee {
  max-height: 6.8em; /* 4 lines (4 × 1.7em); the fade below covers the 4th → 3 fully
                        visible + 4th a faded teaser */
}

/* fade-out hint over the 4th line while collapsed (~1 line tall) */
.c-9720ee::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1.7em;
  background: linear-gradient(transparent, var(--background-body));
  pointer-events: none;
}

.c-8956b4 {
  display: none;
  margin-top: 8px;
  padding: 0;
  background: none;
  border: none;
  color: var(--text-accent);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  text-decoration: underline;
}

.c-e6a579 { display: inline-block; }

/* ==================================================
   w19 — operator feedback round 14:
   gift dropdown items get a Get Bonus affordance button (whole item still opens the
   ref); hero spacing — 30px under h1, intro hugs the author
   ================================================== */

/* dropdown item = info (left) + CTA button (right); the <a> stays fully clickable */
.c-bd3a92 {
  display: flex;
  align-items: center;
  gap: 10px;
}

.c-0c3d2b {
  display: flex;
  flex-direction: column;
  align-items: flex-start; /* badge/name/bonus sized to content — not stretched full-width */
  min-width: 0;
  flex: 1 1 auto;
}

.c-6ee75f {
  flex-shrink: 0;
  align-self: center;
  padding: 7px 14px;
  border-radius: 6px;
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  white-space: nowrap;
  pointer-events: none; /* clicks fall through to the item link */
}

/* hero spacing (operator): 30px below the H1, intro sits right under the author/disclosure */
.c-05e04b { margin-bottom: 30px; }
.c-16263b { margin-top: 0; }


/* ---------- Related Pages (cluster interlinking block) ---------- */
.c-2b1a42 {
  max-width: 1110px;
  margin: 40px auto;
}

.c-2b1a42 h2 {
  margin-bottom: 20px;
  font-size: 28px;
  text-align: center;
}

.c-bd3467 {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin: 0;
  padding: 0;
}

.c-bd3467 li {
  margin: 0;
}

.c-bd3467 a {
  display: inline-block;
  padding: 10px 18px;
  border: 1px solid var(--border-color);
  border-radius: 999px;
  background: var(--background-alt);
  color: var(--text-on-alt);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.3;
  text-decoration: none;
  transition: border-color .2s ease, transform .2s ease;
}

.c-bd3467 a:hover {
  border-color: var(--border-accent);
  transform: translateY(-1px);
  text-decoration: none;
}
/* ==================================================
   Contact page (service page, review sites)
   Mirrors the base template block. Palette rules that apply here:
   the card is filled with --background-alt, so EVERY text on it is
   --text-on-alt (rule 58/194c) — --links/--text-accent are unreadable
   on alt in mixed palettes. Inputs sit on --background-body, so they
   use the body pair (--text-main). The submit button re-declares its
   own background on :hover because water.c-14318b.css repaints any
   <button>:hover with --button-hover (rule 194a), which would drop the
   gradient its text colour is paired with.
   ================================================== */
.c-8ceeee {
  max-width: 800px;
  margin: 40px auto 60px;
  padding: 0 20px;
}

.c-9e4bd8 {
  background: var(--background-alt);
  border-radius: 15px;
  padding: 30px;
  box-shadow: 0 5px 25px rgba(0, 0, 0, 0.2);
}

.c-bbb28f {
  font-size: 2.2em;
  margin: 0 0 15px;
  text-align: center;
  color: var(--text-on-alt);
}

.c-80bca8 {
  text-align: center;
  margin-bottom: 30px;
  color: var(--text-on-alt);
  opacity: 0.85;
}

.c-ffe899 {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.c-d89f5f {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.c-d89f5f label {
  font-weight: 600;
  color: var(--text-on-alt);
}

.c-d89f5f input,
.c-d89f5f textarea {
  padding: 12px 15px;
  border-radius: 8px;
  border: 1px solid var(--border-color);
  background: var(--background-body);
  color: var(--text-main);
  font-size: 16px;
  transition: border-color var(--transition-speed);
}

.c-d89f5f input:focus,
.c-d89f5f textarea:focus {
  outline: none;
  border-color: var(--border-accent);
}

.c-d89f5f textarea {
  resize: vertical;
  min-height: 150px;
}

.c-d70d75 {
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  border: none;
  padding: 12px 24px;
  font-size: 18px;
  font-weight: 600;
  border-radius: 8px;
  cursor: pointer;
  transition: transform 0.3s ease;
  text-align: center;
  margin-top: 10px;
}

.c-d70d75:hover {
  background: var(--registr-btn-gradient);
  color: var(--registr-btn-color);
  box-shadow: none;
  transform: scale(1.02);
}

.c-d70d75:disabled {
  opacity: 0.7;
  cursor: not-allowed;
}

.c-0613c7 {
  text-align: center;
  background: none;
  border: 1px solid var(--border-accent);
  border-radius: 8px;
  padding: 20px;
  margin: 20px 0;
}

.c-0613c7 p {
  color: var(--text-on-alt);
  font-size: 18px;
  font-weight: 600;
  margin: 0;
}

@media (max-width: 767px) {
  .c-9e4bd8 {
    padding: 20px;
  }

  .c-bbb28f {
    font-size: 1.8em;
  }
}

/* ── Payment / provider logo strips ──────────────────────────────────────────
   Ported from the prestige template so the review track can use payment-library
   logos too (payments hubs, 2026-09-30). applyLogoStrips() is NOT gated by
   template_variant — it fills any <!-- CONTENT:PAYMENTS --> it finds — but the
   markup it injects is only the TILES, so the .logo-strip/.logo-grid wrapper is
   authored in the content, and these rules have to exist here for two reasons:
   layout, and rule 173 — a class with no rule in this stylesheet is missing from
   the obfuscation map and survives as a LITERAL in the deployed HTML, i.e. a
   shared fingerprint across the grid.
   Deviation from prestige, on purpose: the text fallback sits on a
   --background-alt tile, so it takes --text-on-alt (the alt-surface contrast
   rule), not --text-muted. */
.c-acd821 { margin: 20px 0; }
/* Modifiers carry no extra look, but they must exist so the obfuscation map covers them. */
.c-107e45 { margin-top: 24px; }
.c-40f450 { margin-bottom: 24px; }
.c-acd821 .c-1fd67a:empty { display: none; }
.c-acd821:has(.c-1fd67a:empty) { display: none; }

.c-1fd67a {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 9px;
}
.c-1a941f { grid-template-columns: repeat(4, 1fr); }

.c-1fd67a a, .c-1fd67a span {
  display: grid;
  place-items: center;
  min-height: 54px;
  padding: 8px 6px;
  background: var(--background-alt);
  border: 1px solid var(--border-accent);
  border-radius: 10px;
  overflow: hidden;
}
/* Logos keep their own colours: the packs mix white wordmarks, black plates and
   full-colour cards, so each tile gets the plate that contrasts with it (set in PHP). */
.c-bf9cc0 { position: relative; }
.c-1fd67a .c-8766db { background: #0d1117; }
.c-1fd67a .c-681342 { background: #f4f4f6; border-color: rgba(0, 0, 0, 0.12); }
.c-1fd67a img {
  max-height: 30px;
  max-width: 84%;
  width: auto;
  object-fit: contain;
  transition: transform var(--transition-speed) ease;
}
/* Text fallback when a logo file is missing */
.c-1fd67a em {
  font-style: normal;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--text-on-alt);
  text-align: center;
  line-height: 1.2;
}

@media (max-width: 560px) {
  .c-1fd67a { grid-template-columns: repeat(2, 1fr); }
  .c-1a941f { grid-template-columns: repeat(3, 1fr); }
}

@media (hover: hover) and (pointer: fine) {
  .c-1fd67a a:hover img, .c-1fd67a span:hover img { transform: scale(1.16); }
  .c-1fd67a a:hover, .c-1fd67a span:hover { border-color: var(--text-accent); }
}

/* ==================================================
   NAV DROPDOWN (custom pages with menu_parent)
   Pure CSS — hover/focus-within on desktop, always
   expanded inside the burger drawer. No JS (rule 124e).
   Dropdown panel sits on --background-alt => text is
   --text-on-alt only, states via underline (rule 245).
   SPECIFICITY: the base rule `.main-nav ul {display:flex}`
   (0,1,1) also matches the nested <ul class="nav-sub">, so
   the panel MUST be hidden by a selector of >= (0,2,0) —
   a bare `.nav-sub {display:none}` lost the cascade and the
   submenu rendered permanently open (114 sites, 2026-10-19).
   ================================================== */
.c-b1a6e7 > li {
  position: relative;
}

.c-e5d093 > a {
  cursor: pointer;
}

.c-e5d093 > a::after {
  /* wide chevron (operator: the tiny triangle read poorly); flips when open */
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-left: 8px;
  vertical-align: 2px;
  border-right: 2px solid var(--text-on-alt);
  border-bottom: 2px solid var(--text-on-alt);
  transform: rotate(45deg);
  transition: transform 0.18s ease;
}

.c-e5d093:hover > a::after,
.c-e5d093:focus-within > a::after {
  transform: rotate(225deg) translate(-2px, -2px);
}

.c-4a1818 .c-36fcaa {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 220px;
  margin: 0;
  padding: 8px 0;
  list-style: none;
  background: var(--background-alt);
  border: 1px solid var(--border-color);
  border-radius: 8px;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.25);
  z-index: 1000;
}

.c-4a1818 .c-e5d093:hover > .c-36fcaa,
.c-4a1818 .c-e5d093:focus-within > .c-36fcaa {
  display: block;
}

.c-4a1818 .c-36fcaa li {
  display: block;
}

.c-36fcaa a {
  display: block;
  padding: 10px 18px;
  color: var(--text-on-alt);
  font-weight: 600;
  white-space: nowrap;
  text-decoration: none;
}

.c-36fcaa a:hover {
  text-decoration: underline;
}

/* Group heading (header_nav_json url "-"): a dropdown carrier with no link and no
   ref — plain label, chevron from .c-e5d093, keyboard focus via tabindex. */
.c-006cc8 {
  cursor: default;
}

.c-24ed06 {
  cursor: default;
  text-decoration: none;
}

.c-4a1818 .c-006cc8 > .c-24ed06:hover {
  text-decoration: none;
}

@media (max-width: 1023px) {
  /* Burger drawer: submenu is a plain indented list, always visible */
  .c-230846 .c-36fcaa {
    display: block;
    position: static;
    min-width: 0;
    padding: 0;
    background: none;
    border: none;
    border-radius: 0;
    box-shadow: none;
  }

  .c-230846 .c-36fcaa li {
    border-bottom: none;
  }

  .c-230846 .c-36fcaa li:first-child {
    border-top: 1px solid var(--border-color);
  }

  .c-230846 .c-36fcaa a {
    padding: 12px 20px 12px 36px;
    font-size: 16px;
    opacity: 0.92;
  }

  /* the drawer keeps its own right-arrow: undo the desktop chevron geometry */
  .c-230846 .c-e5d093 > a::after {
    width: 0;
    height: 0;
    margin-left: 0;
    border: 5px solid transparent;
    border-left: 5px solid var(--text-on-alt);
    border-right: none;
    transform: none;
  }
}

/* ==================================================
   LINK HUB (operator-curated bottom link lists —
   supplements the auto .c-2b1a42 block). Sits on
   the page background => body-pair colors only.
   ================================================== */
.c-50141c {
  max-width: 1110px;
  margin: 40px auto 10px;
  padding: 0 16px;
}

.c-47cf21 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
}

.c-b57544 h3 {
  margin: 0 0 12px;
  font-size: 16px;
  color: var(--text-main);
}

.c-b57544 ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.c-b57544 li {
  margin: 0 0 8px;
}

.c-b57544 a {
  color: var(--links);
  font-size: 14px;
  line-height: 1.45;
  text-decoration: none;
}

.c-b57544 a:hover {
  text-decoration: underline;
}

@media (max-width: 991px) {
  .c-47cf21 { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 600px) {
  .c-47cf21 { grid-template-columns: 1fr; }
}

/* ==================================================
   ICON ISLANDS (docs/TZ-ICON-ISLANDS.md)
   A = content islands (icon + h3 + text), B = link
   tiles (icon + outlined internal-link button),
   C = pros/cons thumbs. Cards sit on the PAGE surface
   => body-pair colours only, never --background-alt
   (mixed palettes, rule 245). No JS (rule 124e).
   ================================================== */
.c-5ee973 {
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
  margin: 32px 0;
}

.c-eb0225 {
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  border-radius: 15px;
  box-shadow: var(--card-shadow);
  padding: 22px 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 12px;
}

.c-7e4773 {
  display: block;
}

.c-0c2b41 {
  margin: 0;
  font-size: 18px;
  color: var(--text-main);
}

.c-b76e8b {
  margin: 0;
  font-size: 15px;
  line-height: 1.55;
  color: var(--text-main);
}

.c-7fe6a6 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 8px 22px;
  border: 2px solid var(--border-accent);
  border-radius: 10px;
  font-weight: 700;
  color: var(--text-accent);
  text-decoration: none;
}

.c-7fe6a6::after {
  content: "";
  border: 5px solid transparent;
  border-left: 7px solid currentColor;
  border-right: none;
}

.c-7fe6a6:hover {
  background: var(--main-btn-gradient);
  color: var(--main-btn-color);
  border-color: transparent;
  text-decoration: none;
}

.c-7fe6a6:focus-visible {
  outline: 3px solid var(--border-accent);
  outline-offset: 2px;
}

.c-df14b6 {
  display: inline-block;
  vertical-align: -6px;
  margin-right: 8px;
}

@media (min-width: 600px) {
  .c-5ee973 {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 992px) {
  .c-70a276 {
    grid-template-columns: repeat(3, 1fr);
  }

  .c-e4527e {
    grid-template-columns: repeat(4, 1fr);
  }
}

/* ==================================================
   GIFT BUTTON — BELL SKIN (header_gift.c-4b72c8 = 'bell')
   Same button contract as the gift; the bell adds a
   red notification dot in direct mode (dropdown mode
   already shows the red count badge).
   ================================================== */
/* Bare icon, the irishluck look: no plate, no label, no pulse — just the
   outline bell in the header colour with a red count/dot. Overrides the
   generic .c-833aff button styling (this block sits later in the file). */
.c-d1dfb5 {
  background: none;
  border: none;
  box-shadow: none;
  animation: none;
  padding: 6px;
  margin: 0;
  min-height: 0;
  height: auto;
  max-width: none;
  border-radius: 50%;
  color: var(--text-on-alt);
}

.c-d1dfb5:hover {
  background: rgba(127, 127, 127, 0.18);
}

.c-d1dfb5 .c-ab6a57 {
  width: 26px;
  height: 26px;
  display: block;
}

.c-d1dfb5 .c-29d32c {
  top: 0;
  right: 0;
  min-width: 16px;
  height: 16px;
  font-size: 10px;
  border-radius: 8px;
}

.c-9a4c36 {
  position: absolute;
  top: 5px;
  right: 5px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #E63946;
}

/* ==================================================
   AS SEEN ON (projects.c-156580 — operator-curated
   trust strip). Sits on the page surface => body
   pairs; logos are muted monochrome so any outlet
   mark reads on all 45 palettes (rules 181/183c).
   ================================================== */
.c-89ad4d {
  max-width: 1110px;
  margin: 34px auto;
  padding: 0 16px;
  text-align: center;
}

.c-64b532 {
  display: block;
  margin-bottom: 14px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-main);
  opacity: 0.65;
}

.c-60ceaf {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 14px 30px;
}

.c-66486e {
  display: inline-flex;
  align-items: center;
}

.c-66486e img {
  display: block;
  height: 26px;
  width: auto;
  filter: grayscale(1) opacity(0.75);
}

.c-66486e em {
  font-style: normal;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--text-main);
  opacity: 0.6;
}

/* ==================================================
   CALCULATORS (ai-library/CALCULATORS-GUIDE.md —
   authored widgets, JS binds by ID only, rule 124e).
   Two skins: calc--panel (card) / calc--inline.
   Page-surface pairs; the button declares its own
   :hover (water paints any button otherwise, 194a).
   ================================================== */
.c-545e51 {
  max-width: 460px;
  margin: 26px 0;
}

.c-91f48a {
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  border-radius: 16px;
  box-shadow: var(--card-shadow);
  padding: 22px;
}

.c-545e51 {
  max-width: 560px;
}

.c-d13c06 {
  border-left: 3px solid var(--border-accent);
  padding: 4px 0 4px 18px;
}

.c-d8c07e {
  font-size: 17px;
  font-weight: 700;
  color: var(--text-main);
  margin-bottom: 14px;
}

.c-ca8e31 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.c-1f2883 {
  font-size: 14px;
  color: var(--text-main);
}

/* Fields: label ABOVE a full-width input (modern, side-by-side on desktop);
   the ugly default number spinners are hidden — typing and examples do the job */
.c-110a26 {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}

@media (min-width: 600px) {
  .c-110a26 {
    grid-template-columns: repeat(3, 1fr);
  }
}

.c-41703a {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.c-41703a .c-1f2883 {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.65;
}

.c-2827f8 {
  width: 130px;
  padding: 10px 12px;
  font-size: 17px;
  font-weight: 700;
  text-align: right;
  color: var(--text-main);
  background: rgba(127, 127, 127, 0.12);
  border: 1px solid var(--border-color);
  border-radius: 10px;
  -moz-appearance: textfield;
  appearance: textfield;
}

.c-41703a .c-2827f8 {
  width: 100%;
}

.c-2827f8::-webkit-outer-spin-button,
.c-2827f8::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.c-2827f8:focus {
  outline: 2px solid var(--border-accent);
  outline-offset: 1px;
}

.c-805896 {
  display: inline-block;
  margin-top: 4px;
  padding: 10px 20px;
  font-size: 14px;
  font-weight: 700;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  background: var(--main-btn-gradient);
  color: var(--main-btn-color);
}

.c-805896:hover {
  background: var(--main-btn-gradient);
  color: var(--main-btn-color);
  filter: brightness(1.08);
}

.c-134eb1 {
  margin-top: 16px;
  padding: 14px 18px;
  font-size: 18px;
  font-weight: 800;
  text-align: center;
  letter-spacing: 0.01em;
  background: var(--main-btn-gradient);
  color: var(--main-btn-color);
  border-radius: 12px;
}

.c-21b674 {
  margin-top: 8px;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--text-main);
  opacity: 0.65;
}

/* ==================================================
   CALLOUT VARIETY (2026-10-14 — the "same circles on
   every site" fix): per-site ICON SETS for the four
   expert-tip variants + two label-less advice blocks.
   Set roll: project_id mod 3 -> A (default, no extra
   class) / B (.c-6b86f7) / C (.c-864f2b) — the modifier
   sits NEXT to the variant class on the same div.
   Only mask-image is overridden; the variant keeps
   its colour. REVIEW-BLOCKS-GUIDE "Expert Tip".
   ================================================== */
.c-ba1da2.c-6b86f7 .c-545926::before {
  -webkit-mask-image: url(icons/ui/target.svg);
  mask-image: url(icons/ui/target.svg);
}
.c-ba1da2.c-864f2b .c-545926::before {
  -webkit-mask-image: url(icons/ui/rocket.svg);
  mask-image: url(icons/ui/rocket.svg);
}
.c-479f55.c-6b86f7 .c-545926::before {
  -webkit-mask-image: url(icons/ui/flame.svg);
  mask-image: url(icons/ui/flame.svg);
}
.c-479f55.c-864f2b .c-545926::before {
  -webkit-mask-image: url(icons/ui/hand.svg);
  mask-image: url(icons/ui/hand.svg);
}
.c-065205.c-6b86f7 .c-545926::before {
  -webkit-mask-image: url(icons/ui/eye.svg);
  mask-image: url(icons/ui/eye.svg);
}
.c-065205.c-864f2b .c-545926::before {
  -webkit-mask-image: url(icons/ui/key.svg);
  mask-image: url(icons/ui/key.svg);
}
.c-a32ca4.c-6b86f7 .c-545926::before {
  -webkit-mask-image: url(icons/ui/chart-pie.svg);
  mask-image: url(icons/ui/chart-pie.svg);
}
.c-a32ca4.c-864f2b .c-545926::before {
  -webkit-mask-image: url(icons/ui/trending-up.svg);
  mask-image: url(icons/ui/trending-up.svg);
}

/* Label-less aside — advice without a badge (the irishluck unsigned tips).
   Deliberately quieter than expert-tip: accent bar only, no icon circle. */
.c-20e3e6 {
  margin: 22px 0;
  padding: 2px 0 2px 18px;
  border-left: 3px solid var(--border-accent);
}

.c-20e3e6 p {
  margin: 0;
  font-size: 15px;
  line-height: 1.6;
  color: var(--text-main);
}

/* Author tip — the advice card with the review author's photo (E-E-A-T;
   only when the project HAS an assigned author portrait). Max 1 per article. */
.c-6cb88d {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin: 26px 0;
  padding: 16px 18px;
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  border-radius: 14px;
  box-shadow: var(--card-shadow);
}

.c-128725 {
  flex: 0 0 auto;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--border-accent);
}

.c-c5638e {
  flex: 1;
  min-width: 0;
}

.c-b60d62 {
  margin: 0 0 6px;
  font-size: 15px;
  line-height: 1.6;
  color: var(--text-main);
}

.c-1e9942 {
  font-size: 13px;
  font-weight: 700;
  color: var(--text-main);
  opacity: 0.65;
}

/* Full bonus calculator: two result lines in the gradient bar */
.c-134eb1 span {
  display: block;
}

.c-134eb1 span + span {
  margin-top: 3px;
  font-size: 14px;
  font-weight: 700;
  opacity: 0.9;
}

/* ==================================================
   ISLAND VARIANTS (2026-10-14): horizontal row cards
   (icon left, content right — the LuckNation pattern)
   and the FAQ-cards skin (each Q+A in its own card,
   no icon). The FAQ skin is a WRAPPER class around
   the STANDARD .c-f4b65d block — the accordion, the
   JSON-LD and every literal "c-faqs" anchor in the
   pipelines stay byte-identical.
   ================================================== */
.c-a9f478 {
  grid-template-columns: 1fr;
}

.c-33b2fc {
  flex-direction: row;
  align-items: flex-start;
  text-align: left;
  gap: 20px;
  padding: 24px 26px;
}

.c-33b2fc .c-7e4773 {
  flex: 0 0 auto;
}

.c-0569be {
  flex: 1;
  min-width: 0;
}

.c-0569be .c-0c2b41 {
  margin: 0 0 8px;
  font-size: 20px;
}

.c-0569be .c-b76e8b {
  margin: 0 0 10px;
}

.c-0569be .c-b76e8b:last-child {
  margin-bottom: 0;
}

@media (max-width: 599px) {
  .c-33b2fc {
    flex-direction: column;
    align-items: center;
    text-align: center;
  }
}

.c-9e5275 .c-f4b65d h3 {
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  border-radius: 12px;
  box-shadow: var(--card-shadow);
  padding: 16px 20px;
  margin: 14px 0 0;
}

.c-9e5275 .c-f4b65d h3.active {
  border-radius: 12px 12px 0 0;
  border-bottom: none;
  box-shadow: none;
}

.c-9e5275 .c-f4b65d h3 + p {
  background: var(--card-bg);
  border: 1px solid var(--border-color);
  border-top: none;
  border-radius: 0 0 12px 12px;
  box-shadow: var(--card-shadow);
  padding: 2px 20px 16px;
  margin: 0;
}

/* ==================================================
   STYLED LISTS — review twin of the prestige set
   (rule 191: list-check/cross/arrow/star/dot + numbered
   list-steps). Self-contained: review article lists have
   no custom bullet system, so each variant carries its
   own positioning. Glyph colours: check/cross = the
   semantic pros/cons pair the review template already
   uses on the page surface; arrow/star/dot = accent
   (the accepted 195c tail, same as prestige).
   ================================================== */
.c-a3bad1,
.c-18f2ca,
.c-ab5ced,
.c-914cdd,
.c-92cbb8 {
  list-style: none;
  margin: 16px 0;
  padding-left: 0;
}

.c-a3bad1 li,
.c-18f2ca li,
.c-ab5ced li,
.c-914cdd li,
.c-92cbb8 li {
  position: relative;
  padding-left: 26px;
  margin-bottom: 8px;
}

.c-a3bad1 li::before,
.c-18f2ca li::before,
.c-ab5ced li::before,
.c-914cdd li::before,
.c-92cbb8 li::before {
  content: "\2022";
  position: absolute;
  left: 1px;
  top: 0;
  width: auto;
  height: auto;
  background: none;
  border-radius: 0;
  transform: none;
  color: var(--text-accent);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.7;
}

.c-a3bad1 li::before { content: "\2713"; color: var(--positive); }
.c-18f2ca li::before { content: "\2715"; color: var(--negative); }
.c-ab5ced li::before { content: "\2192"; }
.c-914cdd li::before { content: "\2605"; font-size: 12px; }
.c-92cbb8 li::before { content: "\2022"; }

/* Numbered steps: palette circles instead of plain numerals (pair rule 194). */
ol.c-d90b55 {
  list-style: none;
  margin: 16px 0;
  padding-left: 0;
  counter-reset: step;
}

ol.c-d90b55 li {
  position: relative;
  padding-left: 34px;
  margin-bottom: 10px;
  counter-increment: step;
}

ol.c-d90b55 li::before {
  content: counter(step);
  position: absolute;
  left: 0;
  top: 1px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--main-btn-gradient);
  color: var(--main-btn-color);
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1;
}
