/* Bored Games — Owner Dashboard
   Self-contained styles. No external fonts/CDNs (strict CSP).
   Matches the add-bot.html / v2 app design language:
   dark ink base, one amber accent, the Jel mascot. */

:root{
  --ink:#100E15; --panel:#17151C; --panel2:#201D28; --panel3:#262232;
  --amber:#FF9B26; --amber-soft:rgba(255,155,38,.12);
  --cream:#F4EDE1; --cream80:rgba(244,237,225,.82);
  --cream55:rgba(244,237,225,.58); --cream35:rgba(244,237,225,.35);
  --cream14:rgba(244,237,225,.12); --cream08:rgba(244,237,225,.06);
  --teal:#2BB39B; --blue:#3E82F7; --blurple:#5865F2;
  --danger:#E5484D; --warn:#FBBF24; --success:#46C26B;
  --coral:#FF4D6D; --violet:#7C5CFF; --gold:#F2C24B;
  /* karma tier stops */
  --k1:#E5484D; --k2:#FF7A3D; --k3:#F2C24B; --k4:#8FCB57; --k5:#4FD1C5;
  /* frosted glass surface tokens */
  --glass:rgba(255,255,255,.055);
  --glass-hi:rgba(255,255,255,.10);
  --glass-brd:rgba(255,255,255,.13);
  --radius:16px;
  --shadow:0 20px 44px -30px rgba(0,0,0,.8);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:
    radial-gradient(58% 44% at 12% -8%, rgba(255,155,38,.17), transparent 60%),
    radial-gradient(54% 44% at 92% 0%, rgba(62,130,247,.16), transparent 60%),
    radial-gradient(48% 40% at 80% 52%, rgba(124,92,255,.14), transparent 60%),
    radial-gradient(54% 44% at 6% 72%, rgba(43,179,155,.13), transparent 62%),
    radial-gradient(46% 40% at 52% 110%, rgba(255,77,109,.13), transparent 60%),
    var(--ink);
  background-attachment:fixed;
  color:var(--cream);
  font-family:'Space Grotesk',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
  line-height:1.55;
  min-height:100vh;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
[hidden]{display:none !important}

/* ---------- focus ---------- */
:focus-visible{outline:2px solid var(--amber);outline-offset:2px;border-radius:6px}

/* ---------- brand Jel (topbar mark) ---------- */
.jel-mark{
  width:26px;height:26px;flex:0 0 26px;
  border-radius:50% 50% 48% 52%/55% 55% 45% 45%;
  background:radial-gradient(circle at 38% 32%,#FFD86B,#F5C63C);
  position:relative;box-shadow:inset 0 -3px 6px rgba(0,0,0,.18)
}
.jel-mark::before,.jel-mark::after{content:"";position:absolute;top:11px;width:5px;height:5px;border-radius:50%;background:#2A2418}
.jel-mark::before{left:7px}.jel-mark::after{left:14px}
/* once signed in, the mark becomes the owner's real Jel */
.jel-mark.has-jel{background:none;box-shadow:none;border-radius:0}
.jel-mark.has-jel::before,.jel-mark.has-jel::after{display:none}
.jel-mark.has-jel svg{width:100%;height:100%;display:block}
/* bigger brand Jel in the top bar (~2x) */
.topbar .jel-mark{width:52px;height:52px;flex:0 0 52px}

/* ---------- topbar ---------- */
.topbar{
  position:sticky;top:0;z-index:50;
  backdrop-filter:blur(18px);
  background:rgba(16,14,21,.82);
  border-bottom:1px solid var(--cream14);
}
.topbar-inner{
  max-width:1160px;margin:0 auto;padding:12px 24px;
  display:flex;align-items:center;justify-content:space-between;gap:16px
}
.brand{display:inline-flex;align-items:center;gap:10px;font-weight:800;letter-spacing:-.3px;font-size:16px}
.brand .tag{color:var(--cream55);font-weight:600;font-size:13px;border-left:1px solid var(--cream14);padding-left:10px;margin-left:2px}
@media(max-width:640px){.brand .tag{display:none}}

.user-chip{display:flex;align-items:center;gap:10px}
.user-chip .av{width:30px;height:30px;border-radius:50%;background:var(--panel2);object-fit:cover;border:1px solid var(--cream14)}
.user-chip .uname{font-size:13.5px;font-weight:700;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:520px){.user-chip .uname{display:none}}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  padding:11px 18px;border-radius:12px;border:1px solid transparent;
  font-size:14px;font-weight:800;cursor:pointer;
  transition:transform .14s ease,background .14s ease,opacity .14s ease,border-color .14s ease;
  text-decoration:none
}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.btn svg{width:18px;height:18px;fill:currentColor;flex:0 0 auto}
.btn-primary{background:var(--amber);color:#26170a}
.btn-primary:hover{background:#ffab47}
.btn-discord{background:var(--blurple);color:#fff}
.btn-discord:hover{background:#4a54d6}
.btn-ghost{background:var(--cream08);color:var(--cream);border-color:var(--cream14)}
.btn-ghost:hover{background:var(--cream14)}
.btn-sm{padding:8px 14px;font-size:13px;border-radius:10px}
.btn-block{width:100%}
.btn.saved{background:rgba(70,194,107,.16);color:var(--success);border-color:rgba(70,194,107,.4);pointer-events:none}

/* ---------- layout ---------- */
.wrap{max-width:1160px;margin:0 auto;padding:28px 24px 80px}
.kick{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;letter-spacing:2.4px;text-transform:uppercase;font-weight:800;color:var(--amber)}
.section-head{margin:0 0 4px;font-size:22px;font-weight:800;letter-spacing:-.4px}
.section-sub{color:var(--cream55);font-size:14px;margin:0 0 20px;max-width:66ch}

/* card — frosted glass (base is translucent + cheap; big surfaces add blur below) */
.card{
  background:linear-gradient(180deg,var(--glass-hi),transparent 46%),var(--glass);
  border:1px solid var(--glass-brd);border-radius:var(--radius);
  box-shadow:var(--shadow), inset 0 1px 0 rgba(255,255,255,.07)
}
.card-pad{padding:20px}
/* real backdrop blur only on the larger, fewer surfaces (keeps the roster snappy) */
.chart-card,.set-card{
  backdrop-filter:blur(16px) saturate(135%);
  -webkit-backdrop-filter:blur(16px) saturate(135%);
}

/* ---------- auth hero ---------- */
.auth-hero{max-width:760px;margin:6vh auto 0;text-align:center;padding:0 8px}
.jel-mark-lg{width:44px;height:44px;display:inline-block}
.jel-mark-lg::before,.jel-mark-lg::after{top:19px;width:8px;height:8px}
.jel-mark-lg::before{left:12px}.jel-mark-lg::after{left:24px}
.auth-hero .kick{margin-top:14px}
.auth-hero h1{font-size:clamp(30px,5.4vw,46px);line-height:1.05;margin:18px auto 12px;font-weight:800;letter-spacing:-1px;max-width:18ch;text-wrap:balance}
.auth-hero .sub{max-width:56ch;margin:0 auto 26px;color:var(--cream55);font-size:16px}
.auth-hero .btn{padding:15px 26px;font-size:15px}
.auth-tiles{margin-top:44px;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;text-align:left}
.auth-tiles .tile{position:relative;overflow:hidden;
  background:linear-gradient(180deg,var(--glass-hi),transparent 55%),var(--glass);
  backdrop-filter:blur(12px) saturate(135%);-webkit-backdrop-filter:blur(12px) saturate(135%);
  border:1px solid var(--glass-brd);border-radius:14px;padding:16px 16px 16px 18px}
.auth-tiles .tile::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent,var(--amber))}
.auth-tiles .tile:nth-child(1){--accent:var(--amber)}
.auth-tiles .tile:nth-child(2){--accent:var(--teal)}
.auth-tiles .tile:nth-child(3){--accent:var(--coral)}
.auth-tiles .tile:nth-child(4){--accent:var(--blue)}
.auth-tiles .tile:nth-child(5){--accent:var(--violet)}
.auth-tiles .tile:nth-child(6){--accent:var(--k4)}
.auth-tiles .tile b{display:block;font-size:14px;margin-bottom:3px;color:var(--accent,var(--cream))}
.auth-tiles .tile span{font-size:12.5px;color:var(--cream55)}
.auth-note{margin-top:22px;color:var(--cream35);font-size:12.5px}
.auth-note a{color:var(--amber);font-weight:700}

/* ---------- guild switcher ---------- */
.guild-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:22px}
.guild-label{font-size:11px;letter-spacing:2px;text-transform:uppercase;font-weight:800;color:var(--cream35);margin-right:2px}
.guild-pill{
  display:inline-flex;align-items:center;gap:9px;padding:8px 14px 8px 8px;
  border-radius:999px;border:1px solid var(--cream14);background:var(--cream08);
  cursor:pointer;font-size:13.5px;font-weight:700;color:var(--cream80);
  transition:border-color .14s,background .14s,color .14s
}
.guild-pill:hover{border-color:var(--cream35);color:var(--cream)}
.guild-pill.active{border-color:var(--amber);background:var(--amber-soft);color:var(--cream)}
.guild-pill .gicon{width:26px;height:26px;border-radius:50%;object-fit:cover;background:var(--panel2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:var(--cream55);flex:0 0 auto}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--cream14);margin-bottom:26px;overflow-x:auto}
.tab{
  appearance:none;background:none;border:none;color:var(--cream55);
  padding:12px 15px;font-size:14px;font-weight:700;cursor:pointer;
  border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;
  transition:color .14s,border-color .14s
}
.tab:hover{color:var(--cream)}
.tab[aria-selected="true"]{color:var(--cream);border-bottom-color:var(--amber)}
.panel{animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* ---------- stat cards ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:22px}
.stat{position:relative;overflow:hidden;padding:18px;border-radius:16px;
  background:linear-gradient(180deg,var(--glass-hi),transparent 55%),var(--glass);
  backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);
  border:1px solid var(--glass-brd);box-shadow:inset 0 1px 0 rgba(255,255,255,.07)}
/* fun rotating accent per KPI */
.stat:nth-child(1){--accent:var(--amber)}
.stat:nth-child(2){--accent:var(--teal)}
.stat:nth-child(3){--accent:var(--blue)}
.stat:nth-child(4){--accent:var(--coral)}
.stat::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--accent,var(--amber))}
.stat .n{font-size:32px;font-weight:800;letter-spacing:-.5px;line-height:1;color:var(--accent,var(--cream));font-variant-numeric:tabular-nums}
.stat .l{font-size:11px;color:var(--cream55);text-transform:uppercase;letter-spacing:1.4px;font-weight:700;margin-top:8px}
.stat .n.amber{color:var(--accent,var(--amber))}

