/* ===== RoKStats — SaaS admin theme, DARK default + LIGHT toggle (purple #7367F0) ===== */
@import url('https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;500;600;700;800&display=swap');
:root{ /* ---- DARK (default) ---- */
  --primary:#7C6CF8; --primary-d:#9488FF; --primary-soft:rgba(124,108,248,.16); --primary-soft2:rgba(124,108,248,.26);
  /* Kolory ZMIERZONE PIPETA z dostarczonych mockupow (nie z tresci promptu —
     prompt podawal jasniejsza palete #161D31/#283046, ktorej grafiki nie uzywaja). */
  --bg:#0B1220; --card:#131D31; --sidebar:#0E1628; --drawer:#10192B;
  --head:#F8FAFC; --txt:#CBD5E1; --body:#94A3B8; --mut:#64748B; --mut2:#475569;
  --line:#24324A; --line2:#2E3E59;
  --hover:#1A2740; --th:#0F1A2C; --input-bg:#0E1628;
  --topbar-bg:#131D31; --nav-bg:#0E1628;
  --success:#22C55E; --danger:#EF4444; --warning:#F59E0B; --info:#38BDF8; --danger-soft:rgba(239,68,68,.18);
  --r:12px; --r-lg:16px; --r-input:12px; --r-btn:12px; --r-drawer:18px; --r-modal:20px;
  --sh:0 1px 3px rgba(0,0,0,.28); --sh-lg:0 12px 32px rgba(0,0,0,.38);
  --accent:#7C6CF8; --gold:#E8B23A;
}
:root[data-theme="light"]{ /* ---- LIGHT ---- */
  --primary:#7C6CF8; --primary-d:#6155e0; --primary-soft:#efedfe; --primary-soft2:#e5e2fc;
  --bg:#F8F7FA; --card:#FFFFFF; --sidebar:#FFFFFF; --drawer:#FFFFFF;
  --head:#443C6D; --txt:#5D596C; --body:#6E6B7B; --mut:#A5A3AE; --mut2:#B9B9C3;
  --line:#EBE9F1; --line2:#E4E2EC;
  --hover:#faf9fc; --th:#faf9fc; --input-bg:#FFFFFF;
  --topbar-bg:rgba(248,247,250,.85); --nav-bg:rgba(255,255,255,.9);
  --danger-soft:#fbdddd;
  --sh:0 4px 24px 0 rgba(34,41,47,.06); --sh-lg:0 6px 30px rgba(34,41,47,.1);
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--body);
  font:14.5px/1.55 "Public Sans","Inter",-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;transition:background .2s,color .2s}
a{color:var(--primary);text-decoration:none}
h1,h2,h3,h4{color:var(--head);margin:.3em 0;font-weight:700;letter-spacing:-.2px}
h1{font-size:26px} h2{font-size:21px} h3{font-size:16px}
b{font-weight:600;color:var(--txt)}
.num{font-variant-numeric:tabular-nums}
.mut{color:var(--mut)}
.good,.up{color:var(--success)} .bad,.down{color:var(--danger)}
.hide{display:none!important}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line2);
  background:var(--card);color:var(--txt);padding:10px 18px;border-radius:var(--r-btn);
  font:600 14px/1 inherit;cursor:pointer;transition:.15s;white-space:nowrap}
.btn:hover{background:var(--hover);color:var(--head)}
.btn.primary{background:var(--primary);border:none;color:#fff;box-shadow:0 3px 10px rgba(124,108,248,.35)}
.btn.primary:hover{background:var(--primary-d);color:#fff}
.btn.ghost{background:transparent;border-color:transparent;color:var(--primary)}
.btn.ghost:hover{background:var(--primary-soft)}
.btn.sm{padding:6px 12px;font-size:13px}
.btn.lg{padding:12px 24px;font-size:15px}
.btn.danger{color:var(--danger);border-color:var(--danger-soft);background:var(--card)}
.btn.danger:hover{background:var(--danger);color:#fff}

/* ---- app shell (sidebar + main) ---- */
.app,.admin{display:grid;grid-template-columns:260px 1fr;min-height:100vh}
.sidebar{background:var(--sidebar);border-right:1px solid var(--line);padding:18px 14px;
  display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}
.sidebar::-webkit-scrollbar{display:none}
.sidebar .brand{display:flex;align-items:center;gap:11px;padding:6px 10px 20px}
.sidebar .logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--primary),#9488FF);
  display:grid;place-items:center;font-size:18px;box-shadow:0 4px 12px rgba(124,108,248,.4)}
.sidebar .name{font-size:19px;font-weight:800;color:var(--head);letter-spacing:-.3px}
.sidebar .name span{color:var(--primary)}
.sidebar .sect{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--mut2);font-weight:700;padding:16px 12px 6px}
.sidebar a{display:flex;align-items:center;gap:11px;color:var(--body);padding:9px 12px;border-radius:7px;
  font-weight:500;font-size:14.5px;cursor:pointer;transition:.12s}
.sidebar a:hover{background:var(--hover);color:var(--head)}
.sidebar a.active{background:linear-gradient(90deg,var(--primary),#9488FF);color:#fff;box-shadow:0 3px 10px rgba(124,108,248,.4)}
.sidebar a.active .badge{background:rgba(255,255,255,.25);color:#fff}
.sidebar a .ic{width:20px;text-align:center}
.sidebar .sp{flex:1}
.main,.admin-main{min-width:0}
.admin-main{padding:22px 28px 40px}

/* ---- topbar ---- */
/* Navbar UTWARDZONY: byl polprzezroczysty z blur i zlewal sie z trescia
   podczas przewijania. Teraz pelne tlo karty + wyrazna krawedz i cien. */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 28px;position:sticky;top:0;z-index:20;
  background:var(--card);border-bottom:1px solid var(--line);box-shadow:0 2px 10px rgba(0,0,0,.16)}
/* Powitanie w navbarze */
.welcome-box{display:flex;align-items:center;gap:8px;margin-left:auto;margin-right:14px;font-size:13.5px;white-space:nowrap}
.welcome-box .wl{color:var(--mut)}
.welcome-box .wn{color:var(--head);font-weight:700}
.welcome-box .wk{color:var(--primary);font-weight:700;background:var(--line);padding:3px 9px;border-radius:7px;font-size:12.5px}
@media(max-width:900px){.welcome-box .wl{display:none}}
.topbar .page-title{font-size:20px;font-weight:700;color:var(--head)}
.topbar .crumb{font-size:12.5px;color:var(--mut)}
.topbar .crumb a{color:var(--primary)}
.topbar .tools{display:flex;align-items:center;gap:10px}
.iconbtn{width:38px;height:38px;border-radius:50%;background:var(--card);border:1px solid var(--line);display:grid;place-items:center;cursor:pointer;color:var(--body);box-shadow:var(--sh);font-size:16px}
.iconbtn:hover{color:var(--primary);border-color:var(--primary)}
.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--primary),#9488FF);color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px;cursor:default}
.content{padding:6px 28px 40px}

/* ---- cards ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh);padding:20px}
.card.split,.card.flush{padding:0}
.card.pad{padding:22px}
.card.hover{transition:.15s}
.card.hover:hover{box-shadow:var(--sh-lg);transform:translateY(-2px)}
.card-h{padding:18px 22px 0;font-size:16px;font-weight:700;color:var(--head)}
.card-b{padding:18px 22px 22px}
.grid{display:grid;gap:20px}
.g-2{grid-template-columns:repeat(2,1fr)} .g-3{grid-template-columns:repeat(3,1fr)} .g-4{grid-template-columns:repeat(4,1fr)}
.g-auto{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.section-title{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--mut);font-weight:700;margin:0 0 12px}

/* ---- big stat card ---- */
.statbig{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh);padding:20px 22px;position:relative;display:flex;flex-direction:column;min-height:158px}
.statbig .k{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--mut)}
.statbig .v{font-size:38px;font-weight:800;color:var(--head);font-variant-numeric:tabular-nums;line-height:1.08;margin-top:8px}
.statbig .sub{font-size:13px;color:var(--mut);margin-top:2px}
.statbig .spark{margin-top:auto;padding-top:16px}
.statbig .spark svg{display:block;width:100%;height:44px}
.actionbtn{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh);padding:20px 22px;
  font-weight:700;color:var(--primary);cursor:pointer;transition:.15s;display:block;text-align:left}
