/* Prestige admin - modern theme. Works with Bootstrap 5.3; colours are CSS variables so tenants can white-label via --brand. */
:root{
  --brand:#4f46e5; --brand-600:#4338ca; --brand-soft:rgba(79,70,229,.10);
  --bg:#f5f6fb; --surface:#ffffff; --surface-2:#f1f3f9; --text:#1b2033; --muted:#6b7385; --line:#e6e9f2;
  --ok:#16a34a; --warn:#d97706; --bad:#dc2626; --info:#0284c7;
  --radius:16px; --shadow:0 1px 2px rgba(20,24,50,.04),0 8px 24px rgba(20,24,50,.06);
  --sidebar:268px; font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
}
[data-bs-theme="dark"]{
  --bg:#0f1220; --surface:#171b2e; --surface-2:#1e2338; --text:#e8ebf7; --muted:#9aa3bd; --line:#262c45; --brand-soft:rgba(129,140,248,.16);
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.35);
}
html,body{background:var(--bg);color:var(--text);font-size:14.5px;-webkit-font-smoothing:antialiased}
body{min-height:100vh}
a{color:var(--brand);text-decoration:none} a:hover{color:var(--brand-600)}
h4,h5,.h4{font-weight:700;letter-spacing:-.01em}

/* ---------- shell ---------- */
.app{display:flex;min-height:100vh}
.sidebar{width:var(--sidebar);background:var(--surface);border-right:1px solid var(--line);position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:1040;transition:transform .25s}
.sidebar .brand{display:flex;align-items:center;gap:.7rem;padding:1.25rem 1.4rem;font-weight:800;font-size:1.15rem;letter-spacing:.02em;color:var(--text)}
.brand-mark{width:36px;height:36px;border-radius:11px;background:linear-gradient(135deg,var(--brand),#7c3aed);display:grid;place-items:center;color:#fff;font-size:1.05rem;box-shadow:0 6px 16px var(--brand-soft)}
.nav-scroll{overflow-y:auto;padding:.25rem .8rem 1rem;flex:1}
.nav-section{font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);font-weight:700;margin:1.1rem .7rem .4rem}
.nav-link-x{display:flex;align-items:center;gap:.75rem;padding:.55rem .8rem;border-radius:11px;color:var(--muted);font-weight:500;margin-bottom:2px}
.nav-link-x i{font-size:1.1rem;width:1.3rem;text-align:center}
.nav-link-x:hover{background:var(--surface-2);color:var(--text)}
.nav-link-x.active{background:var(--brand-soft);color:var(--brand);font-weight:600}
.nav-link-x .lock{margin-left:auto;font-size:.7rem;opacity:.7}
.main{margin-left:var(--sidebar);flex:1;min-width:0}
.topbar{position:sticky;top:0;z-index:1030;display:flex;align-items:center;gap:.75rem;padding:.8rem 1.6rem;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.topbar .title{font-weight:700;font-size:1.05rem}
.icon-btn{width:38px;height:38px;border-radius:11px;border:1px solid var(--line);background:var(--surface);color:var(--text);display:grid;place-items:center;cursor:pointer}
.icon-btn:hover{background:var(--surface-2)}
.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--brand),#7c3aed);color:#fff;display:grid;place-items:center;font-weight:700}
.content{padding:1.5rem 1.6rem 3rem;max-width:1600px}
.banner{margin:1rem 1.6rem 0;border-radius:12px;border:1px solid color-mix(in srgb,var(--warn) 40%,transparent);background:color-mix(in srgb,var(--warn) 12%,var(--surface));padding:.7rem 1rem;display:flex;gap:.6rem;align-items:center}
@media (max-width:991px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:none;box-shadow:var(--shadow)}.main{margin-left:0}.content{padding:1rem}}

/* ---------- surfaces ---------- */
.card{background:var(--surface);border:1px solid var(--line)!important;border-radius:var(--radius)!important;box-shadow:var(--shadow)!important}
.card-header{background:transparent;border-bottom:1px solid var(--line);font-weight:600;padding:.9rem 1.1rem}
.shadow-sm{box-shadow:var(--shadow)!important}
.bg-white{background:var(--surface)!important}
.bg-light{background:var(--surface-2)!important}
.text-muted{color:var(--muted)!important}

