/* ============================================================================
   cb.css : the clan-site design system (proposed, Fable, 2026-10-18; DIRECT ACTION's theme layer is dac.css)
   ----------------------------------------------------------------------------
   One sheet for every page of roguevikingshub.online/direct-action and for the
   RV-HUB panes (the .cb-embed root). Standalone: the Digi Red tokens are copied
   in from renderer/rv-theme.css so the prototypes open from a folder.

   House rules this sheet obeys, and the audit greps for:
     * Digi Red. The accent #a4161a is a FILL. Red type only in
       --rv-accent-contrast, and only at large sizes or as an icon.
     * Solid fills. No fades, no glow, no glass. Depth = the surface ladder
       plus a 1px line. The hero scrim is the one translucent surface.
     * No raw pixel outside the token block: --rv-s-*, --rv-r-*, --rv-fs-*.
     * Space between groups >= 2x space inside a group.
     * Every setting is a bordered card with its hint inside it.
     * Sentence case. Upper case only at --rv-fs-micro.
     * Brackets, ticks, grid and contour lines are flat strokes.
   ============================================================================ */

/* ----------------------------------------------------------------------------
   0. TOKENS (the only place a raw value may appear)
   ---------------------------------------------------------------------------- */
:root{
  /* Digi Red ladder (renderer/rv-theme.css, data-rv-theme="digired") */
  --rv-bg:#0d0b0a;
  --rv-surface-1:#121417;
  --rv-surface-2:#171a1e;
  --rv-surface-3:#1d2126;
  --rv-elev:#242930;
  --rv-hairline:rgba(255,255,255,.06);
  --rv-border-1:rgba(255,255,255,.16);
  --rv-border-2:rgba(255,255,255,.18);
  --rv-text-strong:#eef2f6;
  --rv-text:#c9d1d9;
  --rv-text-dim:#8b949e;
  --rv-text-faint:#5c6570;
  --rv-accent:#a4161a;            /* fill only, never text */
  --rv-accent-hover:#c01d22;
  --rv-accent-press:#7d1114;
  --rv-accent-weak:#1d0709;       /* solid tinted well */
  --rv-accent-line:#5c1013;       /* its line */
  --rv-accent-contrast:#c61b1f;   /* large red text, icons, focus ring: 3.35:1 */
  --rv-text-on-accent:#ffffff;    /* on the fill: 7.75:1 */
  --rv-focus:#c61b1f;
  /* semantic state (theme-stable) */
  --rv-success:#34b567;
  --rv-success-weak:#0c2114;
  --rv-warning:#e8a51c;
  --rv-warning-weak:#241a07;
  --rv-danger:#e5484d;
  --rv-danger-weak:#2a0e10;
  --rv-info:#4c9df0;
  --rv-info-weak:#0d1b2c;
  --rv-text-on-state:#ffffff;
  --rv-ink-on-light:#0a2a06;
  --rv-scrim:rgba(13,11,10,.72);  /* the one translucent surface */
  /* geometry */
  --rv-r-sm:2px; --rv-r-md:3px; --rv-r-lg:4px; --rv-r-full:999px;
  --rv-s-1:4px; --rv-s-2:8px; --rv-s-3:12px; --rv-s-4:16px; --rv-s-5:24px; --rv-s-6:32px; --rv-s-7:48px; --rv-s-8:64px;
  /* type */
  --rv-fs-display:32px; --rv-fs-h1:24px; --rv-fs-h2:18px; --rv-fs-h3:15px; --rv-fs-body:14px; --rv-fs-small:13px; --rv-fs-micro:11px; --rv-fs-nano:10px;
  --rv-lh-tight:1.25; --rv-lh-body:1.55; --rv-measure:72ch;

  /* ---- clan-site additions (cb-*) ------------------------------------------ */
  --cb-font-display:"Barlow Condensed","Arial Narrow","Roboto Condensed",system-ui,sans-serif;
  --cb-font-sans:"Barlow","Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;
  --cb-font-mono:"IBM Plex Mono",Consolas,"Liberation Mono",Menlo,monospace;
  --cb-fs-hero:clamp(44px,6vw,76px);     /* page title in the hero */
  --cb-fs-title:28px;                    /* section title */
  --cb-fs-stat:32px;                     /* stat tile value */
  --cb-fs-big:48px;                      /* podium numerals, countdown */
  --cb-fs-versus:40px;                   /* the VS mark */
  --cb-track-wide:.08em;                 /* upper-case micro labels */
  --cb-track-tight:-.01em;               /* display sizes */
  --cb-nav-h:60px;
  --cb-tabs-h:52px;
  --cb-ctl-h:36px;                       /* every control on a page */
  --cb-ctl-h-sm:28px;
  --cb-wrap:1200px;
  --cb-brk:20px;                         /* corner bracket size */
  --cb-brk-w:2px;
  --cb-brk-color:var(--rv-border-2);
  --cb-badge:36px;                       /* badge box in tables */
  --cb-badge-lg:72px;                    /* badge box in clan headers */
  --cb-avatar:32px;
  --cb-avatar-lg:56px;
  --cb-maptile:72px;                     /* map tile in room rows */
  --cb-slot:96px;                        /* one bracket slot (match + gap) */
  --cb-cal-day:104px;                    /* calendar day cell */
  --cb-texture:rgba(255,255,255,.07);    /* grid / contour strokes */
  --cb-texture-strong:rgba(255,255,255,.14);
  --cb-shadow:rgba(0,0,0,.45);           /* 1 to 2px neutral shadow only */
  --cb-banner-ratio:1600/598;            /* the banner clip */
  --cb-band-scrim:rgba(13,11,10,.58);    /* the band's own scrim; the copy panel adds --rv-scrim on top */
  --cb-focus:50% 20%;                    /* banner focal point (site banner, owner 2026-10-18); overridden per banner (data-banner) */
  --cb-band-h:280px;                     /* still band on sub-pages */
  --cb-band-h-sm:200px;
  --cb-masthead-h:104px;                 /* the splash plate above the video */
  --cb-bar-h:8px;                        /* progress bar */
  --cb-icon:16px;
  --cb-icon-lg:20px;
  --cb-rail:220px;                       /* Hub left rail in hub-panes */
  /* Tactical Room: fireteam category colours. A colour-blind-safe set (Okabe-Ito), chosen for contrast on the
     dark map; the brand accent is deliberately not among them, and vermillion is left out for the same reason. */
  --cb-ft-alpha:#56b4e9;                 /* sky */
  --cb-ft-bravo:#e69f00;                 /* orange */
  --cb-ft-charlie:#009e73;               /* bluish green */
  --cb-ft-delta:#cc79a7;                 /* reddish purple */
  --cb-ft-echo:#f0e442;                  /* yellow */
  --cb-map-ratio:960/704;                /* the board's drawing space (A to H by 1 to 8) */
  --cb-device-phone-w:360px;
  --cb-device-tablet-w:720px;
}

/* ----------------------------------------------------------------------------
   1. RESET + BASE
   ---------------------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{background:var(--rv-bg);-webkit-text-size-adjust:100%}
body{
  background:var(--rv-bg);color:var(--rv-text);
  font-family:var(--cb-font-sans);font-size:var(--rv-fs-body);line-height:var(--rv-lh-body);
  min-height:100svh;overflow-x:hidden;-webkit-font-smoothing:antialiased;
}
img,video,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
a:hover{color:var(--rv-text-strong)}
button,input,select,textarea{font:inherit;color:inherit;background:none;border:0}
button{cursor:pointer}
:focus{outline:none}
:focus-visible{outline:2px solid var(--rv-focus);outline-offset:2px;border-radius:var(--rv-r-sm)}
[hidden]{display:none !important}
strong{font-weight:600;color:var(--rv-text-strong)}
small{font-size:var(--rv-fs-small)}
ul,ol{list-style:none}
table{border-collapse:collapse;border-spacing:0}
summary{list-style:none;cursor:pointer}
summary::-webkit-details-marker{display:none}
.cb-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.cb-num{font-variant-numeric:tabular-nums}
.cb-mono{font-family:var(--cb-font-mono);font-size:var(--rv-fs-small)}
.cb-dim{color:var(--rv-text-dim)}
.cb-faint{color:var(--rv-text-faint)}
.cb-strong{color:var(--rv-text-strong);font-weight:600}
.cb-right{text-align:right}
.cb-center{text-align:center}
.cb-icon{width:var(--cb-icon);height:var(--cb-icon);flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.cb-icon--lg{width:var(--cb-icon-lg);height:var(--cb-icon-lg)}
.cb-defs{position:absolute;width:0;height:0;overflow:hidden}

/* ----------------------------------------------------------------------------
   2. TYPE
   Display face (condensed) for titles, numbers, buttons, tabs, chips.
   Sans for body and table text. Mono for ids, timestamps, room passwords, urls.
   ---------------------------------------------------------------------------- */
.cb-display{font-family:var(--cb-font-display);letter-spacing:var(--cb-track-tight)}
.cb-micro{font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim);line-height:1.4}
.cb-h1{font-family:var(--cb-font-display);font-size:var(--cb-fs-hero);line-height:.95;font-weight:800;letter-spacing:var(--cb-track-tight);color:var(--rv-text-strong)}
.cb-h2{font-family:var(--cb-font-display);font-size:var(--cb-fs-title);line-height:1.1;font-weight:700;letter-spacing:var(--cb-track-tight);color:var(--rv-text-strong)}
.cb-h3{font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);line-height:1.15;font-weight:700;color:var(--rv-text-strong)}
.cb-h4{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);line-height:var(--rv-lh-tight);font-weight:600;color:var(--rv-text-strong)}
.cb-lead{font-size:var(--rv-fs-h2);line-height:1.35;color:var(--rv-text);max-width:48ch}
.cb-prose{max-width:var(--rv-measure)}
.cb-prose p+p{margin-top:var(--rv-s-4)}
.cb-hint{font-size:var(--rv-fs-small);line-height:var(--rv-lh-body);color:var(--rv-text-dim);max-width:68ch}
.cb-meta{font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-stamp{font-family:var(--cb-font-mono);font-size:var(--rv-fs-micro);letter-spacing:.02em;color:var(--rv-text-dim);white-space:nowrap}

/* Stencil numeral: one flat cut through the figure, like a stencil bridge.
   Only on big display numbers (podium position, season number). */
.cb-stencil{position:relative;display:inline-block;line-height:1}
.cb-stencil::after{content:"";position:absolute;left:calc(-1 * var(--rv-s-1));right:calc(-1 * var(--rv-s-1));top:54%;height:var(--rv-r-md);background:var(--cb-stencil-bg,var(--rv-surface-2))}
/* below ~40px the cut reads as a strike-through, so plaque titles (24px) carry no cut */
.cb-plaque__title .cb-stencil::after{display:none}

/* ----------------------------------------------------------------------------
   3. LAYOUT
   ---------------------------------------------------------------------------- */
.cb-wrap{width:100%;max-width:var(--cb-wrap);margin:0 auto;padding:0 var(--rv-s-4)}
@media(min-width:760px){.cb-wrap{padding:0 var(--rv-s-6)}}
.cb-main{padding:var(--rv-s-6) 0 var(--rv-s-8)}
.cb-section{margin-top:var(--rv-s-7)}
.cb-section:first-child,.cb-section--first{margin-top:0}
.cb-section__head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--rv-s-4);flex-wrap:wrap;margin-bottom:var(--rv-s-4)}
.cb-section__title{display:flex;align-items:center;gap:var(--rv-s-3)}
.cb-section__title .cb-iconbox{flex:0 0 auto}
.cb-section__meta{font-size:var(--rv-fs-small);color:var(--rv-text-dim);text-align:right}
.cb-section__sub{margin-top:var(--rv-s-1);font-size:var(--rv-fs-small);color:var(--rv-text-dim);max-width:68ch}
.cb-iconbox{width:var(--rv-s-6);height:var(--rv-s-6);display:grid;place-items:center;background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);color:var(--rv-text-strong)}
.cb-iconbox--accent{background:var(--rv-accent);border-color:var(--rv-accent);color:var(--rv-text-on-accent)}
.cb-grid{display:grid;gap:var(--rv-s-4);align-items:stretch}
.cb-grid--2,.cb-grid--3,.cb-grid--4{grid-template-columns:1fr}
.cb-grid--sidebar{grid-template-columns:1fr}
@media(min-width:760px){
  .cb-grid--2{grid-template-columns:1fr 1fr}
  .cb-grid--3{grid-template-columns:repeat(3,1fr)}
  .cb-grid--4{grid-template-columns:1fr 1fr}
}
@media(min-width:960px){
  .cb-grid--4{grid-template-columns:repeat(4,1fr)}
  .cb-grid--sidebar{grid-template-columns:minmax(0,2fr) minmax(280px,1fr)}
}
.cb-stack{display:flex;flex-direction:column;gap:var(--rv-s-3)}
.cb-stack--lg{gap:var(--rv-s-5)}
.cb-row{display:flex;align-items:center;gap:var(--rv-s-3);flex-wrap:wrap}
.cb-row--between{justify-content:space-between}
.cb-row--end{justify-content:flex-end}
.cb-spacer{flex:1 1 auto}
.cb-rule{border:0;border-top:1px solid var(--rv-hairline);height:0;margin:var(--rv-s-5) 0}

/* ----------------------------------------------------------------------------
   4. TOP BAR
   Brand + site name, game selector, forum/media links, alerts, account.
   The accent line under it is the one red rule across the top of every page.
   ---------------------------------------------------------------------------- */
/* a 3-column grid, not flex: the middle column (--sc-nav__links) is a real track that centers itself regardless of
   how wide the brand or the account button are, instead of sitting flush against the brand like a flex item does
   (owner, 2026-10-29: "center these button on the top menu bar Forum Media Development updates") */
.cb-nav{position:fixed;top:0;left:0;right:0;z-index:200;height:var(--cb-nav-h);background:var(--rv-surface-1);border-bottom:2px solid var(--rv-accent);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--rv-s-4);padding:0 var(--rv-s-4)}
@media(min-width:760px){.cb-nav{padding:0 var(--rv-s-6)}}
.cb-brand{display:flex;align-items:center;gap:var(--rv-s-2);min-width:0}
.cb-brand__badge{background:var(--rv-accent);color:var(--rv-text-on-accent);font-family:var(--cb-font-display);font-size:var(--rv-fs-small);font-weight:800;letter-spacing:.12em;padding:var(--rv-s-1) var(--rv-s-2);border-radius:var(--rv-r-sm);line-height:1}
.cb-brand__name{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;letter-spacing:.02em;color:var(--rv-text-strong);white-space:nowrap}
.cb-brand__sub{font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim);white-space:nowrap}
.cb-nav__links{display:none;align-items:center;justify-content:center;gap:var(--rv-s-1)}
@media(min-width:960px){.cb-nav__links{display:flex}}
.cb-nav__link{display:inline-flex;align-items:center;gap:var(--rv-s-1);height:var(--cb-ctl-h);padding:0 var(--rv-s-3);border-radius:var(--rv-r-md);font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:600;color:var(--rv-text-dim);transition:color 120ms ease,background-color 120ms ease}
.cb-nav__link:hover{color:var(--rv-text-strong);background:var(--rv-surface-2)}
.cb-nav__link[aria-current="page"]{color:var(--rv-text-strong);background:var(--rv-surface-3)}
.cb-nav__right{display:flex;align-items:center;gap:var(--rv-s-2)}
.cb-gamesel{display:none;align-items:center;gap:var(--rv-s-2)}
@media(min-width:760px){.cb-gamesel{display:flex}}
.cb-gamesel .cb-micro{white-space:nowrap}
.cb-iconbtn{position:relative;width:var(--cb-ctl-h);height:var(--cb-ctl-h);display:grid;place-items:center;border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);background:var(--rv-surface-2);color:var(--rv-text);transition:border-color 120ms ease,color 120ms ease}
.cb-iconbtn:hover{border-color:var(--rv-text-dim);color:var(--rv-text-strong)}
.cb-iconbtn__count{position:absolute;top:calc(-1 * var(--rv-s-1));right:calc(-1 * var(--rv-s-1));min-width:var(--rv-s-4);height:var(--rv-s-4);padding:0 var(--rv-s-1);border-radius:var(--rv-r-sm);background:var(--rv-accent);color:var(--rv-text-on-accent);font-family:var(--cb-font-display);font-size:var(--rv-fs-micro);font-weight:700;line-height:var(--rv-s-4);text-align:center}
.cb-acct{display:flex;align-items:center;gap:var(--rv-s-2);height:var(--cb-ctl-h);padding:0 var(--rv-s-3) 0 var(--rv-s-1);background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);white-space:nowrap}
.cb-acct__name{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:600;color:var(--rv-text-strong)}
.cb-acct__tag{font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:.04em;color:var(--rv-text-dim)}
@media(max-width:559px){.cb-acct__name,.cb-acct__tag{display:none}.cb-acct{padding:0 var(--rv-s-1)}}

