:root{--bg:#0b1220;--panel:#121b2e;--panel-border:#1f2c47;--text:#e6ebf5;--text-dim:#93a1bd;--accent:#3b82f6;--green:#22c55e;--amber:#f59e0b;--red:#ef4444}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.center-msg{height:100dvh;color:var(--text-dim);justify-content:center;align-items:center;display:flex}.login-wrap{justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex}.login-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;width:100%;max-width:360px;padding:32px}.login-card h1{margin:0 0 4px;font-size:1.3rem}.login-card .subtitle{color:var(--text-dim);margin:0 0 24px;font-size:.9rem}.login-card label{color:var(--text-dim);margin-bottom:16px;font-size:.85rem;display:block}.login-card input{border:1px solid var(--panel-border);width:100%;color:var(--text);background:#0e1626;border-radius:8px;min-height:44px;margin-top:6px;padding:12px;font-size:16px;display:block}.login-card button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;min-height:46px;margin-top:8px;padding:11px;font-size:1rem;font-weight:600}.login-card button:disabled{opacity:.6;cursor:default}.login-card .error{color:var(--red);margin:-8px 0 16px;font-size:.85rem}.dashboard{max-width:1000px;margin:0 auto;padding:28px 20px 60px}.dash-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:28px;display:flex}.dash-header h1{margin:0 0 6px;font-size:1.5rem}.signout{border:1px solid var(--panel-border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:8px;min-height:44px;padding:10px 16px;font-size:.9rem}.signout:hover,.signout:active{color:var(--text);border-color:var(--accent)}.status-badge{border-radius:999px;padding:3px 10px;font-size:.78rem;font-weight:600;display:inline-block}.status-badge.online{color:var(--green);background:#22c55e26}.status-badge.offline{color:var(--red);background:#ef444426}.card-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:28px;display:grid}.sensor-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;flex-direction:column;gap:8px;min-width:0;padding:16px;display:flex}.sensor-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;font-size:.78rem}.sensor-value{overflow-wrap:anywhere;font-size:clamp(1.25rem,5vw,1.7rem);font-weight:700}.sensor-unit{color:var(--text-dim);font-size:.85rem;font-weight:400}.controls{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-bottom:20px;display:grid}.valve-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;padding:18px}.valve-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:14px;display:flex}.valve-head h3{margin:0;font-size:1rem}.valve-state{border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:700}.valve-state.open{color:var(--green);background:#22c55e26}.valve-state.closed{color:var(--text-dim);background:#94a3b826}.valve-buttons{gap:8px;display:flex}.valve-buttons button{border:1px solid var(--panel-border);min-height:44px;color:var(--text-dim);cursor:pointer;background:0 0;border-radius:8px;flex:1;padding:0 4px;font-size:.8rem;font-weight:600}.valve-buttons button.active{background:var(--accent);border-color:var(--accent);color:#fff}.alert{color:var(--amber);background:#f59e0b1f;border:1px solid #f59e0b66;border-radius:10px;margin-bottom:20px;padding:12px 16px;font-size:.9rem;font-weight:600}.chart-section{background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;padding:20px;overflow:hidden}.chart-section h2{margin:0 0 16px;font-size:1.05rem}.empty{color:var(--text-dim);font-size:.9rem}@media (max-width:640px){.dashboard{padding:20px 14px 48px}.dash-header{flex-direction:column;align-items:stretch}.dash-header h1{font-size:1.3rem}.signout{align-self:flex-start}.chart-section{padding:14px}}@media (max-width:400px){.card-grid{grid-template-columns:repeat(2,1fr);gap:10px}.sensor-card{padding:12px}.controls{grid-template-columns:1fr}.login-card{padding:24px}}@media (max-height:480px) and (orientation:landscape){.dashboard{padding:16px 20px 32px}}
