/* ==========================================================================
   sections.css — Khối trang chủ dạng qq79.li (block "Mục nội dung", "Lưới thẻ", "Dải thông tin",
   "Khối ứng dụng có ảnh", "Dải logo ảnh", "FAQ") và thẻ tài khoản / cột thanh toán của shell.
   Chép từ cms.css của theme 33game (TN CMS 0.5.8) để hai bản dựng cùng markup g33-* trông giống
   hệt nhau. Bỏ phần .prose (bài viết/tài liệu WordPress có kiểu riêng) và phần tác giả.
   ========================================================================== */

/* ---------------------------------------------------------- Body stacking */
/* The body wrapper is transparent so each Page Builder section is a direct flex
   child of .content and inherits the frozen --section-gap rhythm. */
.g33-body { display: contents; }

.g33-featured {
  width: 100%;
  height: auto;
  aspect-ratio: 1300 / 420;
  object-fit: cover;
  border-radius: var(--r-md);
  border: 1px solid var(--c-line);
}

/* Placeholder hues (replace the frozen inline style="--hue:N", which Core strips).
   Values are the frozen ones by position: tiles step 30° from 18 (rail A), category
   cards 195/35/340/265/140/80, sample lists 35/160/280/200 and ranks 12/95/255/320,
   promotion cards 35/195/280/120/330/60. */
.g33-grid { --g33-base: 18; --g33-step: 30; }
.g33-grid > li { --hue: calc(var(--g33-base) + var(--g33-i, 0) * var(--g33-step)); }
.g33-grid > li:nth-child(2) { --g33-i: 1; } .g33-grid > li:nth-child(3) { --g33-i: 2; }
.g33-grid > li:nth-child(4) { --g33-i: 3; } .g33-grid > li:nth-child(5) { --g33-i: 4; }
.g33-grid > li:nth-child(6) { --g33-i: 5; } .g33-grid > li:nth-child(7) { --g33-i: 6; }
.g33-grid > li:nth-child(8) { --g33-i: 7; }
/* 2nd and 3rd consecutive rails continue the frozen sequences (B: 188/+20, C: 300/+25). */
.g33-sec:has(.g33-grid--rail) + .g33-sec .g33-grid--rail { --g33-base: 188; --g33-step: 20; }
.g33-sec:has(.g33-grid--rail) + .g33-sec:has(.g33-grid--rail) + .g33-sec .g33-grid--rail { --g33-base: 300; --g33-step: 25; }
.category-grid > li:nth-child(1) { --hue: 195; } .category-grid > li:nth-child(2) { --hue: 35; }
.category-grid > li:nth-child(3) { --hue: 340; } .category-grid > li:nth-child(4) { --hue: 265; }
.category-grid > li:nth-child(5) { --hue: 140; } .category-grid > li:nth-child(6) { --hue: 80; }
.jp-list > li:nth-child(4n+1) { --hue: 35; }  .jp-list > li:nth-child(4n+2) { --hue: 160; }
.jp-list > li:nth-child(4n+3) { --hue: 280; } .jp-list > li:nth-child(4n+4) { --hue: 200; }
.g33-band > :last-child .jp-list > li:nth-child(4n+1) { --hue: 12; }
.g33-band > :last-child .jp-list > li:nth-child(4n+2) { --hue: 95; }
.g33-band > :last-child .jp-list > li:nth-child(4n+3) { --hue: 255; }
.g33-band > :last-child .jp-list > li:nth-child(4n+4) { --hue: 320; }
.promo-list > li:nth-child(6n+1) { --hue: 35; }  .promo-list > li:nth-child(6n+2) { --hue: 195; }
.promo-list > li:nth-child(6n+3) { --hue: 280; } .promo-list > li:nth-child(6n+4) { --hue: 120; }
.promo-list > li:nth-child(6n+5) { --hue: 330; } .promo-list > li:nth-child(6n+6) { --hue: 60; }

/* ------------------------------------------------------ Section (generic) */
/* The frozen ".section-head" row, rebuilt around already-rendered children. */
.g33-sec {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2) var(--s-2);
  min-width: 0;
}
.g33-sec--pad-sm { padding-block: var(--s-3); }
.g33-sec--pad-lg { padding-block: var(--s-6); }