/* ---------- chart panels ---------- */
.chart-grid{display:grid;grid-template-columns:1fr;gap:16px}
@media(min-width:900px){.chart-grid{grid-template-columns:1.4fr 1fr}}
.chart-card{padding:18px}
.chart-title{font-size:14px;font-weight:800;margin:0 0 2px}
.chart-cap{font-size:12px;color:var(--cream55);margin:0 0 14px}
.scroll-x{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
.chart-svg{display:block;width:100%;height:auto;min-width:320px}

/* top games (html bars) */
.tg-row{display:grid;grid-template-columns:1fr;gap:4px;margin-bottom:12px}
.tg-row:last-child{margin-bottom:0}
.tg-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:13px}
.tg-name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tg-plays{color:var(--cream55);font-weight:700;font-size:12px;flex:0 0 auto}
.tg-track{height:9px;background:var(--cream08);border-radius:999px;overflow:hidden}
.tg-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--amber),#ffce7a);width:0;transition:width .6s cubic-bezier(.2,.8,.2,1)}

/* ---------- roster ---------- */
.roster-tools{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.search-box{position:relative;flex:1 1 220px;min-width:180px}
.search-box svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;fill:var(--cream35);pointer-events:none}
.search-box input{
  width:100%;padding:11px 14px 11px 36px;background:rgba(255,255,255,.06);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:1px solid var(--glass-brd);border-radius:12px;color:var(--cream);
  font-size:14px;font-family:inherit
}
.search-box input::placeholder{color:var(--cream35)}
.search-box input:focus{outline:none;border-color:var(--amber)}
.field-select{
  padding:11px 34px 11px 14px;background:rgba(255,255,255,.06);border:1px solid var(--glass-brd);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-radius:12px;color:var(--cream);font-size:13.5px;font-family:inherit;cursor:pointer;
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23F4EDE1' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center
}
.field-select:focus{outline:none;border-color:var(--amber)}

