:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--bg-elevated: #475569;--border-subtle: rgba(255, 255, 255, .08);--border-default: rgba(255, 255, 255, .12);--border-highlight: rgba(255, 255, 255, .2);--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--text-invert: #0f172a;--accent-primary: #3b82f6;--accent-secondary: #2563eb;--accent-glow: rgba(59, 130, 246, .1);--accent-light: rgba(59, 130, 246, .15);--success: #10b981;--success-dark: #059669;--success-bg: rgba(16, 185, 129, .1);--success-text: #10b981;--warning: #f59e0b;--danger: #ef4444;--danger-dark: #dc2626;--brand-primary: #6366f1;--brand-primary-dark: #4f46e5;--brand-secondary: #f97316;--brand-secondary-dark: #ea580c;--brand-violet: #8b5cf6;--brand-violet-dark: #7c3aed;--pipeline-active: #3b82f6;--pipeline-pending: #9ca3af;--pipeline-completed: #10b981;--pipeline-skipped: #6b7280;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -4px rgba(0, 0, 0, .4);--ease-quintic: cubic-bezier(.23, 1, .32, 1);--card-shadow: 0 4px 6px -1px rgba(0, 0, 0, .4);--card-hover-shadow: 0 20px 25px -5px rgba(0, 0, 0, .4), 0 10px 10px -5px rgba(0, 0, 0, .2);--glow-active: 0 0 20px rgba(16, 185, 129, .3);--glow-working: 0 0 20px rgba(59, 130, 246, .3);--glow-brand: 0 0 20px rgba(99, 102, 241, .3)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased}#root{display:flex;min-height:100vh}.sidebar{width:240px;background:var(--bg-primary);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;padding:20px 0;box-shadow:var(--shadow-sm);position:relative;transition:width .2s ease;flex-shrink:0}.sidebar-logo{padding:0 20px 24px;border-bottom:1px solid var(--border-subtle);margin-bottom:20px;display:flex;align-items:center;gap:12px}.sidebar-logo img{width:36px;height:36px;object-fit:contain}.sidebar-logo-text{display:flex;flex-direction:column}.sidebar-logo h1{font-size:16px;font-weight:700;color:var(--text-primary);line-height:1.2}.sidebar-logo span{font-size:12px;color:var(--text-muted)}.sidebar-nav{flex:1;display:flex;flex-direction:column;gap:2px;padding:0 12px}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:var(--radius-md);color:var(--text-secondary);text-decoration:none;font-size:14px;font-weight:500;transition:all .15s ease}.nav-item:hover{background:var(--bg-tertiary);color:var(--text-primary)}.nav-item.active{background:var(--accent-light);color:var(--accent-primary)}.nav-item.active svg{color:var(--accent-primary)}.nav-item svg{width:18px;height:18px;flex-shrink:0}.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-secondary)}.header{height:64px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;padding:0 32px;background:var(--bg-primary)}.header h2{font-size:20px;font-weight:600}.header-actions{display:flex;align-items:center;gap:12px}.page-content{flex:1;padding:32px;overflow-y:auto}.card{background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.card-title{font-size:16px;font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:var(--radius-md);font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease;border:none;outline:none}.btn-primary{background:var(--accent-primary);color:#fff}.btn-primary:hover{background:var(--accent-secondary);box-shadow:var(--shadow-md)}.btn-primary:disabled{background:var(--bg-tertiary);color:var(--text-muted);cursor:not-allowed}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-subtle)}.btn-secondary:hover{background:var(--bg-elevated);border-color:var(--border-default)}.btn-danger{background:#ef44441a;color:var(--danger);border:1px solid rgba(239,68,68,.2)}.btn-danger:hover{background:#ef444433}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-tertiary);color:var(--text-primary)}.form-group{margin-bottom:16px}.form-label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.form-input{width:100%;padding:10px 14px;font-size:14px;border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-secondary);color:var(--text-primary);transition:border-color .15s ease,box-shadow .15s ease}.form-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-glow)}.form-input::placeholder{color:var(--text-muted)}.form-select{appearance:none;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%2394a3b8' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right 10px center;background-repeat:no-repeat;background-size:20px;padding-right:40px}textarea.form-input{resize:vertical;min-height:80px}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:var(--bg-primary);border-radius:var(--radius-lg);border:1px solid var(--border-subtle);width:100%;max-width:520px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border-subtle)}.modal-title{font-size:18px;font-weight:600}.modal-body{padding:24px;overflow-y:auto;flex:1}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--border-subtle);background:var(--bg-secondary)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:500;border-radius:6px;background:var(--bg-tertiary);color:var(--text-secondary)}.kanban-board{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;min-height:400px}.kanban-column{background:var(--bg-primary);border-radius:var(--radius-lg);border:1px solid var(--border-subtle);display:flex;flex-direction:column;min-height:400px}.kanban-column-header{display:flex;align-items:center;gap:8px;padding:16px;border-bottom:1px solid var(--border-subtle)}.kanban-column-title{font-size:14px;font-weight:600;color:var(--text-primary)}.kanban-column-count{font-size:12px;font-weight:500;color:var(--text-muted);background:var(--bg-tertiary);padding:2px 8px;border-radius:10px}.kanban-column-content{flex:1;padding:12px;display:flex;flex-direction:column;gap:10px;overflow-y:auto}.task-card{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:14px;cursor:pointer;transition:all .15s ease}.task-card:hover{border-color:var(--border-highlight);box-shadow:var(--shadow-sm)}.task-card-title{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--text-primary)}.task-card-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pipeline-card{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:16px;cursor:pointer;transition:all .15s ease}.pipeline-card:hover{border-color:var(--border-highlight);box-shadow:var(--shadow-md)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.stat-card{background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:20px;display:flex;align-items:flex-start;gap:14px}.stat-icon{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-content{flex:1}.stat-label{font-size:12px;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.stat-value{font-size:28px;font-weight:700;color:var(--text-primary);line-height:1}.stat-subtitle{font-size:12px;color:var(--text-muted);margin-top:4px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;color:var(--text-muted)}.empty-state svg{width:48px;height:48px;margin-bottom:16px;opacity:.5}.auth-container{min-height:100vh;width:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);padding:20px}.auth-card{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:40px;width:100%;max-width:400px;box-shadow:var(--shadow-lg)}.auth-logo{display:flex;flex-direction:column;align-items:center;margin-bottom:32px}.auth-logo img{width:56px;height:56px;margin-bottom:16px}.auth-logo h1{font-size:24px;font-weight:700;color:var(--text-primary);margin-bottom:4px}.auth-logo span{font-size:14px;color:var(--text-muted)}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-error{background:#ef44441a;border:1px solid rgba(239,68,68,.2);border-radius:var(--radius-md);padding:12px 16px;color:var(--danger);font-size:13px}.auth-success{background:#10b9811a;border:1px solid rgba(16,185,129,.2);border-radius:var(--radius-md);padding:12px 16px;color:var(--success);font-size:13px}.auth-link{text-align:center;margin-top:20px;font-size:14px;color:var(--text-muted)}.auth-link a{color:var(--accent-primary);text-decoration:none;font-weight:500}.auth-link a:hover{text-decoration:underline}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.drawer-overlay{position:fixed;inset:0;background:#00000080;z-index:50}.drawer{position:fixed;top:0;right:0;bottom:0;width:480px;max-width:100%;background:var(--bg-primary);border-left:1px solid var(--border-subtle);z-index:51;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border-subtle)}.drawer-body{flex:1;overflow-y:auto;padding:24px}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--border-subtle)}.table th{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;background:var(--bg-secondary)}.table td{font-size:14px;color:var(--text-primary)}.table tr:hover td{background:var(--bg-tertiary)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border-subtle);margin-bottom:20px}.tab{padding:10px 16px;font-size:14px;font-weight:500;color:var(--text-muted);background:none;border:none;cursor:pointer;position:relative;transition:color .15s ease}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--accent-primary)}.tab.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--accent-primary)}@media(max-width:1024px){.kanban-board{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.sidebar{display:none}.kanban-board{grid-template-columns:1fr}.drawer{width:100%}}
