/* Cross-game module pages (www.rivalry.games/tournaments, /director, /stats, /admin). The game's own stylesheet supplies the look. */
.mod-switch{display:flex;gap:8px;flex-wrap:wrap;padding:0 var(--mod-gutter,16px);max-width:1180px;margin:4px auto 0}
.mod-switch a{padding:8px 16px;border:1px solid var(--line);border-radius:999px;color:var(--muted);text-decoration:none;font-size:14px}
.mod-switch a:hover{color:var(--text);border-color:var(--c,var(--mod-accent))}
.mod-switch a[aria-current=page]{color:var(--bg);background:var(--c,var(--text));border-color:var(--c,var(--text));font-weight:600}
.lobby-nav-actions a[aria-current=page]{border-color:var(--mod-accent)}
.mod-user{font-weight:600}
.mod-hub{max-width:1180px;margin:0 auto;padding:24px 16px 64px;display:grid;gap:20px}
.mod-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.mod-card{border:1px solid var(--line);border-left:4px solid var(--c,var(--mod-accent));border-radius:10px;padding:18px;background:var(--surface);display:grid;gap:8px;align-content:start}
.mod-card h2{margin:0;font-size:20px}
.mod-card p{margin:0;color:var(--muted)}
.mod-card a.mod-go{justify-self:start;color:var(--c,var(--mod-accent));text-decoration:none;font-weight:600}
.mod-tag{display:inline-block;font:11px 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px;border:1px solid var(--c);color:var(--c);border-radius:999px}
.lobby-app>.mod-hub,.lobby-app>.mod-switch{width:min(1180px,100%);box-sizing:border-box;align-self:center;margin-left:auto;margin-right:auto}
.mod-switch{flex:none;height:auto;min-height:0;align-items:center;align-content:flex-start;margin-top:4px;margin-bottom:8px}
.mod-switch a{flex:none;line-height:1.2}
.lobby-app{grid-template-rows:none;grid-auto-rows:min-content;align-content:start}
.live-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
.live-head h1{margin:0;display:flex;align-items:center;gap:12px}
.mod-switch button{padding:8px 16px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-size:14px;cursor:pointer;min-height:0}
.mod-switch button:hover{color:var(--text);border-color:var(--c,var(--mod-accent))}
.mod-switch button[aria-pressed=true]{color:var(--bg);background:var(--c,var(--text));border-color:var(--c,var(--text));font-weight:600}
/* Module pages fill the screen and line up with the game lobbies (left aligned, same 22px gutter) */
.lobby-app>.mod-hub,.lobby-app>.mod-switch,.lobby-app>.t-page,.lobby-app>.stats-page,.lobby-app>.admin-shell{width:100%;max-width:none;margin-left:0;margin-right:0;box-sizing:border-box;align-self:stretch}
.lobby-app>.mod-hub{padding-left:0;padding-right:0}
.lobby-app>.t-page,.lobby-app>.stats-page{padding-left:0;padding-right:0}

/* Rivalry blue: the all-games pages (/tournaments, /stats, /live, /admin) use the marketing site's navy and blue.
   Rummy pages are burgundy and 8 Ball pages are green, from their own stylesheets. */
body.theme-rivalry { --bg:#0b1021; --surface:#10182e; --surface-2:#18213d; --line:#2b3556; --muted:#a1a6b8; --accent:#688cff; --accent-2:#f5efdf; --on-accent:#0b1021; --mod-accent:#688cff;
  background: linear-gradient(135deg, rgba(104,140,255,.12), transparent 30%), linear-gradient(225deg, rgba(245,239,223,.08), transparent 28%), var(--bg); }
