:root{--bg: #0e0f13;--panel: #15171c;--panel-2: #1a1d23;--border: #2a2e37;--text: #e6e8ec;--muted: #8a909c;--accent: #4ea1ff;--green: #43c59e;--amber: #f0b429;--red: #ff5d5d}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.muted{color:var(--muted)}.warn{color:var(--amber)}.error{background:#ff5d5d1a;border:1px solid var(--red);color:#ffb3b3;padding:.6rem .8rem;border-radius:8px;margin:.5rem 0}.center{min-height:100vh;display:grid;place-items:center;padding:1rem}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px}.login{width:min(360px,92vw);padding:1.6rem;display:flex;flex-direction:column;gap:.8rem}.brand{font-weight:700;letter-spacing:.02em}.login h1{margin:0}.login label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--muted)}input{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.55rem .7rem;font-size:.95rem}input:focus{outline:2px solid var(--accent);outline-offset:0}button{background:var(--accent);color:#06101f;border:0;border-radius:8px;padding:.6rem .9rem;font-weight:600;cursor:pointer}button:disabled{opacity:.6;cursor:default}.link-btn{background:none;border:0;color:var(--accent);cursor:pointer;padding:0;font:inherit;text-decoration:none}.page{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1.2rem;border-bottom:1px solid var(--border);background:var(--panel)}.topbar-left{display:flex;gap:1.4rem;align-items:center}.topbar-right{display:flex;gap:1rem;align-items:center}.nav{display:flex;gap:.4rem}.nav-link{color:var(--muted);text-decoration:none;padding:.3rem .6rem;border-radius:7px;font-size:.9rem}.nav-link:hover,.nav-link.active{color:var(--text);background:var(--panel-2)}.spacer{flex:1}.btn-sm{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:7px;padding:.35rem .7rem;font-size:.82rem;font-weight:600;cursor:pointer}.btn-sm:hover:not(:disabled){border-color:var(--accent)}.btn-sm:disabled{opacity:.45;cursor:default}.btn-sm.primary{background:var(--accent);color:#06101f;border-color:var(--accent)}.btn-sm.danger{color:#ffb3b3;border-color:var(--red)}.btn-sm.danger:hover:not(:disabled){background:#ff5d5d1f}.content{padding:1.2rem;max-width:1200px;width:100%;margin:0 auto}.content-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.8rem}.content-head h2{margin:0}.empty{padding:2rem 0}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.9rem}.tile{padding:.9rem;display:flex;flex-direction:column;gap:.5rem;color:var(--text);text-decoration:none;transition:border-color .15s ease,transform .05s ease}.tile:hover{border-color:var(--accent)}.tile:active{transform:translateY(1px)}.tile-head{display:flex;justify-content:space-between;align-items:center}.tile-name{font-weight:600}.tile-type{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.tile-metrics{display:flex;gap:.8rem;align-items:center;margin:.2rem 0}.metric{display:flex;flex-direction:column}.metric-val{font-size:1.25rem;font-weight:700}.metric-lbl{font-size:.7rem;color:var(--muted)}.tile-foot{display:flex;justify-content:space-between;font-size:.72rem}.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.dot-live{background:var(--green);box-shadow:0 0 0 3px #43c59e2e}.dot-stale{background:var(--muted)}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.state-wet{background:#4ea1ff2e;color:var(--accent)}.state-dry{background:#f0b4292e;color:var(--amber)}.state-unknown{background:#8a909c2e;color:var(--muted)}.chart{padding:.8rem;margin-bottom:1rem}.table-wrap{overflow-x:auto}table.readings{width:100%;border-collapse:collapse;font-size:.85rem}table.readings th,table.readings td{text-align:left;padding:.5rem .7rem;border-bottom:1px solid var(--border);white-space:nowrap}table.readings th{color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--panel)}
