:root{
  --bg:#0b0f14; --panel:#131a22; --panel2:#0f151c; --line:#233040;
  --ink:#e6edf3; --muted:#8aa0b4; --accent:#39ff9e;
  --crit:#ff5470; --crit-bg:#2a1620; --strug:#ffb454; --strug-bg:#2a2216;
  --thriv:#39d98a; --thriv-bg:#122318;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:Inter,system-ui,sans-serif;line-height:1.45}
.wrap{max-width:960px;margin:0 auto;padding:0 16px}
a{color:var(--accent)}

header{border-bottom:1px solid var(--line);background:linear-gradient(180deg,#0e141b,#0b0f14)}
header .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:14px;padding-bottom:14px}
h1{font-family:Orbitron,sans-serif;font-size:20px;letter-spacing:1px;margin:0}
h1 .tag{color:var(--accent);font-size:14px}
.asof{font-size:12px;color:var(--muted);display:inline-flex;align-items:center;gap:6px;
  border:1px solid var(--line);border-radius:999px;padding:4px 12px}
.asof::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--thriv)}
.asof.stale{color:var(--strug);border-color:var(--strug-bg)}
.asof.stale::before{background:var(--strug)}
.asof b{color:var(--ink);font-weight:600}
.stale-banner{background:var(--strug-bg);border:1px solid var(--strug);color:var(--strug);
  border-radius:10px;padding:10px 14px;margin:0 0 16px;font-size:13px}
nav#tabs{display:flex;gap:8px}
nav#tabs button{font:inherit;font-weight:600;color:var(--muted);background:transparent;
  border:1px solid var(--line);border-radius:999px;padding:6px 16px;cursor:pointer}
nav#tabs button.active{color:#04140c;background:var(--accent);border-color:var(--accent)}

main{padding-top:22px;padding-bottom:40px;min-height:60vh}
.loading{color:var(--muted)}

.sub{color:var(--muted);font-size:13px}

/* week navigator */
.weeknav{display:flex;align-items:center;gap:12px;margin:6px 0 16px}
.weeknav .wklabel{flex:1;text-align:center;min-width:0}
.weeknav .wklabel h2{font-family:Orbitron,sans-serif;font-size:22px;margin:0 0 2px;text-wrap:balance}
.navbtn{flex:none;font:inherit;font-size:24px;line-height:1;color:var(--ink);background:var(--panel);
  border:1px solid var(--line);border-radius:12px;width:48px;height:48px;cursor:pointer;transition:.15s}
.navbtn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:#182230}
.navbtn:disabled{opacity:.3;cursor:default}
.navbtn.jump{font-size:16px}
.jumprow{text-align:center;margin:-8px 0 16px}
.jumpnow{font:inherit;font-size:13px;font-weight:600;color:#04140c;background:var(--accent);
  border:none;border-radius:999px;padding:7px 18px;cursor:pointer}
.jumpnow:hover{filter:brightness(1.08)}
.hint{color:var(--muted);font-size:12px;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}