.roster-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:10px}
/* flashy, clickable player tile (details open in a modal) */
.pcard{padding:9px 11px;display:flex;flex-direction:column;gap:8px;cursor:pointer;position:relative;overflow:hidden;
  transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease}
.pcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--tier,var(--amber));opacity:.9}
.pcard::after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background:radial-gradient(130% 90% at 0% 0%, var(--tier-soft, rgba(255,255,255,.05)), transparent 58%)}
.pcard:hover,.pcard:focus-visible{transform:translateY(-3px);border-color:var(--tier,var(--amber));
  box-shadow:0 12px 30px rgba(0,0,0,.42);outline:none}
.pcard:focus-visible{box-shadow:0 0 0 3px var(--tier,var(--amber)), 0 12px 30px rgba(0,0,0,.42)}
.pcard>*{position:relative;z-index:1}
.pcard-top{display:flex;gap:10px;align-items:center}
.pcard-chev{margin-left:auto;align-self:center;flex:0 0 auto;color:var(--cream35);transition:color .15s ease,transform .15s ease}
.pcard-chev svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;display:block}
.pcard:hover .pcard-chev,.pcard:focus-visible .pcard-chev{color:var(--tier,var(--amber));transform:translateX(2px)}
.pcard-hint{font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--cream35);
  padding-top:9px;border-top:1px solid var(--cream14)}
