/* ============================================================================
 * fec-edition.css  -  FreeExtraChips editorial design system
 * ----------------------------------------------------------------------------
 * Site-wide editorial redesign, homepage first.
 *
 * SCOPE & SAFETY
 *   Every rule is scoped under the root class ".fecx". It overrides nothing in
 *   fecv2.css and styles nothing until an element carries class="fecx".
 *   index.php (step two) loads this file on the homepage only and adds
 *   class="fecx" to <body> when $isHome. Inner pages keep fecv2.css alone
 *   until they migrate in later steps.
 *
 * WHAT THIS COVERS
 *   - Homepage SECTION styling: hero, freshness ticker, the Big Board,
 *     browse-by-type, FXCheck explainer, reviews, live activity, blog, FAQ,
 *     newsletter - plus shared tokens, buttons, chips, tags.
 *   - TOPBAR & FOOTER: restyles the EXISTING .fec-topbar / .fec-footer markup
 *     (Joomla module includes, user dropdown, search trigger) under .fecx -
 *     see the block at the end of this file. That markup is left untouched.
 *
 * TRANSITIONAL STATE
 *   Until the section helpers (fec_render_*) are converted, the homepage shows
 *   an editorial frame (topbar / footer / warm background) around section
 *   markup still styled by fecv2.css. That mix is expected during migration.
 *
 * TYPOGRAPHY
 *   Headlines use the site's current font (system sans, same as fecv2). The
 *   --serif token is a single switch: point it at a real self-hosted display
 *   face later if the editorial look needs more distinction.
 * ============================================================================ */

/* ====================================================================
   fec-edition.css  -  editorial design system, scoped under .fecx
   Append as a new stylesheet; loaded only on pages with class="fecx".
   ==================================================================== */

/* ---- design tokens ---- */
.fecx{
  --bg:#f7f4ed;        /* warm off-white paper */
  --bg-2:#efeadf;
  --paper:#fdfbf6;
  --ink:#14110d;
  --ink-2:#2a2620;
  --ink-3:#5a5347;
  --ink-4:#8a8275;
  --rule:#d9d2c2;
  --rule-2:#e7e0d0;
  --accent:#0b6b62;    /* refined teal */
  --accent-ink:#074842;
  --accent-soft:#d9e9e5;
  --verified:#1c7a4a;  --verified-soft:#d6ead8;
  --warn:#a85a1c;      --warn-soft:#f1ddc0;
  --danger:#9a2828;    --danger-soft:#efd9d9;
  --radius:14px;  --radius-sm:8px;  --maxw:1280px;
  /* headlines use the site's current font; --serif kept as a one-line switch */
  --serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono","Menlo","Consolas",monospace;
}

/* ---- base (scoped) ---- */
.fecx,.fecx *{box-sizing:border-box}
.fecx{font-family:var(--sans);font-size:15px;line-height:1.5;color:var(--ink);
  background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  margin:0}
.fecx a{color:inherit;text-decoration:none}
.fecx button{font:inherit;cursor:pointer}
.fecx h1,.fecx h2,.fecx h3,.fecx h4{margin:0}
.fecx .wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}
.fecx .wrap--narrow{max-width:900px}
.fecx ::selection{background:var(--accent-soft)}

/* ---- shared bits ---- */
.fecx .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--accent-ink)}
.fecx .dot{width:5px;height:5px;border-radius:50%;background:var(--ink-4);
  display:inline-block;flex:0 0 auto}

.fecx .btn{display:inline-flex;align-items:center;gap:8px;padding:11px 17px;
  border-radius:999px;font-size:14px;font-weight:500;border:1px solid transparent;
  transition:transform .05s ease,background .12s ease}
.fecx .btn:active{transform:translateY(1px)}
.fecx .btn-primary{background:var(--ink);color:var(--bg)}
.fecx .btn-primary:hover{background:var(--ink-2)}
.fecx .btn-ghost{background:transparent;color:var(--ink);border-color:var(--rule)}
.fecx .btn-ghost:hover{background:var(--bg-2)}
.fecx .btn-yes{background:var(--verified);color:var(--bg);border-color:var(--verified);font-weight:600}
.fecx .btn-yes:hover{opacity:.92}
.fecx .btn-sm{padding:7px 13px;font-size:13px}

.fecx .section{padding:60px 0;border-bottom:1px solid var(--rule)}
.fecx .section-tight{padding:26px 0}
.fecx .sec-head{display:flex;align-items:flex-end;justify-content:space-between;
  gap:20px;margin-bottom:26px}
.fecx .sec-head .left{display:flex;flex-direction:column;gap:9px;min-width:0}
.fecx .sec-title{font-family:var(--serif);font-weight:600;font-size:30px;
  letter-spacing:-.02em;line-height:1.12}
.fecx .sec-sub{color:var(--ink-3);font-size:14px;max-width:64ch}
.fecx .sec-sub b{color:var(--ink-2);font-weight:600}
.fecx .sec-link,
.fecx .fec-minirow__link{font-size:13px;color:var(--accent);display:inline-flex;
  align-items:center;gap:5px;border-bottom:1px dotted var(--accent);
  padding-bottom:2px;white-space:nowrap}
.fecx .sec-link:hover,
.fecx .fec-minirow__link:hover{color:var(--accent-ink)}

/* ---- topbar ---- */
.fecx .topbar{position:sticky;top:0;z-index:50;border-bottom:1px solid var(--rule);
  background:hsl(45 33% 95% / .85);-webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px)}
.fecx .topbar-inner{display:flex;align-items:center;gap:22px;height:62px}
.fecx .brand{font-family:var(--serif);font-weight:600;font-size:19px;
  letter-spacing:-.015em;display:flex;align-items:center;gap:10px}
.fecx .brand-mark{width:30px;height:30px;border-radius:8px;flex:0 0 auto;
  background:var(--ink);color:var(--bg);font-family:var(--serif);font-weight:600;
  display:grid;place-items:center;font-size:17px}
.fecx .brand .tld{color:var(--accent)}
.fecx .nav{display:flex;gap:3px;margin-left:6px}
.fecx .nav a{font-size:13.5px;color:var(--ink-2);padding:8px 11px;border-radius:999px}
.fecx .nav a:hover{background:var(--bg-2);color:var(--ink)}
.fecx .nav-spacer{flex:1}
.fecx .geo-pill{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;
  border-radius:999px;border:1px solid var(--rule);background:var(--paper);
  font-size:13px;color:var(--ink-2)}
.fecx .geo-pill:hover{border-color:var(--ink-4)}
.fecx .geo-flag{font-size:14px}
.fecx .icon-btn{width:36px;height:36px;border-radius:999px;border:1px solid var(--rule);
  background:var(--paper);display:grid;place-items:center;color:var(--ink-2)}
.fecx .icon-btn:hover{border-color:var(--ink-4)}
.fecx .signin{padding:8px 15px;border-radius:999px;border:1px solid var(--ink);
  background:transparent;font-size:13.5px;font-weight:500;color:var(--ink)}
.fecx .signin:hover{background:var(--ink);color:var(--bg)}
.fecx .burger{display:none;width:38px;height:38px;border-radius:999px;
  border:1px solid var(--rule);background:var(--paper);color:var(--ink-2)}

/* ---- hero ---- */
.fecx .hero{padding:44px 0;border-bottom:1px solid var(--rule)}
.fecx .hero-grid{display:grid;grid-template-columns:1.22fr 1fr;gap:54px;align-items:end}
.fecx .dateline{font-family:var(--mono);font-size:11px;color:var(--ink-3);
  letter-spacing:.03em;display:flex;gap:13px;align-items:center;flex-wrap:wrap}
.fecx .dateline b{color:var(--ink)}
.fecx .h1{font-family:var(--serif);font-weight:600;font-size:clamp(40px,5vw,62px);
  line-height:1.03;letter-spacing:-.025em;margin:18px 0 22px;color:var(--ink)}
.fecx .h1 em{font-style:italic;color:var(--accent);font-weight:600}
.fecx .hero-sub{font-size:17px;line-height:1.46;color:var(--ink-2);
  max-width:52ch;margin:0 0 26px}
.fecx .hero-btns{display:flex;gap:10px;flex-wrap:wrap}
.fecx .hero-stats{display:grid;grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--rule);margin-top:30px;padding-top:18px}
.fecx .hero-stat{padding-right:14px}
.fecx .hero-stat .num{font-family:var(--serif);font-weight:600;font-size:27px;
  letter-spacing:-.02em}
.fecx .hero-stat .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--ink-3);margin-top:4px}

/* hero featured card */
.fecx .featured-card{background:var(--paper);border:1px solid var(--rule);
  border-radius:var(--radius);padding:22px;position:relative;overflow:hidden;
  container-type:inline-size}
.fecx .featured-card::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(60% 80% at 90% -10%,var(--accent-soft) 0%,transparent 60%)}
.fecx .featured-card>*{position:relative}
.fecx .featured-stamp{position:absolute;top:18px;right:18px;font-family:var(--mono);
  font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink);
  background:var(--accent-soft);padding:5px 9px;border-radius:999px}
.fecx .featured-meta{display:flex;align-items:center;gap:10px;font-family:var(--mono);
  font-size:11px;color:var(--ink-3);letter-spacing:.04em;margin-bottom:12px}
.fecx .featured-title{font-family:var(--serif);font-size:22px;line-height:1.2;
  letter-spacing:-.01em;font-weight:700;margin:8px 0 4px}
.fecx .featured-offer{display:flex;align-items:baseline;gap:12px;margin:18px 0 14px;
  padding-bottom:14px;border-bottom:1px dashed var(--rule)}
.fecx .featured-amount{font-family:var(--serif);font-weight:700;font-size:48px;
  line-height:1;letter-spacing:-.03em;color:var(--ink)}
.fecx .featured-unit{font-size:14px;color:var(--ink-3)}
.fecx .featured-cap{font-size:12px;color:var(--ink-3);margin-top:2px}
.fecx .featured-cap b{color:var(--ink-2)}
.fecx .featured-row{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;
  margin-bottom:16px}
.fecx .featured-actions{display:flex;gap:10px}

/* ---- FX score chip ---- */
.fecx .fx-score{display:inline-flex;align-items:center;gap:8px;padding:5px 9px 5px 7px;
  border:1px solid var(--rule);border-radius:999px;background:var(--paper);
  font-family:var(--mono);font-size:11px;color:var(--ink-2);white-space:nowrap}
.fecx .fx-meter{width:36px;height:4px;border-radius:2px;background:var(--rule);
  position:relative;overflow:hidden;flex:0 0 auto}
.fecx .fx-meter>span{position:absolute;inset:0;background:var(--verified);
  transform-origin:left}
.fecx .fx-score.warn .fx-meter>span{background:var(--warn)}
.fecx .fx-score.danger .fx-meter>span{background:var(--danger)}


/* ---- big board (FEC V2.1 - Claude Design board) ---- */
.fecx .viewtoggle{display:flex;border:1px solid var(--rule);border-radius:999px;
  padding:3px;background:var(--paper);flex:0 0 auto}
.fecx .viewtoggle button{border:none;background:transparent;display:inline-flex;
  align-items:center;gap:6px;padding:6px 12px;border-radius:999px;font-size:13px;
  color:var(--ink-2)}
.fecx .viewtoggle button.active{background:var(--ink);color:var(--bg)}
.fecx .filterbar{display:flex;flex-wrap:wrap;gap:8px;padding:14px;background:var(--paper);
  border:1px solid var(--rule);border-radius:var(--radius);margin-bottom:20px;
  align-items:center}
.fecx .fbar-search{flex:1;min-width:220px;display:flex;align-items:center;gap:8px;
  padding:8px 12px;border:1px solid var(--rule);border-radius:999px;background:var(--bg)}
.fecx .fbar-search svg{opacity:.5;flex:0 0 auto}
.fecx .fbar-search input{border:none;background:transparent;outline:none;font:inherit;
  color:var(--ink);width:100%}
.fecx .fbar-label{font-family:var(--mono);font-size:10px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-3);margin-left:6px}
.fecx .fbar-group{display:flex;gap:8px;flex-wrap:wrap}
.fecx .chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;
  border-radius:999px;background:var(--bg);border:1px solid var(--rule);
  font-size:13px;color:var(--ink-2);cursor:pointer}
.fecx .chip:hover{border-color:var(--ink-4);color:var(--ink)}
.fecx .chip.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.fecx .table-wrap{background:var(--paper);border:1px solid var(--rule);
  border-radius:var(--radius);overflow:hidden}
.fecx .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.fecx .bonus-table{width:100%;border-collapse:collapse;font-size:13px;min-width:880px}
.fecx .bonus-table thead th{text-align:left;font-family:var(--mono);font-size:10px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding:12px 14px;
  background:var(--bg-2);border-bottom:1px solid var(--rule)}
.fecx .bonus-table tbody td{padding:14px;border-bottom:1px solid var(--rule-2);
  vertical-align:middle}
.fecx .bonus-table tbody tr:last-child td{border-bottom:none}
.fecx .bonus-table tbody tr:hover{background:var(--bg)}
.fecx .bt-casino{display:flex;align-items:center;gap:10px;min-width:180px}
.fecx .bt-casino>div{min-width:0}
.fecx .bt-casino .name,.fecx .bt-casino .sub{max-width:230px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.fecx .bt-casino .name{font-weight:500;font-size:14px;color:var(--ink)}
.fecx .bt-casino .sub{font-size:11px;color:var(--ink-3)}
.fecx .bt-amount{font-family:var(--serif);font-size:18px;font-weight:700;
  letter-spacing:-.01em;color:var(--ink);white-space:nowrap}
.fecx .bt-amount small{font-family:var(--sans);font-size:11px;color:var(--ink-3);
  font-weight:400;letter-spacing:0;display:block;margin-top:2px}
.fecx .bt-code{font-family:var(--mono);font-size:12px;padding:3px 8px;border-radius:4px;
  background:var(--bg);border:1px dashed var(--rule);color:var(--ink);
  display:inline-flex;align-items:center;gap:6px;cursor:copy}
.fecx .bt-code:hover{border-color:var(--accent);color:var(--accent-ink)}
.fecx .bt-nocode{font-family:var(--mono);font-size:12px;color:var(--ink-3)}
.fecx .bt-wager,.fecx .bt-max{font-family:var(--mono);font-size:13px;color:var(--ink-2)}
.fecx .bt-listed{font-family:var(--mono);font-size:11px;color:var(--ink-3);
  white-space:nowrap}
.fecx .bt-actions{text-align:right}
.fecx .casino-chip{border-radius:50%;border:1px solid var(--rule-2);
  display:grid;place-items:center;font-family:var(--sans);font-weight:600;flex-shrink:0}
/* card grid - auto-fits 3 / 2 / 1 columns, never overflows its container */
.fecx .bonus-grid{display:none;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:16px}
.fecx .board.is-cards .table-wrap{display:none}
.fecx .board.is-cards .bonus-grid{display:grid}
.fecx .bonus-card{background:var(--paper);border:1px solid var(--rule);
  border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;
  gap:12px;position:relative}
.fecx .bonus-card-head{display:flex;align-items:center;gap:10px}
.fecx .bonus-card-head>div{flex:1;min-width:0}
.fecx .bonus-card-head .fx-score{margin-left:auto}
.fecx .bc-name,.fecx .bc-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fecx .bc-name{font-weight:500;font-size:15px}
.fecx .bc-sub{font-size:12px;color:var(--ink-3)}
.fecx .bc-amount{font-family:var(--serif);font-size:34px;line-height:1;font-weight:700;
  letter-spacing:-.025em}
.fecx .bc-amount small{font-family:var(--sans);font-size:13px;color:var(--ink-3);
  font-weight:400;letter-spacing:0;margin-left:4px}
.fecx .bc-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 0;
  border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2)}
.fecx .kv{font-family:var(--mono)}
.fecx .kv .k{font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-3)}
.fecx .kv .v{font-size:14px;color:var(--ink);margin-top:3px}
.fecx .bc-actions{display:flex;gap:8px;margin-top:auto}
/* board state */
.fecx .board-foot{margin-top:18px;display:flex;justify-content:space-between;
  align-items:center;gap:12px;flex-wrap:wrap}
.fecx .board-foot .count{font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.fecx .board-foot .count b{color:var(--ink-2)}
.fecx .board-empty{display:none;padding:34px;text-align:center;color:var(--ink-3);
  font-size:14px}
.fecx .board.is-empty .board-empty{display:block}
.fecx .board.is-empty .table-wrap,.fecx .board.is-empty .bonus-grid{display:none}

/* ---- browse by type ---- */
.fecx .type-grid{display:grid;grid-template-columns:repeat(6,1fr);
  border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper);
  overflow:hidden}
.fecx .type-cell{padding:22px 20px;border-right:1px solid var(--rule-2);
  border-bottom:1px solid var(--rule-2);display:flex;flex-direction:column;gap:7px;
  position:relative;transition:background .1s ease}
.fecx .type-cell:hover{background:var(--bg-2)}
.fecx .type-cell:nth-child(6n){border-right:none}
.fecx .type-cell:nth-last-child(-n+6){border-bottom:none}
.fecx .type-cell .glyph{line-height:0;color:var(--ink)}
.fecx .type-cell .glyph svg{width:26px;height:26px;display:block;fill:none;
  stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.fecx .type-cell .name{font-weight:500;font-size:14px}
.fecx .type-cell .count{font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.fecx .type-cell .arrow{position:absolute;top:14px;right:14px;color:var(--ink-4);
  transition:transform .15s ease}
.fecx .type-cell:hover .arrow{transform:translate(2px,-2px);color:var(--ink)}

/* ---- how FXCheck works ---- */
.fecx .fx-explain{display:grid;grid-template-columns:1fr 1.18fr;gap:54px;
  align-items:start}
.fecx .fx-pull{font-family:var(--serif);font-size:31px;line-height:1.16;
  letter-spacing:-.02em;font-weight:600;margin:0 0 16px}
.fecx .fx-pull em{color:var(--accent);font-style:italic}
.fecx .fx-lede{color:var(--ink-3);font-size:14px;max-width:44ch;margin:0 0 20px}
.fecx .fx-steps{border-left:1px solid var(--rule)}
.fecx .fx-step{padding:18px 0 18px 26px;position:relative;
  border-bottom:1px solid var(--rule-2);counter-increment:fxstep}
.fecx .fx-step:last-child{border-bottom:none}
.fecx .fx-step::before{content:counter(fxstep,decimal-leading-zero);
  position:absolute;left:-1px;top:20px;transform:translateX(-50%);
  width:26px;height:26px;border-radius:50%;background:var(--bg);
  border:1px solid var(--rule);font-family:var(--mono);font-size:10px;
  color:var(--accent-ink);display:grid;place-items:center}
.fecx .fx-steps{counter-reset:fxstep}
.fecx .fx-step h4{font-family:var(--serif);font-size:17px;font-weight:600;
  letter-spacing:-.01em;margin:0 0 4px}
.fecx .fx-step p{margin:0;font-size:13.5px;color:var(--ink-3)}

/* ---- reviews ---- */
.fecx .review-row{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.fecx .review-card{background:var(--paper);border:1px solid var(--rule);
  border-radius:var(--radius);padding:18px}
.fecx .review-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.fecx .review-name{font-weight:500;font-size:14px}
.fecx .review-sub{font-size:11px;color:var(--ink-3)}
.fecx .score-block{display:flex;align-items:baseline;gap:8px;padding:12px 0;
  border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2);
  margin-bottom:12px}
.fecx .score-num{font-family:var(--serif);font-size:36px;line-height:1;
  font-weight:700;letter-spacing:-.02em}
.fecx .score-label{font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3)}
.fecx .score-rank{margin-left:auto;font-family:var(--mono);font-size:11px;
  color:var(--ink-3)}
.fecx .review-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;
  margin-bottom:14px}
.fecx .review-actions{display:flex;gap:8px}
.fecx .review-actions .btn{flex:1;justify-content:center}

/* ---- editorial / blog ---- */
.fecx .blog-row{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:24px}
.fecx .blog-card{display:flex;flex-direction:column;gap:11px;
  color:inherit;text-decoration:none}
.fecx .blog-thumb{aspect-ratio:16/9;border-radius:var(--radius);position:relative;
  overflow:hidden;border:1px solid var(--rule);
  background:linear-gradient(135deg,var(--bg-2),var(--rule))}
.fecx .blog-thumb img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;display:block}
.fecx .blog-thumb .stripes{position:absolute;inset:0;opacity:.4;
  background-image:repeating-linear-gradient(45deg,var(--rule-2) 0 8px,transparent 8px 16px)}
.fecx .blog-thumb::after{content:attr(data-label);position:absolute;left:12px;
  bottom:12px;font-family:var(--mono);font-size:10px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--ink-3);background:var(--paper);
  padding:3px 8px;border-radius:6px;border:1px solid var(--rule)}
.fecx .blog-meta{font-family:var(--mono);font-size:11px;color:var(--ink-3);
  letter-spacing:.04em}
.fecx .blog-title{font-family:var(--serif);font-size:18px;line-height:1.25;
  font-weight:700;letter-spacing:-.01em;transition:color .12s ease}
.fecx .blog-card.lead .blog-title{font-size:23px}
.fecx .blog-card:hover .blog-title{color:var(--accent-ink)}
.fecx .blog-excerpt{color:var(--ink-3);font-size:14px;margin:0}

/* ---- FAQ ---- */
.fecx .faq-list{border-top:1px solid var(--rule)}
.fecx .faq-item{border-bottom:1px solid var(--rule)}
.fecx .faq-q{display:flex;justify-content:space-between;align-items:center;gap:20px;
  padding:22px 0;cursor:pointer;list-style:none;
  font-family:var(--serif);font-size:18px;font-weight:600;letter-spacing:-.01em;
  color:var(--ink)}
.fecx .faq-q::-webkit-details-marker{display:none}
.fecx .faq-q .plus{font-family:var(--sans);font-size:22px;line-height:1;
  color:var(--ink-3);font-weight:300;flex:0 0 auto;transition:transform .2s ease}
.fecx .faq-item[open] .faq-q .plus{transform:rotate(45deg)}
.fecx .faq-a{padding:0 0 22px;color:var(--ink-2);font-size:15px;
  max-width:72ch;line-height:1.55}
.fecx .faq-a p{margin:0}

/* ---- newsletter — restyles the shared .fec-nl email-capture block ---- */
/* No border-bottom: the dark .fec-nl__inner box (border-radius, contrasted bg)
   is already a self-contained visual block, and on the bonus-detail page the
   following .bd-related section provides its own border-top separator. Adding
   border-bottom here produced a doubled separator (the newsletter function
   also emits a <script> sibling, breaking adjacent-sibling CSS workarounds). */
.fecx .fec-nl{padding:60px 28px}
.fecx .fec-nl__inner{max-width:var(--maxw);margin:0 auto;
  background:var(--ink);color:var(--bg);border-radius:var(--radius);padding:52px;
  display:grid;grid-template-columns:1.15fr 1fr;gap:8px 40px;align-items:center}
.fecx .fec-nl__heading{grid-column:1;grid-row:1;font-family:var(--serif);
  font-size:31px;line-height:1.12;font-weight:700;letter-spacing:-.02em;
  margin:0;color:var(--bg)}
.fecx .fec-nl__sub{grid-column:1;grid-row:2;color:rgba(255,255,255,.72);
  font-size:14px;line-height:1.5;margin:0}
.fecx .fec-nl__form{grid-column:2;grid-row:1/3;display:flex;
  flex-direction:column;gap:11px;margin:0}
.fecx .fec-nl__row{display:flex;gap:8px}
.fecx .fec-nl__email{flex:1;background:rgba(255,255,255,.06);color:var(--bg);
  border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:12px 17px;
  outline:none;font:inherit;font-size:14px}
.fecx .fec-nl__email::placeholder{color:var(--ink-4)}
.fecx .fec-nl__email:focus{border-color:var(--accent)}
.fecx .fec-nl__submit{background:var(--accent);color:#fff;border:none;
  border-radius:999px;padding:12px 24px;font-weight:500;font-size:14px;
  cursor:pointer;white-space:nowrap}
.fecx .fec-nl__submit:hover{background:var(--accent-ink)}
.fecx .fec-nl__submit:disabled{opacity:.6;cursor:default}
.fecx .fec-nl__consent{font-size:12px;color:rgba(255,255,255,.6);display:flex;
  align-items:flex-start;gap:8px;line-height:1.45}
.fecx .fec-nl__consent input{margin-top:2px;flex:0 0 auto}
.fecx .fec-nl__consent a{color:var(--bg);text-decoration:underline}
.fecx .fec-nl__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.fecx .fec-nl__status{font-size:13px;min-height:1.1em;color:var(--bg)}
.fecx .fec-nl__status--error{color:#ff9d9d}
.fecx .fec-nl__status--success{color:var(--verified-soft)}

/* ---- footer ---- */
.fecx .footer{padding:50px 0 38px;color:var(--ink-3);font-size:13px}
.fecx .footer-grid{display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:32px;
  margin-bottom:30px}
.fecx .footer-about{max-width:38ch;line-height:1.5}
.fecx .footer h5{font-family:var(--mono);font-size:10px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--ink-3);margin:0 0 13px}
.fecx .footer ul{list-style:none;padding:0;margin:0;display:flex;
  flex-direction:column;gap:9px}
.fecx .footer a:hover{color:var(--ink)}
.fecx .footer-badges{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}
.fecx .responsible{display:inline-flex;align-items:center;gap:7px;padding:4px 11px 4px 4px;
  border-radius:999px;background:var(--bg-2);border:1px solid var(--rule);
  font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.fecx .responsible .age{width:22px;height:22px;border-radius:50%;background:var(--ink);
  color:var(--bg);display:grid;place-items:center;font-size:9px;font-weight:600;
  font-family:var(--sans)}
.fecx .footer-bottom{display:flex;justify-content:space-between;gap:16px;
  padding-top:20px;border-top:1px solid var(--rule);font-family:var(--mono);
  font-size:11px;letter-spacing:.02em;flex-wrap:wrap}

/* ---- copy toast ---- */
.fecx .copy-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,14px);
  background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:999px;
  font-family:var(--mono);font-size:12px;opacity:0;pointer-events:none;
  transition:opacity .18s ease,transform .18s ease;z-index:100}
.fecx .copy-toast.show{opacity:1;transform:translate(-50%,0)}

/* ---- FXCheck live ticker ---- */
.fecx .live-dot{width:8px;height:8px;border-radius:50%;background:#d33;
  display:inline-block;flex:0 0 auto;box-shadow:0 0 0 0 rgba(221,51,51,.6);
  animation:fecx-live-pulse 2s infinite}
@keyframes fecx-live-pulse{
  0%{box-shadow:0 0 0 0 rgba(221,51,51,.5)}
  70%{box-shadow:0 0 0 8px rgba(221,51,51,0)}
  100%{box-shadow:0 0 0 0 rgba(221,51,51,0)}}
@media (prefers-reduced-motion:reduce){.fecx .live-dot{animation-duration:4s}}
.fecx .ticker{background:var(--paper);border:1px solid var(--rule);
  border-radius:var(--radius);overflow:hidden}
.fecx .ticker-head{display:flex;align-items:center;gap:12px;padding:12px 16px;
  border-bottom:1px solid var(--rule);background:var(--bg-2);
  font-family:var(--mono);font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-3)}
.fecx .ticker-head .live-dot{margin-right:2px}
.fecx .ticker-head__note{margin-left:auto;color:var(--ink-4)}
.fecx .ticker-list{list-style:none;margin:0;padding:0;display:block;width:100%}
.fecx .ticker-list li{display:block;width:100%;margin:0;padding:0;float:none;
  border-bottom:1px solid var(--rule-2)}
.fecx .ticker-list li:last-child{border-bottom:none}
.fecx .ticker-list a{display:grid;width:100%;max-width:none;float:none;
  box-sizing:border-box;grid-template-columns:70px 1fr auto auto;
  gap:14px;align-items:center;padding:11px 16px;font-size:13px;
  color:inherit;text-decoration:none;transition:background .1s ease}
.fecx .ticker-list a:hover{background:var(--bg-2)}
.fecx .ticker-list .t{font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.fecx .ticker-list .what b{font-weight:600}
.fecx .ticker-list .what-detail{color:var(--ink-3);margin-left:8px}
.fecx .ticker-list .who{font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.fecx .tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);
  font-size:10px;letter-spacing:.06em;text-transform:uppercase;
  padding:3px 8px;border-radius:999px;white-space:nowrap}
.fecx .tag-ok{background:var(--verified-soft);color:var(--verified)}
.fecx .tag-warn{background:var(--warn-soft);color:var(--warn)}
.fecx .tag-info{background:var(--accent-soft);color:var(--accent-ink)}
@media (max-width:600px){
  .fecx .ticker-list a{grid-template-columns:1fr auto;gap:5px 12px;padding:12px 14px}
  .fecx .ticker-list .t{grid-column:1;grid-row:1}
  .fecx .ticker-list .tag{grid-column:2;grid-row:1;justify-self:end}
  .fecx .ticker-list .what{grid-column:1/-1;grid-row:2}
  .fecx .ticker-list .who{grid-column:1/-1;grid-row:3}
  .fecx .ticker-list .what-detail{margin-left:0;display:block;margin-top:2px}
}

/* ---- trust pillars ---- */
.fecx .trust-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px}
.fecx .trust-col{border-top:2px solid var(--ink);padding-top:18px}
.fecx .trust-kicker{display:flex;align-items:center;gap:8px;font-family:var(--mono);
  font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink)}
.fecx .trust-ico{line-height:0;color:var(--ink)}
.fecx .trust-ico svg{width:18px;height:18px;display:block;fill:none;
  stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.fecx .trust-title{font-family:var(--serif);font-size:19px;font-weight:700;
  letter-spacing:-.01em;line-height:1.25;margin:13px 0 8px}
.fecx .trust-text{font-size:14px;line-height:1.6;color:var(--ink-3);margin:0 0 14px}

/* ---- responsive ---- */
@media (max-width:1080px){
  .fecx .type-grid{grid-template-columns:repeat(3,1fr)}
  .fecx .type-cell:nth-child(6n){border-right:1px solid var(--rule-2)}
  .fecx .type-cell:nth-child(3n){border-right:none}
  .fecx .type-cell:nth-last-child(-n+6){border-bottom:1px solid var(--rule-2)}
  .fecx .type-cell:nth-last-child(-n+3){border-bottom:none}
}
@media (max-width:920px){
  .fecx .hero-grid,.fecx .fx-explain,.fecx .trust-grid{grid-template-columns:1fr;gap:34px}
  .fecx .review-row{grid-template-columns:1fr}
  .fecx .blog-row{grid-template-columns:1fr;gap:20px}
  .fecx .nav{display:none}
  .fecx .burger{display:grid;place-items:center}
  .fecx .fec-nl{padding:48px 18px}
  .fecx .fec-nl__inner{grid-template-columns:1fr;gap:20px;padding:36px}
  .fecx .fec-nl__heading,.fecx .fec-nl__sub,.fecx .fec-nl__form{grid-column:auto;grid-row:auto}
}
@media (max-width:760px){
  .fecx .wrap{padding:0 18px}
  .fecx .section{padding:44px 0}
  .fecx .hero{padding-top:28px}
  .fecx .viewtoggle{display:none}
  .fecx .table-wrap{display:none}
  .fecx .bonus-grid{display:grid}
  .fecx .filterbar{border-radius:var(--radius);border-bottom:1px solid var(--rule)}
  .fecx .review-row,.fecx .type-grid{grid-template-columns:1fr}
  .fecx .type-cell{border-right:none!important}
  .fecx .hero-stats{grid-template-columns:1fr 1fr;gap:14px 0}
  .fecx .signin,.fecx .icon-btn{display:none}
  .fecx .footer-grid{grid-template-columns:1fr 1fr}
  .fecx .footer-about{grid-column:1/-1}
  .fecx .sec-head{flex-direction:column;align-items:flex-start}
}
@container (max-width:540px){
  .fecx .featured-stamp{position:static;display:inline-block;margin-bottom:12px}
}
@media (max-width:480px){
  .fecx .footer-grid{grid-template-columns:1fr}
}

/* ============================================================================
 * TOPBAR & FOOTER  -  step two
 * Restyles the EXISTING .fec-topbar / .fec-footer markup under .fecx. The
 * markup in index.php is NOT changed (it carries the Joomla module includes,
 * the user dropdown and the search trigger). These rules win over fecv2.css
 * by specificity:  .fecx .fec-xxx  (0,2,0)  beats  .fec-xxx  (0,1,0).
 * ============================================================================ */

/* ---- topbar ---- */
.fecx .fec-topbar{
  background:hsl(45 33% 95% / .92);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--rule);
}

/* brand */
.fecx .fec-brand:hover{background:var(--bg-2)}
.fecx .fec-brand__mark{background:var(--paper);border:1px solid var(--rule)}
.fecx .fec-brand__mark:after{background:var(--accent)}
.fecx .fec-brand__title{color:var(--ink)}
.fecx .fec-brand__dot{color:var(--accent)}
.fecx .fec-brand__sub{color:var(--ink-3)}

/* primary nav - Joomla module emits ul.menu > li > a */
.fecx .fec-nav a,
.fecx .fec-nav span{font-weight:500;color:var(--ink-2)}
.fecx .fec-nav a:hover{background:var(--bg-2);border-color:var(--rule);color:var(--ink)}
.fecx .fec-nav li.active>a,
.fecx .fec-nav li.current>a{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.fecx .fec-nav li ul{background:var(--paper);border-color:var(--rule)}
.fecx .fec-nav li ul a:hover{background:var(--bg-2)}

/* right-side controls: search trigger, user button, burger */
.fecx .fec-toolbtn,
.fecx .fec-burger{border-color:var(--rule);background:var(--paper);color:var(--ink-2)}
.fecx .fec-toolbtn:hover,
.fecx .fec-burger:hover{border-color:var(--ink-4)}
.fecx .fec-user__btn{border-color:var(--rule);background:var(--paper);color:var(--ink-2)}
.fecx .fec-user__btn:hover{border-color:var(--ink-4)}
.fecx .fec-avatar{background:var(--accent-soft);border-color:var(--rule);color:var(--accent-ink)}

/* user dropdown panel */
.fecx .fec-dd{background:var(--paper);border-color:var(--rule)}
.fecx .fec-dd__head{background:var(--bg-2);border-color:var(--rule)}
.fecx .fec-dd__title{color:var(--ink)}
.fecx .fec-dd__sub{color:var(--ink-3)}
.fecx .fec-dd__item{color:var(--ink-2)}
.fecx .fec-dd__item:hover{background:var(--bg-2);border-color:var(--rule)}
.fecx .fec-dd__sep{background:var(--rule)}

/* mobile nav drawer (fecv2 turns .fec-nav into a panel under 980px) */
@media (max-width:980px){
  .fecx .fec-nav{background:var(--paper);border-color:var(--rule)}
}

/* ---- footer ---- */
.fecx .fec-footer{background:var(--bg-2);border-top:1px solid var(--rule);color:var(--ink-3)}
.fecx .fec-footer__brand{background:var(--paper);border:1px solid var(--rule)}
.fecx .fec-footer__mark{background:var(--bg-2);border:1px solid var(--rule)}
.fecx .fec-footer__mark:after{background:var(--accent)}
.fecx .fec-footer__title{color:var(--ink)}
.fecx .fec-footer__dot{color:var(--accent)}
.fecx .fec-footer__sub,
.fecx .fec-footer__muted{color:var(--ink-3)}
.fecx .fec-footer__h{
  font-family:var(--mono);font-size:10px;font-weight:600;
  letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);
}
.fecx .fec-footer__a{color:var(--ink-2);font-weight:400}
.fecx .fec-footer__a:hover{color:var(--ink)}
.fecx .fec-footer__badge{background:var(--ink);color:var(--bg);border:0}
.fecx .fec-footer__bottom{border-top:1px solid var(--rule)}


/* ============================================================================
 * BONUSES HUB  -  inner-page components (migration: step 1)
 * ----------------------------------------------------------------------------
 *   Scoped .hub-* / .lf-* / .crumbs rules for the com_bonuses "hub" listing
 *   page. Ported from the Bonuses Hub mockup - declarations unchanged, every
 *   selector prefixed ".fecx". Inert until the hub markup carries class="fecx"
 *   (added when the hub view / renderer are converted, steps 2-5).
 * ============================================================================ */

/* ---- Breadcrumb ---- */
.fecx .crumbs{
  padding: 18px 0 0;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--ink-3);
  display: flex; align-items: center; gap: 8px;
}
.fecx .crumbs a:hover{ color: var(--ink); }
.fecx .crumbs .sep{ color: var(--ink-4); }

/* ---- Hub hero / intro card ---- */
.fecx .hub-hero{ padding: 24px 0 36px; border-bottom: 1px solid var(--rule); }
.fecx .hub-hero-grid{
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: 36px;
  align-items: start;
}
.fecx .hub-card{
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 28px 30px;
}
.fecx .hub-title{
  font-family: var(--serif); font-weight: 700;
  font-size: clamp(32px, 4vw, 44px);
  line-height: 1.05; letter-spacing: -0.025em;
  margin: 4px 0 14px;
  color: var(--ink);
}
.fecx .hub-intro{ color: var(--ink-2); font-size: 16px; line-height: 1.5; margin: 0 0 18px; max-width: 60ch; }
.fecx .hub-pills{ display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.fecx .hub-pill{
  display: inline-flex; align-items: center; gap: 8px;
  padding: 7px 12px; border-radius: 999px;
  background: var(--bg-2);
  border: 1px solid var(--rule);
  font-size: 13px; color: var(--ink-2);
}
.fecx .hub-pill::before{ content: "✓"; color: var(--verified); font-weight: 700; }
.fecx .hub-verdict{
  border-left: 2px solid var(--accent);
  padding: 12px 0 12px 16px;
  margin: 18px 0 14px;
  font-size: 14px;
  color: var(--ink-2);
  background: linear-gradient(90deg, var(--accent-soft) 0%, transparent 30%);
}
.fecx .hub-verdict strong{ font-weight: 600; color: var(--ink); }
.fecx .hub-disclosure{
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.02em;
  color: var(--ink-3);
  padding-top: 12px;
  border-top: 1px dashed var(--rule);
}
.fecx .hub-disclosure a{ color: var(--accent); border-bottom: 1px dotted var(--accent); padding-bottom: 1px; }

/* Right meta panel */
.fecx .hub-meta{
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 22px 24px;
  display: flex; flex-direction: column; gap: 16px;
}
.fecx .hub-meta-list{
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: 0;
  border-top: 1px solid var(--rule-2);
}
.fecx .hub-meta-list li{
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid var(--rule-2);
}
.fecx .hub-meta-list li:last-child{ border-bottom: none; }
.fecx .hub-meta-list .k{
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
}
.fecx .hub-meta-list .v{ font-size: 13px; color: var(--ink); font-weight: 500; }
.fecx .hub-tip{
  font-size: 13px; color: var(--ink-2);
  background: var(--bg-2);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  border-left: 2px solid var(--ink-3);
}
.fecx .hub-tip b{
  display: block;
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3); margin-bottom: 4px;
  font-weight: 500;
}