.g33-sec > *,
.g33-sec > .pb-editor-render-marker { min-width: 0; }

/* Heading block → frozen section-head title (default) or plain title (Large / XL). */
.g33-sec .pb-block--heading,
.g33-sec > .pb-editor-render-marker:has(> .pb-block--heading) {
  flex: 1 1 auto;
  margin-right: var(--s-2);
}
.g33-sec .pb-block--heading {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  font-size: var(--fs-lg);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--c-gold);
  padding: var(--s-2) var(--s-4) var(--s-2) var(--s-3);
  background: linear-gradient(90deg, rgba(252, 228, 3, .14), transparent 72%);
  border-left: 4px solid var(--c-gold);
  border-radius: 0 var(--r-sm) var(--r-sm) 0;
  margin-bottom: 0;
}
.g33-sec .pb-block--heading.pb-heading--lg,
.g33-sec .pb-block--heading.pb-heading--xl {
  flex-basis: 100%;
  display: block;
  font-size: var(--fs-h2);
  letter-spacing: normal;
  text-transform: none;
  padding: 0 0 0 var(--s-5);
  background: none;
  border-radius: 0;
}

.g33-sec > .g33-text,
.g33-sec > .g33-btn,
.g33-sec > .pb-editor-render-marker:has(> .g33-text),
.g33-sec > .pb-editor-render-marker:has(> .g33-btn) { flex: 0 0 auto; }

.g33-sec > .g33-text--default,
.g33-sec > .pb-editor-render-marker:has(> .g33-text--default) { flex: 1 1 100%; }

.g33-sec > ul,
.g33-sec > .pb-editor-render-marker:has(> ul) {
  flex: 1 1 100%;
  margin-top: calc(var(--s-4) - var(--s-2));
}

/* Rail scroll buttons injected by enhance.js sit before the "see more" link. */
.g33-rail-btns { display: inline-flex; gap: var(--s-2); flex: 0 0 auto; }

/* --------------------------------------------------------------- Text */
/* Text blocks are <p> and keep the frozen base `p` margin, except where the frozen
   markup used inline spans (sample chips, list rows). */
.g33-text--eyebrow, .jp-list__item .g33-text { margin: 0; }
.g33-text__line { display: block; }
.g33-text--default { color: var(--c-text-dim); max-width: 52ch; }
.g33-text--lead {
  font-size: clamp(30px, 4.6vw, 54px);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--c-yellow);
  text-shadow: 0 0 24px rgba(255, 255, 0, .32);
}
.g33-link { color: var(--c-gold); text-decoration: underline; }

/* ------------------------------------------------------- Media / figures */
.g33-media { margin: 0; position: relative; min-width: 0; }
.g33-media__img { display: block; width: 100%; height: auto; }
.g33-media__ph {
  display: grid;
  place-items: center;
  aspect-ratio: 1;
  border-radius: var(--r-md);
  font-weight: 700;
  color: rgba(0, 0, 0, .55);
}

/* Hero carousel: each figure is one slide (frozen .hero__slide / __caption). */
.g33-hero .hero__track > .g33-media,
.g33-hero .hero__track > .pb-editor-render-marker {
  flex: 0 0 100%;
  min-width: 0;
  position: relative;
  aspect-ratio: 1300 / 420;
}
.g33-hero .hero__track .g33-media__img,
.g33-hero .hero__track .g33-media__ph { width: 100%; height: 100%; object-fit: cover; aspect-ratio: auto; border-radius: 0; }
.g33-hero .hero__track > .pb-editor-render-marker > .g33-media { height: 100%; }
.g33-hero .g33-media__caption {
  position: absolute;
  inset: auto 0 0 0;
  padding: var(--s-6) var(--s-5) var(--s-4);
  background: linear-gradient(0deg, rgba(0, 0, 0, .82), transparent);
}
.g33-hero .hero__kicker { display: block; width: max-content; }
.g33-hero .g33-media__title {
  display: block;
  font-size: var(--fs-hero);
  color: var(--c-text);
  text-shadow: 0 2px 18px rgba(0, 0, 0, .6);
  margin-bottom: var(--s-3);
}
/* Mirrors the frozen components.css (max-width: 767px) hero rules for CMS slides. */
@media (max-width: 767px) {
  .g33-hero .hero__track > .g33-media,
  .g33-hero .hero__track > .pb-editor-render-marker { aspect-ratio: 7 / 5; }
  .g33-hero .g33-media__caption {
    padding: var(--s-3);
    background: linear-gradient(0deg, rgba(0, 0, 0, .92) 60%, rgba(0, 0, 0, .55) 85%, transparent);
  }
  .g33-hero .g33-media__title { font-size: 20px; }
}