/* Jel avatar + Discord profile picture revealed on hover/focus (tiles + modal). */
.jel-wrap{position:relative}
.pcard .jel-wrap{width:40px;height:40px;flex:0 0 40px}
.pcard .jel-wrap svg{width:100%;height:100%;display:block}
.jel-wrap.has-pfp{cursor:help}
.jel-wrap .pfp{position:absolute;inset:0;width:100%;height:100%;border-radius:14px;object-fit:cover;
  opacity:0;transform:scale(.86);transition:opacity .16s ease,transform .16s ease;pointer-events:none;
  box-shadow:0 4px 14px rgba(0,0,0,.45);border:1.5px solid var(--cream14)}
.jel-wrap.has-pfp:hover .pfp,
.jel-wrap.has-pfp:focus-within .pfp,
.pcard:hover .jel-wrap.has-pfp .pfp,
.pcard:focus-visible .jel-wrap.has-pfp .pfp{opacity:1;transform:scale(1)}
@media (prefers-reduced-motion: reduce){.jel-wrap .pfp{transition:opacity .16s ease}.pcard{transition:box-shadow .15s ease}.pcard:hover,.pcard:focus-visible{transform:none}}
.pcard .who{min-width:0;flex:1}
.pcard .name{font-size:13px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pcard .idline{display:flex;align-items:center;gap:6px;margin-top:3px}
.copy-id{
  font-family:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:11px;color:var(--cream55);background:var(--cream08);border:1px solid var(--cream14);
  border-radius:7px;padding:3px 7px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.copy-id:hover{border-color:var(--cream35);color:var(--cream)}
.copy-id svg{width:11px;height:11px;fill:currentColor;flex:0 0 auto;opacity:.7}
.pcard .meta{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;margin-top:4px;overflow:hidden}
.pcard .tier-chip{font-size:10.5px;padding:2px 7px}
.pcard .karma-num{font-size:11px;flex:0 0 auto}
.tier-chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:800;padding:3px 9px;border-radius:999px}
.tier-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.karma-num{font-size:12px;font-weight:800;color:var(--cream80)}
.servers-badge{display:inline-block;font-size:10.5px;font-weight:800;letter-spacing:.4px;padding:3px 8px;border-radius:999px;background:rgba(62,130,247,.14);color:#9cc0ff;border:1px solid rgba(62,130,247,.3)}
.pcard .servers-badge{margin-top:7px}
.games-h{font-size:10px;letter-spacing:1.4px;text-transform:uppercase;color:var(--cream35);font-weight:800;margin-bottom:8px}
.grow{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:3px 0}
.grow .gname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cream80)}
.grow .gwhen{color:var(--cream35);font-size:11px;flex:0 0 auto}
.res-pill{font-size:9.5px;font-weight:900;letter-spacing:.5px;width:20px;height:20px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.res-win{background:rgba(70,194,107,.16);color:var(--success)}
.res-loss{background:rgba(229,72,77,.16);color:var(--danger)}
.res-draw{background:var(--cream08);color:var(--cream55)}
.games-empty{font-size:12px;color:var(--cream35);padding:2px 0}

/* ---------- settings ---------- */
.set-card{padding:22px;max-width:640px}
.set-card .set-desc{color:var(--cream55);font-size:13.5px;margin:6px 0 18px;line-height:1.6}
.set-card .set-note{color:var(--cream55);font-size:12px;line-height:1.55;margin:12px 0 4px;padding:11px 13px;
  background:var(--glass);border:1px solid var(--glass-brd);border-radius:11px;border-left:3px solid var(--amber)}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-top:1px solid var(--cream14)}
