*{box-sizing:border-box;margin:0;padding:0}
:root{
  --blue-dark:#217EB4;
  --blue-light:#009EE9;
  --gray-dark:#2D3340;
  --gray-mid:#4A5568;
  --gray-light:#E8EDF2;
  --gray-bg:#F4F7FA;
  --white:#FFFFFF;
  --green:#2E9E60;
  --green-bg:#EAF7EF;
  --green-text:#1A6B3F;
  --red:#E24B4A;
  --red-bg:#FDEAEA;
  --red-text:#9B2020;
  --amber:#D4860A;
  --amber-bg:#FEF3DC;
  --amber-text:#8A5205;
  --border:#DDE3EA;
  --shadow:0 1px 3px rgba(0,0,0,0.08);
}
:root[data-theme='dark']{
  --gray-dark:#e8edf5;
  --gray-mid:#a6b4c4;
  --gray-light:#263845;
  --gray-bg:#15212c;
  --white:#15212c;
  --border:#355063;
  --shadow:0 1px 3px rgba(0,0,0,0.2);
}
body{font-family:'Inter','Segoe UI',system-ui,sans-serif;background:var(--gray-bg);color:var(--gray-dark);display:flex;min-height:100vh}
a{text-decoration:none;color:inherit}
.grad-line{height:3px;background:linear-gradient(90deg,var(--blue-dark),var(--blue-light));flex-shrink:0}

