/* =====================================================================
   Impact Tech Group — control plane
   Palette taken from the logo: slate #2B363C, lime #B1E914, white.
   Lime is a signal colour, not a text colour: it carries buttons and
   accents, always with slate text on top of it.
   ===================================================================== */
:root{
  --slate:#2B363C;
  --slate-900:#1E272C;
  --slate-700:#3B4950;
  --lime:#B1E914;
  --lime-700:#93C40D;
  --lime-soft:#F1FBD6;
  --ink:#1E272C;
  --muted:#6B7A82;
  --line:#E2E8EA;
  --paper:#F5F8F9;
  --danger:#D33A3A;
  --warn:#C98A0E;
  --ok:#2E8B57;
  --radius:12px;
}
*{box-sizing:border-box;}
body{margin:0;font-family:"Segoe UI",system-ui,-apple-system,sans-serif;background:var(--paper);color:var(--ink);font-size:14px;}
a{color:var(--slate);}
h1,h2,h3,h4{margin:0;}

.btn{display:inline-block;border:1px solid transparent;border-radius:9px;padding:9px 16px;font-size:14px;
  font-weight:600;cursor:pointer;text-decoration:none;font-family:inherit;line-height:1.2;}
.btn-lime{background:var(--lime);border-color:var(--lime);color:var(--slate-900);}
.btn-lime:hover{background:var(--lime-700);border-color:var(--lime-700);color:var(--slate-900);}
.btn-slate{background:var(--slate);border-color:var(--slate);color:#fff;}
.btn-slate:hover{background:var(--slate-900);color:#fff;}
.btn-ghost{background:#fff;border-color:var(--line);color:var(--ink);}
.btn-ghost:hover{border-color:var(--slate);color:var(--slate);}
.btn-sm{padding:6px 12px;font-size:13px;}
.btn-danger{background:#fff;border-color:var(--danger);color:var(--danger);}
.btn-danger:hover{background:var(--danger);color:#fff;}

/* ------------------------------------------------------------- chrome */
.topbar{background:var(--slate);border-bottom:3px solid var(--lime);}
.topbar-inner{max-width:1280px;margin:0 auto;padding:0 20px;display:flex;align-items:center;gap:22px;min-height:62px;}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;}
.brand img{height:30px;}
.brand .mark{width:30px;height:30px;border-radius:7px;background:var(--lime);color:var(--slate-900);
  display:grid;place-items:center;font-weight:800;font-size:15px;}
.brand .name{color:#fff;font-weight:700;font-size:15px;letter-spacing:.2px;}
.brand .name span{color:var(--lime);}
.nav{display:flex;gap:3px;list-style:none;margin:0;padding:0;flex:1;}
.nav a{color:rgba(255,255,255,.72);text-decoration:none;font-size:14px;padding:8px 13px;border-radius:8px;display:block;}
.nav a:hover{color:#fff;background:rgba(255,255,255,.09);}
.nav a.active{background:var(--lime);color:var(--slate-900);font-weight:600;}
.topright{display:flex;align-items:center;gap:14px;}
.topright .who{line-height:1.15;text-align:right;color:#fff;}
.topright .who span{display:block;font-size:11px;color:rgba(255,255,255,.55);text-transform:capitalize;}
.navtoggle{display:none;background:none;border:0;color:#fff;font-size:22px;cursor:pointer;}
@media (max-width:900px){
  .navtoggle{display:block;order:3;margin-left:auto;}
  .nav{display:none;order:4;flex-basis:100%;flex-direction:column;padding-bottom:10px;}
  .nav.open{display:flex;}
  .topright .who{display:none;}
}

.page{max-width:1280px;margin:0 auto;padding:24px 20px 60px;}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:20px;}
.page-head h1{font-size:23px;font-weight:700;letter-spacing:-.3px;}
.page-head .meta{color:var(--muted);font-size:14px;margin:4px 0 0;}

/* -------------------------------------------------------------- cards */
.grid{display:grid;gap:16px;}
.cols-4{grid-template-columns:repeat(4,1fr);}
.cols-3{grid-template-columns:repeat(3,1fr);}
.cols-2{grid-template-columns:repeat(2,1fr);}
@media (max-width:1000px){.cols-4{grid-template-columns:1fr 1fr;}.cols-3{grid-template-columns:1fr 1fr;}}
@media (max-width:640px){.cols-4,.cols-3,.cols-2{grid-template-columns:1fr;}}

.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;}
.card h3{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);font-weight:700;margin-bottom:10px;}
.stat{font-size:28px;font-weight:700;letter-spacing:-.5px;line-height:1.1;}
.stat.sm{font-size:20px;}
.stat-label{color:var(--muted);font-size:13px;margin-top:4px;}
.accent-lime{border-left:4px solid var(--lime);}
.accent-slate{border-left:4px solid var(--slate);}
.accent-danger{border-left:4px solid var(--danger);}
.accent-warn{border-left:4px solid var(--warn);}

/* ------------------------------------------------------------- tables */
.tbl{width:100%;border-collapse:collapse;font-size:14px;}
.tbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);
  border-bottom:1px solid var(--line);padding:9px 10px;font-weight:700;}
.tbl td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:top;}
.tbl tr:last-child td{border-bottom:0;}
.tbl tbody tr:hover{background:var(--paper);}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums;}
.when{color:var(--muted);font-size:12px;}

.tag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
  padding:3px 9px;border-radius:20px;background:var(--paper);color:var(--muted);}