/* ----------------------------------------------------------------------------
   5. HERO
   Two variants. --video (home): the banner clip with its sound button,
   content on a dark panel to the right of the figure (owner-tuned placement).
   --band (every other page): the banner's poster still, top slice, scrimmed,
   with the title left and the 2x2 stat panel right. Both sit in an accent
   frame with red corner brackets, the one place the brackets are red.
   ---------------------------------------------------------------------------- */
.cb-hero{position:relative;isolation:isolate;margin-top:var(--cb-nav-h);background:var(--rv-surface-1);border:2px solid var(--rv-accent);border-top:0;overflow:hidden}
.cb-hero__media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--cb-focus);z-index:0;pointer-events:none;transition:opacity 160ms ease}
.cb-hero__media.is-swapping{opacity:0}
.cb-hero__scrim{position:absolute;inset:0;z-index:1;background:var(--rv-scrim);pointer-events:none}
/* the band's banners are bright (fire, sun): the band scrim is lighter so the art shows, and the
   title block sits on its own scrim panel, so small text clears 4.5:1 even over a white hot spot */
.cb-hero--band .cb-hero__scrim{background:var(--cb-band-scrim)}
.cb-hero--band .cb-docbar{background:var(--rv-scrim);padding:var(--rv-s-2) var(--rv-s-3);border:1px solid var(--rv-border-1);border-top:0;border-radius:0 0 var(--rv-r-lg) var(--rv-r-lg)}
.cb-hero--band .cb-hero__copy{background:var(--rv-scrim);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg);padding:var(--rv-s-4) var(--rv-s-5);min-width:0}
.cb-hero__inner{position:relative;z-index:2}
.cb-hero .cb-brkset{--cb-brk:32px;--cb-brk-w:4px;--cb-brk-color:var(--rv-accent-contrast);--cb-brk-inset:var(--rv-s-2);z-index:4}
/* document strip: breadcrumb + data stamp. Information, not decoration. */
.cb-docbar{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-4);padding:var(--rv-s-2) 0;border-bottom:1px solid var(--rv-border-1)}
.cb-crumbs{display:flex;align-items:center;gap:var(--rv-s-2);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim);min-width:0}
.cb-crumbs a:hover{color:var(--rv-text-strong)}
.cb-crumbs .cb-sep{color:var(--rv-text-faint)}
.cb-crumbs [aria-current]{color:var(--rv-text-strong)}
.cb-ticks{height:var(--rv-s-2);width:100%;color:var(--cb-texture-strong)}
/* band variant */
.cb-hero--band .cb-hero__inner{min-height:var(--cb-band-h);display:flex;flex-direction:column}
.cb-hero--band .cb-hero__body{display:grid;grid-template-columns:1fr;gap:var(--rv-s-5);align-items:end;padding:var(--rv-s-5) 0 var(--rv-s-5);flex:1 1 auto}
@media(min-width:960px){.cb-hero--band .cb-hero__body{grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);align-items:end}}
.cb-hero__title{margin:0}
.cb-hero__sub{margin-top:var(--rv-s-3);font-size:var(--rv-fs-h3);line-height:1.4;color:var(--rv-text);max-width:56ch}
.cb-hero__ctas{display:flex;gap:var(--rv-s-3);flex-wrap:wrap;margin-top:var(--rv-s-5)}
.cb-hero__kicker{display:inline-flex;align-items:center;gap:var(--rv-s-2);margin-bottom:var(--rv-s-3)}
/* stat panel: 2x2 tiles, one bordered panel */
.cb-stats{display:grid;grid-template-columns:1fr 1fr;background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg);overflow:hidden}
.cb-stats__tile{padding:var(--rv-s-3) var(--rv-s-4);min-width:0;border-right:1px solid var(--rv-hairline);border-bottom:1px solid var(--rv-hairline)}
.cb-stats__tile:nth-child(2n){border-right:0}
.cb-stats__tile:nth-last-child(-n+2){border-bottom:0}
.cb-stats__label{display:flex;align-items:center;gap:var(--rv-s-1);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim);white-space:nowrap}
.cb-stats__value{display:flex;align-items:baseline;gap:var(--rv-s-2);margin-top:var(--rv-s-1);font-family:var(--cb-font-display);font-size:var(--cb-fs-stat);line-height:1;font-weight:700;color:var(--rv-text-strong);font-variant-numeric:tabular-nums}
.cb-stats__value small{font-family:var(--cb-font-sans);font-size:var(--rv-fs-small);font-weight:500;color:var(--rv-text-dim)}
.cb-stats__tile--live{border-left:3px solid var(--rv-accent)}
/* video variant: the owner-tuned banner. Full bleed at the clip's own ratio;
   the content panel floats to the right of the figure, above the logo. */
.cb-hero--video{aspect-ratio:var(--cb-banner-ratio);background:var(--rv-bg);display:grid;align-content:start}
.cb-hero--video .cb-hero__scrim{background:rgba(13,11,10,.18)}
.cb-hero--video .cb-hero__inner{margin:var(--rv-s-7) calc(21% + var(--rv-s-6)) 0 42%;background:var(--rv-scrim);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg);padding:0 var(--rv-s-5) var(--rv-s-5)}
.cb-hero--video .cb-hero__body{display:grid;grid-template-columns:1fr;gap:var(--rv-s-4);align-items:start;padding-top:var(--rv-s-4)}
@media(min-width:1280px){.cb-hero--video .cb-hero__body{grid-template-columns:minmax(0,1.3fr) minmax(260px,1fr)}}
.cb-hero--video .cb-hero__title{font-size:clamp(28px,3vw,52px)}
.cb-hero--video .cb-hero__sub{font-size:var(--rv-fs-body);max-width:44ch}
.cb-hero--video .cb-hero__ctas{margin-top:var(--rv-s-4)}
.cb-hero--video .cb-stats__value{font-size:var(--rv-fs-h1)}
.cb-sound{position:absolute;z-index:5;top:var(--rv-s-4);right:var(--rv-s-7);display:inline-flex;align-items:center;gap:var(--rv-s-1);height:var(--cb-ctl-h-sm);padding:0 var(--rv-s-2);background:var(--rv-scrim);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-sm);color:var(--rv-text-strong);font-family:var(--cb-font-display);font-size:var(--rv-fs-small);font-weight:600;letter-spacing:.04em}
.cb-sound:hover{border-color:var(--rv-text-dim)}
.cb-sound .cb-icon{color:var(--rv-accent-contrast)}
@media(max-width:1100px){
  .cb-hero--video{aspect-ratio:auto;display:block;overflow:visible;isolation:auto}
  .cb-hero--video .cb-hero__media{position:static;width:100%;height:auto;aspect-ratio:var(--cb-banner-ratio)}
  .cb-hero--video .cb-hero__scrim{display:none}
  .cb-hero--video .cb-hero__inner{margin:var(--rv-s-4);background:var(--rv-surface-1)}
  .cb-sound{top:var(--rv-s-3);right:var(--rv-s-3)}
  .cb-hero .cb-brkset{display:none}
}
@media(max-width:559px){
  .cb-hero--video .cb-hero__inner{margin:var(--rv-s-3)}
  .cb-sound .cb-sound__lbl{display:none}
  .cb-hero--band .cb-hero__inner{min-height:var(--cb-band-h-sm)}
  .cb-hero--band .cb-hero__body{padding:var(--rv-s-4) 0}
}

/* ----------------------------------------------------------------------------
   6. TAB BAR (the community bar, sticky under the top bar)
   ---------------------------------------------------------------------------- */
.cb-tabs{position:sticky;top:var(--cb-nav-h);z-index:150;background:var(--rv-surface-1);border-bottom:1px solid var(--rv-border-1)}
.cb-tabs__inner{display:flex;align-items:stretch;gap:var(--rv-s-1);height:var(--cb-tabs-h);overflow-x:auto;scrollbar-width:none}
.cb-tabs__inner::-webkit-scrollbar{display:none}
.cb-tab{display:inline-flex;align-items:center;gap:var(--rv-s-2);padding:0 var(--rv-s-3);border-bottom:2px solid transparent;margin-bottom:-1px;font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:600;letter-spacing:.02em;color:var(--rv-text-dim);white-space:nowrap;transition:color 120ms ease,border-color 120ms ease}
.cb-tab:hover{color:var(--rv-text-strong)}
.cb-tab[aria-current="page"],.cb-tab[aria-selected="true"]{color:var(--rv-text-strong);border-bottom-color:var(--rv-accent)}
.cb-tab .cb-icon{color:var(--rv-text-dim)}
.cb-tab[aria-current="page"] .cb-icon,.cb-tab[aria-selected="true"] .cb-icon{color:var(--rv-accent-contrast)}
.cb-tab__count{min-width:var(--rv-s-5);height:var(--rv-s-4);padding:0 var(--rv-s-1);border-radius:var(--rv-r-sm);background:var(--rv-surface-3);border:1px solid var(--rv-border-1);font-size:var(--rv-fs-micro);font-weight:700;line-height:var(--rv-s-4);text-align:center;color:var(--rv-text)}
/* in-page tabs (Clan HQ, admin): same look, not sticky */
.cb-tabs--inpage{position:static;background:transparent;border-bottom:1px solid var(--rv-border-1);margin-bottom:var(--rv-s-6)}
.cb-tabs--inpage .cb-tabs__inner{height:auto;min-height:var(--cb-ctl-h);flex:1 1 auto;min-width:0;scroll-behavior:smooth}
/* one row; red arrows at both ends slide it (owner 2026-10-19: tabs past the edge were invisible). cb.js adds the arrows and
   hides both when every tab fits; an arrow dims at its own end. Red is a fill here, so the chevron is white. */
.cb-tabs--scroll{display:flex;align-items:center;gap:var(--rv-s-2)}
.cb-tabs__arrow{flex:0 0 auto;width:var(--cb-ctl-h);height:var(--cb-ctl-h);display:grid;place-items:center;border-radius:var(--rv-r-md);background:var(--rv-accent);color:#fff;transition:opacity 120ms ease,background-color 120ms ease}
.cb-tabs__arrow:hover:not(:disabled){background:var(--rv-accent-contrast)}
.cb-tabs__arrow:focus-visible{outline:2px solid var(--rv-accent-contrast);outline-offset:2px}
.cb-tabs__arrow:disabled{opacity:.35;cursor:default}
.cb-tabs__arrow[hidden]{display:none}
.cb-tabs__arrow .cb-icon{color:#fff}
.cb-tabs--inpage .cb-tab{padding:var(--rv-s-2) var(--rv-s-3)}
.cb-tabpanel[hidden]{display:none}
/* section sub-switch (Standings / Results / Hall of seasons) */
.cb-seg{display:inline-flex;border:1px solid var(--rv-border-2);border-radius:var(--rv-r-md);overflow:hidden;background:var(--rv-surface-2)}
.cb-seg__btn{display:inline-flex;align-items:center;gap:var(--rv-s-1);height:var(--cb-ctl-h);padding:0 var(--rv-s-4);font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:600;color:var(--rv-text-dim);white-space:nowrap;transition:background-color 120ms ease,color 120ms ease}
.cb-seg__btn+.cb-seg__btn{border-left:1px solid var(--rv-border-1)}
.cb-seg__btn:hover{color:var(--rv-text-strong)}
.cb-seg__btn[aria-pressed="true"],.cb-seg__btn[aria-current="page"]{background:var(--rv-accent);color:var(--rv-text-on-accent)}
.cb-seg--sm .cb-seg__btn{height:var(--cb-ctl-h-sm);padding:0 var(--rv-s-3);font-size:var(--rv-fs-small)}

/* ----------------------------------------------------------------------------
   7. BUTTONS: one height, one hover treatment
   ---------------------------------------------------------------------------- */
.cb-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--rv-s-2);height:var(--cb-ctl-h);padding:0 var(--rv-s-4);border:1px solid var(--rv-border-2);border-radius:var(--rv-r-md);background:var(--rv-surface-2);color:var(--rv-text-strong);font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:600;letter-spacing:.03em;white-space:nowrap;transition:border-color 120ms ease,background-color 120ms ease,color 120ms ease}
.cb-btn:hover{border-color:var(--rv-text-dim);background:var(--rv-surface-3)}
.cb-btn:active{background:var(--rv-surface-1)}
.cb-btn:disabled,.cb-btn[aria-disabled="true"]{opacity:.5;cursor:default;pointer-events:none}
.cb-btn--primary{background:var(--rv-accent);border-color:var(--rv-accent);color:var(--rv-text-on-accent)}
.cb-btn--primary:hover{background:var(--rv-accent-hover);border-color:var(--rv-accent-hover)}
.cb-btn--primary:active{background:var(--rv-accent-press);border-color:var(--rv-accent-press)}
.cb-btn--ghost{background:transparent;border-color:transparent;color:var(--rv-text)}
.cb-btn--ghost:hover{color:var(--rv-text-strong);background:var(--rv-surface-2);border-color:transparent}
.cb-btn--danger{background:var(--rv-danger-weak);border-color:var(--rv-danger);color:var(--rv-text-strong)}
.cb-btn--danger:hover{background:var(--rv-danger);color:var(--rv-text-on-state);border-color:var(--rv-danger)}
.cb-btn--sm{height:var(--cb-ctl-h-sm);padding:0 var(--rv-s-3);font-size:var(--rv-fs-small)}
.cb-btn--block{width:100%}
.cb-btn .cb-icon{width:var(--cb-icon);height:var(--cb-icon)}
.cb-btns{display:flex;gap:var(--rv-s-3);flex-wrap:wrap;align-items:center}

/* ----------------------------------------------------------------------------
   8. CHIPS: status as plain words
   ---------------------------------------------------------------------------- */
