:root{color-scheme:light;--page:#eef5f2;--surface:#ffffff;--surface-soft:#f4f8f6;--text-primary:#0f1512;--text-secondary:#4b5a54;--text-muted:#7b8a84;--border:rgba(15,21,18,0.1);--grid:#e6ecea;--axis:#cfdad6;--soil:#199e70;--temp:#eb6834;--hum:#2a78d6;--pump-band:rgba(42,120,214,0.13);--good:#0ca30c;--warning:#fab219;--critical:#d03b3b;--good-ink:#0a6b16;--warning-ink:#7a5300;--critical-ink:#a32a2a;--brand-a:#12805f;--brand-b:#1f6fb2;--radius:16px;--shadow:0 1px 2px rgba(15,21,18,0.05),0 8px 24px rgba(15,21,18,0.05)}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--page:#0c100f;--surface:#141a18;--surface-soft:#1a221f;--text-primary:#ffffff;--text-secondary:#b9c4bf;--text-muted:#8b9793;--border:rgba(255,255,255,0.1);--grid:#232b28;--axis:#333d39;--soil:#1baf7a;--temp:#d95926;--hum:#3987e5;--pump-band:rgba(57,135,229,0.16);--good-ink:#4fd35a;--warning-ink:#fab219;--critical-ink:#f08383;--brand-a:#0f6b50;--brand-b:#1a5c93;--shadow:0 1px 2px rgba(0,0,0,0.4)}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--page);color:var(--text-primary);font-family:system-ui,-apple-system,Segoe UI,Noto Sans Thai,sans-serif;-webkit-font-smoothing:antialiased;line-height:1.55}.wrap{max-width:1120px;margin:0 auto;padding:0 16px 48px}.header{background:linear-gradient(135deg,var(--brand-a),var(--brand-b));color:#ffffff;padding:20px 0 24px;margin-bottom:20px}.header-inner{max-width:1120px;margin:0 auto;padding:0 16px}.header h1{margin:4px 0 2px;font-size:1.35rem;font-weight:700;letter-spacing:-.01em}.header .subtitle{margin:0;font-size:.9rem;opacity:.9}.header .eyebrow{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;opacity:.85;margin:0}.team-chip{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:4px 12px;border-radius:999px;background:rgba(255,255,255,.18);font-size:.82rem;font-weight:600}.statusbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;font-size:.85rem;color:var(--text-secondary)}.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.dot.online{background:var(--good)}.dot.offline{background:var(--critical)}.pill{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;font-weight:600}.pill,.refresh-btn{border-radius:999px;background:var(--surface);border:1px solid var(--border);color:var(--text-primary)}.refresh-btn{margin-left:auto;padding:6px 14px;font:inherit;font-size:.83rem;font-weight:600;cursor:pointer}.refresh-btn:hover{background:var(--surface-soft)}.refresh-btn:disabled{opacity:.55;cursor:default}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.cards-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px;margin-bottom:16px}.card-label{font-size:.8rem;color:var(--text-secondary);margin:0 0 6px;display:flex;align-items:center;gap:6px}.card-value{font-size:2rem;font-weight:650;line-height:1.1;margin:0;color:var(--text-primary)}.card-value .unit{font-size:.95rem;font-weight:500;color:var(--text-secondary);margin-left:3px}.card-sub{font-size:.8rem;color:var(--text-muted);margin:6px 0 0}.badge{display:inline-flex;align-items:center;gap:5px;margin-top:10px;padding:3px 10px;border-radius:999px;font-size:.78rem;font-weight:600;border:1px solid var(--border)}.badge.good{color:var(--good-ink);background:color-mix(in srgb,var(--good) 12%,transparent)}.badge.warning{color:var(--warning-ink);background:color-mix(in srgb,var(--warning) 18%,transparent)}.badge.critical{color:var(--critical-ink);background:color-mix(in srgb,var(--critical) 12%,transparent)}.badge.info{color:var(--hum);background:color-mix(in srgb,var(--hum) 12%,transparent)}.badge.muted{color:var(--text-muted)}.badge.muted,.meter{background:var(--surface-soft)}.meter{margin-top:12px;height:8px;border-radius:999px;border:1px solid var(--border);overflow:hidden}.meter-fill{height:100%;border-radius:999px;transition:width .5s ease}.pump-row{display:flex;align-items:center;gap:10px}.pump-text{font-size:1.3rem}.pump-text.unknown{color:var(--text-muted)}.pump-icon{font-size:2rem;line-height:1;display:inline-block}.pump-icon.spinning{animation:spin 1.6s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.pump-wave{display:inline-block;animation:wave 1.2s ease-in-out infinite}@keyframes wave{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@media (prefers-reduced-motion:reduce){.pump-icon.spinning,.pump-wave{animation:none}}.section{margin-bottom:16px}.section-title{font-size:1rem;font-weight:650;margin:0 0 2px}.section-desc{font-size:.8rem;color:var(--text-muted);margin:0 0 12px}.chart-box{width:100%;height:240px}.charts-2col{display:grid;grid-template-columns:1fr;grid-gap:12px;gap:12px}.legend{display:flex;flex-wrap:wrap;gap:14px;margin:0 0 8px;font-size:.8rem;color:var(--text-secondary)}.legend-item{display:inline-flex;align-items:center;gap:6px}.legend-line{width:16px;height:3px;border-radius:2px}.legend-band{width:16px;height:10px;border-radius:3px}.legend-band,.tooltip{border:1px solid var(--border)}.tooltip{background:var(--surface);border-radius:10px;box-shadow:var(--shadow);padding:8px 12px;font-size:.8rem;color:var(--text-primary)}.tooltip .t-time{color:var(--text-muted);margin-bottom:4px}.tooltip .t-row{display:flex;align-items:center;gap:6px}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;min-width:460px;border-collapse:collapse;font-size:.85rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}td,th{text-align:left;padding:9px 10px;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--text-secondary);font-weight:600;font-size:.78rem}tbody tr:last-child td{border-bottom:none}.num{text-align:right}.empty{color:var(--text-muted);font-size:.86rem;padding:20px 4px;text-align:center}.toggle-btn{background:none;border:none;padding:0;font:inherit;font-size:.82rem;font-weight:600;color:var(--hum);cursor:pointer}.alert{border-radius:12px;padding:12px 14px;font-size:.86rem;margin-bottom:16px;border:1px solid var(--border)}.alert.critical{background:color-mix(in srgb,var(--critical) 10%,var(--surface));color:var(--critical-ink)}.alert.muted{background:var(--surface);color:var(--text-secondary)}.footer{text-align:center;font-size:.78rem;color:var(--text-muted);margin-top:24px}.control-panel .card{border-top:3px solid var(--hum)}.control-heading,.threshold-row,.threshold-scale{display:flex;justify-content:space-between;align-items:center;gap:12px}.command-status{flex:0 0 auto;padding:5px 10px;border-radius:999px;font-size:.78rem;font-weight:650;background:var(--surface-soft);color:var(--text-secondary)}.command-status.waiting{color:var(--warning-ink)}.command-status.done{color:var(--good-ink)}.control-label{display:block;margin-bottom:5px;color:var(--text-secondary);font-size:.82rem;font-weight:600}.control-input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface-soft);color:var(--text-primary);font:inherit}.control-button:focus-visible,.control-input:focus,.threshold-slider:focus-visible{outline:3px solid color-mix(in srgb,var(--hum) 30%,transparent);outline-offset:2px}.pump-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;margin-top:14px}.control-button{min-height:44px;border:0;border-radius:11px;padding:10px 14px;color:#fff;font:inherit;font-weight:700;cursor:pointer}.control-button:disabled{cursor:wait;opacity:.55}.pump-on{background:#236fc0}.pump-off{background:#c43d3d}.set-button{width:100%;margin-top:10px;background:var(--brand-a)}.threshold-box{margin-top:14px;padding:13px;border-radius:12px;background:var(--surface-soft)}.threshold-row output{min-width:56px;padding:3px 9px;border-radius:8px;background:var(--surface);text-align:center;font-weight:750;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.threshold-slider{width:100%;accent-color:var(--soil)}.threshold-scale{color:var(--text-muted);font-size:.72rem}.last-command{margin:14px 0 0;color:var(--text-secondary);font-size:.84rem}.control-error{margin:12px 0 0;color:var(--critical-ink);font-size:.84rem}@media (max-width:430px){.card{padding:13px}.card-value{font-size:1.65rem}.card-label,.card-sub{font-size:.74rem}.header h1{font-size:1.15rem}.statusbar{font-size:.8rem}.pump-text{font-size:1.05rem}.pump-icon{font-size:1.6rem}.control-heading{align-items:flex-start;flex-direction:column}.pump-actions{grid-template-columns:1fr}}@media (min-width:720px){.cards-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.charts-2col{grid-template-columns:1fr 1fr}.header h1{font-size:1.7rem}.chart-box{height:280px}}