/* ---- Browse chips row ---- */
.fecx .hub-browse{
  display: flex; flex-wrap: wrap; gap: 8px;
  padding: 24px 0 16px;
}
.fecx .hub-browse-chip{
  display: inline-flex; align-items: baseline; gap: 8px;
  padding: 10px 16px;
  border: 1px solid var(--rule);
  border-radius: 999px;
  background: var(--paper);
  font-size: 14px;
  color: var(--ink);
  transition: border-color 0.1s ease;
}
.fecx .hub-browse-chip:hover{ border-color: var(--ink); }
.fecx .hub-browse-chip::before{ content: "→"; color: var(--ink-3); }
.fecx .hub-browse-chip .n{ font-family: var(--mono); font-size: 11px; color: var(--ink-3); }

/* ---- Updated row + Read first ---- */
.fecx .hub-updated{
  display: flex; justify-content: space-between; align-items: center;
  padding: 16px 0 18px;
  border-top: 1px solid var(--rule);
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
}
.fecx .hub-updated b{ color: var(--ink); font-weight: 600; }
.fecx .hub-readfirst{
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 12px 16px;
  background: var(--accent-soft);
  border-radius: var(--radius-sm);
  margin-bottom: 24px;
}
.fecx .hub-readfirst .lbl{
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--accent-ink); font-weight: 600;
}
.fecx .hub-readfirst a{
  font-size: 13px; color: var(--accent-ink);
  padding: 4px 10px; border-radius: 999px;
  border: 1px solid transparent;
}
.fecx .hub-readfirst a:hover{ background: var(--paper); border-color: var(--accent); }

/* ---- Filter bar (hub specific) ---- */
.fecx .hub-filter{
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px;
  padding: 12px 16px;
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  background: var(--paper);
  margin-bottom: 24px;
  position: sticky; top: 60px; z-index: 5;
}
.fecx .hub-filter-left{ display: flex; align-items: center; gap: 10px; }
.fecx .hub-filter-btn{
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px; border-radius: 999px;
  background: var(--bg);
  border: 1px solid var(--rule);
  font-size: 13px; color: var(--ink);
}
.fecx .hub-filter-btn .badge{
  background: var(--ink); color: var(--bg);
  font-family: var(--mono); font-size: 10px;
  padding: 1px 6px; border-radius: 999px;
}
.fecx .hub-filter-right{ display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.fecx .hub-filter-right .chip{ background: transparent; }
.fecx .hub-filter-right .chip.active{ background: var(--ink); color: var(--bg); border-color: var(--ink); }

/* ---- Editor's Picks band ---- */
.fecx .hub-picks-band{
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 22px 24px;
  margin-bottom: 28px;
}
.fecx .hub-picks-band-head{
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 16px;
}
.fecx .hub-picks-band-title{
  display: flex; align-items: baseline; gap: 12px;
}
.fecx .hub-picks-band-title h3{
  font-family: var(--serif); font-weight: 700; font-size: 22px;
  letter-spacing: -0.01em; margin: 0;
}
.fecx .hub-picks-band-title .star{ color: var(--accent); }
.fecx .hub-picks-band-title .stamp{
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--accent-ink);
  background: var(--accent-soft);
  padding: 4px 8px; border-radius: 999px;
}
.fecx .hub-picks-grid{
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;
}

/* ---- Editor's Picks "Why these three" — info-button + popover ----
   The fec-info-btn / fec-info-popover component (markup, positioning,
   and the <=560px bottom-sheet) is owned by fecv2.css. Here we only
   re-skin its surfaces and colours, from the fecv2 white + cold-grey
   palette to the editorial cream/ink/teal one, so it sits naturally
   inside the cream picks band. Layout and positioning are untouched. */
.fecx .fec-info-btn{
  background: var(--paper); border-color: var(--rule); color: var(--ink-2);
}
.fecx .fec-info-btn:hover,
.fecx .fec-info-btn[aria-expanded="true"]{
  border-color: var(--ink-3); color: var(--ink);
}
.fecx .fec-info-btn[aria-expanded="true"]{ background: var(--bg); }
.fecx .fec-info-popover{
  background: var(--paper); border-color: var(--rule); color: var(--ink-2);
}
.fecx .fec-info-popover__arrow{ background: var(--paper); border-color: var(--rule); }
.fecx .fec-info-popover__title{ color: var(--ink); }
.fecx .fec-info-popover__intro{ color: var(--ink-3); }
.fecx .fec-info-popover__list li{ background: var(--bg-2); }
.fecx .fec-info-popover__metric{ color: var(--ink-2); }
.fecx .fec-info-popover__weight,
.fecx .fec-info-popover__link{ color: var(--accent); }
.fecx .fec-info-popover__note{ color: var(--ink-3); border-top-color: var(--rule); }
.fecx .fec-info-popover__close{ color: var(--ink-3); }
.fecx .fec-info-popover__close:hover,
.fecx .fec-info-popover__close:focus-visible{ background: var(--bg-2); color: var(--ink); }

/* ---- Bonus grid (hub) ---- */
.fecx .hub-grid{ display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.fecx .hub-bonus{
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 18px;
  display: flex; flex-direction: column; gap: 10px;
  position: relative;
}
.fecx .hub-bonus.fx-verified{ border-color: rgba(28, 122, 74, 0.4); }
.fecx .hub-bonus-head{ display: flex; align-items: center; gap: 10px; }
.fecx .hub-bonus-name{ font-weight: 600; font-size: 14px; color: var(--ink); }
.fecx .hub-bonus-sub{ font-size: 12px; color: var(--ink-3); }
.fecx .hub-bonus-tags{ display: flex; gap: 6px; margin-left: auto; flex-direction: column; align-items: flex-end; }
.fecx .hub-bonus-amount{
  font-family: var(--serif); font-size: 32px; line-height: 1; font-weight: 700;
  letter-spacing: -0.025em;
  text-align: center;
  padding: 4px 0 6px;
}
.fecx .hub-bonus-amount sup{ font-size: 60%; vertical-align: super; font-weight: 600; margin-right: 2px; }
.fecx .hub-bonus-amount .unit{
  display: block; font-family: var(--sans); font-size: 11px;
  font-weight: 400; color: var(--ink-3);
  letter-spacing: 0; margin-top: 4px;
}
.fecx .hub-bonus-codeline{
  display: flex; flex-direction: column; gap: 4px; align-items: center;
  font-family: var(--mono); font-size: 12px; color: var(--ink-3);
}
.fecx .hub-bonus-codeline b{ color: var(--ink); font-weight: 600; }
.fecx .hub-bonus-status{ display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; }
.fecx .hub-bonus-facts{
  display: grid; grid-template-columns: 1fr 1fr 1fr;
  gap: 6px;
  padding: 12px 0;
  border-top: 1px solid var(--rule-2);
  border-bottom: 1px solid var(--rule-2);
  text-align: center;
}
.fecx .hub-bonus-facts .k{
  font-family: var(--mono); font-size: 9px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
  margin-top: 4px;
}
.fecx .hub-bonus-facts .v{ font-size: 13px; color: var(--ink); font-weight: 500; }
.fecx .hub-bonus-facts .v.fx{ font-family: var(--mono); }
.fecx .hub-bonus-facts .yes{ color: var(--verified); }
.fecx .hub-bonus-facts .no{ color: var(--ink-4); }
.fecx .hub-bonus-meta{ font-family: var(--mono); font-size: 11px; color: var(--ink-3); }
.fecx .hub-bonus-cta{ display: flex; gap: 8px; margin-top: auto; }
.fecx .hub-bonus-cta .btn{ flex: 1; justify-content: center; }
.fecx .tag-expires{
  background: var(--warn-soft);
  color: var(--warn);
}

/* ---- Pagination ---- */
.fecx .hub-pager{
  display: flex; justify-content: center; align-items: center; gap: 6px;
  padding: 32px 0;
}
.fecx .hub-pager a, .fecx .hub-pager span{
  width: 36px; height: 36px; border-radius: 999px;
  display: grid; place-items: center;
  font-family: var(--mono); font-size: 12px;
  color: var(--ink-2);
  border: 1px solid transparent;
}
.fecx .hub-pager a:hover{ border-color: var(--rule); color: var(--ink); }
.fecx .hub-pager .active{
  background: var(--ink); color: var(--bg); font-weight: 600;
}
.fecx .hub-pager .ell{ color: var(--ink-4); }

/* ---- Editorial long-form with TOC sidebar ---- */
.fecx .hub-longform{
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 48px;
  padding: 48px 0;
}
.fecx .hub-toc{
  position: sticky; top: 80px;
  align-self: start;
}
.fecx .hub-toc .lbl{
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--ink-3);
  margin-bottom: 12px;
}
/* Rail line is drawn by box-shadow inset on each <a>, NOT by border-left on the
   <ul>. This eliminates the dependency on the ul's padding (which legacy CSS
   can inflate, pushing the rail right while the <a> border-left stays at the
   left edge, creating a visible offset between the rail and the active accent).
   Adjacent <a> items have no gap so their box-shadows form a continuous rail. */
.fecx .hub-toc ul{ list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.fecx .hub-toc ul li { margin: 0; padding: 0; border: 0; list-style: none; background: transparent; }
.fecx .hub-toc ul li a { border: 0; background: transparent; }
.fecx .hub-toc li a{
  display: block; padding: 7px 12px;
  font-size: 13px; color: var(--ink-3);
  box-shadow: inset 1px 0 var(--rule);
}
.fecx .hub-toc li a:hover{ color: var(--ink); }
.fecx .hub-toc li a.active{ color: var(--ink); font-weight: 500; box-shadow: inset 2px 0 var(--accent); }

.fecx .hub-content{ max-width: 100ch; min-width: 0; }
.fecx .hub-content section{ padding: 24px 0 36px; border-bottom: 1px solid var(--rule-2); }
.fecx .hub-content section:last-child{ border-bottom: none; }
.fecx .hub-content .kicker{
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--ink-3);
  margin-bottom: 8px;
}
.fecx .hub-content h2{
  font-family: var(--serif); font-size: 28px; font-weight: 700;
  letter-spacing: -0.02em; line-height: 1.1;
  margin: 0 0 18px;
}
.fecx .hub-content p{ font-size: 15px; line-height: 1.6; color: var(--ink-2); margin: 0 0 14px; }
.fecx .hub-content p:last-child{ margin-bottom: 0; }
/* plain prose elements (the editorial body uses h3 / ul / inline links) */
.fecx .hub-content h3{
  font-family: var(--serif); font-size: 19px; font-weight: 700;
  letter-spacing: -0.01em; line-height: 1.25;
  margin: 24px 0 8px; color: var(--ink);
}
.fecx .hub-content ul{ margin: 0 0 14px; padding-left: 20px; }
.fecx .hub-content li{ font-size: 15px; line-height: 1.6; color: var(--ink-2); margin-bottom: 6px; }
.fecx .hub-content li:last-child{ margin-bottom: 0; }
.fecx .hub-content strong{ color: var(--ink); font-weight: 600; }
.fecx .hub-content a{ color: var(--accent); border-bottom: 1px solid var(--rule); padding-bottom: 1px; }
.fecx .hub-content a:hover{ border-color: var(--accent); }
.fecx .hub-content .lf-kvlist{
  list-style: none; margin: 0 0 18px; padding: 0;
  border-top: 1px solid var(--rule-2);
}
.fecx .hub-content .lf-kvlist li{
  padding: 12px 0;
  border-bottom: 1px solid var(--rule-2);
  display: grid; grid-template-columns: 200px 1fr; gap: 16px;
  font-size: 14px;
}
.fecx .hub-content .lf-kvlist .k{ font-weight: 600; color: var(--ink); }
.fecx .hub-content .lf-kvlist .v{ color: var(--ink-2); }
.fecx .hub-content .lf-callout{
  background: var(--accent-soft);
  border-radius: var(--radius-sm);
  padding: 16px 20px;
  margin: 18px 0;
}
.fecx .hub-content .lf-callout h4{
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--accent-ink);
  margin: 0 0 8px;
  font-weight: 600;
}
.fecx .hub-content .lf-callout p{ color: var(--accent-ink); margin: 0; font-size: 14px; line-height: 1.5; }

.fecx .hub-content .lf-category{
  margin: 18px 0;
  padding: 18px 0;
  border-top: 1px solid var(--rule-2);
}
.fecx .hub-content .lf-category h3{
  font-family: var(--serif); font-size: 20px; font-weight: 700;
  letter-spacing: -0.01em;
  margin: 0 0 12px;
}
.fecx .hub-content .lf-category dl{
  display: grid; grid-template-columns: 110px 1fr;
  gap: 6px 16px;
  margin: 0;
  font-size: 14px;
}
.fecx .hub-content .lf-category dt{
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
  padding-top: 3px;
}
.fecx .hub-content .lf-category dd{
  margin: 0;
  color: var(--ink-2);
  line-height: 1.5;
}

.fecx .hub-content .lf-step{
  display: grid; grid-template-columns: auto 1fr; gap: 18px;
  padding: 18px 0;
  border-top: 1px solid var(--rule-2);
}
.fecx .hub-content .lf-step .num{
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--accent);
  padding-top: 4px;
  font-weight: 600;
}
.fecx .hub-content .lf-step h4{
  font-family: var(--serif); font-size: 17px; font-weight: 700;
  margin: 0 0 6px;
  letter-spacing: -0.01em;
}
.fecx .hub-content .lf-step p{ font-size: 14px; margin: 0; }

.fecx .hub-content .lf-examples{
  margin: 18px 0;
  border: 1px solid var(--rule);
  border-radius: var(--radius-sm);
  overflow-x: auto;
}
.fecx .hub-content .lf-examples h4{
  margin: 0;
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--ink-3);
  padding: 10px 14px;
  background: var(--bg-2);
  border-bottom: 1px solid var(--rule);
}
.fecx .hub-content .lf-examples table{ width: 100%; border-collapse: collapse; font-size: 13px; }
.fecx .hub-content .lf-examples td{
  padding: 10px 14px;
  border-bottom: 1px solid var(--rule-2);
  vertical-align: middle;
}
.fecx .hub-content .lf-examples tr:last-child td{ border-bottom: none; }
.fecx .hub-content .lf-examples .offer{ font-family: var(--mono); font-size: 12px; color: var(--ink-2); }
.fecx .hub-content .lf-examples .ev{ font-family: var(--mono); font-weight: 600; }
.fecx .hub-content .lf-examples .ev.pos{ color: var(--verified); }
.fecx .hub-content .lf-examples .ev.neg{ color: var(--danger); }
.fecx .hub-content .lf-examples .note{ color: var(--ink-3); font-size: 12px; }

/* ---- Decision Notes: additions for long-form content ---- */

/* Section title for bd-notes */
.fecx .bd-notes h2.bd-section-title{
  font-family: var(--serif); font-size: 28px; font-weight: 700;
  letter-spacing: -0.02em; line-height: 1.1;
  margin: 0 0 24px;
}

/* Definition list: bold key 240px col + value */
.fecx .hub-content .lf-termlist{
  list-style: none; margin: 0 0 18px; padding: 0;
  border-top: 1px solid var(--rule-2);
}
.fecx .hub-content .lf-termlist li{
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 16px;
  padding: 11px 0;
  border-bottom: 1px solid var(--rule-2);
  font-size: 14px;
}
.fecx .hub-content .lf-termlist .k{ font-weight: 600; color: var(--ink); }
.fecx .hub-content .lf-termlist .v{ color: var(--ink-2); }

/* Inline sub-definition (Main game / Country-dependent alternatives) */
.fecx .hub-content .lf-subdef{ font-size: 14px; margin: 4px 0; }
.fecx .hub-content .lf-subdef b{ font-weight: 600; }

/* Step-by-step numbered list (01, 02, 03...) */
.fecx .hub-content .lf-steps{
  margin: 12px 0 18px;
  padding: 0;
  list-style: none;
  counter-reset: bdstep;
}
.fecx .hub-content .lf-steps li{
  counter-increment: bdstep;
  display: grid;
  grid-template-columns: 26px 1fr;
  gap: 12px;
  padding: 8px 0;
  font-size: 14px;
  color: var(--ink-2);
}
.fecx .hub-content .lf-steps li::before{
  content: counter(bdstep, decimal-leading-zero);
  font-family: var(--mono); font-size: 11px;
  color: var(--accent);
  padding-top: 2px;
  font-weight: 600;
}

/* Verdict: two-column good (green) / bad (red) cards */
.fecx .hub-content .lf-twocol{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin: 18px 0;
}
.fecx .hub-content .lf-twocol > div{
  padding: 16px 18px;
  border-radius: var(--radius-sm);
}
.fecx .hub-content .lf-twocol .good{ background: var(--verified-soft); }
.fecx .hub-content .lf-twocol .bad{ background: var(--warn-soft); }
.fecx .hub-content .lf-twocol h4{
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.1em; text-transform: uppercase;
  margin: 0 0 10px;
  font-weight: 600;
}
.fecx .hub-content .lf-twocol .good h4{ color: var(--verified); }
.fecx .hub-content .lf-twocol .bad h4{ color: var(--warn); }
.fecx .hub-content .lf-twocol ul{
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: 6px;
  font-size: 13px;
  color: var(--ink);
}
.fecx .hub-content .lf-twocol .good li::before{ content: "\2713 "; color: var(--verified); font-weight: 600; }
.fecx .hub-content .lf-twocol .bad li::before { content: "\00d7 "; color: var(--warn); font-weight: 600; }

/* Quick Math table (Decision Notes) */
.fecx .hub-content .lf-quickmath {
  margin: 18px 0;
  border: 1px solid var(--rule);
  border-radius: var(--radius-sm);
  overflow: hidden;
  background: var(--paper);
}
.fecx .hub-content .lf-quickmath h4 {
  margin: 0;
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--ink-3);
  padding: 10px 14px;
  background: var(--bg-2);
  border-bottom: 1px solid var(--rule);
  font-weight: 600;
}
.fecx .hub-content .lf-quickmath table {
  width: 100%; border-collapse: collapse; font-size: 13px;
}
.fecx .hub-content .lf-quickmath td {
  padding: 10px 14px;
  border-bottom: 1px solid var(--rule-2);
  vertical-align: middle;
  line-height: 1.45;
}
.fecx .hub-content .lf-quickmath tr:last-child td { border-bottom: none; }
.fecx .hub-content .lf-quickmath td:first-child {
  width: 42%; font-weight: 600; color: var(--ink);
}
.fecx .hub-content .lf-quickmath td:last-child {
  color: var(--ink-2); font-family: var(--mono);
}

/* Fine print (RTP disclaimer, deposit note) */
.fecx .hub-content .lf-fineprint {
  font-size: 12px; color: var(--ink-3);
  margin: 8px 0 0; line-height: 1.5;
}

.fecx .hub-content .lf-q{
  padding: 14px 0;
  border-top: 1px solid var(--rule-2);
}
.fecx .hub-content .lf-q h4{
  font-family: var(--serif); font-size: 18px; font-weight: 700;
  letter-spacing: -0.01em;
  margin: 0 0 6px;
}
.fecx .hub-content .lf-q p{ font-size: 14px; margin: 0; }

.fecx .hub-content .lf-term{
  padding: 14px 0;
  border-top: 1px solid var(--rule-2);
  display: grid; grid-template-columns: 180px 1fr; gap: 16px;
}
.fecx .hub-content .lf-term .t{
  font-weight: 600; color: var(--ink); font-size: 14px;
}
.fecx .hub-content .lf-term .d{
  color: var(--ink-2); font-size: 14px; line-height: 1.5;
}

/* ---- Byline ---- */
.fecx .hub-byline{
  display: flex; justify-content: space-between;
  padding: 24px 0;
  border-top: 1px solid var(--rule);
  font-size: 13px;
  flex-wrap: wrap; gap: 16px;
}
.fecx .hub-byline .person{ display: flex; flex-direction: column; gap: 2px; }
.fecx .hub-byline .who{
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
}
.fecx .hub-byline .name{ color: var(--ink); font-weight: 600; }
.fecx .hub-byline .name a{ border-bottom: 1px dotted var(--ink-3); padding-bottom: 1px; }
.fecx .hub-byline .role{ color: var(--ink-3); }
.fecx .hub-byline .updated{
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
  align-self: flex-end;
}

@media (max-width: 1000px) {
  .fecx .hub-hero-grid{ grid-template-columns: 1fr; gap: 20px; }
  .fecx .hub-picks-grid, .fecx .hub-grid{ grid-template-columns: repeat(2, 1fr); }
  .fecx .hub-longform{ grid-template-columns: 1fr; gap: 24px; }
  .fecx .hub-toc{ position: static; }
  .fecx .hub-content .lf-kvlist li, .fecx .hub-content .lf-category dl, .fecx .hub-content .lf-term{ grid-template-columns: 1fr; }}
@media (max-width: 640px) {
  .fecx .hub-picks-grid, .fecx .hub-grid{ grid-template-columns: 1fr; }
  .fecx .hub-filter{ flex-direction: column; align-items: stretch; }
  /* Picks-band header: keep the title group and the info-button on one
     row, but let the title wrap (the stamp drops below the heading) and
     top-align the button, so the "i" sits up by the heading instead of
     floating low beside the wrapped stamp. */
  .fecx .hub-picks-band-head{ align-items: flex-start; }
  .fecx .hub-picks-band-title{ flex-wrap: wrap; align-items: center; gap: 6px 10px; }
}

/* ================================================================
   FEC V2.1 — HUB SHELL
   Restyles the existing com_bonuses view chrome under .fecx:
   breadcrumb, status minirow, listing-grid wrapper, pager.
   Markup is left byte-identical (no JS hooks touched); these rules
   are inert on every non-hub page since only the hub carries .fecx.
   The filter toolbar (#fecFilters) is restyled separately (step 4c).
   ================================================================ */

/* Breadcrumb — fec_render_breadcrumb_html(): <nav.fec-breadcrumb><ol><li> */
.fecx .fec-breadcrumb{
  padding: 18px 0 0;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.04em;
  color: var(--ink-3);
}
.fecx .fec-breadcrumb ol{
  list-style: none; margin: 0; padding: 0;
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
}
.fecx .fec-breadcrumb li{ display: flex; align-items: center; gap: 8px; }
.fecx .fec-breadcrumb li + li::before{ content: "/"; color: var(--ink-4); }
.fecx .fec-breadcrumb a{ color: var(--ink-3); }
.fecx .fec-breadcrumb a:hover{ color: var(--ink); }
.fecx .fec-breadcrumb li[aria-current]{ color: var(--ink); }

/* Status minirow — restyled to the mockup's .hub-updated (point 3):
   no green box — a top hairline + a mono caption. The .fec-minirow
   markup belongs to the shared view (all 8 com_bonuses pages emit it),
   but every rule here is .fecx-scoped, so only the hub changes.
   .fec-minirow clones .fecx .wrap geometry (max-width / centred /
   28px sides) so its inner edge-aligns with the Read-first box and
   the toolbar card; the hairline + caption sit on __inner. */
.fecx .fec-minirow{
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 28px;
  background: transparent;
}
.fecx .fec-minirow__inner{
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
  padding: 16px 0 18px;
  border-top: 1px solid var(--rule);
}
.fecx .fec-minirow__left{ display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.fecx .fec-minirow__item{
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
}
.fecx .fec-minirow__item strong{ color: var(--ink); font-weight: 600; }
.fecx .fec-minirow__dot{ color: var(--ink-4); }
/* The link's look (dotted underline, accent, no pill) comes from the
   shared .sec-link rule at the top of this file. fecv2.css also has a
   base .fec-minirow__link rule painting a pill (radius / border / fill
   / weight 900 / padding); the shared rule doesn't set those, so they
   leak through. The reset below kills every pill property -> identical
   to a homepage .sec-link. border-bottom is left alone on purpose (the
   shared rule owns the dotted underline). Done .fecx-scoped: fecv2.css
   is the global base and its .fec-minirow__link also styles the 7
   un-migrated sibling pages, so editing it there would strip their
   pill too. The arrow is added via ::after — the view markup has none. */
.fecx .fec-minirow__link{
  padding: 0 0 2px;
  border-top: 0; border-right: 0; border-left: 0;
  border-radius: 0;
  background: none;
  font-weight: 400;
}
.fecx .fec-minirow__link::after{ content: "\2192"; }

/* Listing-grid wrapper — the bonus cards inside come from $output (step 5).
   The grid mechanics (display:grid, the auto-fill columns, the 24px gap
   and the 2-col / 1-col responsive steps) are owned by fecv2.css with
   !important — they cannot, and need not, be set here. The step-4b
   repeat(3,1fr) / gap:14px never won against that !important and has
   been dropped as dead code. This rule now only aligns the grid to the
   .wrap content column (max-width, centred, 28px sides) so the bonus
   cards line up with the picks band / Read-first / status row above. */
.fecx .fec-grid{ max-width: var(--maxw); margin: 16px auto; padding: 0 28px; }

/* Pager — Zebra_Pagination: <nav.fec-pg><ul.pagination><li><a|span>.
   Echoed bare by the view, so it carries the .wrap constraint itself
   (max-width + centred) — needed once point 5 neutralises .fec-container,
   otherwise the <nav> would span the full viewport. */
.fecx .fec-pg{ max-width: var(--maxw); margin: 0 auto; padding: 32px 0; }
.fecx .fec-pg .pagination{
  list-style: none; margin: 0; padding: 0;
  display: flex; justify-content: center; align-items: center;
  gap: 6px; flex-wrap: wrap;
}
.fecx .fec-pg li{ display: block; }
.fecx .fec-pg li a, .fecx .fec-pg li span{
  min-width: 36px; height: 36px; padding: 0 6px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 999px; border: 1px solid transparent;
  font-family: var(--mono); font-size: 12px; color: var(--ink-2);
  text-decoration: none;
}
.fecx .fec-pg li a:hover{ border-color: var(--rule); color: var(--ink); }
.fecx .fec-pg li.active a{ background: var(--ink); color: var(--bg); font-weight: 600; }
.fecx .fec-pg li.disabled a{ color: var(--ink-4); cursor: default; }
.fecx .fec-pg li.disabled a:hover{ border-color: transparent; color: var(--ink-4); }
.fecx .fec-pg li span{ color: var(--ink-4); }

/* ================================================================
   FEC V2.1 — HUB FILTER TOOLBAR (step 4c — container redesigned, point 3)
   The button / chip / panel skins further below are UNCHANGED. Point 3
   rebuilds only the toolbar CONTAINER to the mockup's .filterbar:
   a contained, rounded --paper card instead of the full-bleed strip.

   .fec-toolbar keeps fecv2.css's position:sticky / top / z-index — it
   is still sticky, exactly as before. (fecv2.js only toggles
   .is-condensed on scrollY>80; there is no fixed / 100vw JS, so this
   is a pure CSS reskin with no script conflict.) We DO cancel the
   full-bleed (width:100vw + the 50vw negative side margins) and give
   .fec-toolbar the SAME box as .fecx .wrap (max-width / centred /
   28-18px side padding) — that is what keeps the card edge-aligned
   with the status row and the picks band. The visible card skin then
   lives on .fec-toolbar__inner, which fills that box. Everything is
   .fecx-scoped → the 7 sibling pages still get fecv2.css untouched.
   ================================================================ */

/* --- toolbar: invisible sticky wrapper, geometry cloned from .wrap --- */
.fecx .fec-toolbar{
  width: auto;
  max-width: var(--maxw);
  margin: 0 auto 20px;
  padding: 0 28px;
  background: transparent;
  border-bottom: 0;
  -webkit-backdrop-filter: none;
          backdrop-filter: none;
}

/* --- .fec-toolbar__inner: the visible card (mockup .filterbar) --- */
.fecx .fec-toolbar__inner{
  padding: 14px;
  gap: 8px;
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
}
.fecx .fec-toolbar.has-active-filters .fec-toolbar__inner,
.fecx .fec-toolbar.has-filters .fec-toolbar__inner{ border-color: var(--ink-4); }
/* Stuck state: when the sticky toolbar is pinned under the topbar, square
   the card's top corners so it reads as flush-attached to the menu, not a
   floating rounded card. .is-stuck is toggled by a small scroll listener
   (CSS alone can't detect sticky-stuck in these browsers). */
.fecx .fec-toolbar.is-stuck .fec-toolbar__inner{
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}

/* --- Filters button --- */
.fecx .fec-toolbtn{
  border: 1px solid var(--rule); border-radius: 999px;
  background: var(--bg); color: var(--ink);
  font-family: var(--sans); font-weight: 500;
}
.fecx .fec-toolbtn:hover{ border-color: var(--ink-3); }
.fecx .fec-toolbtn[aria-expanded="true"]{ background: var(--bg-2); border-color: var(--ink-3); }
.fecx .fec-badgecount,
.fecx .fec-activecount{
  border: 1px solid var(--rule); background: var(--paper);
  color: var(--ink-2); font-family: var(--mono); font-weight: 600;
}

/* --- quick chips --- */
.fecx .fec-qchip{
  border: 1px solid var(--rule); background: var(--bg);
  color: var(--ink-2); font-family: var(--sans); font-weight: 500;
}
.fecx .fec-qchip:hover{ border-color: var(--ink-3); background: var(--bg); }
.fecx .fec-qchip[aria-pressed="true"]{
  background: var(--ink); border-color: var(--ink); color: var(--bg);
}
.fecx .fec-qchip[aria-pressed="true"]:hover{ background: var(--ink); border-color: var(--ink); }
.fecx .fec-qchip[data-fec-qchip="fx"][aria-pressed="true"]{
  background: var(--accent); border-color: var(--accent); color: #fff;
}
.fecx .fec-qchip[data-fec-qchip="fx"][aria-pressed="true"]:hover{
  background: var(--accent-ink); border-color: var(--accent-ink);
}

/* --- filter panel: skin only (NEVER set display — `hidden` drives it) --- */
.fecx .fec-filters{ border-top-color: var(--rule); background: var(--paper); }
.fecx .fec-fgrp{ border-bottom-color: var(--rule); }
.fecx .fec-fgrp__title{
  font-family: var(--mono); font-size: 10px; font-weight: 600;
  letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-3);
}
.fecx .fec-fhint{ font-size: 12px; color: var(--ink-3); }
.fecx .fec-filterchip{
  border: 1px solid var(--rule); background: var(--bg);
  color: var(--ink-2); font-family: var(--sans); font-weight: 500;
}
.fecx .fec-filterchip:hover{ border-color: var(--ink-3); }
.fecx .fec-filterchip[aria-pressed="true"]{
  background: var(--ink); border-color: var(--ink); color: var(--bg);
}

/* --- filter footer (Reset / Apply) — scoped to the panel only --- */
.fecx .fec-factions{ background: var(--paper); border-top-color: var(--rule); }
.fecx .fec-factions .fec-btn{
  border-radius: var(--radius-sm); font-family: var(--sans); font-weight: 600;
}
.fecx .fec-factions .fec-btn--ghost{
  background: var(--bg); border: 1px solid var(--rule); color: var(--ink-2);
}
.fecx .fec-factions .fec-btn--ghost:hover{ border-color: var(--ink-3); color: var(--ink); }
.fecx .fec-factions .fec-btn--primary{
  background: var(--ink); border: 1px solid var(--ink); color: var(--bg);
}
.fecx .fec-factions .fec-btn--primary:hover{ opacity: .92; }

/* --- filter panel: mobile bottom-sheet (Strada A) ----------------
   fecv2.css runs the panel in-flow inside the sticky toolbar and
   caps it with max-height:calc(100vh - topbar - 74px) — a calc that
   ignores the toolbar's own chip rows, so on mobile the panel runs
   taller than the viewport: the sticky Reset/Apply bar drops off
   screen and the in-flow panel entangles messily with page scroll.
   On <=980px we detach the panel into a fixed bottom-sheet with a
   real, viewport-bounded height — .fec-factions then pins reliably
   and the sheet is fully self-contained. Driven by .is-filters-open
   (added to .fec-toolbar by fecv2.js). Hub-scoped; siblings inherit
   it when they migrate. */
.fecx .fec-filters-scrim{ display: none; }  /* JS-injected; shown only as the mobile sheet scrim */
@media (max-width: 980px){
  .fecx .fec-toolbar.is-filters-open .fec-filters{
    position: fixed;
    left: 0; right: 0; bottom: 0; top: auto;
    width: auto; max-width: none;
    margin: 0;
    padding: 10px 0 0;
    max-height: 85vh;            /* fallback for browsers without dvh */
    max-height: 85dvh;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    border: 1px solid var(--rule);
    border-bottom: 0;
    border-radius: 16px 16px 0 0;
    box-shadow: 0 -16px 40px rgba(20, 17, 13, .22);
    z-index: 2;
    animation: fec-filtersheet-in .22s ease-out;
  }
  /* room for the pinned action bar (incl. iOS home-indicator inset) */
  .fecx .fec-toolbar.is-filters-open .fec-filters__inner{
    padding-bottom: calc(74px + env(safe-area-inset-bottom));
  }
  .fecx .fec-toolbar.is-filters-open .fec-factions{
    padding-bottom: calc(12px + env(safe-area-inset-bottom));
  }
  /* grab handle — visual cue that the sheet is dismissable */
  .fecx .fec-toolbar.is-filters-open .fec-filters::before{
    content: "";
    display: block;
    width: 40px;
    height: 4px;
    margin: 6px auto 10px;
    border-radius: 999px;
    background: var(--ink-4);
  }
  /* scrim behind the sheet — a real <div> (injected by JS), so it is
     tappable: a tap dismisses the sheet. CSS shows/hides it via
     .is-filters-open, exactly as the former ::after scrim did. */
  .fecx .fec-toolbar.is-filters-open .fec-filters-scrim{
    display: block;
    position: fixed;
    inset: 0;
    background: rgba(20, 17, 13, .42);
    z-index: 1;
    animation: fec-filtersheet-fade .22s ease-out;
  }
}
@keyframes fec-filtersheet-in{
  from{ transform: translateY(100%); }
  to{ transform: translateY(0); }
}
@keyframes fec-filtersheet-fade{
  from{ opacity: 0; }
  to{ opacity: 1; }
}
@media (prefers-reduced-motion: reduce){
  .fecx .fec-toolbar.is-filters-open .fec-filters,
  .fecx .fec-toolbar.is-filters-open .fec-filters-scrim{ animation: none; }
}

/* ================================================================
   FEC V2.1 — HUB BONUS CARD (step 5a)
   States and elements the mockup placeholder did not cover, plus the
   card CTA. The CTA keeps the canonical .fec-btn markup: Details is a
   plain link, PLAY comes from fec_render_cta() (so it retains
   rel="nofollow sponsored noopener") — both are restyled here.
   ================================================================ */

/* extra .tag variants for the 4 FXCheck states (verified=tag-ok already) */
.fecx .tag-mute{ background: var(--bg-2); color: var(--ink-3); }
.fecx .tag-bad{ background: var(--danger-soft); color: var(--danger); }

/* non-active offers (unavailable / expired / geo-blocked) -- "archived" look
   matching the mockup: solid muted background instead of an opacity wash,
   text dimmed via colour. The opacity approach desaturated everything
   uniformly (looked like a stale ghost); the solid-bg approach reads as
   "stamped / archived" while keeping content legible. */
.fecx .hub-bonus--dim {
  background: var(--bg-2);
  border-color: var(--rule-2);
}
.fecx .hub-bonus--dim .hub-bonus-amount { color: var(--ink-3); }
.fecx .hub-bonus--dim .hub-bonus-name { color: var(--ink-2); }
.fecx .hub-bonus--dim .hub-bonus-sub { color: var(--ink-4); }

/* Expired date stamp ("Expired Nov 2025") emitted by the lib for non-ACTIVE
   cards. Sits between facts row and the CTA. Mono + muted to read as an
   archival breadcrumb, not as a primary signal. */
.fecx .hub-bonus-expired-date {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--ink-3);
  letter-spacing: 0.04em;
  text-align: center;
  padding-top: 4px;
}

/* card CTA — Details + PLAY both carry .fec-btn; restyle to V2.1 buttons */
.fecx .hub-bonus-cta .fec-btn{
  flex: 1;
  display: inline-flex; align-items: center; justify-content: center;
  height: 40px; padding: 0 14px;
  border: 1px solid var(--rule); border-radius: var(--radius-sm);
  font-family: var(--sans); font-size: 13px; font-weight: 600;
  text-decoration: none; white-space: nowrap; cursor: pointer;
}
.fecx .hub-bonus-cta .fec-btn--ghost{ background: var(--bg); color: var(--ink-2); }
.fecx .hub-bonus-cta .fec-btn--ghost:hover{ border-color: var(--ink-3); color: var(--ink); }
.fecx .hub-bonus-cta .fec-btn--primary{ background: var(--ink); border-color: var(--ink); color: var(--bg); }
.fecx .hub-bonus-cta .fec-btn--primary:hover{ opacity: .92; }

/* ================================================================
   FEC V2.1 — Sticky CTA bar (appears on scroll past hero)
   Markup is legacy (.fec-cta-sticky / .fec-btn etc.); behavior is
   controlled by JS via .is-on on the bar + .has-sticky-cta on body.
   We only restyle here to align visually with the bd-hero actions.
   ================================================================ */
