/* ============================================================
   AITALIM IOT — Design System
   Light/Dark theme · Inter font · Mobile-first
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

/* ── Reset & Base ── */
*{margin:0;padding:0;box-sizing:border-box}

:root {
  /* LIGHT THEME (Default) */
  --bg: #f8fafc;
  --surface: #ffffff;
  --surface2: #f1f5f9;
  --border: #e2e8f0;
  --text: #0f172a;
  --text2: #475569;
  --text3: #64748b;
  
  --accent: #166534; /* Dark Green */
  --accent2: #15803d;
  --accent-light: rgba(22, 101, 52, 0.1);

  --success: #16a34a;
  --danger: #dc2626;
  --warning: #d97706;

  --radius: 12px;
  --radius-sm: 8px;
  --shadow: 0 4px 16px rgba(0,0,0,0.06);
  --shadow-lg: 0 10px 30px rgba(0,0,0,0.1);
  --transition: all 0.2s ease;
}

[data-theme="dark"] {
  /* DARK THEME */
  --bg: #0f1117;
  --surface: #1a1d27;
  --surface2: #232733;
  --border: #2a2e3a;
  --text: #e4e4e7;
  --text2: #9ca3af;
  --text3: #6b7280;
  
  --accent: #22c55e; /* Brighter green for dark mode visibility */
  --accent2: #16a34a;
  --accent-light: rgba(34, 197, 94, 0.1);

  --success: #22c55e;
  --danger: #ef4444;
  --warning: #f59e0b;

  --shadow: 0 4px 24px rgba(0,0,0,0.3);
  --shadow-lg: 0 12px 40px rgba(0,0,0,0.5);
}

html{font-size:14px}
body{font-family:'Inter',system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh;display:flex;flex-direction:column;transition:background 0.3s ease, color 0.3s ease}
a{color:var(--accent);text-decoration:none;transition:var(--transition)}
a:hover{color:var(--accent2)}
::selection{background:var(--accent);color:#fff}

/* ── Nav ── */
nav{background:var(--surface);border-bottom:1px solid var(--border);padding:0 20px;display:flex;align-items:center;justify-content:space-between;height:64px;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px rgba(0,0,0,0.04);transition:background 0.3s ease}
.brand{display:flex;align-items:center;gap:12px;font-size:16px;font-weight:700;color:var(--text)!important;letter-spacing:1px;text-transform:uppercase}
.brand img{height:32px;width:auto;}
.nav-links{display:flex;gap:4px;align-items:center}
.nav-links a{font-size:13px;font-weight:600;padding:8px 14px;border-radius:var(--radius-sm);color:var(--text2);transition:var(--transition)}
.nav-links a:hover{color:var(--text);background:var(--surface2)}
.nav-links a.active{color:var(--accent);background:var(--accent-light)}
.nav-toggle{display:none;background:none;border:1px solid var(--border);color:var(--text);font-size:20px;padding:6px 10px;border-radius:var(--radius-sm);cursor:pointer;line-height:1}

/* Theme Switcher Button */
.theme-switch{background:none;border:none;color:var(--text2);cursor:pointer;padding:8px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;transition:var(--transition);}
.theme-switch:hover{background:var(--surface2);color:var(--accent);}

@media(max-width:768px){
  .nav-toggle{display:block}
  .nav-links{display:none;position:absolute;top:64px;left:0;right:0;background:var(--surface);border-bottom:1px solid var(--border);flex-direction:column;padding:12px;gap:4px;box-shadow:var(--shadow-lg)}
  .nav-links.open{display:flex}
  .nav-links a{padding:12px 16px;font-size:14px;border-radius:var(--radius-sm)}
}

/* ── Layout ── */
.container{max-width:1000px;margin:0 auto;padding:24px 16px;flex:1;width:100%}
h1{font-size:22px;font-weight:700;color:var(--text);margin-bottom:24px;display:flex;align-items:center;gap:10px}
h1 .badge{font-size:11px;font-weight:600;background:var(--accent-light);color:var(--accent);padding:2px 10px;border-radius:20px}
h2{font-size:16px;font-weight:600;color:var(--text);margin-bottom:8px}

/* ── Section Cards ── */
.section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;margin-bottom:20px;box-shadow:var(--shadow);transition:var(--transition)}
.section:hover{box-shadow:var(--shadow-lg)}
.section-title{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--text3);margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border)}