.actionbtn:hover{box-shadow:var(--sh-lg);transform:translateY(-2px);color:var(--primary-d)}

/* ---- badges / pills ---- */
.badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px;letter-spacing:.2px;display:inline-block}
.badge.soon{background:var(--danger-soft);color:var(--danger)}
.badge.new{background:var(--primary-soft);color:var(--primary)}
.badge.ok{background:rgba(40,199,111,.16);color:var(--success)}
.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:6px;background:var(--primary-soft);color:var(--primary);font-size:12px;font-weight:600}
.pill.accent{background:var(--primary-soft);color:var(--primary)}
.atag{font-size:9px;font-weight:800;color:var(--primary);background:var(--primary-soft);border-radius:4px;padding:1px 4px;margin-right:5px;vertical-align:super}
.atag.big{font-size:12px;vertical-align:middle;margin-right:8px}

/* ---- tables ---- */
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);box-shadow:var(--sh)}
table{width:100%;border-collapse:collapse;min-width:640px}
th,td{padding:13px 20px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
th{background:var(--th);color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.6px;font-weight:700}
th.r,td.r{text-align:right;font-variant-numeric:tabular-nums}
tbody tr{cursor:pointer;transition:background .1s}
tbody tr:hover{background:var(--th)}
tbody tr:last-child td{border-bottom:none}
.rank{display:inline-grid;place-items:center;min-width:26px;height:24px;border-radius:6px;font-weight:700;color:var(--mut);font-size:13px}
.rank.top{background:var(--primary-soft);color:var(--primary)}
.nick{font-weight:600;color:var(--head)}
.gid{color:var(--mut2);font-size:12px}

/* ---- inputs ---- */
input,select{background:var(--input-bg);border:1px solid var(--line2);color:var(--txt);padding:11px 14px;border-radius:var(--r-input);font:inherit;font-size:14px;outline:none}
input:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
input::placeholder{color:var(--mut2)}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:12.5px;color:var(--txt);font-weight:600}
.controls{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.controls input{flex:1;min-width:240px}

/* ---- tabbar ---- */
.tabbar{display:flex;gap:4px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:6px;margin-bottom:22px;overflow-x:auto;box-shadow:var(--sh)}
.tabbar button{background:none;border:none;color:var(--body);padding:9px 15px;font:600 14px/1 inherit;cursor:pointer;border-radius:7px;white-space:nowrap;display:flex;align-items:center;gap:7px}
.tabbar button:hover{background:var(--hover);color:var(--head)}
.tabbar button.active{background:var(--primary);color:#fff}
.tabbar button.active .badge{background:rgba(255,255,255,.25);color:#fff}

/* ---- coming soon ---- */
.soon-panel{border:1px dashed var(--line2);border-radius:var(--r-lg);padding:60px 24px;text-align:center;background:var(--card);box-shadow:var(--sh)}
.soon-panel .ic{font-size:36px;margin-bottom:14px}
.soon-panel h3{margin:0 0 6px;font-size:20px}
.soon-panel p{color:var(--mut);max-width:440px;margin:0 auto 4px}
.soon-panel .badge{margin-top:14px;display:inline-block}

/* ---- stat tiles (small) ---- */
.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--sh)}
.stat .k{font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--mut);font-weight:600}
.stat .v{font-size:26px;font-weight:800;color:var(--head);font-variant-numeric:tabular-nums;margin-top:4px}

/* ---- public navbar ---- */
.nav{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:14px 32px;background:var(--nav-bg);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:11px}
.brand .logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--primary),#9488FF);display:grid;place-items:center;font-size:18px;box-shadow:0 4px 12px rgba(124,108,248,.4)}
.brand .name{font-size:20px;font-weight:800;color:var(--head)}.brand .name span{color:var(--primary)}
.nav-links{display:flex;align-items:center;gap:8px}
.nav-links a{color:var(--body);padding:8px 14px;border-radius:7px;font-weight:600;cursor:pointer}
.nav-links a:hover{color:var(--head);background:var(--hover)}
.wrap{max-width:1200px;margin:0 auto;padding:32px}

/* ---- hero ---- */
.hero{padding:80px 32px 60px;text-align:center;background:radial-gradient(700px 320px at 50% -10%,var(--primary-soft),transparent 70%)}
.hero .inner{max-width:760px;margin:0 auto}
.hero h1{font-size:52px;line-height:1.08}
.hero p.sub{font-size:19px;color:var(--body);max-width:600px;margin:18px auto 30px}
.hero .cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.hero-stats{display:flex;gap:44px;justify-content:center;flex-wrap:wrap;margin-top:48px}
.hero-stats .v{font-size:32px;font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums}
.hero-stats .k{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--mut)}

/* ---- calculator ---- */
.calc{display:grid;grid-template-columns:1fr 320px;gap:22px}
.tech-list{display:flex;flex-direction:column;gap:2px}
.tech-row{display:grid;grid-template-columns:28px 1fr 150px 48px;align-items:center;gap:14px;padding:11px 14px;border-radius:8px}
.tech-row:hover{background:var(--hover)}
.tech-row .ico{width:28px;height:28px;border-radius:7px;background:var(--primary-soft);display:grid;place-items:center;font-size:14px}
.tech-row input[type=range]{width:100%;accent-color:var(--primary)}
.tech-row .lvl{text-align:right;color:var(--mut);font-size:13px;font-variant-numeric:tabular-nums}
.calc-side{position:sticky;top:20px;align-self:start;display:flex;flex-direction:column;gap:16px}