.fecx .fec-cta-sticky {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 50;
  background: var(--paper);
  border-top: 1px solid var(--rule);
  padding: 12px 16px;
  transform: translateY(100%);
  transition: transform 0.25s ease;
  box-shadow: 0 -4px 20px rgba(0,0,0,0.05);
}
.fecx .fec-cta-sticky.is-on { transform: translateY(0); }
.fecx .fec-cta-sticky__inner {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  align-items: center;
}
.fecx .fec-cta-sticky .fec-btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 11px 17px;
  min-width: 110px;
  border: 1px solid var(--rule); border-radius: 999px;
  font-family: var(--sans); font-size: 14px; font-weight: 500;
  text-decoration: none; white-space: nowrap; cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, opacity 0.15s ease;
}
.fecx .fec-cta-sticky .fec-btn:active { transform: translateY(1px); }
.fecx .fec-cta-sticky .fec-btn--ghost {
  background: transparent;
  color: var(--ink);
}
.fecx .fec-cta-sticky .fec-btn--ghost:hover {
  background: var(--bg-2);
  border-color: var(--ink-3);
}
.fecx .fec-cta-sticky .fec-btn--primary {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--bg);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
}
.fecx .fec-cta-sticky .fec-btn--primary:hover { opacity: .92; }
body.fecx.has-sticky-cta { padding-bottom: 68px; }

@media (max-width: 640px) {
  .fecx .fec-cta-sticky { padding: 10px 12px; }
  .fecx .fec-cta-sticky__inner { gap: 8px; justify-content: stretch; }
  .fecx .fec-cta-sticky .fec-btn {
    flex: 1; min-width: 0;
    padding: 11px 12px; font-size: 13px;
  }
}

/* ================================================================
   FEC V2.1 — HUB chip rows: horizontal scroll on mobile (<=640px)
   .hub-browse and .hub-readfirst wrap to 2-3 lines on narrow screens,
   adding page height. Below 640px each becomes a single sideways-
   scrolling row; the scrollbar is hidden. .hub-browse (transparent)
   gets a right-edge fade as the scroll hint; .hub-readfirst is a solid
   box, so it keeps a crisp edge and relies on the clipped last link.
   ================================================================ */
@media (max-width: 640px) {
  .fecx .hub-browse,
  .fecx .hub-readfirst {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;                       /* Firefox */
  }
  .fecx .hub-browse::-webkit-scrollbar,
  .fecx .hub-readfirst::-webkit-scrollbar { display: none; }   /* WebKit */

  /* items keep their size and never wrap internally */
  .fecx .hub-browse-chip,
  .fecx .hub-readfirst .lbl,
  .fecx .hub-readfirst a { flex: 0 0 auto; white-space: nowrap; }

  /* .hub-browse: right-edge fade signals there is more to scroll */
  .fecx .hub-browse {
    padding-right: 28px;
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
            mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
  }
}

/* ================================================================
   FEC V2.1 — status row, toolbar and listing grid all follow .fecx
   .wrap's side padding on mobile (.fecx .wrap drops 28px -> 18px at
   <=760px), keeping every block edge-aligned at all sizes.
   ================================================================ */
@media (max-width: 760px) {
  .fecx .fec-minirow,
  .fecx .fec-toolbar,
  .fecx .fec-grid { padding-left: 18px; padding-right: 18px; }
}

/* ============================================================================
 * BONUS DETAIL VIEW  (.bd-*)
 * ----------------------------------------------------------------------------
 * Single-bonus detail page (com_bonuses view=details). Gated by
 * fec_is_fecx_detail() -> .fecx body class (see index.php).
 * The Decision-notes block reuses the hub long-form shell (.hub-longform /
 * .hub-toc / .hub-content); rules that touch those shared classes are scoped
 * under .bd-notes / .bd-related so they cannot affect the hub or its siblings.
 * ============================================================================ */

/* ---- Hero card ---- */
.fecx .bd-hero { padding: 20px 0 32px; }
.fecx .bd-hero-card {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 26px 28px;
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 32px;
  align-items: stretch;
}
.fecx .bd-hero-left { display: flex; flex-direction: column; gap: 14px; }
.fecx .bd-hero-casinoline {
  display: flex; align-items: center; gap: 12px;
}
.fecx .bd-hero-casino { font-weight: 600; font-size: 15px; color: var(--ink); }
.fecx .bd-hero-statuses {
  display: flex; gap: 6px; margin-left: auto;
}
.fecx .bd-hero-statuses .tag-active {
  background: var(--verified-soft);
  color: var(--verified);
}
.fecx .bd-hero-title {
  font-family: var(--serif);
  font-weight: 700;
  font-size: clamp(28px, 3.4vw, 38px);
  line-height: 1.05;
  letter-spacing: -0.025em;
  margin: 0;
  color: var(--ink);
}
.fecx .bd-hero-title .amount { color: var(--accent); font-size: inherit; }
.fecx .bd-hero-title .what {
  border-bottom: 2px solid var(--rule);
  padding-bottom: 1px;
  font-size: inherit;
}
.fecx .bd-hero-game-meta {
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.04em; color: var(--ink-3);
  display: flex; gap: 14px; align-items: center;
}
.fecx .bd-hero-game-meta .meta-rel { color: var(--ink-2); }
.fecx .bd-hero-game-meta a.meta-rel {
  border-bottom: 1px dotted var(--ink-3);
  padding-bottom: 1px;
}
.fecx .bd-hero-game-meta .meta-rel .lbl {
  color: var(--accent);
  font-weight: 600;
}
.fecx .bd-hero-game-meta a.meta-rel:hover {
  color: var(--ink);
  border-bottom-color: var(--accent);
}
.fecx .bd-hero-game-meta a.meta-rel:hover .lbl {
  color: var(--accent-ink);
}

/* FXCheck panel (right) */
.fecx .bd-fxpanel {
  background: var(--bg-2);
  border-radius: var(--radius-sm);
  padding: 20px 22px;
  display: flex; flex-direction: column; gap: 16px;
  border: 1px solid var(--rule-2);
}
.fecx .bd-fxpanel-head {
  display: flex; align-items: center; gap: 10px;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
}
.fecx .bd-fxpanel-head .tag-verified {
  background: var(--verified-soft);
  color: var(--verified);
  font-size: 10px; padding: 3px 10px;
  border-radius: 999px;
  font-weight: 600;
  margin-left: auto;
  letter-spacing: 0.08em;
}
.fecx .bd-fxstats {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 2.4fr;
  gap: 0;
  border: 1px solid var(--rule);
  border-radius: 999px;
  background: var(--paper);
  overflow: hidden;
}
.fecx .bd-fxstat {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 12px;
  border-right: 1px solid var(--rule-2);
  font-size: 12px;
}
.fecx .bd-fxstat:last-child { border-right: none; }
.fecx .bd-fxstat .k {
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
}
.fecx .bd-fxstat .v {
  font-weight: 700; color: var(--ink);
}
.fecx .bd-fxstat .v.yes { color: var(--verified); }
.fecx .bd-fxstat .v.no { color: var(--ink-4); }
.fecx .bd-fxstat.fresh .v {
  font-family: var(--mono); font-weight: 500;
  display: flex; align-items: center; gap: 6px;
  font-size: 11px;
  white-space: nowrap;
}
.fecx .bd-fxstat.fresh .v::before {
  content: "";
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--verified);
  box-shadow: 0 0 0 0 rgba(28,122,74,0.6);
  animation: fecx-fresh-pulse 2s infinite;
  flex-shrink: 0;
}
@keyframes fecx-fresh-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(28,122,74,0.5); }
  70%  { box-shadow: 0 0 0 8px rgba(28,122,74,0); }
  100% { box-shadow: 0 0 0 0 rgba(28,122,74,0); }
}
@media (prefers-reduced-motion: reduce) {
  .fecx .bd-fxstat.fresh .v::before { animation-duration: 4s; }
}
.fecx .bd-hero-actions {
  display: flex; gap: 10px; margin-top: auto;
  justify-content: flex-end;
}
.fecx .bd-hero-actions .btn { min-width: 110px; justify-content: center; }
.fecx .bd-hero-actions .btn-play { letter-spacing: 0.08em; font-weight: 600; }

/* ---- Jump-to nav ---- */
.fecx .bd-jumpto {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 18px;
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  margin-bottom: 24px;
  position: sticky; top: 60px; z-index: 5;
}
.fecx .bd-jumpto .lbl {
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
}
.fecx .bd-jumpto .chips { display: flex; gap: 6px; flex-wrap: wrap; }
.fecx .bd-jumpto a.chip { background: var(--bg); }
.fecx .bd-jumpto a.chip:hover { background: var(--ink); color: var(--bg); border-color: var(--ink); }

/* ---- Vote widget ---- */
.fecx .bd-vote {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 18px 22px;
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: 14px 24px;
  margin-bottom: 20px;
}
.fecx .bd-vote h3 {
  font-family: var(--serif); font-size: 17px; font-weight: 700;
  margin: 0 0 6px;
  letter-spacing: -0.01em;
}
.fecx .bd-vote p { color: var(--ink-3); margin: 0; font-size: 13px; }
.fecx .bd-vote p a {
  color: var(--accent); border-bottom: 1px dotted var(--accent); padding-bottom: 1px;
}
.fecx .bd-vote-actions { display: flex; gap: 8px; flex-shrink: 0; }
.fecx .bd-vote-actions .btn { min-width: 70px; justify-content: center; }
.fecx .bd-vote-fxnote {
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.04em; color: var(--ink-4);
  margin-top: 6px;
}
.fecx .bd-vote-fxnote b { color: var(--ink-3); }

/* ---- Reports list ---- */
.fecx .bd-reports {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  overflow: hidden;
  margin-bottom: 24px;
}
.fecx .bd-reports-head {
  padding: 16px 22px 8px;
  border-bottom: 1px solid var(--rule-2);
}
.fecx .bd-reports-head h3 {
  font-family: var(--serif); font-size: 18px; font-weight: 700;
  margin: 0 0 4px;
  letter-spacing: -0.01em;
}
.fecx .bd-reports-head .sub {
  font-size: 12px; color: var(--ink-3);
}
.fecx .bd-reports-list { list-style: none; margin: 0; padding: 0; }
.fecx .bd-reports-list li {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: start;
  gap: 14px;
  padding: 13px 22px;
  border-bottom: 1px solid var(--rule-2);
}
.fecx .bd-reports-list li:last-child { border-bottom: none; }
.fecx .bd-reports-row1 {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-size: 13px;
}
.fecx .bd-reports-row1 .user { font-weight: 600; color: var(--ink); }
.fecx .bd-reports-row1 .flag {
  display: inline-block;
  width: 18px; height: 18px;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  border-radius: 2px;
  flex-shrink: 0;
}
.fecx .bd-reports-row1 .sep { color: var(--ink-4); font-size: 11px; }
.fecx .bd-reports-row1 .action {
  color: var(--verified);
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.04em;
}
.fecx .bd-reports-row1 .time {
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
}
.fecx .bd-reports-list .note {
  grid-column: 1 / -1;
  font-size: 13px;
  color: var(--ink-2);
  margin-top: 4px;
  padding-left: 0;
}
.fecx .bd-reports-foot {
  padding: 14px 22px;
  border-top: 1px solid var(--rule-2);
  background: var(--bg-2);
  display: flex; justify-content: space-between; align-items: center;
}
.fecx .bd-reports-foot .meta {
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
}

/* ---- Stats grid (2x2) ---- */
.fecx .bd-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 32px;
}
.fecx .bd-stat-card {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 22px 24px;
  display: flex; flex-direction: column; gap: 14px;
}
.fecx .bd-stat-card h3 {
  font-family: var(--serif); font-size: 18px; font-weight: 700;
  letter-spacing: -0.01em;
  margin: 0;
}
.fecx .bd-stat-card .kvs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px 24px;
}
.fecx .bd-stat-card .kvs.single { grid-template-columns: 1fr; }
.fecx .bd-stat-card .kv .k {
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
  margin-bottom: 4px;
}
.fecx .bd-stat-card .kv .v {
  font-size: 14px; color: var(--ink); font-weight: 500;
}
.fecx .bd-stat-card .kv .v.yes { color: var(--verified); font-weight: 600; }
.fecx .bd-stat-card .kv .v.no { color: var(--danger); font-weight: 600; }

/* Watch out for */
.fecx .bd-watchout-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.fecx .bd-watchout-list li {
  display: grid;
  grid-template-columns: 16px 1fr;
  gap: 10px;
  padding: 10px 12px;
  border-radius: var(--radius-sm);
  background: var(--bg-2);
  align-items: start;
}
.fecx .bd-watchout-list li .sev {
  width: 8px; height: 8px; border-radius: 50%;
  margin-top: 7px;
  background: var(--ink-4);
  align-self: start;
}
.fecx .bd-watchout-list li.high .sev { background: var(--danger); }
.fecx .bd-watchout-list li.med .sev { background: var(--warn); }
.fecx .bd-watchout-list li.low .sev { background: var(--ink-3); }
.fecx .bd-watchout-list .text { font-weight: 600; font-size: 14px; color: var(--ink); }
.fecx .bd-watchout-list .detail { font-size: 13px; color: var(--ink-3); margin-top: 2px; line-height: 1.45; }

/* Eligibility */
.fecx .bd-elig-list {
  display: flex; flex-wrap: wrap;
}
.fecx .bd-elig-list .country,
.fecx .bd-elig-list .more {
  margin: 0 8px 8px 0;
}
.fecx .bd-elig-list .country {
  display: inline-block;
  padding: 5px 10px;
  border-radius: 999px;
  background: var(--bg-2);
  border: 1px solid var(--rule-2);
  font-size: 12px; color: var(--ink-2);
}
.fecx .bd-elig-list .more {
  padding: 5px 10px;
  font-size: 12px;
  color: var(--accent);
  border-bottom: 1px dotted var(--accent);
  cursor: pointer;
  list-style: none;
}
.fecx .bd-elig-list .more::-webkit-details-marker { display: none; }
.fecx .bd-elig-list .more::after { content: " \203A"; margin-left: 2px; }
.fecx .bd-elig-list .bd-elig-more { display: contents; }
.fecx .bd-elig-list .bd-elig-more:not([open]) > .country { display: none; }
.fecx .bd-elig-list .bd-elig-more[open] > .more { display: none; }

/* ---- Decision notes block ---- */
.fecx .bd-notes {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 32px 36px;
  margin-bottom: 32px;
}
.fecx .bd-notes h2.bd-section-title {
  font-family: var(--serif); font-size: 28px; font-weight: 700;
  letter-spacing: -0.02em; line-height: 1.1;
  margin: 0 0 24px;
}
.fecx .bd-notes .hub-longform {
  padding: 0;
}
.fecx .bd-notes .hub-toc { top: 80px; }
/* When the TOC navigates via #hash, leave room for the sticky topbar (60px)
   and the bd-jumpto bar (sticky at top: 60px). 110px clears both with breathing room. */
.fecx .bd-notes .hub-content section[id] { scroll-margin-top: 110px; }

/* Long-form additions */
.fecx .bd-notes .hub-content h3 {
  font-family: var(--serif); font-size: 20px; font-weight: 700;
  letter-spacing: -0.01em;
  margin: 20px 0 12px;
}
.fecx .bd-notes .hub-content .lf-termlist {
  list-style: none; margin: 0 0 18px; padding: 0;
  border-top: 1px solid var(--rule-2);
}
.fecx .bd-notes .hub-content .lf-termlist li {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 16px;
  padding: 11px 0;
  border-bottom: 1px solid var(--rule-2);
  font-size: 14px;
}
.fecx .bd-notes .hub-content .lf-termlist .k { font-weight: 600; color: var(--ink); }
.fecx .bd-notes .hub-content .lf-termlist .v { color: var(--ink-2); }
.fecx .bd-notes .hub-content .lf-subdef {
  font-size: 14px; margin: 4px 0 4px;
}
.fecx .bd-notes .hub-content .lf-subdef b { font-weight: 600; }
.fecx .bd-notes .hub-content .lf-steps {
  margin: 12px 0 18px;
  padding: 0;
  list-style: none;
  counter-reset: bdstep;
}
.fecx .bd-notes .hub-content .lf-steps li {
  counter-increment: bdstep;
  display: grid;
  grid-template-columns: 26px 1fr;
  gap: 12px;
  padding: 8px 0;
  font-size: 14px;
  color: var(--ink-2);
}
.fecx .bd-notes .hub-content .lf-steps li::before {
  content: counter(bdstep, decimal-leading-zero);
  font-family: var(--mono); font-size: 11px;
  color: var(--accent);
  padding-top: 2px;
  font-weight: 600;
}
.fecx .bd-notes .hub-content .lf-twocol {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin: 18px 0;
}
.fecx .bd-notes .hub-content .lf-twocol > div {
  padding: 16px 18px;
  border-radius: var(--radius-sm);
}
.fecx .bd-notes .hub-content .lf-twocol .good { background: var(--verified-soft); }
.fecx .bd-notes .hub-content .lf-twocol .bad { background: var(--warn-soft); }
.fecx .bd-notes .hub-content .lf-twocol h4 {
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.1em; text-transform: uppercase;
  margin: 0 0 10px;
  font-weight: 600;
}
.fecx .bd-notes .hub-content .lf-twocol .good h4 { color: var(--verified); }
.fecx .bd-notes .hub-content .lf-twocol .bad h4 { color: var(--warn); }
.fecx .bd-notes .hub-content .lf-twocol ul {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: 6px;
  font-size: 13px;
  color: var(--ink);
}
.fecx .bd-notes .hub-content .lf-twocol .good li::before { content: "✓ "; color: var(--verified); font-weight: 600; }
.fecx .bd-notes .hub-content .lf-twocol .bad li::before { content: "× "; color: var(--warn); font-weight: 600; }

/* ---- FAQ inside decision notes (native details/summary) ---- */
.fecx .bd-faq {
  margin-top: 8px;
}
.fecx .bd-faq details {
  margin-bottom: 10px;
  background: var(--bg-2);
  border: 1px solid var(--rule-2);
  border-radius: var(--radius-sm);
  padding: 0;
  overflow: hidden;
}
.fecx .bd-faq summary {
  padding: 14px 18px;
  display: flex; justify-content: space-between; align-items: center;
  cursor: pointer;
  font-weight: 600; font-size: 14px;
  color: var(--ink);
  list-style: none; /* Firefox: hide native disclosure triangle */
}
.fecx .bd-faq summary::-webkit-details-marker {
  display: none; /* Safari/Chrome: hide native disclosure triangle */
}
/* Custom chevron via ::after, rotates 90deg when open */
.fecx .bd-faq summary::after {
  content: "\203A"; /* right single angle quotation mark */
  color: var(--ink-3);
  transition: transform 0.2s ease, color 0.2s ease;
  font-family: var(--mono);
  font-size: 18px;
  line-height: 1;
  margin-left: auto;
  padding-left: 12px;
  flex-shrink: 0;
}
.fecx .bd-faq details[open] summary::after {
  transform: rotate(90deg);
  color: var(--accent);
}
.fecx .bd-faq .bd-faq-a {
  padding: 0 18px 16px;
  font-size: 14px;
  color: var(--ink-2);
  line-height: 1.55;
}
.fecx .bd-faq .bd-faq-a p {
  margin: 0 0 10px;
}
.fecx .bd-faq .bd-faq-a p:last-child {
  margin: 0;
}

/* ---- Byline (long form) ---- */
.fecx .bd-author {
  display: grid;
  grid-template-columns: 64px 1fr;
  gap: 16px; align-items: center;
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 18px 22px;
  margin-bottom: 32px;
}
.fecx .bd-author .avatar {
  width: 56px; height: 56px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--bg-2), var(--rule));
  /* Use inset shadow instead of border: takes no layout space, so the inner
     content (initials or photo) can fill the full visible circle. The img
     paints on top of the inset shadow and covers it; the initials placeholder
     still shows the subtle ring. */
  box-shadow: inset 0 0 0 1px var(--rule);
  display: grid; place-items: center;
  font-family: var(--serif); font-weight: 700; font-size: 20px;
  color: var(--ink);
  overflow: hidden; /* clip child <img> to the circular shape */
}
/* When an actual photo is present, fill the avatar and crop proportionally
   so the face is centered, not squashed into the square viewport. Scaled to
   110% to overcome sub-pixel rendering gaps at the rounded edge; the parent
   grid's `place-items: center` centers the oversize image, and the parent's
   `overflow: hidden` clips the excess. */
.fecx .bd-author .avatar img {
  width: 110%; height: 110%;
  object-fit: cover;
  display: block;
}
.fecx .bd-author .who {
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
}
.fecx .bd-author .name {
  font-weight: 700; font-size: 15px; color: var(--ink);
  margin-top: 2px;
}
.fecx .bd-author .role { font-size: 13px; color: var(--ink-3); }
.fecx .bd-author .meta {
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
  margin-top: 6px;
}
.fecx .bd-author .meta b { color: var(--ink-2); font-weight: 600; }
.fecx .bd-author .bio { font-size: 13px; color: var(--ink-2); margin-top: 4px; }

/* ---- Related ---- */
.fecx .bd-related { padding: 32px 0; border-top: 1px solid var(--rule); }
.fecx .bd-related h2 {
  font-family: var(--serif); font-size: 22px; font-weight: 700;
  letter-spacing: -0.01em;
  margin: 0 0 6px;
}
.fecx .bd-related .alllink {
  font-size: 13px; color: var(--accent);
  border-bottom: 1px dotted var(--accent);
  padding-bottom: 1px;
}
.fecx .bd-related .top {
  display: flex; justify-content: space-between; align-items: baseline;
  margin-bottom: 18px;
}
.fecx .bd-related .hub-bonus .match-tag {
  position: absolute; top: -1px; left: 16px;
  transform: translateY(-50%);
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  background: var(--paper);
  border: 1px solid var(--rule);
  padding: 3px 10px;
  border-radius: 999px;
  font-weight: 600;
}
.fecx .bd-related .hub-bonus .match-tag.closest { color: var(--verified); border-color: rgba(28,122,74,0.4); }
.fecx .bd-related .hub-bonus .match-tag.alternative { color: var(--ink-3); }

/* ---- Bottom nav ---- */
.fecx .bd-bottomnav {
  display: flex; justify-content: center; align-items: center; gap: 32px;
  padding: 24px 0;
  border-top: 1px solid var(--rule);
  font-size: 13px; color: var(--ink-2);
}
.fecx .bd-bottomnav a:hover { color: var(--ink); }
.fecx .bd-bottomnav a.back-top { color: var(--ink); font-weight: 500; }

/* ============================================================================
 * CASINO BONUSES HUB (cb-*)
 * Used by BonusesViewCasino (default.php). Editorial hub listing all bonuses
 * for a single casino. Sections: head, intro, fxbox, tabs, section-title,
 * watchout. Bonus cards reuse the shared .hub-bonus / .hub-grid.
 *
 * Backward compat: editorial intro overrides in helpers/intro_overrides_cid.php
 * use the legacy `.fec-intro` / `.fec-intro__links` / `.fec-dot` markup and
 * `<strong>` for emphasis. Each .cb-intro rule below also targets the legacy
 * class so the override files keep working unchanged.
 * ============================================================================ */

/* ---- Head: eyebrow + grid (title-left, updated-pill-right) + tagline ---- */
.fecx .cb-head { padding: 24px 0 16px; }
.fecx .cb-head-grid {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 24px;
  border-bottom: 1px solid var(--rule);
  padding-bottom: 24px;
}
.fecx .cb-head-left { display: flex; flex-direction: column; gap: 10px; }
.fecx .cb-head-eyebrow {
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--ink-3);
}
.fecx .cb-head-title {
  font-family: var(--serif); font-weight: 700;
  font-size: clamp(28px, 3.6vw, 40px);
  line-height: 1.05; letter-spacing: -0.025em;
  margin: 0;
  color: var(--ink);
}
.fecx .cb-head-meta {
  font-family: var(--mono); font-size: 12px;
  letter-spacing: 0.04em; color: var(--ink-3);
  display: flex; gap: 14px; align-items: center;
}
.fecx .cb-head-meta .dot {
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--ink-4);
  display: inline-block;
}
.fecx .cb-head-tagline {
  font-size: 14px; color: var(--ink-2);
  max-width: 60ch;
  margin: 0;
}
.fecx .cb-head-tag {
  display: flex; flex-direction: column; align-items: flex-end;
  font-size: 13px; color: var(--ink-3);
  gap: 6px;
}

/* Updated pill (outer rounded container + inner mini-pill for relative time).
   Layout in mockup:
     [ UPDATED  May 14, 2026  ( Updated 6 days ago ) ]
   Outer:  thin border, transparent bg, pill-shaped, mono typography.
   Inner:  bg-2 mini-pill for the "X days ago" relative label. */
.fecx .cb-updated {
  display: inline-flex;
  align-items: center;
  gap: 0;
  padding: 7px 4px 7px 14px;
  border: 1px solid var(--rule);
  border-radius: 999px;
  background: var(--paper);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  line-height: 1;
}
.fecx .cb-updated-label {
  font-size: 10px;
  letter-spacing: 0.12em;
  color: var(--ink-3);
  text-transform: uppercase;
  margin-right: 8px;
}
.fecx .cb-updated-date {
  font-size: 11px;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: 0.02em;
  margin-right: 10px;
}
.fecx .cb-updated-rel {
  /* Subtle overlay (5% black) rather than --bg-2 so the inner pill
     reads as a tonal echo of the outer rather than a contrasting block. */
  background: var(--bg-2);
  color: var(--ink-3);
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 10px;
}

/* ---- Intro (editorial brand block) -----------------------------------------
   Aliases: targets both .cb-intro (new) and .fec-intro (legacy override files).
*/
.fecx .cb-intro,
.fecx .fec-intro {
  padding: 20px 0 8px;
}
.fecx .cb-intro p,
.fecx .fec-intro p {
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink-2);
  margin: 0 0 14px;
  max-width: 78ch;
}
.fecx .fec-intro a { font-size: 14px; }
.fecx .cb-intro p b,
.fecx .cb-intro p strong,
.fecx .fec-intro p b,
.fecx .fec-intro p strong {
  color: var(--ink); font-weight: 600;
}
.fecx .cb-intro-links,
.fecx .fec-intro__links {
  display: flex; flex-wrap: wrap; gap: 16px 22px;
  font-size: 14px;
  padding-bottom: 8px;
  margin: 0; /* reset <p> margin in legacy override markup */
  max-width: none;
}
.fecx .cb-intro-links a,
.fecx .fec-intro__links a {
  color: var(--ink-2);
  border-bottom: 1px solid var(--ink-3);
  padding-bottom: 1px;
  transition: color 0.1s ease, border-bottom-color 0.1s ease;
}
.fecx .cb-intro-links a:hover,
.fecx .fec-intro__links a:hover {
  color: var(--accent-ink);
  border-bottom-color: var(--accent);
}
.fecx .cb-intro-links .dot,
.fecx .fec-intro__links .fec-dot {
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--ink-4);
  align-self: center;
  display: inline-block;
}

/* ---- FXCheck box (casino-level summary + recent reports list) -------------- */
.fecx .cb-fxbox {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 22px 24px;
  margin: 24px 0 28px;
}
.fecx .cb-fxbox-head {
  display: flex; align-items: center; gap: 14px;
  flex-wrap: wrap;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--rule-2);
  margin-bottom: 14px;
}
.fecx .cb-fxbox-title { display: flex; flex-direction: column; gap: 4px; }
.fecx .cb-fxbox-title h3 {
  font-family: var(--serif); font-size: 17px; font-weight: 700;
  margin: 0;
  letter-spacing: -0.01em;
}
.fecx .cb-fxbox-title .sub {
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.04em; color: var(--ink-3);
  display: flex; gap: 10px; align-items: center;
}
.fecx .cb-fxbox-title .sub a {
  color: var(--accent);
  border-bottom: 1px dotted var(--accent);
  padding-bottom: 1px;
}
.fecx .cb-fxbox-stats {
  margin-left: auto;
  display: flex; align-items: center; gap: 12px;
  font-family: var(--mono); font-size: 12px;
}
.fecx .cb-fxbox-stats .positive {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--verified-soft);
  color: var(--verified);
  font-weight: 600;
}
.fecx .cb-fxbox-stats .positive::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%;
  background: var(--verified);
}
.fecx .cb-fxbox-stats .reports { color: var(--ink-3); }
.fecx .cb-fxbox-list { display: flex; flex-direction: column; gap: 8px; }
.fecx .cb-fxbox-item {
  display: grid;
  grid-template-columns: 22px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 12px 14px;
  background: var(--bg-2);
  border-radius: var(--radius-sm);
  font-size: 13px;
}
.fecx .cb-fxbox-item .icon {
  width: 22px; height: 22px;
  display: grid; place-items: center;
  font-size: 14px; font-weight: 700;
}
.fecx .cb-fxbox-item .icon.yes { color: var(--verified); }
.fecx .cb-fxbox-item .icon.no  { color: var(--danger); }
.fecx .cb-fxbox-item .body {
  display: flex; flex-direction: column; gap: 2px;
  min-width: 0;
}
.fecx .cb-fxbox-item .body .row1 {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
  font-size: 13px;
}
.fecx .cb-fxbox-item .body .verdict { font-weight: 600; }
.fecx .cb-fxbox-item .body .verdict.yes { color: var(--verified); }
.fecx .cb-fxbox-item .body .verdict.no  { color: var(--danger); }
.fecx .cb-fxbox-item .body .btype a {
  color: var(--accent);
  border-bottom: 1px dotted var(--accent);
  padding-bottom: 1px;
}
.fecx .cb-fxbox-item .body .ago {
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
}
.fecx .cb-fxbox-item .body .comment {
  font-size: 12px;
  color: var(--ink-3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-top: 4px;
}
.fecx .cb-fxbox-item .view {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  padding: 5px 12px;
  border-radius: 999px;
  background: var(--paper);
  border: 1px solid var(--rule);
  color: var(--ink-2);
  white-space: nowrap;
}
.fecx .cb-fxbox-item .view:hover { border-color: var(--ink-3); color: var(--ink); }
.fecx .cb-fxbox-cta {
  display: flex; justify-content: space-between; align-items: center;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px dashed var(--rule);
  flex-wrap: wrap; gap: 10px;
}
.fecx .cb-fxbox-cta-left {
  display: flex; align-items: center; gap: 12px;
  font-size: 14px; color: var(--ink-2);
}
.fecx .cb-fxbox-cta-left b { color: var(--ink); font-weight: 600; }
.fecx .cb-fxbox-cta-left a {
  color: var(--accent);
  border-bottom: 1px dotted var(--accent);
  padding-bottom: 1px;
}
.fecx .cb-fxbox-cta-right {
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-4); letter-spacing: 0.04em;
}
.fecx .cb-fxbox-empty {
  padding: 12px 14px;
  background: var(--bg-2);
  border-radius: var(--radius-sm);
  font-size: 13px; color: var(--ink-3);
}

/* ---- Tabs (Active / Show expired / sort label) ---------------------------- */
.fecx .cb-tabs {
  display: flex; align-items: center;
  gap: 12px;
  padding: 18px 0 12px;
  border-top: 1px solid var(--rule-2);
}
.fecx .cb-tabs .tab {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 16px;
  border-radius: 999px;
  font-size: 14px; color: var(--ink-2);
  background: transparent;
  border: 1px solid transparent;
  cursor: pointer;
  font-weight: 500;
  text-decoration: none;
}
.fecx .cb-tabs .tab:hover { color: var(--ink); }
.fecx .cb-tabs .tab.active {
  background: var(--ink); color: var(--bg);
  border-color: var(--ink);
}
.fecx .cb-tabs .tab .count {
  font-family: var(--mono); font-size: 11px;
  opacity: 0.7;
}
.fecx .cb-tabs-spacer { flex: 1; }
.fecx .cb-tabs .sort {
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
}

/* ---- Section title (h2 + right-aligned counter) --------------------------- */
.fecx .cb-section-title {
  display: flex; align-items: baseline; justify-content: space-between;
  margin: 24px 0 16px;
}
.fecx .cb-section-title h2 {
  font-family: var(--serif); font-size: 22px; font-weight: 700;
  letter-spacing: -0.01em;
  margin: 0;
  color: var(--ink);
}
.fecx .cb-section-title .meta {
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
}

/* ---- Watchout callout (bottom of list, generic warnings) ------------------ */
.fecx .cb-watchout {
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 22px 26px;
  margin: 32px 0 16px;
}
.fecx .cb-watchout h3 {
  font-family: var(--serif); font-size: 18px; font-weight: 700;
  letter-spacing: -0.01em;
  margin: 0 0 14px;
  color: var(--ink);
}
.fecx .cb-watchout-list {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: 10px;
}
.fecx .cb-watchout-list li {
  font-size: 14px; color: var(--ink-2);
  position: relative;
  padding-left: 28px;
  line-height: 1.5;
}
.fecx .cb-watchout-list li::before {
  content: "\2192"; /* right arrow */
  color: var(--ink-3);
  font-family: var(--mono);
  position: absolute;
  left: 0;
  top: 0;
  line-height: 1.5;
}
.fecx .cb-watchout-list b { color: var(--ink); font-weight: 600; }

/* ---- Pagination (hub-pager) reused at the bottom of the casino list ------- */
/* (already styled via shared .hub-pager rules in BONUSES HUB section above) */

@media (max-width: 900px) {
  .fecx .bd-hero-card { grid-template-columns: 1fr; }
  .fecx .bd-stats { grid-template-columns: 1fr; }
  .fecx .bd-fxstats { grid-template-columns: 1fr 1fr; }
  .fecx .bd-fxstat { border-bottom: 1px solid var(--rule-2); }
  .fecx .bd-notes { padding: 22px 18px; }
  .fecx .bd-notes .hub-content .lf-twocol { grid-template-columns: 1fr; }
  .fecx .bd-notes .hub-content .lf-termlist li { grid-template-columns: 1fr; gap: 4px; }
  /* Jump-to: scroll orizzontale invece di wrap, con fade hint a destra */
  .fecx .bd-jumpto { overflow: hidden; }
  .fecx .bd-jumpto::after {
    content: "";
    position: absolute;
    right: 0; top: 0; bottom: 0;
    width: 32px;
    background: linear-gradient(to right, transparent, var(--paper));
    pointer-events: none;
    border-radius: 0 var(--radius) var(--radius) 0;
  }
  .fecx .bd-jumpto .lbl { white-space: nowrap; }
  .fecx .bd-jumpto .chips {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-right: 24px;
  }
  .fecx .bd-jumpto .chips::-webkit-scrollbar { display: none; }
  .fecx .bd-jumpto .chip { flex-shrink: 0; white-space: nowrap; }
  /* CASINO BONUSES HUB responsive */
  .fecx .cb-head-grid { grid-template-columns: 1fr; }
  .fecx .cb-head-tag { align-items: flex-start; }
  .fecx .cb-fxbox-head { flex-direction: column; align-items: flex-start; }
  .fecx .cb-fxbox-stats { margin-left: 0; }
  .fecx .cb-fxbox-item { grid-template-columns: 22px 1fr; }
  .fecx .cb-fxbox-item .view { grid-column: 2; justify-self: end; margin-top: 4px; }
  .fecx .cb-tabs { flex-wrap: wrap; }
  .fecx .cb-tabs-spacer { display: none; }
}

/* Hero mobile tightening (≤640px) — title smaller, card padding ridotto,
   casino-line wrappable, game-meta items atomici con row-gap. */