body.theme-rivalry .lobby-nav-actions a, body.theme-rivalry .secondary-action, body.theme-rivalry .nb-bell { background: rgba(16,24,46,.74); }
body.theme-rivalry .lobby-nav-actions a:hover, body.theme-rivalry .secondary-action:hover { border-color: var(--accent); }
body.theme-rivalry .primary-action, body.theme-rivalry .rc-action.is-primary { color: var(--on-accent); }
body.theme-rivalry .segmented-control button { background: rgba(16,24,46,.74); }
body.theme-rivalry .segmented-control button[aria-pressed="true"] { background: var(--accent); color: var(--on-accent); }
body.theme-rivalry .rc, body.theme-rivalry .mod-card, body.theme-rivalry .t-card { background: #10182e; border-color: #2b3556; }
body.theme-rivalry .user-menu-panel, body.theme-rivalry .nb-panel { background: #10182e; border-color: #2b3556; }

/* ---- Rivalry admin: sidebar sections, overview tiles, all-games room list ---- */
.adm-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:22px;align-items:start}
.adm-nav{position:sticky;top:12px;display:grid;gap:6px}
.adm-nav button{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--muted);font:inherit;font-weight:600;text-align:left;cursor:pointer}
.adm-nav button:hover{color:var(--text);border-color:var(--accent)}
.adm-nav button[aria-current=page]{background:var(--accent);border-color:var(--accent);color:var(--on-accent,var(--bg))}
.adm-badge{min-width:1.6em;padding:1px 8px;border-radius:999px;background:rgba(255,255,255,.12);font:600 .75rem 'DM Mono',monospace;text-align:center}
.adm-nav [aria-current=page] .adm-badge{background:rgba(0,0,0,.2)}
.adm-main{min-width:0;display:grid;gap:18px}
.adm-top{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
.adm-top h1{margin:0}
.adm-top-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.adm-panel{display:grid;gap:16px;min-width:0}
.adm-panel[hidden]{display:none}
.adm-h2{margin:6px 0 0;font-size:1.1rem}
.adm-subhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.adm-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.adm-tile{display:grid;gap:4px;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);text-decoration:none;color:var(--text)}
.adm-tile:hover{border-color:var(--accent)}
.adm-tile span{color:var(--muted);font-size:.85rem}
.adm-tile strong{font-size:2rem;line-height:1.1}
.adm-tile small{color:var(--muted)}
.adm-games{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.adm-game{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:14px 16px;border:1px solid var(--line);border-left:4px solid var(--c);border-radius:12px;background:var(--surface);color:var(--text);text-decoration:none}
.adm-game-count{font-size:1.6rem;font-weight:700;grid-row:span 2;align-self:center}
.adm-game small{color:var(--muted)}
.adm-table td,.adm-table th{white-space:nowrap}
.adm-table td:nth-child(5){white-space:normal}
@media (max-width:860px){
  .adm-layout{grid-template-columns:1fr}
  .adm-nav{position:static;display:flex;overflow-x:auto;gap:8px;padding-bottom:4px}
  .adm-nav button{flex:none;white-space:nowrap}
}
body.theme-rivalry .admin-panel, body.theme-rivalry .admin-summary-grid article, body.theme-rivalry .admin-login-panel { background: #10182e; border-color: #2b3556; }
body.theme-rivalry .admin-summary-grid { margin: 0; }
body.theme-rivalry .admin-filter input, body.theme-rivalry .admin-panel input, body.theme-rivalry .admin-panel select { background: #0b1021; border-color: #2b3556; }
.adm-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.adm-person{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:2px 0}
.adm-person>span{min-width:7em}
.adm-danger{border-color:#e5484d !important;color:#ff9b9b}
.adm-danger:hover{background:rgba(229,72,77,.16)}

/* ---- Admin Rooms: one card per room in the game's own colours, and the room view ---- */
.adm-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}
.adm-card{--gbg:#10182e;--gline:#2b3556;--gacc:#688cff;display:grid;gap:10px;align-content:start;text-align:left;padding:14px;border:1px solid var(--gline);border-top:4px solid var(--gacc);border-radius:14px;background:var(--gbg);color:#f7f4ec;font:inherit;cursor:pointer;min-height:0}
.adm-card:hover,.adm-card:focus-visible,.adm-card.is-open{border-color:var(--gacc);box-shadow:0 0 0 2px color-mix(in srgb,var(--gacc) 40%,transparent);outline:none}
.adm-card[data-game=rummy]{--gbg:linear-gradient(165deg,#2a1620,#170b11);--gline:#5b2a3b;--gacc:#bf3d5b}
.adm-card[data-game=pool]{--gbg:linear-gradient(165deg,#17301f,#0c1a12);--gline:#2b5a3b;--gacc:#4a9d62}
.adm-card[data-game=cah]{--gbg:linear-gradient(165deg,#272733,#14141c);--gline:#4a4a5e;--gacc:#f5efdf}
.adm-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.adm-card-game{font:600 .72rem 'DM Mono',monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--gacc)}
.adm-card-status{font:500 .7rem 'DM Mono',monospace;letter-spacing:.06em;text-transform:uppercase;padding:2px 9px;border-radius:999px;border:1px solid rgba(255,255,255,.25);color:#cfd6d2}
.adm-card-status.is-waiting{color:#83d7ad;border-color:rgba(131,215,173,.5)}
.adm-card-status.is-playing{color:#ffd68a;border-color:rgba(255,214,138,.5)}
.adm-card-title{font-size:1.1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-card-tags{display:flex;flex-wrap:wrap;gap:6px}
.adm-tag{padding:2px 10px;border-radius:999px;background:rgba(255,255,255,.08);font-size:.8rem;color:#e3e6e4}
.adm-card-people{display:grid;grid-template-columns:62px 1fr;gap:8px;font-size:.9rem;align-items:baseline}
.adm-card-people span{color:rgba(247,244,236,.6);font-size:.8rem}
.adm-card-people strong{font-weight:600;overflow:hidden;text-overflow:ellipsis}
.adm-card-foot{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.78rem;color:rgba(247,244,236,.6);border-top:1px solid rgba(255,255,255,.1);padding-top:8px}
.adm-legacy{display:none}
.adm-noscroll{overflow:hidden}
.adm-drawer{--c:#688cff;position:fixed;inset:0;z-index:150;display:flex;justify-content:flex-end}
.adm-drawer[hidden]{display:none}
.adm-drawer-backdrop{position:absolute;inset:0;background:rgba(3,6,14,.62)}
.adm-drawer-panel{position:relative;width:min(640px,100%);height:100%;display:flex;flex-direction:column;background:#0f1630;border-left:4px solid var(--c);box-shadow:-18px 0 40px rgba(0,0,0,.4)}
.adm-drawer[data-game=rummy] .adm-drawer-panel{background:#1b0e14}
.adm-drawer[data-game=pool] .adm-drawer-panel{background:#0d1a12}
.adm-drawer[data-game=cah] .adm-drawer-panel{background:#16161e}
.adm-drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid rgba(255,255,255,.1)}
.adm-drawer-head h2{margin:2px 0 0;font-size:1.4rem}
.adm-drawer-head .eyebrow{color:var(--c)}
.adm-drawer-body{overflow:auto;padding:16px 20px 28px;display:grid;gap:16px;align-content:start}
.adm-sec{display:grid;gap:10px;padding:14px;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:rgba(255,255,255,.03)}
.adm-sec h3{margin:0;font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:var(--c);font-family:'DM Mono',monospace;font-weight:600}
.adm-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 16px;margin:0}
.adm-facts dt{font-size:.75rem;color:rgba(247,244,236,.6)}
.adm-facts dd{margin:2px 0 0;font-weight:600;overflow-wrap:anywhere}
.adm-mini{width:100%;border-collapse:collapse;font-size:.9rem}
.adm-mini th{text-align:left;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:rgba(247,244,236,.55);padding:4px 8px 6px 0}
.adm-mini td{padding:7px 8px 7px 0;border-top:1px solid rgba(255,255,255,.08);vertical-align:middle}
.adm-flat{border:0 !important;background:none !important;padding:0 !important;box-shadow:none !important}
.adm-rummy-detail{display:grid;gap:12px}
.admin-table-viewer{z-index:200}
@media (max-width:640px){.adm-drawer-panel{border-left:0;border-top:4px solid var(--c)}.adm-drawer{align-items:flex-end}.adm-drawer-panel{height:92%}}
.adm-conn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.adm-dot{width:9px;height:9px;border-radius:50%;background:#e5484d;display:inline-block}
.adm-dot.is-on{background:#83d7ad;box-shadow:0 0 0 3px rgba(131,215,173,.18)}
.adm-id{font-family:'DM Mono',monospace;font-size:.8rem;color:rgba(247,244,236,.65)}
.adm-mini td,.adm-mini th{white-space:nowrap}
.adm-drawer-panel{width:min(880px,100%)}
.adm-mini td .adm-actions{flex-wrap:nowrap}
.adm-mini .admin-table-wrap,.adm-sec .admin-table-wrap{overflow-x:auto}
.admin-user-row{cursor:pointer}
.admin-user-row:hover{background:rgba(104,140,255,.08)}
.adm-note{margin-left:8px;padding:1px 8px;border-radius:999px;border:1px solid rgba(255,214,138,.5);color:#ffd68a;font-size:.72rem;white-space:nowrap}
.adm-ip{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px;font-family:'DM Mono',monospace}

/* 8 Ball rack: bright = still on the table, dimmed = pocketed */
.adm-table{display:grid;gap:14px}
.adm-ballrow{display:grid;gap:8px}
.adm-ballhead{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}
.adm-balls{display:flex;flex-wrap:wrap;gap:8px}
.adm-ball{--bc:#888;position:relative;width:34px;height:34px;border-radius:50%;display:inline-grid;place-items:center;background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.55),transparent 38%),var(--bc);box-shadow:0 0 0 2px rgba(255,255,255,.18),0 0 14px color-mix(in srgb,var(--bc) 55%,transparent);transition:opacity .2s}
.adm-ball.is-stripe{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.7),transparent 38%),linear-gradient(180deg,#f4f1e8 0 26%,var(--bc) 26% 74%,#f4f1e8 74%)}
.adm-ball i{font-style:normal;font:700 .7rem 'DM Mono',monospace;line-height:1;width:17px;height:17px;border-radius:50%;background:#f7f4ec;color:#111;display:grid;place-items:center}
.adm-ball.is-down{opacity:.2;filter:grayscale(.75);box-shadow:none}

/* running room log */
.adm-log{list-style:none;margin:0;padding:6px;max-height:340px;overflow:auto;border:1px solid rgba(255,255,255,.1);border-radius:10px;background:rgba(0,0,0,.25);display:grid;gap:2px;font-size:.88rem}
.adm-log li{display:grid;grid-template-columns:auto 62px 1fr;gap:10px;align-items:baseline;padding:4px 6px;border-radius:6px}
.adm-log li:hover{background:rgba(255,255,255,.05)}
.adm-log time{font:500 .76rem 'DM Mono',monospace;color:rgba(247,244,236,.55);white-space:nowrap}
.adm-log-kind{font:600 .66rem 'DM Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:rgba(247,244,236,.5)}
.adm-log li.is-game{background:rgba(104,140,255,.1)}
.adm-log li.is-game .adm-log-kind{color:#8fa8ff}
.adm-log li.is-pocket .adm-log-kind{color:#83d7ad}
.adm-log li.is-foul .adm-log-kind,.adm-log li.is-foul .adm-log-text{color:#ff9b9b}
.adm-log li.is-admin .adm-log-kind{color:#ffd68a}
.adm-log li.is-turn .adm-log-text{color:rgba(247,244,236,.8)}

/* Stats hub: the page stays Rivalry blue; each game's card is tinted with its own theme colour. */
body.theme-rivalry .mod-card[data-game]{background:color-mix(in srgb,var(--c) 28%,#0b1021);border-color:color-mix(in srgb,var(--c) 70%,#0b1021);border-left-color:var(--c)}
body.theme-rivalry .mod-card[data-game] .mod-board th,body.theme-rivalry .mod-card[data-game] .mod-board td{border-bottom-color:color-mix(in srgb,var(--c) 45%,transparent)}
body.theme-rivalry .mod-card[data-game] a.mod-go{color:#fff}

/* Director portal home: a plain list of the director's tournaments, one big row each */
.t-dir-row{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between;padding:14px 4px;border-top:1px solid var(--line);color:inherit;text-decoration:none}
.t-dir-row:first-of-type{border-top:0}
.t-dir-row:hover{background:rgba(127,127,127,.08)}
.t-dir-main{display:grid;gap:2px;min-width:0}
.t-dir-main strong{font-size:1.05rem}
.t-dir-side{display:flex;gap:12px;align-items:center}
.t-dir-done{margin-top:12px}.t-dir-done summary{cursor:pointer;color:var(--muted)}
.t-games{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;border:0;padding:0;margin:0}
.t-games legend{font-size:.85rem;padding:0;margin-bottom:2px}
.t-games label{display:flex;flex-direction:row;align-items:center;gap:6px}
.t-games input{width:auto}

/* One screen: the page is exactly the window tall (header, content, footer) and only scrolls when the content really is taller. */
body{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}
body>.lobby-app{flex:1 0 auto;min-height:0}
body>.rg-footer{margin-top:auto}
/* The game tabs line up with the heading and the menu bar. */
.lobby-app>.mod-switch{padding-left:0;padding-right:0}
body>.lobby-app~.rg-footer{padding-left:22px;padding-right:22px}