/* ---- pricing ---- */
.price-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;max-width:1040px;margin:0 auto}
.price-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:26px;text-align:center;position:relative;box-shadow:var(--sh);transition:.15s}
.price-card:hover{box-shadow:var(--sh-lg)}
.price-card.feat{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),0 12px 36px rgba(124,108,248,.25)}
.price-card .tier{font-size:13px;text-transform:uppercase;letter-spacing:1px;color:var(--mut);font-weight:700}
.price-card .amt{font-size:38px;font-weight:800;color:var(--head);margin:10px 0}
.price-card .amt small{font-size:15px;color:var(--mut);font-weight:500}
.price-card ul{list-style:none;padding:0;margin:16px 0 22px;text-align:left;color:var(--body);font-size:14px}
.price-card li{padding:8px 0;border-bottom:1px solid var(--line)}
.price-card li:before{content:"✓";color:var(--success);margin-right:9px;font-weight:800}
.pop{position:absolute;top:-12px;left:50%;transform:translateX(-50%)}

/* ---- drawer ---- */
.drawer{position:fixed;inset:0;z-index:60}.drawer.hidden{display:none}
.drawer .bg{position:absolute;inset:0;background:rgba(5,6,10,.55)}
.drawer .panel{position:absolute;right:0;top:0;height:100%;width:min(560px,95vw);background:var(--drawer);border-left:1px solid var(--line);border-radius:var(--r-drawer) 0 0 var(--r-drawer);padding:26px;overflow-y:auto;box-shadow:-16px 0 48px rgba(0,0,0,.5)}
.drawer .close{position:absolute;right:20px;top:18px;background:none;border:none;color:var(--mut);font-size:20px;cursor:pointer}
.statgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
.delta-row{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line)}
.delta-row:last-child{border:none}
.editnick{background:none;border:1px solid var(--line2);color:var(--mut);border-radius:6px;padding:2px 8px;cursor:pointer;margin-left:8px}

/* ---- login ---- */
.login-body{display:grid;place-items:center;min-height:100vh;background:radial-gradient(600px 400px at 50% 0,var(--primary-soft),var(--bg))}
.login-card{width:min(400px,92vw);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:36px 32px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--sh-lg)}
.login-card .brand{justify-content:center;margin-bottom:8px}
.login-card input{padding:12px 15px}
.err{color:var(--danger);font-size:13px;min-height:16px;text-align:center}

/* ---- footer ---- */
footer.ft{border-top:1px solid var(--line);margin-top:60px;padding:28px 32px;color:var(--mut);display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;max-width:1200px;margin-left:auto;margin-right:auto}
footer.ft a{color:var(--mut)}footer.ft a:hover{color:var(--head)}

@media(max-width:900px){.app,.admin{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;flex-wrap:wrap}.calc{grid-template-columns:1fr}.calc-side{position:static}.hero h1{font-size:38px}}

/* ---- wybor zakresu skanu ---- */
.segbar{display:flex;gap:6px;flex-wrap:wrap}
.segbar.col{flex-direction:column;gap:8px}
.segbar button{flex:1;min-width:72px;text-align:left;padding:9px 12px;border-radius:9px;cursor:pointer;
  background:var(--card);border:1px solid var(--line);color:var(--body);font-size:13px;font-weight:600}
.segbar.col button{display:flex;flex-direction:column;gap:3px}
.segbar button span{font-weight:400;font-size:11.5px;color:var(--mut);line-height:1.35}
.segbar button:hover{border-color:var(--primary)}
.segbar button.on{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 14%,transparent);color:var(--head)}
.eta-box{margin:6px 0 14px;padding:10px 12px;border-radius:9px;background:var(--line);
  font-size:12.5px;color:var(--body);line-height:1.5}
.eta-box b{color:var(--head)}

/* ---- karta uzytkownika na dole sidebara (element z projektu) ---- */
.usercard{display:flex;align-items:center;gap:10px;margin:10px 12px 14px;padding:10px 12px;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg)}
.uc-av{width:34px;height:34px;flex:0 0 34px;border-radius:50%;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--primary),#9488FF);color:#fff;font-weight:700;font-size:13px}
.uc-t{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.uc-t b{color:var(--head);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uc-t span{color:var(--mut);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---- Scan Center (uklad z mockupu) ---- */
.sc-grid{display:grid;grid-template-columns:1.15fr 1fr 1.05fr;gap:20px;align-items:start}
@media(max-width:1250px){.sc-grid{grid-template-columns:1fr}}
.sc-pct{font-size:38px;font-weight:800;color:var(--head);line-height:1.1}
.sc-row{display:flex;justify-content:space-between;gap:10px;padding:7px 0;font-size:13px}
.sc-row span:first-child{color:var(--mut)}
.sc-row span:last-child{color:var(--head);font-weight:600;text-align:right}
/* pionowy stepper etapow */
.stage{display:flex;gap:12px;padding:10px 0}
.stage .dotcol{display:flex;flex-direction:column;align-items:center;flex:0 0 18px}
.stage .sdot{width:14px;height:14px;border-radius:50%;border:2px solid var(--line2);background:var(--card)}
.stage.done .sdot{background:var(--success);border-color:var(--success)}
.stage.act .sdot{background:var(--primary);border-color:var(--primary);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 25%,transparent)}
.stage .sline{flex:1;width:2px;background:var(--line2);margin:4px 0 -10px}
.stage:last-child .sline{display:none}
.stage .stxt b{display:block;color:var(--head);font-size:13.5px;font-weight:600}
.stage .stxt span{color:var(--mut);font-size:11.5px}
.stage.done .stxt span{color:var(--success)}
.eta-note{font-size:11.5px;color:var(--mut);line-height:1.45;margin-bottom:8px}

/* ===== Panel ADMINA — kafle metryk + karta "System Health" (admin.html) =====
   Klasy nalezace WYLACZNIE do panelu admina. Uzywaja tokenow z :root powyzej. */
.sysh-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:16px}
.sysh-tile{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--sh);padding:16px 18px;transition:border-color .15s,box-shadow .15s}
.sysh-tile:hover{border-color:var(--line2);box-shadow:var(--sh-lg)}
.sysh-tile .k{font-size:11px;text-transform:uppercase;letter-spacing:.7px;
  color:var(--mut);font-weight:700;line-height:1.4}
.sysh-tile .v{font-size:28px;font-weight:800;color:var(--head);
  font-variant-numeric:tabular-nums;line-height:1.15;margin-top:6px}
.sysh-tile .v .sep{color:var(--mut2);font-weight:600;margin:0 2px}
.sysh-tile .sub{font-size:12px;color:var(--mut);margin-top:3px;line-height:1.4}
/* stan pusty — dla metryk ktorych NIE MA w bazie (np. billing) */
.sysh-tile.empty .v{color:var(--mut2)}

/* ---- karta System Health ---- */
.sysh-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.sysh-list{display:flex;flex-direction:column;gap:13px;margin-top:14px}
.sysh-row{display:grid;grid-template-columns:112px 1fr 52px;align-items:center;gap:14px}
.sysh-row .lbl{font-size:13px;font-weight:600;color:var(--body)}
.sysh-row .val{font-size:13px;font-weight:700;color:var(--head);
  font-variant-numeric:tabular-nums;text-align:right}