.tag.ok{background:var(--lime-soft);color:#4c6b06;}
.tag.live{background:var(--lime);color:var(--slate-900);}
.tag.warn{background:#FBF0D8;color:#8a6608;}
.tag.bad{background:#FBE5E5;color:var(--danger);}

/* -------------------------------------------------------------- forms */
.field{margin-bottom:14px;}
.field label{display:block;font-weight:600;font-size:13px;margin-bottom:4px;}
.field .hint{font-size:12px;color:var(--muted);margin-top:3px;}
.field input,.field select,.field textarea{width:100%;padding:9px 11px;border:1px solid var(--line);
  border-radius:8px;font-size:14px;font-family:inherit;background:#fff;color:var(--ink);}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--lime);outline-offset:1px;border-color:var(--lime-700);}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0 16px;}
@media (max-width:640px){.g2,.g3{grid-template-columns:1fr;}}
.split{display:grid;grid-template-columns:340px 1fr;gap:18px;align-items:start;}
@media (max-width:920px){.split{grid-template-columns:1fr;}}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px;}
.toolbar input,.toolbar select{padding:8px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px;}
.toolbar .spacer{flex:1;}

.alert{border-radius:10px;padding:12px 16px;margin-bottom:16px;font-size:14px;border:1px solid transparent;}
.alert-success{background:var(--lime-soft);border-color:#D6F08C;color:#3f5a05;}
.alert-danger{background:#FBE9E9;border-color:#F1C4C4;color:#8d2020;}
.alert-warning{background:#FCF4E1;border-color:#EFDCA8;color:#7a5b09;}
.alert-secondary{background:var(--paper);border-color:var(--line);color:var(--ink);}

.tabs{display:flex;gap:2px;border-bottom:2px solid var(--line);margin-bottom:20px;flex-wrap:wrap;}
.tabs a{padding:10px 16px;font-size:14px;font-weight:600;color:var(--muted);text-decoration:none;
  border-bottom:3px solid transparent;margin-bottom:-2px;}
.tabs a.on{color:var(--slate);border-bottom-color:var(--lime);}

.empty{color:var(--muted);font-size:14px;padding:14px 0;}
.keybox{font-family:ui-monospace,Menlo,Consolas,monospace;background:var(--slate-900);color:var(--lime);
  padding:12px 14px;border-radius:9px;font-size:13px;letter-spacing:1px;word-break:break-all;}
.list{list-style:none;margin:0;padding:0;}
.list li{padding:10px 0;border-bottom:1px solid var(--line);font-size:14px;}
.list li:last-child{border-bottom:0;}

/* --------------------------------------------------- module selection */
.modgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;}
.mod{border:1px solid var(--line);border-radius:11px;padding:14px 15px;background:#fff;position:relative;}
.mod.on{border-color:var(--lime-700);background:var(--lime-soft);}
.mod.core{border-style:dashed;}
.mod label{display:flex;gap:9px;align-items:flex-start;font-weight:700;font-size:14px;cursor:pointer;}
.mod input{margin-top:3px;}
.mod .price{float:right;font-weight:700;font-size:14px;color:var(--slate);}
.mod p{margin:7px 0 0;font-size:12.5px;color:var(--muted);line-height:1.45;}
.mod ul{margin:8px 0 0;padding-left:16px;font-size:12px;color:var(--muted);}

.auth{min-height:100vh;display:grid;place-items:center;padding:24px;
  background:linear-gradient(160deg,var(--slate) 0%,var(--slate-900) 100%);}
.auth-card{width:100%;max-width:400px;background:#fff;border-radius:14px;padding:32px 30px;
  box-shadow:0 20px 50px rgba(0,0,0,.3);}
.auth-card .logo{text-align:center;margin-bottom:22px;}
.auth-card .logo img{height:44px;}
.auth-card h1{font-size:20px;font-weight:700;margin-bottom:4px;}
.auth-card .sub{color:var(--muted);font-size:13.5px;margin-bottom:22px;}
.foot{border-top:1px solid var(--line);background:#fff;padding:16px 20px;color:var(--muted);font-size:13px;text-align:center;}
