:root {
    --bg:#0e1116; --card:#161a22; --ink:#dfe7f1; --muted:#94a3b8; --btn:#001F3F;
    --ok:#10b981; --off:#374151; --on:#60a5fa; --border:#2a3345;
  }
  *{box-sizing:border-box}
  body{margin:0;background:var(--bg);color:var(--ink);font-family:system-ui,Segoe UI,Roboto,Arial,sans-serif}
  .wrap{max-width:980px;margin:4vh auto;padding:16px}
  header h1{margin:0 0 8px 0}
  .bar{display:flex;gap:8px;align-items:center}
  .btn{background:var(--btn);color:#fff;text-decoration:none;padding:8px 12px;border-radius:10px;font-weight:700}
  .btn:hover{opacity:.92}
  .tag{display:inline-block;padding:4px 10px;border:1px solid var(--border);border-radius:999px;color:var(--muted);background:#0f1320}
  .card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px;margin-top:16px;box-shadow:0 18px 48px rgba(0,0,0,.45)}
  .io-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}
  .reg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
  .pill{display:flex;justify-content:space-between;align-items:center;gap:8px;background:#0f1320;border:1px solid var(--border);border-radius:12px;padding:10px}
  .lamp{width:14px;height:14px;border-radius:50%;background:var(--off);box-shadow:0 0 0 1px #111}
  .lamp.on{background:var(--on);box-shadow:0 0 12px rgba(96,165,250,.8)}
  .actions{display:flex;gap:6px}
  button{background:#1f2937;color:#fff;border:none;border-radius:8px;padding:6px 10px;cursor:pointer}
  button:hover{opacity:.92}
  input[type="number"]{width:90px;background:#0f1320;color:var(--ink);border:1px solid var(--border);border-radius:8px;padding:6px}
  
  /* Devices row */
  .devices{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
    gap:12px;
  }
  .device{background:#0f1320;border:1px solid var(--border);border-radius:14px;padding:12px}
  .device-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
  .device-ico{font-size:20px}
  .lbl{display:block;color:var(--muted);font-size:12px;margin:8px 0 6px}
  select, input[type="range"]{
    width:100%;background:#111727;color:var(--ink);
    border:1px solid var(--border);border-radius:10px;padding:8px 10px
  }
  .muted{color:var(--muted)}
  .light-status,.fan-status{display:flex;align-items:center;gap:10px;margin-top:6px}
  
  /* simple meter */
  .meter{display:inline-block;width:80px;height:8px;border-radius:999px;background:#0c1120;position:relative;border:1px solid var(--border)}
  .meter::after{content:"";position:absolute;left:0;top:0;bottom:0;width:var(--w,0%);background:linear-gradient(90deg, var(--on), var(--ok))}
  