.set-row:first-of-type{border-top:none}
.set-row .rl b{display:block;font-size:14px;font-weight:700}
.set-row .rl span{font-size:12.5px;color:var(--cream55)}
.field-label{font-size:11px;letter-spacing:1.4px;text-transform:uppercase;color:var(--cream35);font-weight:800;margin:16px 0 8px;display:block}
.set-actions{display:flex;gap:10px;align-items:center;margin-top:20px;flex-wrap:wrap}

/* toggle */
.toggle{position:relative;display:inline-block;width:46px;height:26px;flex:0 0 auto}
.toggle input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.toggle .track{position:absolute;inset:0;background:var(--panel3);border:1px solid var(--cream14);border-radius:999px;transition:background .18s,border-color .18s}
.toggle .track::after{content:"";position:absolute;width:20px;height:20px;border-radius:50%;background:var(--cream55);top:2px;left:2px;transition:transform .18s,background .18s}
.toggle input:checked + .track{background:rgba(70,194,107,.22);border-color:var(--success)}
.toggle input:checked + .track::after{transform:translateX(20px);background:var(--success)}
.toggle input:focus-visible + .track{outline:2px solid var(--amber);outline-offset:2px}

/* welcome preview carousel */
.wc-preview{margin-top:8px}
.wc-stage{background:var(--panel2);border:1px solid var(--cream14);border-radius:14px;padding:16px 18px;min-height:92px;display:flex;gap:12px;align-items:flex-start}
.wc-stage .jel-wrap{width:40px;height:40px;flex:0 0 40px}
.wc-stage .jel-wrap svg{width:100%;height:100%}
.wc-bubble .wc-name{font-size:12.5px;font-weight:800;color:var(--amber)}
.wc-bubble .wc-msg{font-size:14px;color:var(--cream);margin-top:3px;line-height:1.5}
.wc-nav{display:flex;align-items:center;gap:10px;margin-top:12px}
.wc-dots{display:flex;gap:6px;flex:1}
.wc-dot{width:7px;height:7px;border-radius:50%;background:var(--cream14);cursor:pointer;border:none;padding:0}
.wc-dot.active{background:var(--amber)}
.icon-btn{width:32px;height:32px;border-radius:9px;border:1px solid var(--cream14);background:var(--cream08);color:var(--cream);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.icon-btn:hover{border-color:var(--cream35)}
.icon-btn svg{width:15px;height:15px;fill:currentColor}

/* karma roles tier list */
.tier-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:8px 0 4px}
.tier-item{display:flex;align-items:center;gap:10px;background:var(--cream08);border:1px solid var(--cream14);border-radius:12px;padding:11px 13px}
.tier-item .swatch{width:14px;height:14px;border-radius:5px;flex:0 0 auto}
.tier-item .tn{font-size:13.5px;font-weight:800}
.tier-item .tt{font-size:11px;color:var(--cream55)}

/* ---------- states: loading / empty / error ---------- */
.center-state{max-width:520px;margin:8vh auto;text-align:center;padding:0 12px}
.center-state .em{font-size:34px;margin-bottom:10px}
.center-state h2{font-size:20px;font-weight:800;margin:0 0 8px}
.center-state p{color:var(--cream55);font-size:14px;margin:0 auto 20px;max-width:44ch}
.spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--cream14);border-top-color:var(--amber);animation:spin .8s linear infinite;margin:0 auto}
@keyframes spin{to{transform:rotate(360deg)}}
.inline-error{background:rgba(229,72,77,.09);border:1px solid rgba(229,72,77,.3);border-radius:12px;padding:14px 16px;color:#ffb4b6;font-size:13.5px;display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.inline-error .btn{flex:0 0 auto}

/* skeleton shimmer */
.sk{position:relative;overflow:hidden;background:var(--cream08);border-radius:10px}
.sk::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgba(244,237,225,.07),transparent);
  animation:sh 1.3s infinite}
