*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,-apple-system,sans-serif;font-size:14px;color:#1f2937;background:#f8fafc}a{color:#3b82f6;text-decoration:none}.app-layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:220px;min-width:220px;background:#1e2a3a;color:#e2e8f0;display:flex;flex-direction:column}.sidebar-header{padding:20px 16px;border-bottom:1px solid #2d3f55}.sidebar-header h2{font-size:1rem;color:#fff}.nav-links{list-style:none;flex:1;padding:8px 0}.nav-links li a{display:block;padding:10px 20px;color:#94a3b8;text-decoration:none;border-left:3px solid transparent;transition:all .15s}.nav-links li a:hover{color:#fff;background:#ffffff0d}.nav-links li a.active{color:#fff;background:#3b82f626;border-left-color:#3b82f6}.sidebar-footer{padding:16px;border-top:1px solid #2d3f55}.main-content{flex:1;overflow-y:auto;padding:28px;background:#f8fafc}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#f1f5f9}.login-card{background:#fff;border-radius:12px;padding:40px;width:380px;box-shadow:0 4px 24px #0000001a}.login-card h1{font-size:1.25rem;color:#1e2a3a;margin-bottom:4px}.login-card h2{font-size:.9rem;color:#6b7280;margin-bottom:24px;font-weight:400}.page{max-width:1200px}.page h1{font-size:1.5rem;margin-bottom:20px;color:#1e2a3a}.page h2{font-size:1.1rem;margin:20px 0 12px;color:#374151}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.page-header h1{margin-bottom:0}.stats-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:24px}.stat-card{background:#fff;border-radius:10px;padding:20px;box-shadow:0 1px 4px #00000012;text-align:center}.stat-value{font-size:2.25rem;font-weight:700;color:#1e2a3a}.stat-label{color:#6b7280;font-size:.8rem;margin-top:4px;text-transform:uppercase;letter-spacing:.05em}.table{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px #00000012}.table th{background:#f8fafc;padding:10px 14px;text-align:left;font-weight:600;font-size:.8rem;color:#6b7280;text-transform:uppercase;border-bottom:1px solid #e5e7eb}.table td{padding:10px 14px;border-bottom:1px solid #f3f4f6}.table tbody tr:hover{background:#f9fafb}.table tbody tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:2px 10px;border-radius:9999px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.badge-running{background:#dbeafe;color:#1d4ed8}.badge-queued{background:#fef3c7;color:#92400e}.badge-complete{background:#d1fae5;color:#065f46}.badge-failed{background:#fee2e2;color:#991b1b}.badge-paused{background:#ffedd5;color:#9a3412}.badge-cancelled,.badge-pending{background:#f3f4f6;color:#6b7280}.badge-dry_run_complete{background:#ede9fe;color:#5b21b6}.badge-dry-run{background:#7c3aed;color:#fff;font-size:.65rem;border-radius:4px;padding:2px 6px;margin-left:8px}.btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:6px;border:none;cursor:pointer;font-size:.875rem;font-weight:500;transition:opacity .15s}.btn:hover{opacity:.85}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#3b82f6;color:#fff}.btn-secondary{background:#e5e7eb;color:#374151}.btn-danger{background:#ef4444;color:#fff}.btn-sm{padding:4px 10px;font-size:.8rem}.btn-close{background:none;border:none;font-size:1.4rem;cursor:pointer;color:#6b7280;line-height:1;padding:4px}.form-group{margin-bottom:14px}.form-group label{display:block;font-weight:500;margin-bottom:4px;color:#374151;font-size:.875rem}.form-group input[type=checkbox]{width:auto;margin-right:8px}input,select,textarea{width:100%;padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem;background:#fff;color:#1f2937}input:focus,select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}small{color:#6b7280;font-size:.75rem;display:block;margin-top:3px}.error-msg{background:#fee2e2;color:#991b1b;padding:10px 14px;border-radius:6px;font-size:.875rem}.info-msg{background:#dbeafe;color:#1d4ed8;padding:10px 14px;border-radius:6px;font-size:.875rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:12px;max-width:740px;width:95%;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e5e7eb}.modal-header h2{font-size:1.1rem}.modal-body{padding:24px;flex:1}.modal-body h3{margin-bottom:16px;color:#1e2a3a}.modal-body h4{margin:16px 0 8px;font-size:.9rem;color:#374151}.modal-footer{padding:16px 24px;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;gap:10px}.wizard-steps{display:flex;gap:6px;padding:14px 24px;background:#f8fafc;border-bottom:1px solid #e5e7eb;flex-wrap:wrap}.wizard-step{font-size:.75rem;padding:4px 12px;border-radius:9999px;background:#e5e7eb;color:#6b7280}.wizard-step.active{background:#3b82f6;color:#fff}.wizard-step.done{background:#22c55e;color:#fff}.job-list{display:flex;flex-direction:column;gap:12px}.job-card{background:#fff;border-radius:10px;border:1px solid #e5e7eb;overflow:hidden;box-shadow:0 1px 3px #0000000f}.job-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;cursor:pointer}.job-header:hover{background:#f9fafb}.job-details{border-top:1px solid #f3f4f6;padding:16px 18px}.steps-list{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.step-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;background:#f8fafc;font-size:.875rem}.step-complete{background:#f0fdf4}.step-failed{background:#fef2f2}.step-running{background:#eff6ff}.step-pending{background:#f8fafc}.log-stream{margin-top:16px;border-radius:8px;overflow:hidden;border:1px solid #2d3f55}.log-header{background:#1e2a3a;color:#94a3b8;padding:6px 12px;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}.log-body{background:#0d1117;max-height:320px;overflow-y:auto;padding:10px 12px}.log-line{display:flex;gap:10px;margin-bottom:2px;font-family:Fira Mono,Consolas,monospace;font-size:.72rem;line-height:1.5}.log-ts{color:#4b5563;min-width:60px}.log-level{min-width:50px;font-weight:700}.log-info .log-level{color:#60a5fa}.log-warn .log-level{color:#fbbf24}.log-error .log-level{color:#f87171}.log-info .log-msg{color:#d1d5db}.log-warn .log-msg{color:#fbbf24}.log-error .log-msg{color:#f87171}.tabs{display:flex;gap:4px;margin-bottom:20px}.tab-btn{padding:8px 16px;border-radius:6px;border:none;cursor:pointer;background:#e5e7eb;color:#374151;font-size:.8rem;font-weight:600}.tab-btn.active{background:#3b82f6;color:#fff}.settings-form{display:flex;flex-direction:column;gap:10px;max-width:480px;margin-top:20px;padding:20px;background:#f8fafc;border-radius:10px;border:1px solid #e5e7eb}.settings-form h3{margin-bottom:4px}.detail-table{border-collapse:collapse;width:100%;max-width:600px}.detail-table td{padding:10px 14px;border-bottom:1px solid #f3f4f6}.detail-table td:first-child{color:#6b7280;font-weight:500;width:180px}.detail-table code{background:#f3f4f6;padding:2px 6px;border-radius:4px;font-size:.8rem}.filter-input{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;width:240px}.loading,.empty-state{text-align:center;color:#6b7280;padding:60px 20px;font-size:.95rem}.wiki-layout{display:flex;gap:0;height:100%;min-height:calc(100vh - 56px)}.wiki-sidebar{width:220px;min-width:220px;background:#fff;border-right:1px solid #e5e7eb;padding:16px 0;border-radius:10px 0 0 10px;overflow-y:auto}.wiki-sidebar-title{padding:0 16px 12px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#9ca3af}.wiki-nav{list-style:none}.wiki-nav-btn{display:flex;align-items:center;gap:8px;width:100%;padding:9px 16px;background:none;border:none;cursor:pointer;font-size:.875rem;color:#374151;text-align:left;border-left:3px solid transparent;transition:all .12s}.wiki-nav-btn:hover{background:#f3f4f6;color:#1f2937}.wiki-nav-btn.active{background:#eff6ff;color:#1d4ed8;border-left-color:#3b82f6;font-weight:600}.wiki-icon{font-size:1rem}.wiki-content{flex:1;background:#fff;border-radius:0 10px 10px 0;padding:36px 48px;overflow-y:auto;max-width:860px;line-height:1.75}.wiki-content h1{font-size:1.6rem;color:#1e2a3a;margin-bottom:8px;padding-bottom:12px;border-bottom:2px solid #e5e7eb}.wiki-content h2{font-size:1.15rem;color:#1e2a3a;margin-top:32px;margin-bottom:10px}.wiki-content h3{font-size:1rem;color:#374151;margin-top:24px;margin-bottom:8px}.wiki-content p{color:#374151;margin-bottom:12px}.wiki-content ul,.wiki-content ol{padding-left:24px;margin-bottom:14px;color:#374151}.wiki-content li{margin-bottom:4px}.wiki-content code{background:#f3f4f6;padding:2px 6px;border-radius:4px;font-size:.82rem;font-family:Fira Mono,Consolas,monospace;color:#c0392b}.wiki-content a{color:#3b82f6}.wiki-content strong{color:#1f2937}.wiki-code{background:#0d1117;color:#d1d5db;border-radius:8px;padding:16px 20px;overflow-x:auto;margin:16px 0;font-size:.8rem;font-family:Fira Mono,Consolas,monospace;line-height:1.6}.wiki-code code{background:none;padding:0;color:inherit;font-size:inherit}.wiki-table{width:100%;border-collapse:collapse;margin:16px 0;font-size:.875rem}.wiki-table th{background:#f8fafc;padding:8px 14px;text-align:left;font-weight:600;font-size:.78rem;color:#6b7280;text-transform:uppercase;border:1px solid #e5e7eb}.wiki-table td{padding:8px 14px;border:1px solid #e5e7eb;color:#374151}