@media (max-width: 640px) {
  .fecx .bd-hero-card { padding: 18px 16px; }
  .fecx .bd-hero-title { font-size: 24px; }
  .fecx .bd-hero-casinoline { flex-wrap: wrap; row-gap: 8px; }
  /* Badge mobile: stanno vicini al casino name (no auto-right), più piccoli */
  .fecx .bd-hero-statuses { margin-left: 0; }
  .fecx .bd-hero-statuses .tag { font-size: 9px; padding: 2px 6px; }
  .fecx .bd-hero-game-meta {
    flex-wrap: wrap;
    row-gap: 6px;
    column-gap: 10px;
  }
  .fecx .bd-hero-game-meta > span,
  .fecx .bd-hero-game-meta > a { white-space: nowrap; }
  /* .bd-related header (title + "See all..." link): on narrow screens they
     don't fit on the same flex row and both wrap into mangled multi-line
     blocks. Stack vertically with the link below the title. */
  .fecx .bd-related .top {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
  /* .cb-fxbox-cta-left: the "Tried a bonus here? Report your experience"
     pair sits in a flex row with gap:12px; on narrow screens both children
     wrap internally into mangled 2-line stacks. Make the inner row a column
     so each text gets its own line. The outer .cb-fxbox-cta already wraps
     (flex-wrap: wrap) so the cta-right disclaimer drops below on its own. */
  .fecx .cb-fxbox-cta-left {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }
}

/* ============================================================================
 * BONUS DETAIL -- interactive pieces not covered by the mockup
 * Vote submission form, FXCheck "why issues" accordion, report/message states.
 * Same .fecx scoping + design tokens as the rest of this file.
 * ============================================================================ */

/* ---- Vote widget: main column, message, verified line ---- */
.fecx .bd-vote-main { flex: 1 1 320px; min-width: 0; }
.fecx .bd-vote-msg { font-size: 13px; color: var(--ink-3); margin-top: 8px; }
.fecx .bd-vote-msg:empty { display: none; }
.fecx .bd-vote-msg a,
.fecx .bd-see-reports {
  color: var(--accent); border-bottom: 1px dotted var(--accent); padding-bottom: 1px;
}
.fecx .bd-vote-msg.is-success { color: var(--verified); }
.fecx .bd-vote-msg.is-error   { color: var(--danger); }
.fecx .bd-vote-msg.is-info    { color: var(--ink-3); }
.fecx .bd-vote-verified { font-size: 12px; color: var(--verified); margin-top: 8px; }
.fecx .bd-vote-verified[hidden] { display: none; }
.fecx .bd-vote-verified strong { font-weight: 700; }

/* ---- Vote widget: inline submission form (kept inline per design call) ---- */
.fecx .bd-vote-form {
  flex-basis: 100%;
  display: flex; flex-direction: column; gap: 10px;
  margin-top: 4px; padding-top: 16px;
  border-top: 1px solid var(--rule-2);
}
.fecx .bd-vote-field { display: flex; flex-direction: column; gap: 4px; }
.fecx .bd-vote-field-k { font-size: 12px; font-weight: 600; color: var(--ink-2); }
.fecx .bd-vote-name,
.fecx .bd-vote-comment {
  font: inherit; font-size: 13px;
  background: var(--bg); color: var(--ink);
  border: 1px solid var(--rule); border-radius: var(--radius-sm);
  padding: 8px 10px; width: 100%;
}
.fecx .bd-vote-name:focus,
.fecx .bd-vote-comment:focus { outline: none; border-color: var(--accent); }
.fecx .bd-vote-comment { resize: vertical; min-height: 64px; }
.fecx .bd-vote-submit { align-self: flex-start; }

/* ---- Vote button + form states (toggled by the FXCheck JS) ---- */
.fecx .bd-vote-actions .btn.is-selected { outline: 2px solid var(--accent); outline-offset: 1px; }
.fecx .bd-vote-actions .btn.is-disabled,
.fecx .bd-vote-actions .btn[disabled],
.fecx .bd-vote-submit[disabled] { opacity: 0.5; cursor: not-allowed; }

/* ---- "Why people report issues" accordion (.bd-whystats) ---- */
.fecx .bd-whystats {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  margin-bottom: 20px;
  overflow: hidden;
}
.fecx .bd-whystats-toggle {
  width: 100%;
  display: flex; align-items: center; gap: 10px;
  background: transparent; border: 0;
  padding: 14px 18px; text-align: left; cursor: pointer; font: inherit;
}
.fecx .bd-whystats-label { font-weight: 600; font-size: 14px; color: var(--ink); }
.fecx .bd-whystats-hint {
  font-family: var(--mono); font-size: 11px; color: var(--ink-4); margin-left: auto;
}
.fecx .bd-whystats-chev { color: var(--ink-4); display: flex; transition: transform 0.15s ease; }
.fecx .bd-whystats-toggle[aria-expanded="true"] .bd-whystats-chev { transform: rotate(180deg); }
.fecx .bd-whystats-panel { border-top: 1px solid var(--rule-2); }
.fecx .bd-whystats-panel[hidden] { display: none; }
.fecx .bd-whystats-body { padding: 14px 18px; }
.fecx .bd-whystats-intro { font-size: 13px; color: var(--ink-3); margin: 0 0 10px; }
.fecx .bd-whystats-reasons { list-style: none; margin: 0 0 10px; padding: 0; }
.fecx .bd-whystats-reasons li {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  padding: 6px 0; border-bottom: 1px solid var(--rule-2); font-size: 13px;
}
.fecx .bd-whystats-reasons li:last-child { border-bottom: none; }
.fecx .bd-whystats-reasons .k { color: var(--ink-2); }
.fecx .bd-whystats-reasons .v {
  font-family: var(--mono); font-size: 12px; color: var(--ink-4); font-variant-numeric: tabular-nums;
}
.fecx .bd-whystats-cta { margin: 0; font-size: 13px; }

/* ---- Reports: footer status, empty state, per-report outcome accent ---- */
.fecx .bd-reports-status { font-size: 12px; color: var(--ink-3); }
.fecx .bd-reports-status:empty { display: none; }
.fecx .bd-reports-empty { list-style: none; padding: 16px 0; color: var(--ink-4); font-size: 13px; }
.fecx .bd-report--yes .action { color: var(--verified); }
.fecx .bd-report--no .action  { color: var(--warn); }

/* ========================================================================
   FEC V2.1 — Editorial Team page styles (.tm-* family)
   Ported from Editorial_Team_bundle.html mockup. All selectors are
   .fecx-scoped so the rules stay inert outside the team page.
   ======================================================================== */

.fecx .tm-hero {
  padding: 32px 0 48px;
  border-bottom: 1px solid var(--rule);
}

.fecx .tm-hero-grid {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 56px;
  align-items: end;
}

.fecx .tm-title {
  font-family: var(--serif);
  font-weight: 700;
  font-size: clamp(38px, 4.8vw, 60px);
  line-height: 1.02;
  letter-spacing: -0.025em;
  margin: 14px 0 22px;
  max-width: 18ch;
}

.fecx .tm-title em {
  color: var(--accent);
  font-style: normal;
}

.fecx .tm-intro {
  color: var(--ink-2);
  font-size: 16px;
  line-height: 1.55;
  max-width: 56ch;
  margin: 0;
}

.fecx .tm-hero-stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0;
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--paper);
}

.fecx .tm-hero-stat {
  padding: 18px 20px;
  border-right: 1px solid var(--rule-2);
  border-bottom: 1px solid var(--rule-2);
}

.fecx .tm-hero-stat:nth-child(2n) {
  border-right: none;
}

.fecx .tm-hero-stat:nth-last-child(-n+2) {
  border-bottom: none;
}

.fecx .tm-hero-stat .num {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 32px;
  letter-spacing: -0.02em;
  color: var(--ink);
  line-height: 1;
}

.fecx .tm-hero-stat .lbl {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-top: 6px;
}

.fecx .tm-principles {
  padding: 56px 0;
  border-bottom: 1px solid var(--rule);
  background: var(--bg-2);
}

.fecx .tm-principles-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 28px;
}

.fecx .tm-principles-head h2 {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 32px;
  letter-spacing: -0.02em;
  margin: 8px 0 0;
}

.fecx .tm-principles-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border-top: 1px solid var(--rule);
}

.fecx .tm-principle {
  padding: 24px 24px 24px 0;
  border-right: 1px solid var(--rule-2);
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.fecx .tm-principle:nth-child(1) {
  padding-right: 24px;
}

.fecx .tm-principle:nth-child(n+2) {
  padding-left: 24px;
}

.fecx .tm-principle:last-child {
  border-right: none;
  padding-right: 0;
}

.fecx .tm-principle .num {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  color: var(--accent);
  font-weight: 600;
}

.fecx .tm-principle h3 {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 17px;
  letter-spacing: -0.01em;
  line-height: 1.2;
  margin: 0;
}

.fecx .tm-principle p {
  font-size: 14px;
  line-height: 1.55;
  color: var(--ink-3);
  margin: 0;
}

.fecx .tm-bylines {
  padding: 56px 0;
  border-bottom: 1px solid var(--rule);
}

.fecx .tm-bylines-head {
  margin-bottom: 28px;
}

.fecx .tm-bylines-head h2 {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 32px;
  letter-spacing: -0.02em;
  margin: 8px 0 6px;
}

.fecx .tm-bylines-head .sub {
  color: var(--ink-3);
  font-size: 14px;
  max-width: 60ch;
}

.fecx .tm-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

.fecx .tm-card {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 26px 28px;
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 24px;
  align-items: start;
}

.fecx .tm-avatar {
  width: 96px;
  height: 96px;
  border-radius: var(--radius-sm);
  position: relative;
  overflow: hidden;
  border: 1px solid var(--rule);
}

.fecx .tm-avatar::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 40% 28%, hsla(var(--avatar-hue, 220), 35%, 88%, 0.95) 0%, hsla(var(--avatar-hue, 220), 30%, 78%, 0.7) 35%, hsla(var(--avatar-hue, 220), 30%, 68%, 0.5) 70%);
}

.fecx .tm-avatar::after {
  content: "";
  position: absolute;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: hsla(var(--avatar-hue, 220), 35%, 65%, 0.7);
  left: 50%;
  bottom: -10px;
  transform: translateX(-50%);
}

.fecx .tm-avatar .head {
  position: absolute;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: hsla(var(--avatar-hue, 220), 40%, 78%, 0.95);
  border: 1.5px solid hsla(var(--avatar-hue, 220), 35%, 60%, 0.5);
  left: 50%;
  top: 22px;
  transform: translateX(-50%);
  z-index: 1;
}

.fecx .tm-avatar .initials {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-family: var(--serif);
  font-weight: 700;
  font-size: 22px;
  color: hsla(var(--avatar-hue, 220), 50%, 25%, 0.85);
  z-index: 2;
}

.fecx .tm-card .body {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
}

.fecx .tm-card-titleline {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.fecx .tm-card-name {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 22px;
  line-height: 1.1;
  letter-spacing: -0.015em;
  color: var(--ink);
  margin: 0;
}

.fecx .tm-card-name a:hover {
  color: var(--accent);
}

.fecx .tm-card-role {
  font-size: 14px;
  color: var(--ink-2);
}

.fecx .tm-card-role .div {
  color: var(--ink-4);
  margin: 0 6px;
}

.fecx .tm-card-role .sub {
  color: var(--ink-3);
}

.fecx .tm-card-tagline {
  font-family: var(--serif);
  font-size: 15px;
  line-height: 1.4;
  color: var(--accent-ink);
  font-style: italic;
  padding-left: 12px;
  border-left: 2px solid var(--accent);
}

.fecx .theme-dark .tm-card-tagline {
  color: var(--accent);
}

.fecx .tm-card-bio {
  font-size: 14px;
  line-height: 1.55;
  color: var(--ink-2);
  margin: 0;
}

.fecx .tm-specialties {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.fecx .tm-specialty {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--bg-2);
  border: 1px solid var(--rule-2);
  font-size: 12px;
  color: var(--ink-2);
}

.fecx .tm-specialty::before {
  content: "";
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--ink-3);
}

.fecx .tm-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid var(--rule-2);
  border-bottom: 1px solid var(--rule-2);
  padding: 12px 0;
}

.fecx .tm-stats .stat {
  text-align: left;
}

.fecx .tm-stats .stat:nth-child(n+2) {
  border-left: 1px solid var(--rule-2);
  padding-left: 14px;
}

.fecx .tm-stats .num {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 22px;
  letter-spacing: -0.015em;
  color: var(--ink);
  line-height: 1;
}

.fecx .tm-stats .lbl {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-top: 4px;
}

.fecx .tm-recent {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.fecx .tm-recent .lbl-row {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-bottom: 2px;
}

.fecx .tm-recent .item {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 13px;
  padding: 4px 0;
}

/* Chip stays its inline-styled 36×36; don't let flexbox shrink it. */
.fecx .tm-recent .casino-chip {
  flex: 0 0 36px;
  width: 36px;
  height: 36px;
}

/* Two-line label: brand (bold) over bonus title (lighter, smaller).
   The whole label is a single <a> for big click target. The flex:1 +
   min-width:0 combo ensures the link fills the remaining row width
   AND allows internal text to wrap when needed (rather than overflowing). */
.fecx .tm-recent .item-link {
  display: block;
  flex: 1 1 auto;
  min-width: 0;
  line-height: 1.3;
  color: var(--ink);
}

.fecx .tm-recent .item-link:hover {
  color: var(--accent-ink);
}

.fecx .tm-recent .item-brand {
  display: block;
  font-weight: 600;
  color: var(--ink);
}

.fecx .tm-recent .item-link:hover .item-brand {
  color: var(--accent-ink);
}

.fecx .tm-recent .item-title {
  display: block;
  font-size: 12px;
  color: var(--ink-3);
  margin-top: 1px;
}

/* Legacy .kind chip rules below are kept inert (not emitted by current
   template) for backward compatibility — older snapshots may still reference
   them. Safe to remove in a future cleanup. */
.fecx .tm-recent .kind {
  font-family: var(--mono);
  font-size: 9px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 600;
  padding: 3px 6px;
  border-radius: 4px;
  text-align: center;
}

.fecx .tm-recent .kind.review {
  background: var(--accent-soft);
  color: var(--accent-ink);
}

.fecx .tm-recent .kind.guide {
  background: var(--bg-2);
  color: var(--ink-2);
  border: 1px solid var(--rule-2);
}

.fecx .tm-recent .kind.report {
  background: var(--verified-soft);
  color: var(--verified);
}

.fecx .tm-recent .item a {
  color: var(--ink);
  border-bottom: 1px solid transparent;
}

.fecx .tm-recent .item a:hover {
  border-bottom-color: var(--accent);
  color: var(--accent-ink);
}

.fecx .tm-card-foot {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  padding-top: 4px;
}

.fecx .tm-card-foot a {
  font-size: 12px;
  font-family: var(--mono);
  letter-spacing: 0.04em;
  color: var(--ink-3);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  border-radius: 999px;
  border: 1px solid var(--rule);
  background: var(--bg);
}

.fecx .tm-card-foot a:hover {
  color: var(--ink);
  border-color: var(--ink);
}

.fecx .tm-contact {
  padding: 56px 0;
  border-bottom: 1px solid var(--rule);
}

.fecx .tm-contact-inner {
  background: var(--ink);
  color: var(--bg);
  border-radius: var(--radius);
  padding: 48px 56px;
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 40px;
  align-items: center;
}

.fecx .theme-dark .tm-contact-inner {
  background: var(--paper);
  border: 1px solid var(--rule);
  color: var(--ink);
}

.fecx .tm-contact .eyebrow {
  color: var(--ink-4);
}

.fecx .tm-contact h2 {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 36px;
  letter-spacing: -0.02em;
  line-height: 1.05;
  margin: 8px 0 14px;
  color: var(--bg);
}

.fecx .theme-dark .tm-contact h2 {
  color: var(--ink);
}

.fecx .tm-contact p {
  color: var(--ink-4);
  font-size: 15px;
  line-height: 1.55;
  margin: 0;
  max-width: 50ch;
}

.fecx .tm-contact-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.fecx .tm-contact-actions .btn {
  justify-content: center;
  padding: 14px 22px;
}

.fecx .tm-contact-actions .btn-primary {
  background: var(--accent);
  color: white;
  border: none;
  font-family: var(--mono);
  letter-spacing: 0.04em;
  font-size: 13px;
  font-weight: 500;
}

.fecx .tm-contact-actions .btn-primary:hover {
  background: var(--accent-ink);
}

.fecx .tm-contact-actions .btn-ghost {
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: var(--bg);
  font-size: 13px;
}

.fecx .theme-dark .tm-contact-actions .btn-ghost {
  border-color: var(--rule);
  color: var(--ink);
}

@media (max-width: 1000px) {
  .fecx .tm-hero-grid {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .fecx .tm-principles-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .fecx .tm-principle {
    padding: 24px !important;
    border-right: none !important;
    border-bottom: 1px solid var(--rule-2);
  }

  .fecx .tm-grid {
    grid-template-columns: 1fr;
  }

  .fecx .tm-contact-inner {
    grid-template-columns: 1fr;
    padding: 32px;
  }

}

@media (max-width: 640px) {
  .fecx .tm-principles-grid {
    grid-template-columns: 1fr;
  }

  .fecx .tm-card {
    grid-template-columns: 72px 1fr;
    gap: 16px;
    padding: 20px;
  }

  .fecx .tm-avatar {
    width: 72px;
    height: 72px;
  }

  .fecx .tm-stats {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .fecx .tm-stats .stat:nth-child(n+2) {
    border-left: none;
    padding-left: 0;
  }

  .fecx .tm-recent .item {
    gap: 8px;
  }

}


/* Photo avatar override.
   When .tm-avatar has the --photo modifier (real avatar_url in DB), the
   generative pseudo-elements (radial gradient backdrop + initials head)
   would render UNDER the photo. Hide them, and make the inner <img>
   fill the avatar box and crop cleanly. */
.fecx .tm-avatar--photo::before,
.fecx .tm-avatar--photo::after {
  display: none;
}

.fecx .tm-avatar--photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ========================================================================
   FEC V2.1 — Single Author Profile page styles (.au-* family)
   Ported from Author_Profile_bundle.html mockup. All selectors are
   .fecx-scoped so the rules stay inert outside the author page.
   ======================================================================== */

.fecx .au-hero {
  padding: 28px 0 36px;
  border-bottom: 1px solid var(--rule);
}

.fecx .au-hero-card {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 28px 32px;
  display: grid;
  grid-template-columns: 130px 1fr auto;
  gap: 32px;
  align-items: center;
}

.fecx .au-avatar {
  width: 130px;
  height: 130px;
  border-radius: var(--radius);
  position: relative;
  overflow: hidden;
  border: 1px solid var(--rule);
}

.fecx .au-avatar::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 40% 28%, hsla(var(--avatar-hue, 220), 35%, 88%, 0.95) 0%,
                                       hsla(var(--avatar-hue, 220), 30%, 78%, 0.7)  35%,
                                       hsla(var(--avatar-hue, 220), 30%, 65%, 0.5)  70%);
}

.fecx .au-avatar::after {
  content: "";
  position: absolute;
  width: 76px;
  height: 76px;
  border-radius: 50%;
  background: hsla(var(--avatar-hue, 220), 35%, 65%, 0.7);
  left: 50%;
  bottom: -18px;
  transform: translateX(-50%);
}

.fecx .au-avatar .head {
  position: absolute;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: hsla(var(--avatar-hue, 220), 40%, 78%, 0.95);
  border: 1.5px solid hsla(var(--avatar-hue, 220), 35%, 60%, 0.5);
  left: 50%;
  top: 22px;
  transform: translateX(-50%);
  z-index: 1;
}

.fecx .au-avatar .initials {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-family: var(--serif);
  font-weight: 700;
  font-size: 32px;
  color: hsla(var(--avatar-hue, 220), 50%, 25%, 0.85);
  z-index: 2;
}

.fecx .au-hero-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}

.fecx .au-name {
  font-family: var(--serif);
  font-weight: 700;
  font-size: clamp(28px, 3.4vw, 38px);
  line-height: 1;
  letter-spacing: -0.02em;
  margin: 0;
}

.fecx .au-role {
  font-size: 15px;
  color: var(--ink-2);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.fecx .au-role .div {
  color: var(--ink-4);
}

.fecx .au-role .sub {
  color: var(--ink-3);
}

.fecx .au-tagline {
  font-family: var(--serif);
  font-style: italic;
  font-size: 15px;
  line-height: 1.4;
  color: var(--accent-ink);
  padding-left: 12px;
  border-left: 2px solid var(--accent);
  margin: 8px 0 4px;
  max-width: 56ch;
}

.fecx .theme-dark .au-tagline {
  color: var(--accent);
}

.fecx .au-meta-row {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--ink-3);
  margin-top: 8px;
}

.fecx .au-meta-row b {
  color: var(--ink-2);
  font-weight: 600;
}

.fecx .au-hero-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: flex-end;
}

.fecx .au-hero-actions .btn {
  white-space: nowrap;
}

.fecx .au-stats-strip {
  margin-top: 18px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  background: var(--paper);
  overflow: hidden;
}

.fecx .au-stats-strip .stat {
  padding: 18px 22px;
  border-right: 1px solid var(--rule-2);
}

.fecx .au-stats-strip .stat:last-child {
  border-right: none;
}

.fecx .au-stats-strip .num {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 28px;
  letter-spacing: -0.02em;
  color: var(--ink);
  line-height: 1;
}

.fecx .au-stats-strip .lbl {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-top: 6px;
}

.fecx .au-main {
  padding: 32px 0 48px;
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 48px;
  align-items: start;
}

.fecx .au-bio-card {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 24px 28px;
  margin-bottom: 24px;
}

.fecx .au-bio-card h3 {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin: 0 0 12px;
  font-weight: 600;
}

.fecx .au-bio-card p {
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink-2);
  margin: 0;
  max-width: 72ch;
}

.fecx .au-creds {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 20px 28px;
  margin-bottom: 28px;
}

.fecx .au-creds .heading {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-bottom: 12px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.fecx .au-creds .heading .verified {
  font-family: var(--mono);
  font-size: 10px;
  background: var(--verified-soft);
  color: var(--verified);
  padding: 3px 8px;
  border-radius: 999px;
  letter-spacing: 0.06em;
}

.fecx .au-creds ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.fecx .au-creds li {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 18px;
  padding: 10px 0;
  border-top: 1px solid var(--rule-2);
  font-size: 14px;
}

.fecx .au-creds li:first-child {
  border-top: none;
  padding-top: 0;
}

.fecx .au-creds .t {
  font-weight: 600;
  color: var(--ink);
}

.fecx .au-creds .d {
  color: var(--ink-3);
  line-height: 1.5;
}

.fecx .au-tabs {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 0;
  border-bottom: 1px solid var(--rule-2);
  flex-wrap: wrap;
}

.fecx .au-tabs .tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border-radius: 999px;
  background: transparent;
  border: 1px solid transparent;
  font-size: 14px;
  color: var(--ink-2);
  cursor: pointer;
}

.fecx .au-tabs .tab:hover {
  color: var(--ink);
}

.fecx .au-tabs .tab.active {
  background: var(--ink);
  color: var(--bg);
  border-color: var(--ink);
}

.fecx .au-tabs .tab .count {
  font-family: var(--mono);
  font-size: 10px;
  opacity: 0.7;
}

.fecx .au-tab-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 0 18px;
  flex-wrap: wrap;
}

.fecx .au-tab-toolbar .sub-chips {
  display: flex;
  gap: 6px;
}

.fecx .au-tab-toolbar .sub-chips .chip {
  background: var(--paper);
  font-size: 12px;
  padding: 5px 12px;
}

.fecx .au-tab-toolbar .sub-chips .chip.active {
  background: var(--ink);
  color: var(--bg);
  border-color: var(--ink);
}

.fecx .au-tab-toolbar .total {
  margin-left: auto;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--ink-3);
}

.fecx .au-list {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  overflow: hidden;
}

.fecx .au-row {
  display: grid;
  grid-template-columns: 38px 1fr auto auto auto auto;
  gap: 16px;
  align-items: center;
  padding: 14px 18px;
  border-bottom: 1px solid var(--rule-2);
  font-size: 13px;
  transition: background 0.1s ease;
}

.fecx .au-row:last-child {
  border-bottom: none;
}

.fecx .au-row:hover {
  background: var(--bg);
}

.fecx .au-row.expired {
  opacity: 0.65;
}

.fecx .au-row .casino-chip {
  width: 36px;
  height: 36px;
}

.fecx .au-row .main {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.fecx .au-row .main .top {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}

.fecx .au-row .main .casino {
  font-weight: 600;
  color: var(--ink);
  font-size: 14px;
}

.fecx .au-row .main .id {
  font-family: var(--mono);
  font-size: 10px;
  color: var(--ink-4);
  letter-spacing: 0.04em;
  background: var(--bg-2);
  padding: 2px 6px;
  border-radius: 4px;
}

.fecx .au-row .main .sub {
  font-size: 12px;
  color: var(--ink-3);
}

.fecx .au-row .amount {
  font-family: var(--mono);
  font-weight: 700;
  font-size: 14px;
  color: var(--ink);
  white-space: nowrap;
  text-align: right;
  min-width: 90px;
}

.fecx .au-row .wager {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--ink-2);
  white-space: nowrap;
  min-width: 80px;
  text-align: right;
}

.fecx .au-row .fx {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--ink-3);
  letter-spacing: 0.04em;
  white-space: nowrap;
  min-width: 90px;
  text-align: right;
}

.fecx .au-row .fx b.yes {
  color: var(--verified);
  font-weight: 700;
}

.fecx .au-row .fx b.no {
  color: var(--ink-4);
  font-weight: 500;
}

.fecx .au-row .status {
  min-width: 90px;
  text-align: right;
}

.fecx .au-row .status .tag-active {
  background: var(--verified-soft);
  color: var(--verified);
}

.fecx .au-row .meta-row {
  grid-column: 2 / -1;
  display: flex;
  gap: 14px;
  font-family: var(--mono);
  font-size: 10px;
  color: var(--ink-4);
  letter-spacing: 0.04em;
  margin-top: 4px;
}

.fecx .au-sidebar {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.fecx .au-side-card {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 18px 22px;
}

.fecx .au-side-card h4 {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-3);
  font-weight: 600;
  margin: 0 0 12px;
}

.fecx .au-side-card .row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 6px 0;
  font-size: 13px;
  border-bottom: 1px solid var(--rule-2);
}

.fecx .au-side-card .row:last-child {
  border-bottom: none;
}

.fecx .au-side-card .row .k {
  color: var(--ink-3);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.04em;
}

.fecx .au-side-card .row .v {
  color: var(--ink);
  font-weight: 500;
  text-align: right;
}

