:root{--bg:#f5f5f8;--surface:#fff;--surface-2:#efeff4;--border:#dedde6;--text:#17161f;--muted:#5f5d70;--accent:#6d28d9;--accent-soft:#efe9fd;--on-accent:#fff;--danger:#c3283d;--critical:#c3283d;--critical-soft:#fdecee;--warning:#a35c00;--warning-soft:#fff4e0;--info:#2563c9;--info-soft:#e8f0fd;--add:#e6f6ea;--add-strong:#b7e6c4;--del:#fdecee;--del-strong:#f6c2c9;--ok:#16824f;--select:#fff3bf;--radius:12px;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0f0f14;--surface:#17161e;--surface-2:#211f2a;--border:#2e2c3a;--text:#e9e8f0;--muted:#9a98ab;--accent:#b39dff;--accent-soft:#261f42;--on-accent:#160f30;--danger:#ff7b8b;--critical:#ff7b8b;--critical-soft:#3a1820;--warning:#f2b25a;--warning-soft:#33250f;--info:#7fb0ff;--info-soft:#172640;--add:#12301e;--add-strong:#1d5233;--del:#3a1820;--del-strong:#5e2330;--ok:#5fd39b;--select:#3b3313;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:15px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Inter,sans-serif}h1{letter-spacing:-.01em;margin:0 0 4px;font-size:24px}h2{margin:0 0 8px;font-size:17px}a{color:var(--accent)}code,.mono{font-family:var(--mono);font-size:13px}kbd{font-family:var(--mono);border:1px solid var(--border);background:var(--surface);border-bottom-width:2px;border-radius:4px;padding:1px 5px;font-size:11px}.muted{color:var(--muted)}.small{font-size:13px}.error{color:var(--danger)}.center{align-content:center;place-items:center;gap:8px;min-height:100vh;padding:16px;display:grid}.empty{text-align:center;padding:24px 4px}input,textarea,select{font:inherit;color:var(--text)}input:not([type=checkbox]),textarea{border:1px solid var(--border);background:var(--surface);border-radius:9px;width:100%;padding:9px 12px}input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:11px;font-weight:650}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:8px 16px;font-weight:550;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:default}.btn-sm{padding:5px 11px;font-size:13px}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}.link-btn{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.link-btn:hover{color:var(--text)}.link-btn.small{font-size:13px}.link-btn.accent{color:var(--accent);font-weight:600}.icon-btn{width:30px;height:30px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;flex-shrink:0;place-items:center;font-size:15px;display:inline-grid}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.tiny{width:20px;height:20px;font-size:11px}.select-sm{border:1px solid var(--border);background:var(--surface);border-radius:8px;max-width:100%;padding:5px 8px;font-size:13px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.check{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.shell{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:18px;padding:10px 18px;display:flex}.logo{color:var(--text);align-items:center;gap:8px;font-weight:700;text-decoration:none;display:inline-flex}.logo.big{margin:0;font-size:24px}.nav{flex:1;gap:4px;display:flex}.nav a{color:var(--muted);border-radius:7px;padding:5px 10px;font-size:14px;font-weight:550;text-decoration:none}.nav a:hover{color:var(--text);background:var(--surface-2)}.nav a.active{color:var(--accent);background:var(--accent-soft)}.login{gap:10px;width:100%;max-width:400px;padding:28px;display:grid}.login p{margin:0 0 6px}.workspace{flex:1;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:16px;height:calc(100vh - 53px);padding:16px;display:grid}.workspace.solo{grid-template-columns:minmax(0,900px);justify-content:center}.pane{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;min-height:0;display:flex;overflow:hidden}.results-pane{padding:14px 16px;overflow-y:auto}.pane-head{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:10px 12px;display:flex}.pane-head.wrap{flex-wrap:wrap}.pane-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.pane-foot{border-top:1px solid var(--border);align-items:center;gap:12px;padding:10px 12px;display:flex}.pane-foot .btn-primary{margin-left:auto}.lang-tag{background:var(--surface-2);color:var(--muted);border-radius:99px;margin-left:8px;padding:1px 8px;font-size:12px;font-weight:550}.filename{background:var(--surface-2);white-space:nowrap;text-overflow:ellipsis;border-radius:6px;align-items:center;gap:2px;max-width:220px;padding:2px 4px 2px 8px;display:inline-flex;overflow:hidden}.file-btn{position:relative;overflow:hidden}.file-btn input{opacity:0;cursor:pointer;position:absolute;inset:0}.saved{margin:10px 0 0}.editor{flex:1;min-height:320px;display:flex;overflow:hidden}.gutter{text-align:right;color:var(--muted);background:var(--surface-2);-webkit-user-select:none;user-select:none;flex-shrink:0;min-width:44px;padding:12px 8px 12px 12px;line-height:20px;overflow:hidden}.editor-input{resize:none;white-space:pre;tab-size:4;flex:1;line-height:20px;overflow:auto;background:var(--surface)!important;border:0!important;border-radius:0!important;padding:12px!important}.editor-input:focus{outline:none}.codeview{flex:1;padding:8px 0;line-height:20px;position:relative;overflow:auto}.cv-row{min-width:max-content;display:flex}.cv-num{text-align:right;width:46px;color:var(--muted);-webkit-user-select:none;user-select:none;flex-shrink:0;padding-right:8px}.cv-mark{background:0 0;border:0;border-radius:50%;flex-shrink:0;width:10px;height:10px;margin:5px 8px 0 2px;padding:0}button.cv-mark{cursor:pointer}.cv-text{white-space:pre;padding-right:16px}.sev-bg-critical{background:var(--critical-soft)}.sev-bg-warning{background:var(--warning-soft)}.sev-bg-info{background:var(--info-soft)}.sev-dot-critical{background:var(--critical)}.sev-dot-warning{background:var(--warning)}.sev-dot-info{background:var(--info)}.cv-selected{box-shadow:inset 3px 0 0 var(--accent);background:var(--select)}.stages{gap:6px;margin-bottom:10px;display:grid}.stage{align-items:center;gap:8px;font-size:14px;display:flex}.stage-icon{text-align:center;width:20px;color:var(--accent)}.spin{animation:1s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spin{animation:none}}.notice{background:var(--surface-2);border-radius:9px;margin:8px 0;padding:8px 12px;font-size:14px}.notice-error{background:var(--critical-soft);color:var(--critical)}.tabs{border-bottom:1px solid var(--border);gap:2px;margin:12px 0 10px;display:flex}.tab{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 12px;font-weight:600}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.count{background:var(--surface-2);color:var(--muted);border-radius:99px;margin-left:4px;padding:0 7px;font-size:12px;font-weight:600}.plus{color:var(--ok)}.minus{color:var(--critical)}.filters{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);color:var(--muted);font:inherit;cursor:pointer;border-radius:99px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;font-weight:550;display:inline-flex}.chip.on.chip-critical{border-color:var(--critical);color:var(--critical);background:var(--critical-soft)}.chip.on.chip-warning{border-color:var(--warning);color:var(--warning);background:var(--warning-soft)}.chip.on.chip-info{border-color:var(--info);color:var(--info);background:var(--info-soft)}.chip-n{font-weight:700}.filters .select-sm{margin-left:auto}.sev{letter-spacing:.03em;text-transform:uppercase;border-radius:6px;flex-shrink:0;padding:1px 8px;font-size:11px;font-weight:700}.sev-critical{background:var(--critical-soft);color:var(--critical)}.sev-warning{background:var(--warning-soft);color:var(--warning)}.sev-info{background:var(--info-soft);color:var(--info)}.issues{grid-template-columns:minmax(0,1fr);gap:8px;margin:0;padding:0;list-style:none;display:grid}.issue{border:1px solid var(--border);background:var(--surface);border-radius:10px;min-width:0;animation:.18s ease-out rise}@keyframes rise{0%{opacity:0;transform:translateY(4px)}}@media (prefers-reduced-motion:reduce){.issue{animation:none}}.issue.open{border-color:var(--accent)}.issue-head{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:10px 12px 2px;display:flex}.issue-title{flex:1;min-width:0;font-weight:600}.issue-line{color:var(--muted)}.issue-meta{flex-wrap:wrap;align-items:center;gap:8px;padding:0 12px 10px;display:flex}.issue-meta code{color:var(--muted)}.source{border-radius:5px;padding:0 6px;font-size:11px;font-weight:700}.source-rule{background:var(--surface-2);color:var(--muted)}.source-ai{background:var(--accent-soft);color:var(--accent)}.fix-tag{background:var(--add);color:var(--ok);border-radius:5px;padding:0 6px;font-size:11px;font-weight:700}.issue-body{border-top:1px solid var(--border);padding:0 12px 12px}.issue-body p{margin:10px 0;font-size:14px}.suggestion{color:var(--text)}.snippet{background:var(--surface-2);border-radius:8px;margin:0;padding:8px 10px;overflow-x:auto}.diff-pane{gap:10px;display:grid}.diff-tools{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.diff-tools>.muted{flex:1}.seg{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.seg button{background:var(--surface);color:var(--muted);font:inherit;cursor:pointer;border:0;padding:4px 10px;font-size:13px}.seg button.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.diff{border:1px solid var(--border);border-radius:9px;overflow-x:auto}.diff-table{border-collapse:collapse;width:100%;line-height:20px}.diff-split{table-layout:fixed}.diff-split .dn{width:40px}.diff-split .dc{width:calc(50% - 40px);overflow:hidden}.dn{text-align:right;color:var(--muted);-webkit-user-select:none;user-select:none;vertical-align:top;white-space:nowrap;width:1%;padding:0 8px}.dc{white-space:pre;vertical-align:top;padding:0 10px 0 6px}.diff-split .dc{white-space:pre-wrap;overflow-wrap:anywhere}.no-numbers .dn{display:none}.dn.del,.dc.del{background:var(--del)}.dn.add,.dc.add{background:var(--add)}.dc.del mark.word{background:var(--del-strong);color:inherit;border-radius:2px}.dc.add mark.word{background:var(--add-strong);color:inherit;border-radius:2px}.dn.empty,.dc.empty{background:var(--surface-2)}.sign{width:14px;color:var(--muted);-webkit-user-select:none;user-select:none;display:inline-block}.gap{background:var(--surface-2);text-align:center;padding:2px 10px}.issue-body .diff{margin-top:4px}.diff-empty{margin:8px 0}.page{width:100%;max-width:920px;margin:0 auto;padding:24px 16px 48px}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.report-list,.rule-list{gap:8px;margin:16px 0;padding:0;list-style:none;display:grid}.report-row{align-items:center;gap:12px;padding:10px 12px;display:flex}.report-link{min-width:0;color:var(--text);flex:1;text-decoration:none;display:grid}.report-title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.report-counts{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.count-badge{align-items:center;gap:4px;font-size:13px;font-weight:600;display:inline-flex}.rule-group{margin-top:22px}.rule{padding:12px 14px}.rule p{margin:6px 0 0;font-size:14px}.rule-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.rule-head code{color:var(--muted)}@media (width<=900px){.workspace{grid-template-columns:minmax(0,1fr);height:auto;padding:12px}.workspace.solo{grid-template-columns:minmax(0,1fr)}.code-pane{max-height:70vh}.results-pane{overflow:visible}}@media (width<=600px){.topbar{gap:10px;padding:10px 12px}.logo-text,.hide-narrow{display:none}.page-head{flex-direction:column}.report-row{flex-wrap:wrap}.report-counts{justify-content:flex-start}}