/* clickable-row trend affordance */
.trend svg{vertical-align:-2px}
.trend svg rect{fill:#4d5d6e;transition:fill .15s}
.trendcell{text-align:right;width:40px}
tr.row{cursor:pointer}
tr.row:hover .trend svg rect,tr.row:focus .trend svg rect{fill:var(--accent)}
tr.row:focus{outline:2px solid var(--accent);outline-offset:-2px}

.weekbar{margin:10px 0 20px}
.weekbar .lab{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--muted);margin-bottom:7px}
.weekbar .lab b{color:var(--ink);font-weight:600}
.weekbar .track{height:12px;background:var(--panel2);border:1px solid var(--line);border-radius:999px;overflow:hidden}
.weekbar .fill{height:100%;background:linear-gradient(90deg,#1e6f4c,var(--accent));border-radius:999px;transition:width .4s ease}
.chips{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 18px}
.chip{border:1px solid var(--line);border-radius:12px;padding:8px 14px;background:var(--panel);min-width:104px;
  box-shadow:inset 3px 0 var(--tc,var(--line))}
.chip b{font-family:Orbitron,sans-serif;font-size:22px;display:block}
.chip small{color:var(--muted)}
.changes{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.change{font-size:12px;font-weight:600;border-radius:999px;padding:3px 10px;border:1px solid var(--line)}
.change.joined{color:var(--thriv);background:var(--thriv-bg)}
.change.left{color:var(--crit);background:var(--crit-bg)}
.ladder{display:flex;flex-wrap:wrap;gap:6px 12px;margin:10px 0 4px}
.legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12px}
.legend-item .rng{color:var(--muted);font-variant-numeric:tabular-nums}

.legendbox{margin-top:26px;padding-top:16px;border-top:1px solid var(--line)}
.controls{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
input[type=search],select{font:inherit;background:var(--panel2);color:var(--ink);
  border:1px solid var(--line);border-radius:8px;padding:8px 12px}
input[type=search]{flex:1;min-width:180px}

table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}
th{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.5px;font-weight:600}
th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
th.sortable:hover{color:var(--ink)}
.sarrow{margin-left:3px;font-size:9px;vertical-align:1px}
body.wow th.sortable:hover{color:var(--accent)}
body.wow .sarrow{color:var(--accent)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
tr.row{cursor:pointer}
tr.row:hover{background:#182230}
tr.dim{opacity:.5}
.rank{color:var(--muted);width:34px}
.name{font-weight:600}
.gain{font-family:Orbitron,sans-serif}
.today b{font-family:Orbitron,sans-serif;color:var(--thriv)}
.today .dz{color:#4d5d6e}
body.wow .today b{color:var(--accent);text-shadow:0 0 8px rgba(57,255,158,.4)}

.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
tr.tiered td:first-child{box-shadow:inset 3px 0 var(--tc,var(--line))}
.cull{color:var(--crit);font-size:15px;margin-left:2px;cursor:help;
  filter:drop-shadow(0 0 4px var(--crit))}
@media(prefers-reduced-motion:no-preference){
  .cull{animation:cullpulse 1.6s ease-in-out infinite}
}
@keyframes cullpulse{0%,100%{opacity:.55}50%{opacity:1}}
.rolemark{display:inline-block;vertical-align:-4px;margin-left:5px;cursor:help}
.rolemark.founder{filter:drop-shadow(0 0 4px rgba(255,207,64,.75))}
.rolemark.leader{filter:drop-shadow(0 0 4px rgba(91,214,200,.7))}
.rolemark.mod{vertical-align:-3px;filter:drop-shadow(0 0 3px rgba(74,155,255,.75))}

.legend{font-size:12px;color:var(--muted);margin:10px 0 0}
.legend b{color:var(--ink)}

.detail{position:fixed;inset:0;background:rgba(4,8,12,.7);display:flex;align-items:center;justify-content:center;padding:16px;z-index:10}
.detail.hidden{display:none}
.detail-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;max-width:680px;width:100%;max-height:88vh;overflow:auto;padding:22px;position:relative}
.close{position:absolute;top:10px;right:14px;background:none;border:none;color:var(--muted);font-size:26px;cursor:pointer;line-height:1}
.detail h3{font-family:Orbitron,sans-serif;margin:0 0 2px}
.detail .meta{color:var(--muted);font-size:13px;margin-bottom:16px}
.spark{width:100%;height:120px;display:block;background:var(--panel2);border:1px solid var(--line);border-radius:8px}
.hist-list{margin-top:14px;max-height:240px;overflow:auto;font-size:13px}
.hist-list div{display:flex;justify-content:space-between;padding:4px 6px;border-bottom:1px solid var(--line)}
.hist-list .g{font-variant-numeric:tabular-nums}

footer{color:var(--muted);font-size:12px;padding:18px 16px 34px}
footer.wrap{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.credit{margin-top:2px}
.credit b{color:var(--ink)}
.credit .tag{font-size:11px}
body.wow .credit b{color:var(--accent)}
body.wow .credit .tag{color:var(--accent)}


/* ================= WOW MODE ================= */
#fx,.vignette{display:none}                             /* shown once body.wow is set */

/* shooting gallery: gun sights off the board; interactive elements keep their cursors */
body.wow{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'><g fill='none' stroke='black' stroke-width='3'><circle cx='16' cy='16' r='9'/><path d='M16 1v8M16 23v8M1 16h8M23 16h8'/></g><g fill='none' stroke='white' stroke-width='1.4'><circle cx='16' cy='16' r='9'/><path d='M16 1v8M16 23v8M1 16h8M23 16h8'/></g><circle cx='16' cy='16' r='1.6' fill='red'/></svg>") 16 16, crosshair}
body.wow :is(#tbl,.detail,.wknav,.podium,.gstats,.chips,.wsec,.wladder,footer){cursor:auto}
body.wow :is(a,button,.hdrlink){cursor:pointer}
/* reticle LOCKS (red corner brackets) when hovering a rival-guild poo target */
body.wow.locked,body.wow.locked *{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><g fill='none' stroke='%23ff3b30' stroke-width='3.4' stroke-linecap='round'><path d='M4 12V4h8M36 12V4h-8M4 28v8h8M36 28v8h-8'/><circle cx='20' cy='20' r='9'/></g><circle cx='20' cy='20' r='2.2' fill='%23ff3b30'/></svg>") 20 20, crosshair}
/* per-row easter-egg spot: an invisible hit area in a member's name cell. No
   marker — you discover it because the cursor becomes a GOLD reticle on hover
   (a directly-matching rule, so it beats the board's inherited cursor:auto).
   Off on mobile (no shooting there). */
body.wow td.rank{position:relative}
body.wow .eggspot{position:absolute;inset:0;z-index:2}   /* overlays the rank number, zero layout footprint */
body.wow .eggspot:hover{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'><g fill='none' stroke='%23ffcf40' stroke-width='3.4' stroke-linecap='round'><path d='M20 3v9M20 28v9M3 20h9M28 20h9'/><circle cx='20' cy='20' r='8'/></g><circle cx='20' cy='20' r='2.4' fill='%23ffcf40'/></svg>") 20 20, crosshair}
@media(max-width:560px){.eggspot{display:none}}
/* "ALL HAIL THE STING KING" banner + gold coronation flash */
#kinghail{position:fixed;left:50%;top:34%;transform:translate(-50%,-50%) scale(.6);
  z-index:60;pointer-events:none;opacity:0;text-align:center;
  font-family:Orbitron,sans-serif;font-weight:800;font-size:clamp(22px,4vw,46px);
  color:#ffe08a;text-shadow:0 0 18px rgba(255,196,64,.9),0 2px 4px rgba(0,0,0,.6);white-space:nowrap}
#kinghail.show{animation:kinghail 2.2s cubic-bezier(.2,.9,.2,1) forwards}
@keyframes kinghail{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}
  12%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}
  22%{transform:translate(-50%,-50%) scale(1)}
  78%{opacity:1;transform:translate(-50%,-50%) scale(1)}
  100%{opacity:0;transform:translate(-50%,-52%) scale(1.02)}}
#kinghail.banish{color:#ff8a8a;text-shadow:0 0 18px rgba(255,60,60,.9),0 2px 4px rgba(0,0,0,.6)}
body.wow .change.left{cursor:pointer}
body.wow .change.left:hover{filter:brightness(1.3);text-decoration:line-through}
#app.king{animation:kingflash 1.2s ease-out}
@keyframes kingflash{0%{box-shadow:inset 0 0 0 2000px rgba(255,196,64,.18)}
  100%{box-shadow:inset 0 0 0 2000px rgba(255,196,64,0)}}
@media(prefers-reduced-motion:reduce){#kinghail.show{animation:none;opacity:1}#app.king{animation:none}}
.kills{display:none}
body.wow .kills:not([hidden]){display:inline-flex;align-items:center;gap:5px;margin-left:10px;
  white-space:nowrap;font-variant-numeric:tabular-nums;
  font-family:Orbitron,sans-serif;font-weight:700;font-size:12.5px;color:#ff5470;
  background:rgba(255,84,112,.08);border:1px solid rgba(255,84,112,.4);border-radius:10px;
  padding:4px 10px;text-shadow:0 0 10px rgba(255,84,112,.55)}
body.wow .kills b{font-size:14px;font-variant-numeric:tabular-nums}
body.wow .kills span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
body.wow .kills .shame{color:#9fb2c5;text-shadow:none}
body.wow .kills .shame b{color:#c6d3de}
body.wow .kills .poo{color:#c69b6d;text-shadow:none}
body.wow .kills .poo b{color:#e6c39a}
body.wow .kills .piss{color:#e9cb3f;text-shadow:0 0 10px rgba(233,203,63,.5)}
body.wow .kills .piss b{color:#fff06a}
/* reserve width for the growing PissTake litres so the chip never resizes */
body.wow .kills .piss b{display:inline-block;min-width:5.4ch;text-align:right}
/* the tap: click to pour it all out */
body.wow .kills .tap{appearance:none;background:none;border:none;padding:0;margin:0 0 0 5px;
  cursor:pointer;color:#e9cb3f;opacity:.75;line-height:0;vertical-align:-2px;transition:opacity .15s,transform .2s}
body.wow .kills .tap:hover{opacity:1;filter:drop-shadow(0 0 5px rgba(233,203,63,.8))}
body.wow .kills .tap:focus-visible{outline:2px solid #e9cb3f;outline-offset:2px;border-radius:3px}
body.wow .kills .tap.open{color:#fff06a;transform:rotate(90deg);filter:drop-shadow(0 0 7px rgba(255,240,106,.9))}
body.wow .kills .ksep{width:1px;height:14px;background:rgba(255,84,112,.35);margin:0 2px}

body.wow{background:#06090e}
body.wow #fx{display:block;position:fixed;inset:0;z-index:0;pointer-events:none}
body.wow .vignette{display:block;position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(135% 105% at 50% -10%,transparent 42%,rgba(0,0,0,.62) 100%)}
body.wow header,body.wow main,body.wow footer{position:relative;z-index:2}
/* full-takeover cinematic (QQ): clear ALL page chrome away before it starts */
body.cine-clear header,body.cine-clear main,body.cine-clear footer{
  transition:opacity .55s ease;opacity:0;pointer-events:none}
/* Star Wars opening crawl — real 3D tilt: rotateX on a FIXED stage pivoted at the
   viewport bottom (stable vanishing point); the text scrolls up WITHIN that stage,
   so it enters small... no — enters LARGE from the bottom and recedes as it rises */
#qqcrawl{position:fixed;inset:0;z-index:5;pointer-events:none;overflow:hidden;
  perspective:380px;perspective-origin:50% 50%}
#qqcrawl .stage{position:absolute;inset:0;transform-origin:50% 100%;transform:rotateX(26deg)}
#qqcrawl .crawl{position:absolute;left:12%;right:12%;top:0;
  color:#feda4e;font:700 clamp(15px,2.8vw,40px)/1.55 Inter,system-ui,sans-serif;
  text-align:center;text-shadow:0 0 9px rgba(255,190,50,.25)}
#qqcrawl .crawl h2{font-size:1.5em;margin:.15em 0 .7em;letter-spacing:.05em}
#qqcrawl .crawl p{margin:0 0 1.1em;text-align:justify;text-align-last:center}
#qqcrawl .fade{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(to top,transparent 52%,#000 90%)}

/* board panel + killstreak-styled rows */
body.wow #tbl{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:rgba(9,14,20,.82)}
body.wow table{background:transparent}
body.wow td.num.gain{font-family:Orbitron,sans-serif;font-weight:700;font-size:19px;
  text-shadow:0 0 calc(6px + var(--heat,0)*16px) color-mix(in srgb,var(--tc) 70%,transparent)}
body.wow tbody .badge{font-family:Orbitron,sans-serif;font-weight:700;letter-spacing:.5px;
  clip-path:polygon(7px 0,100% 0,calc(100% - 7px) 100%,0 100%);
  background:color-mix(in srgb,var(--tc) 16%,transparent)!important;color:var(--tc)!important;
  border-top:1px solid color-mix(in srgb,var(--tc) 55%,transparent);border-bottom:1px solid color-mix(in srgb,var(--tc) 55%,transparent);
  box-shadow:0 0 calc(var(--heat,0)*20px) color-mix(in srgb,var(--tc) 55%,transparent);
  text-shadow:0 0 calc(3px + var(--heat,0)*12px) color-mix(in srgb,var(--tc) 80%,transparent)}
body.wow tr.t-abandoned,body.wow tr.t-griefing{background:linear-gradient(90deg,rgba(255,84,112,.13),transparent 62%)}
body.wow tr.t-abandoned td.num.gain,body.wow tr.t-griefing td.num.gain{color:#ff5470;text-shadow:0 0 10px rgba(255,84,112,.5)}
body.wow tr.t-beyond .badge{color:#fff!important;
  background:linear-gradient(100deg,#ff8a2b,#ffd24d,#fff,#ffd24d,#ff8a2b)!important;background-size:250% 100%!important;
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:wshim 2.6s linear infinite}
@keyframes wshim{0%{background-position:0 0}100%{background-position:250% 0}}

/* Aegis podium (wow, completed weeks) */
body.wow .podium{display:flex;justify-content:center;align-items:flex-end;gap:14px;margin:6px 0 4px}
body.wow .plinth{flex:1 1 0;max-width:260px;position:relative;border:1px solid var(--line);border-radius:14px 14px 0 0;
  background:linear-gradient(180deg,var(--panel),var(--panel2));padding:16px 12px 14px;text-align:center;cursor:pointer}
body.wow .plinth:hover{border-color:color-mix(in srgb,var(--tc) 60%,var(--line))}
body.wow .plinth::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;border-radius:14px 14px 0 0;background:var(--tc);box-shadow:0 0 16px var(--tc)}
body.wow .plinth .medal{font-family:Orbitron,sans-serif;font-weight:700;font-size:13px;letter-spacing:2px;color:var(--muted)}
body.wow .plinth.one{margin-bottom:20px;padding-top:24px}
body.wow .plinth.one .medal{color:#f4c95d}
body.wow .plinth .who{font-family:Orbitron,sans-serif;font-weight:700;font-size:18px;margin:6px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.wow .plinth .amt{font-family:Orbitron,sans-serif;font-weight:700;font-size:32px;color:var(--tc);text-shadow:0 0 18px color-mix(in srgb,var(--tc) 55%,transparent)}
body.wow .plinth .amt small{font-size:12px;color:var(--muted)}
body.wow .plinth .badge{display:inline-block;margin:2px 0}
body.wow .riserbase{height:10px;max-width:560px;margin:0 auto 16px;background:linear-gradient(180deg,var(--line),transparent);border-radius:0 0 6px 6px}
@media(prefers-reduced-motion:reduce){body.wow tr.t-beyond .badge{animation:none}}

/* wow header: no solid bar across the top (kiwis show through), just content */
body.wow header{background:none;border-bottom:1px solid rgba(35,48,64,.45)}

/* wow layout — matches the prototype */
body.wow .wknav{display:flex;align-items:center;justify-content:center;gap:12px;margin:22px 0 6px}
body.wow .wnb{font:inherit;font-size:19px;line-height:1;color:var(--ink);background:var(--panel);border:1px solid var(--line);
  border-radius:10px;width:42px;height:42px;cursor:pointer;transition:.15s}
body.wow .wnb:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:#12202b}
body.wow .wnb:disabled{opacity:.28;cursor:default}
body.wow .wklab{font-family:Orbitron,sans-serif;font-weight:700;font-size:22px;letter-spacing:1px;text-transform:uppercase;min-width:220px;text-align:center}
body.wow .wklab .live{color:var(--accent);font-size:11px;letter-spacing:2px;display:block;margin-top:2px;animation:cullpulse 1.8s ease-in-out infinite}
body.wow .jumprow{text-align:center;margin:2px 0 6px}
body.wow .wjump{font:inherit;font-size:12px;font-weight:600;letter-spacing:.4px;color:var(--accent);background:rgba(57,255,158,.08);
  border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:999px;padding:8px 18px;cursor:pointer}
body.wow .wjump:hover{background:rgba(57,255,158,.16);border-color:var(--accent)}
body.wow .wsec{font-family:Orbitron,sans-serif;font-weight:700;letter-spacing:3px;text-transform:uppercase;font-size:18px;color:var(--muted);text-align:center;margin:26px 0 3px}
body.wow .subline{text-align:center;color:var(--muted);font-size:12px;letter-spacing:1px;margin:0 0 16px}
body.wow .inprog{text-align:center;color:var(--muted);font-size:13px;margin:16px auto;max-width:560px;border:1px dashed var(--line);border-radius:12px;padding:14px}
body.wow .inprog b{color:var(--accent)}
body.wow .wladder{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:22px 0 6px}
body.wow .lchip{font-family:Orbitron,sans-serif;font-weight:700;font-size:11px;letter-spacing:1px;text-transform:uppercase;padding:3px 10px;border-radius:4px;
  color:var(--tc);border:1px solid color-mix(in srgb,var(--tc) 45%,transparent);background:color-mix(in srgb,var(--tc) 12%,transparent)}
body.wow .lchip b{color:var(--ink);margin-left:4px;font-variant-numeric:tabular-nums}
body.wow .lchip.z{opacity:.3}

/* wow member-graph modal (prototype look) */
body.wow .chartwrap{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px}
body.wow .chartwrap .spark{height:150px;background:none;border:none}
body.wow .wlegend{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:8px 0 0}
body.wow .wlegend i{display:inline-block;width:12px;height:12px;border-radius:2px;vertical-align:-2px;margin-right:5px}
body.wow .wlegend i.ln{height:2px;width:14px;border-radius:0}
body.wow .wstats{display:flex;gap:10px;margin-top:14px}
body.wow .wstat{flex:1;text-align:center;border:1px solid var(--line);border-radius:10px;padding:10px 6px;background:var(--panel2)}
body.wow .wstat b{font-family:Orbitron,sans-serif;font-size:22px;display:block;color:var(--ink);font-variant-numeric:tabular-nums}
body.wow .wstat span{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}

/* projected tiers (in-progress week) — must read clearly as NOT final */
.badge.proj{border:1px dashed currentColor}
.projtag{font-family:Inter,system-ui,sans-serif;font-size:9px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
  margin-left:5px;border:1px solid currentColor;border-radius:3px;padding:0 3px;opacity:.9;vertical-align:1px}
.projnote{display:block;font-family:Inter,system-ui,sans-serif;font-weight:400;font-size:10px;color:var(--muted);margin-top:-1px}
body.wow .projnote{font-family:system-ui,sans-serif}

/* Phase-1 guild analytics strip */
.gstats{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 16px}
.gstat{flex:1 1 120px;min-width:108px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--panel)}
.gstat b{font-family:Orbitron,sans-serif;font-size:21px;display:block;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.15}
.gstat span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;overflow-wrap:anywhere}
.gstat.gtrend{flex:2 1 220px}
.gspark{width:100%;height:34px;display:block;margin-bottom:3px}
body.wow .gstat{background:var(--panel2)}
body.wow .gstat b{color:var(--accent)}
/* weekly guild-challenge card; behind 1/day pace -> glowing red pulse */
.gstat.chalwarn{border-color:var(--crit)}
.gstat.chalwarn b,body.wow .gstat.chalwarn b{color:#ff5470}
@media(prefers-reduced-motion:no-preference){
  .gstat.chalwarn{animation:chalpulse 1.4s ease-in-out infinite}
}
@keyframes chalpulse{
  0%,100%{box-shadow:0 0 0 1px var(--crit),0 0 8px rgba(255,84,112,.3)}
  50%{box-shadow:0 0 0 1px var(--crit),0 0 26px rgba(255,84,112,.8)}
}

/* Rivals — AU top-guild leaderboard */
.rivals{margin-top:30px}
.rivalbox{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--panel2)}
.rivals .usrow{background:rgba(57,255,158,.07)}
.rivals .usrow .name{color:var(--accent);font-weight:700}
.rivals .mv .up{color:var(--thriv)} .rivals .mv .dn{color:var(--crit)}
.rivals .gstat b.lead{color:var(--thriv)} .rivals .gstat b.trail{color:var(--crit)}
body.wow .rivalbox{background:rgba(9,14,20,.82);border-radius:14px}
body.wow .rivals .usrow{background:rgba(57,255,158,.10)}

/* page links (board <-> rivals) */
.pglinks{text-align:center;margin:2px 0 14px}
.pglink{font-size:13px;font-weight:600;color:var(--muted);text-decoration:none;
  border:1px solid var(--line);border-radius:999px;padding:7px 16px;display:inline-block}
.pglink:hover{color:var(--accent);border-color:var(--accent)}
body.wow .pglink{background:rgba(15,22,32,.6)}
.rivals .d24{color:var(--thriv);font-variant-numeric:tabular-nums}
.rivals .lastknown{color:var(--dim,#5f7686);font-size:10px;letter-spacing:.04em;margin-left:6px;white-space:nowrap}
.rivals .dday{font-variant-numeric:tabular-nums}
.rivals .dday .up{color:var(--thriv)} .rivals .dday .dn{color:var(--crit)}

/* header Top Guilds link (replaces the flag) */
.hdrlink{font-size:13px;font-weight:600;color:var(--muted);text-decoration:none;white-space:nowrap;
  border:1px solid var(--line);border-radius:999px;padding:7px 14px}
.hdrlink:hover{color:var(--accent);border-color:var(--accent)}
body.wow .hdrlink{background:rgba(15,22,32,.6)}

/* rivals gain-race chart */
.racewrap{border:1px solid var(--line);border-radius:12px;background:var(--panel2);padding:12px 12px 8px;margin:0 0 16px}
.race{width:100%;height:200px;display:block}
.racecap{text-align:center;font-size:11px;color:var(--muted);margin-top:4px}
body.wow .racewrap{background:rgba(9,14,20,.82)}
.rivals tr.grow{cursor:pointer}
.rivals tr.grow:hover{background:#182230}
body.wow .rivals tr.grow:hover{background:rgba(57,255,158,.05)}
.gtag{color:var(--muted);font-weight:500;font-size:.85em}
body.wow .gtag{color:#5b7186}

/* deploy stamp (injected by build_site) — top-right, unobtrusive */
.bver{position:fixed;top:2px;right:5px;z-index:40;pointer-events:none;font-family:monospace;font-size:10px;color:rgba(138,160,180,.55)}
.bver.stale{pointer-events:auto;cursor:pointer;color:#04140c;background:var(--accent);border-radius:6px;padding:2px 8px;font-weight:700}

/* EASTER EGG: shoot the clan tag -> full sequence (see triggerEgg): uh-oh +
   gather, charge red, RAGE (board heats red-hot & shakes), crumble away, ~5s
   gone, fade back in. Timeline matches EG in app.js (total 11.6s). */
@keyframes lkegg{
  0%{transform:none;opacity:1;filter:none}
  /* uh-oh + kiwis gather: faint heat, small shudder */
  5%{transform:translate(-3px,1px);filter:brightness(1.1) drop-shadow(0 0 8px rgba(255,90,46,.6))}
  9%{transform:translate(3px,-1px)}
  /* charging: red glow builds, shaking grows */
  16%{transform:translate(-5px,2px) scale(1.005);filter:brightness(1.4) drop-shadow(0 0 18px rgba(255,58,30,.8))}
  21%{transform:translate(5px,-2px);filter:brightness(1.7) saturate(1.6) drop-shadow(0 0 28px rgba(255,42,18,.9))}
  /* RAGE: red-hot, violent shake */
  29%{transform:translate(-8px,3px) scale(1.02);filter:brightness(2.2) saturate(2.2) drop-shadow(0 0 44px #ff2a12)}
  36%{transform:translate(8px,-3px) scale(1.03);filter:brightness(2.6) saturate(2.6) drop-shadow(0 0 60px #ff1a0a)}
  /* CRUMBLE: heat-warped, collapses and falls away, disintegrating */
  41%{transform:translateY(24px) scale(.94) rotate(2deg) skewX(-3deg);filter:brightness(2.6) saturate(2.4) blur(2px) drop-shadow(0 0 46px #ff1a0a)}
  48%{transform:translateY(200px) scale(.42) rotate(13deg) skewX(-8deg);opacity:0;filter:brightness(3) blur(18px)}
  /* gone (~5s) */
  52%,88%{transform:translateY(240px) scale(.3) rotate(15deg);opacity:0;filter:blur(20px)}
  /* fade back in, good as new */
  100%{transform:none;opacity:1;filter:none}
}
body.wow main#app.egg{animation:lkegg 11.6s cubic-bezier(.4,0,.5,1) both;transform-origin:50% 40%}

/* grab the cannabis leaf -> the kiwis get baked. Board melts into a mellow green
   haze so the stoned kiwis show over it, then fades back. Timeline ~ WEED in app.js. */
@keyframes lktrip{
  0%{opacity:1;filter:none}
  10%{opacity:.72;filter:hue-rotate(45deg) saturate(1.3) blur(1px)}
  20%,80%{opacity:.16;filter:hue-rotate(85deg) saturate(1.7) brightness(1.05) blur(3px)}
  93%{opacity:.72;filter:hue-rotate(30deg) blur(1px)}
  100%{opacity:1;filter:none}
}
body.wow main#app.trip{animation:lktrip 9.2s ease-in-out both}
/* open-hand cursor while hovering the grabbable leaf (not the shooting reticle) */
body.wow.grabbable,body.wow.grabbable *{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='38' height='38' viewBox='0 0 38 38'><g fill='%23f4e9c8' stroke='%233a2f14' stroke-width='1.6' stroke-linejoin='round'><path d='M12 20V9a2.4 2.4 0 0 1 4.8 0v8'/><path d='M16.8 17V7.2a2.4 2.4 0 0 1 4.8 0V17'/><path d='M21.6 17.4V8.4a2.4 2.4 0 0 1 4.8 0V19'/><path d='M26.4 19v-6a2.4 2.4 0 0 1 4.8 0v10c0 5-3.4 8.8-8.8 8.8-3 0-5-1-7-3.2l-5-6.4a2.4 2.4 0 0 1 3.6-3.1l2.6 2.6V9'/></g></svg>") 19 19, grab}

/* ===== mobile overrides (kept LAST so equal-specificity rules win) ===== */
@media(max-width:560px){
  body.wow{cursor:auto}   /* no gun sights / shooting on mobile */
  body.wow .kills{display:none!important}   /* no shooting → no kill score on mobile */
  th.hide,td.hide{display:none}
  .wrap{padding:0 10px}
  h1{font-size:17px}
  h1 .tag{font-size:12px}
  /* week navigator (classic + wow): let the label shrink instead of overflowing */
  .weeknav{gap:8px}
  .weeknav .wklabel h2{font-size:18px}
  .navbtn{width:42px;height:42px;font-size:20px}
  body.wow .wknav{gap:8px;margin:16px 0 4px}
  body.wow .wklab{min-width:0;font-size:15px;letter-spacing:.5px}
  body.wow .wnb{width:38px;height:38px;font-size:17px}
  body.wow .wsec{font-size:14px;letter-spacing:2px;margin:20px 0 3px}
  /* MEMBERS board: a wide table clips the tier badge on narrow phones, so stack
     each member into a labelled card — name on top, then Weekly/Today and
     Tier/Total in a 2-col grid, rank down the left. Shows every column and
     wraps instead of overflowing at any width. */
  body.wow #tbl{background:transparent;border:none;overflow:visible;border-radius:0}
  body.wow #tbl table,body.wow #tbl tbody{display:block}
  body.wow #tbl thead{display:none}
  body.wow #tbl tr.row{position:relative;display:grid;grid-template-columns:1fr 1fr;
    gap:2px 12px;padding:9px 12px 10px 42px;border:1px solid var(--line);
    border-radius:12px;margin-bottom:8px;background:rgba(9,14,20,.82)}
  body.wow #tbl td{display:block;padding:0;border:none;text-align:left;min-width:0}
  body.wow #tbl td::before{content:attr(data-label)":\00a0";color:var(--muted);
    font-size:9px;letter-spacing:.5px;text-transform:uppercase}
  body.wow #tbl td.name{grid-column:1/-1;font-size:15px;font-weight:700;margin-bottom:2px}
  body.wow #tbl td.name::before{content:none}
  body.wow #tbl td.rank{position:absolute;left:0;top:0;bottom:0;width:34px;
    display:flex;align-items:center;justify-content:center;font-family:Orbitron,sans-serif;
    font-size:16px;color:var(--muted);border-right:1px solid var(--line)}
  body.wow #tbl td.rank::before{content:none}
  body.wow #tbl td.num.gain{font-size:16px}
  body.wow #tbl td.today,body.wow #tbl td.hide{display:block}
  body.wow #tbl td.trendcell{display:none}
  body.wow #tbl td.gain .projnote{display:inline;margin-left:5px;font-size:9px}
  body.wow #tbl .badge{font-size:11px;letter-spacing:0}
  body.wow #tbl .projtag{font-size:8px;padding:0 2px;margin-left:3px}
  /* RIVALS board: same fix — stack each guild into a labelled card so the
     points/deltas never clip on narrow phones. Shows Points, This-week, vs-us
     and rank movement. */
  .rivalbox{overflow:visible;border:none;background:transparent}
  .rivalbox table,.rivalbox tbody{display:block}
  .rivalbox thead{display:none}
  .rivalbox tr.grow{position:relative;display:grid;grid-template-columns:1fr 1fr;
    gap:2px 12px;padding:9px 12px 10px 42px;border:1px solid var(--line);
    border-radius:12px;margin-bottom:8px;background:var(--panel2)}
  .rivalbox tr.grow.usrow{border-color:color-mix(in srgb,var(--accent) 50%,var(--line))}
  .rivalbox td{display:block;padding:0;border:none;text-align:left;min-width:0}
  .rivalbox td::before{content:attr(data-label)":\00a0";color:var(--muted);
    font-size:9px;letter-spacing:.5px;text-transform:uppercase}
  .rivalbox td.name{grid-column:1/-1;font-size:14px;font-weight:700;margin-bottom:2px}
  .rivalbox td.name::before{content:none}
  .rivalbox td.rank{position:absolute;left:0;top:0;bottom:0;width:34px;
    display:flex;align-items:center;justify-content:center;font-family:Orbitron,sans-serif;
    font-size:16px;color:var(--muted);border-right:1px solid var(--line)}
  .rivalbox td.rank::before{content:none}
  .rivalbox td.hide{display:block}   /* show "vs us" in the card */
  .racewrap{display:none}   /* gain-race chart: 10 labels can't fit a phone; the cards carry the same weekly numbers */
  /* stat cards + ladder: wrap 2-up instead of one cramped row */
  body.wow .wstats{flex-wrap:wrap}
  body.wow .wstat{flex:1 1 42%}
  body.wow .wstat b{font-size:18px}
  .gstat{flex:1 1 42%;min-width:0}
  .gstat.gtrend{flex:1 1 100%}
  .gstat b{font-size:18px}
  body.wow .lchip{font-size:10px;padding:3px 7px}
  /* podium (completed weeks): shrink so 3 fit a phone width */
  body.wow .podium{gap:6px}
  body.wow .plinth{padding:12px 5px 10px}
  body.wow .plinth .amt{font-size:20px}
  body.wow .plinth .who{font-size:13px}
  body.wow .plinth .medal{font-size:10px;letter-spacing:1px}
  body.wow .plinth .amt small{font-size:10px}
}
/* easter-egg discovery counter (per-user, localStorage) */
#eggcount{position:fixed;left:10px;bottom:8px;z-index:40;pointer-events:none;
  font:600 12px Inter,system-ui,sans-serif;letter-spacing:.02em;color:rgba(150,170,190,.55)}
#eggcount.done{color:rgba(120,230,160,.8)}
/* "#" header resets sorting back to weekly rank */
th.sortclear{cursor:pointer;user-select:none}
th.sortclear:hover{color:var(--ink)}
body.wow th.sortclear:hover{color:var(--accent)}