/* AUTH */
.auth-gate{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#217EB4,#009EE9)}
.auth-gate.hidden{display:none}
.login-card{width:min(100%,400px);padding:40px;background:var(--white);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,0.2);animation:slideIn 400ms ease-out}
.login-brand{text-align:center;margin-bottom:30px}
.login-logo{width:auto;height:220px;max-width:100%;margin-bottom:10px}
.login-brand-text span{display:block;color:#666;font-size:16px;font-weight:500}
.login-card .input-group{margin-bottom:20px}
.login-card .input-label{display:block;color:#2D3340;font-weight:600;margin-bottom:8px;font-size:14px}
:root[data-theme='dark'] .login-card .input-label{color:#c1cad7}
.login-card .input-field{width:100%;padding:12px 15px;border:2px solid #E0E0E0;border-radius:8px;font-size:15px;background:white;color:#111;transition:all 0.3s ease}
:root[data-theme='dark'] .login-card .input-field{background:#1b2a36;color:#e8eef5;border-color:#355063}
.login-card .input-field:focus{border-color:#217EB4;box-shadow:0 0 0 3px rgba(33,126,180,0.1);outline:none}
.login-error{background:#FFF3F3;color:#F23D4F;padding:12px;border-radius:8px;margin-bottom:20px;font-size:14px;border-left:4px solid #F23D4F}
.password-toggle{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:#999;cursor:pointer;display:grid;place-items:center;width:28px;height:28px}
.password-toggle:hover{color:#217EB4}
.btn-login{width:100%;padding:14px;background:linear-gradient(135deg,#217EB4,#009EE9);color:white;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all 0.3s ease;margin-top:10px}
.btn-login:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(33,126,180,0.4)}
.btn-login:active{transform:translateY(0)}
.btn-login:disabled{opacity:0.6;cursor:not-allowed;transform:none}

/* SIDEBAR */
.sidebar{width:220px;flex-shrink:0;background:var(--gray-dark);display:flex;flex-direction:column;min-height:100vh;position:fixed;left:0;top:0;bottom:0;z-index:10}
.sidebar-logo{padding:20px 18px 16px;border-bottom:1px solid rgba(255,255,255,0.08)}
.logo-img{width:120px;height:auto;display:block;margin:0 auto}
.tenant-chip{margin:14px 12px 0;background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.12);border-radius:8px;padding:10px 12px}
.tenant-name{font-size:12px;font-weight:600;color:rgba(255,255,255,0.9)}
.tenant-role{font-size:10px;color:rgba(255,255,255,0.45);margin-top:2px}
.nav{padding:16px 8px;flex:1;overflow-y:auto}
.nav-section{font-size:9px;color:rgba(255,255,255,0.3);padding:8px 10px 4px;letter-spacing:1px;font-weight:600}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer;font-size:13px;color:rgba(255,255,255,0.6);margin-bottom:2px;transition:all 0.15s}
.nav-item:hover{background:rgba(255,255,255,0.07);color:rgba(255,255,255,0.9)}
.nav-item.active{background:linear-gradient(135deg,var(--blue-dark),var(--blue-light));color:#fff;font-weight:600}
.nav-item svg{width:16px;height:16px;flex-shrink:0;opacity:0.8}
.nav-item.active svg{opacity:1}
.nav-badge{margin-left:auto;background:var(--red);color:#fff;font-size:10px;border-radius:99px;padding:1px 7px;font-weight:600}
body.viewer .nav-item[data-route="settings"],
body.viewer .nav-item[data-route="alerts"],
body.viewer .nav-item[data-route="sites"],
body.viewer .nav-item[data-route="mapa"],
body.viewer .nav-item[data-route="audit"],
body.viewer .nav-item[data-route="ota"],
body.viewer .nav-item[data-route="mqtt"],
body.viewer .nav-section.sistema{display:none!important}
.sidebar-footer{padding:14px 12px;border-top:1px solid rgba(255,255,255,0.08)}
.user-row{display:flex;align-items:center;gap:10px}
.user-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--blue-dark),var(--blue-light));display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0}
.user-name{font-size:12px;font-weight:600;color:rgba(255,255,255,0.85)}
.user-role{font-size:10px;color:rgba(255,255,255,0.4);margin-top:1px}

/* MAIN */
.main-wrap{margin-left:220px;flex:1;display:flex;flex-direction:column;min-height:100vh}
.topbar{background:var(--white);border-bottom:1px solid var(--border);padding:0 24px;height:56px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:5;box-shadow:var(--shadow)}
.page-title{font-size:16px;font-weight:700;color:var(--gray-dark)}
.topbar-right{display:flex;gap:10px;align-items:center}
.btn{padding:7px 14px;font-size:12px;font-weight:600;border-radius:7px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all 0.15s;border:none;font-family:inherit}
.btn-sm{padding:6px 12px;font-size:11px}
.btn-xs{padding:4px 10px;font-size:11px;border-radius:6px}
.btn-outline{background:var(--white);border:1.5px solid var(--border);color:var(--gray-mid)}
.btn-outline:hover{border-color:var(--blue-dark);color:var(--blue-dark)}
.btn-primary{background:linear-gradient(135deg,var(--blue-dark),var(--blue-light));color:#fff}
.btn-primary:hover{opacity:0.9;transform:translateY(-1px)}
.btn-danger{background:var(--white);border:1.5px solid var(--red);color:var(--red);padding:7px 14px;font-size:12px;font-weight:600;border-radius:7px;cursor:pointer;transition:all 0.15s;font-family:inherit}
.btn-danger:hover{background:var(--red-bg)}
.content{padding:24px;flex:1}

/* METRICS */
.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}
.metric-card{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow)}
.metric-icon{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;margin-bottom:10px}
.metric-icon-blue{background:linear-gradient(135deg,#E8F4FB,#D0EBF7)}
.metric-icon-green{background:var(--green-bg)}
.metric-icon-amber{background:var(--amber-bg)}
.metric-icon-red{background:var(--red-bg)}
:root[data-theme='dark'] .metric-icon-blue{background:rgba(0,158,233,0.15)}
:root[data-theme='dark'] .metric-icon-green{background:rgba(46,158,96,0.15)}
:root[data-theme='dark'] .metric-icon-amber{background:rgba(212,134,10,0.15)}
:root[data-theme='dark'] .metric-icon-red{background:rgba(226,75,74,0.15)}
.metric-label{font-size:11px;color:var(--gray-mid);font-weight:500;margin-bottom:4px}
.metric-value{font-size:24px;font-weight:700;color:var(--gray-dark);line-height:1}
.metric-sub{font-size:11px;color:var(--gray-mid);margin-top:5px}

/* CARDS */
.card{background:var(--white);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);margin-bottom:16px;overflow-x:auto;overflow-y:hidden}
.card-header{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.card-title{font-size:13px;font-weight:700;color:var(--gray-dark);display:flex;align-items:center;gap:7px}
.card-title svg{width:15px;height:15px;color:var(--blue-dark)}
.card-body{padding:0}

/* TABLES */
.table-header{display:grid;padding:9px 18px;background:var(--gray-bg);font-size:10px;font-weight:700;color:var(--gray-mid);letter-spacing:0.5px;border-bottom:1px solid var(--border)}
.table-row{display:grid;padding:12px 18px;border-bottom:1px solid var(--border);align-items:center;cursor:pointer;transition:background 0.12s}
.table-row:last-child{border-bottom:none}
.table-row:hover{background:var(--gray-bg)}
.machine-col{grid-template-columns:170px 1fr 60px 60px 110px 32px}
.txn-col{grid-template-columns:180px 80px 120px 90px 100px}
.alert-col{grid-template-columns:36px 1fr 100px}
.tenant-machine-col{grid-template-columns:200px 80px 80px 100px 120px}

/* BADGES */
.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}
.dot-green{background:var(--green)}
.dot-red{background:var(--red)}
.dot-amber{background:var(--amber)}
.dot-gray{background:var(--gray-mid)}
.machine-name{font-size:13px;font-weight:600;color:var(--gray-dark)}
.machine-sub{font-size:11px;color:var(--gray-mid);margin-top:1px}
.badge{font-size:10px;font-weight:600;padding:3px 9px;border-radius:99px;display:inline-flex;align-items:center;gap:4px}
.badge-green{background:var(--green-bg);color:var(--green-text)}
.badge-red{background:var(--red-bg);color:var(--red-text)}
.badge-amber{background:var(--amber-bg);color:var(--amber-text)}
.badge-gray{background:var(--gray-light);color:var(--gray-mid)}
.badge-blue{background:#E0F0FA;color:var(--blue-dark)}

/* DETAIL */
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.detail-card{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow)}
.detail-card-title{font-size:11px;font-weight:700;color:var(--gray-mid);letter-spacing:0.5px;margin-bottom:12px;display:flex;align-items:center;gap:6px}
.detail-card-title svg{width:14px;height:14px;color:var(--blue-dark)}
.info-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid var(--border)}
.info-row:last-child{border-bottom:none}
.info-key{font-size:12px;color:var(--gray-mid)}
.info-val{font-size:12px;font-weight:600;color:var(--gray-dark);font-family:'JetBrains Mono',monospace}
.info-val-normal{font-family:inherit}

/* COUNTERS */
.counter-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.counter-box{background:var(--gray-bg);border:1px solid var(--border);border-radius:9px;padding:12px;text-align:center;overflow:hidden}
.counter-num{font-size:22px;font-weight:700;color:var(--gray-dark);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.counter-lab{font-size:10px;color:var(--gray-mid);font-weight:600;margin-top:2px;letter-spacing:0.3px}

/* ALERTS */
.alert-item{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border);transition:background 0.12s}
.alert-item:last-child{border-bottom:none}
.alert-item:hover{background:var(--gray-bg)}
.alert-ico{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.alert-ico svg{width:16px;height:16px}
.alert-msg{font-size:13px;font-weight:600;color:var(--gray-dark)}
.alert-sub{font-size:11px;color:var(--gray-mid);margin-top:2px}
.alert-time{font-size:11px;color:var(--gray-mid);margin-left:auto;flex-shrink:0}
.alert-meta{font-size:12px;color:var(--gray-mid);white-space:nowrap;text-align:right;line-height:1.4}
.alert-badges{display:flex;gap:4px;flex-wrap:wrap}
.alert-actions{display:flex;gap:6px;flex-shrink:0}

/* BAR CHART */
.bar-row{margin-bottom:12px}
.bar-label{display:flex;justify-content:space-between;font-size:12px;margin-bottom:5px}
.bar-label span:first-child{color:var(--gray-dark);font-weight:600}
.bar-label span:last-child{color:var(--gray-mid)}
.bar-track{height:8px;background:var(--gray-bg);border-radius:99px;overflow:hidden;border:1px solid var(--border)}
.bar-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--blue-dark),var(--blue-light));transition:width 0.6s ease}

/* SETTINGS */
.settings-section{margin-bottom:16px}
.input-group{margin-bottom:14px}
.input-label{font-size:12px;font-weight:600;color:var(--gray-mid);margin-bottom:5px;display:block;letter-spacing:0.3px}
.input-field{width:100%;padding:9px 12px;border:1.5px solid var(--border);border-radius:7px;font-size:13px;color:var(--gray-dark);background:var(--white);transition:border-color 0.15s;font-family:inherit}
.input-field:focus{outline:none;border-color:var(--blue-dark);box-shadow:0 0 0 3px rgba(33,126,180,0.1)}
select.input-field{cursor:pointer}

/* TOAST */
.toast-container{position:fixed;top:70px;right:20px;z-index:40;display:grid;gap:8px;max-width:360px}
.toast{display:grid;gap:4px;padding:12px 16px;border-radius:8px;background:var(--white);border:1px solid var(--border);box-shadow:0 4px 20px rgba(0,0,0,0.12);font-size:13px;animation:slideInRight 220ms ease;border-left:4px solid var(--blue-dark)}
.toast.critical{border-left-color:var(--red)}
.toast.warning{border-left-color:var(--amber)}
.toast.success{border-left-color:var(--green)}
.toast h4{margin:0;font-size:13px}
.toast p{margin:4px 0 0;color:var(--gray-mid);font-size:12px}

/* MODAL */
.modal-overlay{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:20px;background:rgba(0,0,0,0.55);backdrop-filter:blur(4px)}
.modal-overlay.hidden{display:none}
.modal-content{position:relative;width:min(100%,640px);max-height:86vh;overflow-y:auto;background:var(--white);border-radius:12px;box-shadow:0 28px 80px rgba(0,0,0,0.35);padding:24px}
.modal-content.wide{width:min(100%,900px)}
.modal-close{position:absolute;top:14px;right:14px;background:var(--white);border:1px solid var(--border);border-radius:6px;width:36px;height:36px;display:grid;place-items:center;cursor:pointer;font-size:18px;color:var(--gray-mid)}
.modal-close:hover{color:var(--gray-dark)}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}
.modal-section{margin-top:20px}
.modal-section h3{font-size:13px;color:var(--gray-mid);margin-bottom:10px}

/* FORM WITHIN MODAL */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-grid .input-group{margin-bottom:0}
.checkbox-row{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}
.checkbox-row label{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:500;color:var(--gray-mid)}
.mono{font-family:'JetBrains Mono',monospace;font-size:12px}

/* VIEW LINK */
.view-link{font-size:12px;color:var(--blue-dark);cursor:pointer;font-weight:600}
.view-link:hover{color:var(--blue-light)}

/* FILTERS */
.filters{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.filters select{background:var(--white);border:1px solid var(--border);border-radius:7px;padding:8px 12px;color:var(--gray-dark);font-size:13px;outline:none;min-width:140px;font-family:inherit}
.filters select:focus{border-color:var(--blue-dark)}
.filter-select{margin-left:12px;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:12px;background:var(--white);color:var(--gray-dark);outline:none;font-family:inherit}
.filter-select:focus{border-color:var(--blue-dark)}
.cell-mid{font-size:12px;color:var(--gray-mid)}

/* BACK BTN */
.back-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;background:var(--white);border:1.5px solid var(--border);border-radius:7px;font-size:12px;font-weight:600;color:var(--gray-mid);cursor:pointer;transition:all 0.15s;margin-right:10px;font-family:inherit}
.back-btn:hover{border-color:var(--blue-dark);color:var(--blue-dark)}

/* FORMS */
.filter-check{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--gray-mid);cursor:pointer}
.filter-check input{accent-color:var(--blue-dark)}
.feature-tag{display:inline-block;padding:4px 10px;border-radius:20px;font-size:11px;font-weight:600;border:1px solid var(--border)}
.feature-tag.on{border-color:var(--green);color:var(--green-text);background:var(--green-bg)}
.feature-tag.off{border-color:var(--gray-mid);color:var(--gray-mid);background:transparent}

/* ANIMATIONS */
@keyframes slideIn{from{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideInRight{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-10px)}75%{transform:translateX(10px)}}

/* PAGINATION */
.pagination{display:flex;align-items:center;gap:6px;justify-content:center;padding:16px 0}
.pagination button[disabled]{opacity:0.4;cursor:not-allowed}

/* EMPTY / LOADING */
.loading{opacity:0.5;pointer-events:none;transition:opacity 0.3s}
.empty{padding:26px;color:var(--gray-mid);text-align:center;font-size:13px}
.empty-state{text-align:center;padding:64px 24px;color:var(--gray-mid)}
.empty-state .icon{font-size:48px;margin-bottom:16px}
.empty-state p{font-size:14px}
.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--blue-dark);border-radius:50%;animation:spin .6s linear infinite;margin:0 auto 16px}
@keyframes spin{to{transform:rotate(360deg)}}

