*,:before,:after{box-sizing:border-box}body{margin:0}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--accent:#4f7ef8;--accent-h:#6690ff;--accent-dim:#4f7ef826;--accent-rgb:79, 126, 248;--bg:#050810;--bg2:#0a1020;--bg3:#111828;--border:#1d2d48;--text:#e8edf5;--text-dim:#e8edf580;--text-head:#f0f4ff;--danger:#e05252;--success:#22c55e;--warn:#f59e0b;--radius:8px;--sidebar-w:220px;transition:background-color .25s,color .2s}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:14px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-h);text-decoration:underline}input,select,textarea,button{font:inherit;color:inherit}.layout{height:100vh;display:flex;overflow:hidden}.sidebar{width:var(--sidebar-w);background:var(--bg2);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.sidebar-brand{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:18px 16px;display:flex}.brand-logo{background:var(--accent);color:#fff;border-radius:8px;flex-shrink:0;place-items:center;width:32px;height:32px;font-size:16px;font-weight:700;display:grid}.brand-text{color:var(--text-head);font-size:15px;font-weight:600}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:12px 8px;display:flex;overflow-y:auto}.nav-item{border-radius:var(--radius);color:var(--text-dim);align-items:center;gap:10px;padding:9px 10px;font-size:14px;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav-item:hover{background:var(--bg3);color:var(--text);text-decoration:none}.nav-item.active{background:var(--accent)18;color:var(--accent);font-weight:500}.nav-icon{text-align:center;width:20px;font-size:16px}.sidebar-footer{border-top:1px solid var(--border);align-items:center;gap:8px;padding:12px;display:flex}.user-info{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.user-avatar{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:30px;height:30px;font-size:13px;font-weight:600;display:grid}.user-name{color:var(--text-head);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.user-role{color:var(--text-dim);font-size:11px}.logout-btn{cursor:pointer;color:var(--text-dim);background:0 0;border:none;border-radius:6px;padding:4px 6px;font-size:18px}.logout-btn:hover{background:var(--bg3);color:var(--danger)}.main-content{background:var(--bg);flex:1;overflow-y:auto}.page{max-width:1200px;padding:28px 32px}.page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-title{color:var(--text-head);font-size:22px;font-weight:600}.page-subtitle{color:var(--text-dim);margin-top:2px;font-size:13px}.page-header-action{flex-shrink:0}.toolbar{gap:8px;margin-bottom:16px;display:flex}.search-input{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none;width:280px;padding:8px 12px}.search-input:focus{border-color:var(--accent)}.btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg2);color:var(--text);cursor:pointer;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:500;text-decoration:none;transition:background .15s;display:inline-flex}.btn:hover{background:var(--bg3)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-h);border-color:var(--accent-h)}.btn-full{justify-content:center;width:100%;padding:10px}.btn-icon{cursor:pointer;opacity:.7;background:0 0;border:none;border-radius:5px;padding:4px 6px;font-size:15px}.btn-icon:hover{background:var(--bg3);opacity:1}.btn-icon-danger:hover{color:var(--danger);background:#e0525218}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;background:var(--bg2);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px;font-size:12px;font-weight:600}.data-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:11px 14px}.data-table tr:last-child td{border-bottom:none}.data-table tr.clickable{cursor:pointer}.data-table tr.clickable:hover td{background:var(--bg2)}.table-empty{text-align:center;color:var(--text-dim);padding:40px}.row-actions{justify-content:flex-end;gap:2px;display:flex}.text-dim{color:var(--text-dim)}.badge{white-space:nowrap;border-radius:20px;align-items:center;padding:2px 8px;font-size:12px;font-weight:500;display:inline-flex}.badge-ok{color:#22c55e;background:#22c55e22}.badge-off{color:#94a3b8;background:#64748b22}.badge-warn{color:#f59e0b;background:#f59e0b22}.badge-neutral{background:var(--bg3);color:var(--text)}.modal-backdrop{z-index:1000;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--bg2);border:1px solid var(--border);border-radius:12px;width:100%;max-height:90vh;overflow-y:auto}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 20px 14px;display:flex}.modal-title{color:var(--text-head);font-size:16px;font-weight:600}.modal-close{cursor:pointer;color:var(--text-dim);background:0 0;border:none;padding:4px;font-size:18px;line-height:1}.modal-close:hover{color:var(--text)}.modal-body{padding:20px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:500}.field-row{flex-direction:row;align-items:center;gap:8px}.field-row label{text-transform:none;letter-spacing:0;color:var(--text);align-items:center;gap:6px;font-size:13px;display:flex}.field-row-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}input[type=text],input[type=email],input[type=password],select,textarea{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none;width:100%;padding:9px 12px;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent)}input:disabled{opacity:.5;cursor:not-allowed}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2368748c' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:30px}textarea{resize:vertical;min-height:60px}input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent)}.alert{border-radius:var(--radius);margin-bottom:14px;padding:10px 14px;font-size:13px}.alert-error{color:#ff8080;background:#e0525218;border:1px solid #e0525244}.alert-warn{color:#fbbf24;background:#f59e0b18;border:1px solid #f59e0b44}.login-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{background:var(--bg2);border:1px solid var(--border);border-radius:14px;width:100%;max-width:380px;padding:36px 32px}.login-brand{text-align:center;margin-bottom:28px}.brand-logo-lg{background:var(--accent);color:#fff;border-radius:14px;place-items:center;width:52px;height:52px;margin:0 auto 14px;font-size:24px;font-weight:700;display:grid}.login-brand h1{color:var(--text-head);margin-bottom:4px;font-size:20px;font-weight:600}.login-brand p{color:var(--text-dim);font-size:13px}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;margin-bottom:28px;display:grid}.stat-card{background:var(--bg2);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:10px;padding:18px 20px;text-decoration:none;transition:background .15s;display:block}.stat-card:hover{background:var(--bg3);text-decoration:none}.stat-value{color:var(--text-head);margin-bottom:4px;font-size:28px;font-weight:700}.stat-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.dash-section{margin-bottom:28px}.dash-section-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.dash-section-header h2{color:var(--text-head);font-size:15px;font-weight:600}.link-more{color:var(--text-dim);font-size:13px}.link-more:hover{color:var(--accent);text-decoration:none}.loading-text{color:var(--text-dim);padding:20px 0}.empty-hint{color:var(--text-dim)}.recent-list{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:2px;display:flex;overflow:hidden}.recent-row{background:var(--bg2);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 14px;font-size:13px;display:flex}.recent-row:last-child{border-bottom:none}.recent-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.recent-name{color:var(--text-head);flex:1;font-weight:500}.recent-org{color:var(--text-dim);font-size:12px}.recent-status{text-transform:capitalize;width:90px;font-size:12px}.recent-members{color:var(--text-dim);white-space:nowrap;font-size:12px}.quick-actions{flex-wrap:wrap;gap:8px;display:flex}.quick-action{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;padding:8px 14px;font-size:13px;text-decoration:none;transition:background .15s}.quick-action:hover{background:var(--bg3);color:var(--accent);text-decoration:none}.members-panel{flex-direction:column;gap:20px;display:flex}.members-table{border-collapse:collapse;width:100%}.members-table th{color:var(--text-dim);text-align:left;border-bottom:1px solid var(--border);padding:8px 12px;font-size:12px}.members-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:10px 12px}.members-table tr:last-child td{border-bottom:none}.member-cell{align-items:center;gap:10px;display:flex}.member-avatar-sm{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;font-size:12px;font-weight:600;display:grid}.member-name{color:var(--text-head);font-size:13px;font-weight:500}.member-email{color:var(--text-dim);font-size:12px}.add-member-row{border-top:1px solid var(--border);padding-top:16px}.add-member-row h3{color:var(--text-head);margin-bottom:10px;font-size:13px;font-weight:600}.add-member-form{flex-wrap:wrap;gap:8px;display:flex}.add-member-form select{flex:1;min-width:140px}.perm-checkboxes{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.perm-checkboxes label{color:var(--text);cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.perm-chips{flex-wrap:wrap;gap:4px;display:flex}.perm-chip{background:var(--bg3);border:1px solid var(--border);color:var(--text-dim);border-radius:12px;padding:1px 7px;font-size:11px}.perm-admin{color:var(--accent);background:#4f7ef822;border-color:#4f7ef844}.repo-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-bottom:20px;display:grid}.repo-card{background:var(--bg2);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;padding:16px;display:flex}.repo-card-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.repo-name{color:var(--text-head);font-size:14px;font-weight:600}.repo-name:hover{color:var(--accent);text-decoration:none}.repo-desc{color:var(--text-dim);font-size:13px;line-height:1.4}.repo-meta{color:var(--text-dim);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}.repo-url code{color:var(--text-dim);word-break:break-all;font-size:11px}.pagination{align-items:center;gap:12px;display:flex}.page-label{color:var(--text-dim);font-size:13px}.link{color:var(--accent)}.link:hover{text-decoration:underline}body,.sidebar,.main-content,.login-card,.modal,.stat-card,.repo-card,.settings-card,.data-table td,.data-table th,input,select,textarea,.btn,.nav-item{transition:background-color .22s,border-color .22s,color .18s}.settings-card{background:var(--bg2);border:1px solid var(--border);border-radius:12px;margin-bottom:20px;overflow:hidden}.settings-card-header{border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:18px 20px;display:flex}.settings-card-icon{font-size:22px;line-height:1}.settings-card-title{color:var(--text-head);margin-bottom:2px;font-size:15px;font-weight:600}.settings-card-desc{color:var(--text-dim);font-size:12px}.settings-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:20px;padding:14px 20px;display:flex}.settings-row:last-child{border-bottom:none}.settings-row-label{flex-direction:column;gap:2px;display:flex}.settings-label{color:var(--text-head);font-size:13px;font-weight:500}.settings-hint{color:var(--text-dim);font-size:12px}.settings-value{color:var(--text);font-size:13px}.settings-code{background:var(--bg3);border-radius:5px;padding:3px 8px;font-family:Consolas,Fira Code,monospace}.mode-toggle{background:var(--bg3);border:1px solid var(--border);border-radius:8px;gap:2px;padding:3px;display:flex}.mode-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 16px;font-family:inherit;font-size:13px;font-weight:500;transition:background .15s,color .15s}.mode-btn.active{background:var(--accent);color:#fff}.mode-btn:not(.active):hover{background:var(--accent-dim);color:var(--text)}.swatch-group{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.swatch{cursor:pointer;border:2.5px solid #0000;border-radius:50%;outline:none;flex-shrink:0;width:28px;height:28px;transition:transform .15s,border-color .15s,box-shadow .15s}.swatch:hover{transform:scale(1.18)}.swatch.active{border-color:var(--text);box-shadow:0 0 0 1.5px var(--text);transform:scale(1.1)}.swatch-custom{color:#fff;text-shadow:0 1px 3px #000000b3;background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);justify-content:center;align-items:center;font-size:13px;font-weight:800;display:flex}.theme-preview{border:1px solid var(--border);background:var(--bg);border-radius:10px;margin:0 20px 16px;overflow:hidden}.preview-bar{width:100%;height:4px}.preview-chips{flex-wrap:wrap;gap:8px;padding:14px 16px 10px;display:flex}.preview-chip{border-radius:20px;padding:4px 12px;font-size:12px;font-weight:500}.preview-label{color:var(--text-dim);text-transform:capitalize;padding:0 16px 12px;font-size:11px}.settings-input{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none;width:100%;max-width:340px;padding:8px 12px;transition:border-color .15s}.settings-input:focus{border-color:var(--accent)}.settings-actions{align-items:center;gap:12px;padding:14px 20px;display:flex}.save-ok{color:#22c55e;font-size:13px;animation:.2s fade-in}.role-select{background:var(--bg);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%2368748c' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;border:1px solid;border-radius:20px;outline:none;padding:2px 24px 2px 8px;font-family:inherit;font-size:12px;font-weight:500}@keyframes fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