.fecx .au-expertise {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.fecx .au-expertise .item {
  font-size: 12px;
  padding: 4px 10px;
  background: var(--bg-2);
  border: 1px solid var(--rule-2);
  border-radius: 999px;
  color: var(--ink-2);
}

.fecx .au-side-card .social-row {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.fecx .au-side-card .social-row a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 8px;
  font-size: 13px;
  color: var(--ink-2);
  background: var(--bg-2);
  border: 1px solid var(--rule-2);
}

.fecx .au-side-card .social-row a:hover {
  border-color: var(--accent);
  color: var(--accent-ink);
}

.fecx .au-side-card .social-row .ico {
  width: 22px;
  height: 22px;
  border-radius: 6px;
  background: var(--paper);
  display: grid;
  place-items: center;
  border: 1px solid var(--rule);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  color: var(--ink-2);
}

.fecx .au-side-cta {
  background: var(--ink);
  color: var(--bg);
  padding: 20px 22px;
  border-radius: var(--radius);
}

.fecx .au-side-cta h4 {
  font-family: var(--serif);
  font-weight: 700;
  font-size: 16px;
  line-height: 1.2;
  margin: 0 0 6px;
  color: var(--bg);
}

.fecx .au-side-cta p {
  color: var(--ink-4);
  margin: 0 0 12px;
  font-size: 13px;
  line-height: 1.5;
}

.fecx .au-side-cta .btn {
  background: var(--accent);
  color: white;
  border: none;
  padding: 10px 16px;
  font-size: 13px;
  width: 100%;
  justify-content: center;
}

.fecx .au-side-cta .btn:hover {
  background: var(--accent-ink);
}

@media (max-width: 1000px) {
  .fecx .au-hero-card {
    grid-template-columns: 100px 1fr;
    gap: 20px;
  }

  .fecx .au-hero-actions {
    grid-column: 1 / -1;
    flex-direction: row;
    align-items: stretch;
  }

  .fecx .au-avatar {
    width: 100px;
    height: 100px;
  }

  .fecx .au-stats-strip {
    grid-template-columns: repeat(2, 1fr);
  }

  .fecx .au-stats-strip .stat:nth-child(2) {
    border-right: none;
  }

  .fecx .au-stats-strip .stat:nth-child(-n+2) {
    border-bottom: 1px solid var(--rule-2);
  }

  .fecx .au-main {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .fecx .au-row {
    grid-template-columns: 38px 1fr auto;
    gap: 12px;
  }

  .fecx .au-row .wager, .fecx .au-row .fx {
    display: none;
  }

}


/* FEC V2.1 additions to the mockup port:
   - au-row is rendered as <a> in our template (not <div>) so the whole row
     is a click target. The base au-row rule from the mockup doesn't reset
     the default <a> styles, so the link defaults (underline + accent color)
     would bleed through. These two lines neutralise that without touching
     the visual design.
   - au-avatar--photo: hide the generative pseudo-elements + head/initials
     spans when an avatar_url is set, and make the inner <img> fill the
     square box with object-fit:cover. */
.fecx .au-row {
  color: inherit;
  text-decoration: none;
}

.fecx .au-avatar--photo::before,
.fecx .au-avatar--photo::after {
  display: none;
}

.fecx .au-avatar--photo .head,
.fecx .au-avatar--photo .initials {
  display: none;
}

.fecx .au-avatar--photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* ============================================================================
   au-* — Single Author profile pagination
   Joomla 2.5 JPagination default chrome (used by /authors/<slug> bonuses tab).

   Emitted markup (no class on <ul>, .pagenav on inner a/span):
     .au-bonuses__pagination > ul > li[.pagination-(start|prev|next|end)]?
       > (a|span).pagenav
   Conventions:
     - current page  = bare <li> + <span class="pagenav">
     - disabled nav  = <li class="pagination-*"> + <span class="pagenav">
     - clickable     = <li> or <li class="pagination-*"> + <a class="pagenav">
   ============================================================================ */
.au-bonuses__pagination {
  margin-top: 24px;
}

.au-bonuses__pagination ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: center;
  align-items: center;
}

.au-bonuses__pagination li {
  display: inline-flex;
  margin: 0;
  padding: 0;
}

.au-bonuses__pagination .pagenav {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  height: 36px;
  padding: 0 12px;
  border: 1px solid var(--line, #e7e3da);
  border-radius: 8px;
  background: #fff;
  color: var(--ink-1, #1c1f24);
  font-family: var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-decoration: none;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
  box-sizing: border-box;
}

.au-bonuses__pagination a.pagenav:hover {
  background: var(--bg-2, #f5f1e8);
  border-color: var(--ink-1, #1c1f24);
}

/* Current page: <li> senza classi .pagination-* + <span class="pagenav"> */
.au-bonuses__pagination li:not(.pagination-start):not(.pagination-prev):not(.pagination-next):not(.pagination-end) > span.pagenav {
  background: var(--ink-1, #1c1f24);
  color: #fff;
  border-color: var(--ink-1, #1c1f24);
  cursor: default;
}

/* Disabled nav controls (Start/Prev a pagina 1, Next/End all'ultima) */
.au-bonuses__pagination li.pagination-start > span.pagenav,
.au-bonuses__pagination li.pagination-prev > span.pagenav,
.au-bonuses__pagination li.pagination-next > span.pagenav,
.au-bonuses__pagination li.pagination-end > span.pagenav {
  color: var(--ink-3, #9ca3af);
  background: transparent;
  border-color: var(--line, #ede9de);
  cursor: default;
}

/* Responsive: su mobile compatta gap + nasconde Start/End se troppo stretto */
@media (max-width: 480px) {
  .au-bonuses__pagination ul {
    gap: 4px;
  }
  .au-bonuses__pagination .pagenav {
    min-width: 32px;
    height: 32px;
    padding: 0 8px;
    font-size: 11px;
  }
}

/* ============================================================================
 * FEC V2.1 — Similar offers cards: match-label pill (.fec-similar__*)
 * ----------------------------------------------------------------------------
 * fec_render_similar_offers() emits a BEM wrapper around each .hub-bonus card:
 *
 *   <div class="fec-similar__card">
 *     <div class="fec-similar__tag fec-similar__tag--MODIFIER">Label</div>
 *     <div class="hub-bonus">... shared card markup ...</div>
 *   </div>
 *
 * The match-label is a SIBLING of .hub-bonus inside a fec-similar wrapper —
 * not a child of .hub-bonus as the original mockup expected. This keeps the
 * shared .hub-bonus card clean (it is reused across the hub, casino page,
 * and details view) and isolates the cross-sell decoration in its own scope.
 *
 * MODIFIERS (built in lib L4293 from $label via str_replace + preg_replace):
 *   --closestmatch       "Closest match"     top match, strong verified
 *   --lowerwager         "Lower wager"       trade-off positive
 *   --highercap          "Higher cap"        trade-off positive
 *   --cashable           "Cashable"          trade-off positive
 *   --higheryesrate      "Higher Yes-rate"   trade-off positive
 *   --alternativepick    "Alternative pick"  fallback, muted
 *
 * Scoped to .fecx .bd-related — these cards only appear in the bonus-detail
 * "Similar offers from other casinos" section.
 * ============================================================================ */

.fecx .bd-related .fec-similar__card {
  position: relative;
}

.fecx .bd-related .fec-similar__tag {
  position: absolute;
  top: -1px;
  left: 16px;
  transform: translateY(-50%);
  z-index: 2;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: var(--paper);
  border: 1px solid var(--rule);
  padding: 3px 10px;
  border-radius: 999px;
  font-weight: 600;
  color: var(--ink-3);
  white-space: nowrap;
}

/* Top match — strongest visual, solid verified-soft pill */
.fecx .bd-related .fec-similar__tag--closestmatch {
  color: var(--verified);
  background: var(--verified-soft);
  border-color: rgba(28, 122, 74, 0.4);
}

/* Trade-off positives — verified outline, paper bg (subtler than closest) */
.fecx .bd-related .fec-similar__tag--lowerwager,
.fecx .bd-related .fec-similar__tag--highercap,
.fecx .bd-related .fec-similar__tag--cashable,
.fecx .bd-related .fec-similar__tag--higheryesrate {
  color: var(--verified);
  border-color: rgba(28, 122, 74, 0.4);
}

/* Fallback — muted (already covered by base color: ink-3, kept explicit
   to document intent and resist later refactors of the base rule) */
.fecx .bd-related .fec-similar__tag--alternativepick {
  color: var(--ink-3);
}

/* ============================================================================
 * FEC V2.1 — Tournaments page (.tn-* family)
 *
 * Appended for the com_tournaments view=show migration. All selectors are
 * scoped under .fecx so the rules stay inert on every non-fecx page.
 *
 * Notes:
 *  - `.live-dot` + `@keyframes live-pulse` are emitted as part of this block.
 *    If either already exists elsewhere in this stylesheet from an earlier
 *    section, the duplicate is harmless (identical declarations; last-write
 *    wins). Safe to delete this first block of two rules if you confirm a
 *    pre-existing definition.
 *  - `.tn-filter` is `position: sticky; top: 60px;` — assumes the global
 *    .fec-topbar height stays at ~60px. If the topbar grows in a future
 *    redesign, bump the `top` value accordingly.
 *  - Mobile breakpoint (max-width: 900px): hides Prize + Start columns to
 *    keep the table scannable. Pager + filter row remain visible.
 *  - .bd-faq and .hub-pager are reused from earlier sections of this
 *    stylesheet (defined for the bonus details + bonus hub pages); no new
 *    declarations needed here.
 * ========================================================================== */

.fecx .live-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: #d33; display: inline-block;
  box-shadow: 0 0 0 0 rgba(221,51,51,0.6);
  animation: live-pulse 2s infinite;
}

@keyframes live-pulse {
  0% { box-shadow: 0 0 0 0 rgba(221,51,51,0.5); }
  70% { box-shadow: 0 0 0 8px rgba(221,51,51,0); }
  100% { box-shadow: 0 0 0 0 rgba(221,51,51,0); }
}

/* ====================================================================
   TOURNAMENTS PAGE
   ==================================================================== */

/* ---- Header card ---- */

.fecx .tn-head { padding: 20px 0 24px; }

.fecx .tn-head-card {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 26px 30px;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 28px;
  align-items: start;
}

.fecx .tn-head-left { display: flex; flex-direction: column; gap: 8px; }

.fecx .tn-head-title {
  font-family: var(--serif); font-weight: 700;
  font-size: clamp(28px, 3.4vw, 38px);
  line-height: 1.05; letter-spacing: -0.025em;
  margin: 6px 0 4px;
}

.fecx .tn-head-intro {
  color: var(--ink-2); font-size: 15px;
  max-width: 60ch; margin: 0 0 12px;
}

.fecx .tn-head-pills { display: flex; flex-wrap: wrap; gap: 6px; }

.fecx .tn-trust-pill {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 11px; border-radius: 999px;
  background: var(--bg-2);
  border: 1px solid var(--rule-2);
  font-size: 12px; color: var(--ink-2);
}

.fecx .tn-trust-pill::before {
  content: "✓"; color: var(--verified); font-weight: 700; font-size: 11px;
}

/* Right: live status panel */

.fecx .tn-status {
  display: flex; flex-direction: column; gap: 8px;
  align-items: flex-end;
  min-width: 200px;
}

.fecx .tn-live {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: #d33; font-weight: 700;
  padding: 6px 12px;
  background: rgba(221, 51, 51, 0.08);
  border-radius: 999px;
  border: 1px solid rgba(221, 51, 51, 0.2);
}

.fecx .tn-monitoring {
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
  display: flex; align-items: center; gap: 6px;
}

.fecx .tn-monitoring b { color: var(--ink); font-weight: 700; }

.fecx .tn-update-row {
  display: flex; gap: 8px;
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
}

.fecx .tn-update-row .pill {
  padding: 5px 9px;
  border: 1px solid var(--rule);
  border-radius: 999px;
  background: var(--bg);
}

.fecx .tn-update-row .pill b { color: var(--ink); font-weight: 700; }

.fecx .tn-update-row .pill.live {
  border-color: var(--verified);
  color: var(--verified);
}

/* Editor tip */

.fecx .tn-tip {
  margin-top: 18px;
  background: var(--accent-soft);
  border-radius: var(--radius-sm);
  padding: 12px 16px;
  font-size: 13px; color: var(--accent-ink);
}

.fecx .tn-tip b { font-weight: 600; }

.fecx .tn-tip em { font-style: italic; }

/* ---- Filter bar ---- */

.fecx .tn-filter {
  position: sticky; top: 60px; z-index: 5;
  display: flex; align-items: center; gap: 10px;
  padding: 14px 18px;
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  margin-bottom: 18px;
  flex-wrap: wrap;
}

.fecx .tn-filter .search-block {
  display: flex; align-items: center; gap: 10px; flex: 1; min-width: 260px;
}

.fecx .tn-filter .search-block input {
  flex: 1;
  border: 1px solid var(--rule);
  border-radius: 999px;
  padding: 9px 14px 9px 36px;
  background: var(--bg);
  font: inherit; color: var(--ink);
  outline: none;
  position: relative;
}

.fecx .tn-filter .search-wrap {
  position: relative; flex: 1; min-width: 200px;
  display: flex; align-items: center;
}

.fecx .tn-filter .search-wrap svg { position: absolute; left: 12px; color: var(--ink-3); pointer-events: none; }

.fecx .tn-filter .search-wrap input {
  width: 100%;
  border: 1px solid var(--rule);
  border-radius: 999px;
  padding: 9px 14px 9px 36px;
  background: var(--bg);
  font: inherit; color: var(--ink);
  outline: none;
}

.fecx .tn-filter .search-lbl {
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3); font-weight: 500;
}

.fecx .tn-filter .filter-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 14px;
  border-radius: 999px;
  background: var(--bg);
  border: 1px solid var(--rule);
  font-size: 13px; color: var(--ink);
}

.fecx .tn-filter .filter-btn:hover { border-color: var(--ink); }

.fecx .tn-filter .filter-btn .badge {
  font-family: var(--mono); font-size: 10px;
  background: var(--ink); color: var(--bg);
  padding: 1px 7px; border-radius: 999px;
  font-weight: 600;
}

.fecx .tn-filter .sort-select {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  border-radius: 999px;
  background: var(--ink); color: var(--bg);
  border: none;
  font-size: 13px;
  font-weight: 500;
}

.fecx .tn-filter .sort-select select {
  background: transparent; border: none;
  color: inherit; font: inherit;
  outline: none;
  appearance: none;
  -webkit-appearance: none;
  padding-right: 4px;
}

.fecx .tn-filter .sort-select select option { color: var(--ink); background: var(--bg); }

/* Quick chips row below filter */

.fecx .tn-quickchips {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-bottom: 16px;
  padding: 0 4px;
}

.fecx .tn-quickchips .chip { background: var(--paper); }

.fecx .tn-quickchips .chip.active { background: var(--ink); color: var(--bg); border-color: var(--ink); }

/* ---- Table ---- */

.fecx .tn-table-wrap {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  overflow: hidden;
}

.fecx .tn-table { width: 100%; border-collapse: collapse; font-size: 13px; }

.fecx .tn-table thead th {
  text-align: left;
  font-family: var(--mono); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
  padding: 12px 16px;
  background: var(--bg-2);
  border-bottom: 1px solid var(--rule);
  font-weight: 600;
}

.fecx .tn-table tbody td {
  padding: 14px 16px;
  border-bottom: 1px solid var(--rule-2);
  vertical-align: middle;
}

.fecx .tn-table tbody tr:last-child td { border-bottom: none; }

.fecx .tn-table tbody tr:hover { background: var(--bg); }

.fecx .tn-table tbody tr.unavailable { opacity: 0.6; }

.fecx .tn-table tbody tr.featured { background: linear-gradient(90deg, var(--accent-soft) 0%, transparent 40%); }

.fecx .tn-table tbody tr.featured:hover { background: linear-gradient(90deg, var(--accent-soft) 0%, var(--bg) 60%); }

.fecx .tn-tname {
  display: flex; flex-direction: column; gap: 3px;
  min-width: 200px;
}

.fecx .tn-tname .n {
  font-weight: 600; font-size: 14px; color: var(--ink);
  display: flex; align-items: center; gap: 8px;
}

.fecx .tn-tname .star { color: var(--accent); font-size: 12px; }

.fecx .tn-tname .sub {
  font-size: 12px; color: var(--ink-3);
  display: flex; align-items: center; gap: 6px;
}

.fecx .tn-tname .sub a {
  color: var(--accent);
  border-bottom: 1px dotted var(--accent);
  padding-bottom: 1px;
}

.fecx .tn-tname .sub .arrow { color: var(--ink-4); }

.fecx .tn-amount {
  font-family: var(--mono); font-size: 13px;
  color: var(--ink); font-weight: 600;
  white-space: nowrap;
}

.fecx .tn-amount.free {
  color: var(--verified);
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: 0.06em;
}

.fecx .tn-amount.zero { color: var(--ink-4); font-weight: 500; }

.fecx .tn-prize {
  font-family: var(--mono); font-size: 14px;
  color: var(--ink); font-weight: 700;
  white-space: nowrap;
}

.fecx .tn-prize.zero { color: var(--ink-4); font-weight: 500; font-size: 12px; }

.fecx .tn-state {
  font-family: var(--mono); font-size: 11px;
  color: var(--ink-3); letter-spacing: 0.04em;
  display: inline-flex; align-items: center; gap: 6px;
  white-space: nowrap;
}

.fecx .tn-state .live-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--verified);
  box-shadow: 0 0 0 0 rgba(28, 122, 74, 0.6);
  animation: live-pulse 2s infinite;
}

.fecx .tn-state.upcoming::before {
  content: "▶"; color: var(--ink-4); font-size: 9px;
}

.fecx .tn-end {
  font-family: var(--mono); font-size: 12px;
  color: var(--ink-2);
  display: flex; flex-direction: column; gap: 2px;
}

.fecx .tn-end.soon { color: var(--warn); font-weight: 600; }

.fecx .tn-end.critical { color: var(--danger); font-weight: 700; }

.fecx .tn-end .when {
  font-size: 10px; color: var(--ink-3);
  letter-spacing: 0.04em; text-transform: uppercase;
}

.fecx .tn-cta { text-align: right; min-width: 140px; }

.fecx .tn-join-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 16px;
  background: var(--ink); color: var(--bg);
  border-radius: 999px; border: none;
  font-size: 13px; font-weight: 500;
}

.fecx .tn-join-btn:hover { background: var(--ink-2); }

.fecx .tn-unavail {
  display: inline-flex; flex-direction: column; align-items: flex-end; gap: 3px;
}

.fecx .tn-unavail .btn-disabled {
  padding: 7px 16px;
  background: var(--bg-2);
  color: var(--ink-4);
  border-radius: 999px;
  border: 1px solid var(--rule);
  font-size: 13px;
  cursor: not-allowed;
}

.fecx .tn-unavail .why {
  font-family: var(--mono); font-size: 10px;
  color: var(--warn); letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* ---- How it works ---- */

.fecx .tn-howitworks {
  padding: 56px 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  background: var(--bg-2);
}

.fecx .tn-howitworks-grid {
  display: grid;
  grid-template-columns: 1fr 1.3fr;
  gap: 48px;
  align-items: start;
}

.fecx .tn-howitworks h2 {
  font-family: var(--serif); font-weight: 700;
  font-size: 32px; letter-spacing: -0.02em;
  line-height: 1.05;
  margin: 8px 0 18px;
}

.fecx .tn-howitworks p {
  font-size: 14px; line-height: 1.6;
  color: var(--ink-2);
  margin: 0 0 14px;
  max-width: 56ch;
}

.fecx .tn-howitworks-points {
  display: grid; gap: 0;
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  background: var(--paper);
  overflow: hidden;
}

.fecx .tn-howitworks-points .point {
  padding: 18px 22px;
  border-bottom: 1px solid var(--rule-2);
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 18px;
  align-items: start;
}

.fecx .tn-howitworks-points .point:last-child { border-bottom: none; }

.fecx .tn-howitworks-points .point .t {
  font-family: var(--serif); font-weight: 700;
  font-size: 16px; letter-spacing: -0.01em;
  color: var(--accent);
}

.fecx .tn-howitworks-points .point .d {
  font-size: 13px; line-height: 1.5; color: var(--ink-2);
}

/* ---- FAQ ---- */

.fecx .tn-faq-section { padding: 56px 0; }

.fecx .tn-faq-section h2 {
  font-family: var(--serif); font-weight: 700;
  font-size: 28px; letter-spacing: -0.02em;
  margin: 8px 0 6px;
}

.fecx .tn-faq-section .sub { color: var(--ink-3); font-size: 14px; margin: 0 0 20px; max-width: 60ch; }

/* ---- Filter drawer ---- */

.fecx .tn-drawer-overlay {
  position: fixed; inset: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 90;
  opacity: 0; pointer-events: none;
  transition: opacity 0.18s ease;
}

.fecx .tn-drawer-overlay.open { opacity: 1; pointer-events: all; }

.fecx .tn-drawer {
  position: fixed; top: 0; right: 0; bottom: 0;
  width: 380px;
  background: var(--bg);
  z-index: 91;
  transform: translateX(100%);
  transition: transform 0.22s cubic-bezier(0.4, 0, 0.2, 1);
  display: flex; flex-direction: column;
  border-left: 1px solid var(--rule);
}

.fecx .tn-drawer.open { transform: translateX(0); }

.fecx .tn-drawer-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 24px;
  border-bottom: 1px solid var(--rule);
}

.fecx .tn-drawer-head h3 {
  font-family: var(--serif); font-size: 20px; font-weight: 700;
  margin: 0; letter-spacing: -0.01em;
}

.fecx .tn-drawer-head .close {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  border-radius: 50%;
  background: transparent;
  border: none; color: var(--ink-2);
  cursor: pointer;
}

.fecx .tn-drawer-head .close:hover { background: var(--bg-2); color: var(--ink); }

.fecx .tn-drawer-body {
  flex: 1; overflow-y: auto;
  padding: 24px;
  display: flex; flex-direction: column; gap: 24px;
}

.fecx .tn-drawer-group h4 {
  font-family: var(--mono); font-size: 11px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-3);
  margin: 0 0 12px;
  font-weight: 600;
}

.fecx .tn-drawer-group label {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 0;
  font-size: 14px;
  color: var(--ink-2);
  cursor: pointer;
}

.fecx .tn-drawer-group label:hover { color: var(--ink); }

.fecx .tn-drawer-group input[type="checkbox"] {
  width: 16px; height: 16px;
  accent-color: var(--accent);
}

.fecx .tn-drawer-group input[type="number"],
.fecx .tn-drawer-group select {
  width: 100%;
  padding: 9px 14px;
  border: 1px solid var(--rule);
  border-radius: 8px;
  background: var(--paper);
  font: inherit; color: var(--ink);
  outline: none;
}

.fecx .tn-drawer-group .hint {
  font-size: 12px; color: var(--ink-3); margin-top: 6px;
}

.fecx .tn-drawer-foot {
  display: flex; gap: 10px;
  padding: 16px 24px;
  border-top: 1px solid var(--rule);
  background: var(--paper);
}

.fecx .tn-drawer-foot .btn { flex: 1; justify-content: center; }

@media (max-width: 900px) {
  .fecx .tn-head-card { grid-template-columns: 1fr; }
  .fecx .tn-status { align-items: flex-start; }
  .fecx .tn-howitworks-grid { grid-template-columns: 1fr; gap: 24px; }
  .fecx .tn-howitworks-points .point { grid-template-columns: 1fr; gap: 6px; }
  .fecx .tn-table thead th:nth-child(3),
.fecx .tn-table tbody td:nth-child(3),
.fecx .tn-table thead th:nth-child(4),
.fecx .tn-table tbody td:nth-child(4) { display: none; }
  .fecx .tn-drawer { width: 100%; }
}

/* ---- Extras: classes used by the PHP view that the mockup does NOT
       declare separately (because the mockup either inlined the styles
       or did not have these UI states). ---- */

/* Header subtitle when paginated: "— Page 2 of 5" */
.fecx .tn-head-page {
  font-family: var(--mono);
  font-size: 0.55em;
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--ink-3);
  margin-left: 6px;
  vertical-align: middle;
}

/* FAQ "Open all / Close all" controls row */
.fecx .tn-faq-controls {
  display: flex;
  gap: 8px;
  margin-bottom: 16px;
}

/* Empty state (no rows after filter/search) */
.fecx .tn-zero {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 36px 28px;
  text-align: center;
  margin: 12px 0 20px;
}
.fecx .tn-zero__title {
  font-family: var(--serif); font-weight: 700;
  font-size: 22px; letter-spacing: -0.01em;
  margin: 0 0 8px; color: var(--ink);
}
.fecx .tn-zero__text {
  color: var(--ink-2); font-size: 14px;
  max-width: 48ch; margin: 0 auto 16px;
}
.fecx .tn-zero__actions {
  display: inline-flex; gap: 10px; flex-wrap: wrap; justify-content: center;
}

/* ============================================================================
 * FEC V2.1 — Tournaments page (fix 02: fixed-width scrollable table + affordance)
 *
 * Supersedes fix 01. Two changes:
 *
 *  1) Table layout. Switch from "hide Prize + Start columns at < 900px"
 *     to "fixed-width table, always scrollable horizontally when the
 *     viewport is narrower than the table". All 6 columns are kept at
 *     every breakpoint, so column proportions stay consistent with
 *     desktop. No information loss, no layout shift across breakpoints.
 *
 *  2) Scroll affordance. A right-edge gradient shadow inside the wrap
 *     tells the user "there is more to the right, swipe / scroll".
 *     Pure CSS, no JS. The shadow is a ::after positioned absolute
 *     against the wrap (which is position: relative); the table scrolls
 *     UNDER the shadow because the wrap is the scroll viewport, not the
 *     table. The shadow is gated by a media query so it only appears at
 *     viewports narrow enough that overflow is plausible.
 *
 * If fix 01 is already deployed in this stylesheet, this block overrides
 * its declarations (same specificity, later cascade wins). Safe to leave
 * fix 01 in place — it's effectively dead but harmless.
 * ========================================================================== */

.fecx .tn-table-wrap {
  position: relative;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}

.fecx .tn-table {
  /* Always wide enough for the 6 columns at their natural proportions.
     At viewports >= ~1180px (typical container width) the wrap matches
     the table width and there's no scroll. Below that, horizontal scroll
     kicks in automatically. */
  min-width: 1100px;
}

/* Cancel the column-hide media query from the base block. We want the
   full 6-column layout at every breakpoint now. */
@media (max-width: 900px) {
  .fecx .tn-table thead th:nth-child(3),
  .fecx .tn-table tbody td:nth-child(3),
  .fecx .tn-table thead th:nth-child(4),
  .fecx .tn-table tbody td:nth-child(4) {
    display: table-cell;
  }
  /* And restore .tn-tname's min-width that fix 01 zeroed out. */
  .fecx .tn-tname {
    min-width: 200px;
  }
}

/* ============================================================================
 * FEC V2.1 — Tournaments page (fix 03: scroll-shadow via background-attachment)
 *
 * Supersedes the ::after pseudo from fix 02. The pseudo approach failed in
 * practice because when an absolutely positioned child sits inside an
 * overflow-scrollable parent, browsers can attach it to the scrollable
 * content box rather than the visible padding box. Scrolling the table
 * dragged the pseudo with it, so the shadow appeared mid-table instead of
 * pinned to the right edge of the viewport.
 *
 * The robust pattern for "shadow stays at the right edge of the scroll
 * viewport" is to paint the shadow as a background layer on the wrap
 * itself, using two stacked gradients with different background-attachment
 * values (Lea Verou, 2012 — https://lea.verou.me/blog/2012/04/background-attachment-local/):
 *
 *  - "Cover" layer: paper-coloured gradient fading to transparent, 40px
 *    at the right edge, attachment: LOCAL — scrolls WITH the table. When
 *    the user reaches the far right of the scroll, this cover slides into
 *    view and masks the shadow underneath.
 *  - "Shadow" layer: soft dark gradient fading to transparent, 24px at
 *    the right edge, attachment: SCROLL (default) — fixed to the wrap's
 *    viewport. Always painted at the right edge of the visible rectangle.
 *  - "Base" solid colour at the bottom of the layer stack so the wrap
 *    keeps its paper background outside the gradient regions.
 *
 * Net effect: shadow visible when there is hidden content to the right;
 * invisible at end-of-scroll (cover masks it), and invisible when the
 * table already fits (no scroll happens, so nothing to indicate).
 *
 * Gated by @media (max-width: 1180px) to keep the desktop appearance
 * untouched. Above that breakpoint the wrap reverts to the simple solid
 * paper background defined in the base block.
 * ========================================================================== */


@media (max-width: 1180px) {
  .fecx .tn-table-wrap {
    /* Layer order (top -> bottom): cover, shadow, base.
       Cover sits on top of shadow so when they overlap at end-of-scroll
       the cover wins and the shadow visually disappears. */
    background:
      linear-gradient(to left, var(--paper) 0%, transparent 60%)
        right top / 40px 100% no-repeat local,
      linear-gradient(to left, rgba(0, 0, 0, 0.14), transparent)
        right top / 28px 100% no-repeat scroll,
      var(--paper);
  }
}

/* ============================================================================
 * FEC V2.1 — Tournaments + .fecx pages (fix 04: pager mobile cleanup)
 *
 * fecv2.css ships a mobile pager compact mode under @media (max-width: 560px):
 *
 *   .fec-pg .pagination li               { display: none }
 *   .fec-pg .pagination li.active,
 *   .fec-pg .pagination li.pagination-next,
 *   .fec-pg .pagination li.pagination-next.disabled { display: inline-flex }
 *   .fec-pg .pagination li.active a      { min-width: auto; padding: 0 14px }
 *   .fec-pg .pagination li.active a:before { content: "Page "; ... }
 *
 * The "Page " prefix only made sense in that compact mode (where every other
 * page number is hidden and the active label needs to read as
 * "Page 1 of N"). On .fecx pages we keep all page numbers visible, so the
 * "Page" label becomes a redundant prefix that also pushes the active
 * button into a wider, squared-corner shape against its round siblings.
 *
 * Fix (scoped to .fecx, fecv2.css untouched, legacy pages unaffected):
 *   - Cancel the ::before content so the active button shows just "1".
 *   - Restore min-width:44px and padding:0 so its box matches the other
 *     pill buttons defined by .fec-pg .pagination a (44x44 round).
 *   - Restore visibility of all <li>: the compact "hide siblings" UX
 *     made sense alongside a "Page N" label, but with just a number on
 *     the active button we want the full pager visible for navigation.
 *
 * Specificity: each rule prepends ".fecx " to the fecv2 selector, so the
 * specificity is exactly +1 class higher (e.g. 0,4,2 vs 0,3,2 for the
 * ::before rule) and wins inside .fecx pages only.
 * ========================================================================== */

@media (max-width: 560px) {
  .fecx .fec-pg .pagination li.active a::before {
    content: none;
  }
  .fecx .fec-pg .pagination li.active a {
    min-width: 44px;
    padding: 0;
  }
  .fecx .fec-pg .pagination li {
    display: inline-flex;
  }
}


/* ============================================================================
 * FEC V2.1 — .fecx pager (fix 07: active button rendering)
 *
 * The rule .fecx .hub-pager .active around L936 of this file applies a
 * background on the <li class="active"> wrapper. The base fec-pg stylesheet
 * (fecv2.css) already paints the inner <a> as a round dark button; the
 * <li>-level background drew a square panel on top of that pill, occluding
 * its round shape. We neutralize the wrapper background here (same
 * specificity 0,3,0 — later in source order wins; no !important required)
 * and move the typography intent to the <a> child where the visible pill
 * actually lives.
 * * Supersedes earlier hack attempts targeting .fec-pg .pagination
 * li.active a (wrong selector for this DOM); those have been removed.
 * ========================================================================== */

.fecx .hub-pager .active {
  background: transparent;
}
.fecx .hub-pager .active a {
  font-weight: 600;
}

/* ============================================================================
 * FEC V2.1 — Tournaments FAQ accordion (fix 08: .bd-faq styling)
 *
 * The .bd-faq markup is rendered correctly with Schema.org FAQPage semantics,
 * but it was left unstyled — questions, answers and chevrons all collapsed
 * into a flat run of paragraphs in the rendered page. The mockup defines the
 * styling under `.bd-faq` (originally part of the bonus-detail page, but the
 * accordion is generic and reused on the tournaments page too).
 *
 * Behavior:
 *  - Each .item is a padded card (bg-2, soft border, small radius)
 *  - .q is the clickable header row with a chevron on the right
 *  - .a is hidden by default (display:none) and revealed by .item.open
 *  - .chev rotates 90deg + accent color on open state
 *  - First item gets `class="item open"` server-side (PHP $i === 0 default),
 *    so it appears expanded on initial render. JS toggles `.open` on click.
 *
 * Selectors are unscoped (.bd-faq) to match the legacy bonus-detail usage
 * exactly. Safe because .bd-faq is a specific enough class name and only
 * appears inside .fecx pages in this build.
 * ========================================================================== */

.bd-faq {
  margin-top: 8px;
}
.bd-faq .item {
  margin-bottom: 10px;
  background: var(--bg-2);
  border: 1px solid var(--rule-2);
  border-radius: var(--radius-sm);
  padding: 0;
  overflow: hidden;
}
.bd-faq .q {
  padding: 14px 18px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  cursor: pointer;
  font-weight: 600;
  font-size: 14px;
  color: var(--ink);
}
.bd-faq .chev {
  color: var(--ink-3);
  transition: transform 0.2s ease;
  font-family: monospace;
  font-size: 14px;
}
.bd-faq .item.open .chev {
  transform: rotate(90deg);
  color: var(--accent);
}
.bd-faq .a {
  display: none;
  padding: 0 18px 16px;
  font-size: 14px;
  color: var(--ink-2);
  line-height: 1.55;
}
.bd-faq .item.open .a {
  display: block;
}

/* ============================================================================
   Slot link styling for bonus specifics card
   Add to the existing details-page stylesheet (fecv2.details.css or wherever
   the .bd-stat-card / .kv styles live). Two classes added: bd-slot-link and
   bd-slot-link-info.
   ============================================================================ */

.bd-stat-card .kv .bd-slot-link {
  color: #0b6b62;
  text-decoration: none;
  font-weight: 600;
  border-bottom: 1px dotted rgba(11, 107, 98, 0.4);
  transition: border-color 0.15s ease, color 0.15s ease;
}

.bd-stat-card .kv .bd-slot-link:hover,
.bd-stat-card .kv .bd-slot-link:focus {
  color: #084e47;
  border-bottom-color: #0b6b62;
}

.bd-stat-card .kv .bd-slot-link-info {
  display: inline-block;
  margin-left: 0.25em;
  font-size: 0.95em;
  color: #0b6b62;
  opacity: 0.7;
  vertical-align: baseline;
  cursor: help;
}

.bd-stat-card .kv .bd-slot-link:hover .bd-slot-link-info,
.bd-stat-card .kv .bd-slot-link:focus .bd-slot-link-info {
  opacity: 1;
}

/* ============================================================
 * FEC v2.1 — SPRINT 2 STYLESHEET BUNDLE
 * ============================================================
 *
 * Single-file bundle merging every sprint-2-only CSS section
 * extracted from fec_template_test.php inline <style>. Intended
 * to be appended to /css/fec-edition.css at sprint 2 deploy.
 *
 * Sections included (in render order):
 *   1. Progressive jackpots table        (cr-jpot-*)
 *   2. Tournaments 3-up card grid        (cr-tourn-*, cr-tournaments)
 *   3. Write-a-review form               (cr-review-write, cr-rw-*)
 *   4. Write-review JS-driven states     (cr-rw-*.is-error/is-loading/
 *                                         is-submitted, cr-rw-error-msg)
 *
 * NOT included (already live in fec-edition.css from sprint 1):
 *   - Withdrawal block (cr-withdrawal-*)
 *   - Warning banner, casino state banner
 *   - Hero, stats strip, sidebar, player reviews
 *   - Base tokens (--bg, --paper, --ink, --verified, etc.)
 *
 * Dependencies on sprint-1 tokens:
 *   --paper, --ink, --verified — these MUST exist in :root
 *   when this file loads. They are defined in fec-edition.css.
 *
 * Scoping:
 *   All selectors live under .fecx (the body class added by the
 *   v2 article view) thanks to fec-edition.css's wrapping. If you
 *   inline this file outside .fecx, prepend ".fecx " to every rule.
 *
 * Source of truth: fec_template_test.php inline <style>.
 * Re-generate by running the inline → bundle pass at sprint close.
 * ============================================================ */



/* ============================================================
   PROGRESSIVE JACKPOTS TABLE
   ============================================================ */
.cr-jpot-table-wrap {
  margin-top: 22px;
  overflow-x: auto;
}
.cr-jpot-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20,17,13,0.10);
  border-radius: 12px;
  overflow: hidden;
}
.cr-jpot-table thead th {
  text-align: left;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(20,17,13,0.55);
  padding: 12px 16px;
  background: rgba(20,17,13,0.03);
  border-bottom: 1px solid rgba(20,17,13,0.08);
}
.cr-jpot-table .cr-jpot-th-amount,
.cr-jpot-table .cr-jpot-th-num    { text-align: right; }
.cr-jpot-table .cr-jpot-th-jindex { text-align: right; min-width: 140px; }

.cr-jpot-table tbody td {
  padding: 14px 16px;
  border-top: 1px solid rgba(20,17,13,0.05);
  vertical-align: middle;
}
.cr-jpot-table tbody tr:first-child td { border-top: none; }