.sysh-bar{height:8px;border-radius:20px;background:var(--line);overflow:hidden}
.sysh-bar>i{display:block;height:100%;border-radius:20px;width:0;
  background:var(--success);transition:width .35s ease,background .2s}
.sysh-bar>i.warn{background:var(--warning)}
.sysh-bar>i.crit{background:var(--danger)}
/* pasek bez pomiaru — nie udajemy wartosci, ktorej nie mamy */
.sysh-bar.na{background:repeating-linear-gradient(90deg,var(--line) 0 6px,transparent 6px 12px)}
.sysh-row.na .val{color:var(--mut)}
/* wiersz load average — bez paska, pelna szerokosc */
.sysh-load{display:flex;align-items:center;gap:14px;margin-top:16px;padding-top:14px;
  border-top:1px solid var(--line);font-size:13px}
.sysh-load .lbl{font-weight:600;color:var(--body)}
.sysh-load .nums{display:flex;gap:16px;margin-left:auto;font-variant-numeric:tabular-nums}
.sysh-load .nums span{color:var(--head);font-weight:700}
.sysh-load .nums span i{color:var(--mut);font-style:normal;font-weight:600;
  font-size:11px;text-transform:uppercase;letter-spacing:.5px;margin-right:5px}
.sysh-err{color:var(--danger);font-size:13px;padding:14px 0 2px}
@media(max-width:600px){.sysh-row{grid-template-columns:92px 1fr 46px;gap:10px}}

/* ---- My Kingdom (uklad z mockupu) ---- */
.mk-tiles{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:16px;align-items:stretch}
@media(max-width:1100px){.mk-tiles{grid-template-columns:1fr}}
.mk-tile{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:14px 16px;display:flex;gap:12px;align-items:flex-start;box-shadow:var(--sh)}
.mk-tile .ti{font-size:18px;line-height:1;margin-top:2px}
.mk-tile .tk{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--mut);font-weight:700}
.mk-tile .tv{color:var(--head);font-size:17px;font-weight:700;line-height:1.25;margin-top:3px}
.mk-tile .ts{color:var(--mut);font-size:11.5px;margin-top:2px}
.mk-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px;align-items:stretch}
/* Equal-height cards WITHOUT inner scrollbars: content is row-capped (6 rows) in JS so
   it fits, and align-items:stretch makes every card as tall as the tallest in the row.
   The trailing "View all →" button stays pinned to the bottom of each card. */
.mk-cols>.card{display:flex;flex-direction:column;min-height:0}
.mk-cols>.card>.card-b{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}
.mk-cols>.card>.card-b>div:first-child{flex:1 1 auto;min-height:0}
.mk-cols>.card>.card-b>.btn{margin-top:auto}
@media(max-width:1200px){
  .mk-cols{grid-template-columns:1fr;align-items:start}
}
/* "last 24h" timeframe chip in each My Kingdom card header */
.card-h .mk-chip{display:inline-block;vertical-align:middle;margin-left:8px;font-size:10.5px;
  font-weight:700;letter-spacing:.3px;text-transform:none;color:var(--mut);background:var(--line);
  border-radius:20px;padding:2px 9px}
/* per-row power value + neutral (no-change) delta marker in MK lists */
.mk-row .mk-dpow{font-size:12.5px;font-weight:600;color:var(--head);white-space:nowrap}
.mk-row .mk-pos,.mk-row .mk-neg,.mk-row .mk-flat{min-width:64px;text-align:right;white-space:nowrap}
.mk-flat{color:var(--mut);font-weight:700;font-size:12.5px}
/* click affordances for governor nicks / alliance tags */
.nicklink{cursor:pointer}
.nicklink:hover{color:var(--primary);text-decoration:underline}
.allilink{cursor:pointer}
.allilink:hover{text-decoration:underline;filter:brightness(1.12)}
.mk-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.mk-row:last-child{border-bottom:0}
.mk-row .rk{width:20px;color:var(--mut);font-weight:700;font-size:12.5px;text-align:right}
.mk-pos{color:var(--success);font-weight:700;font-size:12.5px}
.mk-neg{color:var(--danger);font-weight:700;font-size:12.5px}
.mk-note{background:var(--line);border-radius:var(--r);padding:11px 13px;
  font-size:12.5px;color:var(--body);line-height:1.5}
.mk-note b{color:var(--head)}

/* ---- powloka wg grafiki: sidebar, ikony, topbar ---- */
.sidebar a .ic{width:18px;height:18px;stroke-width:1.9;flex:0 0 18px;color:var(--mut)}
.sidebar a{display:flex;align-items:center;gap:12px;padding:11px 14px;margin:2px 10px;
  border-radius:11px;color:var(--txt);font-size:14px;font-weight:500;cursor:pointer}
.sidebar a:hover{background:var(--hover);color:var(--head)}
.sidebar a:hover .ic{color:var(--head)}
/* aktywna pozycja: fioletowe tlo z zaokragleniem, jak na mockupie */
.sidebar a.active{background:color-mix(in srgb,var(--primary) 18%,transparent);
  color:#cfc9ff;font-weight:600}
.sidebar a.active .ic{color:var(--primary)}
.sidebar .sect{font-size:10.5px;letter-spacing:1.1px;text-transform:uppercase;
  color:var(--mut2);font-weight:700;margin:20px 24px 8px}
/* „coming soon" — czerwona pigulka konturowa */
.pill-soon{margin-left:auto;font-size:9px;letter-spacing:.6px;text-transform:uppercase;
  font-weight:800;color:var(--danger);border:1px solid var(--danger);
  border-radius:999px;padding:2px 7px;white-space:nowrap}
/* kafle informacyjne w JEDNEJ karcie z separatorami — jak na grafice */
.mk-tiles{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--sh);display:flex;align-items:stretch;gap:0;padding:4px}
.mk-tiles .mk-tile{background:none;border:0;box-shadow:none;flex:1;
  border-right:1px solid var(--line);border-radius:0}
.mk-tiles .mk-tile:last-of-type{border-right:0}
.mk-tiles > a.btn{align-self:center;margin:0 14px}
@media(max-width:1100px){.mk-tiles{flex-direction:column}
  .mk-tiles .mk-tile{border-right:0;border-bottom:1px solid var(--line)}}
.mk-tile .ti{width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;
  border-radius:10px;border:1px solid color-mix(in srgb,var(--primary) 40%,transparent);
  color:var(--primary);background:color-mix(in srgb,var(--primary) 10%,transparent)}
.mk-tile .ti i{width:17px;height:17px}

/* ---- Recent activity feed (My Kingdom, 3. kolumna) ---- */
.act-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.act-row:last-child{border-bottom:0}
.act-ic{width:34px;height:34px;flex:0 0 34px;border-radius:10px;display:grid;place-items:center;
  background:var(--primary-soft);color:var(--primary)}
