:root{color-scheme:dark;--bg:#071019;--card:#101c27;--card2:#142534;--line:#233747;--text:#f5f8fb;--muted:#91a4b5;--accent:#37b7ff;--green:#26d07c;--amber:#ffc857;--red:#ff6474}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top right,#102c42 0,transparent 34%),var(--bg);color:var(--text);font-family:Tahoma,"Segoe UI",sans-serif;min-height:100vh}.shell{width:min(1500px,94vw);margin:36px auto}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.topbar h1,.login-card h1{margin:0 0 8px}.muted{margin:0;color:var(--muted)}button,.actions a{font:inherit}.header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.button{display:inline-block;padding:11px 18px;border-radius:9px;text-decoration:none;font-weight:700}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:20px 0}.stats article,.card,.login-card{background:rgba(16,28,39,.94);border:1px solid var(--line);border-radius:16px;box-shadow:0 16px 50px rgba(0,0,0,.18)}.stats article{padding:18px}.stats strong{display:block;font-size:28px;color:var(--accent)}.stats span{color:var(--muted)}.card{padding:20px;margin:18px 0}.usage-summary .section-title{gap:18px}.usage-summary h2{margin-bottom:6px}.usage-percent{font-size:26px;color:var(--accent);direction:ltr}.usage-summary progress{display:block;width:100%;height:14px;margin:20px 0;border:0;border-radius:999px;overflow:hidden;background:#09141d}.usage-summary progress::-webkit-progress-bar{background:#09141d;border-radius:999px}.usage-summary progress::-webkit-progress-value{background:linear-gradient(90deg,var(--accent),var(--green));border-radius:999px}.usage-summary progress::-moz-progress-bar{background:linear-gradient(90deg,var(--accent),var(--green));border-radius:999px}.usage-values{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.usage-values div,.peer-summary div{padding:13px;border-radius:11px;background:#09141d;border:1px solid var(--line)}.usage-values span,.peer-summary span{display:block;color:var(--muted);font-size:12px;margin-bottom:7px}.usage-values strong,.peer-summary strong{font-size:17px;color:var(--text)}.create summary,.password-card summary{cursor:pointer;font-weight:700;font-size:18px}.form-grid{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:14px;margin-top:20px}.form-grid .wide{grid-column:span 3}.password-form{grid-template-columns:repeat(3,1fr) auto}.stack{display:grid;gap:15px}label{display:grid;gap:7px;color:var(--muted);font-size:13px}input{width:100%;background:#09141d;border:1px solid #2b4458;color:var(--text);padding:11px 12px;border-radius:9px;outline:none}input:focus{border-color:var(--accent)}button{border:0;border-radius:9px;background:var(--accent);color:#03111b;font-weight:700;padding:11px 18px;cursor:pointer}.secondary{background:#223849;color:var(--text)}.section-title{display:flex;align-items:center;justify-content:space-between}.section-title h2{margin:0 0 16px}.section-title span{color:var(--muted)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{text-align:right;padding:14px 10px;border-top:1px solid var(--line);font-size:13px}th{color:var(--muted)}td small{display:block;color:var(--muted);margin-top:5px}.badge{display:inline-block;padding:5px 9px;border-radius:20px;background:#253746}.badge.active{color:var(--green);background:#173a31}.badge.pending{color:var(--amber);background:#3c3421}.badge.expired,.badge.quota,.badge.blocked{color:var(--red);background:#43232c}.actions{display:flex;align-items:center;gap:9px}.actions a,.link,.back-link{color:var(--accent);text-decoration:none;background:none;padding:0;border-radius:0;font-weight:400}.link.danger{color:var(--red)}.actions form{display:inline}.ltr{direction:ltr;text-align:right}.empty{text-align:center;color:var(--muted);padding:40px}.flash{padding:13px 16px;border-radius:10px;margin-bottom:12px}.flash.success{background:#173a31;color:var(--green)}.flash.error{background:#43232c;color:#ffafb8}.login-card{width:min(430px,100%);margin:12vh auto;padding:32px}.edit-card{width:min(600px,100%);margin:7vh auto}.edit-card h1{margin-top:24px}.peer-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:22px 0}.form-note{margin:0;color:var(--muted);font-size:12px;line-height:1.8}@media(max-width:900px){.stats{grid-template-columns:repeat(2,1fr)}.form-grid,.password-form{grid-template-columns:1fr 1fr}.form-grid .wide{grid-column:span 2}}@media(max-width:560px){.shell{margin:18px auto}.stats,.form-grid,.password-form,.usage-values,.peer-summary{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.topbar{align-items:flex-start;gap:14px;flex-direction:column}.header-actions{align-items:stretch;flex-direction:column;width:100%}.header-actions .button,.header-actions form,.header-actions button{width:100%;text-align:center}.usage-summary .section-title{align-items:flex-start}.card{padding:14px}}

.rotation-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.rotation-summary article{padding:18px;background:#09141d;border:1px solid var(--line);border-radius:12px}.rotation-summary h3{margin:0 0 12px}.rotation-summary h3 small{font-size:12px;color:var(--muted);font-weight:400}.rotation-summary strong{display:block;font-size:28px;color:var(--accent)}.rotation-summary strong span{font-size:13px;color:var(--muted);font-weight:400}.rotation-summary p{margin:8px 0 12px;color:var(--muted)}.rotation-card details summary{cursor:pointer;margin:12px 0 10px}.rotation-card .form-note{margin-top:12px}@media(max-width:560px){.rotation-summary{grid-template-columns:1fr}}

.egress-controls{padding:17px;margin-top:16px;background:#0a1924;border:1px solid #31536a;border-radius:12px}.egress-controls strong{font-size:17px}.egress-controls p{margin:8px 0;color:var(--muted)}.egress-controls b{color:var(--text)}.egress-controls .flash{margin:10px 0}.egress-actions{display:flex;flex-wrap:wrap;gap:10px;margin:15px 0}.egress-actions button.selected{outline:2px solid var(--green);outline-offset:2px}.egress-controls .form-note{margin:8px 0 0}@media(max-width:560px){.egress-actions{display:grid;grid-template-columns:1fr}.egress-actions button{width:100%}}
.egress-schedule-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end;margin:16px 0}.egress-schedule-form label{display:flex;flex-direction:column;gap:7px;color:var(--muted)}.egress-schedule-form input,.egress-schedule-form select{width:100%;min-height:44px;background:#142534;color:var(--text);border:1px solid var(--line);border-radius:9px;padding:9px;font:inherit}.egress-schedule-form button.selected{outline:2px solid var(--green);outline-offset:2px}@media(max-width:900px){.egress-schedule-form{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.egress-schedule-form{grid-template-columns:1fr}}


/* Config selection and bulk controls. */
.bulk-toolbar { display:flex; flex-wrap:wrap; align-items:end; gap:12px; margin:16px 0; padding:16px; background:#111b29; border:1px solid #334155; border-radius:12px; }
.bulk-toolbar label { min-width:210px; }
.bulk-toolbar select { min-height:44px; padding:9px 12px; background:var(--card2); color:var(--text); border:1px solid var(--line); border-radius:9px; font:inherit; }
.bulk-toolbar button:disabled { opacity:.45; cursor:not-allowed; }
.bulk-toolbar .selection-summary { align-self:center; margin:0; }
.bulk-toolbar .secondary { white-space:nowrap; }
input.peer-select, input#select-all-peers { width:20px; height:20px; margin:0; cursor:pointer; accent-color:#38bdf8; }
.selection-column { width:48px; text-align:center; }
tr.peer-selected { background:#16334a; }
.bulk-confirm-actions { display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin-top:20px; }
.bulk-confirm-actions button.danger { background:var(--red); }
@media(max-width:640px) { .bulk-toolbar { align-items:stretch; } .bulk-toolbar label { min-width:100%; } .bulk-toolbar button { flex-grow:1; } }
