/* GBRL Analytics Lite - dashboard styles (no external deps) */
:root{
  --bg:#0f1220; --panel:#171a2b; --panel2:#1e2236; --line:#2a2f48;
  --txt:#e7e9f3; --mut:#9aa0bd; --brand:#6c8cff; --brand2:#8f6cff;
  --ok:#38c172; --down:#e3506a; --flat:#8a90ad; --chip:#232741;
  --radius:14px; --shadow:0 2px 14px rgba(0,0,0,.25);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--txt);
  font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
code{background:#0c0f1c;padding:1px 6px;border-radius:6px;color:#c9d2ff;font-size:.88em}

/* Topbar */
.topbar{display:flex;align-items:center;gap:22px;padding:12px 22px;
  background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.brand a{color:var(--txt);font-weight:700;font-size:1.05rem}
.brand span{color:var(--brand)}
.mainnav{display:flex;gap:16px;margin-left:8px}
.mainnav a{color:var(--mut);font-weight:600}
.mainnav a:hover{color:var(--txt);text-decoration:none}
.logout{margin-left:auto;display:flex;align-items:center;gap:10px}
.logout .who{color:var(--mut);font-size:.85rem}
.logout button{background:transparent;border:1px solid var(--line);color:var(--mut);
  padding:6px 12px;border-radius:8px;cursor:pointer}
.logout button:hover{color:var(--txt);border-color:var(--brand)}

.wrap{max-width:1180px;margin:0 auto;padding:22px}
.pagetitle{font-size:1.5rem;margin:6px 0 14px}
.subtle{color:var(--mut);margin-top:-8px}
.crumbs{color:var(--mut);font-size:.85rem;margin-bottom:2px}
.crumbs span{color:var(--txt)}

/* Cards */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:18px;margin:14px 0;box-shadow:var(--shadow)}
.card h3{margin:0 0 12px;font-size:1.02rem}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.card-head.bare{background:none;border:none;box-shadow:none;padding:0;margin:18px 0 0}
.card-head h3{margin:0}
.empty,.hint{color:var(--mut);font-size:.9rem}
.hint{margin-top:8px}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin:14px 0}
.kpi{display:flex;flex-direction:column;gap:4px}
.kpi .k{color:var(--mut);font-size:.82rem}
.kpi .k em{color:var(--flat);font-style:normal;font-size:.85em}
.kpi .v{font-size:1.8rem;font-weight:700}
.kpi.muted .v{color:var(--mut)}
.kpi em{color:var(--mut);font-size:.78rem;font-style:normal}

.growth{font-size:.82rem;font-weight:700}
.growth.up{color:var(--ok)} .growth.down{color:var(--down)} .growth.flat{color:var(--flat)}

/* Filters */
.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin:8px 0}
.presets{display:flex;flex-wrap:wrap;gap:6px}
.chip{background:var(--chip);color:var(--mut);padding:6px 12px;border-radius:999px;font-size:.85rem}
.chip:hover{color:var(--txt);text-decoration:none}
.chip.active{background:var(--brand);color:#fff}
.custom{display:flex;align-items:center;gap:6px}
.custom input[type=date]{background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  padding:6px 8px;border-radius:8px}
.rangelabel{color:var(--mut);font-size:.85rem;margin:2px 0 6px}

/* Buttons */
.btn{display:inline-block;background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  padding:8px 14px;border-radius:9px;cursor:pointer;font-size:.9rem}
.btn:hover{border-color:var(--brand);text-decoration:none}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.small{padding:4px 10px;font-size:.8rem}
.actions{display:flex;gap:8px}

/* Tables */
table{width:100%;border-collapse:collapse}
.grid th,.grid td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);font-size:.9rem}
.grid th{color:var(--mut);font-weight:600}
.grid .num,.bars .num{text-align:right;font-variant-numeric:tabular-nums}
.grid.sites .hosts{color:var(--mut);font-size:.82rem;max-width:280px}
.tag{font-size:.7rem;padding:2px 7px;border-radius:6px;margin-left:6px;vertical-align:middle}
.tag.off{background:#3a2033;color:#ff9db4}
.rowactions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}

.pill{border:none;border-radius:999px;padding:5px 12px;font-size:.78rem;cursor:pointer;font-weight:700}
.pill.on{background:rgba(56,193,114,.15);color:var(--ok)}
.pill.off{background:rgba(227,80,106,.15);color:var(--down)}
.inline{display:inline}