.cb-chip{display:inline-flex;align-items:center;gap:var(--rv-s-1);height:var(--rv-s-5);padding:0 var(--rv-s-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-sm);background:var(--rv-surface-3);color:var(--rv-text);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;line-height:1;white-space:nowrap}
.cb-chip .cb-icon{width:var(--rv-s-3);height:var(--rv-s-3)}
.cb-chip--live{background:var(--rv-accent);border-color:var(--rv-accent);color:var(--rv-text-on-accent)}
.cb-chip--ok{background:var(--rv-success-weak);border-color:var(--rv-success);color:var(--rv-text-strong)}
.cb-chip--warn{background:var(--rv-warning-weak);border-color:var(--rv-warning);color:var(--rv-text-strong)}
.cb-chip--bad{background:var(--rv-danger-weak);border-color:var(--rv-danger);color:var(--rv-text-strong)}
.cb-chip--info{background:var(--rv-info-weak);border-color:var(--rv-info);color:var(--rv-text-strong)}
.cb-chip--role{background:var(--rv-surface-2);color:var(--rv-text-strong)}
.cb-chip--you{background:var(--rv-text-strong);border-color:var(--rv-text-strong);color:var(--rv-bg)}
.cb-chip--quiet{background:transparent;color:var(--rv-text-dim)}
.cb-chips{display:flex;gap:var(--rv-s-2);flex-wrap:wrap;align-items:center}
/* W / L / D squares (last 5) and the streak chip */
.cb-wl{display:inline-grid;place-items:center;width:var(--rv-s-5);height:var(--rv-s-5);border-radius:var(--rv-r-sm);border:1px solid var(--rv-border-1);background:var(--rv-surface-3);color:var(--rv-text-dim);font-family:var(--cb-font-display);font-size:var(--rv-fs-small);font-weight:700;line-height:1}
.cb-wl--w{background:var(--rv-success-weak);border-color:var(--rv-success);color:var(--rv-success)}
.cb-wl--l{background:var(--rv-danger-weak);border-color:var(--rv-danger);color:var(--rv-danger)}
.cb-last5{display:inline-flex;gap:var(--rv-s-1)}
.cb-streak{display:inline-flex;align-items:center;height:var(--rv-s-5);padding:0 var(--rv-s-2);border-radius:var(--rv-r-sm);border:1px solid var(--rv-border-1);background:var(--rv-surface-3);color:var(--rv-text-dim);font-family:var(--cb-font-display);font-size:var(--rv-fs-small);font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.cb-streak--w{background:var(--rv-success-weak);border-color:var(--rv-success);color:var(--rv-success)}
.cb-streak--l{background:var(--rv-danger-weak);border-color:var(--rv-danger);color:var(--rv-danger)}
/* movement and rating delta */
.cb-move{display:inline-flex;align-items:center;gap:2px;font-size:var(--rv-fs-micro);font-weight:700;font-variant-numeric:tabular-nums;color:var(--rv-text-faint)}
.cb-move--up{color:var(--rv-success)}
.cb-move--down{color:var(--rv-danger)}
.cb-move .cb-icon{width:var(--rv-s-3);height:var(--rv-s-3);stroke-width:2.5}
.cb-delta{font-size:var(--rv-fs-micro);font-weight:700;font-variant-numeric:tabular-nums;color:var(--rv-text-dim)}
.cb-delta--up{color:var(--rv-success)}
.cb-delta--down{color:var(--rv-danger)}

/* ----------------------------------------------------------------------------
   9. PANELS, FRAMES, TILES
   ---------------------------------------------------------------------------- */
.cb-panel{position:relative;background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg);padding:var(--rv-s-4);min-width:0;display:flex;flex-direction:column}
@media(min-width:760px){.cb-panel{padding:var(--rv-s-5)}}
.cb-panel--flag{border-left:3px solid var(--rv-accent)}
.cb-panel--tight{padding:var(--rv-s-4)}
.cb-panel--flush{padding:0;overflow:hidden}
.cb-panel__head{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-3);flex-wrap:wrap;margin:0 0 var(--rv-s-4);padding-bottom:var(--rv-s-3);border-bottom:1px solid var(--rv-hairline)}
.cb-panel__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);line-height:1.15;font-weight:700;color:var(--rv-text-strong);display:flex;align-items:center;gap:var(--rv-s-2)}
.cb-panel__title .cb-icon{color:var(--rv-text-dim)}
.cb-panel__more{font-size:var(--rv-fs-small);font-weight:600;color:var(--rv-text-dim)}
.cb-panel__more:hover{color:var(--rv-text-strong)}
.cb-panel__foot{margin-top:auto;padding-top:var(--rv-s-4)}
.cb-panel--flush .cb-panel__head{margin:0;padding:var(--rv-s-3) var(--rv-s-4)}
/* corner brackets: an absolutely positioned set so it is never a flex item */
.cb-brkset{position:absolute;inset:0;pointer-events:none;z-index:2;--cb-brk-inset:calc(-1 * var(--cb-brk-w) / 2)}
.cb-brkset::before,.cb-brkset::after,.cb-brkset>i::before,.cb-brkset>i::after{content:"";position:absolute;width:var(--cb-brk);height:var(--cb-brk);border:var(--cb-brk-w) solid var(--cb-brk-color)}
.cb-brkset::before{top:var(--cb-brk-inset);left:var(--cb-brk-inset);border-right:0;border-bottom:0}
.cb-brkset::after{bottom:var(--cb-brk-inset);right:var(--cb-brk-inset);border-left:0;border-top:0}
.cb-brkset>i::before{top:var(--cb-brk-inset);right:var(--cb-brk-inset);border-left:0;border-bottom:0}
.cb-brkset>i::after{bottom:var(--cb-brk-inset);left:var(--cb-brk-inset);border-right:0;border-top:0}
.cb-brkset--accent{--cb-brk-color:var(--rv-accent-contrast)}
/* stat tile: big number over a small label, never a sentence */
.cb-tile{background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);padding:var(--rv-s-3) var(--rv-s-4);min-width:0}
.cb-tile__label{font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim);white-space:nowrap}
.cb-tile__value{margin-top:var(--rv-s-1);font-family:var(--cb-font-display);font-size:var(--rv-fs-display);line-height:1;font-weight:700;color:var(--rv-text-strong);font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:var(--rv-s-2)}
.cb-tile__value small{font-family:var(--cb-font-sans);font-size:var(--rv-fs-small);font-weight:500;color:var(--rv-text-dim)}
.cb-tile__sub{margin-top:var(--rv-s-1);font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-tiles{display:grid;grid-template-columns:1fr 1fr;gap:var(--rv-s-3)}
@media(min-width:760px){.cb-tiles{grid-template-columns:repeat(4,1fr)}}
.cb-tiles--3{grid-template-columns:repeat(3,1fr)}
/* key : value table (preset, records, details) */
.cb-kv{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;gap:0 var(--rv-s-4);font-size:var(--rv-fs-body)}
.cb-kv>dt{padding:var(--rv-s-2) 0;border-top:1px solid var(--rv-hairline);font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-kv>dd{padding:var(--rv-s-2) 0;border-top:1px solid var(--rv-hairline);color:var(--rv-text-strong);font-weight:500;min-width:0}
.cb-kv>dt:first-of-type,.cb-kv>dd:first-of-type{border-top:0}
/* textures: flat strokes behind a panel's content */
.cb-tex{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.cb-tex+*{position:relative;z-index:1}
.cb-panel--tex>*:not(.cb-tex):not(.cb-brkset){position:relative;z-index:1}

/* ----------------------------------------------------------------------------
   10. BADGES, AVATARS, INSIGNIA
   ---------------------------------------------------------------------------- */
.cb-badge{display:grid;place-items:center;width:var(--cb-badge);height:var(--cb-badge);flex:0 0 auto;border:1px solid var(--rv-border-2);border-radius:var(--rv-r-md);background:var(--rv-surface-3);color:var(--rv-text-strong);font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:700;letter-spacing:.02em;overflow:hidden}
.cb-badge img{width:100%;height:100%;object-fit:cover}
.cb-badge--lg{width:var(--cb-badge-lg);height:var(--cb-badge-lg);font-size:var(--rv-fs-h1);border-radius:var(--rv-r-lg)}
.cb-badge--sm{width:var(--rv-s-6);height:var(--rv-s-6);font-size:var(--rv-fs-small);border-radius:var(--rv-r-sm)}
.cb-avatar{width:var(--cb-avatar);height:var(--cb-avatar);flex:0 0 auto;border-radius:var(--rv-r-full);background:var(--rv-surface-3);border:1px solid var(--rv-border-2);display:grid;place-items:center;color:var(--rv-text-dim);overflow:hidden}
.cb-avatar--lg{width:var(--cb-avatar-lg);height:var(--cb-avatar-lg)}
.cb-avatar .cb-icon{width:60%;height:60%}
.cb-tag{font-family:var(--cb-font-display);font-weight:700;letter-spacing:.02em;color:var(--rv-text-dim)}
.cb-name{font-weight:600;color:var(--rv-text-strong)}
.cb-ident{display:flex;align-items:center;gap:var(--rv-s-3);min-width:0}
.cb-ident__text{min-width:0;display:flex;flex-direction:column;gap:2px}
.cb-ident__line{display:flex;align-items:baseline;gap:var(--rv-s-2);min-width:0}
.cb-ident__meta{font-size:var(--rv-fs-small);color:var(--rv-text-dim);display:flex;align-items:center;gap:var(--rv-s-2);flex-wrap:wrap}
/* rank insignia: RV-drawn chevrons. Tier 1 to 6 drawn in the sprite. */
.cb-insig{width:var(--rv-s-6);height:var(--rv-s-6);flex:0 0 auto;color:var(--rv-text-dim);fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.cb-insig--top{color:var(--rv-text-strong)}
.cb-insig--lg{width:var(--rv-s-7);height:var(--rv-s-7)}

/* ----------------------------------------------------------------------------
   11. PODIUM: 02 left, 01 raised in the middle, 03 right
   ---------------------------------------------------------------------------- */
.cb-podium{display:grid;grid-template-columns:1fr;gap:var(--rv-s-4);align-items:end}
@media(min-width:760px){.cb-podium{grid-template-columns:repeat(3,1fr)}}
.cb-podium__card{position:relative;background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-top:3px solid var(--rv-border-2);border-radius:var(--rv-r-lg);padding:var(--rv-s-4) var(--rv-s-4) var(--rv-s-3);display:flex;flex-direction:column;gap:var(--rv-s-3);--cb-stencil-bg:var(--rv-surface-1)}
@media(min-width:760px){
  .cb-podium__card{padding:var(--rv-s-5)}
  .cb-podium__card--1{order:2;margin-top:0;padding-top:var(--rv-s-6);padding-bottom:var(--rv-s-5)}
  .cb-podium__card--2{order:1;margin-top:var(--rv-s-6)}
  .cb-podium__card--3{order:3;margin-top:var(--rv-s-6)}
}
.cb-podium__card--1{border-top-color:var(--rv-accent)}
.cb-podium__top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--rv-s-3)}
.cb-podium__pos{font-family:var(--cb-font-display);font-size:var(--cb-fs-big);font-weight:800;line-height:1;color:var(--rv-text-strong);font-variant-numeric:tabular-nums}
.cb-podium__name{font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);font-weight:700;line-height:1.1;color:var(--rv-text-strong);display:flex;align-items:baseline;gap:var(--rv-s-2);flex-wrap:wrap}
.cb-podium__name .cb-tag{font-size:var(--rv-fs-h2)}
.cb-podium__meta{display:flex;align-items:center;gap:var(--rv-s-2);font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-podium__stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--rv-s-3);padding-top:var(--rv-s-3);border-top:1px solid var(--rv-hairline)}
.cb-podium__stat .cb-micro{white-space:nowrap}
.cb-podium__stat b{display:block;margin-top:2px;font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong);font-variant-numeric:tabular-nums}
.cb-podium__weapon{display:flex;align-items:center;gap:var(--rv-s-2);font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-podium__weapon .cb-icon{width:var(--rv-s-3);height:var(--rv-s-3)}

/* ----------------------------------------------------------------------------
   12. TABLES: the ops board. Fixed first column, right-aligned numbers,
   state chip last, hairline between rows, no vertical rules.
   ---------------------------------------------------------------------------- */
.cb-tablewrap{overflow-x:auto;border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg);background:var(--rv-surface-1);-webkit-overflow-scrolling:touch}
.cb-table{width:100%;min-width:720px;font-size:var(--rv-fs-body)}
.cb-table--wide{min-width:960px}
.cb-table--narrow{min-width:0}
.cb-table th{position:sticky;top:0;z-index:1;background:var(--rv-surface-2);text-align:left;padding:var(--rv-s-3) var(--rv-s-3);border-bottom:1px solid var(--rv-border-1);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim);white-space:nowrap}
.cb-table th:first-child,.cb-table td:first-child{padding-left:var(--rv-s-4)}
.cb-table th:last-child,.cb-table td:last-child{padding-right:var(--rv-s-4)}
.cb-table td{padding:var(--rv-s-3) var(--rv-s-3);border-top:1px solid var(--rv-hairline);vertical-align:middle}
.cb-table tbody tr:first-child td{border-top:0}
.cb-table tbody tr:hover td{background:var(--rv-surface-2)}
.cb-table tr.is-me td{background:var(--rv-accent-weak)}
.cb-table tr.is-me td:first-child{box-shadow:inset 3px 0 0 var(--rv-accent)}
.cb-table .cb-num,.cb-table th.cb-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.cb-table td.cb-num{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:600;color:var(--rv-text-strong)}
.cb-table td.cb-num .cb-delta{font-family:var(--cb-font-sans);margin-left:var(--rv-s-1)}
.cb-table .cb-pos{width:var(--rv-s-8);font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong);font-variant-numeric:tabular-nums;white-space:nowrap}
.cb-table .cb-pos .cb-move{margin-left:var(--rv-s-1);vertical-align:middle}
.cb-table .cb-pos--top{color:var(--rv-accent-contrast)}
.cb-table a.cb-rowlink{display:contents}
.cb-sort{display:inline-flex;align-items:center;gap:var(--rv-s-1);color:inherit}
.cb-sort .cb-icon{width:var(--rv-s-3);height:var(--rv-s-3);opacity:.6}
.cb-sort[aria-sort="ascending"],.cb-sort[aria-sort="descending"]{color:var(--rv-text-strong)}
.cb-sort[aria-sort] .cb-icon{opacity:1}
.cb-table .cb-cell-muted{color:var(--rv-text-faint)}
/* toolbar above a table: search, filters, sort, count */
.cb-toolbar{display:flex;align-items:center;gap:var(--rv-s-3);flex-wrap:wrap;margin-bottom:var(--rv-s-4)}
.cb-toolbar .cb-field{flex:1 1 240px;margin:0}
.cb-toolbar .cb-count{margin-left:auto}
.cb-count{font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim);white-space:nowrap}
/* pager */
.cb-pager{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-3);flex-wrap:wrap;margin-top:var(--rv-s-4)}
.cb-pager__pages{display:flex;gap:var(--rv-s-1);align-items:center}
.cb-pager__pages .cb-btn{min-width:var(--cb-ctl-h);padding:0 var(--rv-s-2)}
.cb-pager__pages .cb-btn[aria-current="page"]{background:var(--rv-accent);border-color:var(--rv-accent);color:var(--rv-text-on-accent)}
.cb-pager__gap{color:var(--rv-text-faint);padding:0 var(--rv-s-1)}
/* stacked rows on phones for roster-style lists */
.cb-list{display:flex;flex-direction:column}
.cb-list__row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--rv-s-2) var(--rv-s-4);padding:var(--rv-s-3) 0;border-top:1px solid var(--rv-hairline)}
.cb-list__row:first-child{border-top:0}
.cb-list__end{text-align:right;font-variant-numeric:tabular-nums}
.cb-list__end b{display:block;font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong);line-height:1}
.cb-list__end small{font-size:var(--rv-fs-micro);color:var(--rv-text-dim);text-transform:uppercase;letter-spacing:var(--cb-track-wide)}

/* ----------------------------------------------------------------------------
   13. CLAN HEADER, INVITE BLOCK, PROGRESS, ACCORDION, DANGER ZONE
   ---------------------------------------------------------------------------- */
.cb-clanhead{display:grid;grid-template-columns:auto 1fr;gap:var(--rv-s-3) var(--rv-s-4);align-items:center}
.cb-clanhead__name{font-family:var(--cb-font-display);font-size:var(--rv-fs-display);line-height:1;font-weight:800;letter-spacing:var(--cb-track-tight);color:var(--rv-text-strong)}
.cb-clanhead__tag{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:700;letter-spacing:.08em;color:var(--rv-text-dim)}
.cb-clanhead__motto{margin-top:var(--rv-s-2);font-size:var(--rv-fs-body);color:var(--rv-text);max-width:60ch}
.cb-clanhead__chips{margin-top:var(--rv-s-2)}
.cb-clanhead__actions{grid-column:1 / -1}
@media(min-width:760px){
  .cb-clanhead{grid-template-columns:auto 1fr auto}
  .cb-clanhead__actions{grid-column:auto;align-self:start}
}
.cb-clanhead__tiles{grid-column:1 / -1;margin-top:var(--rv-s-2)}
/* invite block */
.cb-invite{display:grid;grid-template-columns:1fr;gap:var(--rv-s-4)}
@media(min-width:960px){.cb-invite{grid-template-columns:minmax(0,1fr) minmax(320px,1fr);align-items:start}}
.cb-invite__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);font-weight:700;line-height:1.1;color:var(--rv-text-strong);margin-top:var(--rv-s-1)}
.cb-copyfield{display:flex;align-items:stretch;border:1px solid var(--rv-border-2);border-radius:var(--rv-r-md);background:var(--rv-surface-2);overflow:hidden}
.cb-copyfield__text{flex:1 1 auto;min-width:0;padding:0 var(--rv-s-3);height:var(--cb-ctl-h);line-height:var(--cb-ctl-h);font-family:var(--cb-font-mono);font-size:var(--rv-fs-small);color:var(--rv-text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cb-copyfield .cb-btn{border:0;border-left:1px solid var(--rv-border-1);border-radius:0;height:auto}
/* progress bar */
.cb-bar{display:flex;flex-direction:column;gap:var(--rv-s-1)}
.cb-bar__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--rv-s-3)}
.cb-bar__val{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:700;color:var(--rv-text-strong);font-variant-numeric:tabular-nums}
.cb-bar__track{height:var(--cb-bar-h);background:var(--rv-surface-3);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-sm);overflow:hidden}
.cb-bar__fill{height:100%;background:var(--rv-accent);width:var(--cb-fill,0%)}
.cb-bar__fill--ok{background:var(--rv-success)}
/* accordion (manage clan): native details, one bordered group, hairline rows */
.cb-acc{border-top:1px solid var(--rv-hairline)}
.cb-acc:first-of-type{border-top:0}
.cb-acc__sum{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-3);padding:var(--rv-s-3) 0;min-height:var(--cb-ctl-h)}
.cb-acc__sum:hover .cb-acc__title{color:var(--rv-text-strong)}
.cb-acc__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:600;color:var(--rv-text);transition:color 120ms ease}
.cb-acc__state{display:block;margin-top:2px;font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim)}
.cb-acc__chev{width:var(--rv-s-6);height:var(--rv-s-6);display:grid;place-items:center;border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);background:var(--rv-surface-2);color:var(--rv-text-dim);transition:transform 160ms ease}
.cb-acc[open] .cb-acc__chev{transform:rotate(180deg)}
.cb-acc__body{padding:var(--rv-s-2) 0 var(--rv-s-5)}
/* danger zone: visibly separate, bordered in the danger line, never red text */
.cb-danger{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-4);flex-wrap:wrap;background:var(--rv-surface-1);border:1px solid var(--rv-danger);border-radius:var(--rv-r-lg);padding:var(--rv-s-4)}
@media(min-width:760px){.cb-danger{padding:var(--rv-s-5)}}
.cb-danger__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong)}
.cb-danger__text{margin-top:var(--rv-s-1);font-size:var(--rv-fs-small);color:var(--rv-text-dim);max-width:68ch}

