:root{--bg-primary:#0f1117;--bg-secondary:#1a1d27;--bg-tertiary:#242734;--text-primary:#e4e6eb;--text-secondary:#9ca3b0;--text-muted:#6b7280;--accent:#3b82f6;--accent-hover:#2563eb;--success:#22c55e;--warning:#f59e0b;--danger:#ef4444;--border:#2d3140;--radius:8px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-primary);color:var(--text-primary);min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;border:none;border-radius:var(--radius);font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:background .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#dc2626}button:disabled{opacity:.35;cursor:not-allowed}button:disabled:hover{background:revert}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text-primary)}.btn-outline:hover{background:var(--bg-tertiary)}.btn-sm{padding:.25rem .625rem;font-size:.75rem}input,select,textarea{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);padding:.5rem .75rem;font-size:.875rem;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}table{width:100%;border-collapse:collapse}td,th{padding:.625rem .75rem;text-align:left;border-bottom:1px solid var(--border);font-size:.875rem}th{color:var(--text-secondary);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}.badge{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500}.badge-active{background:#1e3b2e;color:#4ade80}.badge-inactive{background:#2e1c1c;color:#fca5a5}.badge-script{background:#1e3a5f;color:#93c5fd}.badge-upload{background:#2e2b1c;color:#fde68a}.badge-success{background:#1e3b2e;color:#4ade80}.badge-failed{background:#3b1c1c;color:#fca5a5}.badge-skipped{background:var(--bg-tertiary);color:var(--text-secondary)}.badge-admin{background:#2e1c3b;color:#c4b5fd}.badge-user{background:var(--bg-tertiary);color:var(--text-secondary)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.page-header h1{font-size:1.5rem;font-weight:600}.nav-bar{display:flex;align-items:center;gap:1.5rem;padding:.75rem 1.5rem;background:var(--bg-secondary);border-bottom:1px solid var(--border)}.nav-bar .logo{font-weight:700;font-size:1rem;color:var(--text-primary)}.nav-bar a{color:var(--text-secondary);font-size:.875rem}.nav-bar a:hover{color:var(--text-primary);text-decoration:none}.nav-bar .spacer{flex:1 1}.nav-bar .user-info{color:var(--text-muted);font-size:.8rem}.container{max-width:1200px;margin:0 auto;padding:1.5rem}.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:1rem;gap:1rem}.resize-handle{position:absolute;right:0;bottom:0;width:18px;height:18px;cursor:nwse-resize;display:flex;align-items:flex-end;justify-content:flex-end;padding:3px;color:var(--text-muted);opacity:0;transition:opacity .15s}.card:hover .resize-handle{opacity:.5}.resize-handle:hover{opacity:.8!important}.filters{display:flex;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.filters input,.filters select{width:auto;min-width:150px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;min-width:400px;max-width:600px;max-height:80vh;overflow-y:auto}.modal h2{font-size:1.25rem}.modal .form-group,.modal h2{margin-bottom:1rem}.modal label{display:block;margin-bottom:.25rem;font-size:.8rem;color:var(--text-secondary)}.modal .actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}.empty-state{text-align:center;padding:3rem;color:var(--text-muted)}.version-range{font-family:SF Mono,Consolas,Monaco,monospace;font-size:.8rem;color:var(--text-secondary)}.badge-action-added{background:#1e3b2e;color:#4ade80}.badge-action-enabled{background:#1e3a5f;color:#93c5fd}.badge-action-disabled{background:#2e2b1c;color:#fde68a}.badge-action-deleted{background:#3b1c1c;color:#fca5a5}.badge-action-moved{background:#2e1c3b;color:#c4b5fd}.inline-select{background:transparent;border:none;color:var(--text-primary);font-size:.875rem;cursor:pointer;padding:.125rem 0;width:auto}.inline-select option{background:var(--bg-secondary);color:var(--text-primary)}.toast-container{position:fixed;bottom:1.25rem;right:1.25rem;display:flex;flex-direction:column-reverse;gap:.5rem;z-index:200;pointer-events:none}.toast{padding:.625rem 1rem;border-radius:var(--radius);font-size:.8rem;font-weight:500;animation:toast-in .25s ease-out,toast-out .3s ease-in 2.7s forwards;pointer-events:auto}.toast-success{background:#1e3b2e;color:#4ade80;border:1px solid #2d5a3f}.toast-error{background:#3b1c1c;color:#fca5a5;border:1px solid #5a2d2d}@keyframes toast-in{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{0%{opacity:1}to{opacity:0;transform:translateY(-.5rem)}}