:root{--bg: #0a0f1a;--panel: #0f1a2c;--panel-2: #152238;--border: #1e3a5f;--text: #d8e4f0;--white: #ffffff;--muted: #6b8399;--accent: #00c8ff;--accent-2: #0090c8;--orange: #ffa726;--red: #ef4444;--green: #10b981;--yellow: #facc15;--sev-critical: #ef4444;--sev-high: #ffa726;--sev-medium: #facc15;--sev-low: #10b981;--sev-info: #6b8399;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "SF Mono", Menlo, Consolas, "Courier New", monospace}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15.5px;line-height:1.5}input,select,button,textarea{font:inherit;color:inherit}.app{min-height:100vh;display:flex;flex-direction:row}.app.legacy{flex-direction:column}.app-header{height:56px;padding:0 24px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--border);background:var(--panel)}.app-header h1{font-size:15.5px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent);margin:0}.app-header .spacer{flex:1}.app-main{padding:32px;max-width:1200px;margin:0 auto;width:100%}.sidebar{width:220px;min-height:100vh;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;position:sticky;top:0}.logo-area{padding:20px 18px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:11px}.logo-mark{width:34px;height:34px;border-radius:8px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);display:flex;align-items:center;justify-content:center;color:#001825;font-weight:900;font-size:17px}.logo-name{font-size:15.5px;font-weight:700;color:var(--white);letter-spacing:.5px}.logo-sub{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:1.4px;margin-top:2px}.nav{padding:12px 0;flex:1}.nav-label{font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--border);padding:8px 18px 3px;font-weight:700}.nav-item{display:flex;align-items:center;gap:9px;padding:9px 18px;cursor:pointer;font-size:14px;color:var(--muted);border-left:3px solid transparent;transition:all .15s;text-decoration:none;-webkit-user-select:none;user-select:none}.nav-item:hover{color:var(--text);background:#00c8ff0a}.nav-item.active{color:var(--accent);background:#00c8ff14;border-left-color:var(--accent)}.nav-item.disabled{color:#6b839980;cursor:not-allowed}.nav-item.disabled:hover{background:transparent}.nav-badge-soon{margin-left:auto;font-size:10px;color:var(--muted);border:1px solid var(--border);padding:1px 5px;border-radius:8px;letter-spacing:.5px;text-transform:uppercase}.sidebar-footer{padding:14px 18px;border-top:1px solid var(--border);font-size:12px;color:var(--muted);display:flex;align-items:center;gap:9px}.main-area{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:60px;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 28px;gap:14px;background:var(--panel);flex-shrink:0}.topbar-title{font-size:15.5px;font-weight:700;color:var(--white);letter-spacing:.3px}.topbar-sub{font-size:12.5px;color:var(--muted);margin-top:1px}.topbar-actions{margin-left:auto;display:flex;gap:10px;align-items:center}.content{padding:28px;overflow-y:auto;flex:1}.proj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}@media (max-width: 1280px){.proj-grid{grid-template-columns:repeat(2,1fr)}}.proj-card{background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:18px 20px;cursor:pointer;transition:border .2s,background .15s;display:flex;flex-direction:column;min-height:160px;text-decoration:none;color:inherit}.proj-card:hover{border-color:var(--accent);background:#00c8ff08}.proj-icon-row{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:8px;font-size:24px}.proj-name{font-size:15.5px;font-weight:700;color:var(--white);margin-bottom:4px}.proj-desc{font-size:12.5px;color:var(--muted);margin-bottom:12px;min-height:16px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.proj-footer{display:flex;align-items:center;justify-content:space-between;padding-top:10px;border-top:1px solid rgba(30,58,95,.5);font-size:11.5px;color:var(--muted);margin-top:auto}.new-proj-card{background:transparent;border:2px dashed var(--border);border-radius:11px;padding:18px 20px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:160px;transition:border .2s,background .15s;color:var(--muted)}.new-proj-card:hover{border-color:var(--accent);background:#00c8ff08;color:var(--accent)}.new-proj-plus{width:36px;height:36px;border-radius:50%;background:#00c8ff14;border:1px solid var(--accent);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:300;color:var(--accent)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#04090fb3;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:22px 26px;width:480px;max-width:95vw;box-shadow:0 12px 40px #00000080}.modal h2{font-size:15.5px;color:var(--accent);text-transform:uppercase;letter-spacing:1px;margin:0 0 16px}.empty-state{text-align:center;padding:60px 20px;color:var(--muted);font-size:14.5px}.empty-state-title{font-size:16px;color:var(--text);margin-bottom:8px;font-weight:600}.error-banner{background:#ef444414;border:1px solid var(--red);border-left:4px solid var(--red);border-radius:6px;padding:10px 14px;color:var(--red);font-size:13.5px;margin-bottom:16px}.breadcrumb{display:flex;gap:6px;align-items:center;font-size:13.5px;color:var(--muted)}.breadcrumb a{color:var(--muted);text-decoration:none}.breadcrumb a:hover{color:var(--accent)}.breadcrumb .sep{color:var(--border)}.breadcrumb .current{color:var(--white);font-weight:600}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:22px}.tab{padding:10px 22px;font-size:13.5px;font-weight:600;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;transition:color .15s,border-color .15s;-webkit-user-select:none;user-select:none}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab .count{margin-left:6px;background:#00c8ff1a;color:var(--accent);border-radius:9px;padding:1px 7px;font-size:11.5px;font-weight:700}.data-table{width:100%;border-collapse:collapse;font-size:13.5px}.data-table th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);padding:10px 14px;border-bottom:1px solid var(--border);font-weight:700;background:var(--panel)}.data-table td{padding:12px 14px;border-bottom:1px solid var(--border);color:var(--text)}.data-table tr.clickable{cursor:pointer;transition:background .1s}.data-table tr.clickable:hover td{background:#00c8ff0a}.data-table .col-id{font-family:var(--font-mono);color:var(--muted);font-size:12.5px}.data-table .col-actions{text-align:right;white-space:nowrap}.data-table .row-action{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:5px;padding:4px 9px;font-size:12px;cursor:pointer;transition:all .12s}.data-table .row-action:hover{border-color:var(--red);color:var(--red)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.tag-chip{display:inline-block;font-family:var(--font-mono);font-size:12px;background:#6b83991f;border:1px solid var(--border);color:var(--muted);border-radius:5px;padding:2px 7px;margin-right:5px;margin-bottom:3px}.checkbox-row{display:flex;flex-direction:column;gap:6px;max-height:180px;overflow-y:auto;border:1px solid var(--border);background:var(--panel-2);border-radius:7px;padding:10px 12px}.checkbox-row label{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--text);cursor:pointer;text-transform:none;letter-spacing:0}.checkbox-row label .target-url{color:var(--muted);font-family:var(--font-mono);font-size:12.5px;margin-left:auto}.stage-row{display:grid;grid-template-columns:110px 1fr;gap:10px;align-items:center;margin-bottom:8px}.stage-row .stage-name{font-size:12.5px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}.stage-row select{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:7px;padding:7px 10px;font-family:var(--font-mono);font-size:13px}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:20px 24px;margin-bottom:20px}.card h2{font-size:14.5px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:1px;margin:0 0 16px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:12.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.8px}.field input,.field select,.field textarea{background:var(--panel-2);border:1px solid var(--border);border-radius:7px;padding:9px 12px;color:var(--text);outline:none;transition:border .15s;font-family:var(--font-mono);font-size:13.5px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.btn{padding:9px 18px;border-radius:7px;border:1px solid var(--accent);background:var(--accent);color:#001825;font-weight:600;cursor:pointer;transition:all .15s}.btn:hover{background:var(--accent-2);border-color:var(--accent-2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-secondary{background:transparent;color:var(--accent)}.btn-secondary:hover{background:#00c8ff14}.btn-danger{background:var(--red);border-color:var(--red);color:#fff}.btn-danger:hover{background:#d93838;border-color:#d93838}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--muted)}.btn-ghost:hover{color:var(--text);border-color:var(--accent)}.btn-row{display:flex;gap:10px;align-items:center}.pill{display:inline-block;padding:3px 10px;border-radius:12px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:1px}.pill-pending{background:#6b839926;color:var(--muted);border:1px solid var(--border)}.pill-running{background:#00c8ff1f;color:var(--accent);border:1px solid var(--accent);animation:pulse-outline 1.2s infinite}.pill-completed,.pill-successful{background:#10b98126;color:var(--green);border:1px solid var(--green)}.pill-failed{background:#ef444426;color:var(--red);border:1px solid var(--red)}.pill-cancelled,.pill-superseded,.pill-skipped{background:#6b83991a;color:var(--muted);border:1px solid var(--border)}.pill-paused{background:#ffa7261f;color:var(--orange);border:1px solid var(--orange)}.pill-open{background:#ef44441a;color:var(--red);border:1px solid var(--red)}.pill-fixed{background:#10b9811f;color:var(--green);border:1px solid var(--green)}.pill-wontfix,.pill-false_positive{background:#6b83991f;color:var(--muted);border:1px solid var(--border)}@keyframes pulse-outline{0%,to{box-shadow:0 0 #00c8ff66}50%{box-shadow:0 0 0 4px #00c8ff00}}.pt-pipeline{display:flex;align-items:center;gap:0;padding:8px 0 4px;overflow-x:auto}.pt-stage{display:flex;flex-direction:column;align-items:center;gap:6px;flex:1;min-width:90px}.pt-stage-num{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13.5px;font-weight:700;background:var(--border);color:var(--muted);transition:all .4s}.pt-stage-num.done{background:var(--green);color:#000}.pt-stage-num.running{background:var(--accent);color:#001825;animation:pulse-ring 1.2s infinite}.pt-stage-num.failed{background:var(--red);color:#fff}.pt-stage-num.skipped{background:#6b839933;color:var(--muted)}.pt-stage-lbl{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.8px;text-align:center;transition:color .3s}.pt-stage-lbl.active{color:var(--accent);font-weight:700}.pt-stage-lbl.done{color:var(--green)}.pt-stage-lbl.failed{color:var(--red)}.pt-connector{flex:1;height:2px;background:var(--border);transition:background .4s;min-width:20px;margin-bottom:18px}.pt-connector.done{background:var(--green)}@keyframes pulse-ring{0%{box-shadow:0 0 #00c8ff80}70%{box-shadow:0 0 0 10px #00c8ff00}to{box-shadow:0 0 #00c8ff00}}.pt-terminal{background:#070d14;border:1px solid #0d2540;border-radius:8px;padding:14px 16px;font-family:var(--font-mono);font-size:13px;color:#10b981;line-height:1.7;white-space:pre-wrap;overflow-y:auto;max-height:500px}.pt-terminal .t-cmd{color:#93c5fd;font-weight:700}.pt-terminal .t-label{color:var(--yellow);font-weight:700}.pt-terminal .t-success{color:#10b981}.pt-terminal .t-muted{color:#4a7090}.pt-terminal .t-error{color:var(--red);font-weight:700}.pt-terminal .t-warn{color:var(--orange)}.term-line{padding:1px 0}.term-seq{color:#4a7090;margin-right:8px}.finding{background:var(--panel-2);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:6px;padding:12px 16px;margin-bottom:10px}.finding.severity-critical{border-left-color:var(--sev-critical)}.finding.severity-high{border-left-color:var(--sev-high)}.finding.severity-medium{border-left-color:var(--sev-medium)}.finding.severity-low{border-left-color:var(--sev-low)}.finding-head{display:flex;gap:10px;align-items:center;margin-bottom:4px}.finding-head strong{color:var(--white);font-size:14.5px;font-weight:700}.finding-head .pill{margin-left:auto}.finding-meta{font-size:12.5px;color:var(--muted);font-family:var(--font-mono)}.muted{color:var(--muted)}.mono{font-family:var(--font-mono)}.row{display:flex;gap:14px;align-items:center}.hint{font-size:12.5px;color:var(--muted);margin-top:4px;font-family:var(--font-mono)}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{margin:16px 0 8px;color:var(--text)}.markdown-body h1{font-size:20px;border-bottom:1px solid var(--border);padding-bottom:4px}.markdown-body h2{font-size:17px}.markdown-body h3{font-size:14.5px}.markdown-body p{margin:6px 0 12px}.markdown-body ul,.markdown-body ol{margin:6px 0 12px 22px}.markdown-body li{margin:2px 0}.markdown-body code{background:var(--panel-2);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:12px;color:var(--orange)}.markdown-body pre{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:10px 12px;overflow-x:auto}.markdown-body pre code{background:transparent;border:none;padding:0;color:var(--text)}.markdown-body a{color:var(--accent);text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body blockquote{margin:8px 0;padding:4px 12px;border-left:3px solid var(--border);color:var(--muted)}.markdown-body table{border-collapse:collapse;margin:8px 0;font-size:12.5px}.markdown-body th,.markdown-body td{border:1px solid var(--border);padding:4px 10px;text-align:left}.markdown-body th{background:var(--panel-2)}.markdown-body hr{border:none;border-top:1px solid var(--border);margin:14px 0}
