/* boards.css — shared by guild.php (server page + Discords list), clan.php and clans.php.
   Header stats, Season / This Week controls, records, the leaderboard (table on desktop,
   player cards on phones, "Not ranked yet"), the activity feed, Playing now cards and the
   list-page pieces (split header, chips, spotlight, top list, cards). Drawn by boards.js. */

/* Several blocks below set display, which would beat the hidden attribute. */
[hidden]{display:none!important}

/* ── Server header (banner: icon + name, stat row underneath) ───────────── */
.guild-hero{display:flex;flex-wrap:wrap;align-items:center;gap:22px;margin:28px 0 18px;padding:26px 24px;
            background:linear-gradient(120deg,rgba(50,167,235,.12),rgba(50,167,235,.02) 60%);
            border:1px solid var(--border-brand);border-radius:16px}
.guild-icon,.guild-icon-placeholder{width:92px;height:92px;border-radius:50%;flex-shrink:0;object-fit:cover;
            border:3px solid rgba(50,167,235,.4);box-shadow:0 0 0 4px rgba(50,167,235,.12)}
.guild-icon-placeholder{background:rgba(50,167,235,.15);display:inline-flex;align-items:center;justify-content:center;font-size:2.4rem}
.gh-main{flex:1;min-width:0}
.guild-name{font-size:clamp(1.5rem,3.4vw,2.1rem);font-weight:800;letter-spacing:-.025em;margin:0;line-height:1.15;text-wrap:balance}
.gh-sub{color:var(--muted);font-size:.88rem;margin-top:4px}
.gh-stats{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px 0}
.gh-stat{padding:0 18px;border-left:1px solid var(--border);min-width:0}
.gh-stat:first-child{padding-left:0;border-left:0}
.gh-stat .l{font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.gh-stat .v{font-weight:800;font-size:1.15rem;font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:7px;min-height:1.7rem}
.gh-stat .v small{font-size:.74rem;font-weight:600;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gh-stat.best .v{color:var(--gold)}
.gh-stat .v .ph{display:inline-block;width:44px;height:1rem;border-radius:.3rem;background:rgba(255,255,255,.07)}
.gh-live{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green)}
/* Installed, no players yet (guild.php renderSettingUp): a faded placeholder
   leaderboard behind a card that says how to add the first player. */
.gh-setup{display:inline-flex;font-size:.72rem;font-weight:800;padding:3px 10px;border-radius:99px;margin-right:10px;
          background:rgba(50,167,235,.16);color:#5bbcf2;vertical-align:1px}
.gb-ghost{position:relative;padding:0;overflow:hidden;min-height:440px}
.gb-head{padding:14px 18px;border-bottom:1px solid var(--border)}
.gb-row{display:grid;grid-template-columns:28px minmax(0,1fr) 80px 80px 80px;gap:14px;align-items:center;padding:14px 18px;
        border-bottom:1px solid rgba(255,255,255,.04)}
.gb-bar{display:block;height:12px;border-radius:6px;background:rgba(255,255,255,.07)}
.gb-dot{display:block;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.07)}
.gb-over{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;
         background:linear-gradient(180deg,rgba(11,15,20,.35),rgba(11,15,20,.82) 55%)}
.gb-card{max-width:460px;text-align:center;padding:28px 28px 26px;border-radius:14px;background:#111821;
         border:1px solid rgba(50,167,235,.35);box-shadow:0 20px 60px rgba(0,0,0,.5)}
.gb-card h2{margin:0 0 10px;font-size:1.25rem;font-weight:800;overflow-wrap:anywhere}
.gb-card p{margin:0;color:var(--fg2);font-size:.92rem;line-height:1.55}
.gb-card code{color:var(--fg);background:rgba(255,255,255,.07);padding:2px 6px;border-radius:5px;white-space:nowrap}
.gb-btns{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:18px}
@media (max-width:640px){
  .gb-ghost{min-height:470px}
  .gb-row{grid-template-columns:24px minmax(0,1fr) 50px;padding:13px 12px}
  .gb-row .gb-bar:nth-child(n+4){display:none}
  .gb-over{padding:12px}
  .gb-card{padding:22px 18px}
  .gb-btns .btn{flex:1 1 100%;justify-content:center}
}
.breadcrumb{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--muted);margin-bottom:18px}
.breadcrumb a{color:var(--muted);text-decoration:none}.breadcrumb a:hover{color:var(--fg)}
.breadcrumb .sep{opacity:.4}
@media (max-width:600px){
  .guild-hero{padding:18px 16px;gap:14px;margin-top:18px}
  .guild-icon,.guild-icon-placeholder{width:60px;height:60px;font-size:1.6rem}
  .gh-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .gh-stat{padding:0;border:0}
  .gh-stat.best{grid-column:1/-1}
}

