@import url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&family=Inter:wght@400;500;600;700&display=swap');

:root{
  --bg:#070b14;
  --bg-2:#0c1220;
  --surface:#101827;
  --surface-2:#172033;
  --surface-3:#1f2a44;
  --border:#1e2a44;
  --border-bright:#2a3a5e;
  --primary:#00d4ff;
  --primary-dark:#00a3cc;
  --primary-glow:rgba(0,212,255,0.35);
  --accent:#ff3860;
  --accent-glow:rgba(255,56,96,0.35);
  --success:#00ff9d;
  --success-glow:rgba(0,255,157,0.3);
  --warning:#ffb800;
  --warning-glow:rgba(255,184,0,0.3);
  --danger:#ff3860;
  --danger-glow:rgba(255,56,96,0.4);
  --info:#5ab9ff;
  --text:#e2ecff;
  --text-bright:#ffffff;
  --text-muted:#7a8caa;
  --text-dim:#4a5878;
  --shadow:0 4px 16px rgba(0,0,0,0.5);
  --shadow-lg:0 12px 48px rgba(0,0,0,0.7);
  --font-display:'Rajdhani',sans-serif;
  --font-mono:'JetBrains Mono',monospace;
  --font-body:'Inter',sans-serif;
}

*{box-sizing:border-box;margin:0;padding:0}
*::selection{background:var(--primary);color:var(--bg)}
body{
  font-family:var(--font-body);
  background:var(--bg);
  background-image:
    radial-gradient(circle at 15% 30%,rgba(0,212,255,0.07) 0%,transparent 40%),
    radial-gradient(circle at 85% 70%,rgba(90,185,255,0.05) 0%,transparent 40%),
    linear-gradient(rgba(0,212,255,0.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(0,212,255,0.025) 1px,transparent 1px);
  background-size:100% 100%,100% 100%,40px 40px,40px 40px;
  color:var(--text);
  font-size:13px;
  line-height:1.5;
  min-height:100vh;
  letter-spacing:0.01em;
}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--bg-2)}
::-webkit-scrollbar-thumb{background:var(--surface-3)}
::-webkit-scrollbar-thumb:hover{background:var(--primary-dark)}
.app{display:flex;min-height:100vh;position:relative}
.app::before{
  content:"";position:fixed;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,transparent,var(--primary),transparent);
  z-index:200;opacity:.5;
}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(0.85)}}
@keyframes scan{0%{transform:translateY(-100%)}100%{transform:translateY(100vh)}}
@keyframes pageIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideInMC{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
@keyframes scanLine{0%,100%{top:0}50%{top:calc(100% - 2px)}}

/* ===== Sidebar ===== */
.sidebar{
  width:250px;
  background:linear-gradient(180deg,var(--bg-2) 0%,var(--bg) 100%);
  border-right:1px solid var(--border);
  color:var(--text);
  position:fixed;
  height:100vh;
  overflow-y:auto;
  z-index:100;
}
.sidebar::before{
  content:"";position:absolute;top:0;right:0;width:1px;height:100%;
  background:linear-gradient(180deg,transparent,var(--primary),transparent);
  opacity:.4;
}
.brand{padding:20px;border-bottom:1px solid var(--border);position:relative}
.brand::after{
  content:"";position:absolute;bottom:-1px;left:20px;right:20px;height:1px;
  background:linear-gradient(90deg,transparent,var(--primary),transparent);
}
.brand h1{
  font-family:var(--font-display);font-size:22px;font-weight:700;
  display:flex;align-items:center;gap:10px;
  color:var(--text-bright);text-transform:uppercase;letter-spacing:2px;
}
.brand p{
  font-size:9px;color:var(--text-muted);margin-top:6px;
  text-transform:uppercase;letter-spacing:2px;font-family:var(--font-mono);
}
.logo-shield{
  width:36px;height:36px;
  background:linear-gradient(135deg,var(--primary),var(--primary-dark));
  clip-path:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;color:var(--bg);
  box-shadow:0 0 12px var(--primary-glow);font-weight:bold;
}
.app-logo{
  display:block;object-fit:contain;border-radius:50%;
  background:#05070c;box-shadow:0 0 14px rgba(255,211,0,.35);
  flex:0 0 auto;
}
.app-logo-sidebar{width:46px;height:46px}
.app-logo-topbar{width:34px;height:34px}
.app-logo-login{width:92px;height:92px;margin:0 auto 14px}
.nav-section{padding:8px 0}
.nav-title{
  padding:14px 20px 6px;font-size:9px;
  text-transform:uppercase;color:var(--text-dim);
  letter-spacing:3px;font-weight:700;font-family:var(--font-mono);
}
.nav-title::before{content:"▸";color:var(--primary);margin-right:6px;font-size:8px}
.nav-item{
  padding:11px 20px;display:flex;align-items:center;gap:12px;cursor:pointer;
  font-size:13px;color:var(--text-muted);
  border-left:2px solid transparent;transition:all .2s;
  position:relative;font-weight:500;
  text-transform:uppercase;letter-spacing:.5px;
}
.nav-item:hover{
  background:linear-gradient(90deg,rgba(0,212,255,0.08),transparent);
  color:var(--text);border-left-color:var(--primary-dark);
}
.nav-item.active{
  background:linear-gradient(90deg,rgba(0,212,255,0.15),rgba(0,212,255,0.02));
  color:var(--primary);border-left-color:var(--primary);font-weight:600;
}
.nav-item.active::after{
  content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);
  width:4px;height:60%;background:var(--primary);
  box-shadow:0 0 8px var(--primary-glow);
}
.nav-icon{width:18px;text-align:center;font-size:14px}

/* ===== Main ===== */
.main{margin-left:250px;flex:1;display:flex;flex-direction:column;min-width:0}
.topbar{
  background:linear-gradient(180deg,var(--bg-2),var(--surface));
  border-bottom:1px solid var(--border);padding:14px 28px;
  display:flex;align-items:center;justify-content:space-between;
  position:sticky;top:0;z-index:50;backdrop-filter:blur(8px);
}
.topbar::after{
  content:"";position:absolute;bottom:-1px;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--primary),transparent);opacity:.6;
}
.topbar-left{display:flex;align-items:center;gap:18px}
.page-title{
  font-family:var(--font-display);font-size:20px;font-weight:600;
  color:var(--text-bright);text-transform:uppercase;letter-spacing:2px;
}
.page-title::before{content:"//";color:var(--primary);margin-right:10px;font-family:var(--font-mono)}
.live-indicator{
  display:inline-flex;align-items:center;gap:6px;padding:5px 12px;
  background:rgba(0,255,157,0.1);color:var(--success);
  border:1px solid rgba(0,255,157,0.3);
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:2px;
  font-family:var(--font-mono);
}
.live-dot{
  width:8px;height:8px;background:var(--success);border-radius:50%;
  box-shadow:0 0 8px var(--success-glow);animation:pulse 1.2s infinite;
}
.topbar-right{display:flex;align-items:center;gap:10px}
.btn-logout{padding:8px 12px;font-size:11px}
.user-chip{
  display:flex;align-items:center;gap:10px;padding:6px 14px;
  background:var(--surface-2);border:1px solid var(--border);
  clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);
}
.avatar{
  width:30px;height:30px;
  background:linear-gradient(135deg,var(--primary),var(--primary-dark));
  color:var(--bg);display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:12px;font-family:var(--font-mono);
  clip-path:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);
  box-shadow:0 0 8px var(--primary-glow);
}
.user-info{font-size:11px}
.user-info strong{display:block;color:var(--text-bright);text-transform:uppercase;letter-spacing:1px;font-size:11px;font-weight:600}
.user-info span{color:var(--text-muted);font-size:9px;letter-spacing:1.5px;text-transform:uppercase}
.btn-icon{
  width:38px;height:38px;background:var(--surface-2);
  border:1px solid var(--border);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  font-size:14px;color:var(--text-muted);position:relative;transition:all .15s;
}
.btn-icon:hover{
  background:var(--surface-3);color:var(--primary);border-color:var(--primary);
  box-shadow:0 0 12px var(--primary-glow);
}
.notif-dot{
  position:absolute;top:6px;right:6px;width:8px;height:8px;
  background:var(--accent);border-radius:50%;
  box-shadow:0 0 6px var(--accent-glow);animation:pulse 1.5s infinite;
}