.act-ic i{width:17px;height:17px}
.act-row b{display:block;color:var(--head);font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.act-s{display:block;color:var(--mut);font-size:11.5px;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.act-w{color:var(--mut);font-size:11.5px;white-space:nowrap}
/* ---- alliance activity mini bars ---- */
.mbars{display:inline-flex;align-items:flex-end;gap:2px;height:22px}
.mbars i{width:4px;background:var(--primary);border-radius:1px;opacity:.85;display:block}

/* ===== Settings / Modules (grafika #2) ===== */
.settabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:24px;overflow-x:auto}
.settabs button{background:none;border:none;color:var(--body);font:600 14px/1 inherit;padding:13px 15px;cursor:pointer;
  border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:flex;align-items:center}
.settabs button:hover{color:var(--head)}
.settabs button.active{color:var(--primary);border-bottom-color:var(--primary)}
.setbanner{display:flex;align-items:center;gap:11px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:14px 18px;margin-bottom:20px;color:var(--body);font-size:14px;box-shadow:var(--sh)}
.setbanner i{width:18px;height:18px;color:var(--info);flex:0 0 18px}
.setbanner-link{margin-left:auto;color:var(--primary);font-weight:600;cursor:pointer;white-space:nowrap}
.modcats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:1200px){.modcats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.modcats{grid-template-columns:1fr}}
.modcat{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh);padding:18px 18px 10px}
.modcat-h{display:flex;align-items:flex-start;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:6px}
.modcat-ic{width:38px;height:38px;flex:0 0 38px;border-radius:11px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary)}
.modcat-ic i{width:19px;height:19px}
.modcat-h b{color:var(--head);font-size:15px;display:block}
.modcat-d{color:var(--mut);font-size:12px;display:block;margin-top:3px;line-height:1.4}
.modcat-n{font-size:11px;font-weight:700;color:var(--mut);background:var(--th);border:1px solid var(--line);
  border-radius:20px;padding:4px 10px;white-space:nowrap;align-self:flex-start}
.modlist{display:flex;flex-direction:column}
.modrow{display:flex;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line)}
.modrow:last-child{border-bottom:0}
.modrow-ic{width:28px;height:28px;flex:0 0 28px;border-radius:8px;display:grid;place-items:center;background:var(--th);color:var(--body)}
.modrow-ic i{width:15px;height:15px}
.modrow-n{flex:1;color:var(--txt);font-size:13.5px;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mstat{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:20px;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.mstat:before{content:"";width:6px;height:6px;border-radius:50%}
.mstat.active{background:rgba(34,197,94,.14);color:var(--success)} .mstat.active:before{background:var(--success)}
.mstat.beta{background:rgba(245,158,11,.15);color:var(--warning)} .mstat.beta:before{background:var(--warning)}
.mstat.soon{background:var(--th);color:var(--mut)} .mstat.soon:before{background:var(--mut)}
.mstat.plan{background:var(--primary-soft);color:var(--primary)} .mstat.plan:before{background:var(--primary)}
.modgear{background:none;border:1px solid var(--line);color:var(--mut);width:30px;height:30px;border-radius:8px;
  display:grid;place-items:center;cursor:pointer;flex:0 0 30px;transition:.12s}
.modgear:hover{color:var(--primary);border-color:var(--primary)}
.modgear:disabled{opacity:.35;cursor:not-allowed}
.modgear i,.modgear svg{width:15px;height:15px;display:block}
.modlegend{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-top:24px;font-size:12.5px;color:var(--body)}
.modlegend .ld{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:7px;vertical-align:middle}
.modlegend .ld.active{background:var(--success)} .modlegend .ld.beta{background:var(--warning)}
.modlegend .ld.soon{background:var(--mut)} .modlegend .ld.plan{background:var(--primary)}
.modlegend a{cursor:pointer}

/* ---- module config drawer ---- */
.drw-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}
.drw-head h3{margin:0;font-size:19px;color:var(--head)}
.drw-head .close{position:static;background:none;border:none;color:var(--mut);font-size:22px;cursor:pointer;line-height:1}
.drw-toggle{display:inline-flex;align-items:center;gap:11px;margin-bottom:20px;cursor:pointer;user-select:none}
.sw{width:40px;height:23px;border-radius:20px;background:var(--line2);position:relative;transition:.15s;flex:0 0 40px}
.sw i{position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.sw.on{background:var(--success)} .sw.on i{left:20px}
.drw-tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:20px}
.drw-tab{background:none;border:none;color:var(--mut);font:600 13px/1 inherit;padding:9px 11px;cursor:pointer;
  border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.drw-tab:hover{color:var(--head)}
.drw-tab.active{color:var(--primary);border-bottom-color:var(--primary)}
.drw-sec{font-size:11.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--head);font-weight:700;margin:22px 0 12px}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:560px){.f2{grid-template-columns:1fr}}
.f2 .field input,.f2 .field select{width:100%}
.fhint{font-size:11px;color:var(--mut);margin-top:4px}
.chk{display:flex;align-items:center;gap:10px;padding:7px 0;color:var(--txt);font-size:13.5px;cursor:pointer}
.chk input{width:16px;height:16px;accent-color:var(--primary);flex:0 0 16px}
.prevbox{display:flex;align-items:center;gap:12px;background:var(--th);border:1px solid var(--line);border-radius:12px;padding:13px 15px}
.prev-ic{width:36px;height:36px;flex:0 0 36px;border-radius:10px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary)}
.prev-ic i{width:18px;height:18px}
.prevbox b{display:block;color:var(--head);font-size:13.5px}
.drw-foot{display:flex;align-items:center;gap:10px;margin-top:26px;padding-top:18px;border-top:1px solid var(--line)}

/* ===== Admin Dashboard (grafika #2 dol) ===== */
.adm-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap}
.adm-head h2{font-size:24px}
.adm-head .crumb{font-size:12.5px;color:var(--mut);margin-top:3px}
.adm-head-r{display:flex;align-items:center;gap:10px}
.daterange{font-size:12.5px;color:var(--body);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 13px;white-space:nowrap}
.adm-grid{display:grid;grid-template-columns:1.15fr 1.15fr 1fr;gap:20px;align-items:start}
@media(max-width:1200px){.adm-grid{grid-template-columns:1fr}}
.adm-grid table{min-width:0}
.adm-grid th,.adm-grid td{padding:11px 16px}
.pbar{display:inline-block;width:84px;height:6px;border-radius:6px;background:var(--line);overflow:hidden;vertical-align:middle;margin-right:8px}
.pbar>i{display:block;height:100%;background:var(--primary);border-radius:6px}

/* ===== Avatar dropdown ===== */
.avmenu{position:relative}
.avdrop{position:absolute;right:0;top:46px;width:230px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;box-shadow:var(--sh-lg);padding:8px;z-index:50}
.avdrop-head{display:flex;align-items:center;gap:10px;padding:8px 8px 12px;border-bottom:1px solid var(--line);margin-bottom:6px}
.avdrop-head .avatar{width:38px;height:38px;flex:0 0 38px}
.avdrop-head b{display:block;color:var(--head);font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avdrop-head span{display:block;color:var(--mut);font-size:11.5px}
.avdrop a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:var(--txt);
  font-size:13.5px;font-weight:500;cursor:pointer}
