:root{--bg: #f0f2f5;--surface: #ffffff;--text: #2c3e50;--text-muted: #6c757d;--accent: #3498db;--accent-hover: #2980b9;--border: #dee2e6;--radius: 8px;--error-bg: #fdecea;--error-text: #721c24}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.admin-nav{background:var(--surface);border-bottom:1px solid var(--border);padding:14px 24px}.admin-nav-inner{max-width:960px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.admin-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font-weight:700;font-size:1.1rem}.admin-logo{height:28px}.admin-nav-right{display:flex;align-items:center;gap:16px}.admin-user{font-size:.85rem;color:var(--text-muted)}.admin-signout{background:none;border:1px solid var(--border);border-radius:var(--radius);padding:5px 12px;font-size:.82rem;color:var(--text-muted);cursor:pointer;font-family:inherit}.admin-signout:hover{border-color:var(--accent);color:var(--accent)}.admin-tabs{display:flex;gap:4px;background:var(--bg);border-radius:6px;padding:3px}.admin-tab{background:transparent;border:none;border-radius:4px;padding:5px 14px;font-size:.85rem;font-family:inherit;color:var(--text-muted);cursor:pointer;transition:background .1s,color .1s}.admin-tab:hover{color:var(--text)}.admin-tab.active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 3px #0000001a}.admin-main{max-width:960px;margin:32px auto;padding:0 24px}.admin-placeholder{text-align:center;padding:80px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.admin-placeholder h1{margin:0 0 12px;font-size:1.6rem}.admin-placeholder p{color:var(--text-muted);margin:0 0 20px}.admin-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.admin-panel h2{margin:0 0 8px;font-size:1.3rem}.admin-hint{color:var(--text-muted);font-size:.88rem;margin:0 0 20px}.admin-loading{color:var(--text-muted)}.admin-empty{color:var(--text-muted);font-style:italic}.admin-btn{background:var(--accent);color:#fff;border:none;border-radius:var(--radius);padding:8px 18px;font-size:.9rem;font-family:inherit;cursor:pointer;transition:background .15s}.admin-btn:hover:not(:disabled){background:var(--accent-hover)}.admin-btn:disabled{opacity:.5;cursor:not-allowed}.admin-btn-small{background:none;border:1px solid var(--border);border-radius:4px;padding:3px 10px;font-size:.8rem;color:var(--accent);cursor:pointer;font-family:inherit}.admin-btn-small:hover{border-color:var(--accent)}.admin-btn-danger{background:none;border:1px solid #e74c3c;border-radius:4px;padding:3px 10px;font-size:.8rem;color:#e74c3c;cursor:pointer;font-family:inherit}.admin-btn-danger:hover{background:#fdecea}.admin-error{background:var(--error-bg);color:var(--error-text);border-radius:var(--radius);padding:10px 14px;font-size:.88rem;margin-bottom:16px}.admin-table{width:100%;border-collapse:collapse;font-size:.9rem}.admin-table th{text-align:left;padding:8px 12px;border-bottom:2px solid var(--border);font-size:.82rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.admin-table td{padding:10px 12px;border-bottom:1px solid var(--border)}.admin-table code{background:var(--bg);padding:2px 6px;border-radius:4px;font-size:.88rem}.role-badge{display:inline-block;padding:2px 10px;border-radius:12px;font-size:.78rem;font-weight:600}.role-badge--admin{background:#3498db1f;color:var(--accent)}.role-badge--member{background:var(--bg);color:var(--text-muted)}.cidr-form{display:flex;gap:8px;margin-bottom:20px}.cidr-input{flex:1;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;font-family:monospace;background:var(--surface);color:var(--text)}.cidr-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #3498db26}.admin-spinner{width:40px;height:40px;border:4px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