@keyframes sh{100%{transform:translateX(100%)}}
.sk-card{padding:16px;display:flex;flex-direction:column;gap:12px}
.sk-line{height:12px;border-radius:6px}

/* ---------- toast ---------- */
.toast-host{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:1000;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{
  pointer-events:auto;padding:12px 18px;border-radius:12px;font-size:13.5px;font-weight:700;
  background:#221d2b;color:var(--cream);border:1px solid var(--cream14);
  box-shadow:0 12px 30px rgba(0,0,0,.5);opacity:0;transform:translateY(10px);
  transition:opacity .2s,transform .2s;display:flex;align-items:center;gap:9px;max-width:min(92vw,420px)
}
.toast.show{opacity:1;transform:none}
.toast.ok{border-color:rgba(70,194,107,.5)}
.toast.ok .tdot{background:var(--success)}
.toast.err{border-color:rgba(229,72,77,.5)}
.toast.err .tdot{background:var(--danger)}
.toast .tdot{width:9px;height:9px;border-radius:50%;background:var(--amber);flex:0 0 auto}

/* footer */
.od-foot{margin-top:60px;text-align:center;color:var(--cream35);font-size:12.5px}
.od-foot a{color:var(--amber);font-weight:700}

@media(max-width:560px){
  .wrap{padding:22px 16px 70px}
  .topbar-inner{padding:12px 16px}
  .set-row{flex-direction:row}
}

/* ---------- player detail modal ---------- */
.modal-back{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;
  background:rgba(8,7,12,.62);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
  opacity:0;transition:opacity .2s ease}
.modal-back.show{opacity:1}
.modal-panel{position:relative;width:100%;max-width:460px;max-height:88vh;overflow:auto;
  background:linear-gradient(180deg,var(--glass-hi),transparent 22%),rgba(22,20,28,.82);
  backdrop-filter:blur(26px) saturate(140%);-webkit-backdrop-filter:blur(26px) saturate(140%);
  border:1px solid var(--glass-brd);border-radius:20px;padding:22px;
  box-shadow:0 24px 70px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.08);
  transform:translateY(14px) scale(.98);transition:transform .2s ease}
.modal-panel::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;border-radius:20px 20px 0 0;background:var(--tier,var(--amber))}
.modal-back.show .modal-panel{transform:none}
.modal-x{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:9px;border:1px solid var(--cream14);
  background:var(--cream08);color:var(--cream80);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;z-index:2}
.modal-x:hover{color:var(--cream);border-color:var(--cream35)}
.modal-x svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;display:block}
.modal-head{display:flex;gap:14px;align-items:center;padding-right:34px;margin-bottom:18px}
.modal-head .jel-wrap{width:66px;height:66px;flex:0 0 66px}
.modal-head .jel-wrap svg{width:100%;height:100%;display:block}
.modal-who{min-width:0;flex:1}
.modal-name{font-size:19px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.modal-who .idline{margin:6px 0}
.modal-who .meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.modal-who .servers-badge{margin-top:0}
.modal-loading{display:flex;justify-content:center;padding:44px 0}
.pd-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}
.pd-stat{background:linear-gradient(180deg,var(--glass-hi),transparent 60%),var(--glass);border:1px solid var(--glass-brd);border-radius:13px;padding:12px 8px;text-align:center}
.pd-stat .pd-n{font-size:22px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.pd-stat .pd-l{font-size:10.5px;font-weight:700;color:var(--cream55);margin-top:5px;line-height:1.25}
.pd-stat .pd-sub{font-size:9.5px;color:var(--cream35);margin-top:3px}
.pd-stat.good .pd-n{color:var(--success)}
.pd-stat.warn .pd-n{color:var(--danger)}
.pd-games{border-top:1px solid var(--cream14);padding-top:14px}
@media (max-width:520px){.pd-grid{grid-template-columns:repeat(2,1fr)}}
@media (prefers-reduced-motion: reduce){.modal-back,.modal-panel{transition:opacity .2s ease}.modal-panel{transform:none}}