/* ----------------------------------------------------------------------------
   14. ROOM ROWS (Briefing Rooms) and MAP TILES
   ---------------------------------------------------------------------------- */
.cb-pills{display:flex;gap:var(--rv-s-2);flex-wrap:wrap}
.cb-pill{display:inline-flex;align-items:center;gap:var(--rv-s-2);height:var(--cb-ctl-h-sm);padding:0 var(--rv-s-3);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-sm);background:var(--rv-surface-2);color:var(--rv-text-dim);font-family:var(--cb-font-display);font-size:var(--rv-fs-small);font-weight:600;letter-spacing:.03em;transition:color 120ms ease,border-color 120ms ease,background-color 120ms ease}
.cb-pill:hover{color:var(--rv-text-strong);border-color:var(--rv-text-dim)}
.cb-pill[aria-pressed="true"]{background:var(--rv-accent);border-color:var(--rv-accent);color:var(--rv-text-on-accent)}
.cb-pill__n{font-variant-numeric:tabular-nums;opacity:.8}
.cb-rooms{display:flex;flex-direction:column;gap:var(--rv-s-2)}
.cb-room{background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg)}
.cb-room--war{border-left:3px solid var(--rv-accent)}
.cb-room__sum{display:grid;grid-template-columns:auto 1fr auto;gap:var(--rv-s-3) var(--rv-s-4);align-items:center;padding:var(--rv-s-3) var(--rv-s-4)}
.cb-room__sum:hover .cb-room__name{color:var(--rv-text-strong)}
.cb-room__name{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong);display:flex;align-items:center;gap:var(--rv-s-2);flex-wrap:wrap}
.cb-room__line{margin-top:2px;font-size:var(--rv-fs-small);color:var(--rv-text-dim);display:flex;align-items:center;gap:var(--rv-s-2);flex-wrap:wrap;font-variant-numeric:tabular-nums}
.cb-room__line .cb-sep{color:var(--rv-text-faint)}
.cb-room__state{display:flex;flex-direction:column;align-items:flex-end;gap:var(--rv-s-1)}
.cb-room__players{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:600;color:var(--rv-text-strong);font-variant-numeric:tabular-nums;white-space:nowrap}
.cb-room__players small{font-weight:500;color:var(--rv-text-dim)}
.cb-room__body{padding:0 var(--rv-s-4) var(--rv-s-4) calc(var(--cb-maptile) + var(--rv-s-4) + var(--rv-s-4));border-top:1px solid var(--rv-hairline);margin-top:0;padding-top:var(--rv-s-3)}
@media(max-width:559px){.cb-room__body{padding-left:var(--rv-s-4)}}
.cb-teams{display:grid;grid-template-columns:1fr;gap:var(--rv-s-3)}
@media(min-width:760px){.cb-teams{grid-template-columns:1fr 1fr}}
.cb-team__title{display:flex;align-items:center;gap:var(--rv-s-2);margin-bottom:var(--rv-s-2)}
.cb-team ul{display:flex;flex-direction:column;gap:var(--rv-s-1)}
.cb-team li{display:flex;align-items:center;gap:var(--rv-s-2);font-size:var(--rv-fs-small);color:var(--rv-text)}
.cb-team li .cb-avatar{width:var(--rv-s-5);height:var(--rv-s-5)}
/* map tile: the map name in a framed tile over a contour texture. No game art. */
.cb-maptile{position:relative;width:var(--cb-maptile);height:calc(var(--cb-maptile) * 9 / 16);flex:0 0 auto;border:1px solid var(--rv-border-2);border-radius:var(--rv-r-sm);background:var(--rv-surface-3);overflow:hidden;display:grid;place-items:end start}
.cb-maptile svg{position:absolute;inset:0;width:100%;height:100%;color:var(--cb-texture-strong)}
.cb-maptile span{position:relative;padding:2px var(--rv-s-1);font-family:var(--cb-font-display);font-size:var(--rv-fs-nano);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--rv-text-strong);background:var(--rv-surface-1)}
.cb-maptile--lg{width:calc(var(--cb-maptile) * 2);height:calc(var(--cb-maptile) * 2 * 9 / 16)}
.cb-maptile--lg span{font-size:var(--rv-fs-micro)}

/* ----------------------------------------------------------------------------
   15. RESULTS (battles feed), WAR ROOM, BRACKET
   ---------------------------------------------------------------------------- */
.cb-result{display:grid;grid-template-columns:1fr;gap:var(--rv-s-3);padding:var(--rv-s-3) var(--rv-s-4);border-top:1px solid var(--rv-hairline);align-items:center}
.cb-result:first-child{border-top:0}
@media(min-width:760px){.cb-result{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto}}
.cb-result__side{display:flex;align-items:center;gap:var(--rv-s-3);min-width:0}
.cb-result__side--r{flex-direction:row-reverse;text-align:right}
.cb-result__side.is-loser .cb-name{color:var(--rv-text-dim);font-weight:500}
.cb-result__score{display:flex;align-items:center;gap:var(--rv-s-2);justify-content:center;font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);font-weight:800;color:var(--rv-text-strong);font-variant-numeric:tabular-nums;white-space:nowrap}
.cb-result__score .cb-sep{color:var(--rv-text-faint);font-weight:500}
.cb-result__meta{display:flex;flex-direction:column;align-items:flex-end;gap:var(--rv-s-1);font-size:var(--rv-fs-small);color:var(--rv-text-dim);text-align:right;white-space:nowrap}
@media(max-width:759px){.cb-result__side--r{flex-direction:row;text-align:left}.cb-result__meta{align-items:flex-start;text-align:left}}
/* war room: versus block */
.cb-versus{position:relative;display:grid;grid-template-columns:1fr;gap:var(--rv-s-4);align-items:center}
@media(min-width:760px){.cb-versus{grid-template-columns:1fr auto 1fr}}
.cb-versus__side{display:flex;align-items:center;gap:var(--rv-s-4);min-width:0}
.cb-versus__side--r{flex-direction:row-reverse;text-align:right}
@media(max-width:759px){.cb-versus__side--r{flex-direction:row;text-align:left}}
.cb-versus__name{font-family:var(--cb-font-display);font-size:var(--rv-fs-display);font-weight:800;line-height:1;letter-spacing:var(--cb-track-tight);color:var(--rv-text-strong)}
.cb-versus__mid{display:flex;flex-direction:column;align-items:center;gap:var(--rv-s-2);text-align:center;padding:0 var(--rv-s-4)}
.cb-versus__vs{font-family:var(--cb-font-display);font-size:var(--cb-fs-versus);font-weight:800;line-height:1;color:var(--rv-accent-contrast);letter-spacing:.04em}
.cb-versus__score{font-family:var(--cb-font-display);font-size:var(--cb-fs-big);font-weight:800;line-height:1;color:var(--rv-text-strong);font-variant-numeric:tabular-nums;display:flex;gap:var(--rv-s-3);align-items:center}
.cb-versus__score .cb-sep{color:var(--rv-text-faint);font-size:var(--rv-fs-h1)}
.cb-countdown{font-family:var(--cb-font-mono);font-size:var(--rv-fs-h1);font-weight:500;color:var(--rv-text-strong);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.cb-countdown--big{font-size:var(--cb-fs-big);font-weight:500}
/* lifecycle rail */
.cb-steps{display:flex;align-items:stretch;gap:0;overflow-x:auto;border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);background:var(--rv-surface-1)}
.cb-steps__s{flex:1 1 0;min-width:96px;display:flex;flex-direction:column;align-items:center;gap:var(--rv-s-1);padding:var(--rv-s-2) var(--rv-s-2);border-left:1px solid var(--rv-hairline);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-faint);text-align:center;white-space:nowrap}
.cb-steps__s:first-child{border-left:0}
.cb-steps__s.is-done{color:var(--rv-text-dim)}
.cb-steps__s.is-now{color:var(--rv-text-on-accent);background:var(--rv-accent)}
.cb-steps__s b{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:700;letter-spacing:0;text-transform:none;line-height:1}
/* per-player result lines use .cb-table; MVP marker */
.cb-mvp{display:inline-flex;align-items:center;gap:var(--rv-s-1);font-size:var(--rv-fs-micro);font-weight:700;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-strong)}
.cb-mvp .cb-icon{color:var(--rv-accent-contrast)}
/* check-in list */
.cb-checkin{display:flex;flex-direction:column}
.cb-checkin li{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--rv-s-3);padding:var(--rv-s-2) 0;border-top:1px solid var(--rv-hairline)}
.cb-checkin li:first-child{border-top:0}
/* bracket */
.cb-bracketwrap{overflow-x:auto;padding-bottom:var(--rv-s-2)}
.cb-bracket{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);gap:0 var(--rv-s-7);min-width:720px;align-items:start}
.cb-round{display:grid;grid-auto-rows:var(--cb-rowh,var(--cb-slot))}
.cb-round__title{grid-row:auto;height:auto;margin-bottom:var(--rv-s-2)}
.cb-round--1{--cb-rowh:var(--cb-slot)}
.cb-round--2{--cb-rowh:calc(var(--cb-slot) * 2);--cb-join:var(--cb-slot)}
.cb-round--3{--cb-rowh:calc(var(--cb-slot) * 4);--cb-join:calc(var(--cb-slot) * 2)}
.cb-round--4{--cb-rowh:calc(var(--cb-slot) * 8);--cb-join:calc(var(--cb-slot) * 4)}
.cb-slot{position:relative;display:flex;align-items:center}
.cb-round:not(.cb-round--1) .cb-slot::before{content:"";position:absolute;left:calc(-1 * var(--rv-s-5));top:50%;transform:translateY(-50%);height:var(--cb-join);width:0;border-left:1px solid var(--rv-border-2)}
.cb-round:not(.cb-round--1) .cb-slot::after{content:"";position:absolute;left:calc(-1 * var(--rv-s-5));top:50%;width:var(--rv-s-5);height:0;border-top:1px solid var(--rv-border-2)}
.cb-match{position:relative;width:100%;background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);overflow:hidden}
.cb-round:not(:last-child) .cb-match::after{content:"";position:absolute;left:100%;top:50%;width:var(--rv-s-5);height:0;border-top:1px solid var(--rv-border-2)}
.cb-match__row{display:grid;grid-template-columns:var(--rv-s-6) 1fr auto;align-items:center;gap:var(--rv-s-2);height:calc(var(--cb-slot) / 2 - var(--rv-s-2));padding:0 var(--rv-s-3) 0 0;font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-match__row+.cb-match__row{border-top:1px solid var(--rv-hairline)}
.cb-match__row.is-winner{color:var(--rv-text-strong);font-weight:600}
.cb-match__row.is-winner .cb-match__score{color:var(--rv-text-strong)}
.cb-match__seed{display:grid;place-items:center;height:100%;background:var(--rv-surface-2);border-right:1px solid var(--rv-hairline);font-family:var(--cb-font-display);font-size:var(--rv-fs-micro);font-weight:700;color:var(--rv-text-faint)}
.cb-match__team{display:flex;align-items:center;gap:var(--rv-s-2);min-width:0}
.cb-match__team .cb-tag{font-size:var(--rv-fs-small)}
.cb-match__score{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:700;color:var(--rv-text-dim);font-variant-numeric:tabular-nums}
.cb-match--live{border-color:var(--rv-accent)}
.cb-match__tbd{color:var(--rv-text-faint);font-style:normal}

/* ----------------------------------------------------------------------------
   16. CALENDAR
   ---------------------------------------------------------------------------- */
.cb-cal{border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg);background:var(--rv-surface-1);overflow:hidden}
.cb-cal__head{display:grid;grid-template-columns:repeat(7,1fr);background:var(--rv-surface-2);border-bottom:1px solid var(--rv-border-1)}
.cb-cal__head span{padding:var(--rv-s-2) var(--rv-s-3);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim)}
.cb-cal__grid{display:grid;grid-template-columns:repeat(7,1fr)}
.cb-cal__day{min-height:var(--cb-cal-day);padding:var(--rv-s-2);border-top:1px solid var(--rv-hairline);border-left:1px solid var(--rv-hairline);display:flex;flex-direction:column;gap:var(--rv-s-1);min-width:0}
.cb-cal__day:nth-child(7n+1){border-left:0}
.cb-cal__day:nth-child(-n+7){border-top:0}
.cb-cal__day--out{color:var(--rv-text-faint);background:var(--rv-bg)}
.cb-cal__day--today .cb-cal__num{background:var(--rv-accent);color:var(--rv-text-on-accent)}
.cb-cal__num{align-self:flex-start;min-width:var(--rv-s-5);height:var(--rv-s-5);padding:0 var(--rv-s-1);border-radius:var(--rv-r-sm);font-family:var(--cb-font-display);font-size:var(--rv-fs-small);font-weight:700;line-height:var(--rv-s-5);text-align:center;color:var(--rv-text-dim);font-variant-numeric:tabular-nums}
.cb-ev{display:flex;align-items:center;gap:var(--rv-s-1);padding:2px var(--rv-s-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-sm);background:var(--rv-surface-2);font-size:var(--rv-fs-micro);line-height:1.3;color:var(--rv-text);min-width:0}
.cb-ev:hover{border-color:var(--rv-text-dim)}
.cb-ev__t{font-variant-numeric:tabular-nums;color:var(--rv-text-dim);flex:0 0 auto}
.cb-ev__n{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.cb-ev--live{background:var(--rv-accent);border-color:var(--rv-accent);color:var(--rv-text-on-accent)}
.cb-ev--live .cb-ev__t{color:var(--rv-text-on-accent)}
.cb-ev--season{background:transparent;border-style:dashed;color:var(--rv-text-dim)}
.cb-ev--mine{border-left:3px solid var(--rv-accent)}
.cb-cal__more{font-size:var(--rv-fs-micro);color:var(--rv-text-dim);padding-left:var(--rv-s-1)}
@media(max-width:759px){
  .cb-cal__head{display:none}
  .cb-cal__grid{grid-template-columns:1fr}
  .cb-cal__day{min-height:0;border-left:0;flex-direction:row;flex-wrap:wrap;align-items:center}
  .cb-cal__day--out{display:none}
  .cb-cal__day:nth-child(-n+7){border-top:1px solid var(--rv-hairline)}
  .cb-cal__num{min-width:var(--rv-s-8);text-align:left}
}
/* agenda list (week / list view, Hub pane) */
.cb-agenda{display:flex;flex-direction:column}
.cb-agenda__day{padding:var(--rv-s-3) 0;border-top:1px solid var(--rv-hairline)}
.cb-agenda__day:first-child{border-top:0;padding-top:0}
.cb-agenda__date{display:flex;align-items:baseline;gap:var(--rv-s-2);margin-bottom:var(--rv-s-2)}
.cb-agenda__date b{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong)}
.cb-agenda__item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--rv-s-3);padding:var(--rv-s-2) var(--rv-s-3);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);background:var(--rv-surface-2)}
.cb-agenda__item+.cb-agenda__item{margin-top:var(--rv-s-2)}
.cb-agenda__time{font-family:var(--cb-font-mono);font-size:var(--rv-fs-small);color:var(--rv-text-dim);font-variant-numeric:tabular-nums}

/* ----------------------------------------------------------------------------
   17. FORUM, MEDIA, LOG, ACCOLADES
   ---------------------------------------------------------------------------- */
