:root{--color-bg: #f3f4f8;--color-surface: #ffffff;--color-border: #e2e4ea;--color-border-strong: #cbced8;--color-text: #1a1d29;--color-text-muted: #6b7280;--color-primary: #4f46e5;--color-primary-hover: #4338ca;--color-primary-soft: #eef0fe;--color-success-bg: #e3f8ec;--color-success-text: #157347;--color-danger: #dc2626;--color-danger-hover: #b91c1c;--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;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}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}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-row th{padding:6px 8px;font-weight:400;text-transform:none;letter-spacing:normal;background:var(--color-surface)}.filter-input{width:100%;padding:5px 8px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);font:inherit;font-size:.82rem;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}.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%,#eef0fe 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}
