:root{color-scheme:dark;--bg:#0a101b;--panel:#111b2a;--panel2:#152235;--border:#26364b;--text:#e9f0f8;--muted:#92a3b9;--accent:#41c89a;--accent2:#1b9f78;--red:#f16f78;--yellow:#e8b65b;--blue:#7fb5ff;--radius:13px;--shadow:0 16px 45px rgba(0,0,0,.18)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}.shell{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{background:#0c1421;border-right:1px solid var(--border);padding:22px 15px;display:flex;flex-direction:column;min-height:100vh;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;padding:4px 9px 27px;letter-spacing:.07em}.brand-mark{width:39px;height:39px;background:linear-gradient(145deg,#1c9977,#174f48);border:1px solid #38bd90;border-radius:11px;display:grid;place-items:center;font-weight:900;color:#eafff5;letter-spacing:-.06em}.brand b{display:block;font-size:13px}.brand small{display:block;font-size:9px;color:#8c9db2;letter-spacing:.19em;margin-top:2px}.nav-label{font-size:10px;letter-spacing:.15em;font-weight:800;color:#657992;padding:12px 11px 8px}.sidebar nav{display:grid;gap:4px}.sidebar nav a{display:flex;align-items:center;gap:13px;padding:10px 12px;border-radius:9px;color:#a8b8cb;font-size:13px}.sidebar nav a:hover{background:#16263a;color:#fff}.sidebar nav a.active{color:#8ce2c1;background:#17352f;box-shadow:inset 2px 0 #43c99b}.sidebar-foot{margin-top:auto;border-top:1px solid var(--border);padding:17px 10px 4px;color:#a8b8ca;font-size:12px}.sidebar-foot small{display:block;color:#71839a;margin:8px 0 0 14px;font-size:10px}.pulse-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:7px;box-shadow:0 0 0 4px #1b503f}.main{min-width:0}.topbar{height:65px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 34px;background:rgba(12,20,33,.8)}.topbar .muted{font-size:10px;letter-spacing:.12em;margin-right:8px}.topbar b{font-size:12px}.user-menu{display:flex;align-items:center;gap:10px;color:#a9b9cc;font-size:12px}.avatar{width:29px;height:29px;border-radius:9px;display:grid;place-items:center;background:#26384e;color:#cce7fa;font-weight:800}.user-menu form{margin-left:9px}.content{padding:32px 34px 60px;max-width:1600px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px}.eyebrow{color:#55cfa7;font-size:10px;font-weight:800;letter-spacing:.16em;margin-bottom:5px}.page-heading h1{font-size:27px;line-height:1.25;margin:0 0 6px;font-weight:720;letter-spacing:-.03em}.page-heading p,.section-head p{color:var(--muted);margin:0;font-size:13px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:8px;padding:9px 14px;font-size:12px;font-weight:750;cursor:pointer;white-space:nowrap}.btn.primary{background:#1c9b75;color:#041d16;border-color:#32b68d}.btn.primary:hover{background:#2db88c}.btn.secondary{background:#19283b;border-color:#344a64;color:#d6e4f3}.btn.secondary:hover{background:#223650}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.full{width:100%}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:34px}.stat-card,.panel-card,.table-card,.node-card{background:linear-gradient(160deg,#121e2e,#101a29);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.stat-card{padding:17px 18px;min-height:116px}.stat-card span{display:block;color:#9cadc0;font-size:12px}.stat-card strong{display:block;font-size:28px;letter-spacing:-.04em;margin:5px 0 2px}.stat-card strong small{font-size:14px;color:#8295ab}.stat-card em{font-style:normal;font-size:10px;color:#7f92a9}.stat-card em.good{color:#5ed6a8}.section-head{display:flex;justify-content:space-between;align-items:end;margin:29px 0 12px}.section-head h2,.panel-card h2{font-size:15px;margin:0 0 3px;letter-spacing:-.01em}.text-link{font-size:12px;color:#6fd5b0;font-weight:700}.table-card{overflow:auto}.table-card table{border-collapse:collapse;width:100%;min-width:760px}.table-card th{text-align:left;color:#778ba4;font-size:10px;text-transform:uppercase;letter-spacing:.09em;font-weight:800;background:#101a29;padding:13px 15px;border-bottom:1px solid var(--border)}.table-card td{padding:13px 15px;border-bottom:1px solid #202f42;color:#c8d5e4;font-size:12px;vertical-align:middle}.table-card tr:last-child td{border-bottom:0}.table-card tbody tr:hover{background:rgba(36,58,81,.17)}.strong-link{font-weight:700;color:#e6eff9}.subline{display:block;font-size:10px;color:#8294aa;margin-top:2px}.mono,code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.status{display:inline-flex;align-items:center;border-radius:20px;padding:4px 8px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;background:#29384d;color:#b1c1d4}.status.online,.status.success,.status.completed{color:#72e0b5;background:#143c32}.status.offline,.status.failed,.status.danger{color:#ff9ba1;background:#48272e}.status.warning,.status.running{color:#f1cf82;background:#443721}.status.queued,.status.pending{color:#a7c8ff;background:#1d3553}.empty{color:#7f92a9!important;text-align:center;padding:25px!important}.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:28px}.panel-card{padding:20px;min-width:0}.panel-card>p{color:var(--muted);font-size:12px}.panel-card .card-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:15px}.card-heading p{color:var(--muted);margin:3px 0 0;font-size:11px}.icon-box{width:31px;height:31px;border-radius:9px;background:#1a3f35;color:#6ce0b4;display:grid;place-items:center;font-size:18px}.stack{display:grid;gap:13px}.stack label,.panel-card label{display:grid;gap:6px;color:#b9c8d8;font-size:11px;font-weight:700}.stack input,.stack select,.stack textarea,.panel-card input,.panel-card select,.panel-card textarea{width:100%;background:#0b1421;border:1px solid #2c4059;border-radius:8px;color:#e5effa;padding:10px 11px;outline:none;font-size:12px}.stack input:focus,.stack select:focus,.stack textarea:focus{border-color:#3dbb91;box-shadow:0 0 0 3px #1a513e55}.stack textarea{font-family:ui-monospace,monospace;line-height:1.5;resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.check-list{padding-left:19px;color:#b9c8d8;font-size:12px;display:grid;gap:10px}.check-list li::marker{color:#57d0a5}.node-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.node-card{padding:17px;display:block;transition:.15s}.node-card:hover{border-color:#398d78;transform:translateY(-2px)}.node-card-top{display:flex;justify-content:space-between;align-items:center}.server-icon{width:33px;height:33px;border-radius:9px;display:grid;place-items:center;background:#1c2e45;color:#81b4ec}.node-card h3{font-size:15px;margin:12px 0 2px}.node-card p{color:var(--muted);font-size:11px;margin:0 0 16px}.node-meta{display:flex;justify-content:space-between;color:#94a6bb;font-size:10px;padding-top:9px;margin-top:8px;border-top:1px solid #223248}.empty-card{padding:25px;border:1px dashed var(--border);border-radius:var(--radius);color:var(--muted);grid-column:1/-1;text-align:center}.alert{border-radius:9px;padding:12px 14px;font-size:12px;line-height:1.6;margin-bottom:17px;border:1px solid}.alert.warning{background:#382e1c;border-color:#70562a;color:#f0d79d}.alert.error{background:#3e232b;border-color:#743b48;color:#ffc0c4}.alert.success{background:#14372f;border-color:#276c55;color:#9cf0ca}.detail-list{display:grid;grid-template-columns:130px 1fr;gap:12px;font-size:12px}.detail-list dt{color:#8194ab}.detail-list dd{margin:0;color:#d6e2ef;overflow-wrap:anywhere}.reference-list{display:grid;gap:9px;margin:14px 0 17px}.reference-list div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #26364b;padding-bottom:7px}.reference-list code{color:#8bdcba;font-size:10px}.reference-list span{font-size:10px;color:#9aabc0;text-align:right}.rules-layout{align-items:start}.rules-layout .panel-card{height:100%}.button-row,.inline-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.inline-actions form{display:inline}.link-button{background:none;border:0;padding:0;color:#75d9b5;font-size:11px;cursor:pointer}.danger-link{color:#f58f97}.tag{font-size:10px;padding:4px 7px;border-radius:5px;background:#20344d;color:#c2d8f1}.preview-panel{margin:20px 0}.preview-panel pre{background:#08111d;border:1px solid #24354a;padding:15px;border-radius:9px;white-space:pre-wrap;overflow:auto;font-size:11px;color:#b8d7ca}.copy-row{display:flex;gap:8px;align-items:stretch}.copy-row code{background:#091321;border:1px solid #2c4059;border-radius:8px;padding:10px;overflow-wrap:anywhere;flex:1;color:#b9d7ce;font-size:11px}.narrow{max-width:800px}.tiny{font-size:10px!important}.muted{color:var(--muted)!important}.center{text-align:center}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:25px;background:radial-gradient(ellipse at 50% 15%,#17382f 0%,#0a101b 52%)}.login-card{width:min(420px,100%);padding:34px;background:#111d2c;border:1px solid #2b4058;border-radius:16px;box-shadow:0 25px 90px #0008}.brand.centered{padding:0 0 25px}.login-card h1{font-size:24px;margin:0 0 3px}.login-card>p{font-size:12px;margin:0 0 24px}.login-card .tiny{margin:17px 0 0}.login-card .stack{margin-top:18px}
@media(max-width:1100px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.node-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content{padding:25px 22px}}@media(max-width:760px){.shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;min-height:0;padding:12px}.brand{padding:4px 7px 13px}.sidebar .nav-label,.sidebar-foot{display:none}.sidebar nav{display:flex;overflow:auto}.sidebar nav a{white-space:nowrap;padding:8px 10px;font-size:11px}.topbar{padding:0 16px;height:55px}.topbar .muted,.user-menu>span:not(.avatar){display:none}.content{padding:20px 14px}.page-heading{align-items:flex-start;flex-direction:column}.stat-grid{gap:9px}.stat-card{padding:13px;min-height:100px}.stat-card strong{font-size:23px}.two-col{grid-template-columns:1fr}.node-grid{grid-template-columns:1fr}.form-row{grid-template-columns:1fr}.page-heading h1{font-size:23px}.rules-layout{display:flex;flex-direction:column}.rules-layout>*{width:100%}.page-heading>.btn,.page-heading>form{align-self:stretch}.page-heading>form .btn{width:100%}}