.cb-boards{display:flex;flex-direction:column}
.cb-board{display:grid;grid-template-columns:auto 1fr auto;gap:var(--rv-s-3) var(--rv-s-4);align-items:center;padding:var(--rv-s-3) var(--rv-s-4);border-top:1px solid var(--rv-hairline)}
.cb-board:first-child{border-top:0}
.cb-board:hover{background:var(--rv-surface-2)}
.cb-board__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong)}
.cb-board__desc{font-size:var(--rv-fs-small);color:var(--rv-text-dim);max-width:60ch}
.cb-board__stats{text-align:right;font-size:var(--rv-fs-small);color:var(--rv-text-dim);white-space:nowrap;font-variant-numeric:tabular-nums}
.cb-board__stats b{display:block;font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);color:var(--rv-text-strong)}
.cb-thread{display:grid;grid-template-columns:auto 1fr auto;gap:var(--rv-s-3) var(--rv-s-4);align-items:center;padding:var(--rv-s-3) var(--rv-s-4);border-top:1px solid var(--rv-hairline)}
.cb-thread:first-child{border-top:0}
.cb-thread:hover{background:var(--rv-surface-2)}
.cb-thread__title{font-weight:600;color:var(--rv-text-strong);display:flex;align-items:center;gap:var(--rv-s-2);flex-wrap:wrap}
.cb-thread__meta{font-size:var(--rv-fs-small);color:var(--rv-text-dim);margin-top:2px}
.cb-thread__last{text-align:right;font-size:var(--rv-fs-small);color:var(--rv-text-dim);white-space:nowrap}
.cb-thread__last b{display:block;color:var(--rv-text)}
.cb-post{display:grid;grid-template-columns:auto 1fr;gap:var(--rv-s-3) var(--rv-s-4);padding:var(--rv-s-4);border-top:1px solid var(--rv-hairline)}
.cb-post:first-child{border-top:0}
.cb-post__head{display:flex;align-items:center;gap:var(--rv-s-2);flex-wrap:wrap;font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-post__body{margin-top:var(--rv-s-2);max-width:var(--rv-measure)}
.cb-post__body p+p{margin-top:var(--rv-s-3)}
.cb-post__actions{margin-top:var(--rv-s-3);display:flex;gap:var(--rv-s-2)}
/* media grid: framed placeholders, never game art in the chrome */
.cb-media{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--rv-s-3)}
@media(min-width:760px){.cb-media{grid-template-columns:repeat(4,1fr)}}
.cb-media__item{position:relative;background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);overflow:hidden;display:flex;flex-direction:column}
.cb-media__item:hover{border-color:var(--rv-text-dim)}
.cb-media__thumb{position:relative;aspect-ratio:16/9;background:var(--rv-surface-3);display:grid;place-items:center;color:var(--rv-text-faint)}
.cb-media__thumb svg.cb-tex{color:var(--cb-texture-strong)}
.cb-media__thumb .cb-icon{position:relative;width:var(--rv-s-6);height:var(--rv-s-6)}
.cb-media__play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:var(--rv-s-7);height:var(--rv-s-7);border-radius:var(--rv-r-full);background:var(--rv-accent);color:var(--rv-text-on-accent);display:grid;place-items:center}
.cb-media__play .cb-icon{fill:currentColor;stroke:none;width:var(--rv-s-5);height:var(--rv-s-5);position:static}
.cb-media__dur{position:absolute;right:var(--rv-s-2);bottom:var(--rv-s-2);padding:2px var(--rv-s-1);background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-sm);font-family:var(--cb-font-mono);font-size:var(--rv-fs-micro);color:var(--rv-text-strong)}
.cb-media__cap{padding:var(--rv-s-2) var(--rv-s-3) var(--rv-s-3);display:flex;flex-direction:column;gap:2px}
.cb-media__title{font-weight:600;color:var(--rv-text-strong);font-size:var(--rv-fs-small)}
.cb-media__meta{font-size:var(--rv-fs-micro);color:var(--rv-text-dim);display:flex;gap:var(--rv-s-2);flex-wrap:wrap}
.cb-media__item--featured{border-top:3px solid var(--rv-accent)}
/* log (who did what, when) */
.cb-log{display:flex;flex-direction:column}
.cb-log li{display:grid;grid-template-columns:auto auto 1fr;gap:var(--rv-s-3);align-items:start;padding:var(--rv-s-2) 0;border-top:1px solid var(--rv-hairline);font-size:var(--rv-fs-small)}
.cb-log li:first-child{border-top:0}
.cb-log__t{font-family:var(--cb-font-mono);font-size:var(--rv-fs-micro);color:var(--rv-text-dim);white-space:nowrap;padding-top:2px}
.cb-log__who{font-weight:600;color:var(--rv-text-strong);white-space:nowrap}
/* accolades: a trophy room of flat plaques */
.cb-accolades{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--rv-s-3)}
@media(min-width:760px){.cb-accolades{grid-template-columns:repeat(4,1fr)}}
.cb-plaque{position:relative;background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);padding:var(--rv-s-4);display:flex;flex-direction:column;gap:var(--rv-s-1);min-height:var(--rv-s-8);--cb-stencil-bg:var(--rv-surface-2)}
.cb-plaque--gold{border-top:3px solid var(--rv-accent)}
.cb-plaque__kind{font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim)}
.cb-plaque__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);font-weight:800;line-height:1;color:var(--rv-text-strong)}
.cb-plaque__sub{font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-plaque .cb-icon{position:absolute;top:var(--rv-s-3);right:var(--rv-s-3);color:var(--rv-text-faint)}
.cb-plaque--gold .cb-icon{color:var(--rv-accent-contrast)}

/* ----------------------------------------------------------------------------
   18. FORMS: label above control, the setting card with its hint inside
   ---------------------------------------------------------------------------- */
.cb-field{display:flex;flex-direction:column;gap:var(--rv-s-1);min-width:0}
.cb-field+.cb-field{margin-top:var(--rv-s-4)}
.cb-label{font-size:var(--rv-fs-small);font-weight:600;color:var(--rv-text-strong)}
.cb-label .cb-opt{font-weight:400;color:var(--rv-text-dim)}
.cb-input,.cb-select select,.cb-textarea{width:100%;height:var(--cb-ctl-h);padding:0 var(--rv-s-3);background:var(--rv-surface-2);border:1px solid var(--rv-border-2);border-radius:var(--rv-r-md);color:var(--rv-text-strong);font-size:var(--rv-fs-body);transition:border-color 120ms ease}
.cb-input::placeholder,.cb-textarea::placeholder{color:var(--rv-text-faint)}
.cb-input:hover,.cb-select select:hover,.cb-textarea:hover{border-color:var(--rv-text-dim)}
.cb-input:focus-visible,.cb-select select:focus-visible,.cb-textarea:focus-visible{border-color:var(--rv-focus);outline-offset:0}
.cb-input[aria-invalid="true"],.cb-textarea[aria-invalid="true"]{border-color:var(--rv-danger)}
.cb-input--mono{font-family:var(--cb-font-mono);font-size:var(--rv-fs-small)}
.cb-input--sm{height:var(--cb-ctl-h-sm);font-size:var(--rv-fs-small)}
.cb-textarea{height:auto;min-height:calc(var(--cb-ctl-h) * 3);padding:var(--rv-s-2) var(--rv-s-3);resize:vertical;line-height:var(--rv-lh-body)}
.cb-inputwrap{position:relative;display:flex;align-items:center}
.cb-inputwrap .cb-icon{position:absolute;left:var(--rv-s-3);color:var(--rv-text-dim);pointer-events:none}
.cb-inputwrap .cb-input{padding-left:calc(var(--rv-s-3) + var(--cb-icon) + var(--rv-s-2))}
.cb-select{position:relative;display:inline-flex;min-width:0}
.cb-select select{appearance:none;-webkit-appearance:none;padding-right:calc(var(--rv-s-3) + var(--rv-s-5));cursor:pointer}
.cb-select::after{content:"";position:absolute;right:var(--rv-s-3);top:50%;width:var(--rv-s-2);height:var(--rv-s-2);border-right:1.5px solid var(--rv-text-dim);border-bottom:1.5px solid var(--rv-text-dim);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.cb-select--sm select{height:var(--cb-ctl-h-sm);font-size:var(--rv-fs-small)}
.cb-select select option{background:var(--rv-elev);color:var(--rv-text-strong)}
.cb-help{font-size:var(--rv-fs-small);color:var(--rv-text-dim);max-width:68ch}
.cb-error{font-size:var(--rv-fs-small);color:var(--rv-text-strong);display:flex;align-items:center;gap:var(--rv-s-1)}
.cb-error .cb-icon{color:var(--rv-danger)}
.cb-fields--2{display:grid;grid-template-columns:1fr;gap:var(--rv-s-4)}
@media(min-width:760px){.cb-fields--2{grid-template-columns:1fr 1fr}}
.cb-fields--2 .cb-field+.cb-field{margin-top:0}
/* choice cards (type: Battle / Match; preset pick) */
.cb-choices{display:grid;grid-template-columns:1fr;gap:var(--rv-s-3)}
@media(min-width:760px){.cb-choices{grid-template-columns:repeat(var(--cb-cols,2),1fr)}}
.cb-choice{position:relative;display:block;cursor:pointer}
.cb-choice input{position:absolute;opacity:0;width:1px;height:1px}
.cb-choice__box{display:flex;flex-direction:column;gap:var(--rv-s-1);padding:var(--rv-s-3) var(--rv-s-4);background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);transition:border-color 120ms ease,background-color 120ms ease;height:100%}
.cb-choice:hover .cb-choice__box{border-color:var(--rv-text-dim)}
.cb-choice input:checked+.cb-choice__box{border-color:var(--rv-accent);background:var(--rv-accent-weak);box-shadow:inset 3px 0 0 var(--rv-accent)}
.cb-choice input:focus-visible+.cb-choice__box{outline:2px solid var(--rv-focus);outline-offset:2px}
.cb-choice__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong)}
.cb-choice__desc{font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
/* toggle: square track (wider than tall, so never r-full), round knob */
.cb-toggle{position:relative;display:inline-flex;align-items:center;gap:var(--rv-s-2);cursor:pointer}
.cb-toggle input{position:absolute;opacity:0;width:1px;height:1px}
.cb-toggle__track{position:relative;width:var(--rv-s-8);height:var(--rv-s-5);flex:0 0 auto;background:var(--rv-surface-3);border:1px solid var(--rv-border-2);border-radius:var(--rv-r-sm);transition:background-color 120ms ease,border-color 120ms ease}
.cb-toggle__track::after{content:"";position:absolute;top:var(--rv-s-1);left:var(--rv-s-1);width:var(--rv-s-4);height:var(--rv-s-4);border-radius:var(--rv-r-full);background:var(--rv-text-dim);transition:transform 160ms ease,background-color 120ms ease}
.cb-toggle input:checked+.cb-toggle__track{background:var(--rv-accent);border-color:var(--rv-accent)}
.cb-toggle input:checked+.cb-toggle__track::after{transform:translateX(calc(var(--rv-s-8) - var(--rv-s-4) - var(--rv-s-1) * 2 - 2px));background:var(--rv-text-on-accent)}
.cb-toggle input:focus-visible+.cb-toggle__track{outline:2px solid var(--rv-focus);outline-offset:2px}
.cb-toggle__lbl{font-size:var(--rv-fs-small);font-weight:600;color:var(--rv-text-strong)}
.cb-check{display:inline-flex;align-items:center;gap:var(--rv-s-2);cursor:pointer;font-size:var(--rv-fs-body)}
.cb-check input{width:var(--rv-s-4);height:var(--rv-s-4);accent-color:var(--rv-accent);margin:0}
/* the setting card (RV house pattern) */
.cb-group{margin:0 0 var(--rv-s-6)}
.cb-group:last-child{margin-bottom:0}
.cb-group__title{margin:0 0 var(--rv-s-3);padding-bottom:var(--rv-s-2);border-bottom:1px solid var(--rv-hairline);font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);line-height:var(--rv-lh-tight);font-weight:700;color:var(--rv-text-strong)}
.cb-group__desc{margin:calc(var(--rv-s-2) * -1) 0 var(--rv-s-3);max-width:var(--rv-measure);font-size:var(--rv-fs-small);line-height:var(--rv-lh-body);color:var(--rv-text-dim)}
.cb-setting{display:grid;grid-template-columns:minmax(160px,1fr) auto;align-items:center;gap:var(--rv-s-2) var(--rv-s-4);padding:var(--rv-s-4);background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg)}
.cb-setting+.cb-setting{margin-top:var(--rv-s-3)}
.cb-setting__label{font-size:var(--rv-fs-h3);line-height:var(--rv-lh-tight);font-weight:600;color:var(--rv-text-strong)}
.cb-setting__ctl{display:flex;align-items:center;justify-content:flex-end;gap:var(--rv-s-2);min-width:0}
.cb-setting__hint{grid-column:1 / -1;margin:0;max-width:68ch;font-size:var(--rv-fs-small);line-height:var(--rv-lh-body);color:var(--rv-text-dim)}
.cb-setting--stacked{grid-template-columns:1fr}
.cb-setting--stacked .cb-setting__ctl{justify-content:flex-start;flex-direction:column;align-items:stretch}
.cb-setting__wide{grid-column:1 / -1}
@media(max-width:559px){.cb-setting{grid-template-columns:1fr}.cb-setting__ctl{justify-content:flex-start}}
.cb-formfoot{display:flex;align-items:center;gap:var(--rv-s-3);flex-wrap:wrap;margin-top:var(--rv-s-6);padding-top:var(--rv-s-4);border-top:1px solid var(--rv-hairline)}

/* ----------------------------------------------------------------------------
   19. STATES: empty, loading, error, notice, toast
   ---------------------------------------------------------------------------- */
