*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0f2d17;--surface: #1a3d22;--surface2: #234d2c;--border: #2e6b38;--accent: #3ddc68;--accent-dim: #2aa84e;--danger: #e05c5c;--warning: #e0a84a;--text: #e8f5eb;--text-muted: #8aad92;--radius: 10px;--shadow: 0 2px 12px rgba(0,0,0,.4)}html,body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5;min-height:100vh;-webkit-tap-highlight-color:transparent}a{color:var(--accent);text-decoration:none}button{cursor:pointer;border:none;border-radius:var(--radius);font-size:1rem;font-weight:600;transition:opacity .15s,transform .1s}button:active{transform:scale(.97)}button:disabled{opacity:.45;cursor:not-allowed}input,select{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:1rem;padding:10px 14px;width:100%;outline:none}input:focus,select:focus{border-color:var(--accent)}.app-shell{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1;padding:16px 16px 80px;max-width:600px;margin:0 auto;width:100%}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);display:flex;justify-content:space-around;padding:8px 0 env(safe-area-inset-bottom,8px);z-index:100}.bottom-nav a{display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--text-muted);font-size:.7rem;padding:6px 16px;border-radius:8px;text-decoration:none}.bottom-nav a.active{color:var(--accent)}.bottom-nav a svg{width:22px;height:22px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.page-header h1{font-size:1.4rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.valve-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.valve-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 12px;display:flex;flex-direction:column;align-items:center;gap:10px;box-shadow:var(--shadow)}.valve-card.open{border-color:var(--accent);background:#1d4a27}.valve-card.error{border-color:var(--danger)}.valve-number{font-size:.75rem;color:var(--text-muted)}.valve-name{font-size:.9rem;font-weight:600;text-align:center}.status-badge{font-size:.7rem;font-weight:700;padding:3px 10px;border-radius:20px;letter-spacing:.05em;text-transform:uppercase}.status-badge.open{background:#1e5c30;color:var(--accent)}.status-badge.closed{background:#2a2a2a;color:var(--text-muted)}.status-badge.unknown{background:#3a3010;color:var(--warning)}.status-badge.error{background:#3a1010;color:var(--danger)}.toggle-btn{width:100%;padding:8px;font-size:.85rem}.toggle-btn.open{background:var(--danger);color:#fff}.toggle-btn.close{background:var(--accent);color:#0f2d17}.toggle-btn.unknown{background:var(--surface2);color:var(--text-muted)}.btn-primary{background:var(--accent);color:#0f2d17;padding:12px 20px}.btn-primary:hover{background:var(--accent-dim)}.btn-danger{background:var(--danger);color:#fff;padding:8px 14px;font-size:.85rem}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text);padding:8px 14px}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-group label{font-size:.85rem;color:var(--text-muted)}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{padding:10px 8px;border-bottom:1px solid var(--border);text-align:left}th{color:var(--text-muted);font-weight:600;font-size:.75rem;text-transform:uppercase}tr:hover td{background:var(--surface2)}.alert-row{background:var(--surface);border-left:3px solid var(--warning);border-radius:var(--radius);padding:12px 16px;margin-bottom:10px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.alert-row.resolved{opacity:.5;border-color:var(--border)}.loader{text-align:center;padding:40px;color:var(--text-muted)}.error-msg{color:var(--danger);background:#3a1010;border-radius:var(--radius);padding:12px 16px;margin-bottom:16px;font-size:.9rem}.success-msg{color:var(--accent);background:#1a3d22;border-radius:var(--radius);padding:12px 16px;margin-bottom:16px;font-size:.9rem}.top-bar{background:var(--surface);border-bottom:1px solid var(--border);padding:14px 16px;display:flex;align-items:center;justify-content:space-between}.top-bar h2{font-size:1rem;color:var(--text-muted)}.farm-label{font-size:1.1rem;font-weight:700;color:var(--accent)}