.avdrop a:hover{background:var(--hover);color:var(--head)}
.avdrop a i{width:16px;height:16px;color:var(--mut)}
.avdrop a:hover i{color:var(--primary)}
.avdrop-sep{height:1px;background:var(--line);margin:6px 4px}

/* ===== Account pages (Profile/Subscription/Billing/Security) ===== */
.acct-grid{display:grid;grid-template-columns:1fr 320px;gap:20px;align-items:start}
@media(max-width:1000px){.acct-grid{grid-template-columns:1fr}}
.prof-head{display:flex;align-items:center;gap:16px}
.prof-av{position:relative;width:66px;height:66px;flex:0 0 66px;border-radius:50%;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--primary),#9488FF);color:#fff;font-weight:800;font-size:26px}
.prof-upload{position:absolute;right:-2px;bottom:-2px;width:26px;height:26px;border-radius:50%;border:2px solid var(--card);
  background:var(--primary);color:#fff;display:grid;place-items:center;cursor:pointer}
.prof-upload i{width:13px;height:13px}
.kchips{display:flex;flex-direction:column;gap:8px}
.kchip{display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;
  color:var(--txt);font-size:13px;font-weight:600}
.kchip.active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}
.kchip i{margin-left:auto;font-style:normal;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--mut);font-weight:700}
.keyrow{display:flex;align-items:center;gap:10px;justify-content:space-between}
.keyrow code{font-size:12.5px;color:var(--txt);background:var(--th);padding:5px 9px;border-radius:7px}
.sessrow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}
.sessrow:last-child{border-bottom:0}
.sessrow b{display:block;color:var(--head);font-size:13px}
.sessrow .mut{font-size:11.5px}
.plan-current{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.paycard{display:flex;align-items:center;gap:12px}
.paycard i{width:30px;height:30px;color:var(--primary)}
.paycard b{display:block;color:var(--head);font-size:13.5px}
.plan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:12px}
@media(max-width:900px){.plan-grid{grid-template-columns:1fr}}
.plan-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:24px;position:relative;box-shadow:var(--sh)}
.plan-card.feat{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),0 12px 32px rgba(124,108,248,.22)}
.plan-badge{position:absolute;top:-11px;left:24px;background:var(--primary);color:#fff;font-size:10.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.5px;padding:3px 10px;border-radius:20px}
.plan-t{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--mut);font-weight:700}
.plan-p{font-size:34px;font-weight:800;color:var(--head);margin:8px 0 4px}
.plan-p small{font-size:14px;color:var(--mut);font-weight:500}
.plan-card ul{list-style:none;padding:0;margin:14px 0 20px}
.plan-card li{padding:7px 0;border-bottom:1px solid var(--line);color:var(--body);font-size:13.5px}
.plan-card li:before{content:"\2713";color:var(--success);font-weight:800;margin-right:9px}

/* ===== Modals (Upgrade + Onboarding) ===== */
.modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:20px}
.modal.hidden{display:none}
.modal-bg{position:absolute;inset:0;background:rgba(5,8,16,.66);backdrop-filter:blur(2px)}
.modal-card{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--r-modal);
  box-shadow:var(--sh-lg);padding:32px;width:min(540px,95vw);max-height:92vh;overflow-y:auto}
.modal-x{position:absolute;right:18px;top:16px;background:none;border:none;color:var(--mut);font-size:22px;cursor:pointer;line-height:1}
.up-crown{width:56px;height:56px;margin:4px auto 16px;border-radius:16px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--primary),#9488FF);color:#fff;box-shadow:0 8px 24px rgba(124,108,248,.4)}
.up-crown i{width:28px;height:28px}
.up-feats{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;margin-bottom:24px;
  background:var(--th);border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.up-feat{display:flex;align-items:center;gap:8px;color:var(--body);font-size:13px}
.up-feat i{width:15px;height:15px;color:var(--danger);flex:0 0 15px}
.up-actions{display:flex;gap:10px}
.up-actions .btn{flex:1;justify-content:center}
/* onboarding */
.ob-card{width:min(560px,95vw)}
.ob-steps{display:flex;gap:8px;margin-bottom:22px}
.ob-step{flex:1;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--mut);
  padding:9px 10px;border-radius:10px;background:var(--th);border:1px solid var(--line);white-space:nowrap}
.ob-step span{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:11px;
  background:var(--line2);color:var(--body)}
.ob-step.done{color:var(--success)} .ob-step.done span{background:var(--success);color:#fff}
.ob-step.act{color:var(--primary);border-color:var(--primary)} .ob-step.act span{background:var(--primary);color:#fff}
.ob-checks{display:flex;flex-direction:column;gap:2px;margin-bottom:20px}
.ob-row{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px}
.ob-row:hover{background:var(--hover)}
.ob-row i{width:18px;height:18px;color:var(--mut2);flex:0 0 18px}
.ob-row span{flex:1;color:var(--txt);font-size:13.5px}
.ob-row em{font-style:normal;font-size:11.5px;color:var(--mut)}
.ob-row.done i{color:var(--success)} .ob-row.done em{color:var(--success)}
.ob-row.act i{color:var(--primary)} .ob-row.act em{color:var(--primary)}
.ob-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:16px;border-top:1px solid var(--line)}

/* ==== redesign additions (coming-soon banners, growth chip) ==== */
/* coming-soon banner inside a WIP section (Governor / Flag / Ark planner) */
.cs-banner{display:flex;align-items:center;gap:10px;background:var(--primary-soft);
  border:1px solid var(--primary-soft2);color:var(--head);font-weight:600;font-size:13.5px;
  border-radius:var(--r);padding:12px 16px;margin-bottom:18px}
.cs-banner i{width:18px;height:18px;color:var(--primary);flex:0 0 18px}

/* Governor lookup placeholder icon */
.gov-ic{width:54px;height:54px;margin:6px auto 8px;border-radius:16px;display:flex;align-items:center;justify-content:center;
  background:var(--primary-soft);color:var(--primary)}
.gov-ic i{width:26px;height:26px}

/* Rankings "Top Growing" featured chip */
.growthchip{display:inline-flex;align-items:center;gap:7px;cursor:pointer;white-space:nowrap;
  font:700 13px/1 inherit;padding:10px 15px;border-radius:10px;
  border:1px solid var(--primary-soft2);background:var(--primary-soft);color:var(--primary);transition:.15s}
.growthchip i{width:15px;height:15px}
.growthchip:hover{filter:brightness(1.05)}
.growthchip.on{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 4px 14px var(--primary-soft2)}
/* Δpower pill shown in Rankings rows when Top Growing sort is active */
.dpill{display:inline-block;font-size:11px;font-weight:800;padding:2px 8px;border-radius:20px;margin-left:6px;
  background:var(--line);color:var(--mut)}
.dpill.up{background:rgba(34,197,94,.16);color:var(--success)}
.dpill.down{background:var(--danger-soft);color:var(--danger)}

/* ---- Grinder Workers health list + detail modal (namespaced, self-contained) ---- */
.gw-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.gw-row:last-child{border-bottom:none}
.gw-dot{width:9px;height:9px;border-radius:50%;flex:0 0 9px;display:inline-block}
.gw-updot{width:8px;height:8px;border-radius:50%;display:inline-block;vertical-align:middle;margin-right:6px}
.gw-name{font-weight:700;color:var(--head);min-width:34px}
.gw-ch{font-size:12px;white-space:nowrap}
.gw-view{margin-left:auto;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.gw-view i{width:14px;height:14px}
.gw-modal-h{display:flex;align-items:center;gap:10px;margin:0 34px 18px 0;flex-wrap:wrap}
.gw-prog{margin-bottom:14px}
.gw-bar{height:8px;border-radius:20px;background:var(--line);overflow:hidden;margin-top:8px}
.gw-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--primary),var(--primary-d));border-radius:20px}
.gw-log{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px 14px;max-height:260px;overflow:auto;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.6;color:var(--txt);white-space:pre-wrap;word-break:break-word}
.gw-log>div{padding:1px 0}