/* ── Forms ── */
label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text3);display:block;margin-bottom:6px;margin-top:14px}
label:first-child{margin-top:0}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:'Inter',sans-serif;font-size:13px;background:var(--surface2);color:var(--text);transition:var(--transition)}
input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}
input::placeholder{color:var(--text3)}
.form-row {display:flex;gap:12px;margin-bottom:12px;align-items:flex-end}
@media(max-width:480px){.form-row{flex-direction:column;gap:0;align-items:stretch}}

/* ── Buttons ── */
button,.btn{padding:10px 18px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-family:'Inter',sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:var(--transition);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-shadow:0 1px 2px rgba(0,0,0,0.05)}
button:hover,.btn:hover{background:var(--surface2);color:var(--text)}
button:active{transform:scale(0.97)}
button:disabled{opacity:.5;cursor:not-allowed;transform:none}
button.primary{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 4px 12px var(--accent-light)}
button.primary:hover{opacity:0.9}
button.danger{background:transparent;color:var(--danger);border-color:var(--danger)}
button.danger:hover{background:rgba(220,38,38,0.1)}
button.danger-fill{background:var(--danger);color:#fff;border-color:var(--danger);box-shadow:0 4px 12px rgba(220,38,38,0.2)}
button.danger-fill:hover{opacity:0.9}
.btn-group{display:flex;gap:8px;flex-wrap:wrap}

/* ── Status ── */
.status-row{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:10px 0;border-bottom:1px solid var(--border)}
.status-row:last-child{border-bottom:none}
.status-label{font-weight:600;color:var(--text2)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}
.dot.on{background:var(--success);box-shadow:0 0 8px var(--success);animation:pulse 2s infinite}
.dot.off{background:var(--text3)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}

/* ── Visual Bars (Battery/Signal) ── */
.progress-container{width:100%;height:6px;background:var(--border);border-radius:4px;overflow:hidden;margin-top:4px;display:block}
.progress-bar{height:100%;transition:width 0.5s ease;border-radius:4px}
.pb-green{background:var(--success)}
.pb-yellow{background:var(--warning);box-shadow:0 0 8px rgba(217,119,6,0.2)}
.pb-red{background:var(--danger);box-shadow:0 0 8px rgba(220,38,38,0.2)}
.pb-accent{background:var(--accent)}

/* ── Pagination ── */
.pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:24px;padding-top:24px;border-top:1px solid var(--border)}
.page-info{font-size:12px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:0.5px}
.pagination button{min-width:100px;font-size:11px;padding:8px 16px}


/* ── Reading Cards ── */
.reading-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}
.reading-box{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:20px;text-align:center;transition:var(--transition);display:flex;flex-direction:column;justify-content:center;align-items:center}
.reading-box:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 8px 20px var(--accent-light)}
.reading-value{font-size:32px;font-weight:700;line-height:1;color:var(--text);font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:4px}
.reading-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:var(--text3);margin-top:12px;display:flex;align-items:center;gap:6px}
.reading-unit{font-size:16px;font-weight:500;color:var(--text2)}
.reading-sub{font-size:12px;color:var(--text2);margin-top:8px}

@media(max-width:480px){.reading-grid{grid-template-columns:repeat(2,1fr)}}

/* ── Controls ── */
.control-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.control-box{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px}
.control-name{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text2);margin-bottom:12px}
.control-status{font-size:13px;margin-bottom:12px;color:var(--text)}
@media(max-width:480px){.control-grid{grid-template-columns:1fr}}