/* Breakdown bars */
.breakdown table{margin-top:4px}
.bars td,.bars th{padding:6px 8px;border-bottom:1px solid var(--line);font-size:.88rem}
.bars .lbl{position:relative;max-width:340px;overflow:hidden}
.bars .barfill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,rgba(108,140,255,.28),rgba(143,108,255,.12));border-radius:4px;z-index:0}
.bars .lbltext{position:relative;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;max-width:100%}

/* Layout helpers */
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cols3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
@media(max-width:900px){.cols2,.cols3{grid-template-columns:1fr}}

.movelist{list-style:none;margin:0;padding:0}
.movelist li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);font-size:.9rem}
.movelist small{color:var(--mut);margin-left:auto}
.movelist.plain li{justify-content:space-between}

/* Forms */
.form label{display:block;margin:12px 0;color:var(--mut);font-size:.88rem}
.form input[type=text],.form input[type=email],.form input[type=password],.form textarea,.form input[type=file]{
  width:100%;margin-top:6px;background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  padding:10px 12px;border-radius:9px;font:inherit}
.form textarea{resize:vertical}
.form label.check{display:flex;align-items:center;gap:8px;color:var(--txt)}
.form label.check input{margin-top:0}
.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}
.snippet{background:#0c0f1c;border:1px solid var(--line);border-radius:9px;padding:12px;
  overflow:auto;color:#c9d2ff;font-size:.82rem;white-space:pre-wrap;word-break:break-all}

/* Alerts */
.alert{padding:10px 14px;border-radius:9px;margin:10px 0;font-size:.9rem}
.alert.ok{background:rgba(56,193,114,.12);color:var(--ok);border:1px solid rgba(56,193,114,.3)}
.alert.error{background:rgba(227,80,106,.12);color:#ff9db4;border:1px solid rgba(227,80,106,.3)}
.test-result{font-size:.82rem;color:var(--mut)}
.test-result.ok{color:var(--ok)} .test-result.no{color:var(--down)}

/* Chart */
canvas#chart{width:100%;max-width:100%;display:block}

/* Footer */
.foot{color:var(--mut);text-align:center;font-size:.8rem;padding:24px;border-top:1px solid var(--line);margin-top:20px}
.foot strong{color:var(--txt)}

/* Login */
.login-body{display:flex;min-height:100vh;align-items:center;justify-content:center}
.login-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:30px;width:340px;box-shadow:var(--shadow)}
.login-card h1{font-size:1.3rem;margin:0 0 16px}
.login-card h1 span{color:var(--brand)}
.login-card label{display:block;margin:12px 0;color:var(--mut);font-size:.85rem}
.login-card input{width:100%;margin-top:6px;background:var(--panel2);border:1px solid var(--line);
  color:var(--txt);padding:10px 12px;border-radius:9px;font:inherit}
.login-card .btn{width:100%;margin-top:8px}

/* Live visitors panel */
.live .live-win{margin:0}
.live-dot{display:inline-block;width:9px;height:9px;border-radius:50%;
  background:var(--flat);margin-right:6px;vertical-align:middle}
.live.has-visitors .live-dot{background:var(--ok);
  box-shadow:0 0 0 0 rgba(56,193,114,.6);animation:livepulse 1.8s ease-out infinite}
@keyframes livepulse{
  0%{box-shadow:0 0 0 0 rgba(56,193,114,.55)}
  70%{box-shadow:0 0 0 8px rgba(56,193,114,0)}
  100%{box-shadow:0 0 0 0 rgba(56,193,114,0)}
}
@media (prefers-reduced-motion: reduce){
  .live.has-visitors .live-dot{animation:none}
}
.live-kpis{display:flex;gap:32px;margin:4px 0 6px}
.live-kpi{display:flex;flex-direction:column;gap:2px}
.live-kpi .v{font-size:2rem;font-weight:700;line-height:1;color:var(--txt)}
.live-kpi .k{color:var(--mut);font-size:.8rem}
.live-sub{margin:10px 0 8px;font-size:.9rem;color:var(--mut);font-weight:600}
.live-list{list-style:none;margin:0;padding:0}
.live-list li{display:flex;align-items:center;justify-content:space-between;
  gap:12px;padding:7px 0;border-top:1px solid var(--line)}
.live-list li:first-child{border-top:none}
.live-list .empty{border-top:none;color:var(--mut);font-size:.9rem;justify-content:flex-start}
.live-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:80%}
.live-count{color:var(--brand);font-variant-numeric:tabular-nums;font-weight:600;flex:none}