/* ── Scope + mode controls ──────────────────────────────────────────────── */
.lb-controls{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:22px 0 18px}
.scope{display:inline-flex;padding:3px;border-radius:10px;background:rgba(255,255,255,.05);border:1px solid var(--border)}
.scope button{border:0;background:none;color:var(--muted);font-size:.84rem;font-weight:700;padding:.42rem 1rem;border-radius:7px;transition:background .15s,color .15s}
.scope button.active{background:var(--brand);color:#fff}
.scope button:focus-visible,.mode-tab:focus-visible,.tl-chip:focus-visible,.lbp-row:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.mode-tabs{display:flex;gap:6px;flex-wrap:wrap;min-width:0}
.mode-tab{padding:.3rem .75rem;border-radius:.4rem;font-size:.8rem;font-weight:700;white-space:nowrap;
          background:none;border:1px solid transparent;color:var(--muted);cursor:pointer;transition:all .15s}
.mode-tab:hover{color:var(--fg);background:rgba(255,255,255,.07)}
.mode-tab.active{color:var(--brand);border-color:rgba(50,167,235,.35);background:rgba(50,167,235,.08)}
.scope-note{font-size:.8rem;color:var(--muted)}
@media (max-width:600px){
  .scope{width:100%}.scope button{flex:1}
  .mode-tabs{flex-wrap:nowrap;overflow-x:auto;flex:1 1 100%;scrollbar-width:none;padding-bottom:2px}
}

/* ── Records ───────────────────────────────────────────────────────────── */
.wgb-records{margin-bottom:18px}
.rec-eyebrow{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--brand);margin-bottom:10px}
.rec-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.rec{padding:14px 16px;border:1px solid var(--border);border-radius:12px;background:var(--glass);display:flex;flex-direction:column;gap:3px;min-width:0}
.rec .l{font-size:.64rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.rec .v{font-size:1.45rem;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;line-height:1.25}
.rec .split{font-size:.74rem;color:var(--muted);font-weight:600}
.rec .who{font-weight:700;font-size:.88rem;display:flex;align-items:center;gap:6px;min-width:0}
.rec .who a{color:var(--fg);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rec .who a:hover{color:var(--brand)}
.rec .who.squad{display:block;line-height:1.35}
.rec .who.squad a{white-space:normal}
.rec .m{font-size:.74rem;color:var(--muted)}
.rec .m a{color:var(--brand);font-weight:700;text-decoration:none}
@media (max-width:900px){.rec-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.rec-grid{gap:8px}.rec{padding:12px}.rec .v{font-size:1.2rem}}

/* ── Seasonal crowns (server page) ─────────────────────────────────────────
   Tiles in the records' style: crown, the number that won it, holder. */
.crown-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.crown-h .rec-eyebrow{margin-bottom:0}
.crown-h .note{font-size:.72rem;color:var(--muted)}
.crown-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.crown{padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--glass);display:flex;flex-direction:column;gap:3px;min-width:0}
.crown .l{font-size:.64rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crown .v{font-size:1.25rem;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crown .who{font-weight:700;font-size:.9rem;min-width:0}
.crown .who a{color:var(--fg);text-decoration:none;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crown .who a:hover{color:var(--brand)}
@media (max-width:900px){.crown-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* Placeholder crowns (placeholders.php): one row, the usual count, not two. */
  [data-sk] .crown-grid .crown:nth-child(n+3){display:none}}
@media (max-width:600px){.crown-grid{gap:8px}.crown{padding:10px 11px}.crown .v{font-size:1.05rem}}

/* ── Rival server / rival clan (WGB.rivalHtml; nemesis_lib.php) ────────────
   "Tug of war": us and them at the ends, one win/loss bar between, crowns-style
   tiles under. Red corner glow = the homepage carousel's .sc-slide recipe in its
   red slide's tint; it stays red on clan pages whatever the clan colour. */
.wg-panel.wgb-rival{background:radial-gradient(120% 90% at 100% 0%,rgba(233,25,22,.17),transparent 60%),rgba(255,255,255,.025)}
.rv-band{display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,1.4fr) minmax(0,1fr);align-items:center;gap:18px}
.rv-end{display:flex;align-items:center;gap:10px;min-width:0}
.rv-end--them{flex-direction:row-reverse;text-align:right}
.rv-end > div{min-width:0;display:flex;flex-direction:column}
.rv-end .nm{color:var(--fg);font-weight:800;font-size:.95rem;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-end a.nm:hover{color:var(--brand)}
.rv-end small{font-size:.72rem;color:var(--muted)}
.rv-mid{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}
.rv-mid b{font-size:1.6rem;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}
.rv-mid .w,.rv-tiles .v.rv-up{color:#34d399} .rv-mid .l,.rv-tiles .v.rv-down{color:#e05260}
.rv-tug{display:flex;gap:2px;width:100%;height:8px;border-radius:4px;overflow:hidden;background:rgba(255,255,255,.07)}
.rv-tug i{display:block;height:100%}
.rv-tug .w{background:#34d399} .rv-tug .l{background:#e05260}
.rv-tiles{margin-top:14px;grid-template-columns:repeat(var(--rv-n,3),minmax(0,1fr))}
.rv-tiles .who{color:var(--fg2)}
/* Phone: names side by side, score + bar on their own row below, tiles 2-up
   with an odd last tile spanning the row. */
@media (max-width:600px){
  .rv-band{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
  .rv-mid{grid-column:1/-1;order:3}
  .rv-end .nm{white-space:normal;overflow-wrap:anywhere}
  .rv-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rv-tiles .crown:last-child:nth-child(odd){grid-column:1/-1}
}

/* ── Leaderboard ────────────────────────────────────────────────────────── */
.wgb-board .lb-wrap{overflow-x:auto}
.wgb-board table{width:100%;border-collapse:collapse;font-size:.92rem}
.wgb-board thead th{padding:10px 14px;text-align:left;font-size:.7rem;font-weight:700;text-transform:uppercase;
         letter-spacing:.08em;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap}
.wgb-board thead th.num{text-align:right}
.wgb-board thead th.lb-sort{cursor:pointer;user-select:none;transition:color .15s}
.wgb-board thead th.lb-sort:hover{color:var(--fg)}
.wgb-board thead th.lb-sort::after{content:' ⇅';opacity:.3;font-size:.65rem}
.wgb-board thead th.lb-sort.asc,.wgb-board thead th.lb-sort.desc{color:var(--brand)}
.wgb-board thead th.lb-sort.asc::after{content:' ▲';opacity:1}
.wgb-board thead th.lb-sort.desc::after{content:' ▼';opacity:1}
.wgb-board tbody tr{border-bottom:1px solid rgba(255,255,255,.04);transition:background .12s}
.wgb-board tbody tr:last-child{border-bottom:none}
.wgb-board tbody tr:hover{background:rgba(255,255,255,.03)}
.wgb-board td{padding:12px 14px;vertical-align:middle}
.wgb-board td.num{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}
.wgb-board td.rank-col{width:40px;color:var(--muted);font-size:.85rem;font-weight:700}
.lb-player-link{color:inherit;text-decoration:none;font-weight:700}
.lb-player-link:hover{color:var(--brand)}
.kd-badge{font-weight:800;color:var(--brand)}
.wgb-board td.num.lb-active-col{color:var(--brand)}
.wgb-board .top-row td{background:rgba(50,167,235,.05)}
.mv{font-size:.76rem;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.mv.up{color:var(--green)}.mv.dn{color:var(--red)}.mv.eq,.mv.new{color:var(--muted)}
/* phone: one card per player instead of the 9-column table */
.lb-phone{display:none}
.lbp-row{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;border:0;border-bottom:1px solid rgba(255,255,255,.05);
         background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.lbp-row.lead{background:linear-gradient(90deg,rgba(242,169,0,.14),transparent 70%)}
.lbp-mid{flex:1;min-width:0}
.lbp-name{display:block;font-weight:700;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lbp-sub{font-size:.74rem;color:var(--muted)}
.lbp-kd{text-align:right;flex-shrink:0}
.lbp-kd b{display:block;font-size:1.15rem;color:var(--brand);font-variant-numeric:tabular-nums;line-height:1.1}
.lbp-row.lead .lbp-kd b{color:var(--gold)}
.lbp-kd small{font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700}
.lbp-det{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px 14px 14px;border-bottom:1px solid rgba(255,255,255,.05)}
.lbp-det div{background:rgba(255,255,255,.04);border-radius:6px;padding:6px 8px}
.lbp-det .v{font-weight:800;font-size:.9rem;font-variant-numeric:tabular-nums}
.lbp-det .l{font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700}
.lbp-det a{grid-column:1/-1;text-align:center;color:var(--brand);font-weight:700;font-size:.8rem;padding:4px;text-decoration:none}
@media (max-width:600px){
  .lb-wrap{display:none}
  .lb-phone{display:block}
  .lb-head{padding:14px 16px!important}
}
/* not ranked yet */
.lb-waiting{padding:14px 20px;border-top:1px solid var(--border);background:rgba(255,255,255,.015)}
.lb-waiting .t{font-size:.8rem;color:var(--fg2);margin-bottom:8px}
.lbw-list{display:flex;gap:8px;flex-wrap:wrap}
.lbw{display:inline-flex;align-items:center;gap:8px;padding:5px 10px;border:1px dashed rgba(255,255,255,.12);border-radius:8px;
     font-size:.8rem;color:var(--muted);text-decoration:none}
.lbw:hover{color:var(--fg);border-color:rgba(50,167,235,.35)}
.lbw-bar{display:inline-flex;gap:2px}
.lbw-bar i{width:6px;height:10px;border-radius:2px;background:rgba(255,255,255,.1)}
.lbw-bar i.f{background:var(--brand)}
@media (max-width:600px){.lb-waiting{padding:12px 16px}}

/* ── Activity timeline ──────────────────────────────────────────────────── */
.wgb-activity{margin-top:28px;padding:20px 22px}
.tl-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.tl-head h2{margin:0;font-size:1.05rem;font-weight:800}
.tl-chips{display:flex;gap:6px;flex-wrap:wrap}
.tl-chip{font-size:.74rem;font-weight:700;padding:.3rem .65rem;border-radius:99px;border:1px solid var(--border);background:none;color:var(--muted);white-space:nowrap}
.tl-chip.active{color:var(--fg);background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2)}
.ev{display:grid;grid-template-columns:84px 96px minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 0;border-top:1px solid rgba(255,255,255,.05)}
.ev-when{font-size:.74rem;color:var(--muted);font-variant-numeric:tabular-nums}
.ev-kind{justify-self:start;font-size:.6rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:3px 7px;border-radius:5px;white-space:nowrap;
         color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent);border:1px solid color-mix(in srgb,var(--c) 40%,transparent)}
.k-win{--c:#f2a900}.k-hk{--c:#ff6b78}.k-milestone{--c:#34d399}.k-grade_up{--c:#c07bff}.k-streak{--c:#32a7eb}.k-ranked{--c:#f2c14e}
.ev-txt{font-size:.88rem;min-width:0}
.ev-txt a{color:var(--fg);font-weight:700;text-decoration:none}.ev-txt a:hover{color:var(--brand)}
.ev-d{display:block;font-size:.76rem;color:var(--muted)}
.ev-go{font-size:.76rem;font-weight:700;color:var(--brand);white-space:nowrap;text-decoration:none}
.ev-go:hover{color:#fff}
.tl-more{display:flex;justify-content:center;margin-top:12px}
.tl-empty{padding:26px 0 10px;text-align:center;color:var(--muted);font-size:.88rem}
@media (max-width:600px){
  .wgb-activity{padding:16px}
  .tl-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;width:100%}
  .ev{grid-template-columns:auto 1fr;grid-template-areas:"k w" "t t" "g g";gap:4px 8px}
  .ev-kind{grid-area:k}.ev-when{grid-area:w;justify-self:end}.ev-txt{grid-area:t}.ev-go{grid-area:g}
}

/* ── Playing now ───────────────────────────────────────────────────────── */
.wgb-presence{margin:0 0 8px;display:none}
.wgb-presence.visible{display:block}
.presence-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.presence-card{background:var(--glass);border:1px solid var(--border);border-radius:var(--radius-sm);
               padding:12px 14px;display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--fg);
               transition:background .15s,border-color .15s}
.presence-card:hover{background:var(--glass-hover);border-color:var(--border-brand)}
.presence-avatar-wrap{position:relative;flex-shrink:0}
.presence-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;border:1.5px solid rgba(50,167,235,.4);display:block}
.presence-avatar-placeholder{width:34px;height:34px;border-radius:50%;background:rgba(50,167,235,.15);
                              border:1.5px solid rgba(50,167,235,.3);display:flex;align-items:center;
                              justify-content:center;font-size:.75rem;font-weight:800;color:var(--brand);flex-shrink:0}
.presence-live-dot{position:absolute;bottom:-1px;right:-1px;width:9px;height:9px;border-radius:50%;
                   background:var(--brand);border:1.5px solid var(--bg);box-shadow:0 0 5px var(--brand)}
.presence-info{min-width:0}
.presence-name{font-size:.85rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.presence-sub{font-size:.73rem;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.presence-viewers{font-size:.7rem;color:var(--brand);font-weight:700}
/* Phones: two columns. At one card per row a busy server's list filled a screen. */
@media (max-width:600px){
  .presence-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .presence-card{padding:9px 10px;gap:8px;min-width:0}
  .presence-avatar,.presence-avatar-placeholder{width:28px;height:28px}
}

/* ── Server + clan pages: body frame ───────────────────────────────────────
   Everything under the header sits in one .wg-frame (shared.css), each section a
   .wg-panel with a small-caps title, like a player page. The frame's gap does the
   spacing, so the sections' own margins go. */
.wgb-frame .wgb-presence,.wgb-frame .lb-controls,.wgb-frame .wgb-records,.wgb-frame .wgb-crowns,.wgb-frame .wgb-rival,
.wgb-frame .wgb-activity,.wgb-frame .wg-grade-row{margin:0}
.wgb-frame .wgb-activity{padding:18px 20px}
/* Server page: the grade row and the leaderboard share #lb-container. */
.wgb-frame #lb-container{display:flex;flex-direction:column;gap:14px}
.wgb-frame .wg-hist,.wgb-frame .wg-snap{background:rgba(255,255,255,.025);border-radius:12px}
.wgb-frame .rec-eyebrow,.wgb-frame .lb-eyebrow,.wgb-frame .tl-head h2,.wgb-frame .wg-hist-t{
  font-size:.68rem;font-weight:800;letter-spacing:.1em;line-height:1.4;text-transform:uppercase;color:var(--fg2)}
@media (max-width:640px){.wgb-frame .wgb-activity{padding:12px}}

/* ── List pages (Discords, Clans) ──────────────────────────────────────────────── */
/* Title, counters and this search sit in the shared header band (page_header.php,
   .pagehead in shared.css); only the search box itself is styled here. */
.ls-search{display:flex;flex-direction:column;gap:8px}
.ls-search label{display:flex;align-items:center;gap:10px;padding:.8rem 1rem;border-radius:12px;border:1px solid rgba(50,167,235,.35);
                 background:rgba(10,17,32,.9);box-shadow:0 0 0 4px rgba(50,167,235,.08);color:var(--muted)}
.ls-search label:focus-within{border-color:rgba(50,167,235,.7)}
.ls-search input{flex:1;min-width:0;border:0;background:none;color:var(--fg);font-size:.95rem;outline:none}
.id-lookup{font-size:.8rem;color:var(--muted)}
.id-lookup summary{cursor:pointer;display:inline-block}
.id-lookup summary:hover{color:var(--fg)}
.id-lookup form{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.id-lookup input{padding:.55rem .9rem;border-radius:.5rem;border:1px solid rgba(255,255,255,.1);background:rgba(10,17,32,.85);
                 color:var(--fg);font-size:.86rem;width:250px;max-width:100%;outline:none}
.gdot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 7px var(--green);display:inline-block;flex-shrink:0}

/* Discords + Clans lists: sections are .wg-panel inside a .wg-frame (shared.css). */
.ls-frame{margin-top:28px}
/* Discords list placeholders (guild.php #ls-loading): its sections sit in the frame's
   own column, so the frame's gap spaces them like the real ones. */
.ls-skel{display:contents}
.ls-skel[hidden],.ls-msg[hidden]{display:none}
.ls-skel .wg-sk{max-width:100%}
.ls-skel .ls-chips{display:flex;gap:6px;flex-wrap:wrap}
.ls-msg{text-align:center;color:var(--muted);padding:40px 0}
.ls-frame .ls-setup{margin-top:0}
.ls-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.ls-row h2{font-size:1.05rem;font-weight:800;margin:0}
.ls-note{font-size:.78rem;color:var(--muted)}
.sico{width:36px;height:36px;border-radius:50%;object-fit:cover;flex-shrink:0;background:rgba(50,167,235,.15);
      border:1px solid rgba(50,167,235,.2);display:inline-flex;align-items:center;justify-content:center;font-size:1rem}
/* chip rows (your servers, playing now) */
/* Wraps onto more lines rather than scrolling sideways; long lists end in a "+N more" chip. */
.ls-strip{display:flex;flex-wrap:wrap;gap:10px}
.ls-chip.more{justify-content:center;min-width:110px;color:var(--brand);font-weight:700;font-size:.84rem;background:none;cursor:pointer;font-family:inherit}
.ls-chip{display:flex;align-items:center;gap:10px;padding:10px 14px 10px 10px;border:1px solid var(--border);border-radius:12px;
         background:var(--glass);flex-shrink:0;text-decoration:none;color:var(--fg);transition:border-color .15s,background .15s;max-width:280px}
.ls-chip:hover{border-color:var(--border-brand);background:var(--glass-hover)}
.ls-chip b{display:block;font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ls-chip small{font-size:.72rem;color:var(--muted)}
.ls-chip .adm{color:var(--brand);font-weight:700}
.ls-chip.live{border-color:rgba(52,211,153,.3);background:rgba(52,211,153,.05)}
.ls-chip.live small{display:flex;align-items:center;gap:6px;color:var(--green);font-weight:700}
/* Phones: an even two-column grid. Wrapping chips of uneven width stacked one per line. */
@media (max-width:600px){
  .ls-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .ls-chip{max-width:none;min-width:0;padding:9px 10px 9px 8px;gap:8px}
  .ls-chip > *{min-width:0}
  .ls-chip.more{min-width:0}
}
/* server of the week + top players */
.ls-duo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.ls-duo.solo{grid-template-columns:1fr}
.spot{padding:18px 20px;border-radius:14px;border:1px solid rgba(242,169,0,.45);display:flex;flex-direction:column;gap:14px;
      background:linear-gradient(135deg,rgba(242,169,0,.12),rgba(242,169,0,.02) 65%)}
.spot-kick{font-size:.64rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.spot-top{display:flex;gap:14px;align-items:center;min-width:0}
.spot-top .sico{width:56px;height:56px;font-size:1.5rem}
.spot h3{margin:0;font-size:1.3rem;font-weight:800;letter-spacing:-.01em;overflow-wrap:anywhere}
.spot-stats{display:flex;gap:22px;flex-wrap:wrap}
.spot-stats b{display:block;font-size:1.25rem;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums}
.spot-stats span{font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.spot-lead-h{font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.spot-lead{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-top:1px solid rgba(242,169,0,.14);
           font-size:.86rem;text-decoration:none;color:var(--fg)}
.spot-lead:hover b{color:var(--brand)}
.spot-lead b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.spot-lead span{color:var(--gold);font-weight:700;font-size:.78rem;white-space:nowrap}
.spot-lead .mvp-tag{font-size:.58rem;font-weight:800;letter-spacing:.08em;color:#1a1200;background:var(--gold);border-radius:4px;padding:1px 5px;margin-left:6px;vertical-align:1px}
.spot-cta{margin-top:auto;align-self:flex-start}
.tops{padding:18px 20px;border:1px solid var(--border);border-radius:14px;background:var(--glass)}
.tp{display:grid;grid-template-columns:28px auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 0;
    border-top:1px solid rgba(255,255,255,.05);text-decoration:none;color:var(--fg)}
.tp:first-of-type{border-top:0}
.tp:hover .tp-nm b{color:var(--brand)}
.tp-nm{min-width:0}
.tp-nm b{display:block;font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp-nm small{display:block;font-size:.72rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp-kd{display:flex;align-items:baseline;gap:5px;justify-content:flex-end}
.tp-kd b{color:var(--brand);font-size:1rem;font-variant-numeric:tabular-nums}
.tp-kd small{font-size:.62rem;color:var(--muted);font-weight:700;letter-spacing:.06em}
/* all servers */
.ls-chips{display:flex;gap:6px;flex-wrap:wrap}
.ls-chips button{font-size:.76rem;font-weight:700;padding:.32rem .7rem;border-radius:99px;border:1px solid var(--border);
                 background:none;color:var(--muted);white-space:nowrap}
.ls-chips button.active{color:var(--fg);background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2)}
.ls-chips button:focus-visible,.ls-more:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
/* every row one height, pills pinned to the card bottom so they line up across cards */
.ls-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr;gap:12px}
.ls-card{display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--border);border-radius:12px;
         background:rgba(255,255,255,.035);text-decoration:none;color:var(--fg);transition:border-color .15s,background .15s}
.ls-card:hover{border-color:var(--border-brand);background:rgba(255,255,255,.06)}
.ls-card.home{border-color:var(--border-brand);background:rgba(50,167,235,.06)}
.ls-card-top{display:flex;gap:10px;align-items:center;min-width:0}
.ls-card-top b{display:block;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ls-card-top b mark{background:rgba(50,167,235,.25);color:inherit;border-radius:2px}
.ls-card-top small{font-size:.72rem;color:var(--muted)}
.ls-pills{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:.7rem;font-weight:700;height:20px;line-height:1;padding:0 8px;border-radius:99px;box-sizing:border-box;
      background:rgba(255,255,255,.05);color:var(--fg2);white-space:nowrap}
.pill.on{background:rgba(52,211,153,.1);color:var(--green)}
.pill.win{background:rgba(242,169,0,.1);color:var(--gold)}
.pill.home{background:rgba(50,167,235,.1);color:var(--brand)}
.ls-more-wrap{display:flex;justify-content:center;margin-top:14px}
.ls-empty{padding:26px 0;text-align:center;color:var(--muted)}
/* servers still setting up */
.ls-setup{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;padding:16px 18px;margin-top:28px;
          border:1px dashed rgba(255,255,255,.14);border-radius:14px}
.ls-setup-ic{display:flex}
.ls-setup-ic .sico{width:26px;height:26px;margin-left:-6px;box-shadow:0 0 0 2px var(--bg);font-size:.7rem}
.ls-setup-ic .sico:first-child{margin-left:0}
.ls-setup .linkish{background:none;border:0;padding:0;color:var(--brand);font-weight:700;font-size:inherit}
.ls-setup-grid{margin-top:12px}
/* "Welcome to the pack": newest servers (guild.php renderNew). Brand blue, the
   way server of the week is gold. */
.ls-welcome{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:18px;padding:20px;border-radius:14px;
            border:1px solid rgba(50,167,235,.35);background:linear-gradient(135deg,rgba(50,167,235,.13),rgba(50,167,235,.02) 65%)}
.ls-welcome.solo{grid-template-columns:1fr}
.wl-feat{display:flex;flex-direction:column;gap:14px;min-width:0}
.wl-kick{font-size:.64rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--brand)}
.wl-id{display:flex;gap:14px;align-items:center;min-width:0}
.wl-id h2{margin:0;font-size:1.35rem;font-weight:800;letter-spacing:-.01em;overflow-wrap:anywhere}
.sico.wl-big{width:60px;height:60px;font-size:1.5rem}
.wl-stats{display:flex;gap:24px;flex-wrap:wrap}
.wl-stats b{display:block;font-size:1.25rem;font-weight:800;color:var(--fg);font-variant-numeric:tabular-nums}
.wl-stats span{font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.wl-list{display:flex;flex-direction:column;gap:8px;min-width:0}
.wl-list .ls-row{margin-bottom:2px}
.wl-list h3{margin:0;font-size:.95rem;font-weight:800}
.wl-row{display:flex;align-items:center;gap:12px;padding:10px 12px;min-height:44px;box-sizing:border-box;border:1px solid var(--border);
        border-radius:10px;background:rgba(255,255,255,.03);text-decoration:none;color:var(--fg);transition:border-color .15s,background .15s}
a.wl-row:hover{border-color:var(--border-brand);background:rgba(255,255,255,.06)}
.wl-nm{flex:1;min-width:0}
.wl-nm b{display:block;font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wl-nm small{display:block;font-size:.72rem;color:var(--muted);margin-top:1px}
.pill.new{background:rgba(50,167,235,.16);color:#5bbcf2}
.wl-more{align-self:center;background:none;border:0;padding:8px 4px;color:var(--brand);font-weight:700;font-size:.82rem;font-family:inherit;cursor:pointer}
.wl-more:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
@media (max-width:640px){.ls-welcome{grid-template-columns:1fr;padding:16px;gap:16px}.wl-stats{gap:18px}.sico.wl-big{width:52px;height:52px}}
@media (max-width:900px){.ls-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ls-duo{grid-template-columns:1fr}}
@media (max-width:600px){
  .ls-grid{gap:8px}.ls-card{padding:12px}
  .ls-card-top b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.25}
  .ls-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;width:100%}
}

/* "Show all N players" under a capped leaderboard */
.lb-more{display:flex;justify-content:center;padding:12px 16px;border-top:1px solid var(--border)}
.lb-head-bar{padding:18px 20px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.lb-eyebrow{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--brand);margin-bottom:.3rem}
@media (max-width:600px){.lb-head-bar{padding:14px 16px}}

/* Match viewer: the 2D replay (replay.php?embed=1) in an in-page iframe (boards.js W.openMatch), styled like feeds.php's */
#wgb-match-modal{display:none;position:fixed;inset:0;z-index:500;background:rgba(0,0,0,.88);align-items:center;justify-content:center;padding:20px}
#wgb-match-modal.open{display:flex}
.wgb-mm-inner{display:flex;flex-direction:column;width:min(1320px,96vw);height:min(900px,94vh);background:#0b0f14;border-radius:var(--radius);overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.7)}
.wgb-mm-top{display:flex;align-items:center;gap:10px;padding:9px 14px;background:rgba(11,15,20,.95);border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}
.wgb-mm-title{font-size:.88rem;font-weight:700;color:#fff;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wgb-mm-btn{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);color:#fff;font-size:.8rem;font-weight:700;cursor:pointer;padding:.3rem .7rem;border-radius:.4rem;font-family:inherit;text-decoration:none;white-space:nowrap;transition:background .15s}
.wgb-mm-btn:hover{background:rgba(255,255,255,.16);text-decoration:none}
.wgb-mm-close{margin-left:auto}
.wgb-mm-frame{flex:1;width:100%;border:none;min-height:0;background:#0b0f14}
@media (max-width:600px){#wgb-match-modal{padding:0}.wgb-mm-inner{width:100vw;height:100dvh;border-radius:0}}