/* HAMBURGER */
.hamburger{display:none;width:32px;height:32px;border:none;background:transparent;cursor:pointer;color:var(--gray-mid);padding:4px;margin-right:8px;flex-shrink:0;border-radius:6px;align-items:center;justify-content:center}
.hamburger:hover{background:var(--gray-bg);color:var(--gray-dark)}
.hamburger svg{width:20px;height:20px}
.sidebar-overlay{position:fixed;inset:0;z-index:9;background:rgba(0,0,0,0.4);backdrop-filter:blur(2px);display:none}

/* TABLE RESPONSIVE CLASSES — Base (≥1280px) */
.table-sites { grid-template-columns:1fr 100px 120px 80px 100px 60px }
.table-site-devices { grid-template-columns:200px 100px 90px 80px }
.table-notifs { grid-template-columns:60px 1fr 1fr 80px 120px }
.table-settings-mp { grid-template-columns:1fr 1fr auto auto 50px auto }

/* RESPONSIVE >1280px … 1024px */
@media(max-width:1279px){
  .table-sites { grid-template-columns:1fr 100px 100px 80px 60px }
  .table-sites > :nth-child(4) { display:none }
  .table-settings-mp { grid-template-columns:1fr 1fr auto 50px auto }
  .table-settings-mp > :nth-child(3) { display:none }
  .table-notifs { grid-template-columns:50px 1fr 1fr 70px 100px }
  .machine-col { grid-template-columns:150px 1fr 50px 50px 90px 28px }
  .txn-col { grid-template-columns:150px 70px 100px 80px 90px }
}