/* ---- commanders (governor drawer) ---- */
.cmd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin-top:10px}
.cmd-card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 11px 11px}
.cmd-top{display:flex;gap:10px;align-items:flex-start}
.cmd-portrait{position:relative;width:54px;height:54px;border-radius:9px;overflow:hidden;flex:0 0 54px;background:var(--bg)}
.cmd-hero{width:100%;height:100%;object-fit:cover;display:block}
.cmd-lvl{position:absolute;right:0;bottom:0;background:rgba(0,0,0,.72);color:#fff;font-size:10.5px;font-weight:700;line-height:1;padding:2px 4px;border-top-left-radius:6px}
.cmd-meta{min-width:0;flex:1}
.cmd-name{font-weight:700;color:var(--head);font-size:13.5px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmd-sub{display:flex;align-items:center;gap:8px;margin-top:2px;flex-wrap:wrap}
.cmd-star{color:#e8b23a;font-size:11px;letter-spacing:1px}
.cmd-kc{color:var(--mut);font-size:11px}
.cmd-skills{display:flex;gap:4px;margin-top:6px}
.cmd-sk{width:19px;height:19px;border-radius:5px;background:var(--bg);border:1px solid var(--line2);color:var(--head);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.cmd-icons{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.cmd-eq{width:28px;height:28px;border-radius:6px;background:var(--bg);border:1px solid var(--line2);object-fit:cover;cursor:help}
.cmd-eq.wb{border-style:dashed}
.cmd-tals{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.cmd-tal{font-size:10.5px;color:var(--mut);background:var(--bg);border:1px solid var(--line);border-radius:5px;padding:2px 6px;line-height:1.3}

/* ---- commander detail sheet ---- */
.cmd-card{cursor:pointer;transition:border-color .12s,box-shadow .12s}
.cmd-card:hover{box-shadow:0 2px 10px rgba(0,0,0,.10)}
.cmd-card.active{box-shadow:0 0 0 2px var(--primary)}
.cmd-eq.ph{display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--mut)}
.cmd-detail.hidden{display:none}
.cmd-sheet{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-top:10px}
.sh-hd{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--head);padding-bottom:8px;border-bottom:1px solid var(--line)}
.sh-hd .mut{font-size:12px;font-weight:400}
.sh-x{margin-left:auto;cursor:pointer;color:var(--mut);font-size:14px;padding:0 4px}
.sh-x:hover{color:var(--head)}
.sh-t{font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--mut);margin:12px 0 6px}
.eqrow{display:flex;gap:10px;padding:8px 0;border-bottom:1px dashed var(--line)}
.eqrow:last-child{border-bottom:none}
.eqi{width:38px;height:38px;flex:0 0 38px;border-radius:7px;background:var(--bg);border:1px solid var(--line2);object-fit:cover}
.eqi.ph{display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--mut)}
.eqbody{min-width:0;flex:1}
.eqhd{font-size:12.5px;color:var(--head)}
.eqhd .mut{font-weight:400;font-size:11.5px}
.bls{display:flex;flex-wrap:wrap;gap:4px 8px;margin-top:5px}
.bl{font-size:11.5px;color:var(--head);display:inline-flex;gap:5px;align-items:baseline}
.bl span{color:var(--mut)}
.bl.ico span{color:var(--primary);opacity:.8}
.bl i{font-size:10px;font-style:normal}
.afx{font-size:11.5px;margin-top:5px;color:var(--head)}
.afx .mut{font-weight:400}

/* ================= commander detail modal ================= */
.cmdm{position:fixed;inset:0;z-index:1200;display:flex;align-items:flex-start;justify-content:center;padding:28px 16px}
.cmdm.hidden{display:none}
.cmdm-bg{position:absolute;inset:0;background:rgba(10,12,20,.62);backdrop-filter:blur(2px)}
.cmdm-panel{position:relative;z-index:1;width:100%;max-width:980px;max-height:calc(100vh - 56px);overflow-y:auto;
  background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 22px 24px;box-shadow:0 24px 70px rgba(0,0,0,.45)}
.cmdm-x{position:absolute;top:14px;right:14px;background:var(--bg);border:1px solid var(--line2);color:var(--mut);
  border-radius:8px;padding:6px 12px;font-size:13px;cursor:pointer;font-weight:600}
.cmdm-x:hover{color:var(--head)}
/* header */
.cmdm-head{display:flex;align-items:center;gap:16px;padding-right:90px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.cmdm-por{width:66px;height:66px;flex:0 0 66px;border-radius:12px;overflow:hidden;background:var(--bg)}
.cmdm-por img{width:100%;height:100%;object-fit:cover;display:block}
.cmdm-nm{font-size:21px;font-weight:800;color:var(--head);line-height:1.1}
.cmdm-rar{font-size:12px;font-weight:700;vertical-align:middle;margin-left:6px}
.cmdm-lv{font-size:14px;color:var(--mut);margin-top:5px;font-weight:600}
.cmdm-stars{color:#e8b23a;font-size:15px;letter-spacing:2px;margin-left:6px}
.cmdm-gov{margin-left:auto;text-align:right;font-size:12.5px;line-height:1.5}
.cmdm-gov .g-nm{font-size:15px;font-weight:700;color:var(--head)}
/* middle: equipment + armament */
.cmdm-mid{display:grid;grid-template-columns:minmax(280px,1fr) minmax(320px,1.15fr);gap:22px;padding:20px 0;border-bottom:1px solid var(--line)}
.dia-wrap{position:relative;width:100%;max-width:300px;margin:0 auto;aspect-ratio:1/1.12}
.dia{position:absolute;width:23%;aspect-ratio:1/1;transform:translate(-50%,-50%) rotate(45deg);
  border:2.5px solid var(--line2);border-radius:12px;background:var(--bg);overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.dia.empty{opacity:.5;border-style:dashed}
.dia-in{position:absolute;inset:0;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center}
.dia-in img{width:82%;height:82%;object-fit:contain}
.dia-e{color:var(--mut);font-weight:800;font-size:18px}
.actsets{text-align:center;font-size:12px;color:var(--mut);letter-spacing:.5px;margin-top:10px}
.actsets b{color:var(--gold);letter-spacing:0}
/* armament */
.arm-form{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:12px;color:var(--primary);font-size:14px;font-weight:700}
.arm-form img{width:26px;height:26px;object-fit:contain}
.wb-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.wb-card{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:11px 13px}
.wb-slot{font-size:11px;color:var(--mut);font-weight:600;margin-bottom:2px}
.wb-name{font-size:14px;font-weight:700;color:var(--head);margin-bottom:8px;line-height:1.2}
.wb-b{display:flex;justify-content:space-between;align-items:center;font-size:13px;margin:3px 0}
.wb-b span{color:var(--mut)}
.wb-b b{color:var(--primary);font-weight:700}
.wb-afs{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.wb-af{font-size:11.5px;font-weight:600;color:var(--head);background:var(--card);border:1px solid var(--line2);border-radius:6px;padding:3px 9px}
/* total buffs */
.cmdm-buffs{padding-top:16px}
.tb-tabs{display:flex;gap:8px;justify-content:center;margin-bottom:4px}
.tb-tab{background:var(--bg);border:1px solid var(--line2);color:var(--mut);border-radius:20px;padding:5px 15px;font-size:13px;font-weight:600;cursor:pointer}
.tb-tab.on{background:var(--primary);border-color:var(--primary);color:#fff}
.tb-h{text-align:center;font-size:11px;letter-spacing:1px;color:var(--mut);margin:12px 0 10px;font-weight:700}
.tb-row{display:grid;grid-template-columns:120px 1fr;gap:14px;padding:10px 4px;border-top:1px solid var(--line);align-items:baseline}
.tb-cat{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:800;color:var(--head);letter-spacing:.3px}
.tb-ic{width:22px;height:22px;object-fit:contain;vertical-align:middle;flex:0 0 22px}
.tb-vals{display:flex;flex-wrap:wrap;gap:6px 18px}
.tb-item{font-size:13.5px;color:var(--head);white-space:nowrap}
.tb-item .mut{font-weight:500}
.tb-item b{font-weight:700}
.bplus{color:#3ec46d;font-weight:700;font-size:12px}
@media(max-width:720px){.cmdm-mid{grid-template-columns:1fr}.tb-row{grid-template-columns:1fr}}

/* ---- governor avatar (drawer header) ---- */
.gov-hd-row{display:flex;align-items:center;gap:12px}
.gov-av{position:relative;width:52px;height:52px;flex:0 0 52px;border-radius:50%;overflow:hidden;background:var(--bg);box-shadow:0 0 0 2px var(--line2)}
.gov-av-img{width:100%;height:100%;object-fit:cover;display:block}
.gov-av.framed{width:58px;height:58px;flex:0 0 58px;overflow:visible;background:none;box-shadow:none;border-radius:0}
.gov-av.framed .gov-av-img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%}
.gov-av-frame{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;z-index:2;pointer-events:none}

/* iconic-tier Roman numeral badge on each equipment diamond (like in-game) */
.dia-tier{position:absolute;bottom:0;right:0;transform:rotate(-45deg) translate(3px,3px);
  background:linear-gradient(#f2c94c,#d99a1f);color:#2a1c00;font-size:10px;font-weight:800;
  min-width:16px;height:16px;line-height:16px;text-align:center;border-radius:5px;
  border:1px solid rgba(0,0,0,.35);box-shadow:0 1px 3px rgba(0,0,0,.5);z-index:3;letter-spacing:.3px}

.cmdm-skills{display:flex;align-items:center;gap:5px;margin-top:7px}
.cmdm-skills .mut{font-size:11px;margin-right:3px;text-transform:uppercase;letter-spacing:.3px}

/* augment (inscription) hover tooltip */
.wb-af{position:relative;cursor:help}
.wb-tip{display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);
  width:250px;background:#0e1420;border:1px solid var(--line2);border-radius:9px;padding:10px 12px;
  font-size:11.5px;font-weight:400;line-height:1.45;color:var(--head);text-transform:none;letter-spacing:0;
  box-shadow:0 8px 28px rgba(0,0,0,.55);z-index:20;white-space:normal;text-align:left}
.wb-tip b{display:block;color:var(--gold);font-size:12.5px;margin-bottom:4px}
.wb-tip::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);
  border:6px solid transparent;border-top-color:#0e1420}
.wb-af:hover .wb-tip{display:block}


/* ===== Accessibility & small screens (2026-07-26) ==========================
   Contrast fixes measured against the card background, not eyeballed:
   dark  --mut #64748B -> #94A3B8 (3.59:1 -> 5.8:1 on #131D31)
   light --mut #A5A3AE -> #6E6B7B (2.49:1 -> 4.9:1 on #FFFFFF)              */
:root{ --mut:#94A3B8; }
:root[data-theme="light"]{ --mut:#6E6B7B; }

a:focus-visible, button:focus-visible, [role="link"]:focus-visible,
[tabindex]:focus-visible, tr[onclick]:focus-visible, .iconbtn:focus-visible,
.sidebar a:focus-visible, .chip:focus-visible, .btn:focus-visible{
  outline:2px solid var(--primary); outline-offset:2px; border-radius:6px;
}

.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--card);
  color:var(--head);padding:10px 14px;border-radius:0 0 10px 0;border:1px solid var(--line)}
.skip-link:focus{left:0}

.navtoggle{display:none;align-items:center;gap:8px;margin:8px;padding:8px 12px;
  border:1px solid var(--line2);border-radius:10px;background:var(--card);
  color:var(--txt);cursor:pointer}

@media (max-width:900px){
  .sidebar{max-height:0;overflow:hidden;transition:max-height .2s;padding-top:0;padding-bottom:0}
  .sidebar.open{max-height:80vh;overflow:auto;padding-top:8px;padding-bottom:8px}
  .navtoggle{display:inline-flex}
}

@media (max-width:700px){
  .g-4{grid-template-columns:repeat(2,1fr)}
  .statbig{min-height:auto}
  .statbig .v{font-size:26px}
  .mk-tiles{grid-template-columns:1fr}
  .tbl-wrap table th:first-child, .tbl-wrap table td:first-child{
    position:sticky;left:0;background:var(--card);z-index:1}
}


/* Sortable table headers (rankings) */
th[data-sort]{cursor:pointer;user-select:none;white-space:nowrap}
th[data-sort]:hover{color:var(--head)}
th[data-sort] .sarrow{display:inline-block;width:10px;opacity:.35;font-size:10px}
th[data-sort].sorted .sarrow{opacity:1;color:var(--primary)}
.dpill.flat{color:var(--mut)}
