
:root{
  --bg:#08111f;
  --bg-2:#0c1727;
  --panel:#111d2d;
  --panel-2:#152235;
  --border:#24364d;
  --text:#edf4fb;
  --muted:#8da0b6;
  --cyan:#20d5e8;
  --blue:#4c8dff;
  --green:#34d399;
  --yellow:#fbbf24;
  --orange:#fb923c;
  --red:#ff5d73;
  --line:#06c755;
  --shadow:0 18px 55px rgba(0,0,0,.28);
  --sidebar:250px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text)}
body{background:
 radial-gradient(circle at 75% -10%,rgba(32,213,232,.12),transparent 32%),
 radial-gradient(circle at 10% 20%,rgba(76,141,255,.08),transparent 28%),
 var(--bg);}
button,input,select{font:inherit}
button{cursor:pointer}
.app-shell{min-height:100vh}
.sidebar{
  position:fixed;left:0;top:0;bottom:0;width:var(--sidebar);
  background:rgba(10,19,32,.95);border-right:1px solid var(--border);
  display:flex;flex-direction:column;padding:24px 16px;z-index:20;backdrop-filter:blur(18px)
}
.brand{display:flex;align-items:center;gap:12px;padding:0 8px 26px}
.brand-mark{width:44px;height:44px;color:var(--cyan);background:rgba(32,213,232,.08);border:1px solid rgba(32,213,232,.24);border-radius:14px;padding:8px}
.brand-mark svg{width:100%;height:100%}
.brand-name{font-family:"Space Grotesk",sans-serif;font-size:20px;font-weight:700;letter-spacing:.13em}
.brand-subtitle{font-size:10px;color:var(--muted);margin-top:2px}
.nav{display:flex;flex-direction:column;gap:6px}
.nav-item{
  width:100%;border:0;background:transparent;color:var(--muted);display:flex;align-items:center;
  gap:12px;border-radius:12px;padding:12px 13px;text-align:left;font-weight:600;transition:.2s
}
.nav-item:hover{background:rgba(255,255,255,.04);color:var(--text)}
.nav-item.active{background:linear-gradient(90deg,rgba(32,213,232,.15),rgba(76,141,255,.06));color:var(--cyan);box-shadow:inset 3px 0 0 var(--cyan)}
.nav-icon{width:20px;text-align:center}
.nav-badge{margin-left:auto;background:var(--red);color:#fff;font-size:10px;min-width:20px;height:20px;border-radius:99px;display:grid;place-items:center;padding:0 5px}
.sidebar-footer{margin-top:auto;border-top:1px solid var(--border);padding:18px 8px 0}
.system-health{display:flex;gap:10px;align-items:flex-start}
.status-dot{width:9px;height:9px;border-radius:50%;margin-top:5px}
.status-dot.online{background:var(--green);box-shadow:0 0 12px rgba(52,211,153,.65)}
.system-health strong{font-size:12px;display:block}
.system-health small{color:var(--muted);font-size:10px;display:block;margin-top:3px}
.version{font-size:10px;color:#60748c;margin-top:18px}
.main{margin-left:var(--sidebar);min-height:100vh}
.topbar{
  height:86px;display:flex;align-items:center;justify-content:space-between;
  padding:0 30px;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10;
  background:rgba(8,17,31,.86);backdrop-filter:blur(16px)
}
.topbar-left{display:flex;align-items:center;gap:14px}
.topbar h1{margin:0;font-family:"Space Grotesk";font-size:22px}
.topbar p{margin:4px 0 0;color:var(--muted);font-size:12px}
.topbar-right{display:flex;align-items:center;gap:14px}
.live-pill{font-size:10px;font-weight:800;letter-spacing:.08em;border:1px solid rgba(52,211,153,.24);background:rgba(52,211,153,.08);color:var(--green);padding:8px 11px;border-radius:999px}
.pulse{width:7px;height:7px;background:var(--green);border-radius:50%;display:inline-block;margin-right:6px;box-shadow:0 0 0 0 rgba(52,211,153,.8);animation:pulse 1.8s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 8px rgba(52,211,153,0)}100%{box-shadow:0 0 0 0 rgba(52,211,153,0)}}
.clock{font-size:12px;color:var(--muted)}
.user-avatar{width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,var(--cyan),var(--blue));display:grid;place-items:center;color:#06101d;font-weight:800}
.menu-btn{display:none;background:none;border:0;color:var(--text);font-size:22px}
.page{display:none;padding:28px 30px 48px}
.page.active{display:block}
.hero-strip,.integration-banner{
  border:1px solid var(--border);background:
  linear-gradient(115deg,rgba(32,213,232,.10),rgba(76,141,255,.03)),
  var(--panel);border-radius:18px;padding:26px 28px;display:flex;justify-content:space-between;align-items:center;gap:24px;box-shadow:var(--shadow)
}
.hero-strip h2,.integration-banner h2{font-family:"Space Grotesk";font-size:28px;margin:5px 0 8px}
.hero-strip p,.integration-banner p{margin:0;color:var(--muted);max-width:720px;font-size:13px}
.eyebrow{font-size:10px;font-weight:800;letter-spacing:.16em;color:var(--cyan)}
.hero-actions{display:flex;gap:10px;flex-shrink:0}
.btn{border:1px solid transparent;border-radius:10px;padding:10px 15px;font-weight:700;font-size:12px;transition:.2s}
.btn:hover{transform:translateY(-1px)}
.btn-primary{background:linear-gradient(135deg,var(--cyan),#33a5ff);color:#05111c;box-shadow:0 8px 25px rgba(32,213,232,.18)}
.btn-secondary{background:#152235;border-color:var(--border);color:var(--text)}
.text-btn{background:none;border:0;color:var(--cyan);font-weight:700;font-size:12px}
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:18px 0}
.kpi-card{border:1px solid var(--border);background:var(--panel);border-radius:16px;padding:18px;position:relative;overflow:hidden}
.kpi-card:after{content:"";position:absolute;width:110px;height:110px;border-radius:50%;right:-50px;top:-55px;background:var(--glow,rgba(32,213,232,.11))}
.kpi-top{display:flex;align-items:center;justify-content:space-between}
.kpi-label{font-size:11px;color:var(--muted);font-weight:700}
.kpi-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:rgba(255,255,255,.04);font-size:15px}
.kpi-value{font-family:"Space Grotesk";font-size:28px;font-weight:700;margin:12px 0 5px}
.kpi-foot{font-size:10px;color:var(--muted)}
.kpi-foot .positive{color:var(--green)}
.dashboard-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:16px;margin:16px 0}
.dashboard-grid.lower{align-items:stretch}
.panel{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:18px;box-shadow:0 8px 24px rgba(0,0,0,.09)}
.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}
.panel-header h3{font-family:"Space Grotesk";font-size:15px;margin:0}
.panel-header p{font-size:10px;color:var(--muted);margin:4px 0 0}
.segmented{background:#0c1727;border:1px solid var(--border);padding:3px;border-radius:9px}
.seg{border:0;background:transparent;color:var(--muted);font-size:10px;padding:6px 9px;border-radius:6px}
.seg.active{background:#1b2b40;color:var(--text)}
.chart-wrap{height:275px;position:relative}
.chart-wrap canvas{width:100%;height:100%;display:block}
.chart-tooltip{position:absolute;pointer-events:none;display:none;background:#07111e;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:10px;box-shadow:var(--shadow)}
.status-row{padding:12px 0;border-bottom:1px solid rgba(36,54,77,.65)}
.status-row:last-child{border:0}
.status-row-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.status-row-top strong{font-size:12px}
.status-row-top span{font-size:11px;color:var(--muted)}
.progress{height:7px;background:#0b1523;border-radius:99px;overflow:hidden}
.progress > div{height:100%;border-radius:99px}
.camera-card-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.camera-card{background:linear-gradient(145deg,#132137,#0d1928);border:1px solid var(--border);border-radius:14px;padding:15px;position:relative;overflow:hidden}
.camera-card:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--status)}
.camera-head{display:flex;justify-content:space-between;align-items:flex-start}
.camera-name{font-size:12px;font-weight:700}
.camera-site{font-size:9px;color:var(--muted);margin-top:4px}
.camera-temp{font-family:"Space Grotesk";font-size:26px;font-weight:700;margin:14px 0 6px}
.camera-temp small{font-size:12px;color:var(--muted)}
.threshold-line{display:flex;justify-content:space-between;font-size:9px;color:var(--muted)}
.status-chip{display:inline-flex;align-items:center;gap:6px;font-size:9px;font-weight:800;text-transform:uppercase;border-radius:99px;padding:5px 8px;background:rgba(255,255,255,.04)}
.mini-dot{width:6px;height:6px;border-radius:50%;background:currentColor}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse;min-width:650px}
th,td{text-align:left;padding:11px 10px;border-bottom:1px solid rgba(36,54,77,.65);font-size:10px}
th{color:#6f849b;font-size:9px;text-transform:uppercase;letter-spacing:.06em}
td{color:#cdd9e5}
tr:last-child td{border-bottom:0}
.badge{display:inline-block;padding:5px 8px;border-radius:99px;font-size:9px;font-weight:800;text-transform:uppercase}
.badge.normal{background:rgba(52,211,153,.11);color:var(--green)}
.badge.warning{background:rgba(251,191,36,.11);color:var(--yellow)}
.badge.critical{background:rgba(255,93,115,.12);color:var(--red)}
.badge.offline{background:rgba(141,160,182,.10);color:var(--muted)}
.donut-layout{display:flex;align-items:center;justify-content:center;gap:24px;min-height:210px}
.donut{width:132px;height:132px;border-radius:50%;display:grid;place-items:center;position:relative}
.donut:after{content:"";position:absolute;width:82px;height:82px;background:var(--panel);border-radius:50%}
.donut span{z-index:1;font-family:"Space Grotesk";font-weight:700;font-size:22px}
.legend{display:flex;flex-direction:column;gap:10px}
.legend-row{display:flex;align-items:center;gap:9px;font-size:10px;color:var(--muted)}
.legend-dot{width:8px;height:8px;border-radius:50%}
.page-actions,.report-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}
.filter-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.input{background:#0e1a2a;border:1px solid var(--border);color:var(--text);border-radius:10px;padding:10px 12px;outline:none;font-size:11px}
.input:focus{border-color:rgba(32,213,232,.55);box-shadow:0 0 0 3px rgba(32,213,232,.08)}
.input.search{min-width:280px}
select.input{min-width:150px}
.gateway-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.gateway-card{background:var(--panel);border:1px solid var(--border);border-radius:16px;overflow:hidden}
.gateway-card-head{padding:18px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:15px}
.gateway-title{display:flex;align-items:flex-start;gap:12px}
.gateway-icon{width:42px;height:42px;border-radius:12px;background:rgba(32,213,232,.08);border:1px solid rgba(32,213,232,.18);display:grid;place-items:center;color:var(--cyan);font-weight:800}
.gateway-card h3{font-size:14px;margin:0}
.gateway-card .meta{font-size:9px;color:var(--muted);margin-top:5px}
.uid{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#8cb6d7}
.card-actions{display:flex;gap:5px}
.icon-btn{width:31px;height:31px;border-radius:8px;border:1px solid var(--border);background:#101d2c;color:var(--muted)}
.icon-btn:hover{color:var(--text);border-color:#3a506b}
.gateway-stats{display:grid;grid-template-columns:repeat(3,1fr);padding:14px 18px;border-bottom:1px solid var(--border)}
.gateway-stat small{display:block;color:var(--muted);font-size:8px}
.gateway-stat strong{display:block;font-size:11px;margin-top:4px}
.camera-slots{padding:14px 18px 18px}
.camera-slots-title{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);margin-bottom:10px}
.slot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.slot{min-height:70px;border:1px dashed #32475e;border-radius:10px;padding:9px;display:flex;flex-direction:column;justify-content:center;position:relative}
.slot.filled{border-style:solid;background:#0e1a29}
.slot .slot-no{font-size:8px;color:#60748b}
.slot strong{font-size:9px;margin-top:3px}
.slot small{font-size:8px;color:var(--muted);margin-top:3px}
.slot.add{align-items:center;color:var(--cyan);cursor:pointer;background:rgba(32,213,232,.03)}
.camera-management-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.camera-management-card{background:var(--panel);border:1px solid var(--border);border-radius:15px;overflow:hidden}
.thermal-preview{height:140px;position:relative;background:
radial-gradient(circle at 68% 45%,rgba(255,90,55,.85) 0 7%,rgba(255,176,46,.55) 8% 17%,rgba(101,53,210,.25) 18% 32%,transparent 33%),
radial-gradient(circle at 35% 60%,rgba(47,200,235,.42),transparent 24%),
linear-gradient(135deg,#171331,#0a2d49 45%,#081724);}
.thermal-preview:after{content:"THERMAL VIEW";position:absolute;right:10px;top:9px;background:rgba(0,0,0,.38);font-size:8px;padding:4px 6px;border-radius:5px;color:#d2deeb}
.crosshair{position:absolute;left:65%;top:42%;width:26px;height:26px;border:1px solid rgba(255,255,255,.75);transform:translate(-50%,-50%)}
.crosshair:before,.crosshair:after{content:"";position:absolute;background:rgba(255,255,255,.75)}
.crosshair:before{width:12px;height:1px;left:6px;top:12px}
.crosshair:after{width:1px;height:12px;left:12px;top:6px}
.thermal-temp{position:absolute;left:10px;bottom:9px;font-family:ui-monospace,monospace;font-size:11px;font-weight:700}
.camera-management-body{padding:14px}
.camera-management-head{display:flex;justify-content:space-between;gap:8px}
.camera-management-card h3{font-size:12px;margin:0}
.camera-management-card p{font-size:9px;color:var(--muted);margin:4px 0 0}
.camera-details{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:13px}
.detail small{display:block;font-size:8px;color:var(--muted)}
.detail strong{font-size:10px}
.report-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.summary-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:15px}
.summary-card small{display:block;color:var(--muted);font-size:9px}
.summary-card strong{display:block;font-family:"Space Grotesk";font-size:22px;margin-top:7px}
.report-chart{height:320px}
.info-list{display:flex;flex-direction:column;gap:0}
.info-row{display:flex;justify-content:space-between;gap:15px;padding:11px 0;border-bottom:1px solid rgba(36,54,77,.7);font-size:10px}
.info-row:last-child{border:0}
.info-row span{color:var(--muted)}
.integration-banner{justify-content:flex-start;margin-bottom:18px}
.integration-banner .btn{margin-left:auto}
.line-logo{width:70px;height:70px;border-radius:18px;background:var(--line);display:grid;place-items:center;color:white;font-weight:900;font-size:14px;box-shadow:0 10px 35px rgba(6,199,85,.2)}
.recipient-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.recipient-card{border:1px solid var(--border);background:#0f1b2b;border-radius:14px;padding:15px}
.recipient-head{display:flex;justify-content:space-between;gap:8px}
.recipient-avatar{width:38px;height:38px;border-radius:12px;background:rgba(6,199,85,.12);color:var(--line);display:grid;place-items:center;font-weight:900}
.recipient-card h4{font-size:11px;margin:0}
.recipient-card p{font-size:9px;color:var(--muted);margin:4px 0 0}
.recipient-meta{margin-top:12px;border-top:1px solid var(--border);padding-top:10px;display:grid;gap:7px}
.recipient-meta div{display:flex;justify-content:space-between;font-size:9px}
.recipient-meta span{color:var(--muted)}
.settings-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.setting-card{display:flex;justify-content:space-between;align-items:center;background:#0f1b2b;border:1px solid var(--border);border-radius:12px;padding:14px;gap:12px}
.setting-card strong{display:block;font-size:10px}
.setting-card small{display:block;font-size:8px;color:var(--muted);margin-top:4px}
.setting-card input{accent-color:var(--cyan);width:17px;height:17px}
.modal-backdrop{position:fixed;inset:0;background:rgba(2,8,15,.72);backdrop-filter:blur(5px);z-index:50;display:none}
.modal-backdrop.open{display:block}
.modal{position:fixed;z-index:60;left:50%;top:50%;transform:translate(-50%,-46%);width:min(620px,calc(100vw - 32px));background:#0d1929;border:1px solid var(--border);border-radius:18px;box-shadow:0 30px 100px rgba(0,0,0,.55);padding:20px;opacity:0;pointer-events:none;transition:.2s}
.modal.open{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)}
.modal-header{display:flex;justify-content:space-between;gap:12px;margin-bottom:20px}
.modal-header h3{margin:0;font-family:"Space Grotesk";font-size:18px}
.modal-header p{margin:5px 0 0;font-size:10px;color:var(--muted)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-grid label{display:flex;flex-direction:column;gap:7px;font-size:9px;color:var(--muted);font-weight:700}
.form-grid label.full{grid-column:1/-1}
.modal-note{margin-top:15px;padding:11px 12px;border-radius:10px;background:rgba(32,213,232,.06);border:1px solid rgba(32,213,232,.16);font-size:9px;color:#a9bfd1}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.toast-container{position:fixed;right:20px;bottom:20px;z-index:100;display:flex;flex-direction:column;gap:10px}
.toast{min-width:260px;background:#0e1a29;border:1px solid var(--border);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow);font-size:10px;animation:toastIn .25s ease}
.toast strong{display:block;font-size:11px;margin-bottom:3px}
.toast.success{border-color:rgba(52,211,153,.28)}
.toast.error{border-color:rgba(255,93,115,.35)}
@keyframes toastIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.muted{color:var(--muted)}
.danger-text{color:var(--red)}
.warning-text{color:var(--yellow)}
.good-text{color:var(--green)}
@media(max-width:1100px){
  .kpi-grid{grid-template-columns:repeat(2,1fr)}
  .camera-card-grid{grid-template-columns:repeat(2,1fr)}
  .gateway-grid{grid-template-columns:1fr}
  .camera-management-grid{grid-template-columns:repeat(2,1fr)}
  .recipient-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:800px){
  :root{--sidebar:220px}
  .sidebar{transform:translateX(-100%);transition:.25s}
  .sidebar.open{transform:translateX(0)}
  .main{margin-left:0}
  .menu-btn{display:block}
  .topbar{padding:0 16px}
  .topbar-right .clock{display:none}
  .page{padding:18px 16px 36px}
  .hero-strip,.integration-banner{flex-direction:column;align-items:flex-start}
  .integration-banner .btn{margin-left:0}
  .dashboard-grid{grid-template-columns:1fr}
  .camera-management-grid,.recipient-grid,.settings-grid{grid-template-columns:1fr}
  .report-summary{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:560px){
  .kpi-grid,.camera-card-grid,.report-summary{grid-template-columns:1fr}
  .page-actions,.report-toolbar{align-items:stretch;flex-direction:column}
  .filter-row{width:100%}
  .input.search{min-width:0;width:100%}
  .hero-actions{width:100%}
  .hero-actions .btn{flex:1}
  .slot-grid{grid-template-columns:repeat(2,1fr)}
  .form-grid{grid-template-columns:1fr}
  .form-grid label.full{grid-column:auto}
  .live-pill{display:none}
}
@media print{
  .sidebar,.topbar,.report-toolbar,.page:not(#page-reports),#page-reports > .panel:last-child .panel-header{display:none!important}
  .main{margin:0}
  #page-reports{display:block!important;padding:0}
  body{background:white;color:black}
  .panel,.summary-card{box-shadow:none;background:white;border:1px solid #ccc;color:black}
  th,td,.panel-header p,.info-row span{color:#333}
}