/* RESPONSIVE 1024px … 768px */
@media(max-width:1023px){
  .hamburger{display:inline-flex}
  .sidebar{transform:translateX(-105%);transition:transform 180ms ease}
  body.menu-open .sidebar{transform:translateX(0)}
  body.menu-open .sidebar-overlay{display:block}
  .main-wrap{margin-left:0}
  .metrics-grid{grid-template-columns:repeat(2,1fr)}
  .detail-grid{grid-template-columns:1fr}

  .table-sites { grid-template-columns:1fr 80px 80px 60px }
  .table-sites > :nth-child(2),
  .table-sites > :nth-child(4) { display:none }
  .table-settings-mp { grid-template-columns:1fr auto 50px auto }
  .table-settings-mp > :nth-child(2),
  .table-settings-mp > :nth-child(3) { display:none }
  .table-site-devices { grid-template-columns:1fr 80px 70px }
  .table-site-devices > :nth-child(2) { display:none }
  .table-notifs { grid-template-columns:1fr 80px 70px }
  .table-notifs > :nth-child(1),
  .table-notifs > :nth-child(3),
  .table-notifs > :nth-child(5) { display:none }
  .machine-col { grid-template-columns:1fr 50px 50px 90px 28px }
  .machine-col > :nth-child(2) { display:none }
  .txn-col { grid-template-columns:1fr 70px 80px 90px }
  .txn-col > :nth-child(3) { display:none }
}