/* Per-service controls and traffic analytics */
.danger-link,.btn.danger{color:#ffc1c5}.btn.danger{background:#47242d;border-color:#83404b;color:#ffd2d5}.btn.danger:hover{background:#5a2a35}.service-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.service-card{display:block;background:linear-gradient(155deg,#142235,#101a29);border:1px solid var(--border);border-radius:var(--radius);padding:18px;transition:.15s}.service-card:hover{border-color:#3a9a7a;transform:translateY(-2px)}.service-card-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.service-card h2{font-size:16px;margin:16px 0 4px}.service-card p{margin:0;color:#a7bad0;font-size:12px}.service-card-foot{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--border);margin-top:17px;padding-top:12px;color:#8fa4bb;font-size:10px}.service-card-foot b{color:#70d9b6}.chart-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.chart-card{min-width:0}.metric-chart{width:100%;height:150px;display:block;background:linear-gradient(180deg,#0c1926,#101c2b);border:1px solid #26374d;border-radius:9px;margin-top:12px}.chart-line{fill:none;stroke:#58d1a6;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.chart-line.blue{stroke:#79aef3}.chart-line.red{stroke:#f38e95}.metric-list{display:grid;gap:0;margin-top:12px}.metric-list>div{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid #26364b;padding:10px 0;font-size:11px}.metric-list>div:last-child{border-bottom:0}.metric-list span{color:#99acc1}.metric-list b{color:#e3edf7;font-variant-numeric:tabular-nums}.ip-cloud{display:flex;flex-wrap:wrap;gap:7px;margin:15px 0}.ip-cloud code{padding:6px 8px;background:#0b1725;border:1px solid #2a4058;border-radius:6px;color:#9fdec8;font-size:10px}.compact-empty{padding:18px;border:1px dashed #2b4058;border-radius:8px;font-size:11px}.inner-table{margin-top:14px;background:#0d1724;box-shadow:none}.inner-table table{min-width:500px}.service-control-grid{margin-bottom:15px}
@media(max-width:1100px){.service-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-grid{grid-template-columns:1fr 1fr}.chart-card:last-child{grid-column:1/-1}}
@media(max-width:760px){.service-card-grid,.chart-grid{grid-template-columns:1fr}.chart-card:last-child{grid-column:auto}}
.range-tabs{display:flex;flex-wrap:wrap;gap:6px}.range-tabs a{display:inline-flex;padding:7px 10px;border:1px solid var(--border);border-radius:7px;color:#9fb2c8;font-size:11px}.range-tabs a.active{background:#173b36;border-color:#2d8a70;color:#a8eed5}.range-tabs a:hover{border-color:#4b9d82;color:#e0fff3}
.service-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.source-ip-table{display:grid;gap:7px;margin:12px 0}.source-ip-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:7px 8px;background:#0b1725;border:1px solid #263a51;border-radius:7px}.source-ip-row code{color:#a4ddc9;font-size:11px}.source-ip-row .btn{padding:5px 9px;font-size:10px}@media(max-width:1100px){.service-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.service-stat-grid{grid-template-columns:1fr}}

/* Customer-facing built-in per-service VarnetSamp rule controls */
.protection-rules-panel{margin:14px 0 22px}.protection-rule-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:12px 0 14px}.protection-rule-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.protection-rule-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 14px;border:1px solid #293b51;border-radius:9px;background:#0d1826;min-width:0}.protection-rule-copy{min-width:0;display:grid;gap:5px}.protection-rule-copy strong{font-size:12px;color:#e5eef8}.protection-rule-copy p{margin:0;color:#8fa3b9;font-size:10px;line-height:1.5}.protection-rule-item .btn{min-width:82px}.protection-rule-item form{flex-shrink:0}@media(max-width:760px){.protection-rule-grid{grid-template-columns:1fr}.protection-rule-toolbar{align-items:flex-start;flex-direction:column}.protection-rule-toolbar .button-row,.protection-rule-toolbar form,.protection-rule-toolbar .btn{width:100%}}

/* Administrator assignment of friendly VarnetSamp detections */
.assigned-rule-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:9px 0 12px}
.assigned-rule-list{display:grid;grid-template-columns:1fr;gap:7px;max-height:520px;overflow:auto;padding-right:3px}
.assigned-rule-row{display:flex!important;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;background:#0c1725;border:1px solid #26384e;border-radius:8px;cursor:pointer}
.assigned-rule-row input{width:16px!important;height:16px!important;padding:0!important;margin:0;accent-color:#41c89a;flex-shrink:0}
.assigned-rule-copy{display:grid;gap:2px;min-width:0}
.assigned-rule-copy strong{font-size:11px;color:#e4eef8}
.assigned-rule-copy small{font-size:10px;line-height:1.45;color:#91a5ba;font-weight:400}
.assigned-rule-default{font-size:9px;font-weight:800;letter-spacing:.08em;color:#76dfb8;background:#14392f;padding:3px 6px;border-radius:5px}
.service-create-submit{margin:-8px 0 28px}
@media(max-width:760px){.assigned-rule-toolbar{align-items:flex-start;flex-direction:column}.assigned-rule-toolbar .button-row{width:100%}.assigned-rule-toolbar .btn{flex:1}.service-create-submit .btn{width:100%}}