.cb-empty{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--rv-s-2);padding:var(--rv-s-7) var(--rv-s-4);border:1px dashed var(--rv-border-2);border-radius:var(--rv-r-lg);background:var(--rv-surface-1);overflow:hidden}
.cb-empty .cb-iconbox{width:var(--rv-s-7);height:var(--rv-s-7);margin-bottom:var(--rv-s-2)}
.cb-empty__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);font-weight:700;color:var(--rv-text-strong);line-height:1.1}
.cb-empty__text{font-size:var(--rv-fs-small);color:var(--rv-text-dim);max-width:48ch}
.cb-empty .cb-btns{margin-top:var(--rv-s-3);justify-content:center}
.cb-empty--inline{padding:var(--rv-s-5) var(--rv-s-4);border-style:solid}
.cb-notice{display:flex;align-items:center;gap:var(--rv-s-3);flex-wrap:wrap;background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-left:3px solid var(--rv-accent);border-radius:var(--rv-r-lg);padding:var(--rv-s-3) var(--rv-s-4);font-size:var(--rv-fs-small);color:var(--rv-text-strong)}
.cb-notice__text{flex:1 1 240px}
.cb-notice__text small{display:block;color:var(--rv-text-dim)}
.cb-notice--ok{border-left-color:var(--rv-success)}
.cb-notice--warn{border-left-color:var(--rv-warning)}
.cb-notice--err{border-left-color:var(--rv-danger)}
.cb-notice--info{border-left-color:var(--rv-info)}
.cb-notice .cb-icon{color:var(--rv-text-dim)}
.cb-notice--err .cb-icon{color:var(--rv-danger)}
.cb-notice--ok .cb-icon{color:var(--rv-success)}
/* skeleton: flat blocks, a slow fade only while loading (real event) */
.cb-skel{display:block;background:var(--rv-surface-3);border-radius:var(--rv-r-sm);height:var(--rv-s-4);width:100%;animation:cbSkel 1.4s ease-in-out infinite}
.cb-skel--t{height:var(--rv-s-5);width:40%}
.cb-skel--s{height:var(--rv-s-3);width:60%}
.cb-skel--box{height:var(--rv-s-8)}
.cb-skel--row{height:var(--cb-ctl-h)}
.cb-skelrows{display:flex;flex-direction:column;gap:var(--rv-s-2)}
@keyframes cbSkel{0%,100%{opacity:1}50%{opacity:.55}}
.cb-loading{display:flex;align-items:center;gap:var(--rv-s-2);font-size:var(--rv-fs-small);color:var(--rv-text-dim);padding:var(--rv-s-3) 0}
.cb-spinner{width:var(--rv-s-4);height:var(--rv-s-4);border:2px solid var(--rv-border-2);border-top-color:var(--rv-text-strong);border-radius:var(--rv-r-full);animation:cbSpin .9s linear infinite}
@keyframes cbSpin{to{transform:rotate(360deg)}}
/* toast */
.cb-toasts{position:fixed;right:var(--rv-s-4);bottom:var(--rv-s-4);z-index:300;display:flex;flex-direction:column;gap:var(--rv-s-2);max-width:min(360px,calc(100vw - var(--rv-s-6)))}
.cb-toast{display:flex;align-items:center;gap:var(--rv-s-3);padding:var(--rv-s-3) var(--rv-s-4);background:var(--rv-elev);border:1px solid var(--rv-border-2);border-left:3px solid var(--rv-accent);border-radius:var(--rv-r-lg);box-shadow:0 2px 2px var(--cb-shadow);font-size:var(--rv-fs-small);color:var(--rv-text-strong)}
.cb-toast--ok{border-left-color:var(--rv-success)}
.cb-toast--err{border-left-color:var(--rv-danger)}
/* modal (confirm disband, dispute) */
.cb-modal{position:fixed;inset:0;z-index:250;display:grid;place-items:center;padding:var(--rv-s-4);background:var(--rv-scrim)}
.cb-modal__box{width:100%;max-width:520px;background:var(--rv-surface-1);border:1px solid var(--rv-border-2);border-radius:var(--rv-r-lg);padding:var(--rv-s-5);box-shadow:0 2px 2px var(--cb-shadow)}
.cb-modal__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);font-weight:700;color:var(--rv-text-strong)}
.cb-modal__text{margin-top:var(--rv-s-2);font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-modal .cb-btns{margin-top:var(--rv-s-5);justify-content:flex-end}

/* ----------------------------------------------------------------------------
   20. HOME: season banner, next war room, clan card, call to action
   ---------------------------------------------------------------------------- */
.cb-season{display:grid;grid-template-columns:auto 1fr;gap:var(--rv-s-3) var(--rv-s-5);align-items:center;--cb-stencil-bg:var(--rv-surface-1)}
.cb-season__num{font-family:var(--cb-font-display);font-size:var(--cb-fs-big);font-weight:800;line-height:1;color:var(--rv-text-strong);font-variant-numeric:tabular-nums}
.cb-season__num small{display:block;font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim);margin-bottom:var(--rv-s-1)}
.cb-season__body{min-width:0}
.cb-season__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);font-weight:700;line-height:1.1;color:var(--rv-text-strong)}
.cb-season__meta{margin-top:var(--rv-s-1);font-size:var(--rv-fs-small);color:var(--rv-text-dim);display:flex;gap:var(--rv-s-2);flex-wrap:wrap;align-items:center}
.cb-season .cb-bar{grid-column:1 / -1}
.cb-topclans{display:flex;flex-direction:column}
.cb-topclans li{display:grid;grid-template-columns:var(--rv-s-6) auto 1fr auto auto;align-items:center;gap:var(--rv-s-3);padding:var(--rv-s-2) 0;border-top:1px solid var(--rv-hairline);font-size:var(--rv-fs-body)}
.cb-topclans li:first-child{border-top:0}
.cb-topclans .cb-pos{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong);font-variant-numeric:tabular-nums}
.cb-topclans .cb-rec{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:600;color:var(--rv-text-strong);font-variant-numeric:tabular-nums;white-space:nowrap}
.cb-topclans .cb-ratio{font-size:var(--rv-fs-small);color:var(--rv-text-dim);font-variant-numeric:tabular-nums;white-space:nowrap;min-width:var(--rv-s-8);text-align:right}
.cb-cta{display:grid;grid-template-columns:1fr;gap:var(--rv-s-4);align-items:center}
@media(min-width:760px){.cb-cta{grid-template-columns:1fr auto}}
.cb-cta__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h1);font-weight:700;line-height:1.1;color:var(--rv-text-strong)}
.cb-cta__text{margin-top:var(--rv-s-1);font-size:var(--rv-fs-small);color:var(--rv-text-dim);max-width:56ch}
.cb-steplist{display:grid;grid-template-columns:1fr;gap:var(--rv-s-3);counter-reset:cbstep}
@media(min-width:760px){.cb-steplist{grid-template-columns:repeat(4,1fr)}}
.cb-step{display:flex;gap:var(--rv-s-3);align-items:flex-start;padding:var(--rv-s-4);background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md)}
.cb-step__n{width:var(--rv-s-6);height:var(--rv-s-6);flex:0 0 auto;display:grid;place-items:center;border-radius:var(--rv-r-full);background:var(--rv-surface-3);border:1px solid var(--rv-border-2);font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:700;color:var(--rv-text-strong)}
.cb-step h3{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong);line-height:1.2}
.cb-step p{margin-top:var(--rv-s-1);font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
/* clan result cards (search, recruiting) */
.cb-cards{display:grid;grid-template-columns:1fr;gap:var(--rv-s-4);align-items:stretch}
@media(min-width:760px){.cb-cards{grid-template-columns:1fr 1fr}}
@media(min-width:960px){.cb-cards{grid-template-columns:repeat(3,1fr)}}
.cb-clancard{display:flex;flex-direction:column;gap:var(--rv-s-3);background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg);padding:var(--rv-s-4);transition:border-color 120ms ease}
.cb-clancard:hover{border-color:var(--rv-text-dim)}
.cb-clancard__blurb{font-size:var(--rv-fs-small);color:var(--rv-text);max-width:48ch}
.cb-clancard__stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--rv-s-2);padding-top:var(--rv-s-3);border-top:1px solid var(--rv-hairline)}
.cb-clancard__stats b{display:block;font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong);font-variant-numeric:tabular-nums}
.cb-clancard__foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-2);flex-wrap:wrap}

/* ----------------------------------------------------------------------------
   21. SIDE NAV (admin) and FOOTER
   ---------------------------------------------------------------------------- */
.cb-sidenav{display:flex;flex-direction:column;gap:var(--rv-s-1)}
.cb-sidenav a,.cb-sidenav button{display:flex;align-items:center;gap:var(--rv-s-2);height:var(--cb-ctl-h);padding:0 var(--rv-s-3);border-radius:var(--rv-r-md);font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:600;color:var(--rv-text-dim);text-align:left;transition:background-color 120ms ease,color 120ms ease}
.cb-sidenav a:hover,.cb-sidenav button:hover{color:var(--rv-text-strong);background:var(--rv-surface-2)}
.cb-sidenav [aria-current="page"],.cb-sidenav [aria-selected="true"]{color:var(--rv-text-strong);background:var(--rv-surface-3);box-shadow:inset 3px 0 0 var(--rv-accent)}
.cb-sidenav .cb-tab__count{margin-left:auto}
@media(max-width:959px){.cb-sidenav{flex-direction:row;flex-wrap:wrap}}
.cb-footer{margin-top:var(--rv-s-8);border-top:1px solid var(--rv-border-1);padding:var(--rv-s-5) 0 var(--rv-s-7);font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-footer__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-4);flex-wrap:wrap}
.cb-footer__links{display:flex;gap:var(--rv-s-4);flex-wrap:wrap}
.cb-footer__links a:hover{color:var(--rv-text-strong)}

/* ----------------------------------------------------------------------------
   22. HUB EMBED (the RV-HUB native panes)
   One root class compacts the system for a launcher page: no top bar, no
   hero, tighter paddings, the page's own tab strip. Same tokens, same parts.
   ---------------------------------------------------------------------------- */
.cb-embed{--cb-ctl-h:32px;--cb-ctl-h-sm:26px;--cb-fs-title:22px;--cb-fs-stat:26px;--cb-badge:32px;--cb-badge-lg:56px;--cb-cal-day:72px}
.cb-embed .cb-panel{padding:var(--rv-s-4)}
.cb-embed .cb-section{margin-top:var(--rv-s-6)}
.cb-embed .cb-table th,.cb-embed .cb-table td{padding:var(--rv-s-2) var(--rv-s-3)}
.cb-embed .cb-table{min-width:0}
.cb-embed .cb-tabs--inpage{margin-bottom:var(--rv-s-4)}
/* a fake launcher frame around the panes, for the prototype only */
.cb-hubframe{display:grid;grid-template-columns:var(--cb-rail) 1fr;min-height:100svh;background:var(--rv-bg)}
.cb-hubrail{background:var(--rv-surface-1);border-right:1px solid var(--rv-border-1);padding:var(--rv-s-4) var(--rv-s-3);display:flex;flex-direction:column;gap:var(--rv-s-2)}
.cb-hubrail__brand{display:flex;align-items:center;gap:var(--rv-s-2);padding:0 var(--rv-s-2) var(--rv-s-4);border-bottom:1px solid var(--rv-hairline);margin-bottom:var(--rv-s-2)}
.cb-hubrail a{display:flex;align-items:center;gap:var(--rv-s-2);height:var(--cb-ctl-h);padding:0 var(--rv-s-3);border-radius:var(--rv-r-md);font-size:var(--rv-fs-body);font-weight:500;color:var(--rv-text-dim)}
.cb-hubrail a:hover{color:var(--rv-text-strong);background:var(--rv-surface-2)}
.cb-hubrail a[aria-current="page"]{color:var(--rv-text-strong);background:var(--rv-surface-3);box-shadow:inset 3px 0 0 var(--rv-accent)}
.cb-hubpage{padding:var(--rv-s-5) var(--rv-s-6) var(--rv-s-8);min-width:0}
.cb-hubpage__head{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-4);flex-wrap:wrap;margin-bottom:var(--rv-s-5)}
.cb-hubpage__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-display);font-weight:800;line-height:1;letter-spacing:var(--cb-track-tight);color:var(--rv-text-strong)}
.cb-hubpage__crumb{font-size:var(--rv-fs-small);color:var(--rv-text-dim);margin-bottom:var(--rv-s-2)}
.cb-webview{border:1px solid var(--rv-border-2);border-radius:var(--rv-r-lg);background:var(--rv-surface-1);min-height:var(--rv-s-8);display:grid;place-items:center;padding:var(--rv-s-6);text-align:center;color:var(--rv-text-dim)}
@media(max-width:959px){.cb-hubframe{grid-template-columns:1fr}.cb-hubrail{display:none}.cb-hubpage{padding:var(--rv-s-4)}}

/* ----------------------------------------------------------------------------
   23. GALLERY (index.html only)
   ---------------------------------------------------------------------------- */
.cb-gallery{display:flex;flex-direction:column}
.cb-gallery li{display:grid;grid-template-columns:var(--rv-s-8) 1fr auto;gap:var(--rv-s-3);align-items:center;padding:var(--rv-s-3) var(--rv-s-4);border-top:1px solid var(--rv-hairline)}
.cb-gallery li:first-child{border-top:0}
.cb-gallery li:hover{background:var(--rv-surface-2)}
.cb-gallery__id{font-family:var(--cb-font-mono);font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-gallery__name{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong)}
.cb-gallery__desc{font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-gallery__url{font-family:var(--cb-font-mono);font-size:var(--rv-fs-micro);color:var(--rv-text-faint);white-space:nowrap}

/* ----------------------------------------------------------------------------
   24. VERSION SWITCHER (unused on DIRECT ACTION: one game)
   Plain text labels, never a game logo. A version the clan does not play is
   disabled; a version whose server is not live yet is marked "coming".
   ---------------------------------------------------------------------------- */
.cb-versions{display:flex;flex-wrap:wrap;gap:var(--rv-s-1);padding:var(--rv-s-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);background:var(--rv-surface-1)}
.cb-versions__btn{display:inline-flex;align-items:center;gap:var(--rv-s-2);height:var(--cb-ctl-h-sm);padding:0 var(--rv-s-3);border-radius:var(--rv-r-sm);font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:600;letter-spacing:.02em;color:var(--rv-text-dim);white-space:nowrap;transition:background-color 120ms ease,color 120ms ease}
.cb-versions__btn:hover{color:var(--rv-text-strong);background:var(--rv-surface-2)}
.cb-versions__btn[aria-pressed="true"]{background:var(--rv-accent);color:var(--rv-text-on-accent)}
.cb-versions__btn:disabled{color:var(--rv-text-faint);cursor:default;background:transparent}
.cb-versions__btn .cb-chip{height:var(--rv-s-4);padding:0 var(--rv-s-1);font-size:var(--rv-fs-nano)}
.cb-versions__btn:disabled .cb-chip{color:var(--rv-text-faint);border-color:var(--rv-hairline);background:transparent}
.cb-versions--inline{display:inline-flex}
.cb-vlabel{display:inline-flex;align-items:center;gap:var(--rv-s-1);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim)}

/* ----------------------------------------------------------------------------
   25. THEATER OF WAR: the stream, the director strip, the bet dock
   The picture area is a framed 16:9 surface; the prototype shows an RV-drawn
   placeholder, never a game capture. Bets are RV Battle Tokens only.
   ---------------------------------------------------------------------------- */
.cb-theater{display:grid;grid-template-columns:1fr;gap:var(--rv-s-4);align-items:start}
@media(min-width:960px){.cb-theater{grid-template-columns:minmax(0,2fr) minmax(300px,1fr)}}
.cb-stream{position:relative;background:var(--rv-surface-1);border:1px solid var(--rv-border-2);border-radius:var(--rv-r-lg);overflow:hidden}
.cb-stream__pic{position:relative;aspect-ratio:16/9;background:var(--rv-bg);display:grid;place-items:center;overflow:hidden}
.cb-stream__pic .cb-tex{color:var(--cb-texture-strong)}
.cb-stream__pic .cb-stream__noise{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--rv-s-2);color:var(--rv-text-dim);text-align:center}
.cb-stream__pic .cb-stream__noise .cb-icon{width:var(--rv-s-7);height:var(--rv-s-7);color:var(--rv-text-faint)}
.cb-stream__topbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:var(--rv-s-2);padding:var(--rv-s-2) var(--rv-s-3);background:var(--rv-scrim);z-index:2}
.cb-stream__topbar .cb-spacer{flex:1}
.cb-stream__viewers{display:inline-flex;align-items:center;gap:var(--rv-s-1);font-size:var(--rv-fs-micro);font-weight:600;color:var(--rv-text-strong);font-variant-numeric:tabular-nums}
.cb-stream__hud{position:absolute;left:0;right:0;bottom:0;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--rv-s-3);padding:var(--rv-s-2) var(--rv-s-3);background:var(--rv-scrim);border-top:1px solid var(--rv-border-1);z-index:2}
.cb-stream__follow{display:flex;align-items:center;gap:var(--rv-s-2);min-width:0}
.cb-stream__follow b{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:700;color:var(--rv-text-strong)}
.cb-stream__score{display:flex;align-items:center;justify-content:center;gap:var(--rv-s-2);font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:800;color:var(--rv-text-strong);font-variant-numeric:tabular-nums;white-space:nowrap}
.cb-stream__score .cb-tag{font-size:var(--rv-fs-small)}
.cb-stream__round{font-family:var(--cb-font-mono);font-size:var(--rv-fs-micro);color:var(--rv-text-dim);white-space:nowrap}
.cb-stream__bar{display:flex;align-items:center;gap:var(--rv-s-3);flex-wrap:wrap;padding:var(--rv-s-3) var(--rv-s-4);border-top:1px solid var(--rv-hairline)}
.cb-stream__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong);display:flex;align-items:center;gap:var(--rv-s-2);flex-wrap:wrap;min-width:0}
.cb-stream__ctl{display:flex;align-items:center;gap:var(--rv-s-2);margin-left:auto}
.cb-stream--offline .cb-stream__pic{background:var(--rv-surface-1)}
/* the bet dock */
.cb-betdock{display:flex;flex-direction:column;gap:var(--rv-s-4)}
.cb-betdock__sides{display:grid;grid-template-columns:1fr 1fr;gap:var(--rv-s-2)}
.cb-betside{display:flex;flex-direction:column;gap:var(--rv-s-1);padding:var(--rv-s-3);background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);text-align:left;transition:border-color 120ms ease,background-color 120ms ease;cursor:pointer}
.cb-betside:hover{border-color:var(--rv-text-dim)}
.cb-betside[aria-pressed="true"]{border-color:var(--rv-accent);background:var(--rv-accent-weak);box-shadow:inset 3px 0 0 var(--rv-accent)}
.cb-betside__clan{display:flex;align-items:center;gap:var(--rv-s-2)}
.cb-betside__odds{font-family:var(--cb-font-display);font-size:var(--rv-fs-display);font-weight:800;line-height:1;color:var(--rv-text-strong);font-variant-numeric:tabular-nums}
.cb-betside__odds small{font-family:var(--cb-font-sans);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim);margin-left:var(--rv-s-1)}
.cb-betside__pool{font-size:var(--rv-fs-small);color:var(--rv-text-dim);font-variant-numeric:tabular-nums}
.cb-betdock__lock{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-3);padding:var(--rv-s-2) var(--rv-s-3);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);background:var(--rv-surface-2)}
.cb-betdock__lock .cb-countdown{font-size:var(--rv-fs-h2)}
.cb-betdock__lock--locked{border-color:var(--rv-warning)}
.cb-stake{display:grid;grid-template-columns:1fr auto;gap:var(--rv-s-2);align-items:end}
.cb-stake__quick{grid-column:1 / -1;display:flex;gap:var(--rv-s-2);flex-wrap:wrap}
.cb-stake__quick .cb-btn{flex:1 1 auto}
.cb-tokens{display:inline-flex;align-items:center;gap:var(--rv-s-1);font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:700;color:var(--rv-text-strong);font-variant-numeric:tabular-nums;white-space:nowrap}
.cb-tokens .cb-icon{width:var(--rv-s-4);height:var(--rv-s-4);color:var(--rv-text-dim)}
.cb-tokens--lg{font-size:var(--rv-fs-h1)}
.cb-betdock__return{display:flex;align-items:baseline;justify-content:space-between;gap:var(--rv-s-3);padding-top:var(--rv-s-3);border-top:1px solid var(--rv-hairline);font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-betlog .cb-table{min-width:560px}
.cb-upnext{display:flex;flex-direction:column}
.cb-upnext li{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--rv-s-3);padding:var(--rv-s-3) 0;border-top:1px solid var(--rv-hairline)}
.cb-upnext li:first-child{border-top:0}
.cb-upnext__when{font-family:var(--cb-font-mono);font-size:var(--rv-fs-small);color:var(--rv-text-dim);white-space:nowrap;font-variant-numeric:tabular-nums}
.cb-upnext__who{display:flex;align-items:center;gap:var(--rv-s-2);flex-wrap:wrap;min-width:0}
.cb-upnext__who .cb-vs{font-family:var(--cb-font-display);font-weight:700;color:var(--rv-text-faint);font-size:var(--rv-fs-small)}