/* RESPONSIVE < 768px */
@media(max-width:767px){
  .sidebar{transform:translateX(-105%)}
  body.menu-open .sidebar{transform:translateX(0)}
  .main-wrap{margin-left:0}
  .metrics-grid{grid-template-columns:1fr}
  .content{padding:16px}
  .topbar{padding:0 16px}
  .detail-grid{grid-template-columns:1fr}
  .filters{flex-direction:column;gap:8px}
  .filters select{min-width:100%}
  .card{overflow-x:visible}
  .card-header{flex-wrap:wrap;gap:8px}

  .table-sites { grid-template-columns:1fr 60px 40px }
  .table-sites > :nth-child(2),
  .table-sites > :nth-child(3),
  .table-sites > :nth-child(4) { display:none }
  .table-settings-mp { grid-template-columns:1fr auto 50px }
  .table-settings-mp > :nth-child(2),
  .table-settings-mp > :nth-child(3),
  .table-settings-mp > :nth-child(4) { display:none }
  .table-site-devices { grid-template-columns:1fr 70px }
  .table-site-devices > :nth-child(2),
  .table-site-devices > :nth-child(3) { display:none }
  .table-notifs { grid-template-columns:1fr 60px }
  .table-notifs > :nth-child(1),
  .table-notifs > :nth-child(3),
  .table-notifs > :nth-child(4) { display:none }
  .machine-col { grid-template-columns:1fr 80px 28px }
  .machine-col > :nth-child(2),
  .machine-col > :nth-child(3),
  .machine-col > :nth-child(4) { display:none }
  .txn-col { grid-template-columns:1fr 80px 70px }
  .txn-col > :nth-child(2),
  .txn-col > :nth-child(3) { display:none }
}

