:root{--bg: #f5f6f8;--surface: #ffffff;--border: #e2e5ea;--text: #1a1d23;--text-muted: #6b7280;--accent: #2563eb;--accent-hover: #1d4ed8;--danger: #dc2626;--online: #16a34a;--offline: #6b7280;--error: #dc2626;--unknown: #d97706;--radius: 8px;--shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 1px 3px rgba(0, 0, 0, .08)}@media(prefers-color-scheme:dark){:root{--bg: #14161a;--surface: #1c1f26;--border: #2b2f38;--text: #e6e8eb;--text-muted: #9aa1ab;--accent: #3b82f6;--accent-hover: #60a5fa;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 1px 3px rgba(0, 0, 0, .4)}}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--accent)}.full-page-center{height:100vh;display:flex;align-items:center;justify-content:center}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.auth-page{height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.auth-card{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:32px}.auth-card h1{font-size:1.25rem;margin:0 0 4px}.auth-card p.subtitle{color:var(--text-muted);margin:0 0 24px;font-size:.875rem}.field{margin-bottom:16px}.field label{display:block;font-size:.8125rem;font-weight:600;margin-bottom:6px;color:var(--text-muted)}.field input[type=text],.field input[type=password],.field input[type=number],.field select,.field textarea{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:.9375rem}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.field-checkbox{display:flex;align-items:center;gap:8px;margin-bottom:16px}.field-error{color:var(--danger);font-size:.8125rem;margin-top:4px}.form-error{background:color-mix(in srgb,var(--danger) 12%,transparent);border:1px solid var(--danger);color:var(--danger);border-radius:6px;padding:10px 12px;font-size:.875rem;margin-bottom:16px}.form-success{background:color-mix(in srgb,var(--online) 12%,transparent);border:1px solid var(--online);color:var(--online);border-radius:6px;padding:10px 12px;font-size:.875rem;margin-bottom:16px}button{font-family:inherit;cursor:pointer}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:6px;border:1px solid transparent;font-size:.9375rem;font-weight:500}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.btn-secondary:hover{border-color:var(--text-muted)}.btn-danger{background:var(--surface);border-color:var(--danger);color:var(--danger)}.btn-danger:hover{background:var(--danger);color:#fff}.btn-block{width:100%;justify-content:center}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-bottom:1px solid var(--border);background:var(--surface)}.app-header h1{font-size:1.125rem;margin:0}.app-header .header-actions{display:flex;align-items:center;gap:12px;font-size:.875rem;color:var(--text-muted)}.app-main{flex:1;padding:24px;max-width:1100px;width:100%;margin:0 auto}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.page-header h2{margin:0;font-size:1.375rem}.firewall-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.firewall-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:10px}.firewall-card-top{display:flex;align-items:flex-start;justify-content:space-between}.firewall-card h3{margin:0 0 2px;font-size:1.0625rem}.firewall-card .host{color:var(--text-muted);font-size:.8125rem}.type-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);width:fit-content}.status-badge{display:inline-flex;align-items:center;gap:6px;font-size:.8125rem;font-weight:600}.status-dot{width:8px;height:8px;border-radius:50%}.status-online .status-dot{background:var(--online)}.status-online{color:var(--online)}.status-offline .status-dot{background:var(--offline)}.status-offline{color:var(--offline)}.status-error .status-dot{background:var(--error)}.status-error{color:var(--error)}.status-unknown .status-dot{background:var(--unknown)}.status-unknown{color:var(--unknown)}.firewall-card-meta{font-size:.8125rem;color:var(--text-muted);display:flex;flex-direction:column;gap:2px}.firewall-card-actions{display:flex;gap:8px;margin-top:4px}.firewall-card-actions .btn{padding:6px 10px;font-size:.8125rem}.empty-state{text-align:center;padding:64px 24px;color:var(--text-muted)}.empty-state h3{color:var(--text);margin-bottom:8px}.form-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;max-width:480px}.form-actions{display:flex;gap:10px;margin-top:8px}.detail-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px}.detail-section h3{margin:0 0 14px;font-size:1rem}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px}.detail-stat .label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:2px}.detail-stat .value{font-size:1rem;font-weight:600}table.data-table{width:100%;border-collapse:collapse;font-size:.875rem}table.data-table th,table.data-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}table.data-table th{color:var(--text-muted);font-weight:600;font-size:.75rem;text-transform:uppercase}.toast{position:fixed;bottom:20px;right:20px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:8px;padding:12px 16px;font-size:.875rem;z-index:100}.toast.toast-error{border-color:var(--danger);color:var(--danger)}.toast.toast-success{border-color:var(--online);color:var(--online)}