.cr-jpot-game-name {
  font-weight: 700;
  color: #14110d;
  margin-bottom: 3px;
}
.cr-jpot-game-meta {
  font-size: 12px;
  color: rgba(20,17,13,0.55);
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.cr-jpot-sep { opacity: 0.5; }

.cr-jpot-dot {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.cr-jpot-dot--good { background: #1c7a4a; }
.cr-jpot-dot--fair { background: #c4ad7a; }
.cr-jpot-dot--poor { background: #9a2828; }

.cr-jpot-source--local {
  color: #0b6b62;
  font-weight: 600;
}
.cr-jpot-source--pooled {
  color: rgba(20,17,13,0.55);
}

.cr-jpot-amount {
  text-align: right;
  font-weight: 700;
  font-size: 15px;
  color: #14110d;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.cr-jpot-amount--nearavg  { color: #a85a1c; }
.cr-jpot-amount--aboveavg { color: #9a2828; }

.cr-jpot-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  color: rgba(20,17,13,0.75);
  white-space: nowrap;
}

.cr-jpot-jindex-cell {
  display: flex;
  align-items: center;
  gap: 8px;
  justify-content: flex-end;
}
.cr-jpot-jindex-num {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  min-width: 28px;
  text-align: right;
  color: #14110d;
}
.cr-jpot-jindex-bar {
  display: inline-block;
  width: 80px; height: 6px;
  background: rgba(20,17,13,0.08);
  border-radius: 3px;
  overflow: hidden;
  position: relative;
}
.cr-jpot-jindex-bar > span {
  display: block;
  height: 100%;
  background: linear-gradient(to right, #c4ad7a, #1c7a4a);
  border-radius: 3px;
}

.cr-jpot-legend {
  margin-top: 16px;
  display: flex;
  flex-wrap: wrap;
  gap: 28px;
  font-size: 12px;
  color: rgba(20,17,13,0.65);
}
.cr-jpot-legend-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px;
}
.cr-jpot-legend-title {
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 11px;
  color: rgba(20,17,13,0.55);
  margin-right: -4px;
}
.cr-jpot-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.cr-jpot-legend-chip {
  display: inline-block;
  width: 12px; height: 8px;
  border-radius: 2px;
}
.cr-jpot-legend-chip--nearavg  { background: #a85a1c; }
.cr-jpot-legend-chip--aboveavg { background: #9a2828; }

@media (max-width: 780px) {
  .cr-jpot-table-wrap { overflow-x: visible; }
  .cr-jpot-table,
  .cr-jpot-table thead,
  .cr-jpot-table tbody,
  .cr-jpot-table tr,
  .cr-jpot-table td { display: block; width: 100%; }
  .cr-jpot-table thead { display: none; }
  .cr-jpot-table tr {
    border-bottom: 1px solid rgba(20,17,13,0.08);
    padding: 12px 14px;
  }
  .cr-jpot-table tr:last-child { border-bottom: none; }
  .cr-jpot-table tbody td {
    padding: 4px 0;
    border-top: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    text-align: right;
  }
  .cr-jpot-table tbody td.cr-jpot-game {
    display: block;
    text-align: left;
    margin-bottom: 8px;
  }
  .cr-jpot-table tbody td:before {
    content: attr(data-title);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: rgba(20,17,13,0.55);
    margin-right: 12px;
  }
  .cr-jpot-table tbody td.cr-jpot-game:before { display: none; }
}


/* ============================================================
   TOURNAMENTS — 3-up "mini" card grid (sprint 2)
   ============================================================ */
.cr-tournaments { padding: 24px 0; }

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

.cr-tourn-card {
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20,17,13,0.08);
  border-radius: 10px;
  padding: 18px 18px 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* ---- Status pill ---- */
.cr-tourn-status {
  display: inline-block;
  align-self: flex-start;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  line-height: 1.5;
}
.cr-tourn-status--running {
  background: rgba(28,122,74,0.12);
  color: #1c7a4a;
}
.cr-tourn-status--running:before {
  content: '\25CF';
  margin-right: 5px;
}
.cr-tourn-status--imminent {
  background: rgba(168,90,28,0.12);
  color: #a85a1c;
}
.cr-tourn-status--scheduled {
  background: rgba(20,17,13,0.06);
  color: rgba(20,17,13,0.6);
}

/* ---- Tournament name + game ---- */
.cr-tourn-name {
  font-size: 16px;
  font-weight: 800;
  color: #14110d;
  margin: 0;
  line-height: 1.3;
  letter-spacing: -0.005em;
}
.cr-tourn-game {
  font-size: 13px;
  color: rgba(20,17,13,0.6);
  line-height: 1.4;
}
.cr-tourn-game:before {
  content: '\21B3';
  margin-right: 5px;
  color: rgba(20,17,13,0.35);
}

/* ---- Stats: prize + entry, 2-col ---- */
.cr-tourn-stats {
  margin: 4px 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.cr-tourn-stat { margin: 0; }
.cr-tourn-stat dt {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: rgba(20,17,13,0.5);
  font-weight: 700;
  margin: 0 0 3px 0;
}
.cr-tourn-stat dd {
  margin: 0;
  font-size: 14px;
  font-weight: 700;
  color: #14110d;
  font-variant-numeric: tabular-nums;
}

/* ---- Time line (countdown / absolute) ---- */
.cr-tourn-time {
  font-size: 13px;
  color: rgba(20,17,13,0.7);
  padding: 7px 10px;
  background: rgba(20,17,13,0.04);
  border-radius: 6px;
  font-variant-numeric: tabular-nums;
}

/* ---- CTA pinned to bottom of card ---- */
.cr-tourn-cta {
  margin-top: auto;
  padding-top: 4px;
}
.cr-tourn-cta .btn {
  width: 100%;
  justify-content: center;
}
.cr-tourn-cta-arr {
  display: inline-block;
  font-size: 13px;
  margin-left: 4px;
}

/* ---- Mobile <780px: 1-col stack ---- */
@media (max-width: 780px) {
  .cr-tourn-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   WRITE-A-REVIEW FORM — collapsible <details>, CSS-only stars
   ============================================================ */
.cr-review-write { padding: 28px 0; }

/* Collapse machinery */
.cr-rw-details { padding: 0; }
.cr-rw-details > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 4px 0 4px;
  user-select: none;
}
.cr-rw-details > summary::-webkit-details-marker { display: none; }
.cr-rw-summary-text .eyebrow { margin-bottom: 4px; }
.cr-rw-title { margin: 0; }
.cr-rw-summary-arrow {
  font-size: 32px;
  font-weight: 200;
  color: rgba(20,17,13,0.4);
  line-height: 1;
  transition: transform 0.2s ease, background 0.15s, color 0.15s;
  flex-shrink: 0;
}
.cr-rw-summary-teaser {
  margin: 8px 0 0 0;
  font-size: 14px;
  color: rgba(20,17,13,0.6);
  font-weight: 400;
  line-height: 1.5;
}

/* ----- Closed state: card-button vibe (high visibility) ----- */
.cr-rw-details:not([open]) > .cr-rw-summary {
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20,17,13,0.1);
  border-radius: 12px;
  padding: 22px 84px 22px 24px;
  position: relative;
  transition: border-color 0.2s, box-shadow 0.2s, transform 0.1s;
}
.cr-rw-details:not([open]) > .cr-rw-summary:hover {
  border-color: rgba(28,122,74,0.45);
  box-shadow: 0 6px 20px rgba(20,17,13,0.07);
}
.cr-rw-details:not([open]) > .cr-rw-summary:active {
  transform: translateY(1px);
}
.cr-rw-details:not([open]) .cr-rw-summary-text .eyebrow {
  color: #1c7a4a;
}
.cr-rw-details:not([open]) .cr-rw-summary-arrow {
  position: absolute;
  right: 22px;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #1c7a4a;
  color: #fff;
  font-size: 26px;
  font-weight: 300;
  display: flex;
  align-items: center;
  justify-content: center;
  padding-bottom: 2px; /* optical center of + glyph */
  box-shadow: 0 2px 8px rgba(28,122,74,0.25);
}
.cr-rw-details:not([open]) > .cr-rw-summary:hover .cr-rw-summary-arrow {
  background: #14583a;
  transform: translateY(-50%) scale(1.06);
  box-shadow: 0 4px 14px rgba(28,122,74,0.35);
}

/* ----- Open state: sober, the form is the focus now ----- */
.cr-rw-details[open] > .cr-rw-summary {
  background: transparent;
  border: none;
  padding: 4px 0 14px;
  border-bottom: 1px solid rgba(20,17,13,0.06);
  margin-bottom: 4px;
}
.cr-rw-details[open] .cr-rw-summary-arrow {
  position: static;
  transform: rotate(45deg);
  width: auto;
  height: auto;
  background: transparent;
  color: rgba(20,17,13,0.4);
  box-shadow: none;
  padding: 0;
}
.cr-rw-details[open] .cr-rw-summary-teaser {
  display: none;
}

.cr-rw-subtitle { margin: 16px 0 24px; }

/* Status banner (populated by JS on submit) */
.cr-rw-status { margin: 0 0 16px; padding: 0; }
.cr-rw-status[data-state="error"] {
  padding: 12px 14px;
  border-radius: 8px;
  background: rgba(168,38,38,0.08);
  color: #9a2828;
  border: 1px solid rgba(168,38,38,0.2);
  font-size: 14px;
}
.cr-rw-status[data-state="success"] {
  padding: 12px 14px;
  border-radius: 8px;
  background: rgba(28,122,74,0.08);
  color: #1c7a4a;
  border: 1px solid rgba(28,122,74,0.2);
  font-size: 14px;
}

/* Form layout */
.cr-rw-form {
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20,17,13,0.08);
  border-radius: 10px;
  padding: 24px;
}

.cr-rw-field { margin-bottom: 18px; }
.cr-rw-field:last-of-type { margin-bottom: 0; }

.cr-rw-label {
  display: block;
  font-size: 13px;
  font-weight: 700;
  color: #14110d;
  margin-bottom: 7px;
  letter-spacing: 0.02em;
}
.cr-rw-req { color: #9a2828; margin-left: 2px; }
.cr-rw-optional {
  color: rgba(20,17,13,0.5);
  font-weight: 400;
  font-size: 12px;
  letter-spacing: 0;
}

.cr-rw-form input[type="text"],
.cr-rw-form input[type="email"],
.cr-rw-form textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid rgba(20,17,13,0.15);
  border-radius: 6px;
  font: inherit;
  font-size: 14px;
  background: #fff;
  color: #14110d;
  transition: border-color 0.15s, box-shadow 0.15s;
  box-sizing: border-box;
}
.cr-rw-form input:focus,
.cr-rw-form textarea:focus {
  border-color: #1c7a4a;
  box-shadow: 0 0 0 3px rgba(28,122,74,0.1);
  outline: none;
}
.cr-rw-form textarea { resize: vertical; min-height: 160px; line-height: 1.5; }

.cr-rw-help {
  font-size: 12px;
  color: rgba(20,17,13,0.55);
  margin-top: 5px;
}
.cr-rw-counter { text-align: right; font-variant-numeric: tabular-nums; }
.cr-rw-counter-value { font-weight: 700; color: #14110d; }
.cr-rw-counter-value.is-under { color: #a85a1c; }
.cr-rw-counter-value.is-over  { color: #9a2828; }
.cr-rw-counter-value.is-valid { color: #1c7a4a; }

/* Honeypot - hidden off-screen but not display:none (which some bots detect) */
.cr-rw-honeypot {
  position: absolute;
  left: -9999px;
  top: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* Star rating - radios in DOM reverse, flex row-reverse, fill on :checked ~ */
.cr-rw-field-rating {
  border: 0;
  padding: 0;
  margin: 0 0 18px;
}
.cr-rw-field-rating .cr-rw-label { float: none; }
.cr-rw-stars {
  display: inline-flex;
  flex-direction: row-reverse;
  gap: 2px;
}
.cr-rw-stars input[type="radio"] {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
.cr-rw-stars label {
  font-size: 32px;
  line-height: 1;
  color: rgba(20,17,13,0.18);
  cursor: pointer;
  padding: 2px;
  transition: color 0.12s;
}
.cr-rw-stars label:hover,
.cr-rw-stars label:hover ~ label,
.cr-rw-stars input[type="radio"]:checked ~ label {
  color: #d4a017;
}
.cr-rw-stars input[type="radio"]:focus-visible + label {
  outline: 2px solid #1c7a4a;
  outline-offset: 2px;
  border-radius: 3px;
}

/* Row layout (country + show-country checkbox side by side) */
.cr-rw-field-row {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
}
.cr-rw-field-col { flex: 1 1 220px; min-width: 0; }
.cr-rw-field-checkbox {
  display: flex;
  align-items: flex-end;
  padding-bottom: 11px;
}
.cr-rw-checkbox-label {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: 14px;
  color: rgba(20,17,13,0.8);
}
.cr-rw-checkbox-label input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: #1c7a4a;
  cursor: pointer;
}

/* Country toggle: read-only display + checkbox in a single bordered row.
   Replaces the previous free-form text input + checkbox pair. */
.cr-rw-field-location {
  background: rgba(28,122,74,0.04);
  border: 1px solid rgba(28,122,74,0.18);
  border-radius: 8px;
  padding: 12px 14px;
  transition: border-color 0.15s, background 0.15s;
}
.cr-rw-field-location:hover {
  border-color: rgba(28,122,74,0.35);
  background: rgba(28,122,74,0.06);
}
.cr-rw-location-toggle {
  margin: 0;
  width: 100%;
}
.cr-rw-location-text {
  font-size: 14px;
  color: rgba(20,17,13,0.85);
  line-height: 1.45;
}
.cr-rw-location-text strong {
  color: #14583a;
  font-weight: 700;
}

/* Turnstile widget wrapper */
.cr-rw-field-turnstile {
  margin-top: 8px;
}

/* Actions row */
.cr-rw-actions { margin-top: 22px; padding-top: 18px; border-top: 1px solid rgba(20,17,13,0.06); }
.cr-rw-submit { min-width: 180px; }
.cr-rw-submit[disabled],
.cr-rw-submit.is-disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
.cr-rw-privacy {
  font-size: 12px;
  color: rgba(20,17,13,0.55);
  margin: 12px 0 0;
  line-height: 1.55;
  max-width: 640px;
}

/* Mobile */
@media (max-width: 600px) {
  .cr-rw-form { padding: 18px; }
  .cr-rw-stars label { font-size: 28px; }
  .cr-rw-field-row { flex-direction: column; gap: 12px; }
  .cr-rw-field-checkbox { padding-bottom: 0; padding-top: 4px; }
  .cr-rw-submit { width: 100%; }
  /* Closed summary: tighter padding, smaller fab */
  .cr-rw-details:not([open]) > .cr-rw-summary {
    padding: 18px 70px 18px 18px;
    border-radius: 10px;
  }
  .cr-rw-details:not([open]) .cr-rw-summary-arrow {
    width: 34px;
    height: 34px;
    font-size: 22px;
    right: 16px;
  }
  .cr-rw-summary-teaser { font-size: 13px; margin-top: 6px; }
  .cr-rw-title { font-size: 22px; line-height: 1.25; }
}

/* ====== Sprint 2 step 5 — write-review JS-driven states ====== */

/* Field error state (server-side validation echoes per-field) */
.cr-rw-field.is-error > .cr-rw-form input,
.cr-rw-field.is-error input[type="text"],
.cr-rw-field.is-error input[type="email"],
.cr-rw-field.is-error textarea {
  border-color: #9a2828;
  box-shadow: 0 0 0 3px rgba(168,38,38,0.08);
}
.cr-rw-field.is-error input:focus,
.cr-rw-field.is-error textarea:focus {
  border-color: #9a2828;
  box-shadow: 0 0 0 3px rgba(168,38,38,0.18);
}
.cr-rw-field-rating.is-error .cr-rw-stars {
  padding: 6px 10px;
  margin: 0 -10px;
  border-radius: 6px;
  background: rgba(168,38,38,0.06);
  outline: 1px solid rgba(168,38,38,0.25);
}
.cr-rw-error-msg {
  font-size: 12px;
  color: #9a2828;
  margin-top: 6px;
  font-weight: 600;
  line-height: 1.4;
}

/* Submit button loading state (spinner) */
.cr-rw-submit.is-loading {
  position: relative;
  pointer-events: none;
}
.cr-rw-submit.is-loading::after {
  content: '';
  display: inline-block;
  width: 11px;
  height: 11px;
  margin-left: 9px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  vertical-align: -1px;
  animation: cr-rw-spin 0.7s linear infinite;
}
@keyframes cr-rw-spin { to { transform: rotate(360deg); } }

/* Success state: hide the form, keep the status banner visible */
.cr-rw-details.is-submitted .cr-rw-form,
.cr-rw-details.is-submitted .cr-rw-subtitle {
  display: none;
}
.cr-rw-details.is-submitted .cr-rw-status {
  margin-top: 16px;
}

/* No-JS / page-load banner from ?fec_review_status= */
.cr-rw-status[data-state="success"],
.cr-rw-status[data-state="error"] {
  scroll-margin-top: 80px;
}

/* ============================================================================
   Slot link + Slot disclosure box for bonus details pages
   Add to the existing details-page stylesheet (fecv2.details.css or wherever
   the .bd-stat-card / .kv styles live).
   ============================================================================ */

/* -------- Inline slot link in specifics card -------- */

.bd-stat-card .kv .bd-slot-link {
  color: #0b6b62;
  text-decoration: none;
  font-weight: 600;
  border-bottom: 1px dotted rgba(11, 107, 98, 0.4);
  transition: border-color 0.15s ease, color 0.15s ease;
}

.bd-stat-card .kv .bd-slot-link:hover,
.bd-stat-card .kv .bd-slot-link:focus {
  color: #084e47;
  border-bottom-color: #0b6b62;
}

.bd-stat-card .kv .bd-slot-link-info {
  display: inline-block;
  margin-left: 0.25em;
  font-size: 0.95em;
  color: #0b6b62;
  opacity: 0.7;
  vertical-align: baseline;
  cursor: help;
}

.bd-stat-card .kv .bd-slot-link:hover .bd-slot-link-info,
.bd-stat-card .kv .bd-slot-link:focus .bd-slot-link-info {
  opacity: 1;
}

/* -------- Slot disclosure box (full-width, below stats grid) -------- */

.bd-slot-disclosure {
  margin: 24px 0 24px;
  padding: 22px 26px;
  border-radius: 12px;
  font-size: 15px;
  line-height: 1.6;
}

.bd-slot-disclosure p {
  margin: 0 0 10px;
}

.bd-slot-disclosure p:last-child {
  margin-bottom: 0;
}

.bd-slot-disclosure-label {
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 10px;
}

.bd-slot-disclosure-links {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  align-items: baseline;
  margin-top: 14px !important;
  font-size: 13.5px;
}

.bd-slot-disclosure-link {
  color: #0b6b62;
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgba(11, 107, 98, 0.3);
  transition: border-color 0.15s;
}

.bd-slot-disclosure-link:hover,
.bd-slot-disclosure-link:focus {
  border-bottom-color: #0b6b62;
}

.bd-slot-disclosure-link-secondary {
  color: #555;
  border-bottom-color: rgba(20, 17, 13, 0.2);
}

.bd-slot-disclosure-link-secondary:hover,
.bd-slot-disclosure-link-secondary:focus {
  color: #14110d;
  border-bottom-color: #14110d;
}

/* Multi-tier variant — yellow/warning palette */
.bd-slot-disclosure-multitier {
  background: #fbeed7;
  border: 1px solid #f0d28e;
  border-left: 4px solid #c89a3a;
}

.bd-slot-disclosure-multitier .bd-slot-disclosure-label {
  color: #8c6610;
}

/* Opaque provider variant — neutral teal palette */
.bd-slot-disclosure-opaque {
  background: rgba(11, 107, 98, 0.06);
  border: 1px solid rgba(11, 107, 98, 0.15);
  border-left: 4px solid #0b6b62;
}

.bd-slot-disclosure-opaque .bd-slot-disclosure-label {
  color: #0b6b62;
}

/* Mobile refinements */
@media (max-width: 600px) {
  .bd-slot-disclosure {
    padding: 16px 18px;
    font-size: 14.5px;
    margin: 20px 0 20px;
  }
  .bd-slot-disclosure-links {
    flex-direction: column;
    gap: 10px;
  }
}

/* ============================================================================
   RTP verifications tab — author profile page (com_authors)
   Paste into fec-edition.css or include as a separate stylesheet.
   ============================================================================ */

/* Tab intro paragraph */
.fecx .au-tab-toolbar .au-tab-intro {
  flex: 1;
  font-size: 13px;
  color: var(--ink-3, #666);
  line-height: 1.5;
  max-width: 580px;
}
.fecx .au-tab-toolbar .au-tab-intro p {
  margin: 0;
}

/* List wrapper */
.fecx .au-rtp-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 4px;
}

/* Each row is a full-width link */
.fecx .au-rtp-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 18px;
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20, 17, 13, 0.08);
  border-radius: 10px;
  text-decoration: none;
  color: inherit;
  transition: border-color 0.15s, transform 0.05s;
}
.fecx .au-rtp-row:hover,
.fecx .au-rtp-row:focus {
  border-color: rgba(11, 107, 98, 0.4);
}
.fecx .au-rtp-row:active {
  transform: translateY(1px);
}

.fecx .au-rtp-row .main {
  flex: 1;
  min-width: 0;
}

.fecx .au-rtp-row .top {
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

.fecx .au-rtp-row .name {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 17px;
  font-weight: 700;
  color: var(--ink, #14110d);
  line-height: 1.3;
}

.fecx .au-rtp-row .provider {
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 10.5px;
  font-weight: 700;
  color: var(--accent, #0b6b62);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.fecx .au-rtp-row .meta-row {
  margin-top: 4px;
  font-size: 12.5px;
  color: var(--ink-3, #777);
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
}

.fecx .au-rtp-row .rtp {
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 17px;
  font-weight: 700;
  color: var(--accent, #0b6b62);
  font-feature-settings: "tnum";
  white-space: nowrap;
  flex-shrink: 0;
}

/* When stats strip grows to 5 columns, reduce per-cell padding on mobile so it
   doesn't overflow. The base .au-stats-strip handles flex-wrap. */
@media (max-width: 720px) {
  .fecx .au-stats-strip .stat {
    flex: 1 1 30%;
    min-width: 0;
  }
}
@media (max-width: 480px) {
  .fecx .au-rtp-row {
    padding: 12px 14px;
    gap: 10px;
  }
  .fecx .au-rtp-row .name { font-size: 15.5px; }
  .fecx .au-rtp-row .rtp { font-size: 15px; }
}

/* ============================================================================
   RTP verifications tab — author profile page (com_authors)
   Paste into fec-edition.css or include as a separate stylesheet.
   ============================================================================ */

/* Tab intro paragraph */
.fecx .au-tab-toolbar .au-tab-intro {
  flex: 1;
  font-size: 13px;
  color: var(--ink-3, #666);
  line-height: 1.5;
  max-width: 580px;
}
.fecx .au-tab-toolbar .au-tab-intro p {
  margin: 0;
}

/* List wrapper */
.fecx .au-rtp-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 4px;
}

/* Each row is a full-width link */
.fecx .au-rtp-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 18px;
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20, 17, 13, 0.08);
  border-radius: 10px;
  text-decoration: none;
  color: inherit;
  transition: border-color 0.15s, transform 0.05s;
}
.fecx .au-rtp-row:hover,
.fecx .au-rtp-row:focus {
  border-color: rgba(11, 107, 98, 0.4);
}
.fecx .au-rtp-row:active {
  transform: translateY(1px);
}

.fecx .au-rtp-row .main {
  flex: 1;
  min-width: 0;
}

.fecx .au-rtp-row .top {
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

.fecx .au-rtp-row .name {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 17px;
  font-weight: 700;
  color: var(--ink, #14110d);
  line-height: 1.3;
}

.fecx .au-rtp-row .provider {
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 10.5px;
  font-weight: 700;
  color: var(--accent, #0b6b62);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.fecx .au-rtp-row .meta-row {
  margin-top: 4px;
  font-size: 12.5px;
  color: var(--ink-3, #777);
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
}

.fecx .au-rtp-row .rtp {
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 17px;
  font-weight: 700;
  color: var(--accent, #0b6b62);
  font-feature-settings: "tnum";
  white-space: nowrap;
  flex-shrink: 0;
}

/* When stats strip grows to 5 columns, reduce per-cell padding on mobile so it
   doesn't overflow. The base .au-stats-strip handles flex-wrap. */
@media (max-width: 720px) {
  .fecx .au-stats-strip .stat {
    flex: 1 1 30%;
    min-width: 0;
  }
}
@media (max-width: 480px) {
  .fecx .au-rtp-row {
    padding: 12px 14px;
    gap: 10px;
  }
  .fecx .au-rtp-row .name { font-size: 15.5px; }
  .fecx .au-rtp-row .rtp { font-size: 15px; }
}

/* ============================================================================
   Stats strip — 5 cells responsive
   Replaces the previous 4-column fixed grid. Wraps fluidly:
     >=900px : 5 in one row
     600-900 : 3+2
     <600px  : 2+2+1
   "17+ yrs" stays last in HTML so it always falls at the end.
   ============================================================================ */

.fecx .au-stats-strip {
  display: flex;
  flex-wrap: wrap;
  /* If the previous CSS had grid, neutralize it: */
  grid-template-columns: none;
  border-radius: 10px;
  overflow: hidden;
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20, 17, 13, 0.08);
}

.fecx .au-stats-strip .stat {
  flex: 1 1 160px;
  min-width: 160px;
  padding: 22px 28px;
  border-right: 1px solid rgba(20, 17, 13, 0.08);
  /* Border-bottom for wrapped rows on narrow viewports — gives a clean
     separator between the 2-up rows when 5 cells wrap to 2+2+1 */
  box-sizing: border-box;
}

/* Strip the trailing border on the visually last cell of the last row.
   We can't reliably target this with pure CSS for variable wraps, so we
   rely on overflow:hidden on the parent (border-right that goes past
   the right edge is clipped). Plus an explicit reset for the DOM-last
   cell as a baseline. */
.fecx .au-stats-strip .stat:last-child {
  border-right: 0;
}

/* On narrow viewports where cells wrap to multiple rows, add a subtle
   horizontal divider between rows (since the right-border doesn't help). */
@media (max-width: 900px) {
  .fecx .au-stats-strip .stat {
    border-bottom: 1px solid rgba(20, 17, 13, 0.08);
  }
  /* Remove bottom border on the last row's cells — hard with pure CSS for
     dynamic wrap; we leave it as-is since the parent overflow:hidden plus
     border-radius keeps the visual clean. */
}

/* ============================================================================
 * SPRINT3_listing_full.css  -  catid=8 casino directory bundle
 * ----------------------------------------------------------------------------
 * Append at end of /css/fec-edition.css when sprint 3 deploys. Every rule is
 * scoped under .fecx (lesson #10) to match the rest of the editorial design
 * system. Uses the existing CSS tokens (--ink, --paper, --accent, --radius
 * etc) defined at the top of fec-edition.css under .fecx{...}.
 *
 * SCOPE
 *   - .btn-disabled (+ data-status variants)   - missing utility, listing uses it
 *   - .cl-hero* / .cl-hero-card / etc          - listing hero
 *   - .cl-cofm-* (spotlight)                   - Casino of the Month card
 *   - .cl-alphabet* / .cl-alpha-btn            - A-Z jump bar
 *   - .cl-filterbar* (sticky)                  - quick chips + sort dropdown
 *   - .cl-view-toggle / .cl-view-btn           - row|grid toggle
 *   - .cl-list-stack + .cl-list-card overrides - row layout for .review-card
 *   - .cl-list-stack[data-view="grid"]         - 3-col grid layout switch
 *   - .chip[data-filter].active                - filter active state
 *   - .cl-list-card.cl-hidden                  - filtered-out state
 *   - .cl-list-card.cl-pending                 - infinite-scroll pending
 *   - .cl-list-sentinel                        - infinite-scroll trigger
 *   - .cl-empty-filtered                       - 0-match empty state
 *   - .cl-list-newtag + .editors-pick variant  - card decorations
 *   - Responsive (1100 / 900 / 800 / 600)
 *
 * NOT IN THIS BUNDLE (already in fec-edition.css under .fecx):
 *   tokens, .wrap, .btn, .btn-primary, .btn-ghost, .btn-sm, .chip (base),
 *   .casino-chip (base), .hub-pill, .eyebrow, .review-card (base),
 *   .review-head/.review-name/.review-sub, .score-block/.score-num/.score-label/
 *   .score-rank, .review-meta/.kv, .review-actions.
 * ============================================================================ */


/* ====================================================================
 * .btn-disabled  -  Listing CTA "Visit casino" disabled states
 * ==================================================================== */
.fecx .btn-disabled{
  background:var(--bg-2);color:var(--ink-4);
  border:1px solid var(--rule);cursor:not-allowed;
  display:inline-flex;align-items:center;gap:6px;
  padding:7px 12px;font-size:13px;border-radius:999px;font-weight:500;
}
.fecx .btn-disabled .why{
  font-family:var(--mono);font-size:10px;
  letter-spacing:0.04em;text-transform:uppercase;opacity:0.85;
}
.fecx .btn-disabled[data-status="suspended"]{
  background:var(--warn-soft);color:var(--warn);
  border-color:rgba(168,90,28,0.35);
}
.fecx .btn-disabled[data-status="closed"]{
  background:var(--bg-2);color:var(--ink-4);
}
.fecx .btn-disabled[data-status="blacklisted"]{
  background:rgba(154,40,40,0.08);color:var(--danger);
  border-color:rgba(154,40,40,0.4);font-weight:600;
}
.fecx .btn-disabled[data-status="unavailable"]{
  background:var(--bg-2);color:var(--ink-4);
}


/* ====================================================================
 * Hero card (.cl-hero / .cl-hero-card)
 * ==================================================================== */
.fecx .cl-hero{padding:20px 0 24px}
.fecx .cl-hero-card{
  background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius);
  padding:26px 30px;display:grid;grid-template-columns:1.5fr 1fr;gap:36px;
  align-items:start;
}
.fecx .cl-hero-left{display:flex;flex-direction:column;gap:12px}
.fecx .cl-hero-title{
  font-family:var(--serif);font-weight:700;
  font-size:clamp(30px,3.6vw,42px);line-height:1.05;letter-spacing:-0.025em;
  margin:4px 0;
}
.fecx .cl-hero-intro{
  font-size:15px;line-height:1.55;color:var(--ink-2);
  margin:0 0 6px;max-width:62ch;
}
.fecx .cl-hero-pills{display:flex;flex-wrap:wrap;gap:6px}
.fecx .cl-hero-side{border-left:1px solid var(--rule-2);padding-left:24px}
.fecx .cl-hero-side .heading{
  font-family:var(--mono);font-size:10px;letter-spacing:0.1em;
  text-transform:uppercase;color:var(--ink-3);font-weight:600;
  margin-bottom:12px;
}
.fecx .cl-hero-side ul{list-style:none;padding:0;margin:0}
.fecx .cl-hero-side li{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:8px 0;border-bottom:1px solid var(--rule-2);font-size:13px;
}
.fecx .cl-hero-side li:last-child{border-bottom:none}
.fecx .cl-hero-side .k{
  font-family:var(--mono);font-size:11px;letter-spacing:0.04em;color:var(--ink-3);
}
.fecx .cl-hero-side .v{color:var(--ink);font-weight:500}


/* ====================================================================
 * Casino of the Month spotlight (.cl-cofm-*)
 * Lives between hero and alphabet. NOT subject to filter/sort.
 * ==================================================================== */
.fecx .cl-cofm-spotlight{padding:4px 0 24px}
.fecx .cl-cofm-card{
  background:linear-gradient(135deg,var(--accent-soft) 0%,var(--paper) 55%,var(--paper) 100%);
  border:1px solid var(--accent);border-radius:var(--radius);
  padding:28px 32px;display:grid;grid-template-columns:1.4fr 220px;gap:36px;
  align-items:center;position:relative;
}
.fecx .cl-cofm-meta{display:flex;flex-direction:column;gap:12px;min-width:0}
.fecx .cl-cofm-eyebrow{
  font-family:var(--mono);font-size:11px;letter-spacing:0.1em;
  text-transform:uppercase;color:var(--accent-ink);font-weight:700;
}
.fecx .cl-cofm-titlerow{display:flex;align-items:center;gap:16px;min-width:0}
.fecx .cl-cofm-titlerow>div{display:flex;flex-direction:column;flex:1;min-width:0}
.fecx .cl-cofm-name{
  font-family:var(--serif);font-weight:700;
  font-size:clamp(22px,2.4vw,30px);line-height:1.1;letter-spacing:-0.025em;
  color:var(--ink);
}
.fecx .cl-cofm-provider{
  font-size:13px;color:var(--ink-3);font-family:var(--mono);letter-spacing:0.01em;
  margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fecx .cl-cofm-blurb{
  font-size:15px;line-height:1.5;color:var(--ink-2);margin:4px 0;max-width:60ch;
}
.fecx .cl-cofm-stats{
  display:flex;gap:28px;margin-top:4px;padding-top:14px;
  border-top:1px solid rgba(11,107,98,0.18);
}
.fecx .cl-cofm-stats .kv{display:flex;flex-direction:column;gap:3px;font-family:var(--mono)}
.fecx .cl-cofm-stats .k{
  font-size:10px;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink-3);
}
.fecx .cl-cofm-stats .v{
  font-family:var(--serif);font-size:22px;font-weight:700;color:var(--ink);
  letter-spacing:-0.02em;
}
.fecx .cl-cofm-cta{display:flex;flex-direction:column;gap:10px}
.fecx .cl-cofm-cta .btn{justify-content:center;width:100%;padding:13px 18px;font-size:14px}
.fecx .cl-cofm-cta .btn-primary{background:var(--accent);color:#fff}
.fecx .cl-cofm-cta .btn-primary:hover{background:var(--accent-ink)}


/* ====================================================================
 * Editorial intro article (.cl-intro / .cl-intro-card / .cl-intro-body)
 * Renders between COFM spotlight and alphabet bar. Trusted prose body
 * (from jos_content.introtext or jos_categories.description). Sprint 3
 * step 2F.
 * ==================================================================== */
.fecx .cl-intro{padding:4px 0 24px}
.fecx .cl-intro-card{
  background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius);
  padding:28px 36px;
}
.fecx .cl-intro-eyebrow{
  font-family:var(--mono);font-size:11px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--ink-3);font-weight:600;margin-bottom:10px;
}
.fecx .cl-intro-body{
  font-size:15px;line-height:1.65;color:var(--ink-2);max-width:72ch;
}
.fecx .cl-intro-body>*:first-child{margin-top:0}
.fecx .cl-intro-body>*:last-child{margin-bottom:0}
.fecx .cl-intro-body p{margin:0 0 12px}
.fecx .cl-intro-body h2,
.fecx .cl-intro-body h3,
.fecx .cl-intro-body h4{
  font-family:var(--serif);font-weight:700;color:var(--ink);
  margin:22px 0 10px;line-height:1.2;
}
.fecx .cl-intro-body h2{font-size:22px;letter-spacing:-0.015em}
.fecx .cl-intro-body h3{font-size:18px}
.fecx .cl-intro-body h4{font-size:16px}
.fecx .cl-intro-body a{
  color:var(--accent-ink);text-decoration:underline;
  text-decoration-color:var(--rule);text-underline-offset:2px;
}
.fecx .cl-intro-body a:hover{text-decoration-color:var(--accent)}
.fecx .cl-intro-body strong{font-weight:600;color:var(--ink)}
.fecx .cl-intro-body em{font-style:italic}
.fecx .cl-intro-body ul,
.fecx .cl-intro-body ol{margin:8px 0 14px;padding-left:22px}
.fecx .cl-intro-body li{margin-bottom:4px}
.fecx .cl-intro-body blockquote{
  margin:14px 0;padding:4px 0 4px 18px;border-left:3px solid var(--rule);
  color:var(--ink-3);font-style:italic;
}
.fecx .cl-intro-body img{
  max-width:100%;height:auto;border-radius:var(--radius-sm);margin:12px 0;
}

/* Clamp + "Read more" toggle */
.fecx .cl-intro-clampable .cl-intro-clamp{
  position:relative;max-height:20rem;overflow:hidden;
  transition:max-height 0.25s ease-in-out;
}
.fecx .cl-intro-clampable .cl-intro-clamp::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:90px;
  pointer-events:none;
  background:linear-gradient(to bottom,rgba(253,251,246,0) 0%,var(--paper) 80%);
}
.fecx .cl-intro-clampable.is-expanded .cl-intro-clamp{max-height:none}
.fecx .cl-intro-clampable.is-expanded .cl-intro-clamp::after{display:none}
.fecx .cl-intro-clampable.is-not-clampable .cl-intro-clamp{max-height:none}
.fecx .cl-intro-clampable.is-not-clampable .cl-intro-clamp::after{display:none}
.fecx .cl-intro-readmore{
  display:inline-flex;align-items:center;gap:6px;margin-top:14px;
  padding:9px 16px;border-radius:999px;border:1px solid var(--rule);
  background:var(--bg);color:var(--ink);font:inherit;font-size:13px;
  font-weight:500;cursor:pointer;transition:background 0.12s,border-color 0.12s;
}
.fecx .cl-intro-readmore:hover{background:var(--bg-2);border-color:var(--ink-4)}
.fecx .cl-intro-readmore-chev{font-size:10px;color:var(--ink-3)}
.fecx .cl-intro-readmore-less{display:none}
.fecx .cl-intro-clampable.is-expanded .cl-intro-readmore-more{display:none}
.fecx .cl-intro-clampable.is-expanded .cl-intro-readmore-less{
  display:inline-flex;gap:6px;align-items:center;
}
.fecx .cl-intro-clampable.is-not-clampable .cl-intro-readmore{display:none}


/* ====================================================================
 * Alphabet bar (.cl-alphabet-wrap / .cl-alphabet / .cl-alpha-btn)
 * ==================================================================== */
.fecx .cl-alphabet-wrap{padding:4px 0}
.fecx .cl-alphabet{
  display:flex;align-items:center;justify-content:center;gap:8px;padding:20px 0;
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);flex-wrap:wrap;
}
.fecx .cl-alphabet .lbl{
  font-family:var(--mono);font-size:10px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--ink-3);font-weight:600;margin-right:12px;
}
.fecx .cl-alpha-btn{
  width:32px;height:32px;border-radius:50%;display:grid;place-items:center;
  font-family:var(--serif);font-weight:700;font-size:13px;color:var(--ink-2);
  background:transparent;border:1px solid transparent;cursor:pointer;
  transition:background 0.1s ease,color 0.1s ease;
}
.fecx .cl-alpha-btn:hover{background:var(--bg-2);color:var(--ink)}
.fecx .cl-alpha-btn.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.fecx .cl-alpha-btn[data-disabled="true"]{opacity:0.3;cursor:default}


/* ====================================================================
 * Sticky filter bar (.cl-filterbar-wrap / .cl-filterbar)
 * Sticky lives on the WRAP so the parent container height stays right.
 * ==================================================================== */
.fecx .cl-filterbar-wrap{
  position:sticky;top:0;z-index:5;background:var(--bg);padding:16px 0 8px;
}
.fecx .cl-filterbar-wrap::after{
  content:"";display:block;height:1px;margin:0 auto;
  max-width:var(--maxw);background:transparent;transition:background 0.15s;
}
.fecx .cl-filterbar{
  position:static;display:flex;align-items:center;gap:10px;padding:14px 18px;
  background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius);
  flex-wrap:wrap;
}
.fecx .cl-filterbar .quick-chips{display:flex;gap:6px;flex-wrap:wrap}
.fecx .cl-filterbar .sort-block{margin-left:auto;display:flex;align-items:center;gap:8px}
.fecx .cl-filterbar .sort-block .lbl{
  font-family:var(--mono);font-size:10px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--ink-3);font-weight:600;
}
.fecx .cl-filterbar .sort-block select{
  background:var(--bg);color:var(--ink);border:1px solid var(--rule);
  border-radius:999px;padding:7px 12px;font:inherit;font-size:13px;
  outline:none;cursor:pointer;
}
.fecx .cl-filterbar .showing{
  font-family:var(--mono);font-size:11px;letter-spacing:0.04em;color:var(--ink-3);
  width:100%;padding-top:8px;border-top:1px dashed var(--rule-2);margin-top:4px;
}
.fecx .cl-filterbar .showing b{color:var(--ink);font-weight:700}


/* ====================================================================
 * View toggle (.cl-view-toggle / .cl-view-btn)  -  Row | Grid
 * ==================================================================== */
.fecx .cl-view-toggle{
  display:inline-flex;gap:0;margin-left:6px;
  border:1px solid var(--rule);border-radius:999px;padding:2px;background:var(--bg);
}
.fecx .cl-view-btn{
  background:transparent;border:none;padding:4px 12px;font-size:12px;
  font-family:var(--mono);letter-spacing:0.04em;text-transform:uppercase;
  color:var(--ink-3);cursor:pointer;border-radius:999px;
  transition:background 0.12s,color 0.12s;
}
.fecx .cl-view-btn:hover{color:var(--ink)}
.fecx .cl-view-btn.active{background:var(--ink);color:var(--bg)}


/* ====================================================================
 * Filter chip active state (.chip[data-filter].active)
 * Only when used as a filter chip in the listing - adds ✓ prefix.
 * ==================================================================== */
.fecx .chip[data-filter].active{
  background:var(--ink);color:var(--bg);border-color:var(--ink);
}
.fecx .chip[data-filter].active::before{
  content:"\2713";margin-right:4px;font-weight:700;
}


/* ====================================================================
 * Main + list stack + list card (row-full-width listing layout)
 * ==================================================================== */
.fecx .cl-main{padding:8px 0 48px}
.fecx .cl-empty{padding:60px 0;text-align:center;color:var(--ink-3)}
.fecx .cl-list-stack{display:flex;flex-direction:column;gap:12px}

/* The card itself: 4-col grid laying .review-* blocks horizontally */
.fecx .review-card.cl-list-card{
  display:grid;grid-template-columns:1.7fr 200px 1fr 220px;gap:28px;
  align-items:center;padding:18px 24px;
}

/* Listing-specific head wrapper */
.fecx .cl-list-card .review-head{margin-bottom:0;min-width:0}
.fecx .cl-list-card .review-head>div{
  display:flex;flex-direction:column;flex:1;min-width:0;
}
.fecx .cl-list-card .review-name{
  font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fecx .cl-list-card .review-sub{
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fecx .cl-list-provsep{color:var(--ink-4);margin:0 2px;font-weight:400}

/* Score block: no internal padding/borders (grid cells provide separation) */
.fecx .cl-list-card .score-block{
  padding:0;border-top:none;border-bottom:none;margin-bottom:0;
  flex-direction:column;align-items:flex-start;gap:2px;
  border-left:1px solid var(--rule-2);padding-left:24px;
}
.fecx .cl-list-card .score-num{font-size:32px}
.fecx .cl-list-card .score-rank{margin-left:0;margin-top:4px}

/* Meta: keep 3-col KV; left-bordered divider */
.fecx .cl-list-card .review-meta{
  margin-bottom:0;border-left:1px solid var(--rule-2);padding-left:24px;
}

/* Actions: stack vertically inside the row cell */
.fecx .cl-list-card .review-actions{
  flex-direction:column;align-items:stretch;
  border-left:1px solid var(--rule-2);padding-left:24px;
}
.fecx .cl-list-card .review-actions .btn,
.fecx .cl-list-card .review-actions .btn-disabled{
  justify-content:center;width:100%;padding:9px 14px;font-size:13px;
}

/* State opacity + border tone (soft visibility for non-ACTIVE) */
.fecx .cl-list-card[data-status="closed"],
.fecx .cl-list-card[data-status="suspended"],
.fecx .cl-list-card[data-status="blacklisted"]{opacity:0.88}
.fecx .cl-list-card[data-status="blacklisted"]{border-color:rgba(154,40,40,0.35)}
.fecx .cl-list-card[data-status="unavailable"]{opacity:0.75}


/* ====================================================================
 * Floating tags and Editor's Pick variant
 * ==================================================================== */
.fecx .cl-list-newtag{
  position:absolute;top:-1px;right:22px;transform:translateY(-50%);
  background:var(--accent-soft);color:var(--accent-ink);
  font-family:var(--mono);font-size:9px;letter-spacing:0.08em;
  text-transform:uppercase;padding:2px 8px;border-radius:999px;
  border:1px solid var(--paper);font-weight:700;
}

.fecx .cl-list-card.editors-pick{
  border-color:var(--accent);
  background:linear-gradient(180deg,var(--accent-soft) 0%,var(--paper) 35%);
}
.fecx .cl-list-card.editors-pick::before{
  content:"\2605 EDITOR'S PICK";position:absolute;top:-1px;left:22px;
  transform:translateY(-50%);font-family:var(--mono);font-size:10px;
  letter-spacing:0.1em;padding:4px 10px;background:var(--accent);color:#fff;
  border-radius:999px;font-weight:600;
}
.fecx .cl-list-card.editors-pick .review-name{color:var(--accent-ink)}
.fecx .cl-list-card.editors-pick .score-num{color:var(--accent-ink)}
.fecx .cl-list-card.editors-pick .btn-primary{background:var(--accent);color:#fff}
.fecx .cl-list-card.editors-pick .btn-primary:hover{background:var(--accent-ink)}


/* ====================================================================
 * Grid view (data-view="grid") - resets the .cl-list-card row override
 * back to the vertical .review-card stack, in a 3-col grid.
 * ==================================================================== */
.fecx .cl-list-stack[data-view="grid"]{
  display:grid;grid-template-columns:repeat(3,1fr);gap:16px;
}
.fecx .cl-list-stack[data-view="grid"] .review-card.cl-list-card{
  display:flex;flex-direction:column;gap:12px;padding:20px;align-items:stretch;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-head{margin-bottom:0}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-name{
  font-size:15px;white-space:normal;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-sub{
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .score-block{
  flex-direction:row;align-items:baseline;gap:8px;padding:10px 0;
  border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2);
  border-left:none;padding-left:0;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .score-num{font-size:32px}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .score-rank{margin-left:auto;margin-top:0}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-meta{
  border-left:none;padding-left:0;margin:0;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-actions{
  flex-direction:row;border-left:none;padding-left:0;margin-top:auto;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-actions .btn,
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-actions .btn-disabled{
  flex:1;font-size:12px;padding:8px 10px;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card.editors-pick::before{
  left:16px;font-size:9px;padding:3px 8px;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-newtag{right:16px}


/* ====================================================================
 * JS-driven states - filter hide + infinite scroll pending
 * ==================================================================== */
.fecx .cl-list-card.cl-hidden{display:none !important}
.fecx .cl-list-card.cl-pending{display:none !important}


/* ====================================================================
 * Infinite-scroll sentinel  (60px-tall trigger after the stack)
 * ==================================================================== */
.fecx .cl-list-sentinel{
  height:60px;display:flex;align-items:center;justify-content:center;
  margin-top:16px;font-family:var(--mono);font-size:11px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--ink-4);
}
.fecx .cl-list-sentinel[hidden]{display:none}
.fecx .cl-list-sentinel-label::before{content:"\2193  ";margin-right:4px}


/* ====================================================================
 * Empty-filtered state  (revealed by JS when all cards filtered out)
 * ==================================================================== */
.fecx .cl-empty-filtered{
  display:flex;flex-direction:column;align-items:center;gap:10px;
  padding:50px 28px;margin-top:12px;background:var(--paper);
  border:1px dashed var(--rule);border-radius:var(--radius);text-align:center;
}
.fecx .cl-empty-filtered[hidden]{display:none}
.fecx .cl-empty-filtered-icon{
  font-family:var(--mono);font-size:22px;color:var(--ink-4);letter-spacing:0.2em;
}
.fecx .cl-empty-filtered-title{
  font-family:var(--serif);font-size:18px;color:var(--ink);font-weight:600;
}
.fecx .cl-empty-filtered-hint{font-size:13px;color:var(--ink-3);margin-bottom:6px}


/* ====================================================================
 * Responsive
 *   <1100  row layout drops the meta column
 *   <900   hero + COFM collapse to 1-col; grid view -> 2-col
 *   <800   row layout collapses to vertical stack
 *   <600   alphabet bar tighter; grid view -> 1-col
 * ==================================================================== */

@media (max-width:1100px){
  .fecx .review-card.cl-list-card{
    grid-template-columns:1.5fr 160px 220px;gap:20px;
  }
  .fecx .cl-list-card .review-meta{display:none}
}

@media (max-width:900px){
  .fecx .cl-hero-card{grid-template-columns:1fr;gap:16px}
  .fecx .cl-hero-side{
    border-left:none;padding-left:0;
    border-top:1px solid var(--rule-2);padding-top:16px;
  }
  .fecx .cl-list-stack[data-view="grid"]{grid-template-columns:repeat(2,1fr)}
}

@media (max-width:800px){
  .fecx .review-card.cl-list-card{
    grid-template-columns:1fr;gap:14px;padding:18px;
  }
  .fecx .cl-list-card .score-block,
  .fecx .cl-list-card .review-actions{
    border-left:none;padding-left:0;
    border-top:1px solid var(--rule-2);padding-top:14px;
  }
  .fecx .cl-list-card .score-block{flex-direction:row;align-items:baseline}
  .fecx .cl-list-card .score-rank{margin-left:auto}
  .fecx .cl-list-card .review-meta{
    display:grid;border-left:none;padding-left:0;
    border-top:1px solid var(--rule-2);padding-top:14px;
  }
  .fecx .cl-list-card .review-actions{flex-direction:row}
  .fecx .cl-list-card .review-actions .btn,
  .fecx .cl-list-card .review-actions .btn-disabled{flex:1}
  .fecx .cl-cofm-card{grid-template-columns:1fr;gap:20px;padding:22px}
  .fecx .cl-cofm-stats{flex-wrap:wrap;gap:18px}
  .fecx .cl-cofm-stats .v{font-size:18px}
  .fecx .cl-intro-card{padding:22px}
  .fecx .cl-intro-body{font-size:14px}
  .fecx .cl-intro-clampable .cl-intro-clamp{max-height:16rem}
}

@media (max-width:600px){
  .fecx .cl-alphabet{gap:4px}
  .fecx .cl-alpha-btn{width:28px;height:28px;font-size:12px}
  .fecx .cl-alphabet .lbl{display:none}
  .fecx .cl-list-stack[data-view="grid"]{grid-template-columns:1fr}
}

/* end SPRINT3_listing_full.css */

/* ============================================================================
 * SPRINT3_listing_full.css  -  catid=8 casino directory bundle
 * ----------------------------------------------------------------------------
 * Append at end of /css/fec-edition.css when sprint 3 deploys. Every rule is
 * scoped under .fecx (lesson #10) to match the rest of the editorial design
 * system. Uses the existing CSS tokens (--ink, --paper, --accent, --radius
 * etc) defined at the top of fec-edition.css under .fecx{...}.
 *
 * SCOPE
 *   - .btn-disabled (+ data-status variants)   - missing utility, listing uses it
 *   - .cl-hero* / .cl-hero-card / etc          - listing hero
 *   - .cl-cofm-* (spotlight)                   - Casino of the Month card
 *   - .cl-alphabet* / .cl-alpha-btn            - A-Z jump bar
 *   - .cl-filterbar* (sticky)                  - quick chips + sort dropdown
 *   - .cl-view-toggle / .cl-view-btn           - row|grid toggle
 *   - .cl-list-stack + .cl-list-card overrides - row layout for .review-card
 *   - .cl-list-stack[data-view="grid"]         - 3-col grid layout switch
 *   - .chip[data-filter].active                - filter active state
 *   - .cl-list-card.cl-hidden                  - filtered-out state
 *   - .cl-list-card.cl-pending                 - infinite-scroll pending
 *   - .cl-list-sentinel                        - infinite-scroll trigger
 *   - .cl-empty-filtered                       - 0-match empty state
 *   - .cl-list-newtag + .editors-pick variant  - card decorations
 *   - Responsive (1100 / 900 / 800 / 600)
 *
 * NOT IN THIS BUNDLE (already in fec-edition.css under .fecx):
 *   tokens, .wrap, .btn, .btn-primary, .btn-ghost, .btn-sm, .chip (base),
 *   .casino-chip (base), .hub-pill, .eyebrow, .review-card (base),
 *   .review-head/.review-name/.review-sub, .score-block/.score-num/.score-label/
 *   .score-rank, .review-meta/.kv, .review-actions.
 * ============================================================================ */


/* ====================================================================
 * .btn-disabled  -  Listing CTA "Visit casino" disabled states
 * ==================================================================== */
.fecx .btn-disabled{
  background:var(--bg-2);color:var(--ink-4);
  border:1px solid var(--rule);cursor:not-allowed;
  display:inline-flex;align-items:center;gap:6px;
  padding:7px 12px;font-size:13px;border-radius:999px;font-weight:500;
}
.fecx .btn-disabled .why{
  font-family:var(--mono);font-size:10px;
  letter-spacing:0.04em;text-transform:uppercase;opacity:0.85;
}
.fecx .btn-disabled[data-status="suspended"]{
  background:var(--warn-soft);color:var(--warn);
  border-color:rgba(168,90,28,0.35);
}
.fecx .btn-disabled[data-status="closed"]{
  background:var(--bg-2);color:var(--ink-4);
}
.fecx .btn-disabled[data-status="blacklisted"]{
  background:rgba(154,40,40,0.08);color:var(--danger);
  border-color:rgba(154,40,40,0.4);font-weight:600;
}
.fecx .btn-disabled[data-status="unavailable"]{
  background:var(--bg-2);color:var(--ink-4);
}


/* ====================================================================
 * Hero card (.cl-hero / .cl-hero-card)
 * ==================================================================== */
.fecx .cl-hero{padding:20px 0 24px}
.fecx .cl-hero-card{
  background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius);
  padding:26px 30px;display:grid;grid-template-columns:1.5fr 1fr;gap:36px;
  align-items:start;
}
.fecx .cl-hero-left{display:flex;flex-direction:column;gap:12px}
.fecx .cl-hero-title{
  font-family:var(--serif);font-weight:700;
  font-size:clamp(30px,3.6vw,42px);line-height:1.05;letter-spacing:-0.025em;
  margin:4px 0;
}
.fecx .cl-hero-intro{
  font-size:15px;line-height:1.55;color:var(--ink-2);
  margin:0 0 6px;max-width:62ch;
}
.fecx .cl-hero-pills{display:flex;flex-wrap:wrap;gap:6px}
.fecx .cl-hero-side{border-left:1px solid var(--rule-2);padding-left:24px}
.fecx .cl-hero-side .heading{
  font-family:var(--mono);font-size:10px;letter-spacing:0.1em;
  text-transform:uppercase;color:var(--ink-3);font-weight:600;
  margin-bottom:12px;
}
.fecx .cl-hero-side ul{list-style:none;padding:0;margin:0}
.fecx .cl-hero-side li{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:8px 0;border-bottom:1px solid var(--rule-2);font-size:13px;
}
.fecx .cl-hero-side li:last-child{border-bottom:none}
.fecx .cl-hero-side .k{
  font-family:var(--mono);font-size:11px;letter-spacing:0.04em;color:var(--ink-3);
}
.fecx .cl-hero-side .v{color:var(--ink);font-weight:500}


/* ====================================================================
 * Casino of the Month spotlight (.cl-cofm-*)
 * Lives between hero and alphabet. NOT subject to filter/sort.
 * ==================================================================== */
.fecx .cl-cofm-spotlight{padding:4px 0 24px}
.fecx .cl-cofm-card{
  background:linear-gradient(135deg,var(--accent-soft) 0%,var(--paper) 55%,var(--paper) 100%);
  border:1px solid var(--accent);border-radius:var(--radius);
  padding:28px 32px;display:grid;grid-template-columns:1.4fr 220px;gap:36px;
  align-items:center;position:relative;
}
.fecx .cl-cofm-meta{display:flex;flex-direction:column;gap:12px;min-width:0}
.fecx .cl-cofm-eyebrow{
  font-family:var(--mono);font-size:11px;letter-spacing:0.1em;
  text-transform:uppercase;color:var(--accent-ink);font-weight:700;
}
.fecx .cl-cofm-titlerow{display:flex;align-items:center;gap:16px;min-width:0}
.fecx .cl-cofm-titlerow>div{display:flex;flex-direction:column;flex:1;min-width:0}
.fecx .cl-cofm-name{
  font-family:var(--serif);font-weight:700;
  font-size:clamp(22px,2.4vw,30px);line-height:1.1;letter-spacing:-0.025em;
  color:var(--ink);
}
.fecx .cl-cofm-provider{
  font-size:13px;color:var(--ink-3);font-family:var(--mono);letter-spacing:0.01em;
  margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fecx .cl-cofm-blurb{
  font-size:15px;line-height:1.5;color:var(--ink-2);margin:4px 0;max-width:60ch;
}
.fecx .cl-cofm-stats{
  display:flex;gap:28px;margin-top:4px;padding-top:14px;
  border-top:1px solid rgba(11,107,98,0.18);
}
.fecx .cl-cofm-stats .kv{display:flex;flex-direction:column;gap:3px;font-family:var(--mono)}
.fecx .cl-cofm-stats .k{
  font-size:10px;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink-3);
}
.fecx .cl-cofm-stats .v{
  font-family:var(--serif);font-size:22px;font-weight:700;color:var(--ink);
  letter-spacing:-0.02em;
}
.fecx .cl-cofm-cta{display:flex;flex-direction:column;gap:10px}
.fecx .cl-cofm-cta .btn{justify-content:center;width:100%;padding:13px 18px;font-size:14px}
.fecx .cl-cofm-cta .btn-primary{background:var(--accent);color:#fff}
.fecx .cl-cofm-cta .btn-primary:hover{background:var(--accent-ink)}


/* ====================================================================
 * Editorial intro article (.cl-intro / .cl-intro-card / .cl-intro-body)
 * Renders between COFM spotlight and alphabet bar. Trusted prose body
 * (from jos_content.introtext or jos_categories.description). Sprint 3
 * step 2F.
 * ==================================================================== */
.fecx .cl-intro{padding:4px 0 24px}
.fecx .cl-intro-card{
  background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius);
  padding:28px 36px;
}
.fecx .cl-intro-eyebrow{
  font-family:var(--mono);font-size:11px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--ink-3);font-weight:600;margin-bottom:10px;
}
.fecx .cl-intro-body{
  font-size:15px;line-height:1.65;color:var(--ink-2);max-width:72ch;
}
.fecx .cl-intro-body>*:first-child{margin-top:0}
.fecx .cl-intro-body>*:last-child{margin-bottom:0}
.fecx .cl-intro-body p{margin:0 0 12px}
.fecx .cl-intro-body h2,
.fecx .cl-intro-body h3,
.fecx .cl-intro-body h4{
  font-family:var(--serif);font-weight:700;color:var(--ink);
  margin:22px 0 10px;line-height:1.2;
}
.fecx .cl-intro-body h2{font-size:22px;letter-spacing:-0.015em}
.fecx .cl-intro-body h3{font-size:18px}
.fecx .cl-intro-body h4{font-size:16px}
.fecx .cl-intro-body a{
  color:var(--accent-ink);text-decoration:underline;
  text-decoration-color:var(--rule);text-underline-offset:2px;
}
.fecx .cl-intro-body a:hover{text-decoration-color:var(--accent)}
.fecx .cl-intro-body strong{font-weight:600;color:var(--ink)}
.fecx .cl-intro-body em{font-style:italic}
.fecx .cl-intro-body ul,
.fecx .cl-intro-body ol{margin:8px 0 14px;padding-left:22px}
.fecx .cl-intro-body li{margin-bottom:4px}
.fecx .cl-intro-body blockquote{
  margin:14px 0;padding:4px 0 4px 18px;border-left:3px solid var(--rule);
  color:var(--ink-3);font-style:italic;
}
.fecx .cl-intro-body img{
  max-width:100%;height:auto;border-radius:var(--radius-sm);margin:12px 0;
}

/* Clamp + "Read more" toggle */
.fecx .cl-intro-clampable .cl-intro-clamp{
  position:relative;max-height:20rem;overflow:hidden;
  transition:max-height 0.25s ease-in-out;
}
.fecx .cl-intro-clampable .cl-intro-clamp::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:90px;
  pointer-events:none;
  background:linear-gradient(to bottom,rgba(253,251,246,0) 0%,var(--paper) 80%);
}
.fecx .cl-intro-clampable.is-expanded .cl-intro-clamp{max-height:none}
.fecx .cl-intro-clampable.is-expanded .cl-intro-clamp::after{display:none}
.fecx .cl-intro-clampable.is-not-clampable .cl-intro-clamp{max-height:none}
.fecx .cl-intro-clampable.is-not-clampable .cl-intro-clamp::after{display:none}
.fecx .cl-intro-readmore{
  display:inline-flex;align-items:center;gap:6px;margin-top:14px;
  padding:9px 16px;border-radius:999px;border:1px solid var(--rule);
  background:var(--bg);color:var(--ink);font:inherit;font-size:13px;
  font-weight:500;cursor:pointer;transition:background 0.12s,border-color 0.12s;
}
.fecx .cl-intro-readmore:hover{background:var(--bg-2);border-color:var(--ink-4)}
.fecx .cl-intro-readmore-chev{font-size:10px;color:var(--ink-3)}
.fecx .cl-intro-readmore-less{display:none}
.fecx .cl-intro-clampable.is-expanded .cl-intro-readmore-more{display:none}
.fecx .cl-intro-clampable.is-expanded .cl-intro-readmore-less{
  display:inline-flex;gap:6px;align-items:center;
}
.fecx .cl-intro-clampable.is-not-clampable .cl-intro-readmore{display:none}


/* ====================================================================
 * Alphabet bar (.cl-alphabet-wrap / .cl-alphabet / .cl-alpha-btn)
 * ==================================================================== */
.fecx .cl-alphabet-wrap{padding:4px 0}
.fecx .cl-alphabet{
  display:flex;align-items:center;justify-content:center;gap:8px;padding:20px 0;
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);flex-wrap:wrap;
}
.fecx .cl-alphabet .lbl{
  font-family:var(--mono);font-size:10px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--ink-3);font-weight:600;margin-right:12px;
}
.fecx .cl-alpha-btn{
  width:32px;height:32px;border-radius:50%;display:grid;place-items:center;
  font-family:var(--serif);font-weight:700;font-size:13px;color:var(--ink-2);
  background:transparent;border:1px solid transparent;cursor:pointer;
  transition:background 0.1s ease,color 0.1s ease;
}
.fecx .cl-alpha-btn:hover{background:var(--bg-2);color:var(--ink)}
.fecx .cl-alpha-btn.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.fecx .cl-alpha-btn[data-disabled="true"]{opacity:0.3;cursor:default}


/* ====================================================================
 * Sticky filter bar (.cl-filterbar-wrap / .cl-filterbar)
 * Sticky lives on the WRAP so the parent container height stays right.
 * ==================================================================== */
.fecx .cl-filterbar-wrap{
  /* top:60px clears the global .topbar / .fec-topbar (sticky at top:0,
     z-index:50, height ~60-62px). Matches the convention used by the
     hub-bonuses toolbar and slot filters across the site. */
  position:sticky;top:60px;z-index:5;background:var(--bg);padding:16px 0 8px;
}
.fecx .cl-filterbar-wrap::after{
  content:"";display:block;height:1px;margin:0 auto;
  max-width:var(--maxw);background:transparent;transition:background 0.15s;
}
.fecx .cl-filterbar{
  position:static;display:flex;align-items:center;gap:10px;padding:14px 18px;
  background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius);
  flex-wrap:wrap;
}
.fecx .cl-filterbar .quick-chips{display:flex;gap:6px;flex-wrap:wrap}
.fecx .cl-filterbar .sort-block{margin-left:auto;display:flex;align-items:center;gap:8px}
.fecx .cl-filterbar .sort-block .lbl{
  font-family:var(--mono);font-size:10px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--ink-3);font-weight:600;
}
.fecx .cl-filterbar .sort-block select{
  background:var(--bg);color:var(--ink);border:1px solid var(--rule);
  border-radius:999px;padding:7px 12px;font:inherit;font-size:13px;
  outline:none;cursor:pointer;
}
.fecx .cl-filterbar .showing{
  font-family:var(--mono);font-size:11px;letter-spacing:0.04em;color:var(--ink-3);
  width:100%;padding-top:8px;border-top:1px dashed var(--rule-2);margin-top:4px;
}
.fecx .cl-filterbar .showing b{color:var(--ink);font-weight:700}


/* ====================================================================
 * View toggle (.cl-view-toggle / .cl-view-btn)  -  Row | Grid
 * ==================================================================== */
.fecx .cl-view-toggle{
  display:inline-flex;gap:0;margin-left:6px;
  border:1px solid var(--rule);border-radius:999px;padding:2px;background:var(--bg);
}
.fecx .cl-view-btn{
  background:transparent;border:none;padding:4px 12px;font-size:12px;
  font-family:var(--mono);letter-spacing:0.04em;text-transform:uppercase;
  color:var(--ink-3);cursor:pointer;border-radius:999px;
  transition:background 0.12s,color 0.12s;
}
.fecx .cl-view-btn:hover{color:var(--ink)}
.fecx .cl-view-btn.active{background:var(--ink);color:var(--bg)}


/* ====================================================================
 * Filter chip active state (.chip[data-filter].active)
 * Only when used as a filter chip in the listing - adds ✓ prefix.
 * ==================================================================== */
.fecx .chip[data-filter].active{
  background:var(--ink);color:var(--bg);border-color:var(--ink);
}
.fecx .chip[data-filter].active::before{
  content:"\2713";margin-right:4px;font-weight:700;
}


/* ====================================================================
 * Main + list stack + list card (row-full-width listing layout)
 * ==================================================================== */
.fecx .cl-main{padding:8px 0 48px}
.fecx .cl-empty{padding:60px 0;text-align:center;color:var(--ink-3)}
.fecx .cl-list-stack{display:flex;flex-direction:column;gap:12px}

/* The card itself: 4-col grid laying .review-* blocks horizontally */
.fecx .review-card.cl-list-card{
  position:relative;            /* anchor for .editors-pick::before ribbon */
  overflow:visible;             /* don't clip the ribbon that sits above top edge */
  display:grid;grid-template-columns:1.7fr 200px 1fr 220px;gap:28px;
  align-items:center;padding:18px 24px;
}

/* Listing-specific head wrapper */
.fecx .cl-list-card .review-head{margin-bottom:0;min-width:0}
.fecx .cl-list-card .review-head>div{
  display:flex;flex-direction:column;flex:1;min-width:0;
}
.fecx .cl-list-card .review-name{
  font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fecx .cl-list-card .review-sub{
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fecx .cl-list-provsep{color:var(--ink-4);margin:0 2px;font-weight:400}

/* Score block: no internal padding/borders (grid cells provide separation) */
.fecx .cl-list-card .score-block{
  padding:0;border-top:none;border-bottom:none;margin-bottom:0;
  flex-direction:column;align-items:flex-start;gap:2px;
  border-left:1px solid var(--rule-2);padding-left:24px;
}
.fecx .cl-list-card .score-num{font-size:32px}
.fecx .cl-list-card .score-rank{margin-left:0;margin-top:4px}

/* Meta: keep 3-col KV; left-bordered divider */
.fecx .cl-list-card .review-meta{
  margin-bottom:0;border-left:1px solid var(--rule-2);padding-left:24px;
}

/* Actions: stack vertically inside the row cell */
.fecx .cl-list-card .review-actions{
  flex-direction:column;align-items:stretch;
  border-left:1px solid var(--rule-2);padding-left:24px;
}
.fecx .cl-list-card .review-actions .btn,
.fecx .cl-list-card .review-actions .btn-disabled{
  justify-content:center;width:100%;padding:9px 14px;font-size:13px;
}

/* State opacity + border tone (soft visibility for non-ACTIVE) */
.fecx .cl-list-card[data-status="closed"],
.fecx .cl-list-card[data-status="suspended"],
.fecx .cl-list-card[data-status="blacklisted"]{opacity:0.88}
.fecx .cl-list-card[data-status="blacklisted"]{border-color:rgba(154,40,40,0.35)}
.fecx .cl-list-card[data-status="unavailable"]{opacity:0.75}


/* ====================================================================
 * Floating tags and Editor's Pick variant
 * ==================================================================== */
.fecx .cl-list-newtag{
  position:absolute;top:-1px;right:22px;transform:translateY(-50%);
  background:var(--accent-soft);color:var(--accent-ink);
  font-family:var(--mono);font-size:9px;letter-spacing:0.08em;
  text-transform:uppercase;padding:2px 8px;border-radius:999px;
  border:1px solid var(--paper);font-weight:700;
}

.fecx .cl-list-card.editors-pick{
  border-color:var(--accent);
  background:linear-gradient(180deg,var(--accent-soft) 0%,var(--paper) 35%);
}
.fecx .cl-list-card.editors-pick::before{
  content:"\2605 EDITOR'S PICK";position:absolute;top:-1px;left:22px;
  transform:translateY(-50%);font-family:var(--mono);font-size:10px;
  letter-spacing:0.1em;padding:4px 10px;background:var(--accent);color:#fff;
  border-radius:999px;font-weight:600;
}
.fecx .cl-list-card.editors-pick .review-name{color:var(--accent-ink)}
.fecx .cl-list-card.editors-pick .score-num{color:var(--accent-ink)}
.fecx .cl-list-card.editors-pick .btn-primary{background:var(--accent);color:#fff}
.fecx .cl-list-card.editors-pick .btn-primary:hover{background:var(--accent-ink)}


/* ====================================================================
 * Grid view (data-view="grid") - resets the .cl-list-card row override
 * back to the vertical .review-card stack, in a 3-col grid.
 * ==================================================================== */
.fecx .cl-list-stack[data-view="grid"]{
  display:grid;grid-template-columns:repeat(3,1fr);gap:16px;
}
.fecx .cl-list-stack[data-view="grid"] .review-card.cl-list-card{
  display:flex;flex-direction:column;gap:12px;padding:20px;align-items:stretch;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-head{margin-bottom:0}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-name{
  font-size:15px;white-space:normal;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-sub{
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .score-block{
  flex-direction:row;align-items:baseline;gap:8px;padding:10px 0;
  border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2);
  border-left:none;padding-left:0;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .score-num{font-size:32px}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .score-rank{margin-left:auto;margin-top:0}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-meta{
  border-left:none;padding-left:0;margin:0;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-actions{
  flex-direction:row;border-left:none;padding-left:0;margin-top:auto;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-actions .btn,
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .review-actions .btn-disabled{
  flex:1;font-size:12px;padding:8px 10px;
}
/* CTA parity (sprint 3): hide the .why fragment ("IN YOUR REGION", etc)
   inside .btn-disabled when in grid view, so the button text fits on
   one line and matches the height of the sibling "Read review" / "Visit
   casino" buttons. The .why text stays in the DOM (aria-label on the
   parent still announces it to screen readers). */
.fecx .cl-list-stack[data-view="grid"] .cl-list-card .btn-disabled .why{
  display:none;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-card.editors-pick::before{
  left:16px;font-size:9px;padding:3px 8px;
}
.fecx .cl-list-stack[data-view="grid"] .cl-list-newtag{right:16px}


/* ====================================================================
 * JS-driven states - filter hide + infinite scroll pending
 * ==================================================================== */
.fecx .cl-list-card.cl-hidden{display:none !important}
.fecx .cl-list-card.cl-pending{display:none !important}


/* ====================================================================
 * Infinite-scroll sentinel  (60px-tall trigger after the stack)
 * ==================================================================== */
.fecx .cl-list-sentinel{
  height:60px;display:flex;align-items:center;justify-content:center;
  margin-top:16px;font-family:var(--mono);font-size:11px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--ink-4);
}
.fecx .cl-list-sentinel[hidden]{display:none}
.fecx .cl-list-sentinel-label::before{content:"\2193  ";margin-right:4px}


/* ====================================================================
 * Empty-filtered state  (revealed by JS when all cards filtered out)
 * ==================================================================== */
.fecx .cl-empty-filtered{
  display:flex;flex-direction:column;align-items:center;gap:10px;
  padding:50px 28px;margin-top:12px;background:var(--paper);
  border:1px dashed var(--rule);border-radius:var(--radius);text-align:center;
}
.fecx .cl-empty-filtered[hidden]{display:none}
.fecx .cl-empty-filtered-icon{
  font-family:var(--mono);font-size:22px;color:var(--ink-4);letter-spacing:0.2em;
}
.fecx .cl-empty-filtered-title{
  font-family:var(--serif);font-size:18px;color:var(--ink);font-weight:600;
}
.fecx .cl-empty-filtered-hint{font-size:13px;color:var(--ink-3);margin-bottom:6px}


/* ====================================================================
 * Responsive
 *   <1100  row layout drops the meta column
 *   <900   hero + COFM collapse to 1-col; grid view -> 2-col
 *   <800   row layout collapses to vertical stack
 *   <600   alphabet bar tighter; grid view -> 1-col
 * ==================================================================== */

@media (max-width:1100px){
  .fecx .review-card.cl-list-card{
    grid-template-columns:1.5fr 160px 220px;gap:20px;
  }
  .fecx .cl-list-card .review-meta{display:none}
}

@media (max-width:900px){
  .fecx .cl-hero-card{grid-template-columns:1fr;gap:16px}
  .fecx .cl-hero-side{
    border-left:none;padding-left:0;
    border-top:1px solid var(--rule-2);padding-top:16px;
  }
  .fecx .cl-list-stack[data-view="grid"]{grid-template-columns:repeat(2,1fr)}
}

@media (max-width:800px){
  .fecx .review-card.cl-list-card{
    grid-template-columns:1fr;gap:14px;padding:18px;
  }
  .fecx .cl-list-card .score-block,
  .fecx .cl-list-card .review-actions{
    border-left:none;padding-left:0;
    border-top:1px solid var(--rule-2);padding-top:14px;
  }
  .fecx .cl-list-card .score-block{flex-direction:row;align-items:baseline}
  .fecx .cl-list-card .score-rank{margin-left:auto}
  .fecx .cl-list-card .review-meta{
    display:grid;border-left:none;padding-left:0;
    border-top:1px solid var(--rule-2);padding-top:14px;
  }
  .fecx .cl-list-card .review-actions{flex-direction:row}
  .fecx .cl-list-card .review-actions .btn,
  .fecx .cl-list-card .review-actions .btn-disabled{flex:1}
  /* CTA parity in mobile row view: same as grid - hide .why so the
     disabled button matches the height of "Read review" / "Visit casino". */
  .fecx .cl-list-card .btn-disabled .why{display:none}
  .fecx .cl-cofm-card{grid-template-columns:1fr;gap:20px;padding:22px}
  .fecx .cl-cofm-stats{flex-wrap:wrap;gap:18px}
  .fecx .cl-cofm-stats .v{font-size:18px}
  .fecx .cl-intro-card{padding:22px}
  .fecx .cl-intro-body{font-size:14px}
  .fecx .cl-intro-clampable .cl-intro-clamp{max-height:16rem}

  /* Filter chips: horizontal scroll on narrow viewports with a right-edge
     fade signaling there's more to scroll (pattern aligned to hub-bonuses
     .hub-browse). Hides the scrollbar but keeps the area swipe-friendly. */
  .fecx .cl-filterbar{gap:14px}   /* more breathing room between wrapped rows */
  .fecx .cl-filterbar .quick-chips{
    flex-wrap:nowrap;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;                          /* Firefox */
    padding-right:28px;
    -webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);
            mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);
  }
  .fecx .cl-filterbar .quick-chips::-webkit-scrollbar{display:none} /* WebKit */
  .fecx .cl-filterbar .quick-chips .chip{flex:0 0 auto;white-space:nowrap}

  /* Hide the Row/Grid toggle on narrow viewports - the grid is forced
     to one column at this width anyway, so the toggle is redundant. */
  .fecx .cl-filterbar .cl-view-toggle{display:none}
}

@media (max-width:600px){
  .fecx .cl-alphabet{gap:4px}
  .fecx .cl-alpha-btn{width:28px;height:28px;font-size:12px}
  .fecx .cl-alphabet .lbl{display:none}
  .fecx .cl-list-stack[data-view="grid"]{grid-template-columns:1fr}
}


/* ====================================================================
 * Sticky boundary for the filter toolbar (.cl-filterbar inside)
 * Wrapper added by the lib around filterbar + .cl-main (the list stack
 * + pagination). position:relative makes this the containing block for
 * the sticky child, so scrolling past .listing-results breaks the
 * sticky - the filterbar stops following at the end of the directory,
 * before the editorial intro article.
 * ==================================================================== */
.fecx .listing-results{position:relative}


/* ====================================================================
 * Casino of the Month - accent override (sprint 3 step 2E v3)
 * Differentiates COFM from .cl-list-card.editors-pick (which uses the
 * editorial green --accent). COFM gets a warm amber/gold palette to
 * read as "award/feature of the month" rather than "editorial pick"
 * (similar but semantically distinct). Local CSS vars only - no global
 * tokens touched, fully revertible by removing this block.
 * ==================================================================== */
.fecx .cl-cofm-card{
  --cofm-accent: #b07300;        /* amber-700: distinct from --accent green */
  --cofm-accent-ink: #6b4400;    /* amber-900: deeper for text + hover */
  --cofm-accent-soft: #fdf6e3;   /* warm cream wash, neutral against paper */
  background:linear-gradient(135deg,var(--cofm-accent-soft) 0%,var(--paper) 55%,var(--paper) 100%);
  border-color:var(--cofm-accent);
}
.fecx .cl-cofm-eyebrow{color:var(--cofm-accent-ink)}
.fecx .cl-cofm-stats{border-top-color:rgba(176,115,0,0.18)}
.fecx .cl-cofm-cta .btn-primary{background:var(--cofm-accent);color:#fff}
.fecx .cl-cofm-cta .btn-primary:hover{background:var(--cofm-accent-ink)}

/* Eyebrow row holds the "Casino of the Month · May 2026" label and the
   info popover trigger button side by side. Wraps gracefully on narrow
   viewports (info button drops below the label). */
.fecx .cl-cofm-eyebrow-row{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  margin-bottom:8px;
}
.fecx .cl-cofm-eyebrow-row .cl-cofm-eyebrow{margin:0}
/* Info button: amber-toned to harmonize with the COFM accent (the
   bonuses-hub instance uses the editorial green) */
.fecx .cl-cofm-card .fec-info-btn{
  color:var(--cofm-accent-ink);
  border-color:var(--cofm-accent);
}
.fecx .cl-cofm-card .fec-info-btn:hover,
.fecx .cl-cofm-card .fec-info-btn:focus{
  background:var(--cofm-accent-soft);
  border-color:var(--cofm-accent-ink);
}

/* end SPRINT3_listing_full.css */


/* ====================================================================
 * Casino of the Month - single review page amber overrides
 * ====================================================================
 * Matches the listing-page COFM accent (amber gold) on the single
 * review page. Two surfaces:
 *
 *   - .cr-badge--cofm        Hero eyebrow pill ("Casino of the Month · Aug 1, 2021")
 *   - .cr-side-card--cofm    Sidebar archive card (footer of the right column)
 *
 * Previously both used .--info (generic blue/cyan info palette) which
 * collided with the editorial green accent. Distinct amber signals
 * "award/feature of the month" rather than "informational" or "editorial
 * pick".
 * ==================================================================== */
.fecx .cr-badge--cofm{
  background:#fdf6e3;
  color:#6b4400;
  border:1px solid #b07300;
}
.fecx .cr-side-card--cofm{
  background:#fdf6e3;
  border-color:#b07300;
}
.fecx .cr-side-card--cofm h3{color:#6b4400}
.fecx .cr-side-card--cofm .cr-side-status{color:#b07300}


/* ====================================================================
 * Sidebar additions (sprint 3 - single review page refinement)
 *
 * cr-side-chip--restricted : warn/danger accent for Restricted Countries
 *                            chips (not accepted here, semantically
 *                            distinct from neutral Software/Banking).
 * cr-yesno + cr-yesno--yes/no : Yes/No badge in the Casino Details k/v
 *                            row (used for Live support). Yes = verified
 *                            green + check icon; No = inert grey.
 * ==================================================================== */
.fecx .cr-side-chip--restricted{
  background:rgba(154,40,40,0.07);
  color:var(--danger);
  border-color:rgba(154,40,40,0.20);
}

.fecx .cr-yesno{
  display:inline-flex;align-items:center;gap:6px;font-weight:600;
}
.fecx .cr-yesno--yes{color:var(--verified)}
.fecx .cr-yesno--no{color:var(--ink-4)}
.fecx .cr-yesno-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:16px;height:16px;border-radius:50%;
  background:var(--verified);color:#fff;
  font-size:10px;line-height:1;font-weight:700;
}

/* Sidebar chip truncation: native <details>/<summary> toggle - no JS.
   Pattern aligned to hub-bonuses .bd-elig-list. display:contents on
   the <details> so its children participate in the parent flex wrap.
   :not([open]) hides the collapsed chips and shows the +N more link;
   [open] shows the chips and hides the link. */
.fecx .cr-side-chips-more{display:contents}
.fecx .cr-side-chips-more:not([open]) > .cr-side-chip{display:none}
.fecx .cr-side-chips-more[open] > .cr-side-chip-more{display:none}
.fecx .cr-side-chip-more{
  display:inline-block;
  padding:5px 10px;
  font-size:12px;
  color:var(--accent);
  border-bottom:1px dotted var(--accent);
  cursor:pointer;
  list-style:none;
  font-family:var(--mono);
}
.fecx .cr-side-chip-more::-webkit-details-marker{display:none}
.fecx .cr-side-chip-more::after{content:" \203A";margin-left:2px}


/* ====================================================================
 * Withdrawal tile - empty state microcopy
 * Used when a payment method has neither Time nor Limits populated.
 * Replaces the previous two em-dash placeholders ("—/—") with a single
 * clearer "Not offered" italic line, sitting where the rows would be.
 * ==================================================================== */
.fecx .cr-wd-tile__notoffered{
  font-size:13px;
  color:var(--ink-4);
  font-style:italic;
  text-align:center;
  padding:24px 0;
  letter-spacing:0.01em;
}


/* ====================================================================
 * Review form refinements (Sprint 3 - single review page)
 *
 * 1. Stars inactive: bump contrast from 0.18 to 0.32 alpha so they
 *    don't disappear into the paper background.
 * 2. Counter live color states: red below min, green in range,
 *    amber near max, red at cap. Driven by an inline IIFE in the form.
 * 3. Submit button loading state: inline spinner + visually disabled
 *    pointer-events. Label is replaced by "Submitting..." via JS.
 * ==================================================================== */

/* Stars - inactive state more visible */
.fecx .cr-rw-stars label{
  color:rgba(20,17,13,0.32);  /* override from 0.18 (too pale on paper) */
}

/* Counter live color states (BEM modifiers, applied by IIFE) */
.fecx .cr-rw-counter-value--below-min{color:var(--danger)}
.fecx .cr-rw-counter-value--ok{color:var(--verified)}
.fecx .cr-rw-counter-value--near-max{color:var(--warn)}
.fecx .cr-rw-counter-value--max{color:var(--danger)}

/* Submit button loading state */
.fecx .cr-rw-submit--loading{
  pointer-events:none;
  opacity:0.85;
}
.fecx .cr-rw-submit--loading::after{
  content:"";
  display:inline-block;
  width:14px;height:14px;
  margin-left:8px;
  vertical-align:-2px;
  border:2px solid currentColor;
  border-top-color:transparent;
  border-radius:50%;
  animation:cr-rw-spin 0.8s linear infinite;
}
@keyframes cr-rw-spin{ to{ transform:rotate(360deg); } }


/* ====================================================================
 * Player reviews section refinements
 *
 * 1. cr-reviews-write: the summary card's "+ Write a review" anchor
 *    previously had no CSS at all - inherited generic <a> styling and
 *    rendered as an unreadable solid-black box (text color matched bg).
 *    Style it as a clear secondary CTA (ghost button with accent border).
 *
 * 2. cr-review-item--hidden: client-side pagination. The lib emits the
 *    first N reviews visible, the rest with this modifier. The
 *    "Show more reviews" button (.cr-reviews-loadmore) reveals next N
 *    per click and updates the counter.
 * ==================================================================== */

/* Summary card "Write a review" anchor → ghost CTA */
.fecx .cr-reviews-write{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:10px 18px;
  border-radius:999px;
  background:transparent;
  color:var(--ink);
  border:1px solid var(--ink);
  font-weight:600;
  font-size:14px;
  text-decoration:none;
  transition:background 0.15s, color 0.15s;
  white-space:nowrap;
}
.fecx .cr-reviews-write:hover{
  background:var(--ink);
  color:var(--paper);
}

/* Pagination - hidden review items */
.fecx .cr-review-item--hidden{display:none}

/* Load-more control: button + counter */
.fecx .cr-reviews-loadmore{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:16px;
  flex-wrap:wrap;
  margin:20px 0 4px;
  padding:16px;
}
.fecx .cr-reviews-loadmore__btn{
  appearance:none;
  background:transparent;
  border:1px solid var(--rule);
  color:var(--ink);
  padding:10px 22px;
  border-radius:999px;
  font-weight:600;
  font-size:14px;
  cursor:pointer;
  transition:border-color 0.15s, background 0.15s;
}
.fecx .cr-reviews-loadmore__btn:hover{
  background:var(--bg-2);
  border-color:var(--ink-3);
}
.fecx .cr-reviews-loadmore__counter{
  font-size:13px;
  color:var(--ink-3);
  font-family:var(--mono);
}
.fecx .cr-reviews-loadmore__counter strong{
  color:var(--ink);
  font-weight:700;
}


/* ====================================================================
 * Frank Score info popover - sits inside .cr-frank, anchored at the
 * bottom of the side panel. Reuses .fec-info-btn / .fec-info-popover
 * classes already styled in fec-edition.css.
 *
 * NOTE: fecv2.css owns the popover's layout (position/padding/shadow)
 * but scopes the rules deeper than .fec-editors-picks__info alone -
 * they don't cascade when the wrapper is just .cr-frank-info. So we
 * re-declare the layout primitives here for the single-review hero
 * usage; the editorial green/cream colours still come from fec-edition.
 * ==================================================================== */
.fecx .cr-frank-info{
  position:relative;          /* anchor for the absolute popover */
  margin-top:12px;
  display:flex;
  justify-content:flex-end;   /* right-aligned under the influence bars */
}
.fecx .cr-frank-info .fec-info-popover{
  /* !important here intentional: fecv2.css base layer scopes position
     under .fec-editors-picks (the full picks band wrapper, not just
     .fec-editors-picks__info), so its rules win specificity even though
     we're inside that __info class. Workaround until we can refactor
     fecv2.css to use a lower-specificity base. */
  position:absolute !important;
  bottom:100% !important;
  right:0 !important;
  left:auto !important;
  top:auto !important;
  margin-bottom:10px;
  width:320px;
  max-width:90vw;
  padding:16px 20px;
  background:var(--paper);
  border:1px solid var(--rule);
  border-radius:12px;
  box-shadow:0 12px 36px rgba(0,0,0,0.18);
  z-index:1001 !important;
}
.fecx .cr-frank-info .fec-info-popover[hidden]{display:none}
.fecx .cr-frank-info .fec-info-popover__arrow{
  position:absolute;
  top:100%;                   /* arrow below popover, pointing down toward the button */
  right:24px;
  width:12px;height:12px;
  background:var(--paper);
  border-right:1px solid var(--rule);
  border-bottom:1px solid var(--rule);
  transform:translateY(-6px) rotate(45deg);
}
.fecx .cr-frank-info .fec-info-popover__title{
  margin:0 0 8px;font-size:15px;font-weight:700;
}
.fecx .cr-frank-info .fec-info-popover__intro{
  margin:0 0 12px;font-size:13px;line-height:1.5;
}
.fecx .cr-frank-info .fec-info-popover__list{
  list-style:none;margin:0 0 12px;padding:0;
}
.fecx .cr-frank-info .fec-info-popover__list li{
  display:flex;justify-content:space-between;align-items:center;
  padding:8px 12px;margin-bottom:4px;border-radius:8px;font-size:13px;
}
.fecx .cr-frank-info .fec-info-popover__metric{font-weight:500}
.fecx .cr-frank-info .fec-info-popover__weight{font-weight:600;font-family:var(--mono);font-size:12px}
.fecx .cr-frank-info .fec-info-popover__note{
  margin:12px 0;padding-top:12px;border-top:1px solid var(--rule);
  font-size:12px;line-height:1.5;
}
.fecx .cr-frank-info .fec-info-popover__link{
  font-weight:600;font-size:13px;text-decoration:none;
}
.fecx .cr-frank-info .fec-info-popover__close{
  position:absolute;top:8px;right:10px;
  background:none;border:0;font-size:20px;line-height:1;cursor:pointer;padding:4px 8px;
}

/* Mobile: full-width bottom sheet */
@media (max-width:560px){
  .fecx .cr-frank-info .fec-info-popover{
    position:fixed !important;
    bottom:0 !important;left:0 !important;right:0 !important;
    top:auto !important;
    width:100% !important;max-width:100% !important;
    border-radius:16px 16px 0 0;
    margin:0;padding:20px 20px 32px;
    box-shadow:0 -8px 32px rgba(0,0,0,0.24);
    z-index:1001 !important;
  }
  .fecx .cr-frank-info .fec-info-popover__arrow{display:none}
}

/* Backdrop: shared across all .fec-info-popover instances (created
   dynamically via JS as .fec-info-backdrop appended to body). Explicit
   z-index just below any popover (1001), and a dim rgba background. */
.fecx .fec-info-backdrop,
.fec-info-backdrop{
  position:fixed;
  inset:0;
  background:rgba(20,17,13,0.48);
  z-index:1000;
}



/* ====================================================================
 * SPRINT 1+2 SINGLE REVIEW PAGE - BASE LAYER
 * Late migration from the sandbox <style> inline (fec_template_test.php
 * lines 269-1745). These rules define the markup primitives for the
 * single casino review (.cr-hero-card, .cr-stats-strip, .cr-side-card,
 * .cr-review-item, .cr-wd-tile, etc) and were never moved to the
 * production stylesheet during sprint 1+2 because the sandbox carried
 * them inline. The SPRINT3 refinements above override them where needed
 * via the higher-specificity .fecx selector.
 * ==================================================================== */
.cr-breadcrumb {
  padding: 16px 28px 0;
}
.cr-breadcrumb ol {
  list-style: none; padding: 0; margin: 0;
  display: flex; gap: 8px; flex-wrap: wrap;
  font-size: 13px; color: var(--ink-3);
}
.cr-breadcrumb li:not(:first-child)::before {
  content: "›"; color: var(--ink-4); margin-right: 8px;
}
.cr-breadcrumb a { color: var(--ink-3); }
.cr-breadcrumb a:hover { color: var(--accent); }
.cr-breadcrumb li[aria-current="page"] { color: var(--ink); font-weight: 500; }

/* ---- Eyebrow ---- */
.cr-eyebrow {
  font: 11px/1.4 var(--mono);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-3);
}

/* ---- Hero card ---- */
.cr-hero { padding: 24px 0 8px; }
.cr-hero-card {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 32px;
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 40px;
  align-items: start;
}
.cr-hero-left { display: flex; flex-direction: column; gap: 20px; }
.cr-hero-name-row { display: flex; align-items: center; gap: 16px; margin-top: 4px; }
.cr-hero-title {
  font-size: 36px; line-height: 1.1; margin: 0;
  font-weight: 700; letter-spacing: -0.02em;
  color: var(--ink);
}
.cr-hero-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  padding: 16px 0;
  border-top: 1px solid var(--rule-2);
  border-bottom: 1px solid var(--rule-2);
}
.cr-hero-stat .k {
  font: 11px var(--mono); letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--ink-3); margin-bottom: 4px;
}
.cr-hero-stat .v {
  font-size: 22px; font-weight: 700; color: var(--ink);
  line-height: 1.2;
}
.cr-hero-stat .v sup { font-size: 12px; font-weight: 500; color: var(--ink-3); margin-left: 2px; }

/* ---- Stars ---- */
.cr-stars {
  font-size: 14px; letter-spacing: 1px; color: var(--warn);
  display: inline-block; vertical-align: middle;
}
.cr-stars-half { color: var(--warn); }
.cr-stars-empty { color: var(--rule); }

/* ---- Sentiment bar ---- */
.cr-sentiment { display: flex; flex-direction: column; gap: 8px; }
.cr-sentiment-bar {
  height: 8px; border-radius: 4px; overflow: hidden;
  background: var(--bg-2);
  display: flex;
}
.cr-sentiment-bar .seg { height: 100%; transition: width 0.3s; }
.cr-sentiment-bar .seg-pos { background: var(--verified); }
.cr-sentiment-bar .seg-neu { background: var(--neu); }
.cr-sentiment-bar .seg-neg { background: var(--danger); }
.cr-sentiment-legend {
  display: flex; gap: 16px; font-size: 12px;
  color: var(--ink-3);
}
.cr-sentiment-legend .item { display: inline-flex; align-items: center; gap: 4px; }
.cr-sentiment-legend .item.pos::before { content:""; width:8px; height:8px; border-radius:50%; background: var(--verified); display:inline-block; }
.cr-sentiment-legend .item.neu::before { content:""; width:8px; height:8px; border-radius:50%; background: var(--neu); display:inline-block; }
.cr-sentiment-legend .item.neg::before { content:""; width:8px; height:8px; border-radius:50%; background: var(--danger); display:inline-block; }
.cr-sentiment-legend b { color: var(--ink); font-weight: 700; }
.cr-sentiment-empty {
  padding: 12px 16px; background: var(--bg-2); border-radius: var(--radius-sm);
  color: var(--ink-3); font-size: 13px; text-align: center;
}

/* ---- CTAs ---- */
.cr-hero-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: 6px; padding: 12px 20px; border-radius: var(--radius-sm);
  font-weight: 600; font-size: 14px; border: 1px solid transparent;
  cursor: pointer; transition: background 0.15s, transform 0.05s;
  text-decoration: none;
}
.btn:active { transform: translateY(1px); }
.btn-primary {
  background: var(--accent); color: white;
}
.btn-primary:hover { background: #084842; }
.btn-ghost {
  background: transparent; color: var(--ink-2);
  border-color: var(--rule);
}
.btn-ghost:hover { background: var(--bg-2); border-color: var(--ink-4); }
.btn-sm { padding: 8px 14px; font-size: 13px; }
.cr-arr { font-size: 16px; line-height: 1; }

/* ---- Brand chip ---- */
.cr-chip {
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; color: white; font-weight: 700;
  line-height: 1; flex-shrink: 0;
}

/* ---- Frank Score panel ---- */
.cr-frank {
  background: var(--bg-2);
  border-radius: var(--radius);
  padding: 24px;
  display: flex; flex-direction: column; gap: 20px;
}
.cr-frank-top { display: flex; gap: 20px; align-items: center; }

.cr-donut { position: relative; flex-shrink: 0; }
.cr-donut svg { display: block; width: 100%; height: 100%; }
.cr-donut-center {
  position: absolute; inset: 0;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  text-align: center;
}
.cr-donut-v { font-size: 28px; font-weight: 700; color: var(--ink); }
.cr-donut-lbl {
  font: 10px var(--mono); letter-spacing: 0.15em;
  text-transform: uppercase; color: var(--ink-3); margin-top: 2px;
}

.cr-frank-components { flex: 1; display: flex; flex-direction: column; gap: 8px; }
.cr-frank-comp {
  display: grid; grid-template-columns: 12px 1fr auto;
  align-items: center; gap: 8px;
  font-size: 13px;
}
.cr-frank-comp .swatch {
  width: 10px; height: 10px; border-radius: 50%;
}
.cr-frank-comp .lbl { color: var(--ink-2); }
.cr-frank-comp .v { font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }

.cr-influence { display: flex; flex-direction: column; gap: 12px; }
.cr-influence-row .row-top {
  display: flex; justify-content: space-between;
  font-size: 12px; color: var(--ink-3); margin-bottom: 4px;
}
.cr-influence-row .row-top .k { font: 11px var(--mono); letter-spacing: 0.08em; text-transform: uppercase; }
.cr-influence-row .row-top .v { font-weight: 700; color: var(--ink); font-size: 14px; }
.cr-influence-row .row-top .v sup { font-size: 9px; }
.cr-influence-row .bar {
  height: 6px; background: var(--paper); border-radius: 3px; overflow: hidden;
}
.cr-influence-row .bar span { display: block; height: 100%; transition: width 0.3s; }

/* ---- Stats strip ---- */
.cr-stats-strip { padding: 8px 0 24px; }
.cr-stats-row {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  display: grid;
  grid-template-columns: repeat(5, 1fr);
}
.cr-stats-row .stat {
  padding: 16px 20px;
  border-right: 1px solid var(--rule-2);
}
.cr-stats-row .stat:last-child { border-right: none; }
.cr-stats-row .stat .k {
  font: 11px var(--mono); letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--ink-3); margin-bottom: 6px;
}
.cr-stats-row .stat .v {
  font-size: 18px; font-weight: 700; color: var(--ink);
  display: flex; align-items: center; gap: 8px;
}
.cr-stats-row .stat .v.mono { font-family: var(--mono); font-size: 14px; }
.cr-stats-row .stat .v.sentiment { color: var(--verified); }
.cr-stats-row .stat .v sup { font-size: 11px; font-weight: 500; color: var(--ink-3); }

/* ---- Main 2-col layout ---- */
.cr-main {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: 40px;
  padding: 24px 0;
}
.cr-content {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 32px;
}
.cr-content h1, .cr-content h2, .cr-content h3 {
  color: var(--ink); margin-top: 1.2em;
}
.cr-content h2 { font-size: 22px; margin-top: 1.4em; }
.cr-content h3 { font-size: 17px; margin-top: 1.2em; }
.cr-content p { margin: 0.9em 0; }
.cr-content a { color: var(--accent); text-decoration: underline; }

/* ---- Sidebar ---- */
.cr-sidebar { display: flex; flex-direction: column; gap: 16px; }
.cr-side-card {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 20px;
}
.cr-side-card h3 {
  font-size: 13px; font-family: var(--mono);
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--ink-3); margin: 0 0 14px;
  display: flex; align-items: center; justify-content: space-between;
}
.cr-side-count { color: var(--ink-4); font-weight: 500; }
.cr-side-row {
  display: grid; grid-template-columns: 100px 1fr;
  gap: 10px; padding: 8px 0;
  border-top: 1px solid var(--rule-2);
  font-size: 13px;
}
.cr-side-row:first-of-type { border-top: none; padding-top: 0; }
.cr-side-row .k { color: var(--ink-3); font-size: 12px; }
.cr-side-row .v { color: var(--ink); font-weight: 500; }
.cr-side-row .v a { color: var(--accent); text-decoration: underline; }
.cr-side-chips {
  display: flex; flex-wrap: wrap; gap: 6px;
}
.cr-side-chip {
  display: inline-block;
  padding: 4px 10px;
  background: var(--bg-2);
  border-radius: 100px;
  font-size: 12px;
  color: var(--ink-2);
}

/* ---- Placeholder section ---- */
.placeholder {
  background: var(--paper);
  border: 1px dashed var(--rule);
  border-radius: var(--radius);
  padding: 20px 28px;
  margin: 16px 0;
  color: var(--ink-3);
  font-size: 13px;
  font-family: var(--mono);
}
.placeholder b { color: var(--warn); }

/* ---- Player reviews ---- */
.cr-reviews { padding: 24px 0; background: var(--bg-2); }
.cr-reviews h2 {
  font-size: 26px; color: var(--ink);
  margin: 0 0 24px; letter-spacing: -0.01em;
}
.cr-reviews-summary {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 24px 28px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 32px;
  align-items: center;
  margin-bottom: 16px;
}
.cr-reviews-summary .count-block .count {
  font-size: 36px; font-weight: 700; color: var(--ink);
  display: block; line-height: 1;
}
.cr-reviews-summary .count-block .count-lbl {
  font: 11px var(--mono); color: var(--ink-3);
  letter-spacing: 0.08em; text-transform: uppercase;
}
.cr-reviews-summary .overall {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.cr-reviews-summary .overall .lbl {
  font: 11px var(--mono); color: var(--ink-3);
  letter-spacing: 0.08em; text-transform: uppercase;
  margin-right: 4px;
}
.cr-reviews-summary .overall .score {
  font-size: 24px; font-weight: 700; color: var(--ink);
}
.cr-reviews-summary .overall .sep { color: var(--rule); }
.cr-reviews-summary .overall .sent { color: var(--verified); font-weight: 600; font-size: 13px; }
.cr-reviews-write {
  padding: 10px 18px;
  background: var(--ink);
  color: white;
  border-radius: var(--radius-sm);
  font-weight: 600;
  font-size: 13px;
  cursor: pointer;
  border: none;
}
.cr-reviews-write:hover { background: var(--ink-2); }
.cr-review-list { display: flex; flex-direction: column; gap: 12px; }
.cr-review-item {
  background: var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 20px 24px;
}
.cr-review-head {
  display: grid;
  grid-template-columns: 36px 1fr auto;
  gap: 12px;
  align-items: center;
  margin-bottom: 8px;
}
.cr-review-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--accent); color: white;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 14px;
}
.cr-review-who { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cr-review-who .user { font-weight: 700; color: var(--ink); font-size: 14px; }
.cr-review-who .badge {
  font-size: 11px; color: var(--ink-3);
  background: var(--bg-2);
  padding: 2px 8px; border-radius: 100px;
}
.cr-review-meta { text-align: right; }
.cr-review-meta .date {
  display: block; font: 11px var(--mono);
  color: var(--ink-4); margin-top: 2px;
}
.cr-review-text {
  margin: 8px 0 0;
  color: var(--ink-2);
  font-size: 14px; line-height: 1.6;
}
.cr-review-criteria {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 12px; margin: 12px 0 0;
  padding: 12px 0 0; border-top: 1px solid var(--rule-2);
}
.cr-review-criteria > div {
  display: flex; flex-direction: column; align-items: flex-start;
}
.cr-review-criteria dt {
  font: 10px var(--mono); color: var(--ink-3);
  letter-spacing: 0.1em; text-transform: uppercase;
}
.cr-review-criteria dd {
  margin: 0; font-weight: 700; color: var(--ink);
  font-size: 14px;
}
.cr-review-reply {
  margin: 12px 0 0; padding: 12px 16px;
  background: var(--bg-2); border-radius: var(--radius-sm);
  border-left: 3px solid var(--accent);
}
.cr-review-reply .reply-head {
  font: 11px var(--mono); color: var(--accent);
  letter-spacing: 0.08em; text-transform: uppercase;
  margin-bottom: 6px;
}
.cr-review-reply p { margin: 0; color: var(--ink-2); font-size: 13px; }

.cr-reviews-empty {
  background: var(--paper);
  border: 1px dashed var(--rule);
  border-radius: var(--radius);
  padding: 32px;
  text-align: center;
  color: var(--ink-3);
}
.cr-reviews-empty p { margin: 0 0 16px; }

/* ---- Footer ---- */
.test-footer {
  background: var(--ink); color: var(--ink-4);
  padding: 24px 28px; text-align: center;
  font: 12px var(--mono);
}
.test-footer b { color: var(--verified); }

/* ---- Responsive ---- */
@media (max-width: 980px) {
  .cr-hero-card { grid-template-columns: 1fr; }
  .cr-stats-row { grid-template-columns: repeat(2, 1fr); }
  .cr-stats-row .stat:nth-child(2n) { border-right: none; }
  .cr-main { grid-template-columns: 1fr; }
  .cr-reviews-summary { grid-template-columns: 1fr; gap: 16px; }
}
@media (max-width: 580px) {
  .cr-hero-title { font-size: 28px; }
  .cr-hero-stats { grid-template-columns: 1fr; }
  .cr-frank-top { flex-direction: column; }
}

/* ============================================================
   PROGRESSIVE JACKPOTS TABLE
   ============================================================ */
.cr-jpot-table-wrap {
  margin-top: 22px;
  overflow-x: auto;
}
.cr-jpot-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20,17,13,0.10);
  border-radius: 12px;
  overflow: hidden;
}
.cr-jpot-table thead th {
  text-align: left;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(20,17,13,0.55);
  padding: 12px 16px;
  background: rgba(20,17,13,0.03);
  border-bottom: 1px solid rgba(20,17,13,0.08);
}
.cr-jpot-table .cr-jpot-th-amount,
.cr-jpot-table .cr-jpot-th-num    { text-align: right; }
.cr-jpot-table .cr-jpot-th-jindex { text-align: right; min-width: 140px; }

.cr-jpot-table tbody td {
  padding: 14px 16px;
  border-top: 1px solid rgba(20,17,13,0.05);
  vertical-align: middle;
}
.cr-jpot-table tbody tr:first-child td { border-top: none; }

.cr-jpot-game-name {
  font-weight: 700;
  color: #14110d;
  margin-bottom: 3px;
}
.cr-jpot-game-meta {
  font-size: 12px;
  color: rgba(20,17,13,0.55);
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.cr-jpot-sep { opacity: 0.5; }

.cr-jpot-dot {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.cr-jpot-dot--good { background: #1c7a4a; }
.cr-jpot-dot--fair { background: #c4ad7a; }
.cr-jpot-dot--poor { background: #9a2828; }

.cr-jpot-source--local {
  color: #0b6b62;
  font-weight: 600;
}
.cr-jpot-source--pooled {
  color: rgba(20,17,13,0.55);
}

.cr-jpot-amount {
  text-align: right;
  font-weight: 700;
  font-size: 15px;
  color: #14110d;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.cr-jpot-amount--nearavg  { color: #a85a1c; }
.cr-jpot-amount--aboveavg { color: #9a2828; }

.cr-jpot-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  color: rgba(20,17,13,0.75);
  white-space: nowrap;
}

.cr-jpot-jindex-cell {
  display: flex;
  align-items: center;
  gap: 8px;
  justify-content: flex-end;
}
.cr-jpot-jindex-num {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  min-width: 28px;
  text-align: right;
  color: #14110d;
}
.cr-jpot-jindex-bar {
  display: inline-block;
  width: 80px; height: 6px;
  background: rgba(20,17,13,0.08);
  border-radius: 3px;
  overflow: hidden;
  position: relative;
}
.cr-jpot-jindex-bar > span {
  display: block;
  height: 100%;
  background: linear-gradient(to right, #c4ad7a, #1c7a4a);
  border-radius: 3px;
}

.cr-jpot-legend {
  margin-top: 16px;
  display: flex;
  flex-wrap: wrap;
  gap: 28px;
  font-size: 12px;
  color: rgba(20,17,13,0.65);
}
.cr-jpot-legend-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px;
}
.cr-jpot-legend-title {
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 11px;
  color: rgba(20,17,13,0.55);
  margin-right: -4px;
}
.cr-jpot-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.cr-jpot-legend-chip {
  display: inline-block;
  width: 12px; height: 8px;
  border-radius: 2px;
}
.cr-jpot-legend-chip--nearavg  { background: #a85a1c; }
.cr-jpot-legend-chip--aboveavg { background: #9a2828; }

@media (max-width: 780px) {
  .cr-jpot-table-wrap { overflow-x: visible; }
  .cr-jpot-table,
  .cr-jpot-table thead,
  .cr-jpot-table tbody,
  .cr-jpot-table tr,
  .cr-jpot-table td { display: block; width: 100%; }
  .cr-jpot-table thead { display: none; }
  .cr-jpot-table tr {
    border-bottom: 1px solid rgba(20,17,13,0.08);
    padding: 12px 14px;
  }
  .cr-jpot-table tr:last-child { border-bottom: none; }
  .cr-jpot-table tbody td {
    padding: 4px 0;
    border-top: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    text-align: right;
  }
  .cr-jpot-table tbody td.cr-jpot-game {
    display: block;
    text-align: left;
    margin-bottom: 8px;
  }
  .cr-jpot-table tbody td:before {
    content: attr(data-title);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: rgba(20,17,13,0.55);
    margin-right: 12px;
  }
  .cr-jpot-table tbody td.cr-jpot-game:before { display: none; }
}

/* ============================================================
   TOURNAMENTS — 3-up "mini" card grid (sprint 2)
   ============================================================ */
.cr-tournaments { padding: 24px 0; }

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

.cr-tourn-card {
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20,17,13,0.08);
  border-radius: 10px;
  padding: 18px 18px 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* ---- Status pill ---- */
.cr-tourn-status {
  display: inline-block;
  align-self: flex-start;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  line-height: 1.5;
}
.cr-tourn-status--running {
  background: rgba(28,122,74,0.12);
  color: #1c7a4a;
}
.cr-tourn-status--running:before {
  content: '\25CF';
  margin-right: 5px;
}
.cr-tourn-status--imminent {
  background: rgba(168,90,28,0.12);
  color: #a85a1c;
}
.cr-tourn-status--scheduled {
  background: rgba(20,17,13,0.06);
  color: rgba(20,17,13,0.6);
}

/* ---- Tournament name + game ---- */
.cr-tourn-name {
  font-size: 16px;
  font-weight: 800;
  color: #14110d;
  margin: 0;
  line-height: 1.3;
  letter-spacing: -0.005em;
}
.cr-tourn-game {
  font-size: 13px;
  color: rgba(20,17,13,0.6);
  line-height: 1.4;
}
.cr-tourn-game:before {
  content: '\21B3';
  margin-right: 5px;
  color: rgba(20,17,13,0.35);
}

/* ---- Stats: prize + entry, 2-col ---- */
.cr-tourn-stats {
  margin: 4px 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.cr-tourn-stat { margin: 0; }
.cr-tourn-stat dt {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: rgba(20,17,13,0.5);
  font-weight: 700;
  margin: 0 0 3px 0;
}
.cr-tourn-stat dd {
  margin: 0;
  font-size: 14px;
  font-weight: 700;
  color: #14110d;
  font-variant-numeric: tabular-nums;
}

/* ---- Time line (countdown / absolute) ---- */
.cr-tourn-time {
  font-size: 13px;
  color: rgba(20,17,13,0.7);
  padding: 7px 10px;
  background: rgba(20,17,13,0.04);
  border-radius: 6px;
  font-variant-numeric: tabular-nums;
}

/* ---- CTA pinned to bottom of card ---- */
.cr-tourn-cta {
  margin-top: auto;
  padding-top: 4px;
}
.cr-tourn-cta .btn {
  width: 100%;
  justify-content: center;
}
.cr-tourn-cta-arr {
  display: inline-block;
  font-size: 13px;
  margin-left: 4px;
}

/* ---- Mobile <780px: 1-col stack ---- */
@media (max-width: 780px) {
  .cr-tourn-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   WRITE-A-REVIEW FORM — collapsible <details>, CSS-only stars
   ============================================================ */
.cr-review-write { padding: 28px 0; }

/* Collapse machinery */
.cr-rw-details { padding: 0; }
.cr-rw-details > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 4px 0 4px;
  user-select: none;
}
.cr-rw-details > summary::-webkit-details-marker { display: none; }
.cr-rw-summary-text .eyebrow { margin-bottom: 4px; }
.cr-rw-title { margin: 0; }
.cr-rw-summary-arrow {
  font-size: 32px;
  font-weight: 200;
  color: rgba(20,17,13,0.4);
  line-height: 1;
  transition: transform 0.2s ease, background 0.15s, color 0.15s;
  flex-shrink: 0;
}
.cr-rw-summary-teaser {
  margin: 8px 0 0 0;
  font-size: 14px;
  color: rgba(20,17,13,0.6);
  font-weight: 400;
  line-height: 1.5;
}

/* ----- Closed state: card-button vibe (high visibility) ----- */
.cr-rw-details:not([open]) > .cr-rw-summary {
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20,17,13,0.1);
  border-radius: 12px;
  padding: 22px 84px 22px 24px;
  position: relative;
  transition: border-color 0.2s, box-shadow 0.2s, transform 0.1s;
}
.cr-rw-details:not([open]) > .cr-rw-summary:hover {
  border-color: rgba(28,122,74,0.45);
  box-shadow: 0 6px 20px rgba(20,17,13,0.07);
}
.cr-rw-details:not([open]) > .cr-rw-summary:active {
  transform: translateY(1px);
}
.cr-rw-details:not([open]) .cr-rw-summary-text .eyebrow {
  color: #1c7a4a;
}
.cr-rw-details:not([open]) .cr-rw-summary-arrow {
  position: absolute;
  right: 22px;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #1c7a4a;
  color: #fff;
  font-size: 26px;
  font-weight: 300;
  display: flex;
  align-items: center;
  justify-content: center;
  padding-bottom: 2px; /* optical center of + glyph */
  box-shadow: 0 2px 8px rgba(28,122,74,0.25);
}
.cr-rw-details:not([open]) > .cr-rw-summary:hover .cr-rw-summary-arrow {
  background: #14583a;
  transform: translateY(-50%) scale(1.06);
  box-shadow: 0 4px 14px rgba(28,122,74,0.35);
}

/* ----- Open state: sober, the form is the focus now ----- */
.cr-rw-details[open] > .cr-rw-summary {
  background: transparent;
  border: none;
  padding: 4px 0 14px;
  border-bottom: 1px solid rgba(20,17,13,0.06);
  margin-bottom: 4px;
}
.cr-rw-details[open] .cr-rw-summary-arrow {
  position: static;
  transform: rotate(45deg);
  width: auto;
  height: auto;
  background: transparent;
  color: rgba(20,17,13,0.4);
  box-shadow: none;
  padding: 0;
}
.cr-rw-details[open] .cr-rw-summary-teaser {
  display: none;
}

.cr-rw-subtitle { margin: 16px 0 24px; }

/* Status banner (populated by JS on submit) */
.cr-rw-status { margin: 0 0 16px; padding: 0; }
.cr-rw-status[data-state="error"] {
  padding: 12px 14px;
  border-radius: 8px;
  background: rgba(168,38,38,0.08);
  color: #9a2828;
  border: 1px solid rgba(168,38,38,0.2);
  font-size: 14px;
}
.cr-rw-status[data-state="success"] {
  padding: 12px 14px;
  border-radius: 8px;
  background: rgba(28,122,74,0.08);
  color: #1c7a4a;
  border: 1px solid rgba(28,122,74,0.2);
  font-size: 14px;
}

/* Form layout */
.cr-rw-form {
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20,17,13,0.08);
  border-radius: 10px;
  padding: 24px;
}

.cr-rw-field { margin-bottom: 18px; }
.cr-rw-field:last-of-type { margin-bottom: 0; }

.cr-rw-label {
  display: block;
  font-size: 13px;
  font-weight: 700;
  color: #14110d;
  margin-bottom: 7px;
  letter-spacing: 0.02em;
}
.cr-rw-req { color: #9a2828; margin-left: 2px; }
.cr-rw-optional {
  color: rgba(20,17,13,0.5);
  font-weight: 400;
  font-size: 12px;
  letter-spacing: 0;
}

.cr-rw-form input[type="text"],
.cr-rw-form input[type="email"],
.cr-rw-form textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid rgba(20,17,13,0.15);
  border-radius: 6px;
  font: inherit;
  font-size: 14px;
  background: #fff;
  color: #14110d;
  transition: border-color 0.15s, box-shadow 0.15s;
  box-sizing: border-box;
}
.cr-rw-form input:focus,
.cr-rw-form textarea:focus {
  border-color: #1c7a4a;
  box-shadow: 0 0 0 3px rgba(28,122,74,0.1);
  outline: none;
}
.cr-rw-form textarea { resize: vertical; min-height: 160px; line-height: 1.5; }

.cr-rw-help {
  font-size: 12px;
  color: rgba(20,17,13,0.55);
  margin-top: 5px;
}
.cr-rw-counter { text-align: right; font-variant-numeric: tabular-nums; }
.cr-rw-counter-value { font-weight: 700; color: #14110d; }
.cr-rw-counter-value.is-under { color: #a85a1c; }
.cr-rw-counter-value.is-over  { color: #9a2828; }
.cr-rw-counter-value.is-valid { color: #1c7a4a; }

/* Honeypot - hidden off-screen but not display:none (which some bots detect) */
.cr-rw-honeypot {
  position: absolute;
  left: -9999px;
  top: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* Star rating - radios in DOM reverse, flex row-reverse, fill on :checked ~ */
.cr-rw-field-rating {
  border: 0;
  padding: 0;
  margin: 0 0 18px;
}
.cr-rw-field-rating .cr-rw-label { float: none; }
.cr-rw-stars {
  display: inline-flex;
  flex-direction: row-reverse;
  gap: 2px;
}
.cr-rw-stars input[type="radio"] {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
.cr-rw-stars label {
  font-size: 32px;
  line-height: 1;
  color: rgba(20,17,13,0.18);
  cursor: pointer;
  padding: 2px;
  transition: color 0.12s;
}
.cr-rw-stars label:hover,
.cr-rw-stars label:hover ~ label,
.cr-rw-stars input[type="radio"]:checked ~ label {
  color: #d4a017;
}
.cr-rw-stars input[type="radio"]:focus-visible + label {
  outline: 2px solid #1c7a4a;
  outline-offset: 2px;
  border-radius: 3px;
}

/* Row layout (country + show-country checkbox side by side) */
.cr-rw-field-row {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
}
.cr-rw-field-col { flex: 1 1 220px; min-width: 0; }
.cr-rw-field-checkbox {
  display: flex;
  align-items: flex-end;
  padding-bottom: 11px;
}
.cr-rw-checkbox-label {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: 14px;
  color: rgba(20,17,13,0.8);
}
.cr-rw-checkbox-label input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: #1c7a4a;
  cursor: pointer;
}

/* Country toggle: read-only display + checkbox in a single bordered row.
   Replaces the previous free-form text input + checkbox pair. */
.cr-rw-field-location {
  background: rgba(28,122,74,0.04);
  border: 1px solid rgba(28,122,74,0.18);
  border-radius: 8px;
  padding: 12px 14px;
  transition: border-color 0.15s, background 0.15s;
}
.cr-rw-field-location:hover {
  border-color: rgba(28,122,74,0.35);
  background: rgba(28,122,74,0.06);
}
.cr-rw-location-toggle {
  margin: 0;
  width: 100%;
}
.cr-rw-location-text {
  font-size: 14px;
  color: rgba(20,17,13,0.85);
  line-height: 1.45;
}
.cr-rw-location-text strong {
  color: #14583a;
  font-weight: 700;
}

/* Turnstile widget wrapper */
.cr-rw-field-turnstile {
  margin-top: 8px;
}

/* Actions row */
.cr-rw-actions { margin-top: 22px; padding-top: 18px; border-top: 1px solid rgba(20,17,13,0.06); }
.cr-rw-submit { min-width: 180px; }
.cr-rw-submit[disabled],
.cr-rw-submit.is-disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
.cr-rw-privacy {
  font-size: 12px;
  color: rgba(20,17,13,0.55);
  margin: 12px 0 0;
  line-height: 1.55;
  max-width: 640px;
}

/* Mobile */
@media (max-width: 600px) {
  .cr-rw-form { padding: 18px; }
  .cr-rw-stars label { font-size: 28px; }
  .cr-rw-field-row { flex-direction: column; gap: 12px; }
  .cr-rw-field-checkbox { padding-bottom: 0; padding-top: 4px; }
  .cr-rw-submit { width: 100%; }
  /* Closed summary: tighter padding, smaller fab */
  .cr-rw-details:not([open]) > .cr-rw-summary {
    padding: 18px 70px 18px 18px;
    border-radius: 10px;
  }
  .cr-rw-details:not([open]) .cr-rw-summary-arrow {
    width: 34px;
    height: 34px;
    font-size: 22px;
    right: 16px;
  }
  .cr-rw-summary-teaser { font-size: 13px; margin-top: 6px; }
  .cr-rw-title { font-size: 22px; line-height: 1.25; }
}

/* ============================================================
   WITHDRAWAL BLOCK — pending strip + 5 method tiles
   ============================================================ */
.cr-withdrawal .sec-head {
  display: flex;
  align-items: flex-end;
  gap: 24px;
  flex-wrap: wrap;
}
.cr-wd-pending {
  flex-shrink: 0;
  text-align: right;
  padding: 12px 16px;
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20,17,13,0.08);
  border-radius: 10px;
  min-width: 160px;
}
.cr-wd-pending__label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(20,17,13,0.55);
  margin-bottom: 4px;
}
.cr-wd-pending__value {
  font-size: 16px;
  font-weight: 700;
  color: #14110d;
}

.cr-wd-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 14px;
  margin-top: 22px;
}
.cr-wd-tile {
  background: var(--paper, #fdfbf6);
  border: 1px solid rgba(20,17,13,0.10);
  border-radius: 12px;
  padding: 16px 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: border-color .15s ease;
}
.cr-wd-tile--empty {
  background: transparent;
  border-style: dashed;
  color: rgba(20,17,13,0.50);
}
.cr-wd-tile__head {
  display: flex;
  align-items: center;
  gap: 8px;
}
.cr-wd-tile__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px; height: 32px;
  border-radius: 8px;
  background: rgba(11,107,98,0.10);  /* teal tint */
  color: #0b6b62;
  flex-shrink: 0;
}
.cr-wd-tile--empty .cr-wd-tile__icon {
  background: rgba(20,17,13,0.05);
  color: rgba(20,17,13,0.35);
}
.cr-wd-tile__label {
  font-size: 13px;
  font-weight: 700;
  color: #14110d;
}
.cr-wd-tile--empty .cr-wd-tile__label { color: rgba(20,17,13,0.55); }

.cr-wd-tile__row {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.cr-wd-tile__k {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(20,17,13,0.50);
}
.cr-wd-tile__v {
  font-size: 13px;
  line-height: 1.4;
  color: #14110d;
}
.cr-wd-tile--empty .cr-wd-tile__v { color: rgba(20,17,13,0.35); }

@media (max-width: 980px) {
  .cr-wd-grid { grid-template-columns: repeat(3, 1fr); }
  .cr-wd-tile:nth-child(n+4) { grid-column: span 1; }
}
@media (max-width: 580px) {
  .cr-wd-grid { grid-template-columns: repeat(2, 1fr); }
  .cr-withdrawal .sec-head { flex-direction: column; align-items: stretch; }
  .cr-wd-pending { text-align: left; }
}

/* ============================================================
   EDITORIAL WARNING BANNER — jr_warning + jr_warningtitle.
   Distinct visual tone from state banner: cream/sand bg with a
   red accent rail on the left so the two banners stack cleanly
   when both fire on the same page.
   ============================================================ */
.cr-warning-banner {
  margin: 0 0 14px 0;
  background: #fbf3e5;
  border: 1px solid #e6d9b8;
  border-left: 5px solid #9a2828;
  border-radius: 10px;
  padding: 16px 0;
}
.cr-warning-banner__inner {
  display: flex;
  gap: 14px;
  align-items: flex-start;
}
.cr-warning-banner__icon {
  font-size: 24px;
  line-height: 1;
  flex-shrink: 0;
  color: #9a2828;
  padding-top: 2px;
}
.cr-warning-banner__text { flex: 1; min-width: 0; }
.cr-warning-banner__title {
  font-size: 17px;
  font-weight: 700;
  margin: 0 0 6px 0;
  line-height: 1.3;
  color: #6e1f1f;
}
.cr-warning-banner__body {
  font-size: 14px;
  line-height: 1.55;
  color: #4a3a1f;
}
.cr-warning-banner__body > *:first-child { margin-top: 0; }
.cr-warning-banner__body > *:last-child  { margin-bottom: 0; }
.cr-warning-banner__body a {
  color: #9a2828;
  text-decoration: underline;
}
.cr-warning-banner__body a:hover { color: #6e1f1f; }

/* ============================================================
   CASINO STATES — banner, eyebrow badges, hero tone modifiers,
   sidebar status cards. Sprint 1 / ondata stati.
   ============================================================ */

/* ---- State banner (above hero) ---- */
.cr-state-banner {
  margin: 0 0 16px 0;
  padding: 18px 0;
  border-radius: 12px;
  border: 1px solid transparent;
}
.cr-state-banner__inner {
  display: flex;
  gap: 14px;
  align-items: flex-start;
}
.cr-state-banner__icon {
  font-size: 26px;
  line-height: 1;
  flex-shrink: 0;
  padding-top: 2px;
}
.cr-state-banner__text { flex: 1; min-width: 0; }
.cr-state-banner__title {
  font-size: 18px;
  font-weight: 700;
  margin: 0 0 6px 0;
  line-height: 1.3;
}
.cr-state-banner__reason { margin: 8px 0 0 0; font-size: 14px; }
.cr-state-banner__expl   { margin: 8px 0 0 0; font-size: 14px; line-height: 1.55; }
.cr-state-banner__expl > *:first-child { margin-top: 0; }
.cr-state-banner__expl > *:last-child  { margin-bottom: 0; }

.cr-state-banner--danger {
  background: #fbecec;
  border-color: #e2bcbc;
  color: #6e1f1f;
}
.cr-state-banner--danger .cr-state-banner__title { color: #9a2828; }
.cr-state-banner--danger .cr-state-banner__icon  { color: #9a2828; }

.cr-state-banner--warn {
  background: #fbf2e8;
  border-color: #e3c9a8;
  color: #6e4419;
}
.cr-state-banner--warn .cr-state-banner__title { color: #a85a1c; }
.cr-state-banner--warn .cr-state-banner__icon  { color: #a85a1c; }

.cr-state-banner--muted {
  background: #f0ece4;
  border-color: #d4cbb8;
  color: #4a4338;
}
.cr-state-banner--muted .cr-state-banner__title { color: #4a4338; }
.cr-state-banner--muted .cr-state-banner__icon  { color: #6e6754; }

/* ---- Eyebrow badges (inside hero) ---- */
.cr-eyebrow-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}
.cr-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.4;
  border: 1px solid transparent;
}
.cr-badge--danger { background: #9a2828; color: #fff; }
.cr-badge--warn   { background: #a85a1c; color: #fff; }
.cr-badge--muted  { background: #e8e1cf; color: #4a4338; border-color: #d4cbb8; }
.cr-badge--info   { background: #e6efed; color: #0b6b62; border-color: #c4d8d4; }

/* ---- Hero tone modifiers ---- */
.cr-hero-card--blacklisted {
  background: linear-gradient(to bottom, #fbecec 0%, #fdfbf6 90px);
  border-color: #e2bcbc;
}
.cr-hero-card--blacklisted .cr-frank-donut svg { filter: grayscale(0.7) opacity(0.85); }

.cr-hero-card--suspended {
  background: linear-gradient(to bottom, #fbf2e8 0%, #fdfbf6 90px);
  border-color: #e3c9a8;
}

.cr-hero-card--closed {
  background: #f7f4ed;
  border-color: #d4cbb8;
}
.cr-hero-card--closed .cr-frank-donut svg,
.cr-hero-card--closed .cr-hero-title {
  filter: grayscale(0.9) opacity(0.8);
}

.cr-hero-card--geo_blocked {
  /* Casino is fine, just not for this visitor — keep neutral tone, no recolouring */
}

/* Disabled CTA (used in geo-block) */
.btn.btn-disabled,
.btn[disabled] {
  background: #c4ad7a;
  color: #fff;
  cursor: not-allowed;
  opacity: 0.7;
  pointer-events: none;
}

/* ---- Sidebar status cards ---- */
.cr-side-card--danger {
  background: #fbecec;
  border-color: #e2bcbc;
}
.cr-side-card--danger h3 { color: #9a2828; }
.cr-side-card--warn {
  background: #fbf2e8;
  border-color: #e3c9a8;
}
.cr-side-card--warn h3 { color: #a85a1c; }
.cr-side-card--muted {
  background: #f0ece4;
  border-color: #d4cbb8;
}
.cr-side-card--muted h3 { color: #4a4338; }
.cr-side-card--info {
  background: #e6efed;
  border-color: #c4d8d4;
}
.cr-side-card--info h3 { color: #0b6b62; }

.cr-side-status {
  font-size: 15px;
  font-weight: 700;
  margin-bottom: 6px;
}
.cr-side-card p {
  margin: 6px 0 0 0;
  font-size: 13px;
  line-height: 1.5;
}

/* ====== Sprint 2 step 5 — write-review JS-driven states ====== */

/* Field error state (server-side validation echoes per-field) */
.cr-rw-field.is-error > .cr-rw-form input,
.cr-rw-field.is-error input[type="text"],
.cr-rw-field.is-error input[type="email"],
.cr-rw-field.is-error textarea {
  border-color: #9a2828;
  box-shadow: 0 0 0 3px rgba(168,38,38,0.08);
}
.cr-rw-field.is-error input:focus,
.cr-rw-field.is-error textarea:focus {
  border-color: #9a2828;
  box-shadow: 0 0 0 3px rgba(168,38,38,0.18);
}
.cr-rw-field-rating.is-error .cr-rw-stars {
  padding: 6px 10px;
  margin: 0 -10px;
  border-radius: 6px;
  background: rgba(168,38,38,0.06);
  outline: 1px solid rgba(168,38,38,0.25);
}
.cr-rw-error-msg {
  font-size: 12px;
  color: #9a2828;
  margin-top: 6px;
  font-weight: 600;
  line-height: 1.4;
}

/* Submit button loading state (spinner) */
.cr-rw-submit.is-loading {
  position: relative;
  pointer-events: none;
}
.cr-rw-submit.is-loading::after {
  content: '';
  display: inline-block;
  width: 11px;
  height: 11px;
  margin-left: 9px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  vertical-align: -1px;
  animation: cr-rw-spin 0.7s linear infinite;
}
@keyframes cr-rw-spin { to { transform: rotate(360deg); } }

/* Success state: hide the form, keep the status banner visible */
.cr-rw-details.is-submitted .cr-rw-form,
.cr-rw-details.is-submitted .cr-rw-subtitle {
  display: none;
}
.cr-rw-details.is-submitted .cr-rw-status {
  margin-top: 16px;
}

/* No-JS / page-load banner from ?fec_review_status= */
.cr-rw-status[data-state="success"],
.cr-rw-status[data-state="error"] {
  scroll-margin-top: 80px;
}