/* Without JavaScript every slide stays reachable by native horizontal scrolling. */
.g33-hero:not(.is-enhanced) .hero__viewport { overflow-x: auto; scroll-snap-type: x mandatory; }
.g33-hero:not(.is-enhanced) .hero__track > * { scroll-snap-align: start; }
.g33-hero.is-enhanced:focus-visible { outline: 2px solid var(--c-focus); outline-offset: 2px; }

/* App block: captioned figures are the frozen QR items. */
.g33-app .app-block__qrs .g33-media { text-align: center; }
.g33-app .app-block__qrs .g33-media__img,
.g33-app .app-block__qrs .g33-media__ph { width: 118px; height: 118px; border-radius: var(--r-sm); margin-inline: auto; }
.g33-app .app-block__qrs .g33-media__caption { margin-top: var(--s-2); font-size: var(--fs-sm); color: var(--c-text-dim); }
.g33-app__lead { color: var(--c-text-dim); max-width: 52ch; }
/* Frozen QR items are <figure>s with the browser-default figure margin. */
.g33-app .app-block__qrs > .g33-media,
.g33-app .app-block__qrs > .pb-editor-render-marker > .g33-media { margin: 1em 40px; }
.g33-app__action { margin: var(--s-5) 0 0; }
.g33-app .app-block__art img { width: 260px; height: auto; }

/* ------------------------------------------------------ Tiles and cards */
.g33-grid { list-style: none; margin: 0; padding: 0; }
.g33-grid > li > .g33-col,
.g33-grid > li > .pb-editor-render-marker > .g33-col { display: contents; }
.g33-grid > li > .pb-editor-render-marker { display: flex; flex-direction: column; gap: inherit; min-width: 0; }