/* ----------------------------------------------------------------------------
   26. SPLASH (P0) and the CINEMATICS player
   The splash is the live site's banner: full-bleed clip, sound button, scrim,
   accent frame with red brackets, and three buttons on a dark panel. The
   Cinematics player takes the banner's place in the same box (the WoW guild
   page's device): a stage, a list, Autoplay, full screen, X returns the banner.
   ---------------------------------------------------------------------------- */
/* The splash: a masthead plate attached flush to the top edge of the video, spanning the frame's full
   width, so the clip below is unobstructed. The plate is a solid surface with a 2px accent rule where it
   meets the video, tick marks along that edge and neutral corner brackets; the video keeps the clip's own
   ratio inside the red frame with red brackets. Nothing floats over the picture. */
.cb-splash{position:relative;isolation:isolate;background:var(--rv-bg);border:2px solid var(--rv-accent);overflow:hidden}
.cb-masthead{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--rv-s-4) var(--rv-s-6);min-height:var(--cb-masthead-h);padding:var(--rv-s-3) var(--rv-s-6) calc(var(--rv-s-3) + var(--rv-s-2));background:var(--rv-surface-1);border-bottom:2px solid var(--rv-accent)}
.cb-masthead .cb-brkset{--cb-brk:16px;--cb-brk-w:2px;--cb-brk-color:var(--rv-border-2);--cb-brk-inset:var(--rv-s-2)}
.cb-masthead__ticks{position:absolute;left:0;right:0;bottom:0;height:var(--rv-s-2);color:var(--cb-texture-strong);pointer-events:none}
.cb-masthead__ticks svg{width:100%;height:100%}
.cb-masthead__left{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--rv-s-1) var(--rv-s-4);align-items:center;min-width:0}
.cb-masthead__brand{grid-row:1 / 3;display:flex;flex-direction:column;align-items:center;gap:var(--rv-s-1);padding-right:var(--rv-s-4);border-right:1px solid var(--rv-border-1)}
.cb-masthead__brand .cb-brand__badge{font-size:var(--rv-fs-h2);padding:var(--rv-s-2) var(--rv-s-3)}
.cb-masthead__title{font-family:var(--cb-font-display);font-size:clamp(28px,2.6vw,40px);font-weight:800;line-height:1;letter-spacing:var(--cb-track-tight);color:var(--rv-text-strong);display:flex;align-items:baseline;gap:var(--rv-s-3);flex-wrap:wrap}
.cb-masthead__title .cb-brand__sub{font-size:var(--rv-fs-micro)}
.cb-masthead__tag{font-size:var(--rv-fs-small);line-height:1.4;color:var(--rv-text-dim);max-width:60ch}
.cb-masthead__right{display:flex;align-items:center;gap:var(--rv-s-2);flex-wrap:wrap;justify-content:flex-end}
.cb-masthead__right .cb-sound{position:static;height:var(--cb-ctl-h);padding:0 var(--rv-s-3);background:var(--rv-surface-2);border-color:var(--rv-border-2)}
.cb-masthead__right .cb-sound:disabled{opacity:.5;cursor:default}
.cb-splash__stage{position:relative;isolation:isolate;aspect-ratio:var(--cb-banner-ratio);background:var(--rv-bg)}
.cb-splash__stage .cb-hero__media{object-position:50% 50%}
.cb-splash__stage .cb-hero__scrim{background:rgba(13,11,10,.10)}
.cb-splash__stage .cb-brkset{--cb-brk:40px;--cb-brk-w:4px;--cb-brk-color:var(--rv-accent-contrast);--cb-brk-inset:var(--rv-s-3);z-index:4}
/* the two hero actions on the video: centred at 56% across, 44% down the frame, so they sit in the bright fog
   right of the soldier at every desktop size. Accent fill, white text, a darker 2px rim instead of any glow. */
.cb-splash__ctas{position:absolute;left:56%;top:44%;transform:translate(-50%,-50%);z-index:5;display:flex;gap:var(--rv-s-3);align-items:center;white-space:nowrap}
.cb-btn--hero{height:var(--rv-s-7);padding:0 var(--rv-s-5);font-size:var(--rv-fs-h2);letter-spacing:.02em;border:2px solid var(--rv-accent-press)}
.cb-btn--hero .cb-icon{width:var(--cb-icon-lg);height:var(--cb-icon-lg)}
.cb-btn--hero:hover{border-color:var(--rv-accent-press)}
.cb-splash__stage.is-ct{aspect-ratio:auto}
.cb-splash__stage.is-ct .cb-hero__media,.cb-splash__stage.is-ct .cb-hero__scrim,.cb-splash__stage.is-ct .cb-brkset,.cb-splash__stage.is-ct .cb-splash__ctas{display:none}
@media(max-width:959px){
  .cb-splash__stage{aspect-ratio:auto}
  .cb-splash__stage .cb-hero__media{position:static;width:100%;height:auto;aspect-ratio:var(--cb-banner-ratio)}
  .cb-splash__stage .cb-hero__scrim,.cb-splash__stage .cb-brkset{display:none}
  .cb-splash__ctas{position:static;transform:none;display:grid;grid-template-columns:1fr;gap:var(--rv-s-2);padding:var(--rv-s-4);white-space:normal;border-top:2px solid var(--rv-accent)}
  .cb-btn--hero{width:100%}
}
.cb-splash__after{padding:var(--rv-s-4) var(--rv-s-6);display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-4);flex-wrap:wrap;font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-splash__after a:hover{color:var(--rv-text-strong)}
@media(max-width:959px){
  .cb-masthead{grid-template-columns:1fr;padding:var(--rv-s-3) var(--rv-s-4) calc(var(--rv-s-3) + var(--rv-s-2))}
  .cb-masthead__right{justify-content:stretch}
  .cb-masthead__right .cb-btn{flex:1 1 40%}
  .cb-masthead__right .cb-sound{flex:0 0 auto}
}
@media(max-width:559px){
  .cb-masthead__left{gap:var(--rv-s-1) var(--rv-s-3)}
  .cb-masthead__brand{padding-right:var(--rv-s-3)}
  .cb-masthead__brand .cb-brand__badge{font-size:var(--rv-fs-h3);padding:var(--rv-s-1) var(--rv-s-2)}
  .cb-masthead__title{font-size:var(--rv-fs-h1)}
  .cb-masthead__right .cb-btn{flex:1 1 100%}
  .cb-masthead__right .cb-sound{margin-left:auto}
  .cb-splash__stage .cb-brkset{--cb-brk:24px;--cb-brk-w:3px;--cb-brk-inset:var(--rv-s-2)}
}
.cb-ct{position:relative;z-index:3;display:flex;align-items:center;justify-content:center;padding:var(--rv-s-5) clamp(16px,3vw,40px)}
.cb-ct__items{--cb-ct-list-h:min(480px,40vh)}
.cb-ct[hidden]{display:none}
.cb-ct__frame{display:flex;flex-direction:column;width:100%;max-width:var(--cb-wrap);background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg);overflow:hidden}
.cb-ct__head{display:flex;align-items:center;gap:var(--rv-s-3);height:var(--cb-tabs-h);padding:0 var(--rv-s-3) 0 var(--rv-s-4);border-bottom:1px solid var(--rv-border-1)}
.cb-ct__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong);white-space:nowrap}
.cb-ct__sep{width:1px;height:var(--rv-s-5);background:var(--rv-border-2)}
.cb-ct__now{display:flex;align-items:center;gap:var(--rv-s-2);min-width:0;font-size:var(--rv-fs-small);color:var(--rv-text-dim);white-space:nowrap}
.cb-ct__now b{color:var(--rv-text-strong);overflow:hidden;text-overflow:ellipsis}
.cb-ct__right{margin-left:auto;display:flex;align-items:center;gap:var(--rv-s-2)}
.cb-ct__body{display:grid;grid-template-columns:minmax(0,1fr) 360px}
.cb-ct__stage{position:relative;aspect-ratio:16/9;background:var(--rv-bg);display:grid;place-items:center}
.cb-ct__stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--rv-bg)}
.cb-ct__msg{display:flex;flex-direction:column;align-items:center;gap:var(--rv-s-2);text-align:center;padding:var(--rv-s-5)}
.cb-ct__side{border-left:1px solid var(--rv-border-1);display:flex;flex-direction:column;min-height:0}
.cb-ct__listhd{display:flex;align-items:center;justify-content:space-between;height:var(--cb-ctl-h);padding:0 var(--rv-s-4);border-bottom:1px solid var(--rv-border-1);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim)}
.cb-ct__items{overflow-y:auto;scrollbar-width:thin;max-height:var(--cb-ct-list-h,480px)}
.cb-ct__item{display:grid;grid-template-columns:var(--cb-badge-lg) 1fr auto;gap:var(--rv-s-3);align-items:center;width:100%;padding:var(--rv-s-3) var(--rv-s-4);border-top:1px solid var(--rv-hairline);text-align:left;color:var(--rv-text);transition:background-color 120ms ease}
.cb-ct__item:first-child{border-top:0}
.cb-ct__item:hover{background:var(--rv-surface-2)}
.cb-ct__item[aria-current="true"]{background:var(--rv-accent-weak);box-shadow:inset 3px 0 0 var(--rv-accent)}
.cb-ct__poster{position:relative;aspect-ratio:16/9;width:100%;background:var(--rv-surface-3);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-sm);display:grid;place-items:center;color:var(--rv-text-faint);overflow:hidden}
.cb-ct__poster svg.cb-tex{color:var(--cb-texture-strong)}
.cb-ct__poster .cb-icon{position:relative}
.cb-ct__name{font-weight:600;color:var(--rv-text-strong);font-size:var(--rv-fs-small)}
.cb-ct__meta{font-size:var(--rv-fs-micro);color:var(--rv-text-dim)}
.cb-ct__dur{font-family:var(--cb-font-mono);font-size:var(--rv-fs-micro);color:var(--rv-text-dim)}
.cb-ct__ibtn{width:var(--cb-ctl-h);height:var(--cb-ctl-h);display:grid;place-items:center;border:1px solid var(--rv-border-2);border-radius:var(--rv-r-full);background:var(--rv-surface-2);color:var(--rv-text-strong)}
.cb-ct__ibtn:hover{border-color:var(--rv-text-dim);background:var(--rv-surface-3)}
@media(max-width:959px){.cb-ct__body{grid-template-columns:1fr}.cb-ct__side{border-left:0;border-top:1px solid var(--rv-border-1)}.cb-ct{min-height:0;padding:var(--rv-s-4)}}

/* ----------------------------------------------------------------------------
   27. MEMBER PROFILE (P18): callsign, roles per version, the video feed,
   connected accounts. Platform names are plain text labels, never logos.
   ---------------------------------------------------------------------------- */
.cb-profilehead{display:grid;grid-template-columns:auto 1fr;gap:var(--rv-s-3) var(--rv-s-4);align-items:center}
.cb-callsign{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:600;letter-spacing:.06em;color:var(--rv-text-dim)}
.cb-livebar{display:flex;align-items:center;gap:var(--rv-s-3);flex-wrap:wrap;padding:var(--rv-s-3) var(--rv-s-4);background:var(--rv-accent);color:var(--rv-text-on-accent);border-radius:var(--rv-r-lg)}
.cb-livebar__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700}
.cb-livebar .cb-btn{background:var(--rv-text-on-accent);color:var(--rv-accent);border-color:var(--rv-text-on-accent)}
.cb-livebar .cb-btn:hover{background:var(--rv-text-strong)}
.cb-livebar .cb-chip{background:transparent;border-color:var(--rv-text-on-accent);color:var(--rv-text-on-accent)}
.cb-feed{display:grid;grid-template-columns:1fr;gap:var(--rv-s-3)}
@media(min-width:760px){.cb-feed{grid-template-columns:repeat(3,1fr)}}
.cb-feed__item{position:relative;display:flex;flex-direction:column;background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);overflow:hidden}
.cb-feed__item:hover{border-color:var(--rv-text-dim)}
.cb-feed__item--live{border-color:var(--rv-accent)}
.cb-feed__thumb{position:relative;aspect-ratio:16/9;background:var(--rv-surface-3);display:grid;place-items:center;color:var(--rv-text-faint)}
.cb-feed__thumb .cb-tex{color:var(--cb-texture-strong)}
.cb-feed__thumb .cb-chip{position:absolute;left:var(--rv-s-2);top:var(--rv-s-2)}
.cb-feed__thumb .cb-media__dur{position:absolute}
.cb-feed__cap{padding:var(--rv-s-2) var(--rv-s-3) var(--rv-s-3);display:flex;flex-direction:column;gap:2px}
.cb-feed__title{font-weight:600;color:var(--rv-text-strong);font-size:var(--rv-fs-small)}
.cb-feed__meta{font-size:var(--rv-fs-micro);color:var(--rv-text-dim);display:flex;gap:var(--rv-s-2);flex-wrap:wrap;align-items:center}
.cb-feed__hide{margin-top:var(--rv-s-2)}
.cb-platmark{display:inline-block;width:var(--rv-s-2);height:var(--rv-s-2);border-radius:var(--rv-r-full);background:var(--cb-plat,var(--rv-text-dim));flex:0 0 auto}
.cb-conn{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--rv-s-3);padding:var(--rv-s-3) 0;border-top:1px solid var(--rv-hairline)}
.cb-conn:first-child{border-top:0}
.cb-conn__name{font-weight:600;color:var(--rv-text-strong)}
.cb-conn__meta{font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-weapons{display:grid;grid-template-columns:1fr;gap:var(--rv-s-2)}
.cb-weapon{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--rv-s-3);padding:var(--rv-s-2) var(--rv-s-3);background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md)}
.cb-weapon__name{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:700;color:var(--rv-text-strong)}
.cb-weapon__stat{font-size:var(--rv-fs-small);color:var(--rv-text-dim);font-variant-numeric:tabular-nums;white-space:nowrap}
.cb-weapon .cb-bar{width:100%}

/* ----------------------------------------------------------------------------
   28. THEATER: the director strip, room groups, live creators
   ---------------------------------------------------------------------------- */