.content{padding:24px 28px;flex:1;overflow-y:auto}
.page{display:none}
.page.active{display:block;animation:pageIn .3s}

/* ===== KPI / Cards ===== */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:22px}
.kpi-card{
  background:linear-gradient(135deg,var(--surface) 0%,var(--surface-2) 100%);
  padding:18px 20px;border:1px solid var(--border);border-left:3px solid var(--primary);
  position:relative;overflow:hidden;transition:all .2s;
}
.kpi-card::before{
  content:"";position:absolute;top:0;right:0;width:80px;height:80px;
  background:radial-gradient(circle at top right,var(--primary-glow),transparent 70%);
  opacity:.4;pointer-events:none;
}
.kpi-card::after{
  content:"";position:absolute;top:0;right:0;width:14px;height:14px;
  border-top:1px solid var(--primary);border-right:1px solid var(--primary);opacity:.7;
}
.kpi-card:hover{border-color:var(--border-bright);transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,0.4),0 0 0 1px var(--primary-glow)}
.kpi-card.success{border-left-color:var(--success)}
.kpi-card.success::before{background:radial-gradient(circle at top right,var(--success-glow),transparent 70%)}
.kpi-card.success::after{border-color:var(--success)}
.kpi-card.warning{border-left-color:var(--warning)}
.kpi-card.warning::before{background:radial-gradient(circle at top right,var(--warning-glow),transparent 70%)}
.kpi-card.warning::after{border-color:var(--warning)}
.kpi-card.danger{border-left-color:var(--danger)}
.kpi-card.danger::before{background:radial-gradient(circle at top right,var(--danger-glow),transparent 70%)}
.kpi-card.danger::after{border-color:var(--danger)}
.kpi-card.info{border-left-color:var(--info)}
.kpi-label{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:2px;font-weight:600;font-family:var(--font-mono)}
.kpi-value{font-family:var(--font-display);font-size:36px;font-weight:700;margin-top:6px;color:var(--text-bright);letter-spacing:-0.5px;line-height:1;position:relative;z-index:1}
.kpi-trend{font-size:10px;margin-top:8px;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;font-family:var(--font-mono)}
.kpi-trend.up{color:var(--success)}
.kpi-trend.down{color:var(--danger)}

.card{background:var(--surface);border:1px solid var(--border);margin-bottom:20px;position:relative}
.card::before{
  content:"";position:absolute;top:0;left:0;width:18px;height:18px;
  border-top:1px solid var(--primary);border-left:1px solid var(--primary);pointer-events:none;
}
.card::after{
  content:"";position:absolute;bottom:0;right:0;width:18px;height:18px;
  border-bottom:1px solid var(--primary-dark);border-right:1px solid var(--primary-dark);
  pointer-events:none;opacity:.6;
}
.card-header{
  padding:14px 20px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;
  background:linear-gradient(90deg,var(--surface-2),transparent);
}
.card-title{font-family:var(--font-display);font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-bright)}
.card-body{padding:18px 20px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:900px){.grid-2{grid-template-columns:1fr}}