/* Game tile: media · title · button. */
.game-tile .g33-media__img,
.game-tile .g33-media__ph {
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: var(--r-md);
  border: 1px solid rgba(255, 255, 255, .16);
  box-shadow: 0 8px 22px rgba(0, 0, 0, .38);
  transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.game-tile .g33-media__ph { font-size: clamp(18px, 2.4vw, 30px); letter-spacing: .04em; }
.game-tile:hover .g33-media__img, .game-tile:focus-within .g33-media__img,
.game-tile:hover .g33-media__ph, .game-tile:focus-within .g33-media__ph {
  transform: translateY(-4px) scale(1.02);
  box-shadow: 0 14px 30px rgba(0, 0, 0, .52);
}
.game-tile .g33-text--default {
  font-size: var(--fs-sm);
  color: var(--c-text-dim);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: none;
}
.game-tile .g33-btn { width: 100%; }

/* Category card: title · art · button foot (Surface "Card"). */
.category-card .g33-text--default {
  padding: var(--s-3) var(--s-2);
  text-align: center;
  font-size: var(--fs-base);
  font-weight: 700;
  color: var(--c-gold);
  max-width: none;
}
.category-card .g33-media__img,
.category-card .g33-media__ph {
  aspect-ratio: 140 / 150;
  object-fit: cover;
  border-radius: 0;
  font-size: 30px;
  color: rgba(0, 0, 0, .48);
}
.category-card .g33-btn { margin: var(--s-3) auto; }

/* --------------------------------------------- Sample-data band (columns) */
.g33-band > .g33-col,
.g33-band > .pb-editor-render-marker { min-width: 0; }
.g33-band > .g33-col + .g33-col,
.g33-band > .pb-editor-render-marker + .pb-editor-render-marker { border-left: 1px solid var(--c-line); padding-left: var(--s-5); }
.g33-band .jackpot-row__head .pb-block--heading { margin: 0; font-size: var(--fs-h2); color: var(--c-gold); }
.g33-band .jackpot-row__head .g33-text--eyebrow { margin: 0; }
.g33-band .jp-list { list-style: none; margin: 0; padding: 0; }
.g33-band .jp-list__item { counter-increment: g33-jp; }
.g33-band .jp-list__item::before {
  content: counter(g33-jp, upper-alpha);
  flex: 0 0 44px;
  width: 44px;
  aspect-ratio: 1;
  border-radius: var(--r-sm);
  display: grid;
  place-items: center;
  font-size: 13px;
  font-weight: 700;
  color: rgba(0, 0, 0, .62);
  background: linear-gradient(145deg, hsl(var(--hue, 30) 82% 56%) 0%, hsl(calc(var(--hue, 30) + 26) 78% 34%) 100%);
}
.g33-band .jp-list { counter-reset: g33-jp; }
/* The last (ranking) list is numbered 1, 2, 3 … like the frozen board. */
.g33-band > :last-child .jp-list__item::before { content: counter(g33-jp); }
/* Name and value flow inline and wrap naturally, as the frozen spans do. */
.g33-band .jp-list__item .g33-text__line { display: inline; }
.g33-band .jp-list__item .g33-text__line + .g33-text__line { display: inline-block; margin-left: .25em; }
.g33-band .jp-list__item .g33-text { min-width: 0; flex: 1 1 auto; max-width: none; }
.g33-band .jp-list__item .g33-text__line:first-child {
  font-size: var(--fs-sm);
  color: var(--c-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.g33-band .jp-list__item .g33-text__line + .g33-text__line {
  font-size: var(--fs-md);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--c-yellow);
  border-bottom: 1px dashed rgba(255, 255, 0, .35);
  width: max-content;
}
.g33-band .jackpot-meter .g33-text--eyebrow .sample-flag {
  background: none;
  padding: 0;
  font-size: 11px;
  letter-spacing: .22em;
  color: var(--c-orange);
}
.g33-band .jackpot-meter .g33-text--lead { margin: var(--s-2) 0; }
.g33-band .jackpot-meter .g33-text--default { font-size: 11px; color: var(--c-text-dim); max-width: none; }

@media (max-width: 1199px) {
  .g33-band > .g33-col + .g33-col,
  .g33-band > .pb-editor-render-marker + .pb-editor-render-marker { border-left: 0; padding-left: 0; }
  .g33-band > .jackpot-row__col--meter,
  .g33-band > .pb-editor-render-marker:has(> .jackpot-row__col--meter) { grid-column: 1 / -1; order: -1; }
}

/* -------------------------------------------------------- Brand strip */
.g33-strip .g33-logo img, img.g33-logo { width: 190px; height: auto; }
.g33-slot { min-width: 160px; }


/* ---------------------------------------------------- FAQ / disclosures */
.g33-faq__items { display: grid; gap: var(--s-3); }
.g33-details {
  background: var(--c-panel);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  padding: var(--s-3) var(--s-4);
}
.g33-details summary { cursor: pointer; color: var(--c-gold); font-weight: 600; font-size: var(--fs-sm); }
.g33-details__body { padding-top: var(--s-3); color: var(--c-text-dim); font-size: var(--fs-sm); }
.g33-details__body p { margin: 0; }

/* ------------------------------------------------------------ Lobby */
.g33-filter__heading { font-size: var(--fs-lg); margin-bottom: 12px; }
.g33-filter__status { margin: 12px 0 0; }
.provider-tab__chip { background: linear-gradient(145deg, hsl(var(--hue, 30) 82% 56%) 0%, hsl(calc(var(--hue, 30) + 26) 78% 34%) 100%); }

/* ------------------------------------------------- Ticker pause control */
.g33-ticker-toggle {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  margin-left: var(--s-2);
  border: 1px solid var(--c-line-strong);
  border-radius: var(--r-round);
  color: var(--c-text-dim);
  background: transparent;
}
.g33-ticker-toggle:hover, .g33-ticker-toggle[aria-pressed="true"] { color: var(--c-gold); border-color: var(--c-gold); }
.topbar.is-paused .ticker__track { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) { .g33-ticker-toggle { display: none; } }

/* --------------------------------------------------------- Misc / CMS */
.g33-lang { padding: 0 var(--s-4) var(--s-3); }
.g33-lang__list { display: flex; flex-wrap: wrap; gap: var(--s-2); list-style: none; margin: 0; padding: 0; }
.g33-lang__link {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 0 var(--s-3);
  border: 1px solid var(--c-line-strong);
  border-radius: var(--r-pill);
  font-size: var(--fs-sm);
  color: var(--c-text-dim);
}
.g33-lang__link:hover, .g33-lang__link[aria-current="true"] { color: var(--c-gold); border-color: var(--c-gold); text-decoration: none; }

/* Footer payment methods (Theme Options → Footer): icon + label rows, two per line in the
   footer column, more on wide single-column phones. */
.g33-pay__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(124px, 1fr));
  gap: var(--s-2);
}
.g33-pay__item {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  min-width: 0;
  min-height: 42px;
  padding: 6px var(--s-2);
  background: var(--c-panel);
  border: 1px solid var(--c-line);
  border-radius: var(--r-xs);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--c-text-dim);
}
.g33-pay__icon { flex: 0 0 auto; width: 30px; height: 30px; object-fit: contain; }
.g33-pay__item span { min-width: 0; overflow-wrap: anywhere; }

