:root{color:#18212f;background:#eef2f7;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{width:min(1440px,100vw - 32px);margin:0 auto;padding:28px 0 40px}.console-layout{grid-template-columns:260px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:#fff;border-right:1px solid #d8e0ea;align-content:start;gap:22px;height:100vh;padding:24px 18px;display:grid;position:sticky;top:0}.brand-block{border-bottom:1px solid #edf1f5;gap:8px;padding:4px 6px 12px;display:grid}.brand-block h1{font-size:27px}.sidebar-nav{gap:8px;display:grid}.nav-button{color:#475569;text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:flex-start;align-items:center;min-height:42px;padding:0 12px;font-weight:700;display:flex}.nav-button:hover{background:#f8fafc;border-color:#d8e0ea}.nav-button.active{color:#0f766e;background:#ecfdf5;border-color:#99f6e4}.content-shell{width:min(1180px,100vw - 300px);margin:0 auto;padding:28px 0 40px}.login-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.login-panel{gap:16px;width:min(420px,100%);display:grid}.topbar,.panel-heading,.rule-main,.rule-row,.metrics,.lower-grid,.workspace,.monitor-grid,.monitor-overview-grid,.monitor-detail-grid,.monitor-network-grid,.monitor-section-heading,.security-grid,.security-plus-grid,.port-grid,.proxy-grid,.waf-grid,.section-title{gap:16px;display:grid}.topbar{grid-template-columns:1fr auto;align-items:center;margin-bottom:20px}.top-actions{color:#64748b;align-items:center;gap:10px;font-size:13px;display:flex}.eyebrow{color:#64748b;text-transform:uppercase;margin:0 0 6px;font-size:13px;font-weight:700}h1,h2,h3,p{margin:0}h1{letter-spacing:0;align-items:center;gap:10px;font-size:34px;display:flex}h2{font-size:18px}h3{font-size:15px}.metrics{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:16px}.overview-grid,.export-grid{gap:16px;display:grid}.overview-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.overview-card{align-content:start;gap:12px;display:grid}.overview-card strong{font-size:24px}.overview-card span{color:#64748b;font-size:13px}.overview-card .text-button{justify-self:start}.export-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.hardening-export{grid-column:1/-1}.metrics article,.panel{background:#fff;border:1px solid #d8e0ea;box-shadow:0 14px 36px #121c2d12}.metrics article{border-radius:8px;padding:18px}.metrics span,.panel-heading span,.rule-main p,.event-row p{color:#64748b;font-size:13px}.metrics strong{margin-top:8px;font-size:26px;display:block}.workspace{grid-template-columns:minmax(0,1.6fr) minmax(360px,.8fr);align-items:start;margin-bottom:16px}.lower-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.monitor-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;margin-bottom:16px}.monitor-ipmi-panel{align-items:start;margin-bottom:16px}.monitor-ipmi-panel .ipmi-form{justify-content:end;align-items:end}.monitor-overview-grid{grid-template-columns:repeat(6,minmax(0,1fr));align-items:stretch;margin-bottom:18px}.monitor-overview-grid .monitor-card{min-height:148px}.monitor-section-heading{grid-template-columns:1fr auto;align-items:end;margin:22px 0 12px}.monitor-section-heading span{color:#64748b;font-size:13px}.monitor-detail-grid{grid-template-columns:minmax(320px,.9fr) minmax(420px,1.35fr) minmax(300px,.85fr);align-items:stretch;margin-bottom:18px}.monitor-network-grid{grid-template-columns:1fr;margin-bottom:16px}.security-grid,.security-plus-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;margin-bottom:16px}.wide-panel{grid-column:1/-1}.security-module-title{grid-template-columns:minmax(220px,.8fr) minmax(260px,1fr) minmax(360px,1.2fr);align-items:center}.security-module-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.security-module-summary article{background:#fff;border:1px solid #dbe4ee;border-radius:8px;padding:10px 12px}.security-module-summary span{color:#64748b;font-size:12px;display:block}.security-module-summary strong{color:#0f172a;margin-top:4px;font-size:18px;display:block}.logs-grid{gap:16px;display:grid}.traffic-toolbar{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;margin-bottom:16px;display:grid}.traffic-mode-tabs,.traffic-filter-form{flex-wrap:wrap;align-items:end;gap:8px;display:flex}.traffic-filter-form label{min-width:160px}.traffic-map-grid{grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);align-items:start;gap:16px;margin-bottom:16px;display:grid}.traffic-map-panel{min-height:580px}.china-map{background:linear-gradient(#f8fafc 0%,#f3f7f5 100%),radial-gradient(circle at 50% 45%,#f59e0b1f,#0000 48%);border:1px solid #dbe3ec;border-radius:8px;min-height:500px;position:relative;overflow:hidden}.echarts-china-map{width:100%;height:560px;min-height:500px}.map-empty{color:#64748b;pointer-events:none;place-items:center;font-size:14px;font-weight:700;display:grid;position:absolute;inset:0}.traffic-side-panel,.traffic-ip-panel{gap:12px;display:grid}.province-list,.traffic-ip-list{gap:10px;max-height:500px;display:grid;overflow:auto}.province-row{border-bottom:1px solid #edf1f5;gap:8px;padding-bottom:10px;display:grid}.province-row>div:first-child,.traffic-ip-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.province-row strong,.traffic-ip-row strong{font-size:14px}.province-row span,.traffic-ip-row p{color:#64748b;font-size:12px}.province-meter{background:#e2e8f0;border-radius:999px;height:8px;overflow:hidden}.province-meter span{border-radius:inherit;background:#0f766e;height:100%;display:block}.traffic-ip-panel{grid-column:span 1}.ops-summary{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px;display:grid}.mini-stat{align-content:center;gap:8px;min-height:104px;display:grid}.mini-stat span{color:#64748b;font-size:13px}.mini-stat strong{font-size:24px}.mail-summary{grid-template-columns:repeat(4,minmax(0,1fr));margin:10px 0 12px}.stat-warning{background:#fffbeb;border-color:#fde68a}.waf-grid{grid-template-columns:minmax(420px,1.2fr) minmax(360px,.9fr);align-items:start}.proxy-grid{grid-template-columns:minmax(0,1.35fr) minmax(360px,.75fr);align-items:start}.port-grid{grid-template-columns:minmax(0,1fr) minmax(360px,.8fr);align-items:start}.port-workbench,.proxy-workbench{grid-template-columns:minmax(0,1fr) 380px;align-items:start;gap:16px;display:grid}.quickq-grid{grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));align-items:start;gap:16px;display:grid}.quickq-control-panel,.quickq-mode-panel,.quickq-network-panel,.quickq-openvpn-panel,.quickq-node-panel,.quickq-classic-panel,.quickq-device-panel,.quickq-rule-panel,.quickq-log-panel{grid-column:1/-1}.quickq-loading-banner,.quickq-loading-card{border-radius:var(--radius-sm);color:var(--muted);background:#f8fbff;border:1px solid #2563eb2e;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.quickq-loading-banner{margin-bottom:14px}.quickq-loading-banner svg{color:#2563eb;flex:none;margin-top:2px}.quickq-loading-banner strong,.quickq-loading-card strong{color:var(--text);display:block}.quickq-loading-banner p,.quickq-loading-card p{margin:4px 0 0;font-size:13px}.quickq-loading-card{background:var(--surface-muted);margin-bottom:14px}.quickq-state-line{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;font-size:13px;display:flex}.quickq-config-note{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);margin-bottom:12px;padding:12px}.quickq-config-note strong,.quickq-file-list strong,.quickq-log-panel pre{overflow-wrap:anywhere}.quickq-log-panel pre{max-height:460px;overflow:auto}.quickq-openvpn-configs{grid-template-columns:repeat(auto-fit,minmax(min(360px,100%),1fr));gap:12px;margin-top:14px;display:grid}.quickq-openvpn-clients,.quickq-openvpn-users{margin-top:14px}.openvpn-client-row{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}.quickq-openvpn-user-summary{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:12px;display:grid}.quickq-openvpn-user-summary span{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--muted);gap:4px;padding:10px 12px;font-size:12px;display:grid}.quickq-openvpn-user-summary strong{color:var(--text);font-size:20px}.quickq-openvpn-user-workbench{grid-template-columns:minmax(240px,.55fr) minmax(0,1fr);align-items:start;gap:12px;display:grid}.openvpn-user-list-pane{gap:8px;display:grid}.openvpn-user-card{border:1px solid var(--line-soft);border-radius:var(--radius-sm);width:100%;color:var(--text);text-align:left;cursor:pointer;background:#fff;gap:8px;padding:10px;display:grid}.openvpn-user-card.active{background:#f0fdfa;border-color:#0f766e}.openvpn-user-card strong,.openvpn-user-card span{overflow-wrap:anywhere}.openvpn-user-card strong{font-size:14px;display:block}.openvpn-user-card>div>span{color:var(--muted);font-size:12px}.openvpn-user-card-meta,.openvpn-user-status-line,.openvpn-user-config-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.openvpn-user-detail{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:#fff;min-width:0;padding:12px}.openvpn-user-config-actions{margin:10px 0 12px}.openvpn-user-form{margin-top:10px}.quickq-openvpn-activity{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);margin-top:14px;padding:12px}.quickq-openvpn-activity-summary{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-bottom:12px;display:grid}.quickq-openvpn-activity-summary span{border:1px solid var(--line-soft);border-radius:var(--radius-sm);color:var(--muted);background:#fff;gap:4px;padding:9px 10px;font-size:12px;display:grid}.quickq-openvpn-activity-summary strong{color:var(--text);overflow-wrap:anywhere;font-size:16px}.openvpn-activity-list{gap:10px;display:grid}.openvpn-activity-card{border-radius:var(--radius-sm);background:#fff;border:1px solid #e4e9f0;min-width:0;padding:12px}.openvpn-activity-head{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;display:grid}.openvpn-activity-head strong,.openvpn-activity-head p,.openvpn-flow-row span{overflow-wrap:anywhere}.openvpn-activity-head p{color:var(--muted);margin:4px 0 0;font-size:12px}.openvpn-speed-box{gap:6px;min-width:140px;display:grid}.openvpn-speed-box span,.openvpn-activity-metrics span,.openvpn-app-list span,.openvpn-dns-list span{border:1px solid var(--line-soft);color:var(--muted);background:#f8fafc;border-radius:6px;padding:5px 8px;font-size:12px;font-weight:700}.openvpn-activity-metrics,.openvpn-app-list,.openvpn-dns-list{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.openvpn-dns-list span{background:#f6f9ff;border-color:#d4e4ff}.openvpn-flow-table{gap:4px;margin-top:10px;display:grid}.openvpn-flow-row{color:var(--muted);border:1px solid #edf1f5;border-radius:6px;grid-template-columns:minmax(140px,1fr) minmax(130px,.85fr) 80px minmax(96px,.65fr);align-items:center;gap:8px;padding:7px 8px;font-size:12px;display:grid}.openvpn-recent-records{margin-top:12px}.openvpn-record-row{color:var(--muted);border:1px solid #edf1f5;border-radius:6px;grid-template-columns:140px 110px minmax(140px,1fr) minmax(130px,.9fr) minmax(110px,.75fr);align-items:center;gap:8px;padding:7px 8px;font-size:12px;display:grid}.openvpn-record-row.header{color:var(--text);background:#f8fafc;font-weight:700}.openvpn-record-row span{overflow-wrap:anywhere}.openvpn-flow-row.header{color:var(--text);background:#f8fafc;font-weight:700}.quickq-openvpn-configs>div{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);min-width:0;padding:12px}.quickq-openvpn-configs pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:360px;overflow:auto}.quickq-rule-form textarea{min-height:128px}.checkbox-row{min-height:42px;color:var(--text);align-items:center;gap:9px;font-weight:600;display:flex}.checkbox-row input[type=checkbox]{width:17px;height:17px;accent-color:var(--primary);margin:0}.quickq-rule-help{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--muted);gap:8px;margin-bottom:12px;padding:12px;font-size:13px;display:grid}.quickq-rule-help strong{color:var(--text)}.quickq-domain-list{margin-top:14px}.quickq-domain-chip-list{margin-top:8px}.quickq-network-detail-list{color:var(--muted);gap:4px;margin-top:8px;font-size:12px;display:grid}.quickq-network-detail-list span{overflow-wrap:anywhere}.quickq-path-flow{grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));gap:8px;margin-bottom:12px;display:grid}.quickq-path-step{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:#fff;align-items:flex-start;gap:8px;min-width:0;padding:10px 24px 10px 10px;display:flex;position:relative}.quickq-path-step.is-ok{background:#f4fbf7;border-color:#20966242}.quickq-path-step.is-warning,.quickq-path-step.is-pending{background:#fffbeb;border-color:#f59e0b47}.quickq-path-step.is-error{background:#fff7f5;border-color:#b91c1c3d}.quickq-path-step strong{color:var(--text);font-size:13px;display:block}.quickq-path-step p{color:var(--muted);overflow-wrap:anywhere;margin:4px 0 0;font-size:12px}.quickq-path-arrow{color:var(--muted);font-weight:800;position:absolute;top:10px;right:8px}.quickq-domain-health{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);gap:10px;margin-bottom:12px;padding:12px;display:grid}.quickq-route-segment-card{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:#fff;gap:10px;margin-bottom:12px;padding:12px;display:grid}.quickq-route-segment-grid{grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:10px;display:grid}.quickq-route-segment{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);min-width:0;padding:10px}.quickq-route-segment.is-ok{background:#f4fbf7;border-color:#2096623d}.quickq-route-segment.is-warning,.quickq-route-segment.is-pending{background:#fffbeb;border-color:#f59e0b47}.quickq-route-segment.is-error{background:#fff7f5;border-color:#b91c1c3d}.quickq-route-segment-title{align-items:center;gap:8px;min-width:0;margin-bottom:8px;display:flex}.quickq-route-segment-title strong{overflow-wrap:anywhere;min-width:0}.quickq-route-segment-meta{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:8px;display:grid}.quickq-route-segment-meta span{min-width:0;color:var(--muted);overflow-wrap:anywhere;font-size:12px}.quickq-route-segment-meta b{color:var(--text);margin-bottom:2px;font-weight:700;display:block}.quickq-route-segment p{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:12px}.quickq-domain-health.is-ok{background:#f4fbf7;border-color:#20966238}.quickq-domain-health.is-warning{background:#fffbeb;border-color:#f59e0b42}.quickq-domain-health.is-error{background:#fff7f5;border-color:#b91c1c38}.quickq-rule-actions{justify-content:flex-start;margin-top:10px}.quickq-mode-card,.quickq-current-node{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);padding:12px}.quickq-login-card{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);gap:12px;margin-bottom:14px;padding:12px;display:grid}.quickq-login-card.is-ok{background:#f4fbf7;border-color:#2096623d}.quickq-login-card.is-warning{background:#fff7f5;border-color:#bd4c3b3d}.quickq-login-main{align-items:flex-start;gap:10px;display:flex}.quickq-login-main strong,.quickq-login-grid strong{color:var(--text);display:block}.quickq-login-main p{color:var(--muted);margin:4px 0 0;font-size:13px}.quickq-login-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;display:grid}.quickq-login-grid span{min-width:0;color:var(--muted);overflow-wrap:anywhere;background:#ffffffb3;border:1px solid #94a3b840;border-radius:8px;padding:8px 10px;font-size:12px}.quickq-login-problems{margin-top:-2px}.quickq-relogin-notice{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:#ffffffb8;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.quickq-relogin-notice p{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:13px}.quickq-relogin-notice.is-monitor{background:#f8fbff;border-color:#2563eb33}.quickq-relogin-notice.is-ok{background:#f4fbf7;border-color:#2096623d}.quickq-relogin-notice.is-danger{background:#fff7f5;border-color:#bd4c3b3d}.compact-heading{margin-bottom:10px}.compact-heading h3{margin:0;font-size:15px}.proxy-user-manager{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);padding:12px}.proxy-user-list{gap:10px;display:grid}.proxy-user-row{background:#fff;border:1px solid #e4e9f0;border-radius:8px;grid-template-columns:minmax(110px,1fr) minmax(120px,1fr) minmax(140px,1fr) auto minmax(150px,auto);align-items:end;gap:10px;padding:10px;display:grid}.proxy-user-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.proxy-user-request-list{gap:6px;margin-top:8px;display:grid}.proxy-user-request-row{color:#64748b;background:#f8fafc;border:1px solid #edf1f5;border-radius:8px;grid-template-columns:150px minmax(0,1fr) 150px;align-items:center;gap:8px;padding:7px 9px;font-size:12px;display:grid}.proxy-user-request-row strong{color:#18212f;overflow-wrap:anywhere}.proxy-nginx-sync-panel textarea{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px}.gateway-command-details{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);margin-top:12px;padding:10px 12px}.gateway-command-details summary{cursor:pointer;color:var(--muted);font-weight:700}.gateway-command-details pre{max-height:260px;margin:10px 0 0;font-size:12px;overflow:auto}.quickq-mode-card p,.quickq-current-node span{color:var(--muted);overflow-wrap:anywhere;margin-top:6px;display:block}.quickq-node-form,.quickq-node-list,.quickq-device-list,.quickq-classic-list{margin-top:14px}.quickq-classic-toolbar{grid-template-columns:minmax(260px,1fr) auto;align-items:end;gap:12px;display:grid}.quickq-classic-toolbar label{color:var(--muted);gap:6px;font-size:13px;display:grid}.quickq-classic-picker{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:14px;margin-top:14px;display:grid}.quickq-classic-countries{gap:6px;max-height:620px;padding-right:4px;display:grid;overflow:auto}.quickq-country-option{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--text);text-align:left;cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:9px 10px;display:grid}.quickq-country-option span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.quickq-country-option strong{color:var(--muted);font-size:12px}.quickq-country-option.active{border-color:var(--accent);background:var(--surface-muted)}.quickq-country-option.active strong{color:var(--accent)}.quickq-classic-active-heading,.quickq-classic-node-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.quickq-classic-active-heading{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);padding:10px 12px}.quickq-classic-node-row{grid-template-columns:auto minmax(0,1fr) auto}.quickq-classic-node-row p,.quickq-classic-node-row strong{overflow-wrap:anywhere}.quickq-classic-node-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-top:10px;display:grid}.quickq-classic-node{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface-muted);gap:4px;min-width:0;padding:8px 10px;display:grid}.quickq-classic-node .text-button{justify-self:start;min-height:30px;padding:5px 10px}.quickq-classic-node strong,.quickq-classic-node span{overflow-wrap:anywhere}.quickq-classic-node span{color:var(--muted);font-size:12px}.port-list-panel{min-height:100%}.port-policy-panel,.proxy-route-panel,.proxy-cert-panel{grid-column:1}.ops-form-panel{grid-area:1/2/span 3;position:sticky;top:24px}.port-grid .port-policy-panel,.port-grid .port-export,.proxy-grid .proxy-export,.waf-grid .waf-export{grid-column:1/-1}.section-title{grid-template-columns:1fr auto;align-items:end;margin:26px 0 12px}.section-title span{color:#64748b;font-size:13px}.waf-title,.proxy-title{margin-top:34px}.panel{border-radius:8px;padding:18px}.panel-heading{grid-template-columns:1fr auto;align-items:center;margin-bottom:16px}.monitor-card{align-content:start;gap:10px;min-height:136px;display:grid}.monitor-heading{grid-template-columns:1fr auto;align-items:baseline;gap:12px;display:grid}.monitor-heading span,.monitor-card p{color:#64748b;font-size:13px}.monitor-heading strong{font-size:20px}.meter{background:#e2e8f0;border-radius:999px;height:9px;overflow:hidden}.meter span{border-radius:inherit;background:#0f766e;height:100%;display:block}.disk-card{grid-column:span 2}.network-card{grid-column:1/-1}.temperature-card,.fan-card{grid-column:span 2}.monitor-detail-grid .temperature-card,.monitor-detail-grid .fan-card,.monitor-detail-grid .disk-card{grid-column:auto}.monitor-detail-grid .monitor-warning{grid-column:1/-1}.fan-ring-grid{grid-template-columns:repeat(auto-fit,minmax(122px,1fr));gap:12px;display:grid}.fan-ring-item{background:#fff;border:1px solid #edf1f5;border-radius:8px;justify-items:center;gap:8px;min-width:0;padding:12px 10px;display:grid}.fan-ring-item.unavailable{background:#f8fafc}.fan-ring{border-radius:50%;place-items:center;width:82px;height:82px;display:grid;position:relative}.fan-ring:before{content:"";background:#fff;border-radius:50%;position:absolute;inset:9px}.fan-ring>div{justify-items:center;line-height:1.1;display:grid;position:relative}.fan-ring strong{font-size:17px}.fan-ring span,.fan-ring-meta span{color:#64748b;font-size:11px}.fan-ring-meta{text-align:center;justify-items:center;gap:3px;min-width:0;display:grid}.fan-ring-meta strong{word-break:break-word;font-size:13px}.temperature-list{gap:8px;max-height:220px;display:grid;overflow:auto}.temperature-row{background:#fff;border:1px solid #edf1f5;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;display:grid}.temperature-row.unavailable{background:#f8fafc}.temperature-row strong{font-size:13px}.temperature-row p{color:#64748b;font-size:12px}.network-interface-list{gap:10px;display:grid}.network-interface-row{background:#fff;border:1px solid #edf1f5;border-radius:8px;grid-template-columns:minmax(0,1fr) minmax(220px,.36fr);align-items:center;gap:14px;padding:12px;display:grid}.nic-title{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.nic-rates{color:#64748b;justify-items:end;gap:4px;font-size:12px;display:grid}.nic-rates strong{color:#0f172a;font-size:13px}.disk-row{border-top:1px solid #edf1f5;grid-template-columns:1fr auto;align-items:center;gap:10px;padding-top:8px;display:grid}.disk-row strong{font-size:13px}.monitor-warning{background:#fffbeb;border-color:#fde68a}.rule-list,.event-list,.port-list{gap:10px;display:grid}.port-scope-tabs{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.compact-list{max-height:360px;margin-top:14px;overflow:auto}.compact-toggle-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.row-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.quick-actions-panel{grid-column:1/-1}.quick-action-grid,.chip-list{flex-wrap:wrap;gap:8px;display:flex}.quick-action-grid .text-button,.chip-list .text-button{background:#f8fafc}.region-picker{background:#fbfcfe;border:1px solid #dbe3ec;border-radius:8px;gap:12px;padding:12px;display:grid}.region-picker-head,.selected-region-head,.city-menu-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.region-picker-head p{color:#64748b;margin-top:4px;font-size:12px}.region-picker-body{grid-template-columns:190px minmax(0,1fr);gap:12px;min-height:320px;display:grid}.province-menu,.city-menu{background:#fff;border:1px solid #edf1f5;border-radius:8px}.province-menu{align-content:start;max-height:420px;padding:8px;display:grid;overflow:auto}.province-button,.city-button,.selected-region-chip{color:#334155;background:0 0;border:1px solid #0000;border-radius:8px}.province-button{text-align:left;justify-content:space-between;align-items:center;gap:8px;min-height:34px;padding:0 9px;display:flex}.province-button small{color:#0f766e;font-size:11px}.province-button:hover,.city-button:hover{background:#f8fafc;border-color:#dbe3ec}.province-button.active{color:#0f766e;background:#ecfdf5;border-color:#99f6e4;font-weight:700}.province-button.selected,.city-button.selected{color:#047857;background:#ecfdf5;border-color:#99f6e4}.city-menu{align-content:start;gap:12px;padding:12px;display:grid}.city-grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;display:grid}.city-button{background:#f8fafc;min-height:34px;padding:0 10px;font-size:13px}.selected-region-panel{background:#fff;border:1px solid #edf1f5;border-radius:8px;gap:10px;padding:12px;display:grid}.selected-region-list{flex-wrap:wrap;gap:8px;display:flex}.selected-region-chip{color:#047857;background:#ecfdf5;border-color:#a7f3d0;min-height:30px;padding:0 10px;font-size:12px}.empty-inline{color:#64748b;font-size:13px}.time-meta{color:#64748b;margin-top:4px;font-size:12px;font-weight:500}.port-row{background:#fbfcfe;border:1px solid #e4e9f0;border-radius:8px;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:12px;display:grid}.port-row.risk-high,.port-row.risk-critical{background:#fff7f7;border-color:#fecaca;box-shadow:inset 3px 0 #ef4444}.port-row.risk-medium{background:#fffdf5;border-color:#fde68a;box-shadow:inset 3px 0 #f59e0b}.dense-list{max-height:520px;overflow:auto}.port-row strong{font-size:14px}.port-title-line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.port-row span,.port-row p{color:#64748b;font-size:13px}.port-row .risk-text{color:#b45309}.port-annotation{grid-template-columns:minmax(220px,1fr) auto auto;align-items:center;gap:8px;margin-top:10px;display:grid}.port-annotation input{background:#fff;min-height:34px}.port-row.risk-high .risk-text,.port-row.risk-critical .risk-text{color:#b91c1c;font-weight:600}.rule-row{background:#fbfcfe;border:1px solid #e4e9f0;border-radius:8px;grid-template-columns:minmax(220px,1fr) minmax(260px,1.2fr) auto;align-items:center;padding:14px;position:relative}.rule-row.muted{opacity:.58}.rule-main{grid-template-columns:auto 1fr;align-items:center}.ops-rule-row{grid-template-columns:minmax(240px,1.1fr) minmax(260px,1fr) auto}.template-row{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.template-row .text-button{background:#f8fafc}.form-grid-compact{grid-template-columns:repeat(2,minmax(0,1fr))}.route-list{gap:12px;display:grid}.route-card{background:#fbfcfe;border:1px solid #e4e9f0;border-radius:8px;gap:12px;padding:14px;display:grid}.route-card.muted{opacity:.58}.route-card-head{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.route-card-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.route-card-head p,.route-flow p,.route-flow span{color:#64748b;font-size:13px}.route-flow{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.route-flow>div{background:#fff;border:1px solid #edf1f5;border-radius:8px;gap:4px;padding:12px;display:grid}.route-flow strong{word-break:break-word}.rule-tags{flex-wrap:wrap;gap:8px;display:flex}.cert-inline{background:#fff;border:1px solid #e2e8f0;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.cert-inline>div{gap:2px;display:grid}.cert-inline span,.cert-row p{color:#64748b;font-size:13px}.cert-paths{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;gap:8px;padding:10px 12px;display:grid}.cert-paths div{gap:4px;display:grid}.cert-paths span{color:#64748b;font-size:12px}.cert-paths code{color:#0f172a;overflow-wrap:anywhere;font-size:12px;line-height:1.5}.cert-paths p{color:#8a5a00;margin:0;font-size:12px}.cert-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.cert-list{gap:10px;margin-top:14px;display:grid}.cert-row{background:#fbfcfe;border:1px solid #e4e9f0;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px;display:grid}.cert-row p{word-break:break-word;margin:4px 0 0}.cert-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.pill{color:#475569;word-break:break-word;background:#fff;border:1px solid #d9e2ec;border-radius:999px;align-items:center;min-height:26px;padding:3px 10px;font-size:12px;line-height:1.2;display:inline-flex}.pill.allow,.decision.allow{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.pill.block,.decision.block{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.icon-button,.status-button,.text-button,.primary{color:#1e293b;background:#fff;border:1px solid #cbd5e1;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:38px;display:inline-flex}.icon-button,.status-button{width:38px;padding:0}.status-button{color:#0f766e}.primary{color:#fff;background:#134e4a;border-color:#134e4a;padding:0 14px;font-weight:700}.text-button{min-height:32px;padding:0 10px}.text-button.active{color:#0f766e;background:#ecfdf5;border-color:#99f6e4}button:disabled{cursor:not-allowed;opacity:.5}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}label{color:#475569;gap:6px;font-size:13px;font-weight:700;display:grid}label input[type=checkbox]{width:16px;min-height:16px}input,select,textarea{color:#18212f;background:#fff;border:1px solid #cbd5e1;border-radius:8px;width:100%;min-height:40px;padding:8px 10px}textarea{resize:vertical}.wide{grid-column:1/-1}.decision{border:1px solid;border-radius:8px;gap:4px;margin-top:14px;padding:12px;display:grid}.decision ul{color:inherit;margin:8px 0 0;padding-left:18px;font-size:13px}.inline-decision{margin-top:10px}.warning-text{color:#92400e;border-left:3px solid #f59e0b;padding-left:10px;font-size:12px}.toggle-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.toggle-grid label,.switch-row{background:#f8fafc;border:1px solid #dbe3ec;border-radius:8px;align-items:center;gap:8px;min-height:38px;padding:8px 10px;display:flex}.event-row{border-bottom:1px solid #edf1f5;grid-template-columns:auto 1fr;align-items:start;gap:10px;padding:10px 0;display:grid}.log-row{cursor:zoom-in;border-radius:8px;padding:10px}.log-row:hover{background:#f8fafc}.logs-panel{gap:14px;display:grid}.log-tabs,.pagination,.log-toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.log-filter-grid{background:#fbfcfe;border:1px solid #edf1f5;border-radius:8px;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:12px;display:grid}.log-filter-actions{align-items:end;gap:8px;display:flex}.log-toolbar{color:#64748b;justify-content:space-between;font-size:13px}.log-toolbar label{align-items:center;gap:8px;display:flex}.log-toolbar select{width:86px;min-height:34px}.log-list{max-height:640px;overflow:auto}.modal-backdrop{z-index:40;background:#0f172a6b;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.log-detail-modal{background:#fff;border-radius:8px;gap:14px;width:min(960px,100%);max-height:min(820px,100vh - 48px);padding:18px;display:grid;overflow:auto;box-shadow:0 24px 80px #0f172a3d}.log-detail-grid,.log-param-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.log-detail-item{background:#fbfcfe;border:1px solid #edf1f5;border-radius:8px;gap:4px;padding:10px;display:grid}.log-detail-item span{color:#64748b;font-size:12px}.log-detail-item strong{overflow-wrap:anywhere;font-size:13px}.log-param-grid h3,.log-detail-modal h3{margin:4px 0 8px;font-size:13px}.log-param-grid pre,.log-detail-json{color:#d1fae5;white-space:pre-wrap;background:#101827;border-radius:8px;max-height:360px;margin:0;padding:12px;font-size:12px;line-height:1.6;overflow:auto}.pagination{color:#64748b;border-top:1px solid #edf1f5;justify-content:flex-end;padding-top:12px;font-size:13px}.version-row{border-bottom:1px solid #edf1f5;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:10px 0;display:grid}.version-row p{color:#64748b;font-size:13px}.incident-list,.asset-list,.environment-list{max-height:620px}.incident-row,.asset-row,.environment-row{align-items:stretch;gap:16px}.incident-row textarea,.asset-edit input{margin-top:8px}.incident-actions,.asset-edit{grid-template-columns:minmax(120px,1fr);gap:8px;min-width:180px;display:grid}.asset-edit{grid-template-columns:repeat(2,minmax(120px,1fr));min-width:min(420px,100%)}.asset-edit .switch-row{min-height:40px}.incident-actions .primary,.incident-actions .text-button,.asset-edit .text-button{justify-content:center}.status-pill,.soft-chip{color:#475569;background:#eef2f7;border-radius:6px;align-items:center;min-height:28px;padding:4px 9px;font-size:12px;font-weight:700;display:inline-flex}.status-pill.danger{color:#b91c1c;background:#fee2e2}.status-pill.ok{color:#15803d;background:#dcfce7}.status-pill.monitor{color:#1d4ed8;background:#dbeafe}.soft-chip{color:#1d4ed8;background:#eff6ff;margin:4px 6px 0 0;font-weight:600}.soft-chip.ok-chip{color:#15803d;background:#dcfce7}.soft-chip.danger-chip{color:#b91c1c;background:#fee2e2}.dot{background:#94a3b8;border-radius:50%;width:10px;height:10px;margin-top:6px}.dot.allow{background:#10b981}.dot.block{background:#ef4444}.dot.monitor{background:#f59e0b}.export-panel pre{color:#d1fae5;white-space:pre-wrap;background:#101827;border-radius:8px;max-height:320px;margin:0;padding:14px;font-size:12px;line-height:1.6;overflow:auto}.waf-export h3,.proxy-export h3,.port-export h3,.hardening-export h3{margin:16px 0 8px}.security-export-panel{grid-column:1/-1}.security-export-panel h3{margin:16px 0 8px}.mfa-setup,.honeypot-list{margin-top:14px}.waf-export h3:first-of-type,.proxy-export h3:first-of-type,.port-export h3:first-of-type,.hardening-export h3:first-of-type{margin-top:0}.error,.empty{border-radius:8px;padding:12px}.error{color:#be123c;background:#fff1f2;border:1px solid #fecaca;margin-bottom:16px}.empty{color:#64748b;background:#f8fafc}@media (width<=1180px){.workspace,.lower-grid,.monitor-grid,.monitor-overview-grid,.monitor-detail-grid,.monitor-network-grid,.security-grid,.security-plus-grid,.port-grid,.proxy-grid,.port-workbench,.proxy-workbench,.traffic-map-grid,.traffic-toolbar,.security-module-title,.ops-summary,.waf-grid,.overview-grid,.export-grid{grid-template-columns:1fr}.waf-grid .waf-export,.proxy-grid .proxy-export,.port-grid .port-policy-panel,.port-grid .port-export{grid-column:auto}.toggle-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.disk-card,.temperature-card,.hardening-export,.security-export-panel,.quick-actions-panel,.traffic-ip-panel{grid-column:auto}.security-module-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.ops-form-panel,.port-policy-panel,.proxy-route-panel,.proxy-cert-panel{grid-area:auto;position:static}.cert-controls,.cert-row,.quickq-openvpn-user-workbench,.openvpn-activity-head,.openvpn-flow-row,.openvpn-record-row{grid-template-columns:1fr}.openvpn-speed-box{min-width:0}.region-picker-body{grid-template-columns:1fr}.province-menu{grid-template-columns:repeat(auto-fill,minmax(86px,1fr));max-height:220px}.cert-actions,.cert-inline{justify-content:flex-start}.network-interface-row{grid-template-columns:1fr}.nic-rates{justify-items:start}}@media (width<=960px){.console-layout{grid-template-columns:1fr}.sidebar{border-bottom:1px solid #d8e0ea;border-right:0;height:auto;padding:18px 16px;position:static}.brand-block{padding:0 0 12px}.sidebar-nav{gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.nav-button{white-space:nowrap;flex:none}.content-shell{width:min(100% - 28px,1180px);padding-top:20px}}@media (width<=720px){.app-shell,.content-shell{width:min(100% - 20px,1440px);padding-top:18px}.metrics,.form-grid,.rule-row,.ops-rule-row,.route-flow,.port-row,.monitor-grid,.monitor-overview-grid,.monitor-detail-grid,.monitor-network-grid,.security-grid,.security-plus-grid,.security-module-title,.security-module-summary,.section-title,.log-filter-grid,.log-detail-grid,.log-param-grid,.traffic-filter-form,.port-annotation,.incident-row,.asset-row,.environment-row,.asset-edit,.toggle-grid{grid-template-columns:1fr}.traffic-toolbar{align-items:stretch}.traffic-filter-form{display:grid}.china-map{min-height:520px;padding:12px}.echarts-china-map{height:520px;min-height:500px}h1{font-size:26px}.topbar{grid-template-columns:1fr}.top-actions{justify-content:space-between}}:root{--bg:#f4f6f9;--surface:#fff;--surface-muted:#f8fafc;--line:#d9e1ea;--line-soft:#e8edf3;--text:#172033;--muted:#637083;--primary:#0f766e;--primary-strong:#115e59;--primary-soft:#e7f8f4;--info:#2563eb;--warn:#b7791f;--danger:#c2410c;--danger-soft:#fff1ed;--success:#15803d;--success-soft:#ecfdf3;--shadow:0 12px 32px #0f172a12;--radius:8px}html{background:var(--bg);min-width:320px}body{color:var(--text);background:linear-gradient(180deg, #f8fafc 0, var(--bg) 260px), var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overflow-x:hidden}#app{min-height:100dvh}button,input,select,textarea{min-width:0}button{transition:border-color .16s,background-color .16s,color .16s,box-shadow .16s,transform .16s}button:hover:not(:disabled){transform:translateY(-1px)}.console-layout{background:0 0;grid-template-columns:clamp(226px,17vw,280px) minmax(0,1fr);min-height:100dvh;display:grid}.sidebar{border-right:1px solid var(--line);background:#fffffff5;gap:18px;height:100dvh;padding:22px 16px;position:sticky;top:0;overflow:auto;box-shadow:8px 0 30px #0f172a0a}.brand-block{border-bottom-color:var(--line-soft);gap:10px;padding:2px 6px 16px}.brand-block .eyebrow{color:var(--primary);letter-spacing:0;text-transform:none;font-size:11px}.brand-block h1{color:#0f172a;min-width:0;font-size:24px;line-height:1.18}.sidebar-nav{gap:6px;padding-bottom:12px}.nav-button{border-radius:var(--radius);color:#455468;border-color:#0000;justify-content:flex-start;width:100%;min-height:40px;padding:0 12px;font-size:14px;font-weight:650;line-height:1.2}.nav-button:hover{border-color:var(--line);background:var(--surface-muted);color:#172033}.nav-button.active{background:var(--primary-soft);color:var(--primary-strong);box-shadow:inset 3px 0 0 var(--primary);border-color:#9fe5d9}.content-shell{width:100%;min-width:0;max-width:1640px;margin:0 auto;padding:24px clamp(18px,3vw,42px) 44px}.topbar{z-index:20;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f8fafceb;grid-template-columns:minmax(0,1fr) auto;gap:18px;margin:-24px calc(-1*clamp(18px,3vw,42px)) 18px;padding:18px clamp(18px,3vw,42px);position:sticky;top:0}.topbar h1{color:#0f172a;min-width:0;font-size:clamp(24px,2vw,32px);line-height:1.15}.top-actions{flex-wrap:wrap;justify-content:flex-end}.top-actions span{max-width:220px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.eyebrow{color:var(--muted);letter-spacing:0;text-transform:none;font-size:12px}.login-shell{background:linear-gradient(135deg, #0f766e1a, transparent 42%), linear-gradient(315deg, #2563eb14, transparent 38%), var(--bg)}.login-panel{width:min(440px,100%);padding:24px}.panel,.metrics article{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-width:0;box-shadow:var(--shadow)}.panel{padding:clamp(14px,1.45vw,20px)}.panel-heading{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px}.panel-heading h2,.panel-heading h3{line-height:1.25}.panel-heading span,.metrics span,.rule-main p,.event-row p,.version-row p{color:var(--muted)}.metrics{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:12px;margin-bottom:16px}.metrics article{align-content:center;gap:8px;min-height:106px;padding:16px;display:grid}.metrics strong{color:#0f172a;margin-top:0;font-size:clamp(22px,2.2vw,30px);line-height:1.05}.security-grid,.security-plus-grid,.export-grid{grid-template-columns:repeat(auto-fit,minmax(min(330px,100%),1fr));gap:16px}.overview-grid{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:16px}.overview-card{min-height:166px}.workspace,.waf-grid{grid-template-columns:minmax(0,1fr) minmax(320px,420px);gap:16px}.lower-grid,.proxy-grid,.port-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.monitor-grid,.monitor-overview-grid,.ops-summary,.mail-summary{grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:12px}.monitor-detail-grid{grid-template-columns:minmax(280px,.9fr) minmax(360px,1.25fr) minmax(260px,.85fr);gap:16px}.traffic-map-grid{grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:16px}.port-workbench,.proxy-workbench{grid-template-columns:minmax(0,1fr) minmax(320px,390px);gap:16px}.ops-form-panel{top:86px}.wide-panel,.hardening-export,.security-export-panel,.quick-actions-panel,.waf-grid .waf-export,.proxy-grid .proxy-export,.port-grid .port-policy-panel,.port-grid .port-export{grid-column:1/-1}.section-title,.monitor-section-heading,.security-module-title{grid-template-columns:minmax(0,1fr) auto;gap:10px 18px;margin:24px 0 12px}.section-title h2,.monitor-section-heading h2{font-size:20px}.section-title span,.monitor-section-heading span{max-width:760px;color:var(--muted);text-align:right}.security-module-summary{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}.security-module-summary article,.fan-ring-item,.temperature-row,.network-interface-row,.route-flow>div,.cert-paths,.log-filter-grid,.region-picker,.selected-region-panel{border-color:var(--line-soft);background:var(--surface-muted)}.form-grid,.form-grid-compact,.cert-controls,.log-filter-grid{grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr))}label{color:#435166;min-width:0}input,select,textarea{border-radius:var(--radius);color:var(--text);border-color:#cbd5df}input:focus,select:focus,textarea:focus{border-color:#5cc4b3;outline:none;box-shadow:0 0 0 3px #0f766e24}.switch-row,.toggle-grid label{border-color:var(--line-soft);background:var(--surface-muted);min-width:0}.toggle-grid{grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr))}.rule-row,.ops-rule-row{border-color:var(--line-soft);background:var(--surface-muted);grid-template-columns:minmax(220px,.95fr) minmax(240px,1fr) auto;gap:12px}.rule-main{min-width:0}.rule-main strong,.route-card-head strong,.event-row strong,.version-row strong,.port-row strong,.cert-row strong{overflow-wrap:anywhere}.rule-tags,.quick-action-grid,.chip-list,.template-row,.log-tabs,.pagination,.row-actions,.cert-actions{min-width:0}.pill{border-color:var(--line);color:#455468;overflow-wrap:anywhere;background:#fff;max-width:100%}.port-row,.route-card,.cert-row{border-color:var(--line-soft);background:var(--surface-muted)}.port-annotation{grid-template-columns:minmax(180px,1fr) auto auto}.route-flow{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr))}.cert-inline,.cert-row,.version-row{grid-template-columns:minmax(0,1fr) auto}.event-list,.rule-list,.route-list,.port-list,.cert-list,.event-row,.version-row,.event-row>div,.version-row>div,.log-row>div{min-width:0}.event-row p,.version-row p,.log-row p,.time-meta{overflow-wrap:anywhere}.log-filter-actions{align-items:end}.log-toolbar{gap:12px}.log-list{min-height:220px;max-height:min(680px,100dvh - 320px)}.modal-backdrop{padding:clamp(12px,3vw,24px)}.log-detail-modal{width:min(980px,100%)}pre,code{overflow-wrap:anywhere;max-width:100%}.export-panel pre,.log-param-grid pre,.log-detail-json{border-radius:var(--radius);background:#111827}.icon-button,.status-button,.text-button,.primary{border-radius:var(--radius);white-space:nowrap}.text-button{color:#263548;background:#fff;border-color:#ccd6e2}.text-button:hover:not(:disabled){background:#f8fafc;border-color:#9fb0c4}.text-button.active,.quick-action-grid .text-button.active,.chip-list .text-button.active{background:var(--primary-soft);color:var(--primary-strong);border-color:#8fded1}.primary{border-color:var(--primary-strong);background:var(--primary-strong);box-shadow:0 8px 18px #0f766e2e}.primary:hover:not(:disabled){border-color:var(--primary);background:var(--primary)}.icon-button:hover:not(:disabled),.status-button:hover:not(:disabled){background:#f8fafc;border-color:#9fb0c4}.danger{color:#b42318}.pill.allow,.decision.allow,.status-pill.ok{background:var(--success-soft);color:var(--success);border-color:#bbf7d0}.pill.block,.decision.block,.status-pill.danger{background:var(--danger-soft);color:var(--danger);border-color:#fed7aa}.pill.monitor,.decision.monitor{color:var(--warn);background:#fffbeb;border-color:#fde68a}.error,.empty{border-radius:var(--radius)}.empty{border:1px dashed var(--line);background:var(--surface-muted)}.china-map{border-color:var(--line);background:linear-gradient(#f8fafc 0%,#eef7f4 100%)}@media (width<=1320px){.workspace,.waf-grid,.monitor-detail-grid,.traffic-map-grid,.port-workbench,.proxy-workbench{grid-template-columns:1fr}.ops-form-panel,.port-policy-panel,.proxy-route-panel,.proxy-cert-panel{grid-area:auto;position:static}}@media (width<=1040px){.console-layout{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line);height:auto;max-height:none;padding:16px clamp(14px,3vw,28px);position:static;overflow:visible}.brand-block{flex-wrap:wrap;justify-content:space-between;align-items:center;padding:0 0 12px;display:flex}.sidebar-nav{grid-template-columns:repeat(auto-fit,minmax(86px,1fr));gap:8px;padding:0 0 4px;display:grid;overflow:visible}.nav-button{width:100%}.nav-button.active{box-shadow:inset 0 -3px 0 var(--primary)}.content-shell{max-width:none;padding-top:20px}.topbar{margin-top:-20px;top:0}}@media (width<=760px){.content-shell{padding:18px 12px 32px}.topbar{grid-template-columns:1fr;margin:-18px -12px 14px;padding:14px 12px}.top-actions{justify-content:flex-start}.section-title,.monitor-section-heading,.security-module-title,.panel-heading,.traffic-toolbar,.cert-inline,.cert-row,.version-row,.network-interface-row,.rule-row,.ops-rule-row,.port-row,.port-annotation,.quickq-classic-toolbar,.quickq-classic-picker,.quickq-classic-active-heading,.quickq-classic-node-row,.incident-row,.asset-row,.environment-row,.asset-edit{grid-template-columns:1fr}.quickq-classic-countries{grid-template-columns:repeat(2,minmax(0,1fr));max-height:260px}.section-title span,.monitor-section-heading span{text-align:left}.panel{padding:14px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.metrics article{min-height:94px;padding:13px}.rule-tags,.row-actions,.cert-actions,.log-toolbar{justify-content:flex-start}.log-filter-actions{align-items:stretch}.log-filter-actions .primary,.log-filter-actions .text-button,.primary.wide,.text-button.wide{width:100%}.log-list{max-height:none}.log-detail-grid,.log-param-grid{grid-template-columns:1fr}}@media (width<=460px){.metrics,.overview-grid,.security-grid,.security-plus-grid,.export-grid,.form-grid,.form-grid-compact,.cert-controls,.toggle-grid,.security-module-summary,.ops-summary{grid-template-columns:1fr}.top-actions span{max-width:100%}.icon-button,.status-button{width:36px;min-height:36px}.text-button,.primary{min-height:36px}}.asset-list,.environment-list{gap:12px;max-height:none;display:grid;overflow:visible}.asset-row,.environment-row{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);grid-template-columns:1fr;align-items:start;gap:12px;padding:14px}.asset-row>div,.environment-row>div{min-width:0}.asset-row p,.environment-row p,.asset-row strong,.environment-row strong{overflow-wrap:anywhere}.asset-edit{border-top:1px solid var(--line-soft);grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));gap:10px;width:100%;min-width:0;padding-top:12px;display:grid}.asset-edit .text-button{width:100%}.environment-row .status-pill{justify-self:start}.environment-row .chip-list{margin-top:8px}.environment-row .soft-chip{overflow-wrap:anywhere;max-width:100%;margin:0;line-height:1.35}.environment-protect-form{margin-bottom:12px}.environment-protect-form textarea{min-height:96px}.environment-overview-panel{break-inside:avoid}.environment-overview-panel .ops-summary{margin-bottom:0}.account-group-grid{grid-template-columns:repeat(auto-fit,minmax(min(460px,100%),1fr));gap:14px;margin-top:14px;display:grid}.account-group{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);min-width:0;padding:14px}.account-group-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.account-group-head h3{margin:0;font-size:15px}.account-group-head p{color:var(--muted);overflow-wrap:anywhere;margin:4px 0 0;font-size:12px}.account-list{max-height:460px;padding-right:2px;overflow:auto}.account-row{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--surface);padding:12px}.account-chip-list{margin-top:8px}.environment-action-panel,.environment-components-panel,.environment-findings-panel{break-inside:avoid}.environment-action-panel .panel-heading span,.environment-components-panel .panel-heading span,.environment-findings-panel .panel-heading span{overflow-wrap:anywhere}.environment-components-panel{column-span:all}.environment-components-panel .environment-list{max-height:none}.environment-findings-panel .compact-list{max-height:520px;padding-right:2px;overflow:auto}.environment-findings-panel .event-row{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);padding:12px}.monitor-ipmi-panel{grid-template-columns:1fr;align-items:start}.monitor-ipmi-panel .ipmi-form{grid-template-columns:repeat(auto-fit,minmax(min(170px,100%),1fr));justify-content:stretch;align-items:end;gap:12px;width:100%;display:grid}.monitor-ipmi-panel .ipmi-form .primary{width:100%}.monitor-overview-grid{grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr))}.monitor-detail-grid{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr))}.monitor-card,.network-interface-row,.temperature-row,.fan-ring-item{min-width:0}.monitor-card p,.network-interface-row p,.temperature-row p,.fan-ring-meta span{overflow-wrap:anywhere}.temperature-list,.fan-ring-grid,.network-interface-list{min-width:0}.network-interface-row{grid-template-columns:minmax(0,1fr) minmax(190px,.34fr)}.list-pagination{border-top:1px solid var(--line-soft);grid-column:1/-1;justify-content:flex-end;align-self:stretch;width:100%;margin-top:10px;padding-top:10px}.list-pagination .page-total,.list-pagination .page-current{color:var(--muted);white-space:nowrap}.list-pagination .page-size-control{width:auto;min-width:0;color:var(--muted);flex-direction:row;align-items:center;gap:6px;display:inline-flex}.list-pagination select{width:74px;min-height:34px;padding:6px 8px}.list-pagination .text-button{min-height:34px;padding:7px 10px}@media (width<=900px){.network-interface-row{grid-template-columns:1fr}.nic-rates{justify-items:start}}@media (width>=761px){.overview-grid,.security-grid,.security-plus-grid,.traffic-map-grid,.lower-grid,.proxy-grid,.waf-grid,.port-grid,.export-grid{column-gap:16px;display:block}.overview-grid{column-count:4;column-width:260px}.security-grid,.security-plus-grid,.traffic-map-grid,.lower-grid,.proxy-grid,.waf-grid,.port-grid,.export-grid{column-count:2;column-width:340px}.overview-grid>*,.security-grid>*,.security-plus-grid>*,.traffic-map-grid>*,.lower-grid>*,.proxy-grid>*,.waf-grid>*,.port-grid>*,.export-grid>*{break-inside:avoid;vertical-align:top;width:100%;margin:0 0 16px;display:inline-block}.security-grid>.wide-panel,.security-plus-grid>.wide-panel,.security-plus-grid>.quick-actions-panel,.security-plus-grid>.security-export-panel,.traffic-map-grid>.traffic-map-panel,.waf-grid>.waf-export,.proxy-grid>.proxy-export,.port-grid>.port-policy-panel,.port-grid>.port-export,.export-grid>.export-panel{column-span:all;display:block}}@media (width<=760px){.overview-grid,.security-grid,.security-plus-grid,.traffic-map-grid,.lower-grid,.proxy-grid,.waf-grid,.port-grid,.export-grid{display:block}.overview-grid>*,.security-grid>*,.security-plus-grid>*,.traffic-map-grid>*,.lower-grid>*,.proxy-grid>*,.waf-grid>*,.port-grid>*,.export-grid>*{width:100%;margin-bottom:14px}}.incident-list{max-height:none;overflow:visible}.incident-row{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);grid-template-columns:minmax(0,1fr) minmax(230px,280px);align-items:start;padding:14px}.incident-main{gap:7px;min-width:0;display:grid}.incident-main strong,.incident-main p{overflow-wrap:anywhere}.incident-row textarea{resize:vertical;width:100%;min-height:74px}.incident-actions{border-left:1px solid var(--line-soft);grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;width:100%;min-width:0;padding-left:14px}.incident-actions select,.incident-actions input{grid-column:1/-1;width:100%}.incident-actions .primary{grid-column:1/-1}.temperature-card{grid-template-rows:auto minmax(0,1fr) auto;align-self:start;display:grid}.temperature-card .temperature-list{max-height:clamp(300px,42vh,460px);padding-right:3px;overflow:auto}.temperature-card .list-pagination{margin-top:12px}@media (width<=900px){.incident-row{grid-template-columns:1fr}.incident-actions{border-left:0;border-top:1px solid var(--line-soft);grid-template-columns:repeat(auto-fit,minmax(112px,1fr));padding:12px 0 0}.incident-actions .primary{grid-column:auto}}.mail-finding-list,.intel-list,.region-policy-list{max-height:clamp(460px,58vh,720px);padding-right:2px;overflow:auto}.mail-top-ip-list{max-height:210px;padding-right:2px;overflow:auto}.intel-panel,.region-policy-list-panel{break-inside:avoid}.global-region-picker .region-picker-body{min-height:360px}.global-region-picker .city-grid{grid-template-columns:repeat(auto-fill,minmax(118px,1fr))}.region-policy-list .version-row{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);padding:12px}.firewall-workbench{grid-template-columns:minmax(0,1fr) minmax(330px,390px);align-items:start;gap:16px;display:grid}.firewall-rules-panel{min-width:0}.firewall-form-panel{min-width:0;position:sticky;top:86px}.firewall-rules-panel .rule-list,.firewall-events-panel .event-list{max-height:clamp(520px,62vh,760px);padding-right:2px;overflow:auto}.firewall-tools-grid{grid-template-columns:minmax(320px,.9fr) minmax(0,1.1fr);align-items:start;gap:16px;display:grid}.deployment-grid{grid-template-columns:minmax(340px,.85fr) minmax(0,1.15fr);align-items:start;gap:16px;display:grid}.deployment-config-panel,.deployment-release-panel,.deployment-monitor-panel,.deployment-log-panel,.deployment-event-panel,.deployment-systemd-panel{grid-column:span 2;min-width:0}.deployment-card-list{gap:12px;display:grid}.deployment-list-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.deployment-card{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);cursor:pointer;gap:10px;padding:12px;transition:border-color .18s,background .18s,transform .18s;display:grid}.deployment-card:hover,.deployment-card.selected{border-color:var(--accent);background:var(--accent-soft)}.deployment-card.selected{transform:translateY(-1px)}.deployment-card-main{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;display:grid}.deployment-status-mark{place-items:center;width:18px;height:26px;display:grid}.deployment-status-mark span{background:var(--muted);width:10px;height:10px;box-shadow:0 0 0 4px color-mix(in srgb, var(--muted) 14%, transparent);border-radius:50%}.deployment-card.status-running .deployment-status-mark span{background:var(--success);box-shadow:0 0 0 4px color-mix(in srgb, var(--success) 18%, transparent)}.deployment-card.status-failed .deployment-status-mark span{background:var(--danger);box-shadow:0 0 0 4px color-mix(in srgb, var(--danger) 16%, transparent)}.deployment-card-copy,.deployment-card-copy p,.deployment-card-title,.deployment-card-detail,.deployment-command{min-width:0}.deployment-card-title{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.deployment-card-title strong{overflow-wrap:anywhere;font-size:15px}.deployment-meta,.deployment-health{color:var(--muted);overflow-wrap:anywhere;margin:5px 0 0;font-size:12px}.deployment-health.ok{color:var(--success)}.deployment-health.bad{color:var(--danger)}.deployment-card-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.deployment-card-actions .text-button{min-height:32px}.deployment-card-detail{flex-wrap:wrap;gap:6px;display:flex}.deployment-card-detail span{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface);color:var(--muted);overflow-wrap:anywhere;padding:5px 8px;font-size:12px}.deployment-card-detail .deployment-release{flex-basis:100%}.deployment-version-tools{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface);grid-template-columns:minmax(180px,1fr) auto auto;align-items:end;gap:8px;padding:9px;display:grid}.deployment-version-tools label{min-width:0;color:var(--muted);gap:5px;font-size:12px;display:grid}.deployment-version-tools select{width:100%;min-width:0}.deployment-resource-grid{grid-template-columns:repeat(7,minmax(68px,1fr));gap:8px;display:grid}.deployment-resource-grid span{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface);color:var(--text);gap:3px;min-width:0;padding:8px;font-size:13px;display:grid}.deployment-resource-grid small{color:var(--muted);font-size:11px}.deployment-resource-grid span.warn{border-color:color-mix(in srgb, var(--warning) 55%, var(--line-soft));color:var(--warning)}.deployment-monitor-grid,.deployment-network-grid{gap:10px;display:grid}.deployment-monitor-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.deployment-network-grid{grid-template-columns:minmax(140px,.6fr) minmax(180px,1fr) minmax(260px,1.4fr);margin-top:10px}.deployment-monitor-grid article,.deployment-network-grid article{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);gap:5px;min-width:0;padding:10px;display:grid}.deployment-monitor-grid small,.deployment-network-grid small{color:var(--muted);font-size:11px}.deployment-monitor-grid strong,.deployment-network-grid strong{overflow-wrap:anywhere}.deployment-monitor-grid p{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:12px}.deployment-command{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface);color:var(--text);white-space:nowrap;text-overflow:ellipsis;padding:8px;font-size:12px;display:block;overflow:hidden}.deployment-log-panel pre,.deployment-systemd-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:420px;overflow:auto}.deployment-release-upload{margin-bottom:14px}.deployment-release-list{gap:10px;display:grid}.deployment-release-row{align-items:center}.deployment-release-row.status-current{border-color:color-mix(in srgb, var(--success) 45%, var(--line-soft));background:color-mix(in srgb, var(--success) 8%, var(--surface))}.deployment-release-row.status-failed{border-color:color-mix(in srgb, var(--danger) 45%, var(--line-soft))}.deployment-log-toolbar{grid-template-columns:minmax(180px,1.2fr) minmax(90px,.4fr) minmax(180px,1fr) auto;align-items:end;gap:10px;margin-bottom:12px;display:grid}.deployment-log-toolbar label{color:var(--muted);gap:6px;font-size:12px;display:grid}.deployment-log-toolbar select,.deployment-log-toolbar input{width:100%}.deployment-log-search{min-width:0}.file-drop input{margin-top:8px}.file-drop span{color:var(--muted);font-size:12px}.firewall-test-panel .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.firewall-test-panel .decision{margin-top:12px}.firewall-events-panel{min-width:0}.overview-command-card,.overview-list-card,.overview-action-card{break-inside:avoid}.overview-mini-grid{grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;display:grid}.overview-mini-grid span{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);min-height:34px;color:var(--muted);overflow-wrap:anywhere;padding:8px 10px}.overview-switch-grid{flex-wrap:wrap;gap:8px;display:flex}.overview-event-list{gap:10px;max-height:430px;padding-right:2px;display:grid;overflow:auto}.overview-event-row{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-muted);grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;padding:10px;display:grid}.overview-event-row strong,.overview-event-row p{overflow-wrap:anywhere}.overview-event-row p{color:var(--muted);margin:3px 0 0;font-size:12px}.overview-action-grid{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));display:grid}.overview-action-grid .text-button{justify-content:center;width:100%}@media (width<=1320px){.firewall-workbench,.firewall-tools-grid,.deployment-grid{grid-template-columns:1fr}.deployment-config-panel,.deployment-log-panel,.deployment-event-panel,.deployment-systemd-panel{grid-column:auto}.deployment-log-toolbar{grid-template-columns:1fr}.deployment-resource-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.deployment-monitor-grid,.deployment-network-grid{grid-template-columns:1fr}.firewall-form-panel{position:static}}@media (width<=760px){.mail-finding-list,.intel-list,.region-policy-list,.firewall-rules-panel .rule-list,.firewall-events-panel .event-list{max-height:none;padding-right:0;overflow:visible}.firewall-test-panel .form-grid,.proxy-user-row{grid-template-columns:1fr}.proxy-user-actions{justify-content:flex-start}.proxy-user-request-row,.quickq-path-flow{grid-template-columns:1fr}.quickq-path-step{padding-right:10px}.quickq-path-arrow{display:none}.quickq-route-segment-meta{grid-template-columns:1fr}}
