/* ==========================================================================
   Smokos Casino AU — core stylesheet
   Design system extracted from the Smokos reference layout:
   fixed dark sidebar + dark main column, burnt-orange/sepia accents,
   pill controls, soft-cornered cards, warm hairline borders.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root {
  /* surfaces */
  --bg:            #0a0605;
  --bg-deep:       #070403;
  --sidebar:       #0d0907;
  --panel:         #120c08;
  --surface:       #17100b;
  --card:          #1b120c;
  --card-hi:       #241710;

  /* lines */
  --line:          rgba(255, 255, 255, .07);
  --line-2:        rgba(255, 255, 255, .12);
  --line-warm:     rgba(255, 146, 54, .28);
  --line-warm-hi:  rgba(255, 146, 54, .55);

  /* brand */
  --orange:        #ff8b2c;
  --orange-2:      #e2701c;
  --orange-3:      #b8500f;
  --amber:         #f9b56a;
  --ember:         #7a3208;

  /* text */
  --text:          #ffffff;
  --text-2:        #d9cdc6;
  --muted:         #9a8a82;
  --muted-2:       #6f625c;

  /* radii */
  --r-xs: 6px;
  --r-sm: 8px;
  --r:    10px;
  --r-md: 12px;
  --r-lg: 16px;
  --r-xl: 20px;
  --pill: 999px;

  /* spacing scale */
  --s-1: 4px;   --s-2: 8px;   --s-3: 12px;  --s-4: 16px;
  --s-5: 20px;  --s-6: 24px;  --s-7: 32px;  --s-8: 40px;
  --s-9: 56px;  --s-10: 72px;

  /* shadows */
  --sh-card:  0 6px 20px rgba(0, 0, 0, .55);
  --sh-pop:   0 18px 46px rgba(0, 0, 0, .7);
  --sh-glow:  0 0 0 1px var(--line-warm-hi), 0 8px 26px rgba(255, 120, 30, .18);

  /* metrics */
  --sidebar-w: 330px;
  --topbar-h:  72px;
  --gutter:    38px;
}

/* --------------------------------------------------------------------------
   2. Reset + base
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
  font-size: 15px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
ul { list-style: none; margin: 0; padding: 0; }
h1, h2, h3, h4 { margin: 0; font-weight: 800; letter-spacing: -.01em; }

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

:focus-visible { outline: 2px solid var(--orange); outline-offset: 2px; border-radius: 4px; }

/* display face — used for the wordmark and hero headline */
.display {
  font-family: "Anton", "Arial Black", Impact, sans-serif;
  font-weight: 400;
  letter-spacing: .01em;
  text-transform: uppercase;
}

.u-scroll-x {
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.u-scroll-x::-webkit-scrollbar { display: none; }

.btn svg { flex: 0 0 auto; }

/* --------------------------------------------------------------------------
   3. Buttons
   -------------------------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  height: 44px;
  padding: 0 22px;
  border-radius: var(--r);
  font-size: 15px;
  font-weight: 600;
  white-space: nowrap;
  transition: background .18s ease, border-color .18s ease, color .18s ease,
              transform .12s ease, box-shadow .18s ease;
}
.btn:active { transform: translateY(1px); }

.btn--ghost {
  border: 1.5px solid rgba(255, 255, 255, .75);
  color: #fff;
}
.btn--ghost:hover {
  background: rgba(255, 255, 255, .1);
  border-color: #fff;
}

.btn--solid {
  background: #fff;
  color: #14100d;
  border: 1.5px solid #fff;
}
.btn--solid:hover { background: #ede7e2; border-color: #ede7e2; }

.btn--orange {
  background: linear-gradient(180deg, var(--orange) 0%, var(--orange-3) 100%);
  color: #1a0d03;
  border: 1px solid rgba(255, 190, 130, .45);
  box-shadow: 0 8px 22px rgba(255, 120, 30, .28);
}
.btn--orange:hover { filter: brightness(1.08); }

.btn--block { width: 100%; }
.btn--lg { height: 54px; font-size: 17px; padding: 0 34px; }

/* pill CTA used in the hero */
.btn--hero {
  height: 58px;
  min-width: 300px;
  padding: 0 46px;
  border-radius: var(--pill);
  border: 2px solid rgba(255, 255, 255, .92);
  background: rgba(20, 10, 4, .32);
  backdrop-filter: blur(2px);
  color: #fff;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.btn--hero:hover {
  background: #fff;
  color: #1a0d03;
  box-shadow: 0 10px 34px rgba(0, 0, 0, .5);
}

.icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: var(--r);
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--text-2);
  transition: background .16s ease, color .16s ease, border-color .16s ease;
}
.icon-btn:hover {
  background: var(--card-hi);
  color: #fff;
  border-color: var(--line-warm);
}
.icon-btn:disabled { opacity: .35; cursor: default; }
.icon-btn svg { width: 18px; height: 18px; flex: 0 0 auto; }

/* --------------------------------------------------------------------------
   4. App shell
   -------------------------------------------------------------------------- */
.app {
  display: grid;
  grid-template-columns: var(--sidebar-w) minmax(0, 1fr);
  min-height: 100vh;
}

/* the sidebar is position:fixed, so it leaves the grid flow — pin the main
   column explicitly rather than letting auto-placement drop it into col 1 */
.main {
  grid-column: 2;
  min-width: 0;
  padding-top: var(--topbar-h);
  background: var(--bg);
}

.wrap {
  padding: 0 var(--gutter);
}

.scrim {
  position: fixed;
  inset: 0;
  z-index: 60;
  background: rgba(0, 0, 0, .6);
  backdrop-filter: blur(2px);
  opacity: 0;
  visibility: hidden;
  transition: opacity .22s ease, visibility .22s ease;
}
.scrim.is-open { opacity: 1; visibility: visible; }

/* --------------------------------------------------------------------------
   5. Top bar
   -------------------------------------------------------------------------- */
.topbar {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 70;
  height: var(--topbar-h);
  display: grid;
  grid-template-columns: var(--sidebar-w) minmax(0, 1fr);
  background: var(--bg-deep);
  border-bottom: 1px solid var(--line);
}

.topbar__left {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 0 var(--s-6);
  background: var(--sidebar);
}

.burger {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  width: 34px;
  height: 34px;
  color: #fff;
}
.burger span {
  display: block;
  height: 3px;
  border-radius: 2px;
  background: currentColor;
}
.burger span:nth-child(1) { width: 100%; }
.burger span:nth-child(2) { width: 100%; }
.burger span:nth-child(3) { width: 100%; }
.burger span:nth-child(4) { width: 100%; }