.g33-related { max-width: 420px; }
.g33-empty { color: var(--c-text-dim); }
.g33-pager { display: flex; gap: var(--s-3); justify-content: center; margin-top: var(--s-5); }
.g33-tags__list { display: flex; flex-wrap: wrap; gap: var(--s-2); list-style: none; padding: 0; margin: var(--s-5) 0 0; }
.g33-post-meta { margin-top: calc(var(--s-4) * -1); }
.g33-error__status { font-size: 64px; font-weight: 700; color: var(--c-red); line-height: 1; margin: 0 0 var(--s-3); }
.g33-error__actions { display: flex; gap: var(--s-3); flex-wrap: wrap; }

@media (prefers-reduced-motion: reduce) {
  .game-tile .g33-media__img, .game-tile .g33-media__ph { transition: none; }
}

/* Account panel (Theme Options → Account links). Frozen .sidebar__account / .avatar /
   .sidebar__auth / .btn--ghost / .btn--accent are reused; this adapter turns the band into
   a dark rounded card with the avatar overlapping its top edge. */
.g33-account { padding: calc(var(--s-5) + 31px) var(--s-3) var(--s-2); background: none; }
.g33-account__card {
  position: relative;
  padding: calc(31px + var(--s-3)) var(--s-3) var(--s-4);
  background: var(--c-panel);
  border: 1px solid var(--c-line);
  border-radius: var(--r-sm);
}
/* .g33-account phía trước để thắng .sidebar__account .avatar (layout.css). */
.g33-account .g33-account__avatar {
  position: absolute;
  top: 0;
  left: 50%;
  margin: 0;
  transform: translate(-50%, -50%);
}
.g33-account__links { list-style: none; margin: 0; padding: 0; justify-items: stretch; }
.g33-account__links li { min-width: 0; display: flex; justify-content: center; }
.g33-account__links .btn { overflow-wrap: anywhere; line-height: 1.2; padding-block: var(--s-1); }

/* 768–991: icon rail (78px). Keep the controls inside the rail; long labels wrap. */
@media (min-width: 768px) and (max-width: 991px) {
  .g33-account { padding: calc(var(--s-3) + 21px) var(--s-1) var(--s-1); }
  .g33-account__card { padding: calc(21px + var(--s-2)) 3px var(--s-2); }
  .g33-account__links .btn { width: 100%; min-width: 0; min-height: 28px; padding: 3px 2px; font-size: 8px; letter-spacing: 0; }
}

/* ------------------------------------------------ Inline links in text blocks (0.4.6) */
.g33-text a { color: var(--c-gold); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.g33-text a:hover, .g33-text a:focus-visible { color: var(--c-yellow); text-decoration-thickness: 2px; }
.g33-text strong { color: var(--c-text); font-weight: 700; }
.g33-text a strong { color: inherit; }
/* Promotion card title links to the post (archive). */
.promo-card__title a { color: inherit; text-decoration: none; }
.promo-card__title a:hover, .promo-card__title a:focus-visible { text-decoration: underline; text-underline-offset: 3px; }
.promo-card__link { display: block; }