/* ---------- tables ---------- */
.table{--bs-table-bg:var(--surface);--bs-table-color:var(--text);border-collapse:separate;border-spacing:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:1rem}
.table>:not(caption)>*>*{border-bottom-color:var(--line);padding:.8rem 1rem}
.table thead th{background:var(--surface-2);color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;border-bottom:1px solid var(--line)}
.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-bg-type:transparent;background:var(--surface)}
.table-striped>tbody>tr:nth-of-type(even)>*{background:color-mix(in srgb,var(--surface-2) 45%,var(--surface))}
.table tbody tr:hover>*{background:var(--brand-soft)!important}
.table tbody tr:last-child>*{border-bottom:0}
.card .table{border:0;border-radius:0;margin:0}

/* ---------- forms & buttons ---------- */
.form-control,.form-select{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:11px;padding:.55rem .8rem}
.form-control:focus,.form-select:focus{border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-soft);background:var(--surface);color:var(--text)}
.form-label{font-weight:600;font-size:.82rem;color:var(--muted);margin-bottom:.3rem}
.btn{border-radius:11px;font-weight:600;padding:.5rem .95rem}
.btn-sm{padding:.3rem .65rem;border-radius:9px}
.btn-primary{background:var(--brand);border-color:var(--brand)} .btn-primary:hover,.btn-primary:focus{background:var(--brand-600);border-color:var(--brand-600)}
.btn-outline-secondary,.btn-outline-dark{border-color:var(--line);color:var(--text)} .btn-outline-secondary:hover,.btn-outline-dark:hover{background:var(--surface-2);color:var(--text);border-color:var(--line)}
.btn-dark{background:var(--text);border-color:var(--text);color:var(--bg)}
.alert{border-radius:12px;border:1px solid var(--line)}
.progress{height:10px;border-radius:999px;background:var(--surface-2)} .progress-bar{border-radius:999px}
.list-group-item{background:transparent;border-color:var(--line);color:var(--text)}
.badge{border-radius:999px;font-weight:600;padding:.4em .7em}

/* ---------- KPI + chips ---------- */
.kpi{display:flex;align-items:center;gap:1rem;padding:1.1rem 1.2rem}
.kpi .ico{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-size:1.3rem;background:var(--brand-soft);color:var(--brand)}
.kpi .val{font-size:1.65rem;font-weight:800;line-height:1.1;letter-spacing:-.02em} .kpi .lbl{color:var(--muted);font-size:.8rem;font-weight:500}
.kpi.ok .ico{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)} .kpi.warn .ico{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn)} .kpi.info .ico{background:color-mix(in srgb,var(--info) 14%,transparent);color:var(--info)}
.chip{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .6rem;border-radius:999px;font-size:.74rem;font-weight:700;background:var(--surface-2);color:var(--muted)}
.chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.chip-ok{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)} .chip-warn{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn)}
.chip-bad{background:color-mix(in srgb,var(--bad) 14%,transparent);color:var(--bad)} .chip-info{background:color-mix(in srgb,var(--info) 14%,transparent);color:var(--info)}
.chart-box{position:relative;height:260px}
#map{border-radius:0 0 var(--radius) var(--radius)}

/* ---------- auth ---------- */
.auth{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}
.auth-hero{background:radial-gradient(1200px 600px at 10% 0%,#7c3aed 0%,transparent 60%),linear-gradient(135deg,var(--brand),#312e81);color:#fff;padding:3rem;display:flex;flex-direction:column;justify-content:space-between}
.auth-hero h1{font-size:2.3rem;font-weight:800;letter-spacing:-.02em;max-width:18ch} .auth-hero .feat{display:flex;gap:.7rem;align-items:center;opacity:.92;margin:.5rem 0}
.auth-form{display:grid;place-items:center;padding:2rem;background:var(--bg)} .auth-card{width:100%;max-width:430px}
@media (max-width:900px){.auth{grid-template-columns:1fr}.auth-hero{display:none}}