.cb-director{display:flex;align-items:center;gap:var(--rv-s-3);flex-wrap:wrap;padding:var(--rv-s-2) var(--rv-s-3);background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);font-size:var(--rv-fs-small);color:var(--rv-text)}
.cb-director__mode{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);font-weight:700;color:var(--rv-text-strong);display:inline-flex;align-items:center;gap:var(--rv-s-2)}
.cb-director__mode .cb-icon{color:var(--rv-accent-contrast)}
.cb-director__next{font-family:var(--cb-font-mono);font-size:var(--rv-fs-micro);color:var(--rv-text-dim)}
.cb-delay{display:inline-flex;align-items:center;gap:var(--rv-s-1);height:var(--rv-s-5);padding:0 var(--rv-s-2);border:1px solid var(--rv-warning);border-radius:var(--rv-r-sm);background:var(--rv-warning-weak);color:var(--rv-text-strong);font-family:var(--cb-font-mono);font-size:var(--rv-fs-micro);white-space:nowrap}
.cb-roomgroup{margin-top:var(--rv-s-5)}
.cb-roomgroup:first-child{margin-top:0}
.cb-roomgroup__title{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-3);margin-bottom:var(--rv-s-3);padding-bottom:var(--rv-s-2);border-bottom:1px solid var(--rv-hairline)}
.cb-creators{display:grid;grid-template-columns:1fr;gap:var(--rv-s-4)}
@media(min-width:760px){.cb-creators{grid-template-columns:1fr 1fr}}
@media(min-width:1100px){.cb-creators{grid-template-columns:repeat(3,1fr)}}
.cb-creator{display:flex;flex-direction:column;background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg);overflow:hidden}
.cb-creator:hover{border-color:var(--rv-text-dim)}
.cb-creator__pic{position:relative;aspect-ratio:16/9;background:var(--rv-surface-3);display:grid;place-items:center;color:var(--rv-text-faint)}
.cb-creator__pic .cb-tex{color:var(--cb-texture-strong)}
.cb-creator__pic .cb-chip{position:absolute;left:var(--rv-s-2);top:var(--rv-s-2)}
.cb-creator__viewers{position:absolute;right:var(--rv-s-2);top:var(--rv-s-2);display:inline-flex;align-items:center;gap:var(--rv-s-1);padding:2px var(--rv-s-2);background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-sm);font-size:var(--rv-fs-micro);font-weight:600;color:var(--rv-text-strong);font-variant-numeric:tabular-nums}
.cb-creator__body{padding:var(--rv-s-3) var(--rv-s-4) var(--rv-s-4);display:flex;flex-direction:column;gap:var(--rv-s-2)}
.cb-creator__title{font-weight:600;color:var(--rv-text-strong)}
.cb-creator__room{display:flex;align-items:center;gap:var(--rv-s-2);padding:var(--rv-s-2) var(--rv-s-3);background:var(--rv-surface-2);border:1px solid var(--rv-border-1);border-left:3px solid var(--rv-accent);border-radius:var(--rv-r-md);font-size:var(--rv-fs-small)}
.cb-creator__foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-2);padding-top:var(--rv-s-2)}

/* ----------------------------------------------------------------------------
   29. TACTICAL ROOM: the planning board, its rail, fireteams, phases; the
   companion's phone and tablet frames. The map itself is an SVG symbol
   (t-map-crossroads in the sprite, a placeholder until the game's images are
   redrawn); routes, zones and markers are drawn over it per plan.
   ---------------------------------------------------------------------------- */
.cb-tac{display:grid;grid-template-columns:1fr;gap:var(--rv-s-4);align-items:start}
@media(min-width:1100px){.cb-tac{grid-template-columns:minmax(200px,220px) minmax(0,1fr) minmax(260px,300px)}}
.cb-tac__rail,.cb-tac__side{display:flex;flex-direction:column;gap:var(--rv-s-4)}
.cb-tac__board{position:relative;background:var(--rv-surface-1);border:1px solid var(--rv-border-2);border-radius:var(--rv-r-lg);overflow:hidden}
.cb-tac__board svg.cb-map{display:block;width:100%;height:auto;aspect-ratio:var(--cb-map-ratio);background:var(--rv-bg)}
.cb-tac__boardhead{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-3);flex-wrap:wrap;padding:var(--rv-s-2) var(--rv-s-3);border-bottom:1px solid var(--rv-border-1);background:var(--rv-surface-2)}
.cb-tac__boardfoot{display:flex;align-items:center;justify-content:space-between;gap:var(--rv-s-3);flex-wrap:wrap;padding:var(--rv-s-2) var(--rv-s-3);border-top:1px solid var(--rv-border-1);background:var(--rv-surface-2);font-size:var(--rv-fs-small);color:var(--rv-text-dim)}
.cb-tac__placeholder{position:absolute;left:var(--rv-s-3);bottom:var(--rv-s-3);z-index:2;padding:var(--rv-s-1) var(--rv-s-2);background:var(--rv-surface-1);border:1px dashed var(--rv-border-2);border-radius:var(--rv-r-sm);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:var(--cb-track-wide);text-transform:uppercase;color:var(--rv-text-dim)}
/* the SVG layers: map palette from the surface ladder, callouts in the mono face. These classes are NOT scoped
   under .cb-map on purpose: a <use> instance of the sprite symbol is styled as if it still sat in the hidden
   sprite, so a scoped selector never matches it and every shape falls back to SVG's default black fill. */
.m-ground{fill:var(--rv-surface-1)}
.m-block{fill:var(--rv-surface-3);stroke:var(--rv-border-2);stroke-width:1.5}
.m-block--tall{fill:var(--rv-elev)}
.m-road{fill:none;stroke:var(--rv-surface-3);stroke-width:26;stroke-linecap:square}
.m-road-edge{fill:none;stroke:var(--rv-border-1);stroke-width:1}
.m-wall{fill:none;stroke:var(--rv-text-faint);stroke-width:3;stroke-linecap:square}
.m-water{fill:none;stroke:var(--rv-info);stroke-width:1.5;stroke-dasharray:6 4;opacity:.7}
.m-grid{fill:none;stroke:var(--rv-border-1);stroke-width:1}
.m-gridlabel{font-family:var(--cb-font-mono);font-size:13px;fill:var(--rv-text-dim)}
.m-label{font-family:var(--cb-font-display);font-size:14px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;fill:var(--rv-text-dim)}
.m-spawn{fill:var(--rv-surface-1);stroke:var(--rv-text-strong);stroke-width:2}
.m-spawn--enemy{stroke:var(--rv-danger)}
.m-spawn-text{font-family:var(--cb-font-display);font-size:14px;font-weight:700;fill:var(--rv-text-strong);text-anchor:middle}
.m-obj{fill:var(--rv-surface-1);stroke:var(--rv-text-strong);stroke-width:2.5}
.m-obj-text{font-family:var(--cb-font-display);font-size:18px;font-weight:800;fill:var(--rv-text-strong);text-anchor:middle}
.m-route{fill:none;stroke-width:4;stroke-linejoin:round;stroke-linecap:round}
.m-route--member{stroke-width:2.5;stroke-dasharray:8 6}
.m-route--dim{opacity:.25}
.m-wp{stroke-width:2;fill:var(--rv-surface-1)}
.m-wp-text{font-family:var(--cb-font-mono);font-size:11px;font-weight:600;fill:var(--rv-text-strong);text-anchor:middle}
.m-zone{fill:url(#pat-hatch);stroke-width:2}
.m-zone--hold{stroke:var(--rv-success)}
.m-zone--avoid{stroke:var(--rv-danger)}
.m-zone--sweep{stroke:var(--rv-warning);stroke-dasharray:10 6}
.m-zone-text{font-family:var(--cb-font-display);font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;fill:var(--rv-text);text-anchor:middle}
.m-marker{fill:var(--rv-surface-1);stroke:var(--rv-text);stroke-width:1.5}
.m-marker-text{font-family:var(--cb-font-mono);font-size:10px;font-weight:600;fill:var(--rv-text-strong);text-anchor:middle}
.m-sight{fill:none;stroke:var(--rv-text-dim);stroke-width:1.5;stroke-dasharray:3 5}
.m-cursor{fill:var(--rv-text-strong);stroke:var(--rv-bg);stroke-width:1}
.m-cursor-text{font-family:var(--cb-font-sans);font-size:11px;font-weight:600;fill:var(--rv-bg)}
.m-cursor-tag{fill:var(--rv-text-strong)}
.m-ft-alpha{stroke:var(--cb-ft-alpha)}.m-ft-bravo{stroke:var(--cb-ft-bravo)}.m-ft-charlie{stroke:var(--cb-ft-charlie)}.m-ft-delta{stroke:var(--cb-ft-delta)}.m-ft-echo{stroke:var(--cb-ft-echo)}
.m-fill-alpha{fill:var(--cb-ft-alpha)}.m-fill-bravo{fill:var(--cb-ft-bravo)}.m-fill-charlie{fill:var(--cb-ft-charlie)}.m-fill-delta{fill:var(--cb-ft-delta)}
.m-mine{stroke-width:6}
/* tool rail */
.cb-tools{display:grid;grid-template-columns:1fr 1fr;gap:var(--rv-s-1)}
.cb-tool{display:flex;flex-direction:column;align-items:center;gap:var(--rv-s-1);padding:var(--rv-s-2) var(--rv-s-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);background:var(--rv-surface-2);color:var(--rv-text-dim);font-size:var(--rv-fs-micro);font-weight:600;letter-spacing:.04em;text-transform:uppercase;transition:color 120ms ease,border-color 120ms ease,background-color 120ms ease}
.cb-tool:hover{color:var(--rv-text-strong);border-color:var(--rv-text-dim)}
.cb-tool[aria-pressed="true"]{background:var(--rv-accent);border-color:var(--rv-accent);color:var(--rv-text-on-accent)}
.cb-tool .cb-icon{width:var(--cb-icon-lg);height:var(--cb-icon-lg)}
/* fireteams */
.cb-ft{display:flex;flex-direction:column;gap:var(--rv-s-2)}
.cb-ft__head{display:flex;align-items:center;gap:var(--rv-s-2)}
.cb-ft__swatch{width:var(--rv-s-4);height:var(--rv-s-4);flex:0 0 auto;border-radius:var(--rv-r-sm);background:var(--cb-ft,var(--rv-text-dim))}
.cb-ft__name{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong)}
.cb-ft__members{display:flex;flex-direction:column}
.cb-ft__member{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--rv-s-2);padding:var(--rv-s-1) 0;font-size:var(--rv-fs-small);color:var(--rv-text)}
.cb-ft__member .cb-avatar{width:var(--rv-s-5);height:var(--rv-s-5)}
.cb-ft__member.is-me{color:var(--rv-text-strong);font-weight:600}
.cb-ft+.cb-ft{padding-top:var(--rv-s-3);border-top:1px solid var(--rv-hairline)}
/* phases */
.cb-phases{display:flex;flex-direction:column;gap:var(--rv-s-2)}
.cb-phase{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--rv-s-2);padding:var(--rv-s-2) var(--rv-s-3);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-md);background:var(--rv-surface-2);text-align:left;color:var(--rv-text)}
.cb-phase[aria-current="step"]{border-color:var(--rv-accent);background:var(--rv-accent-weak);box-shadow:inset 3px 0 0 var(--rv-accent)}
.cb-phase__n{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:800;color:var(--rv-text-strong);min-width:var(--rv-s-5)}
.cb-phase__name{font-weight:600;color:var(--rv-text-strong)}
.cb-phase__time{font-family:var(--cb-font-mono);font-size:var(--rv-fs-micro);color:var(--rv-text-dim)}
.cb-playback{display:flex;align-items:center;gap:var(--rv-s-1)}
.cb-playback .cb-btn{min-width:var(--cb-ctl-h);padding:0 var(--rv-s-2)}
/* co-editing */
.cb-coedit{display:flex;align-items:center;gap:var(--rv-s-2)}
.cb-coedit__avatars{display:flex}
.cb-coedit__avatars .cb-avatar{width:var(--rv-s-6);height:var(--rv-s-6);margin-left:calc(-1 * var(--rv-s-2));border:2px solid var(--rv-surface-1)}
.cb-coedit__avatars .cb-avatar:first-child{margin-left:0}
/* legend */
.cb-legend{display:grid;grid-template-columns:1fr 1fr;gap:var(--rv-s-1) var(--rv-s-3);font-size:var(--rv-fs-micro);color:var(--rv-text-dim)}
.cb-legend li{display:flex;align-items:center;gap:var(--rv-s-2)}
.cb-legend i{display:inline-block;width:var(--rv-s-5);height:var(--rv-s-2);border-radius:var(--rv-r-sm);background:var(--cb-ft,var(--rv-text-dim))}
.cb-legend i.is-dash{height:0;border-top:2px dashed var(--rv-text-dim);background:none}
/* plan cards (Clan HQ tab) */
.cb-plans{display:grid;grid-template-columns:1fr;gap:var(--rv-s-3)}
@media(min-width:760px){.cb-plans{grid-template-columns:1fr 1fr}}
@media(min-width:1100px){.cb-plans{grid-template-columns:repeat(3,1fr)}}
.cb-plan{display:flex;flex-direction:column;gap:var(--rv-s-2);background:var(--rv-surface-1);border:1px solid var(--rv-border-1);border-radius:var(--rv-r-lg);overflow:hidden}
.cb-plan:hover{border-color:var(--rv-text-dim)}
.cb-plan__thumb{position:relative;aspect-ratio:var(--cb-map-ratio);background:var(--rv-bg);border-bottom:1px solid var(--rv-border-1)}
.cb-plan__thumb svg{position:absolute;inset:0;width:100%;height:100%}
.cb-plan__body{padding:0 var(--rv-s-3) var(--rv-s-3);display:flex;flex-direction:column;gap:var(--rv-s-1)}
.cb-plan__title{font-family:var(--cb-font-display);font-size:var(--rv-fs-h2);font-weight:700;color:var(--rv-text-strong)}
.cb-plan__meta{font-size:var(--rv-fs-micro);color:var(--rv-text-dim);display:flex;gap:var(--rv-s-2);flex-wrap:wrap}
.cb-plan--locked{border-left:3px solid var(--rv-accent)}
/* the companion app: phone and tablet frames */
.cb-devices{display:flex;gap:var(--rv-s-6);align-items:flex-start;flex-wrap:wrap;justify-content:center}
.cb-device{background:var(--rv-bg);border:var(--rv-s-2) solid var(--rv-surface-3);border-radius:var(--rv-s-5);overflow:hidden;flex:0 0 auto;display:flex;flex-direction:column}
.cb-device--phone{width:var(--cb-device-phone-w);min-height:calc(var(--cb-device-phone-w) * 2.1)}
.cb-device--tablet{width:var(--cb-device-tablet-w);min-height:calc(var(--cb-device-tablet-w) * .72)}
.cb-device__status{display:flex;align-items:center;justify-content:space-between;padding:var(--rv-s-1) var(--rv-s-4);font-family:var(--cb-font-mono);font-size:var(--rv-fs-micro);color:var(--rv-text-dim);background:var(--rv-surface-1)}
.cb-device__bar{display:flex;align-items:center;gap:var(--rv-s-2);padding:var(--rv-s-2) var(--rv-s-3);background:var(--rv-surface-1);border-bottom:1px solid var(--rv-border-1)}
.cb-device__bar .cb-h4{flex:1 1 auto;min-width:0}
.cb-device__body{flex:1 1 auto;display:flex;flex-direction:column;gap:var(--rv-s-3);padding:var(--rv-s-3)}
.cb-device__tabs{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--rv-border-1);background:var(--rv-surface-1)}
.cb-device__tabs a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--rv-s-2) 0 var(--rv-s-3);font-size:var(--rv-fs-nano);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--rv-text-dim)}
.cb-device__tabs a[aria-current="page"]{color:var(--rv-text-strong);box-shadow:inset 0 2px 0 var(--rv-accent)}
.cb-device .cb-btn--hero{height:var(--rv-s-7);font-size:var(--rv-fs-h2)}
.cb-device--tablet .cb-device__body{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(220px,1fr);gap:var(--rv-s-3)}
.cb-device__board{position:relative;border:1px solid var(--rv-border-2);border-radius:var(--rv-r-md);overflow:hidden;background:var(--rv-bg)}
.cb-device__board svg.cb-map{display:block;width:100%;height:auto;aspect-ratio:var(--cb-map-ratio)}
.cb-touch{height:var(--rv-s-8)}
.cb-touch--half{height:var(--rv-s-7)}
.cb-myroute{display:flex;align-items:center;gap:var(--rv-s-2);padding:var(--rv-s-2) var(--rv-s-3);border:1px solid var(--rv-border-1);border-left:3px solid var(--cb-ft,var(--rv-text-dim));border-radius:var(--rv-r-md);background:var(--rv-surface-2);font-size:var(--rv-fs-small)}
.cb-myroute b{font-family:var(--cb-font-display);font-size:var(--rv-fs-h3);color:var(--rv-text-strong)}
@media(max-width:1199px){.cb-devices{gap:var(--rv-s-5)}.cb-device--tablet{width:100%;max-width:var(--cb-device-tablet-w)}}

/* ----------------------------------------------------------------------------
   30. MOTION
   ---------------------------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none !important;transition:none !important}
}