/* Slots / Live segmented pill */
.segment {
  display: inline-flex;
  align-items: center;
  padding: 4px;
  border-radius: var(--pill);
  background: rgba(255, 255, 255, .05);
  border: 1px solid var(--line);
}
.segment__btn {
  height: 36px;
  padding: 0 26px;
  border-radius: var(--pill);
  font-size: 15px;
  font-weight: 600;
  color: var(--muted);
  border: 1.5px solid transparent;
  transition: color .16s ease, background .16s ease, border-color .16s ease;
}
.segment__btn:hover { color: #fff; }
.segment__btn.is-active {
  color: #fff;
  border-color: rgba(255, 255, 255, .85);
  background: rgba(255, 255, 255, .06);
}

.topbar__right {
  display: flex;
  align-items: center;
  gap: var(--s-6);
  padding: 0 var(--gutter);
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  flex: 0 0 auto;
}
.brand__mark {
  font-family: "Anton", "Arial Black", Impact, sans-serif;
  font-size: 34px;
  line-height: 1;
  letter-spacing: .02em;
  color: #fff;
  transform: skewX(-9deg);
  text-shadow: 0 2px 0 rgba(0, 0, 0, .6);
}
.brand__mark span { color: var(--orange); }
.brand__tag {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .22em;
  color: var(--orange);
  border: 1px solid var(--line-warm-hi);
  border-radius: var(--r-xs);
  padding: 3px 6px;
  align-self: center;
}

.mainnav {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-left: 10px;
  min-width: 0;
}
.mainnav__link {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  height: 40px;
  padding: 0 14px;
  border-radius: var(--r-sm);
  font-size: 15px;
  font-weight: 500;
  color: var(--text-2);
  white-space: nowrap;
  transition: color .16s ease, background .16s ease;
}
.mainnav__link:hover { color: #fff; background: rgba(255, 255, 255, .06); }
.mainnav__link svg { width: 20px; height: 20px; color: var(--orange); flex: 0 0 auto; }

.topbar__actions {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-left: auto;
  flex: 0 0 auto;
}

/* --------------------------------------------------------------------------
   6. Sidebar
   -------------------------------------------------------------------------- */
.sidebar {
  position: fixed;
  top: var(--topbar-h);
  bottom: 0;
  left: 0;
  z-index: 65;
  width: var(--sidebar-w);
  background: var(--sidebar);
  border-right: 1px solid var(--line);
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: #33241b transparent;
}
.sidebar::-webkit-scrollbar { width: 6px; }
.sidebar::-webkit-scrollbar-thumb { background: #33241b; border-radius: 3px; }

.sidebar__top { padding: var(--s-6) var(--s-6) var(--s-5); }
.sidebar__top .btn + .btn { margin-top: 14px; }

/* torn-paper divider, same trick as the reference's ragged edge */
.torn {
  height: 26px;
  background: var(--panel);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 26' preserveAspectRatio='none'%3E%3Cpath d='M0,26 L0,12 L14,4 L30,14 L48,3 L66,13 L84,5 L104,15 L122,4 L140,13 L158,2 L176,12 L196,4 L214,14 L232,5 L250,15 L268,4 L286,12 L304,3 L320,13 L330,6 L330,26 Z' fill='%23000'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 26' preserveAspectRatio='none'%3E%3Cpath d='M0,26 L0,12 L14,4 L30,14 L48,3 L66,13 L84,5 L104,15 L122,4 L140,13 L158,2 L176,12 L196,4 L214,14 L232,5 L250,15 L268,4 L286,12 L304,3 L320,13 L330,6 L330,26 Z' fill='%23000'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
}
.torn--top {
  background: linear-gradient(180deg, #1d130c, #120c08);
}

.sidebar__body {
  background: var(--panel);
  min-height: calc(100% - 172px);
  padding: var(--s-4) 0 var(--s-8);
}

.snav { padding: 0 var(--s-4); }
.snav__link {
  display: flex;
  align-items: center;
  gap: 16px;
  height: 45px;
  padding: 0 12px;
  border-radius: var(--r-sm);
  font-size: 16px;
  font-weight: 500;
  color: var(--text);
  transition: background .16s ease, color .16s ease;
}
.snav__link:hover { background: rgba(255, 255, 255, .05); }
.snav__link.is-active {
  background: linear-gradient(90deg, rgba(255, 139, 44, .18), transparent);
  box-shadow: inset 2px 0 0 var(--orange);
}
.snav__link svg { width: 24px; height: 24px; color: var(--amber); flex: 0 0 auto; }

.sgroup { margin-top: var(--s-6); padding: 0 var(--s-4); }
.sgroup__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 6px 12px;
  color: #fff;
  font-size: 17px;
  font-weight: 700;
}
.sgroup__head .chev {
  width: 18px; height: 18px;
  color: var(--muted);
  transition: transform .22s ease;
}
.sgroup.is-collapsed .chev { transform: rotate(180deg); }
.sgroup__body {
  overflow: hidden;
  transition: height .25s ease;
}
.sgroup.is-collapsed .sgroup__body { height: 0 !important; }

.tourney {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 12px;
  border-radius: var(--r-sm);
  color: #fff;
  font-size: 16px;
  font-weight: 500;
}
.tourney:hover { background: rgba(255, 255, 255, .05); }
.tourney svg { width: 22px; height: 22px; flex: 0 0 auto; color: var(--amber); }
.tourney__timer {
  margin-left: auto;
  padding: 4px 10px;
  border-radius: var(--r-xs);
  border: 1px solid var(--line-warm-hi);
  color: var(--orange);
  font-size: 11.5px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.promo-tiles {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  padding: 8px 12px 0;
}
.promo-tile {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 4 / 3;
  border-radius: var(--r);
  border: 1px solid var(--line-warm);
  background: linear-gradient(180deg, rgba(255, 139, 44, .2), rgba(255, 139, 44, .05));
  color: var(--amber);
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.promo-tile:hover {
  transform: translateY(-2px);
  border-color: var(--line-warm-hi);
  box-shadow: var(--sh-glow);
}
.promo-tile svg { width: 22px; height: 22px; flex: 0 0 auto; }

.sidebar__foot { margin-top: var(--s-6); padding: 0 var(--s-4) var(--s-6); }
.sidebar__legal {
  margin: var(--s-5) 12px 0;
  padding-top: var(--s-5);
  border-top: 1px solid var(--line);
  color: var(--muted-2);
  font-size: 12px;
  line-height: 1.6;
}
.sidebar__legal strong { color: var(--muted); }

/* --------------------------------------------------------------------------
   7. Hero
   -------------------------------------------------------------------------- */
.hero {
  position: relative;
  height: 394px;
  overflow: hidden;
  background: #140a04;
}

.hero__track { position: absolute; inset: 0; }

.hero__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  visibility: hidden;
  transition: opacity .6s ease, visibility .6s ease;
}
.hero__slide.is-active { opacity: 1; visibility: visible; }

.hero__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hero__inner {
  position: relative;
  z-index: 2;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0 var(--s-7) 96px;
}

.hero__eyebrow {
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .3em;
  padding-left: .3em;
  text-transform: uppercase;
  color: #fff;
  text-shadow: 0 2px 8px rgba(0, 0, 0, .8);
}

.hero__title {
  margin: 8px 0 18px;
  font-family: "Anton", "Arial Black", Impact, sans-serif;
  font-weight: 400;
  font-size: clamp(34px, 5.2vw, 68px);
  line-height: .98;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: #fff;
  transform: skewX(-6deg);
  text-shadow:
     3px 3px 0 rgba(40, 16, 2, .85),
     0 10px 40px rgba(0, 0, 0, .8);
}
.hero__title em { font-style: normal; color: var(--amber); }

.hero__sub {
  max-width: 560px;
  margin: -6px auto 22px;
  color: rgba(255, 255, 255, .82);
  font-size: 15px;
  text-shadow: 0 2px 8px rgba(0, 0, 0, .9);
}

/* payment logo strip sitting over the hero foot */
.paystrip::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: -22px; bottom: -30px;
  background: linear-gradient(180deg, transparent, rgba(8, 4, 2, .72) 40%, rgba(8, 4, 2, .72) 70%, transparent);
  z-index: -1;
}
.paystrip {
  position: absolute;
  left: 0; right: 0;
  bottom: 44px;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 30px;
  padding: 0 var(--s-6);
  pointer-events: none;
}
.paystrip img, .paystrip svg { height: 24px; width: auto; opacity: .92; }

.hero__dots {
  position: absolute;
  left: 0; right: 0;
  bottom: 18px;
  z-index: 4;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
}
.hero__dot {
  width: 9px;
  height: 9px;
  border-radius: var(--pill);
  background: rgba(255, 255, 255, .45);
  transition: width .28s ease, background .28s ease;
}
.hero__dot.is-active { width: 46px; background: #fff; }

.hero__arrow {
  position: absolute;
  top: 50%;
  z-index: 4;
  transform: translateY(-50%);
  width: 42px; height: 42px;
  border-radius: var(--pill);
  background: rgba(10, 5, 2, .45);
  border: 1px solid rgba(255, 255, 255, .25);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity .2s ease, background .2s ease;
}
.hero:hover .hero__arrow,
.hero__arrow:focus-visible { opacity: 1; }
.hero__arrow--prev { left: 16px; }
.hero__arrow--next { right: 16px; }
.hero__arrow:hover { background: rgba(255, 139, 44, .85); }
.hero__arrow svg { width: 18px; height: 18px; flex: 0 0 auto; }

/* --------------------------------------------------------------------------
   8. Live wins panel
   -------------------------------------------------------------------------- */
.livewins {
  margin: var(--s-5) 0 0;
  padding: 14px 16px 16px;
  border-radius: var(--r-lg);
  background: var(--panel);
  border: 1px solid var(--line);
}

.tabs {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
  overflow-x: auto;
  scrollbar-width: none;
}
.tabs::-webkit-scrollbar { display: none; }
.tabs__btn { flex: 0 0 auto; white-space: nowrap; }
.tabs__btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 34px;
  padding: 0 14px;
  border-radius: var(--r-sm);
  font-size: 14px;
  font-weight: 600;
  color: var(--muted);
  transition: color .16s ease, background .16s ease;
}
.tabs__btn svg { width: 18px; height: 18px; flex: 0 0 auto; }
.tabs__btn:hover { color: var(--text-2); }
.tabs__btn.is-active { color: var(--orange); background: rgba(255, 139, 44, .1); }

.winrow {
  display: flex;
  gap: 12px;
}
.wincard {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 0 0 auto;
  min-width: 168px;
  padding: 8px 12px 8px 8px;
  border-radius: var(--r);
  background: var(--card);
  border: 1px solid var(--line-warm);
  transition: border-color .16s ease, transform .16s ease;
}
.wincard:hover { border-color: var(--line-warm-hi); transform: translateY(-2px); }
.wincard__thumb {
  width: 46px; height: 56px;
  border-radius: var(--r-xs);
  object-fit: cover;
  flex: 0 0 auto;
}
.wincard__user { font-size: 12.5px; color: var(--text-2); letter-spacing: .02em; }
.wincard__amt  { font-size: 15px; font-weight: 700; color: #fff; }
.wincard__mult { font-size: 12px; color: var(--muted-2); }

/* --------------------------------------------------------------------------
   9. Category filter bar
   -------------------------------------------------------------------------- */
.catbar {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: var(--s-5) 0 0;
}

.catbar__scroller {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  align-items: center;
  padding: 10px 12px;
  border-radius: var(--r-md);
  background: var(--panel);
  border: 1px solid var(--line);
}
.catbar__list {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 1 1 auto;
  min-width: 0;
  scroll-behavior: smooth;
}
.catbar__item {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 42px;
  padding: 0 18px;
  border-radius: var(--r-sm);
  font-size: 15px;
  font-weight: 500;
  color: var(--text-2);
  white-space: nowrap;
  border: 1.5px solid transparent;
  transition: color .16s ease, background .16s ease, border-color .16s ease;
}
.catbar__item svg { width: 20px; height: 20px; flex: 0 0 auto; color: var(--amber); }
.catbar__item:hover { color: #fff; background: rgba(255, 255, 255, .05); }
.catbar__item.is-active {
  color: #fff;
  border-color: rgba(255, 255, 255, .8);
  background: rgba(255, 255, 255, .05);
}
.catbar__next {
  flex: 0 0 auto;
  margin-left: 6px;
  width: 30px; height: 30px;
  border-radius: var(--r-xs);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-2);
}
.catbar__next:hover { background: rgba(255, 255, 255, .08); color: #fff; }
.catbar__next svg { width: 16px; height: 16px; flex: 0 0 auto; }

.select {
  position: relative;
  flex: 0 0 auto;
  width: 250px;
}
.select__btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  height: 52px;
  padding: 0 18px;
  border-radius: var(--r-md);
  background: var(--panel);
  border: 1px solid var(--line);
  color: var(--text-2);
  font-size: 15px;
}
.select__btn:hover { border-color: var(--line-warm); color: #fff; }
.select__btn svg { width: 18px; height: 18px; flex: 0 0 auto; transition: transform .2s ease; }
.select.is-open .select__btn svg { transform: rotate(180deg); }
.select__menu {
  position: absolute;
  top: calc(100% + 8px);
  left: 0; right: 0;
  z-index: 30;
  padding: 6px;
  border-radius: var(--r-md);
  background: var(--surface);
  border: 1px solid var(--line-2);
  box-shadow: var(--sh-pop);
  max-height: 300px;
  overflow-y: auto;
  display: none;
}
.select.is-open .select__menu { display: block; }
.select__opt {
  display: block;
  width: 100%;
  text-align: left;
  padding: 10px 12px;
  border-radius: var(--r-xs);
  font-size: 14.5px;
  color: var(--text-2);
}
.select__opt:hover { background: rgba(255, 255, 255, .07); color: #fff; }
.select__opt.is-active { color: var(--orange); }

.searchbox {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  height: 52px;
  border-radius: var(--r-md);
  background: var(--panel);
  border: 1px solid var(--line);
  overflow: hidden;
  transition: width .28s ease, border-color .2s ease;
  width: 56px;
}
.searchbox.is-open { width: 280px; border-color: var(--line-warm); }
.searchbox__btn {
  flex: 0 0 56px;
  height: 100%;
  display: grid;
  place-items: center;
  color: var(--text-2);
}
.searchbox__btn:hover { color: #fff; }
.searchbox__btn svg { width: 20px; height: 20px; flex: 0 0 auto; }
.searchbox__input {
  flex: 1 1 auto;
  min-width: 0;
  height: 100%;
  padding-right: 14px;
  background: none;
  border: 0;
  color: #fff;
  font-size: 15px;
  outline: none;
}
.searchbox__input::placeholder { color: var(--muted-2); }

/* --------------------------------------------------------------------------
   10. Game rows
   -------------------------------------------------------------------------- */
.section { margin-top: var(--s-8); }

.section__head {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: var(--s-4);
}
.section__title {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-size: 26px;
  font-weight: 800;
  color: #fff;
}
.section__title svg { width: 28px; height: 28px; flex: 0 0 auto; color: var(--amber); }
.section__count {
  font-size: 13px;
  font-weight: 600;
  color: var(--muted-2);
  padding-top: 4px;
}
.section__nav { margin-left: auto; display: flex; gap: 10px; }

.rail {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(158px, 1fr);
  gap: 20px;
  scroll-behavior: smooth;
}
.rail--grid {
  display: grid;
  grid-auto-flow: row;
  grid-template-columns: repeat(auto-fill, minmax(158px, 1fr));
}

.gcard {
  position: relative;
  display: block;
  border-radius: var(--r);
  overflow: hidden;
  background: var(--card);
  border: 1px solid var(--line);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.gcard:hover {
  transform: translateY(-5px);
  border-color: var(--line-warm-hi);
  box-shadow: var(--sh-card);
}
.gcard__img {
  width: 100%;
  height: auto;              /* let aspect-ratio win over the HTML height attr */
  aspect-ratio: 42 / 50;
  object-fit: cover;
  background: #0d0703;
}
.gcard__badge {
  position: absolute;
  top: 12px;
  left: -30px;
  z-index: 2;
  width: 118px;
  padding: 4px 0;
  text-align: center;
  transform: rotate(-40deg);
  background: linear-gradient(90deg, #7c3aed, #a855f7);
  color: #fff;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .1em;
  box-shadow: 0 4px 12px rgba(0, 0, 0, .5);
}
.gcard__badge--hot { background: linear-gradient(90deg, #b91c1c, #f97316); }
.gcard__badge--new { background: linear-gradient(90deg, #047857, #22c55e); }

.gcard__overlay {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 12px;
  text-align: center;
  background: linear-gradient(180deg, rgba(10, 5, 2, .5), rgba(10, 5, 2, .88));
  opacity: 0;
  transition: opacity .2s ease;
}
.gcard:hover .gcard__overlay { opacity: 1; }
.gcard__name { font-size: 14px; font-weight: 700; color: #fff; }
.gcard__prov { font-size: 11.5px; color: var(--muted); }
.gcard__play {
  height: 36px;
  padding: 0 20px;
  border-radius: var(--pill);
  background: linear-gradient(180deg, var(--orange), var(--orange-3));
  color: #1a0d03;
  font-size: 13px;
  font-weight: 800;
  display: inline-flex;
  align-items: center;
}

/* --------------------------------------------------------------------------
   11. Promo blocks
   -------------------------------------------------------------------------- */
.promos {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.promo {
  position: relative;
  overflow: hidden;
  min-height: 220px;
  padding: 26px;
  border-radius: var(--r-lg);
  border: 1px solid var(--line-warm);
  background:
    radial-gradient(120% 110% at 82% 12%, rgba(255, 139, 44, .32), transparent 62%),
    linear-gradient(160deg, #22150c 0%, #120b07 100%);
  display: flex;
  flex-direction: column;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.promo:hover {
  transform: translateY(-4px);
  border-color: var(--line-warm-hi);
  box-shadow: var(--sh-card);
}
.promo__kicker {
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--orange);
}
.promo__title {
  margin: 10px 0 8px;
  font-family: "Anton", "Arial Black", Impact, sans-serif;
  font-weight: 400;
  font-size: 30px;
  line-height: 1.02;
  text-transform: uppercase;
  color: #fff;
  transform: skewX(-5deg);
}
.promo__text {
  color: var(--muted);
  font-size: 14px;
  margin: 0 0 20px;
  max-width: 30ch;
}
.promo__cta { margin-top: auto; align-self: flex-start; }
.promo__deco {
  position: absolute;
  right: -22px;
  bottom: -22px;
  width: 150px;
  opacity: .5;
  pointer-events: none;
}

/* wide banner */
.banner {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  align-items: center;
  gap: var(--s-7);
  padding: 36px 40px;
  border-radius: var(--r-lg);
  border: 1px solid var(--line-warm);
  background:
    radial-gradient(90% 160% at 8% 50%, rgba(255, 139, 44, .26), transparent 60%),
    linear-gradient(120deg, #24150b 0%, #0f0906 62%);
}
.banner__title {
  font-family: "Anton", "Arial Black", Impact, sans-serif;
  font-weight: 400;
  font-size: clamp(28px, 3vw, 42px);
  line-height: 1;
  text-transform: uppercase;
  transform: skewX(-6deg);
  margin-bottom: 12px;
}
.banner__title em { font-style: normal; color: var(--orange); }
.banner__text { color: var(--muted); margin: 0 0 22px; max-width: 56ch; }
.banner__stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.stat {
  padding: 18px;
  border-radius: var(--r-md);
  background: rgba(10, 6, 3, .6);
  border: 1px solid var(--line);
  text-align: center;
}
.stat__num {
  font-family: "Anton", "Arial Black", Impact, sans-serif;
  font-size: 26px;
  color: var(--orange);
  line-height: 1.1;
}
.stat__lbl { font-size: 12px; color: var(--muted); margin-top: 4px; }

/* --------------------------------------------------------------------------
   12. Steps + content
   -------------------------------------------------------------------------- */
.steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
}
.step {
  padding: 26px 22px;
  border-radius: var(--r-lg);
  background: var(--panel);
  border: 1px solid var(--line);
}
.step__n {
  display: grid;
  place-items: center;
  width: 44px; height: 44px;
  margin-bottom: 16px;
  border-radius: var(--r-sm);
  background: linear-gradient(180deg, rgba(255, 139, 44, .28), rgba(255, 139, 44, .06));
  border: 1px solid var(--line-warm);
  color: var(--orange);
  font-family: "Anton", sans-serif;
  font-size: 20px;
}
.step h3 { font-size: 17px; margin-bottom: 8px; }
.step p { margin: 0; color: var(--muted); font-size: 14px; }

.prose {
  padding: 34px 38px;
  border-radius: var(--r-lg);
  background: var(--panel);
  border: 1px solid var(--line);
  color: var(--text-2);
}
.prose h2 { font-size: 24px; margin-bottom: 14px; }
.prose h3 { font-size: 18px; margin: 26px 0 10px; color: #fff; }
.prose p  { margin: 0 0 14px; color: var(--muted); font-size: 14.5px; line-height: 1.75; }
.prose ul { margin: 0 0 14px; padding-left: 20px; list-style: disc; color: var(--muted); }
.prose li { margin-bottom: 7px; font-size: 14.5px; }
.prose strong { color: var(--text-2); }
.prose a { color: var(--orange); }
.prose a:hover { text-decoration: underline; }

.table-wrap { overflow-x: auto; border-radius: var(--r-md); border: 1px solid var(--line); }
table.tbl {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
  font-size: 14.5px;
}
table.tbl th,
table.tbl td { padding: 14px 18px; text-align: left; }
table.tbl thead th {
  background: rgba(255, 139, 44, .1);
  color: var(--amber);
  font-size: 12.5px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  white-space: nowrap;
}
table.tbl tbody tr { border-top: 1px solid var(--line); }
table.tbl tbody tr:nth-child(even) { background: rgba(255, 255, 255, .02); }
table.tbl td { color: var(--muted); }
table.tbl td:first-child { color: #fff; font-weight: 600; }

/* --------------------------------------------------------------------------
   13. FAQ
   -------------------------------------------------------------------------- */
.faq { display: grid; gap: 12px; }
.faq__item {
  border-radius: var(--r-md);
  background: var(--panel);
  border: 1px solid var(--line);
  overflow: hidden;
  transition: border-color .2s ease;
}
.faq__item.is-open { border-color: var(--line-warm); }
.faq__q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  width: 100%;
  padding: 20px 24px;
  text-align: left;
  font-size: 16px;
  font-weight: 600;
  color: #fff;
}
.faq__q:hover { background: rgba(255, 255, 255, .03); }
.faq__q .plus {
  flex: 0 0 auto;
  width: 26px; height: 26px;
  display: grid; place-items: center;
  border-radius: var(--r-xs);
  border: 1px solid var(--line-warm);
  color: var(--orange);
  transition: transform .25s ease, background .25s ease;
}
.faq__item.is-open .plus { transform: rotate(45deg); background: rgba(255, 139, 44, .16); }
.faq__a { height: 0; overflow: hidden; transition: height .26s ease; }
.faq__a > div { padding: 0 24px 22px; color: var(--muted); font-size: 14.5px; line-height: 1.75; }

/* --------------------------------------------------------------------------
   14. Footer
   -------------------------------------------------------------------------- */
.footer {
  margin-top: var(--s-9);
  padding: var(--s-8) 0 var(--s-7);
  background: var(--bg-deep);
  border-top: 1px solid var(--line);
}
.footer__grid {
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: var(--s-7);
  padding-bottom: var(--s-7);
  border-bottom: 1px solid var(--line);
}
.footer__about p {
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.7;
  margin: 14px 0 0;
  max-width: 40ch;
}
.footer h4 {
  font-size: 13px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--amber);
  margin-bottom: 16px;
}
.footer__links a {
  display: block;
  padding: 6px 0;
  color: var(--muted);
  font-size: 14px;
}
.footer__links a:hover { color: #fff; }

.footer__strip {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 26px;
  padding: var(--s-6) 0;
  border-bottom: 1px solid var(--line);
}
.footer__strip img, .footer__strip svg { height: 22px; opacity: .6; }
.footer__strip img:hover, .footer__strip svg:hover { opacity: 1; }

.footer__bottom {
  display: flex;
  align-items: center;
  gap: var(--s-5);
  flex-wrap: wrap;
  padding-top: var(--s-6);
  color: var(--muted-2);
  font-size: 12.5px;
  line-height: 1.7;
}
.footer__bottom p { margin: 0; max-width: 100ch; }
.age {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 46px; height: 46px;
  border-radius: var(--pill);
  border: 2px solid var(--muted-2);
  color: var(--muted);
  font-weight: 800;
  font-size: 14px;
}

/* --------------------------------------------------------------------------
   15. Responsive
   -------------------------------------------------------------------------- */
@media (max-width: 1500px) {
  .promos { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 1280px) {
  :root { --sidebar-w: 290px; --gutter: 26px; }
  .steps { grid-template-columns: repeat(2, 1fr); }
  .banner { grid-template-columns: 1fr; }
  .select { width: 200px; }
}

@media (max-width: 1080px) {
  :root { --sidebar-w: 300px; }
  .app { grid-template-columns: minmax(0, 1fr); }
  .main { grid-column: 1; }
  .topbar { grid-template-columns: minmax(0, 1fr); }
  .topbar__left {
    background: transparent;
    padding-right: 0;
    gap: 12px;
  }
  .topbar__right { padding-left: 0; }
  .topbar { display: flex; align-items: center; padding: 0 var(--gutter); gap: 14px; }
  .topbar__left { padding-left: 0; }

  .sidebar {
    transform: translateX(-102%);
    transition: transform .28s ease;
    box-shadow: var(--sh-pop);
  }
  .sidebar.is-open { transform: none; }

  .mainnav { display: none; }
  .promos { grid-template-columns: repeat(2, 1fr); }
  .footer__grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 860px) {
  :root { --topbar-h: 64px; --gutter: 18px; }
  .hero { height: 330px; }
  .paystrip { gap: 20px; bottom: 40px; }
  .paystrip img, .paystrip svg { height: 19px; }
  .brand__mark { font-size: 27px; }
  .brand__tag { display: none; }
  .segment__btn { padding: 0 16px; font-size: 14px; }
  .catbar { flex-wrap: wrap; }
  .catbar__scroller { order: 3; flex: 1 0 100%; }
  .select { flex: 1 1 auto; width: auto; }
  .searchbox.is-open { width: 100%; }
  .rail { grid-auto-columns: minmax(132px, 1fr); gap: 14px; }
  .rail--grid { grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); }
  .section__title { font-size: 21px; }
  .prose { padding: 24px 20px; }
  .banner { padding: 26px 22px; }
  .promos { grid-template-columns: 1fr; }
  .steps { grid-template-columns: 1fr; }
  .footer__grid { grid-template-columns: 1fr; gap: var(--s-6); }
}

@media (max-width: 560px) {
  .topbar__actions .btn { height: 40px; padding: 0 15px; font-size: 14px; }
  .btn--hero { min-width: 0; width: 100%; max-width: 340px; height: 50px; font-size: 16px; }
  .hero { height: 300px; }
  .hero__eyebrow { font-size: 12px; }
  .paystrip { display: none; }
  .segment { display: none; }
  .wincard { min-width: 152px; }
  .footer__bottom { font-size: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

/* --------------------------------------------------------------------------
   16. Inner-page shell — breadcrumbs, page head, forms, data rows
   Built from the existing tokens only; no new colours or radii.
   -------------------------------------------------------------------------- */
.pagehead {
  padding: var(--s-8) 0 var(--s-6);
  border-bottom: 1px solid var(--line);
  margin-bottom: var(--s-7);
  background:
    radial-gradient(78% 150% at 4% 0%, rgba(255, 139, 44, .14), transparent 60%);
}
.pagehead__title {
  font-family: "Anton", "Arial Black", Impact, sans-serif;
  font-weight: 400;
  font-size: clamp(30px, 4vw, 46px);
  line-height: 1.02;
  text-transform: uppercase;
  transform: skewX(-6deg);
  margin: 10px 0 12px;
}
.pagehead__title em { font-style: normal; color: var(--orange); }
.pagehead__lede {
  margin: 0;
  max-width: 68ch;
  color: var(--muted);
  font-size: 15.5px;
  line-height: 1.7;
}

.crumbs {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 13px;
  color: var(--muted-2);
}
.crumbs a { color: var(--muted); }
.crumbs a:hover { color: var(--orange); }
.crumbs span[aria-current] { color: var(--text-2); }
.crumbs svg { width: 13px; height: 13px; opacity: .55; }

.cols {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  gap: 20px;
  align-items: start;
}
.cols--even { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.panel {
  padding: 26px 28px;
  border-radius: var(--r-lg);
  background: var(--panel);
  border: 1px solid var(--line);
}
.panel h3 { font-size: 17px; margin-bottom: 10px; }
.panel p  { margin: 0 0 12px; color: var(--muted); font-size: 14.5px; line-height: 1.7; }
.panel p:last-child { margin-bottom: 0; }
.panel--warm { border-color: var(--line-warm); }

.notice {
  display: flex;
  gap: 16px;
  padding: 20px 24px;
  border-radius: var(--r-md);
  background: rgba(255, 139, 44, .08);
  border: 1px solid var(--line-warm);
  color: var(--text-2);
  font-size: 14.5px;
  line-height: 1.7;
}
.notice svg { width: 22px; height: 22px; flex: 0 0 auto; color: var(--orange); margin-top: 2px; }
.notice strong { color: #fff; }

/* forms — markup only; wire the action to your auth/CRM backend */
.form { display: grid; gap: 18px; max-width: 460px; }
.form--wide { max-width: 720px; }
.form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.field { display: grid; gap: 7px; }
.field > label {
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--amber);
}
.field input,
.field select,
.field textarea {
  width: 100%;
  height: 50px;
  padding: 0 16px;
  border-radius: var(--r-md);
  background: var(--surface);
  border: 1px solid var(--line-2);
  color: #fff;
  font: inherit;
  outline: none;
  transition: border-color .16s ease, background .16s ease;
}
.field textarea { height: auto; min-height: 130px; padding: 14px 16px; resize: vertical; }
.field input:focus,
.field select:focus,
.field textarea:focus { border-color: var(--line-warm-hi); background: var(--card-hi); }
.field input::placeholder, .field textarea::placeholder { color: var(--muted-2); }
.field__hint { font-size: 12.5px; color: var(--muted-2); }

.check {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: 14px;
  color: var(--muted);
  line-height: 1.6;
}
.check input {
  flex: 0 0 auto;
  width: 20px; height: 20px;
  margin-top: 1px;
  accent-color: var(--orange);
}
.check a { color: var(--orange); }
.check a:hover { text-decoration: underline; }

.form__aside {
  margin: 0;
  font-size: 14px;
  color: var(--muted);
}
.form__aside a { color: var(--orange); }
.form__aside a:hover { text-decoration: underline; }

/* tier / leaderboard rows */
.tier {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr) auto;
  align-items: center;
  gap: 18px;
  padding: 16px 20px;
  border-radius: var(--r-md);
  background: var(--panel);
  border: 1px solid var(--line);
}
.tier + .tier { margin-top: 10px; }
.tier__n {
  display: grid;
  place-items: center;
  width: 46px; height: 46px;
  border-radius: var(--r-sm);
  background: linear-gradient(180deg, rgba(255, 139, 44, .26), rgba(255, 139, 44, .06));
  border: 1px solid var(--line-warm);
  color: var(--orange);
  font-family: "Anton", sans-serif;
  font-size: 19px;
}
.tier__name { font-size: 16px; font-weight: 700; }
.tier__meta { font-size: 13px; color: var(--muted); margin-top: 3px; }
.tier__val {
  font-family: "Anton", sans-serif;
  font-size: 20px;
  color: var(--amber);
  white-space: nowrap;
}

.linklist { display: grid; gap: 10px; }
.linklist a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 15px 20px;
  border-radius: var(--r-md);
  background: var(--panel);
  border: 1px solid var(--line);
  font-size: 15px;
  font-weight: 600;
  transition: border-color .16s ease, transform .16s ease;
}
.linklist a:hover { border-color: var(--line-warm-hi); transform: translateX(3px); }
.linklist svg { width: 16px; height: 16px; flex: 0 0 auto; color: var(--orange); }

@media (max-width: 1080px) {
  .cols, .cols--even { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 860px) {
  .form__row { grid-template-columns: minmax(0, 1fr); }
  .panel { padding: 20px; }
  .tier { grid-template-columns: 44px minmax(0, 1fr); }
  .tier__val { grid-column: 2; }
}

/* a game card arrived at via pokies.html#<slug> */
.gcard { scroll-margin-top: calc(var(--topbar-h) + 24px); }
.gcard.is-targeted {
  border-color: var(--orange);
  box-shadow: 0 0 0 2px var(--orange), 0 10px 34px rgba(255, 120, 30, .3);
}

/* --------------------------------------------------------------------------
   17. Featured promo cards — the promo block with real key art behind it.
   Same radius, border and CTA as .promo; only the background changes.
   -------------------------------------------------------------------------- */
.featured {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}

.promo--art {
  min-height: 300px;
  justify-content: flex-end;
  background: #140b06;
  isolation: isolate;
}
/* the art is a real <img> rather than a CSS background: a url() written in an
   inline custom property resolves against the stylesheet, not the document */
.promo__art {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: right center;
  transition: transform .45s ease;
}
.promo--art:hover .promo__art { transform: scale(1.04); }
.promo--art::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(90deg, rgba(10, 5, 2, .95) 0%, rgba(10, 5, 2, .8) 38%, rgba(10, 5, 2, .12) 76%),
    linear-gradient(0deg, rgba(10, 5, 2, .8), transparent 58%);
}
.promo--art .promo__text { max-width: 34ch; }
.promo--art .promo__title { text-shadow: 0 3px 14px rgba(0, 0, 0, .8); }

@media (max-width: 1080px) {
  .featured { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 860px) {
  .promo--art { min-height: 260px; }
  .promo--art::after {
    background:
      linear-gradient(90deg, rgba(10, 5, 2, .94) 0%, rgba(10, 5, 2, .8) 55%, rgba(10, 5, 2, .35) 100%),
      linear-gradient(0deg, rgba(10, 5, 2, .8), transparent 60%);
  }
}

/* --------------------------------------------------------------------------
   18. Editorial homepage — section banners, disclosure, numbered points,
   illustrative game gallery. Built from the existing tokens only.
   -------------------------------------------------------------------------- */
.lede-hero {
  position: relative;
  overflow: hidden;
  padding: var(--s-9) var(--gutter) var(--s-8);
  border-bottom: 1px solid var(--line);
  background:
    radial-gradient(90% 150% at 12% 0%, rgba(255, 139, 44, .18), transparent 62%),
    linear-gradient(180deg, #170d07 0%, var(--bg) 100%);
}
.lede-hero__inner { max-width: 78ch; }
.lede-hero h1 {
  font-family: "Anton", "Arial Black", Impact, sans-serif;
  font-weight: 400;
  font-size: clamp(32px, 4.6vw, 54px);
  line-height: 1.02;
  text-transform: uppercase;
  transform: skewX(-6deg);
  margin: 14px 0 18px;
  text-wrap: balance;
}
.lede-hero h1 em { font-style: normal; color: var(--orange); }
.lede-hero p {
  margin: 0;
  color: var(--text-2);
  font-size: 16.5px;
  line-height: 1.75;
  max-width: 70ch;
}

.badge-independent {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 7px 14px;
  border-radius: var(--pill);
  border: 1px solid var(--line-warm-hi);
  background: rgba(255, 139, 44, .1);
  color: var(--amber);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.badge-independent svg { width: 15px; height: 15px; flex: 0 0 auto; }

.notice--strong {
  border-color: var(--line-warm-hi);
  background: rgba(255, 139, 44, .12);
  font-size: 15.5px;
}

/* section banner */
/* Section figures sit in the same column as the heading and copy: capped to a
   readable measure and left-aligned to the text edge, so a wide viewport does
   not turn a mid-page illustration into a full-bleed hero. */
.secfig {
  margin: 0 0 var(--s-6);
  max-width: 880px;
}
.secfig img {
  width: 100%;
  /* the older generated strips are 3.5:1 abstract washes: they stay on their own
     shallow ramp, because forcing them to the artwork's 2:1 just zooms them into
     an empty field of colour. */
  height: clamp(120px, 15vw, 200px);
  object-fit: cover;
  border-radius: var(--r-lg);
  border: 1px solid var(--line-warm);
  display: block;
}

.section--doc { margin-top: var(--s-9); }
.section--doc > .section__head { margin-bottom: var(--s-5); }
.section--doc .section__title { font-size: clamp(22px, 2.6vw, 30px); }

/* numbered points */
.points { display: grid; gap: 18px; counter-reset: pt; }
.point {
  position: relative;
  padding: 26px 28px 26px 84px;
  border-radius: var(--r-lg);
  background: var(--panel);
  border: 1px solid var(--line);
}
.point::before {
  counter-increment: pt;
  content: counter(pt);
  position: absolute;
  left: 26px;
  top: 24px;
  display: grid;
  place-items: center;
  width: 40px; height: 40px;
  border-radius: var(--r-sm);
  background: linear-gradient(180deg, rgba(255, 139, 44, .28), rgba(255, 139, 44, .06));
  border: 1px solid var(--line-warm);
  color: var(--orange);
  font-family: "Anton", sans-serif;
  font-size: 19px;
}
.point h3 { font-size: 17.5px; margin-bottom: 10px; color: #fff; }
.point p { margin: 0 0 12px; color: var(--muted); font-size: 14.5px; line-height: 1.75; }
.point p:last-child { margin-bottom: 0; }

/* illustrative game artwork gallery */
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 16px;
}
.gtile { margin: 0; }
.gtile__img {
  width: 100%;
  height: auto;
  aspect-ratio: 42 / 50;
  object-fit: cover;
  border-radius: var(--r);
  border: 1px solid var(--line);
  background: #0d0703;
}
.gtile__cap {
  margin-top: 8px;
  font-size: 12.5px;
  color: var(--muted-2);
  text-align: center;
}
.gallery-note {
  margin: 16px 0 0;
  color: var(--muted-2);
  font-size: 13px;
  line-height: 1.7;
}

/* on-this-page sidebar nav */
.toc { padding: var(--s-5) var(--s-4) 0; }
.toc__label {
  padding: 0 12px 10px;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--amber);
}
.toc a {
  display: block;
  padding: 11px 12px;
  border-radius: var(--r-sm);
  font-size: 14.5px;
  color: var(--text-2);
  line-height: 1.45;
}
.toc a:hover { background: rgba(255, 255, 255, .05); color: #fff; }

.outlink {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  height: 44px;
  padding: 0 18px;
  border-radius: var(--r);
  border: 1.5px solid rgba(255, 255, 255, .75);
  font-size: 14.5px;
  font-weight: 600;
  white-space: nowrap;
}
.outlink:hover { background: rgba(255, 255, 255, .1); }
.outlink svg { width: 16px; height: 16px; flex: 0 0 auto; }

@media (max-width: 860px) {
  .lede-hero { padding: var(--s-7) var(--gutter) var(--s-6); }
  .point { padding: 22px 20px 22px 20px; }
  .point::before { position: static; margin-bottom: 14px; }
  .gallery { grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 12px; }
}

@media (max-width: 1080px) {
  /* the disclosure still shows in the hero, the notice and the sidebar, so the
     top bar can drop the badge rather than crowd the wordmark */
  .topbar__left .badge-independent { display: none; }
  .outlink { height: 40px; padding: 0 14px; font-size: 13.5px; }
}
.outlink__short { display: none; }

@media (max-width: 560px) {
  .outlink__long { display: none; }
  .outlink__short { display: inline; }
  .lede-hero .badge-independent { font-size: 11px; letter-spacing: .1em; }
}

/* inline code, used for catalogue tag names in editorial copy */
.prose code {
  padding: 2px 7px;
  border-radius: var(--r-xs);
  background: rgba(255, 139, 44, .12);
  border: 1px solid var(--line-warm);
  color: var(--amber);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: .88em;
}

/* --------------------------------------------------------------------------
   19. Testimonials
   Same tokens as the rest of the site: --card surface, --line border,
   --r-lg radius, --orange/--amber accents, and the lift-on-hover the game
   cards and points already use.
   -------------------------------------------------------------------------- */
.tmts {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-5);
  margin-top: var(--s-6);
}

.tmt {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 26px 26px 24px;
  border-radius: var(--r-lg);
  background: var(--card);
  border: 1px solid var(--line);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .03) inset;
  transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
}
.tmt:hover {
  transform: translateY(-3px);
  border-color: var(--line-warm-hi);
  box-shadow: 0 14px 34px rgba(0, 0, 0, .45);
}

.tmt__stars {
  display: flex;
  gap: 3px;
  color: var(--amber);
}
.tmt__stars svg { width: 16px; height: 16px; flex: 0 0 auto; }

.tmt__quote {
  margin: 0;
  flex: 1 1 auto;
  color: var(--text-2);
  font-size: 15px;
  line-height: 1.75;
}

.tmt__foot {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}

/* an initial on the house gradient, not a stock photo of a person */
.tmt__avatar {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 40px; height: 40px;
  border-radius: var(--pill);
  background: linear-gradient(180deg, rgba(255, 139, 44, .28), rgba(255, 139, 44, .06));
  border: 1px solid var(--line-warm);
  color: var(--orange);
  font-family: "Anton", sans-serif;
  font-size: 17px;
  line-height: 1;
}
.tmt__name { display: block; color: #fff; font-weight: 600; font-size: 14.5px; }
.tmt__meta { display: block; color: var(--muted); font-size: 13px; margin-top: 2px; }

@media (max-width: 1180px) { .tmts { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px)  { .tmts { grid-template-columns: 1fr; } }

@media (prefers-reduced-motion: reduce) {
  .tmt, .tmt:hover { transition: none; transform: none; }
}

/* --------------------------------------------------------------------------
   19b. Sample-testimonial marking
   Placeholder cards must be unmistakable at a glance and in isolation, so the
   marking is per card as well as on the section: a screenshot of one card
   still carries the label.
   -------------------------------------------------------------------------- */
.tmt--sample {
  border-style: dashed;
  border-color: var(--line-2);
  background: var(--panel);
}
.tmt--sample .tmt__quote,
.tmt--sample .tmt__name { color: var(--muted); }
.tmt--sample .tmt__avatar {
  background: none;
  border-style: dashed;
  border-color: var(--line-2);
  color: var(--muted-2);
}

.tmt__sample {
  align-self: flex-start;
  padding: 4px 10px;
  border-radius: var(--pill);
  border: 1px dashed var(--line-warm);
  background: rgba(255, 139, 44, .06);
  color: var(--amber);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
}

/* --------------------------------------------------------------------------
   20. Supplied section artwork
   The generated banners are wide, text-free strips, so .secfig crops them to a
   fixed height. The supplied artwork carries its headline inside the image at
   2:1, so it keeps its own ratio: cropping to the strip height would cut the
   title off. Ratio matches the source exactly, so nothing is cropped or
   stretched at any width.
   -------------------------------------------------------------------------- */
.secfig--art img {
  /* supplied art is a composed 2:1 banner with its headline at the top edge and
     artwork running to the bottom, so it cannot be cropped without losing type.
     Height stays derived from the true ratio; the figure caps its width instead. */
  height: auto;
  aspect-ratio: 1774 / 887;
  object-fit: cover;
}

/* page-head artwork on the legacy pages: same treatment as .secfig--art, but
   sitting under the page title rather than inside a document section */
.pagefig {
  margin: 0 0 var(--s-7);
  max-width: 880px;              /* same measure as the in-section figures */
}
.pagefig img {
  width: 100%;
  height: auto;
  aspect-ratio: 1774 / 887;
  object-fit: cover;
  border-radius: var(--r-lg);
  border: 1px solid var(--line-warm);
  display: block;
}

/* --------------------------------------------------------------------------
   21. Section artwork: floated inside the copy
   A rigid two-column grid leaves a dead gutter under the image whenever the
   text runs longer than the artwork. Floating the figure inside the text block
   means the copy sits beside it and then continues underneath, so the column
   is never empty and the image cannot dictate the section height.
   -------------------------------------------------------------------------- */
.prose > .secfig,
.prose > .pagefig,
.pagehead > .secfig,
.pagehead > .pagefig {
  float: left;
  width: 42%;
  max-width: none;
  margin: 4px var(--s-6) var(--s-4) 0;
  shape-margin: var(--s-6);
}

/* contain the float so the card and the next section start cleanly */
.prose::after,
.pagehead::after {
  content: "";
  display: block;
  clear: both;
}

/* a table, gallery or inner grid must not try to squeeze beside the artwork */
.prose > .table-wrap,
.prose > .gallery,
.prose > .cols { clear: both; }

@media (max-width: 860px) {
  .prose > .secfig,
  .prose > .pagefig,
  .pagehead > .secfig,
  .pagehead > .pagefig {
    float: none;
    width: 100%;
    margin: 0 0 var(--s-5);       /* image first, copy directly beneath */
  }
}

/* A table or a card grid cannot flow around a float, and it is far taller than a
   2:1 banner, so pairing them side by side would leave the exact dead column
   this layout exists to avoid. Those two sections run the artwork full width
   above their content instead: no column, so no empty column. */
.section--aside > .secfig {
  float: none;
  width: 100%;
  max-width: none;
  margin: 0 0 var(--s-6);
}
.aside__body > * + * { margin-top: var(--s-5); }

/* --------------------------------------------------------------------------
   22. Split lede hero: artwork beside the page title
   -------------------------------------------------------------------------- */
.lede-hero--split .lede-hero__inner {
  max-width: 1180px;
  display: grid;
  grid-template-columns: minmax(0, 44fr) minmax(0, 56fr);
  gap: var(--s-7);
  align-items: center;
}
.lede-hero__fig { margin: 0; }
.lede-hero__fig img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1672 / 941;     /* default: the 16:9 source ratio */
  object-fit: cover;
  border-radius: var(--r-lg);
  border: 1px solid var(--line-warm);
}
.lede-hero--split .lede-hero__text > *:last-child { margin-bottom: 0; }

@media (max-width: 860px) {
  .lede-hero--split .lede-hero__inner {
    grid-template-columns: minmax(0, 1fr);   /* image first, title beneath */
    gap: var(--s-5);
  }
}

/* hero artwork supplied at 2:1 rather than 16:9 keeps its own ratio */
.lede-hero__fig--2x1 img { aspect-ratio: 1774 / 887; }

/* --------------------------------------------------------------------------
   23. Cut-out artwork
   Supplied with a transparent background rather than as a framed banner, so it
   drops the card border and radius and sits directly on the page. Narrower than
   the 2:1 banners because it is close to square and would otherwise tower over
   the copy it belongs to.
   -------------------------------------------------------------------------- */
.prose > .secfig--cutout {
  width: 33%;
  margin: 0 var(--s-6) var(--s-3) 0;
}
.secfig--cutout img {
  height: auto;
  aspect-ratio: 1230 / 1278;   /* the source ratio */
  object-fit: contain;
  border: 0;
  border-radius: 0;
  background: none;
}

@media (max-width: 860px) {
  .prose > .secfig--cutout {
    width: 74%;                /* still a cut-out, so it should not span edge to edge */
    margin: 0 auto var(--s-5);
    float: none;
  }
}
