:root{--color-bg: #f4f6f9;--color-surface: #ffffff;--color-border: #e2e6ed;--color-border-strong: #c7cedb;--color-text: #1a2233;--color-text-muted: #64748b;--color-primary: #2f6fb0;--color-primary-hover: #255a8f;--color-primary-soft: #eaf2fb;--color-accent-teal: #2ba89a;--color-header-dark: #202a3c;--color-success-bg: #e3f8ec;--color-success-text: #157347;--color-warn: #e8a23d;--color-danger: #d64545;--color-danger-hover: #b83a3a;--color-danger-bg: #fdecec;--color-danger-text: #b3261e;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--shadow-sm: 0 1px 2px rgba(20, 22, 40, .06);--shadow-md: 0 8px 24px rgba(20, 22, 40, .1)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.45}.app-shell{max-width:1180px;margin:0 auto;padding:28px 20px 64px}.app-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:24px;padding-bottom:18px;border-bottom:1px solid var(--color-border)}.app-header h1{font-size:1.5rem;font-weight:700;margin:0;letter-spacing:-.01em}.header-actions{display:flex;gap:8px;flex-wrap:wrap}button{font:inherit;cursor:pointer;border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);border-radius:var(--radius-sm);padding:8px 16px;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .05s ease}button:hover:not(:disabled){background:#f8f9fc;border-color:var(--color-border-strong)}button:active:not(:disabled){transform:translateY(1px)}button.primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}button.danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}button.danger:hover:not(:disabled){background:var(--color-danger-hover);border-color:var(--color-danger-hover)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:20px}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-left:4px solid var(--stat-accent, var(--color-primary));border-radius:var(--radius-md);padding:14px 16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:6px}.stat-card.accent-blue{--stat-accent: var(--color-primary)}.stat-card.accent-teal{--stat-accent: var(--color-accent-teal)}.stat-card.accent-green{--stat-accent: var(--color-success-text)}.stat-card.accent-red{--stat-accent: var(--color-danger)}.stat-label{font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-weight:600}.stat-value{font-size:1.5rem;font-weight:700;color:var(--color-text)}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--color-border);background:#fafbfd}.panel-header h2{margin:0;font-size:1rem;font-weight:700;letter-spacing:-.01em}.panel-count{font-size:.8rem;color:var(--color-text-muted);background:var(--color-bg);padding:3px 10px;border-radius:999px;border:1px solid var(--color-border);white-space:nowrap}.panel table{border:none;border-radius:0;box-shadow:none}.panel table thead th{background:var(--color-header-dark);color:#fff;border-bottom:none}.filters-bar{display:flex;flex-wrap:wrap;gap:12px;padding:14px 18px;border-bottom:1px solid var(--color-border);align-items:flex-end}.filter-field{display:flex;flex-direction:column;gap:4px;flex:1 1 130px;min-width:110px}.filter-field label{font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted);font-weight:600}.filter-field-clear{flex:0 0 auto;justify-content:flex-end}.filter-field-clear button{padding:8px 14px;font-size:.82rem}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;background:var(--color-surface);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--color-border)}th,td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--color-border);font-size:.92rem;white-space:nowrap}th{background:#fafbfd;font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}tbody tr{transition:background-color .1s ease}tbody tr:hover{background:var(--color-primary-soft)}tbody tr:last-child td{border-bottom:none}.filter-input{width:100%;padding:7px 9px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);font:inherit;font-size:.85rem;background:var(--color-surface);box-sizing:border-box}.status-pill{display:inline-block;padding:3px 11px;border-radius:999px;font-size:.76rem;font-weight:700;letter-spacing:.02em}.status-active{background:var(--color-success-bg);color:var(--color-success-text)}.status-blocked{background:var(--color-danger-bg);color:var(--color-danger-text)}.online-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}.online-dot.on{background:#22c55e;box-shadow:0 0 0 3px #22c55e33}.online-dot.off{background:#d1d5db}.usage-bar{display:flex;align-items:center;gap:6px;margin-top:4px}.usage-bar-track{flex:1;height:6px;background:var(--color-border);border-radius:999px;overflow:hidden;min-width:50px}.usage-bar-fill{height:100%;border-radius:999px;transition:width .2s ease}.usage-bar-fill.usage-bar-ok{background:var(--color-accent-teal)}.usage-bar-fill.usage-bar-warn{background:var(--color-warn)}.usage-bar-fill.usage-bar-danger{background:var(--color-danger)}.usage-bar-pct{font-size:.72rem;color:var(--color-text-muted);min-width:30px;text-align:right}.actions-cell{display:flex;gap:6px;flex-wrap:wrap;white-space:normal}.actions-cell button{padding:4px 11px;font-size:.8rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11132080;display:flex;align-items:center;justify-content:center;padding:16px;z-index:10;animation:fade-in .12s ease}.modal{background:var(--color-surface);border-radius:var(--radius-lg);padding:26px;width:100%;max-width:420px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-md);animation:pop-in .14s ease}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(6px) scale(.98)}}.modal h2{margin-top:0;font-size:1.2rem;font-weight:700;letter-spacing:-.01em}.field{margin-bottom:16px}.field label{display:block;font-size:.85rem;font-weight:600;margin-bottom:5px;color:#374151}.field input,.field select{width:100%;padding:9px 11px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);font:inherit;background:var(--color-surface);transition:border-color .15s ease}.field input:focus,.field select:focus{border-color:var(--color-primary)}.field-hint{font-size:.78rem;color:var(--color-text-muted);margin-top:5px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}.error-banner{background:var(--color-danger-bg);color:var(--color-danger-text);padding:10px 14px;border-radius:var(--radius-sm);margin-bottom:16px;font-size:.9rem;border:1px solid rgba(220,38,38,.15)}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 0%,#eaf2fb 0%,var(--color-bg) 55%);padding:16px}.login-card{background:var(--color-surface);padding:34px;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);width:100%;max-width:340px;border-top:3px solid var(--color-primary)}.login-card h1{font-size:1.25rem;font-weight:700;margin-top:0;letter-spacing:-.01em}.login-card p{color:var(--color-text-muted)}.wireguard-result{text-align:center}.wireguard-result img{width:200px;height:200px;margin:12px 0;border-radius:var(--radius-sm);border:1px solid var(--color-border);padding:8px}.wireguard-result textarea{width:100%;height:140px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:8px}@media (max-width: 720px){.app-shell{padding:16px 12px 40px}.app-header h1{font-size:1.2rem}.header-actions{width:100%}.header-actions button{flex:1 1 auto}.stats-row{grid-template-columns:repeat(2,1fr)}.filters-bar{padding:12px}.filter-field{flex:1 1 100%}.filter-field-clear{justify-content:stretch}.filter-field-clear button{width:100%}.modal{padding:18px;max-height:95vh}.actions-cell button{padding:8px 12px;font-size:.85rem}.panel table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0;margin:-1px}.panel table,.panel table tbody,.panel table tr,.panel table td{display:block;width:100%}.panel table tr{margin:12px;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}.panel table td{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid var(--color-border);white-space:normal;text-align:right}.panel table td:last-child{border-bottom:none}.panel table td:before{content:attr(data-label);font-weight:600;color:var(--color-text-muted);font-size:.78rem;text-align:left;flex-shrink:0}.panel table td.actions-cell{display:block}.panel table td.actions-cell:before{content:none}}@media (max-width: 480px){.stats-row{grid-template-columns:1fr 1fr;gap:10px}.stat-value{font-size:1.25rem}.login-card{padding:24px}}