/* ── Tables ── */
table{width:100%;border-collapse:collapse;font-size:13px;text-align:left}
th,td{border-bottom:1px solid var(--border);padding:12px}
th{font-weight:600;text-transform:uppercase;letter-spacing:1px;font-size:11px;color:var(--text3);background:var(--surface2)}
td{color:var(--text2)}
tr:hover td{color:var(--text);background:var(--surface2)}
code{font-family:'JetBrains Mono','Courier New',monospace;font-size:12px;background:var(--surface2);padding:2px 6px;border-radius:4px;color:var(--text)}

/* ── Code Block ── */
.code-block{background:#0d1117;border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px;font-family:'JetBrains Mono','Courier New',monospace;font-size:12px;overflow-x:auto;white-space:pre;max-height:500px;overflow-y:auto;line-height:1.6;color:#e2e8f0}
.code-actions{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}

/* ── Modal ── */
.modal-bg{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);z-index:200}
.modal-bg.show{display:flex;align-items:center;justify-content:center}
.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:32px;max-width:800px;width:92%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg)}
.modal-title{font-size:18px;font-weight:700;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border);color:var(--text)}
.modal-close{float:right;cursor:pointer;font-size:24px;font-weight:bold;border:none;background:none;color:var(--text3);transition:var(--transition);line-height:1}
.modal-close:hover{color:var(--text);background:none;border:none}

/* ── Note / Info Box ── */
.note{border:1px solid var(--border);padding:12px 16px;font-size:13px;margin:16px 0;background:var(--surface2);border-radius:var(--radius-sm);color:var(--text2);line-height:1.5}
.note strong{color:var(--text);text-transform:uppercase;letter-spacing:0.5px}

/* ── Toast Notifications ── */
.toast-container{position:fixed;bottom:24px;right:24px;z-index:300;display:flex;flex-direction:column;gap:8px}
.toast{padding:14px 20px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;color:#fff;box-shadow:var(--shadow-lg);animation:slideIn 0.3s ease,fadeOut 0.3s ease 2.7s forwards;max-width:360px}
.toast.success{background:var(--success)}
.toast.error{background:var(--danger)}
.toast.info{background:var(--accent);color:#fff}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes fadeOut{from{opacity:1}to{opacity:0}}

/* ── Empty State ── */
.empty-state{text-align:center;padding:64px 20px;background:none;border:2px dashed var(--border)}
.empty-state svg{width:64px;height:64px;color:var(--border);margin-bottom:20px}
.empty-state p{color:var(--text3);font-size:14px;line-height:1.6;max-width:400px;margin:0 auto}

/* ── Danger Zone ── */
.danger-zone{border-color:rgba(239,68,68,0.4)!important;background:rgba(239,68,68,0.02)!important}
.danger-zone .section-title{color:var(--danger)!important}

/* ── Chart ── */
.chart-container{position:relative;height:300px;width:100%}

/* ── Page Visibility ── */
.page{display:none}.page.active{display:block}

/* ── Error ── */
.error-msg{font-size:13px;color:var(--danger);padding:12px;border:1px solid rgba(239,68,68,0.3);border-radius:var(--radius-sm);margin-top:12px;display:none;background:rgba(239,68,68,0.05)}

/* ── Slider ── */
input[type=range]{-webkit-appearance:none;appearance:none;height:6px;background:var(--border);border:none;border-radius:3px;padding:0}

input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;background:var(--accent);border-radius:50%;cursor:pointer;box-shadow:0 2px 6px var(--accent-light)}

/* ── Refresh Note ── */
.refresh-note{font-size:11px;color:var(--text3);margin-top:12px;display:inline-block}

/* ── Sync Indicator ── */
.sync-indicator {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--warning);
    margin-left: 8px;
    animation: pulse 2s infinite;
}
.sync-indicator svg { width: 12px; height: 12px; }

@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}
.spin { animation: spin 1s linear infinite; }