.logo-fallback{color:rgba(255,255,255,0.6);font-weight:700;font-size:20px;text-align:center}

/* TABS */
.tabs{display:flex;gap:4px;margin-bottom:20px;background:var(--gray-bg);border:1px solid var(--border);border-radius:8px;padding:4px;width:fit-content}
.tab{padding:8px 20px;border:none;background:transparent;color:var(--gray-mid);font-size:13px;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s;font-family:inherit}
.tab.active{background:var(--blue-dark);color:#fff}
.tab:hover:not(.active){background:var(--gray-light)}

/* SECTION CARD */
.section-card{background:var(--white);border:1px solid var(--border);border-radius:10px;padding:20px}
.section-card h3{font-size:15px;font-weight:600;margin-bottom:16px;color:var(--gray-dark)}

/* TEMP CHART */
.temp-chart{display:flex;align-items:flex-end;gap:3px;height:120px;margin:12px 0 4px}
.temp-bar{flex:1;background:linear-gradient(to top,var(--blue-light),var(--blue-dark));border-radius:3px 3px 0 0;min-height:4px;transition:all .15s;cursor:help}
.temp-bar:hover{opacity:.8}
.temp-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--gray-mid)}

/* FILTER BAR */
.filter-bar{padding:14px 18px;border-bottom:1px solid var(--border)}
.filter-bar select{background:var(--white);border:1px solid var(--border);border-radius:7px;padding:7px 12px;color:var(--gray-dark);font-size:13px;outline:none;min-width:180px;font-family:inherit}

/* MQTT LOG */
.mqtt-log{font-family:'JetBrains Mono',monospace;font-size:12px;max-height:70vh;overflow-y:auto;padding:8px}

/* STATS MINI */
.stats-grid{display:grid;gap:8px;margin-bottom:16px}
.mini-stat{text-align:center;padding:8px;background:var(--gray-bg);border-radius:6px}
.mini-stat-label{font-size:10px;color:var(--gray-mid);display:block;margin-bottom:4px}
.mini-stat strong{font-size:16px;color:var(--gray-dark)}
.mini-stat .danger{color:var(--red)}