/* ===== Buttons ===== */
.btn{
  display:inline-flex;align-items:center;gap:8px;padding:9px 16px;
  border:1px solid transparent;font-size:11px;font-weight:600;cursor:pointer;
  transition:all .15s;text-decoration:none;text-transform:uppercase;letter-spacing:1.5px;
  font-family:var(--font-body);position:relative;overflow:hidden;
}
.btn::before{
  content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,0.15),transparent);transition:left .5s;
}
.btn:hover::before{left:100%}
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:var(--bg);font-weight:700;box-shadow:0 0 12px var(--primary-glow)}
.btn-primary:hover{box-shadow:0 0 20px var(--primary-glow);transform:translateY(-1px)}
.btn-accent{background:linear-gradient(135deg,var(--accent),#cc2848);color:#fff;font-weight:700;box-shadow:0 0 12px var(--accent-glow)}
.btn-accent:hover{box-shadow:0 0 20px var(--accent-glow);transform:translateY(-1px)}
.btn-success{background:linear-gradient(135deg,var(--success),#00cc7d);color:var(--bg);font-weight:700;box-shadow:0 0 12px var(--success-glow)}
.btn-success:hover{box-shadow:0 0 20px var(--success-glow);transform:translateY(-1px)}
.btn-outline{background:var(--surface-2);border:1px solid var(--border-bright);color:var(--text)}
.btn-outline:hover{background:var(--surface-3);border-color:var(--primary);color:var(--primary)}
.btn-sm{padding:6px 12px;font-size:10px;letter-spacing:1px}
.btn-danger{background:linear-gradient(135deg,var(--danger),#cc2848);color:#fff;font-weight:700;box-shadow:0 0 12px var(--danger-glow)}
.btn-danger:hover{box-shadow:0 0 20px var(--danger-glow);transform:translateY(-1px)}

/* ===== Forms ===== */
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.form-row.three{grid-template-columns:1fr 1fr 1fr}
.form-row.full{grid-template-columns:1fr}
@media(max-width:700px){.form-row,.form-row.three{grid-template-columns:1fr}}
.form-group label{
  display:block;font-size:10px;color:var(--text-muted);
  margin-bottom:6px;font-weight:600;
  text-transform:uppercase;letter-spacing:1.5px;font-family:var(--font-mono);
}
.form-group input,.form-group select,.form-group textarea{
  width:100%;padding:10px 12px;border:1px solid var(--border);
  font-size:13px;font-family:var(--font-body);
  background:var(--bg-2);color:var(--text);transition:all .15s;
}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{
  outline:none;border-color:var(--primary);background:var(--surface);
  box-shadow:0 0 0 1px var(--primary),0 0 12px var(--primary-glow);
}
.form-group select{
  appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path fill='%2300d4ff' d='M0 2l5 6 5-6z'/></svg>");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;
}
.form-group select option{background:var(--surface);color:var(--text)}
.form-group textarea{resize:vertical;min-height:80px}
.form-group input[type="datetime-local"],.form-group input[type="date"]{color-scheme:dark}
input[type="checkbox"]{accent-color:var(--primary)}

/* ===== Tables ===== */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12px}
th{
  background:var(--bg-2);padding:12px 14px;text-align:left;
  font-size:10px;text-transform:uppercase;color:var(--text-muted);
  font-weight:700;letter-spacing:2px;border-bottom:1px solid var(--border);font-family:var(--font-mono);
}
td{padding:11px 14px;border-bottom:1px solid var(--border);color:var(--text)}
tr{transition:background .15s}
tr:hover td{background:rgba(0,212,255,0.04)}
tr:last-child td{border-bottom:none}
td code,code{
  font-family:var(--font-mono);background:var(--bg-2);padding:2px 6px;
  color:var(--primary);font-size:11px;border:1px solid var(--border);
}
td strong{color:var(--text-bright)}

.badge{
  display:inline-flex;align-items:center;gap:4px;padding:3px 10px;
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;
  font-family:var(--font-mono);border:1px solid currentColor;
}
.badge.success{background:rgba(0,255,157,0.1);color:var(--success)}
.badge.warning{background:rgba(255,184,0,0.1);color:var(--warning)}
.badge.danger{background:rgba(255,56,96,0.1);color:var(--danger)}
.badge.info{background:rgba(90,185,255,0.1);color:var(--info)}
.badge.muted{background:var(--bg-2);color:var(--text-muted);border-color:var(--border)}

/* ===== Modal ===== */
.modal-backdrop{
  display:none;position:fixed;inset:0;background:rgba(7,11,20,0.85);
  backdrop-filter:blur(6px);z-index:1000;
  align-items:center;justify-content:center;padding:20px;
}
.modal-backdrop.show{display:flex;animation:fadeIn .2s}
.modal{
  background:var(--surface);border:1px solid var(--primary);
  width:100%;max-width:580px;max-height:90vh;overflow-y:auto;
  box-shadow:0 0 40px var(--primary-glow),var(--shadow-lg);position:relative;
}
.modal::before{content:"";position:absolute;top:-1px;left:-1px;width:30px;height:30px;border-top:2px solid var(--primary);border-left:2px solid var(--primary)}
.modal::after{content:"";position:absolute;bottom:-1px;right:-1px;width:30px;height:30px;border-bottom:2px solid var(--primary);border-right:2px solid var(--primary)}
.modal-header{
  padding:16px 22px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;
  background:linear-gradient(90deg,var(--surface-2),transparent);
}
.modal-title{font-family:var(--font-display);font-size:15px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--text-bright)}
.modal-close{
  background:none;border:1px solid var(--border);cursor:pointer;
  width:28px;height:28px;font-size:16px;color:var(--text-muted);
  display:flex;align-items:center;justify-content:center;transition:all .15s;
}
.modal-close:hover{color:var(--accent);border-color:var(--accent)}
.modal-body{padding:22px}
.modal-footer{padding:14px 22px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px;background:var(--bg-2)}

/* ===== Toolbar / search / filters ===== */
.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px}
.search-box{flex:1;min-width:220px;position:relative}
.search-box input{
  width:100%;padding:10px 14px 10px 38px;border:1px solid var(--border);
  font-size:12px;background:var(--bg-2);color:var(--text);font-family:var(--font-body);letter-spacing:.5px;
}
.search-box input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),0 0 12px var(--primary-glow)}
.search-box::before{
  content:"⌕";position:absolute;left:12px;top:50%;transform:translateY(-50%);
  font-size:16px;color:var(--primary);font-weight:bold;
}
.date-filter{display:flex;align-items:center;gap:8px;background:var(--bg-2);border:1px solid var(--border);padding:6px 12px;font-size:12px}
.date-filter label{color:var(--text-muted);font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;font-family:var(--font-mono)}
.date-filter input{border:none;font-size:12px;font-family:var(--font-mono);background:transparent;padding:4px 2px;outline:none;color:var(--text);color-scheme:dark}
.date-filter .sep{color:var(--primary);font-size:11px;font-weight:bold}
.date-presets{display:flex;gap:4px}
.date-preset{
  padding:6px 12px;font-size:10px;background:var(--surface);border:1px solid var(--border);
  cursor:pointer;color:var(--text-muted);font-weight:600;
  text-transform:uppercase;letter-spacing:1px;font-family:var(--font-mono);transition:all .15s;
}
.date-preset:hover{background:var(--surface-2);color:var(--primary);border-color:var(--primary)}
.date-preset.active{background:var(--primary);color:var(--bg);border-color:var(--primary);box-shadow:0 0 8px var(--primary-glow)}

/* ===== Parking ===== */
.parking-zones{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.parking-zone{background:var(--surface-2);border:1px solid var(--border);padding:16px;position:relative}
.parking-zone::before{content:"";position:absolute;top:0;left:0;width:14px;height:14px;border-top:1px solid var(--primary);border-left:1px solid var(--primary)}
.zone-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.zone-name{font-family:var(--font-display);font-weight:600;font-size:14px;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-bright)}
.zone-stats{font-size:10px;color:var(--text-muted);font-family:var(--font-mono);letter-spacing:1px}
.zone-bar{height:4px;background:var(--bg-2);overflow:hidden;margin-bottom:14px}
.zone-bar-fill{height:100%;background:linear-gradient(90deg,var(--success),#00cc7d);transition:width .3s;box-shadow:0 0 8px var(--success-glow)}
.zone-bar-fill.warning{background:linear-gradient(90deg,var(--warning),#cc9300);box-shadow:0 0 8px var(--warning-glow)}
.zone-bar-fill.danger{background:linear-gradient(90deg,var(--danger),#cc2848);box-shadow:0 0 8px var(--danger-glow)}
.spots-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:5px}
.spot{
  aspect-ratio:1;background:rgba(0,255,157,0.08);border:1px solid rgba(0,255,157,0.4);
  display:flex;align-items:center;justify-content:center;
  font-size:9px;font-weight:700;cursor:pointer;color:var(--success);transition:all .15s;font-family:var(--font-mono);
}
.spot:hover{transform:scale(1.15);box-shadow:0 0 8px var(--success-glow);z-index:1}
.spot.occupied{background:rgba(255,56,96,0.12);border-color:rgba(255,56,96,0.5);color:var(--danger)}
.spot.occupied:hover{box-shadow:0 0 8px var(--danger-glow)}
.spot.reserved{background:rgba(255,184,0,0.1);border-color:rgba(255,184,0,0.5);color:var(--warning)}
.spot.reserved:hover{box-shadow:0 0 8px var(--warning-glow)}
.spot.handicap{background:rgba(90,185,255,0.1);border-color:rgba(90,185,255,0.5);color:var(--info)}

/* ===== Tabs ===== */
.tabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:20px}
.tab{padding:12px 22px;cursor:pointer;font-size:11px;color:var(--text-muted);border-bottom:2px solid transparent;font-weight:600;text-transform:uppercase;letter-spacing:2px;font-family:var(--font-mono);transition:all .15s}
.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:700;text-shadow:0 0 8px var(--primary-glow)}
.tab:hover{color:var(--text-bright)}

/* ===== QR ===== */
.qr-panel{text-align:center;padding:24px;background:#fff;border:1px solid var(--primary);position:relative}
.qr-panel canvas,.qr-panel img{margin:0 auto;display:block}

/* ===== Alerts / incidents ===== */
.alert-item{
  padding:13px 16px;border:1px solid var(--border);border-left:3px solid var(--info);
  background:var(--surface-2);margin-bottom:8px;
  display:flex;justify-content:space-between;align-items:start;gap:10px;position:relative;
}
.alert-item.danger{border-left-color:var(--danger);background:linear-gradient(90deg,rgba(255,56,96,0.08),var(--surface-2))}
.alert-item.warning{border-left-color:var(--warning);background:linear-gradient(90deg,rgba(255,184,0,0.08),var(--surface-2))}
.alert-item.success{border-left-color:var(--success);background:linear-gradient(90deg,rgba(0,255,157,0.08),var(--surface-2))}
.alert-content{flex:1}
.alert-title{font-weight:600;font-size:13px;margin-bottom:4px;color:var(--text-bright)}
.alert-meta{font-size:11px;color:var(--text-muted);font-family:var(--font-mono)}
.alert-time{font-size:11px;color:var(--text-muted);white-space:nowrap;font-family:var(--font-mono)}

.empty-state{padding:40px;text-align:center;color:var(--text-muted);font-size:12px;font-family:var(--font-mono);letter-spacing:1px}

/* ===== Login ===== */
.login-overlay{
  position:fixed;inset:0;background:var(--bg);
  background-image:
    radial-gradient(circle at 15% 30%,rgba(0,212,255,0.07) 0%,transparent 40%),
    radial-gradient(circle at 85% 70%,rgba(90,185,255,0.05) 0%,transparent 40%),
    linear-gradient(rgba(0,212,255,0.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(0,212,255,0.025) 1px,transparent 1px);
  background-size:100% 100%,100% 100%,40px 40px,40px 40px;
  display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px;overflow:hidden;
}
.login-overlay::before{
  content:"";position:absolute;left:0;right:0;height:200px;
  background:linear-gradient(180deg,transparent,var(--primary-glow),transparent);
  opacity:.15;animation:scan 8s linear infinite;
}
.login-box{
  background:var(--surface);border:1px solid var(--primary);padding:42px 38px;
  width:100%;max-width:420px;
  box-shadow:0 0 40px var(--primary-glow),var(--shadow-lg);position:relative;
}
.login-box::before{content:"";position:absolute;top:-1px;left:-1px;width:30px;height:30px;border-top:2px solid var(--primary);border-left:2px solid var(--primary)}
.login-box::after{content:"";position:absolute;bottom:-1px;right:-1px;width:30px;height:30px;border-bottom:2px solid var(--primary);border-right:2px solid var(--primary)}
.login-brand{text-align:center;margin-bottom:30px}
.login-brand .logo-shield{width:60px;height:60px;font-size:24px;margin:0 auto 14px}
.login-brand h2{font-family:var(--font-display);font-size:28px;font-weight:700;text-transform:uppercase;letter-spacing:4px;color:var(--text-bright)}
.login-brand p{font-size:10px;color:var(--text-muted);margin-top:8px;text-transform:uppercase;letter-spacing:3px;font-family:var(--font-mono)}
.login-error{margin-top:12px;padding:8px 12px;background:rgba(255,56,96,0.1);border:1px solid var(--danger);color:var(--danger);font-size:11px;text-align:center;font-family:var(--font-mono);letter-spacing:1px}

/* ===== Main courante ===== */
.mc-entry{display:grid;grid-template-columns:90px 1fr;gap:16px;padding:14px 0;border-bottom:1px solid var(--border);position:relative}
.mc-entry:last-child{border-bottom:none}
.mc-time{font-size:10px;color:var(--text-muted);text-align:right;font-variant-numeric:tabular-nums;line-height:1.4;font-family:var(--font-mono);letter-spacing:1px}
.mc-time strong{display:block;color:var(--primary);font-size:16px;font-weight:700;font-family:var(--font-mono);text-shadow:0 0 6px var(--primary-glow)}
.mc-content{background:var(--surface-2);border:1px solid var(--border);border-left:3px solid var(--primary);padding:14px 16px;position:relative}
.mc-entry.priorite-importante .mc-content{border-left-color:var(--warning);background:linear-gradient(90deg,rgba(255,184,0,0.08),var(--surface-2))}
.mc-entry.priorite-critique .mc-content{border-left-color:var(--danger);background:linear-gradient(90deg,rgba(255,56,96,0.1),var(--surface-2));box-shadow:0 0 16px rgba(255,56,96,0.1)}
.mc-entry.new-entry{animation:slideInMC .4s ease-out}
.mc-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.mc-tags{display:flex;gap:6px;flex-wrap:wrap}
.mc-poste{display:inline-flex;align-items:center;gap:4px;background:var(--primary);color:var(--bg);padding:3px 10px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;font-family:var(--font-mono);box-shadow:0 0 8px var(--primary-glow)}
.mc-poste.rondier{background:var(--info);box-shadow:0 0 8px rgba(90,185,255,0.3)}
.mc-poste.chef{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);color:#fff}
.mc-desc{font-size:13px;line-height:1.6;color:var(--text)}
.mc-meta{font-size:10px;color:var(--text-muted);margin-top:8px;font-family:var(--font-mono);letter-spacing:.5px}
.agent-actif{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--bg-2);border:1px solid var(--border);margin-bottom:6px;font-size:12px}
.agent-actif .avatar{width:28px;height:28px;font-size:11px}
.agent-actif-info{flex:1}
.agent-actif-info strong{display:block;font-size:12px;color:var(--text-bright);text-transform:uppercase;letter-spacing:1px}
.agent-actif-info span{color:var(--text-muted);font-size:10px;font-family:var(--font-mono)}
.agent-actif-count{background:var(--success);color:var(--bg);padding:3px 10px;font-size:10px;font-weight:700;font-family:var(--font-mono);box-shadow:0 0 6px var(--success-glow)}

/* ===== LAPI ===== */
.lapi-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:18px}
@media(max-width:980px){.lapi-grid{grid-template-columns:1fr}}
.camera-frame{position:relative;background:#000;border:1px solid var(--primary);overflow:hidden;aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;box-shadow:0 0 16px var(--primary-glow)}
.camera-frame::before{content:"";position:absolute;top:8px;left:8px;width:20px;height:20px;border-top:2px solid var(--primary);border-left:2px solid var(--primary);z-index:5}
.camera-frame::after{content:"";position:absolute;bottom:8px;right:8px;width:20px;height:20px;border-bottom:2px solid var(--primary);border-right:2px solid var(--primary);z-index:5}
.camera-frame video,.camera-frame canvas,.camera-frame img{width:100%;height:100%;object-fit:cover;display:block}
.camera-overlay{position:absolute;inset:0;pointer-events:none;display:flex;align-items:center;justify-content:center}
.targeting-rect{width:70%;height:30%;border:2px solid var(--primary);position:relative;box-shadow:0 0 0 9999px rgba(0,0,0,0.55),0 0 20px var(--primary-glow)}
.targeting-rect::before{content:"⊳ VISEUR LAPI / SCAN";position:absolute;top:-28px;left:0;color:var(--primary);font-size:10px;letter-spacing:3px;font-weight:700;font-family:var(--font-mono);text-shadow:0 0 8px var(--primary-glow)}
.targeting-rect::after{content:"";position:absolute;left:0;right:0;height:2px;background:var(--primary);box-shadow:0 0 12px var(--primary-glow);animation:scanLine 2s ease-in-out infinite}
.camera-status{position:absolute;top:12px;right:12px;background:rgba(255,56,96,0.15);color:var(--danger);border:1px solid var(--danger);padding:4px 12px;font-size:10px;display:flex;align-items:center;gap:6px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:2px;font-weight:700;z-index:6}
.camera-status.live::before{content:"";width:8px;height:8px;background:var(--danger);border-radius:50%;animation:pulse 1.2s infinite;box-shadow:0 0 8px var(--danger-glow)}
.camera-placeholder{color:var(--text-muted);text-align:center;padding:40px;font-size:12px;font-family:var(--font-mono);letter-spacing:1px}
.camera-controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.btn-capture{
  background:linear-gradient(135deg,var(--danger),#cc2848);color:#fff;
  font-size:13px;padding:14px 36px;font-weight:700;border:1px solid var(--danger);cursor:pointer;
  display:inline-flex;align-items:center;gap:12px;
  box-shadow:0 0 20px var(--danger-glow);transition:all .15s;
  text-transform:uppercase;letter-spacing:3px;font-family:var(--font-display);
  clip-path:polygon(12px 0,100% 0,calc(100% - 12px) 100%,0 100%);
}
.btn-capture:hover{box-shadow:0 0 30px var(--danger-glow);transform:translateY(-1px)}
.btn-capture:active{transform:translateY(1px)}
.btn-capture:disabled{background:var(--surface-3);color:var(--text-dim);border-color:var(--border);box-shadow:none;cursor:not-allowed}
.btn-capture .dot{width:14px;height:14px;background:#fff;border-radius:50%;border:2px solid var(--danger);box-shadow:0 0 8px rgba(255,255,255,0.6);animation:pulse 1.2s infinite}
.btn-capture:disabled .dot{background:var(--text-dim);animation:none}
.plate-display{
  background:linear-gradient(180deg,#1a1f2e,#0d1220);border:2px solid var(--primary);
  padding:14px 24px 14px 50px;font-family:var(--font-mono);
  font-size:32px;font-weight:700;letter-spacing:6px;color:var(--primary);text-align:center;
  margin:14px 0;position:relative;min-height:68px;display:flex;align-items:center;justify-content:center;
  text-shadow:0 0 12px var(--primary-glow);box-shadow:inset 0 0 20px rgba(0,212,255,0.1),0 0 12px var(--primary-glow);
}
.plate-display.empty{color:var(--text-dim);font-size:13px;letter-spacing:2px;font-weight:500;text-shadow:none}
.plate-display::before{content:"FR";position:absolute;left:0;top:0;bottom:0;width:36px;background:#003399;color:#fcd116;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:bold;letter-spacing:1px;border-right:2px solid var(--primary);font-family:var(--font-mono)}
.confidence-bar{height:6px;background:var(--bg-2);overflow:hidden;margin:4px 0;border:1px solid var(--border)}
.confidence-fill{height:100%;background:linear-gradient(90deg,var(--success),#00cc7d);transition:width .3s;box-shadow:0 0 8px var(--success-glow)}
.confidence-fill.medium{background:linear-gradient(90deg,var(--warning),#cc9300);box-shadow:0 0 8px var(--warning-glow)}
.confidence-fill.low{background:linear-gradient(90deg,var(--danger),#cc2848);box-shadow:0 0 8px var(--danger-glow)}
.captured-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-top:12px}
.captured-thumb{border:1px solid var(--border);overflow:hidden;cursor:pointer;background:#000;aspect-ratio:16/10;position:relative;transition:all .15s}
.captured-thumb:hover{border-color:var(--primary);box-shadow:0 0 12px var(--primary-glow)}
.captured-thumb img{width:100%;height:100%;object-fit:cover}
.captured-thumb .plate-tag{position:absolute;bottom:0;left:0;right:0;background:rgba(0,0,0,0.8);color:var(--primary);font-size:10px;text-align:center;padding:4px;font-family:var(--font-mono);font-weight:700;letter-spacing:1px;border-top:1px solid var(--primary)}
.lapi-status-banner{padding:12px 16px;font-size:12px;margin-bottom:14px;display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-left-width:3px;background:var(--surface-2);font-family:var(--font-mono);letter-spacing:.5px}
.lapi-status-banner.info{border-left-color:var(--info);color:var(--info);background:linear-gradient(90deg,rgba(90,185,255,0.08),var(--surface-2))}
.lapi-status-banner.success{border-left-color:var(--success);color:var(--success);background:linear-gradient(90deg,rgba(0,255,157,0.08),var(--surface-2))}
.lapi-status-banner.warning{border-left-color:var(--warning);color:var(--warning);background:linear-gradient(90deg,rgba(255,184,0,0.08),var(--surface-2))}
.lapi-status-banner.danger{border-left-color:var(--danger);color:var(--danger);background:linear-gradient(90deg,rgba(255,56,96,0.1),var(--surface-2))}

@media print{
  .sidebar,.topbar,.toolbar,.modal-backdrop{display:none!important}
  .main{margin-left:0}
  .content{padding:0}
}

/* ===== Clean macOS theme ===== */
:root{
  --bg:#eef4fb;
  --bg-2:#f7fbff;
  --surface:rgba(255,255,255,0.86);
  --surface-2:rgba(247,250,255,0.92);
  --surface-3:#edf4fb;
  --border:rgba(42,65,92,0.12);
  --border-bright:rgba(37,117,252,0.24);
  --primary:#2575fc;
  --primary-dark:#1a5fd0;
  --primary-glow:rgba(37,117,252,0.18);
  --accent:#21c7a8;
  --accent-glow:rgba(33,199,168,0.18);
  --success:#23c483;
  --success-glow:rgba(35,196,131,0.18);
  --warning:#f7a928;
  --warning-glow:rgba(247,169,40,0.2);
  --danger:#ff5f6d;
  --danger-glow:rgba(255,95,109,0.18);
  --info:#5b8cff;
  --text:#263244;
  --text-bright:#111827;
  --text-muted:#6f7d91;
  --text-dim:#9aa7b7;
  --shadow:0 14px 34px rgba(37,55,88,0.10);
  --shadow-lg:0 26px 70px rgba(37,55,88,0.16);
  --font-display:'Inter',sans-serif;
}

body{
  background:
    radial-gradient(circle at 12% 18%,rgba(37,117,252,.15),transparent 32%),
    radial-gradient(circle at 85% 16%,rgba(33,199,168,.16),transparent 28%),
    linear-gradient(145deg,#f8fbff 0%,#edf5ff 48%,#f3f7fb 100%);
  color:var(--text);
  letter-spacing:0;
}
.app::before,.sidebar::before,.brand::after,.topbar::after,.card::before,.card::after{display:none}
.sidebar{
  width:268px;
  background:rgba(255,255,255,.62);
  backdrop-filter:blur(26px) saturate(1.4);
  border-right:1px solid rgba(255,255,255,.72);
  box-shadow:8px 0 30px rgba(49,71,103,.08);
}
.main{margin-left:268px}
.brand{padding:24px 22px;border-bottom:1px solid var(--border)}
.brand h1{
  font-size:18px;letter-spacing:0;text-transform:none;font-weight:800;color:#182235;
}
.brand p,.nav-title,.user-info span,.kpi-label,.kpi-trend,.form-group label,th,.badge{
  letter-spacing:.02em;text-transform:none;font-family:var(--font-body);
}
.app-logo{box-shadow:0 10px 25px rgba(35,45,65,.14)}
.app-logo-sidebar{width:50px;height:50px}
.nav-section{padding:10px 12px}
.nav-title{padding:15px 12px 7px;font-size:11px;color:#9aa7b7;font-weight:700}
.nav-title::before{display:none}
.nav-item{
  padding:11px 13px;border-left:0;border-radius:14px;
  color:#657287;font-size:13px;letter-spacing:0;text-transform:none;font-weight:650;
}
.nav-item:hover{
  background:rgba(37,117,252,.08);color:#1d4ed8;border-left-color:transparent;
}
.nav-item.active{
  background:linear-gradient(135deg,#2575fc,#21c7a8);
  color:#fff;border-left-color:transparent;box-shadow:0 12px 26px rgba(37,117,252,.24);
}
.nav-item.active::after{display:none}
.nav-icon{font-size:16px}
.topbar{
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(24px) saturate(1.35);
  border-bottom:1px solid rgba(255,255,255,.76);
  box-shadow:0 10px 28px rgba(35,55,85,.08);
  padding:14px 28px;
}
.page-title{
  font-family:var(--font-body);font-size:20px;text-transform:none;letter-spacing:0;
  font-weight:800;color:#172033;
}
.page-title::before{display:none}
.live-indicator{
  border:0;background:rgba(35,196,131,.12);color:#15956b;border-radius:999px;
  letter-spacing:0;text-transform:none;font-family:var(--font-body);font-weight:750;
}
.topbar-right select{
  border-radius:12px!important;background:rgba(255,255,255,.82)!important;color:var(--text)!important;
  border-color:var(--border)!important;text-transform:none!important;
}
.user-chip{
  clip-path:none;border-radius:18px;background:rgba(255,255,255,.72);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.72),0 8px 22px rgba(37,55,88,.08);
}
.avatar{
  clip-path:none;border-radius:50%;background:linear-gradient(135deg,#2575fc,#21c7a8);color:#fff;
}
.user-info strong{color:#182235;text-transform:none;letter-spacing:0}
.btn-icon{
  border-radius:13px;background:rgba(255,255,255,.76);border:1px solid var(--border);color:#68758a;
}
.btn-icon:hover{background:#fff;color:var(--primary);box-shadow:0 10px 24px rgba(37,117,252,.14)}
.content{padding:28px}
.kpi-grid{gap:18px}
.kpi-card,.card,.modal,.login-box,.mc-content,.agent-actif,.lapi-status-banner{
  border-radius:22px;background:var(--surface);border:1px solid rgba(255,255,255,.82);
  box-shadow:var(--shadow);overflow:hidden;
}
.kpi-card{
  border-left:0;padding:20px 22px;
}
.kpi-card::before{
  opacity:.8;background:radial-gradient(circle at top right,rgba(37,117,252,.13),transparent 72%);
}
.kpi-card::after{display:none}
.kpi-card:hover,.card:hover{transform:translateY(-2px);box-shadow:0 20px 42px rgba(37,55,88,.14)}
.kpi-card.success::before{background:radial-gradient(circle at top right,rgba(35,196,131,.14),transparent 72%)}
.kpi-card.warning::before{background:radial-gradient(circle at top right,rgba(247,169,40,.16),transparent 72%)}
.kpi-card.danger::before{background:radial-gradient(circle at top right,rgba(255,95,109,.14),transparent 72%)}
.kpi-label{font-size:12px;color:#7b8798;font-weight:750}
.kpi-value{font-family:var(--font-body);font-size:34px;letter-spacing:0;color:#151f32}
.card{margin-bottom:22px}
.card-header{
  background:transparent;border-bottom:1px solid var(--border);padding:17px 20px;
}
.card-title{font-family:var(--font-body);font-size:15px;text-transform:none;letter-spacing:0;font-weight:800;color:#182235}
.btn{
  border-radius:13px;text-transform:none;letter-spacing:0;font-weight:750;
  box-shadow:none;
}
.btn::before{display:none}
.btn-primary,.btn-success{
  background:linear-gradient(135deg,#2575fc,#21c7a8);color:#fff;box-shadow:0 12px 24px rgba(37,117,252,.22);
}
.btn-accent,.btn-danger{
  background:linear-gradient(135deg,#ff5f6d,#ff8a5c);box-shadow:0 12px 24px rgba(255,95,109,.18);
}
.btn-outline{
  background:rgba(255,255,255,.78);border-color:var(--border);color:#46566d;
}
.btn-outline:hover{background:#fff;color:var(--primary);box-shadow:0 10px 22px rgba(37,117,252,.12)}
.form-group input,.form-group select,.form-group textarea{
  border-radius:14px;background:rgba(255,255,255,.9);border:1px solid var(--border);color:#1e293b;
}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{
  background:#fff;border-color:rgba(37,117,252,.55);
  box-shadow:0 0 0 4px rgba(37,117,252,.12);
}
.form-group select option{background:#fff;color:#1e293b}
.form-group input[type="datetime-local"],.form-group input[type="date"]{color-scheme:light}
th{background:#f5f8fc;color:#7b8798}
td{color:#334155}
td strong{color:#172033}
tr:hover td{background:rgba(37,117,252,.045)}
td code,code{border-radius:9px;background:#eef5ff;color:#1d4ed8;border:0}
.badge{
  border-radius:999px;border:0;padding:4px 10px;
}
.badge.success{background:rgba(35,196,131,.13);color:#0f8b63}
.badge.warning{background:rgba(247,169,40,.16);color:#a56408}
.badge.danger{background:rgba(255,95,109,.14);color:#c2414d}
.badge.info{background:rgba(37,117,252,.12);color:#1d4ed8}
.badge.muted{background:#edf2f7;color:#708097}
.login-overlay{
  background:
    radial-gradient(circle at 12% 18%,rgba(37,117,252,.15),transparent 32%),
    radial-gradient(circle at 85% 16%,rgba(33,199,168,.16),transparent 28%),
    linear-gradient(145deg,#f8fbff 0%,#edf5ff 48%,#f3f7fb 100%);
}
.login-overlay::before{display:none}
.login-box{
  max-width:430px;border:1px solid rgba(255,255,255,.82);padding:40px;
  background:rgba(255,255,255,.76);backdrop-filter:blur(24px) saturate(1.25);
  box-shadow:0 30px 80px rgba(37,55,88,.16);
}
.login-box::before,.login-box::after{display:none}
.login-brand h2{font-family:var(--font-body);letter-spacing:0;text-transform:none;color:#172033}
.login-brand p{letter-spacing:0;text-transform:none;font-family:var(--font-body)}
.modal-backdrop{background:rgba(226,236,248,.62)}
.modal{border:1px solid rgba(255,255,255,.86);background:rgba(255,255,255,.9)}
.camera-frame,.plate-display{
  border-radius:22px;border-color:rgba(37,117,252,.25);box-shadow:var(--shadow);
}
.camera-frame::before,.camera-frame::after,.targeting-rect::before{display:none}
.btn-capture{
  border-radius:18px;clip-path:none;background:linear-gradient(135deg,#2575fc,#21c7a8);
  border:0;letter-spacing:0;font-family:var(--font-body);box-shadow:0 14px 26px rgba(37,117,252,.24);
}
.plate-display{
  background:#fff;color:#1d4ed8;text-shadow:none;letter-spacing:4px;
}
.confidence-bar{border-radius:999px;border:0;background:#e6edf6}
.confidence-fill{border-radius:999px}
.mc-poste{border-radius:999px;background:linear-gradient(135deg,#2575fc,#21c7a8);color:#fff;box-shadow:none}
.mc-time strong{text-shadow:none;color:#1d4ed8}
.alert-item{border-radius:18px}

@media(max-width:760px){
  .sidebar{width:232px}
  .main{margin-left:232px}
  .topbar{padding:12px 16px}
  .live-indicator{display:none}
}

/* ===== Strong CleanMyMac-like original theme ===== */
body{
  background:
    radial-gradient(circle at 50% -10%,rgba(79,140,255,.20),transparent 34%),
    radial-gradient(circle at 84% 18%,rgba(66,220,181,.18),transparent 28%),
    linear-gradient(180deg,#f9fcff 0%,#edf4fb 52%,#e8f0f7 100%);
}
.sidebar{
  background:linear-gradient(180deg,rgba(255,255,255,.84),rgba(244,249,255,.70));
  border-right:1px solid rgba(204,216,230,.72);
}
.brand{padding:26px 22px 22px}
.brand h1{font-size:17px;color:#182033}
.nav-item{margin:3px 0;border-radius:18px;color:#758399}
.nav-item.active{background:#fff;color:#2370f4;box-shadow:0 12px 28px rgba(50,86,130,.12)}
.nav-item.active .nav-icon{filter:saturate(1.2)}
.topbar{
  background:rgba(249,252,255,.78);
  border-bottom:1px solid rgba(214,224,236,.75);
  box-shadow:none;
}
.content{padding:30px 34px}
.clean-hero{
  min-height:280px;margin-bottom:24px;padding:30px;
  display:grid;grid-template-columns:220px 1fr auto;align-items:center;gap:30px;
  background:
    radial-gradient(circle at 18% 50%,rgba(37,117,252,.18),transparent 30%),
    radial-gradient(circle at 78% 28%,rgba(33,199,168,.18),transparent 30%),
    rgba(255,255,255,.78);
  border:1px solid rgba(255,255,255,.9);border-radius:34px;
  box-shadow:0 30px 80px rgba(44,67,104,.14);
  position:relative;overflow:hidden;
}
.clean-hero::after{
  content:"";position:absolute;inset:auto -8% -45% auto;width:360px;height:360px;border-radius:50%;
  background:linear-gradient(135deg,rgba(37,117,252,.18),rgba(33,199,168,.16));filter:blur(8px);
}
.clean-orb{
  width:190px;height:190px;border-radius:50%;display:grid;place-items:center;position:relative;
  background:conic-gradient(from 180deg,#2575fc,#21c7a8,#7dd3fc,#2575fc);
  box-shadow:0 24px 60px rgba(37,117,252,.22),inset 0 0 0 12px rgba(255,255,255,.38);
}
.clean-orb::before{content:"";position:absolute;inset:16px;border-radius:50%;background:#fff;box-shadow:inset 0 0 32px rgba(37,117,252,.12)}
.clean-orb-ring{position:absolute;inset:0;border-radius:50%;background:conic-gradient(transparent 0 22%,rgba(255,255,255,.88) 22% 30%,transparent 30%);animation:spinClean 5s linear infinite}
.clean-orb img{position:relative;z-index:1;width:118px;height:118px;border-radius:50%;object-fit:contain;box-shadow:0 10px 25px rgba(21,34,52,.16)}
@keyframes spinClean{to{transform:rotate(360deg)}}
.clean-hero-copy{position:relative;z-index:1;max-width:620px}
.clean-eyebrow{font-size:12px;font-weight:800;color:#2370f4;margin-bottom:10px}
.clean-hero h2{font-size:38px;line-height:1.08;color:#111827;margin-bottom:12px;letter-spacing:-.02em}
.clean-hero p{font-size:15px;color:#657287;max-width:560px;margin-bottom:22px}
.clean-actions{display:flex;gap:12px;flex-wrap:wrap}
.clean-score{position:relative;z-index:1;min-width:130px;padding:20px;border-radius:24px;background:rgba(255,255,255,.74);box-shadow:inset 0 0 0 1px rgba(255,255,255,.8),0 14px 34px rgba(37,55,88,.10);text-align:center}
.clean-score span{display:block;font-size:12px;color:#7b8798;font-weight:700;margin-bottom:8px}
.clean-score strong{display:block;font-size:34px;color:#18a877;letter-spacing:-.04em}
.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:20px}
.kpi-card,.card{
  border-radius:28px;background:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.92);
  box-shadow:0 20px 55px rgba(44,67,104,.10);
}
.kpi-card{padding:24px}
.kpi-value{font-size:42px;color:#111827}
.card-header{padding:19px 22px}
.card-body{padding:22px}
.btn{border-radius:999px;padding:10px 18px}
.btn-primary{background:linear-gradient(135deg,#2370f4,#19c8a7);box-shadow:0 16px 34px rgba(35,112,244,.25)}
.btn-outline{background:rgba(255,255,255,.9)}
.form-group input,.form-group select,.form-group textarea{border-radius:18px}
.login-box{border-radius:34px}
.modal{border-radius:30px}
@media(max-width:980px){.clean-hero{grid-template-columns:1fr;text-align:center}.clean-orb{margin:auto}.clean-hero-copy{margin:auto}.clean-actions{justify-content:center}.clean-score{margin:auto}}

/* ===== Sidebar noire + sélection jaune ===== */
.sidebar{
  background:#050505!important;
  border-right:1px solid rgba(255,255,255,.08)!important;
  box-shadow:8px 0 26px rgba(0,0,0,.28)!important;
}
.brand{
  border-bottom:1px solid rgba(255,255,255,.10)!important;
}
.brand h1,
.brand p,
.nav-title,
.nav-item{
  color:#fff!important;
}
.nav-title{
  opacity:.72;
}
.nav-item{
  background:transparent!important;
  border-left:0!important;
}
.nav-item:hover{
  color:#ffd400!important;
  background:rgba(255,212,0,.10)!important;
}
.nav-item.active{
  color:#ffd400!important;
  background:rgba(255,212,0,.14)!important;
  box-shadow:none!important;
}
.nav-item:hover .nav-icon,
.nav-item.active .nav-icon{
  color:#ffd400!important;
  filter:none!important;
}

/* ===== Barre du haut noire + interactions jaunes ===== */
.topbar{
  background:#050505!important;
  border-bottom:1px solid rgba(255,255,255,.08)!important;
  box-shadow:0 8px 24px rgba(0,0,0,.22)!important;
}
.page-title,
.user-info strong,
.user-info span{
  color:#fff!important;
}
.app-logo-topbar{
  box-shadow:0 0 0 2px rgba(255,212,0,.18),0 8px 18px rgba(0,0,0,.25)!important;
}
.topbar .live-indicator{
  background:rgba(255,212,0,.12)!important;
  color:#ffd400!important;
  border:1px solid rgba(255,212,0,.28)!important;
}
.topbar .live-dot,
.notif-dot{
  background:#ffd400!important;
  box-shadow:0 0 10px rgba(255,212,0,.65)!important;
}
.topbar-right select,
.topbar .btn-icon,
.topbar .user-chip,
.topbar .btn-logout{
  background:rgba(255,255,255,.08)!important;
  border-color:rgba(255,255,255,.14)!important;
  color:#fff!important;
}
.topbar-right select:hover,
.topbar .btn-icon:hover,
.topbar .user-chip:hover,
.topbar .btn-logout:hover{
  color:#ffd400!important;
  border-color:rgba(255,212,0,.45)!important;
  background:rgba(255,212,0,.10)!important;
  box-shadow:none!important;
}
.topbar .avatar{
  background:#ffd400!important;
  color:#050505!important;
}

/* ===== Rond d'état rouge si tâches/incidents non conformes ===== */
.clean-hero.danger .clean-orb{
  background:conic-gradient(from 180deg,#ff2d55,#ff7a45,#ff2d55)!important;
  box-shadow:0 24px 60px rgba(255,45,85,.30),inset 0 0 0 12px rgba(255,255,255,.38)!important;
}
.clean-hero.danger .clean-orb-ring{
  background:conic-gradient(transparent 0 18%,rgba(255,45,85,.95) 18% 34%,transparent 34%)!important;
}
.clean-hero.danger .clean-score strong{
  color:#ff2d55!important;
}
.clean-hero.danger .clean-score{
  box-shadow:inset 0 0 0 1px rgba(255,45,85,.18),0 18px 42px rgba(255,45,85,.16)!important;
}
.clean-hero.ok .clean-score strong{
  color:#18a877!important;
}

/* ===== Rond orange pendant analyse manuelle ===== */
.clean-hero.analyzing .clean-orb{
  background:conic-gradient(from 180deg,#ff9500,#ffd400,#ff9500)!important;
  box-shadow:0 24px 60px rgba(255,149,0,.30),inset 0 0 0 12px rgba(255,255,255,.38)!important;
}
.clean-hero.analyzing .clean-orb-ring{
  background:conic-gradient(transparent 0 18%,rgba(255,149,0,.95) 18% 34%,transparent 34%)!important;
  animation-duration:1s!important;
}
.clean-hero.analyzing .clean-score strong{
  color:#ff9500!important;
}
.clean-hero.analyzing .clean-score{
  box-shadow:inset 0 0 0 1px rgba(255,149,0,.20),0 18px 42px rgba(255,149,0,.16)!important;
}

/* ===== Hauteur topbar constante sur toutes les pages ===== */
.topbar{
  height:72px!important;
  min-height:72px!important;
  max-height:72px!important;
  padding-top:0!important;
  padding-bottom:0!important;
  overflow:hidden!important;
}
.topbar-left,.topbar-right{
  height:100%;
  min-width:0;
}
.page-title{
  max-width:46vw;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.topbar .user-chip,
.topbar-right select,
.topbar .btn-icon,
.topbar .btn-logout{
  height:42px!important;
  flex:0 0 auto;
}
.topbar .btn-logout{
  white-space:nowrap;
}

/* Masquer la deuxième ligne vide du profil utilisateur */
.user-info span:empty{display:none}

/* Rôle AGENT : masque toutes les actions réservées à l'administrateur
   (suppressions, gestion employés/badges, paramètres, gestion caméras…) */
body.role-agent .admin-only{ display:none !important; }

/* ===== Console administration système ===== */
.admin-console-card{
  overflow:hidden;
  border-color:rgba(90,185,255,.32);
  background:linear-gradient(180deg,rgba(16,24,39,.98),rgba(12,18,32,.98));
}
.admin-console-head{
  padding:20px 22px;
  border-bottom:1px solid var(--border);
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
  background:
    linear-gradient(90deg,rgba(0,212,255,.10),transparent 48%),
    linear-gradient(135deg,var(--surface-2),var(--surface));
}
.admin-console-kicker{
  color:var(--primary);
  font-family:var(--font-mono);
  font-size:10px;
  font-weight:700;
  letter-spacing:2px;
  text-transform:uppercase;
  margin-bottom:4px;
}
.admin-console-title{
  color:var(--text-bright);
  font-family:var(--font-display);
  font-size:26px;
  font-weight:700;
  letter-spacing:1px;
  text-transform:uppercase;
  line-height:1;
}
.admin-console-actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:8px;
}
.admin-console-body{padding:18px 20px 20px}
.admin-status-grid{
  display:grid;
  grid-template-columns:minmax(280px,1.6fr) repeat(3,minmax(150px,1fr));
  gap:12px;
  margin-bottom:14px;
}
.admin-status-main,.admin-meta-card,.admin-action-tile,.admin-panel,.admin-kpi{
  border:1px solid var(--border);
  background:rgba(7,11,20,.54);
}
.admin-status-main{
  display:flex;
  align-items:center;
  gap:14px;
  padding:16px;
  border-left:3px solid var(--success);
}
.admin-status-orb{
  width:50px;
  height:50px;
  border:1px solid rgba(0,255,157,.45);
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 0 18px rgba(0,255,157,.12);
}
.admin-status-orb span{
  width:18px;
  height:18px;
  border-radius:50%;
  background:var(--success);
  box-shadow:0 0 16px var(--success-glow);
  animation:pulse 1.4s infinite;
}
.admin-status-label,.admin-meta-card span,.admin-kpi span{
  display:block;
  color:var(--text-muted);
  font-family:var(--font-mono);
  font-size:10px;
  font-weight:700;
  letter-spacing:1.6px;
  text-transform:uppercase;
}
.admin-status-value{
  color:var(--text-bright);
  font-family:var(--font-display);
  font-size:22px;
  font-weight:700;
  text-transform:uppercase;
}
.admin-status-meta,.admin-meta-card strong,.admin-kpi small,.admin-panel-head p{
  color:var(--text-muted);
  font-size:11px;
  font-family:var(--font-mono);
}
.admin-meta-card{
  padding:14px;
  min-width:0;
}
.admin-meta-card strong{
  display:block;
  margin-top:8px;
  color:var(--text-bright);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.admin-quick-actions{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin-bottom:14px;
}
.admin-action-tile{
  padding:14px;
  color:var(--text);
  cursor:pointer;
  text-align:left;
  transition:all .16s;
}
.admin-action-tile:hover{
  border-color:var(--primary);
  background:rgba(0,212,255,.08);
  transform:translateY(-1px);
}
.admin-action-tile span{
  display:block;
  font-size:18px;
  margin-bottom:8px;
}
.admin-action-tile strong{
  display:block;
  color:var(--text-bright);
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:1px;
}
.admin-action-tile small{
  color:var(--text-muted);
  font-size:11px;
}
.admin-kpi-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin-bottom:14px;
}
.admin-kpi{
  padding:15px 16px;
  border-left:3px solid var(--info);
  position:relative;
  overflow:hidden;
}
.admin-kpi::after{
  content:"";
  position:absolute;
  top:0;
  right:0;
  width:80px;
  height:80px;
  opacity:.18;
  background:radial-gradient(circle at top right,currentColor,transparent 70%);
}
.admin-kpi strong{
  display:block;
  color:var(--text-bright);
  font-family:var(--font-display);
  font-size:32px;
  line-height:1;
  margin:8px 0 6px;
}
.admin-kpi.info{color:var(--info);border-left-color:var(--info)}
.admin-kpi.success{color:var(--success);border-left-color:var(--success)}
.admin-kpi.warning{color:var(--warning);border-left-color:var(--warning)}
.admin-kpi.danger{color:var(--danger);border-left-color:var(--danger)}
.admin-workbench{
  display:grid;
  grid-template-columns:1fr 1.25fr;
  gap:14px;
}
.admin-panel{
  min-width:0;
}
.admin-panel-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:14px 16px;
  border-bottom:1px solid var(--border);
  background:linear-gradient(90deg,rgba(23,32,51,.86),rgba(23,32,51,.18));
}
.admin-panel-head h3{
  color:var(--text-bright);
  font-family:var(--font-display);
  font-size:15px;
  font-weight:700;
  letter-spacing:1.2px;
  text-transform:uppercase;
}
.admin-search{
  min-width:210px;
  flex:0 1 280px;
}
.admin-search input{
  width:100%;
  padding:9px 11px;
  background:var(--bg-2);
  border:1px solid var(--border);
  color:var(--text);
  font-size:12px;
}
.admin-search input:focus{
  outline:none;
  border-color:var(--primary);
  box-shadow:0 0 0 1px var(--primary),0 0 12px var(--primary-glow);
}
.admin-table-wrap{
  max-height:360px;
  overflow:auto;
}
.admin-panel td,.admin-panel th{
  padding:10px 12px;
}
@media(max-width:1180px){
  .admin-status-grid{grid-template-columns:1fr 1fr}
  .admin-quick-actions,.admin-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .admin-workbench{grid-template-columns:1fr}
}
@media(max-width:720px){
  .admin-console-head,.admin-panel-head{align-items:flex-start}
  .admin-console-head,.admin-panel-head{flex-direction:column}
  .admin-status-grid,.admin-quick-actions,.admin-kpi-grid{grid-template-columns:1fr}
  .admin-console-title{font-size:21px}
  .admin-search{width:100%;min-width:0}
}
