:root{--bg: #06070c;--panel: #10131c;--panel-2: #151a26;--border: #232838;--border-soft: rgba(124, 92, 255, .16);--accent: #7c5cff;--accent-soft: rgba(124, 92, 255, .14);--accent-2: #4fd1c5;--text: #edeef2;--muted: #8b93a7;--danger: #ff5c6a;--danger-soft: rgba(255, 92, 106, .12);--warning: #d9a441;--sidebar-w: 240px;--radius-lg: 18px;--radius-md: 12px;--radius-sm: 8px;--shadow-soft: 0 20px 60px rgba(0, 0, 0, .45)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(900px 500px at 15% -10%,rgba(124,92,255,.16),transparent 60%),radial-gradient(700px 500px at 100% 0%,rgba(79,209,197,.08),transparent 55%),var(--bg);background-attachment:fixed;color:var(--text);font-family:-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}::selection{background:var(--accent);color:#fff}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#23283a;border-radius:999px;border:2px solid transparent;background-clip:content-box}.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.auth-screen:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(600px 400px at 20% 20%,rgba(124,92,255,.18),transparent 60%),radial-gradient(600px 400px at 80% 80%,rgba(79,209,197,.12),transparent 60%);pointer-events:none}.auth-card{position:relative;background:linear-gradient(180deg,#151a26e6,#10131ce6);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:44px;width:380px;display:flex;flex-direction:column;gap:16px;box-shadow:var(--shadow-soft);animation:fade-up .5s ease}.auth-brand{display:flex;align-items:center;gap:10px}.auth-brand .brand-icon{color:var(--accent);filter:drop-shadow(0 0 10px rgba(124,92,255,.5))}.auth-card h1{margin:0;font-size:22px;background:linear-gradient(90deg,var(--text),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.subtitle{margin:-8px 0 8px;color:var(--muted);font-size:13px}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}input,select{background:#0b0e17;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;color:var(--text);font-size:14px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}button{display:inline-flex;align-items:center;gap:7px;background:linear-gradient(135deg,var(--accent),#6a4bff);color:#fff;border:none;border-radius:var(--radius-sm);padding:10px 16px;font-size:14px;font-weight:500;cursor:pointer;transition:transform .12s ease,box-shadow .15s ease,opacity .15s;box-shadow:0 6px 16px #7c5cff40}button:hover{transform:translateY(-1px);box-shadow:0 10px 22px #7c5cff52}button:active{transform:translateY(0)}button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}button.btn-primary{background:linear-gradient(135deg,var(--accent),#6a4bff)}button.btn-ghost,button.ghost{background:#ffffff08;border:1px solid var(--border);color:var(--text);box-shadow:none;font-weight:400}button.btn-ghost:hover,button.ghost:hover{border-color:var(--border-soft);background:#7c5cff14;transform:translateY(-1px);box-shadow:none}button.btn-ghost.active,button.ghost.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-2)}button.btn-danger,button.danger{background:#1a1d29;color:var(--text);border:1px solid var(--border);box-shadow:none;font-weight:400}button.btn-danger.active,button.danger.active{background:linear-gradient(135deg,var(--danger),#ff2f43);color:#fff;border-color:var(--danger);box-shadow:0 6px 16px #ff5c6a4d}button.danger-text,button.btn-ghost.danger-text,button.ghost.danger-text{color:var(--danger)}button.btn-ghost.danger-text:hover,button.ghost.danger-text:hover{border-color:var(--danger);background:var(--danger-soft)}.error-box{background:var(--danger-soft);border:1px solid var(--danger);color:var(--danger);padding:10px 14px;border-radius:var(--radius-sm);font-size:13px}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:linear-gradient(180deg,#10131cf2,#0a0c12fa);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:22px 16px}.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 26px}.brand-icon{color:var(--accent);filter:drop-shadow(0 0 10px rgba(124,92,255,.5))}.brand-name{font-size:16px;font-weight:700;letter-spacing:-.01em}.side-nav{display:flex;flex-direction:column;gap:4px;flex:1}.side-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-sm);color:var(--muted);text-decoration:none;font-size:14px;transition:background .15s,color .15s}.side-link:hover{background:#ffffff0a;color:var(--text)}.side-link.active{background:linear-gradient(90deg,var(--accent-soft),transparent);color:var(--text);position:relative}.side-link.active:before{content:"";position:absolute;left:-16px;top:8px;bottom:8px;width:3px;border-radius:999px;background:linear-gradient(180deg,var(--accent),var(--accent-2))}.sidebar-footer{border-top:1px solid var(--border);padding-top:14px}.side-logout{width:100%;justify-content:flex-start;background:transparent;border:1px solid var(--border);color:var(--muted);box-shadow:none;font-weight:400}.side-logout:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-soft);box-shadow:none}.main-column{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;padding:26px 36px;border-bottom:1px solid var(--border);background:#06070c80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:5}.topbar h1{font-size:20px;margin:0;font-weight:600;letter-spacing:-.01em}.content-area{padding:28px 36px 60px;max-width:1100px;width:100%}.page-stack{display:flex;flex-direction:column;gap:20px}@media (max-width: 860px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;flex-direction:row;align-items:center;padding:12px 16px}.side-nav{flex-direction:row}.sidebar-footer{border-top:none}.content-area{padding:20px}}.card,.glass-card{background:linear-gradient(180deg,#151a26b3,#10131cbf);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px 26px;box-shadow:0 12px 32px #00000040;transition:border-color .2s}.glass-card:hover{border-color:var(--border-soft)}.card h2,.glass-card h2{font-size:14px;margin:0;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.card-heading{display:flex;align-items:center;gap:10px;margin-bottom:16px;color:var(--accent-2)}.card-heading h2{color:var(--text)}.inline-form{display:flex;gap:12px;flex-wrap:wrap}.inline-form input{flex:1;min-width:180px}.muted{color:var(--muted)}.domain-list{display:flex;flex-direction:column;gap:14px}.domain-row{border:1px solid var(--border);border-radius:var(--radius-md);padding:16px 18px;background:#ffffff04;transition:border-color .15s}.domain-row:hover{border-color:var(--border-soft)}.domain-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.domain-title strong{font-size:15px}.domain-actions{display:flex;gap:8px;flex-wrap:wrap}.chev{transition:transform .15s}.chev.open{transform:rotate(180deg)}.rule-panel{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:12px}.rule-panel label{flex-direction:row;align-items:center;gap:10px;color:var(--text)}.country-chips{display:flex;flex-wrap:wrap;gap:8px}.chip{background:#0e121b;border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:6px 12px;font-size:12px;cursor:pointer;transition:all .15s}.chip:hover{border-color:var(--border-soft)}.chip.active{background:linear-gradient(135deg,var(--accent),#6a4bff);border-color:var(--accent);color:#fff}.ssl-badge{margin-left:10px;font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.ssl-badge.active{border-color:var(--accent-2);color:var(--accent-2)}.ssl-badge.pending{border-color:#d9a441;color:#d9a441}.ssl-badge.failed,.ssl-badge.disabled{border-color:var(--danger);color:var(--danger)}.small{font-size:12px}.waf-panel{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:20px}.waf-section h3{font-size:13px;margin:0 0 6px;color:var(--text)}.waf-category-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.cat-toggle{display:flex;align-items:center;gap:8px;background:#0e121b;border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:6px 12px;font-size:12px}.cat-toggle .cat-dot{width:8px;height:8px;border-radius:50%;background:var(--danger);display:inline-block}.cat-toggle.on{color:var(--text)}.cat-toggle.on .cat-dot{background:var(--accent-2)}.waf-rule-form{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0 16px}.waf-rule-form input{flex:1;min-width:140px}.waf-rule-table,.data-table{width:100%;border-collapse:collapse;font-size:13px}.waf-rule-table th,.data-table th{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.03em;padding:8px;border-bottom:1px solid var(--border)}.waf-rule-table td,.data-table td{padding:10px 8px;border-bottom:1px solid var(--border);vertical-align:middle}.waf-rule-table tbody tr:hover td,.data-table tbody tr:hover td{background:#7c5cff0a}.waf-rule-table tr.rule-disabled td,.data-table tr.row-muted td{opacity:.45}.pattern-cell{font-family:SF Mono,Menlo,monospace;font-size:12px;max-width:220px;overflow:hidden;text-overflow:ellipsis}.action-badge{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--border)}.action-badge.block{border-color:var(--danger);color:var(--danger)}.action-badge.log{border-color:#d9a441;color:#d9a441}.action-badge.allow{border-color:var(--accent-2);color:var(--accent-2)}.rule-row-actions{display:flex;gap:6px;white-space:nowrap}button.ghost.small{padding:4px 10px;font-size:12px}button.ghost.danger-text{color:var(--danger);border-color:var(--danger)}button.ghost.active{background:var(--accent-2);color:#fff;border-color:var(--accent-2)}.overview-bar{display:flex;gap:28px;flex-wrap:wrap}.overview-stat{display:flex;flex-direction:column;gap:2px}.stat-cards{display:flex;gap:14px;flex-wrap:wrap}.stat-card{flex:1;min-width:130px;background:linear-gradient(180deg,#ffffff08,#fff0);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;display:flex;flex-direction:column;gap:4px;position:relative;overflow:hidden}.stat-icon{color:var(--accent-2);margin-bottom:4px}.stat-icon.danger{color:var(--danger)}.stat-value{font-size:22px;font-weight:600}.stat-value.danger{color:var(--danger)}.stat-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.analytics-panel{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:20px}.analytics-toolbar{display:flex;align-items:center;justify-content:space-between}.window-tabs{display:flex;gap:6px}.window-tab{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:8px;padding:6px 12px;font-size:12px}.window-tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}.analytics-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media (max-width: 720px){.analytics-columns{grid-template-columns:1fr}}.bar-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}.bar-row{display:flex;align-items:center;gap:10px}.bar-track{flex:1;height:8px;background:#0e121b;border-radius:4px;overflow:hidden}.bar-fill{height:100%;background:var(--accent-2)}.bar-fill.s4xx,.bar-fill.s5xx{background:var(--danger)}.bar-count{font-size:12px;color:var(--muted);min-width:30px;text-align:right}.status-tag{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--muted)}.status-tag.s2xx{border-color:var(--accent-2);color:var(--accent-2)}.status-tag.s4xx,.status-tag.s5xx{border-color:var(--danger);color:var(--danger)}.status-pill{font-size:11px;padding:3px 10px;border-radius:999px;border:1px solid var(--border);color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.status-pill.on{border-color:var(--accent-2);color:var(--accent-2)}.status-pill.off{border-color:var(--danger);color:var(--danger)}.row-actions{display:flex;gap:6px;flex-wrap:nowrap}.fresh-key-box{margin-top:16px;padding:16px 18px;border-radius:var(--radius-md);border:1px solid var(--accent-2);background:#4fd1c514;display:flex;flex-direction:column;gap:10px}.fresh-key-label{font-size:12px;color:var(--accent-2);font-weight:600}.fresh-key-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.fresh-key-value{flex:1;min-width:240px;background:#0b0e17;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;font-family:SF Mono,Menlo,monospace;font-size:13px;color:var(--text);word-break:break-all}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#04050ab8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fade-up .15s ease-out}.modal-dialog{width:100%;max-width:380px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);padding:28px 24px 20px;text-align:center}.modal-icon{width:48px;height:48px;margin:0 auto 14px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent)}.modal-icon.danger{background:var(--danger-soft);color:var(--danger)}.modal-title{margin:0 0 8px;font-size:17px;font-weight:600;color:var(--text)}.modal-message{margin:0 0 20px;font-size:14px;color:var(--muted);line-height:1.5}.modal-actions{display:flex;gap:10px;justify-content:center}.modal-actions button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px}.spin{animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
