:root{--font-ui: "Segoe UI", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-mono: "Cascadia Mono", "Consolas", "SFMono-Regular", ui-monospace, monospace;--ok: #18935a;--ok-fg: #0f7a49;--warn: #c2810b;--warn-fg: #a86c00;--err: #d8453a;--err-fg: #c5362c;--info: #2f6fe0;--info-fg: #2a63c9;--row-h: 34px;--pad-card: 18px;--gap: 14px;--fs-base: 13px;--fs-sm: 12px;--fs-xs: 11px}:root,[data-theme=light]{--bg: #eef1f5;--bg-grid: #e6eaf0;--surface: #ffffff;--surface-2: #f7f9fc;--surface-3: #eef2f7;--raised: #ffffff;--border: #dce2ea;--border-strong: #c5cdd8;--text: #1c2530;--text-2: #51606f;--text-3: #8492a3;--accent: #3358d4;--accent-fg: #ffffff;--accent-weak: #eaeefb;--accent-line: #c5d0f5;--ok-bg: #e7f4ec;--ok-bd: #b8e0c8;--warn-bg: #fbf2dc;--warn-bd: #ecd49a;--err-bg: #fce9e7;--err-bd: #f1c1bc;--info-bg: #e8f0fd;--info-bd: #bfd5f5;--shadow-sm: 0 1px 2px rgba(20,30,45,.06), 0 1px 1px rgba(20,30,45,.04);--shadow-md: 0 4px 16px rgba(20,30,45,.1), 0 1px 3px rgba(20,30,45,.06);--shadow-pop: 0 12px 40px rgba(20,30,45,.18)}[data-theme=dark]{--bg: #0c1016;--bg-grid: #141a23;--surface: #141a22;--surface-2: #1a212b;--surface-3: #222c38;--raised: #1a212b;--border: #28323f;--border-strong: #3a4757;--text: #e4e9f0;--text-2: #9fb0c2;--text-3: #6b7c8f;--accent: #5b82f6;--accent-fg: #0b0f15;--accent-weak: #1a2540;--accent-line: #2c3e6b;--ok: #34c27e;--ok-fg: #43d089;--warn: #e0a82e;--warn-fg: #edb84a;--err: #f0594d;--err-fg: #ff6b5e;--info: #5b82f6;--info-fg: #6f93ff;--ok-bg: #102a1d;--ok-bd: #1d4631;--warn-bg: #2c2410;--warn-bd: #4d3f18;--err-bg: #2e1614;--err-bd: #532723;--info-bg: #15213c;--info-bd: #28396a;--shadow-sm: 0 1px 2px rgba(0,0,0,.4);--shadow-md: 0 6px 22px rgba(0,0,0,.5);--shadow-pop: 0 16px 48px rgba(0,0,0,.6)}[data-density=compact]{--row-h: 28px;--pad-card: 13px;--gap: 10px;--fs-base: 12px;--fs-sm: 11px;--fs-xs: 10px}[data-density=comfortable]{--row-h: 40px;--pad-card: 22px;--gap: 18px;--fs-base: 14px;--fs-sm: 13px;--fs-xs: 11px}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--font-ui);font-size:var(--fs-base);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.mono{font-family:var(--font-mono);font-feature-settings:"zero" 1}::selection{background:var(--accent-weak)}*::-webkit-scrollbar{width:11px;height:11px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:6px;border:3px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:var(--text-3);background-clip:content-box}*::-webkit-scrollbar-track{background:transparent}.app{display:grid;grid-template-columns:auto 1fr;height:100vh;overflow:hidden}.app.no-rail{grid-template-columns:1fr}.rail{width:260px;flex:none;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;transition:width .18s ease}.rail.collapsed{width:60px}.rail-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border);height:56px;flex:none}.brand-mark{width:30px;height:30px;border-radius:7px;flex:none;background:linear-gradient(135deg,var(--accent),color-mix(in oklab,var(--accent) 60%,#7a4ff0));display:grid;place-items:center;color:#fff;font-weight:700;font-size:14px;box-shadow:var(--shadow-sm)}.brand-name{font-weight:600;font-size:14px;letter-spacing:.2px;white-space:nowrap}.brand-sub{font-size:10px;color:var(--text-3);letter-spacing:.5px;text-transform:uppercase}.rail-scroll{flex:1;overflow-y:auto;padding:10px 10px 18px}.rail-group-label{font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--text-3);padding:14px 10px 6px;font-weight:600}.navitem{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:7px;color:var(--text-2);cursor:pointer;font-size:var(--fs-sm);position:relative;-webkit-user-select:none;user-select:none;border:1px solid transparent}.navitem:hover{background:var(--surface-2);color:var(--text)}.navitem.active{background:var(--accent-weak);color:var(--text);border-color:var(--accent-line);font-weight:500}.navitem .ni-ico{flex:none;color:var(--text-3);display:grid;place-items:center}.navitem.active .ni-ico{color:var(--accent)}.navitem .ni-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.navitem .ni-count{font-family:var(--font-mono);font-size:10px;min-width:18px;height:17px;padding:0 5px;border-radius:9px;display:grid;place-items:center;background:var(--surface-3);color:var(--text-2)}.navitem .ni-count.warn{background:var(--warn-bg);color:var(--warn-fg)}.navitem .ni-count.err{background:var(--err-bg);color:var(--err-fg)}.navitem .ni-count.ok{background:var(--ok-bg);color:var(--ok-fg)}.main{display:flex;flex-direction:column;min-width:0;overflow:hidden}.topbar{height:56px;flex:none;border-bottom:1px solid var(--border);background:var(--surface);display:flex;align-items:center;gap:14px;padding:0 18px}.crumb{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--text-2);min-width:0}.crumb .seg{white-space:nowrap}.crumb .seg.cur{color:var(--text);font-weight:500}.crumb .sep{color:var(--text-3)}.crumb .path{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-spacer{flex:1}.iconbtn{width:32px;height:32px;border-radius:7px;border:1px solid var(--border);background:var(--surface);color:var(--text-2);display:grid;place-items:center;cursor:pointer}.iconbtn:hover{background:var(--surface-2);color:var(--text);border-color:var(--border-strong)}.content{flex:1;overflow-y:auto;scroll-behavior:smooth}.content-inner{max-width:1180px;margin:0 auto;padding:22px 26px 80px}.btn{font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:500;display:inline-flex;align-items:center;gap:7px;padding:0 14px;height:34px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,transform .04s}.btn:hover{background:var(--surface-2);border-color:var(--text-3)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.btn.primary:hover{background:color-mix(in oklab,var(--accent) 88%,#000)}.btn.lg{height:42px;padding:0 22px;font-size:var(--fs-base)}.btn.sm{height:28px;padding:0 10px;font-size:var(--fs-xs);border-radius:6px}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover{background:var(--surface-2);border-color:var(--border)}.btn:disabled{opacity:.5;cursor:not-allowed}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-sm)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-sm);margin-bottom:var(--gap);overflow:hidden;scroll-margin-top:16px}.panel-head{display:flex;align-items:center;gap:12px;padding:12px var(--pad-card);cursor:pointer;-webkit-user-select:none;user-select:none;border-bottom:1px solid transparent}.panel.open .panel-head{border-bottom-color:var(--border)}.panel-head:hover{background:var(--surface-2)}.panel-chev{color:var(--text-3);transition:transform .16s ease;flex:none}.panel.open .panel-chev{transform:rotate(90deg)}.panel-ico{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex:none;background:var(--surface-3);color:var(--text-2)}.panel-title{font-size:var(--fs-base);font-weight:600;flex:none;white-space:nowrap}.panel-sub{font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap}.panel-head-spacer{flex:1}.panel-body{padding:var(--pad-card)}.panel-body.flush{padding:0}.badge{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 8px;border-radius:6px;font-size:var(--fs-xs);font-weight:600;line-height:1;white-space:nowrap;background:var(--surface-3);color:var(--text-2);border:1px solid transparent}.badge.mono{font-family:var(--font-mono);font-weight:500}.badge.ok{background:var(--ok-bg);color:var(--ok-fg);border-color:var(--ok-bd)}.badge.warn{background:var(--warn-bg);color:var(--warn-fg);border-color:var(--warn-bd)}.badge.err{background:var(--err-bg);color:var(--err-fg);border-color:var(--err-bd)}.badge.info{background:var(--info-bg);color:var(--info-fg);border-color:var(--info-bd)}.badge.accent{background:var(--accent-weak);color:var(--accent);border-color:var(--accent-line)}.badge.lg{height:24px;padding:0 10px;font-size:var(--fs-sm)}.dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--text-3)}.dot.ok{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}.dot.warn{background:var(--warn);box-shadow:0 0 0 3px var(--warn-bg)}.dot.err{background:var(--err);box-shadow:0 0 0 3px var(--err-bg)}.dot.info{background:var(--info);box-shadow:0 0 0 3px var(--info-bg)}.dot.pulse{animation:dotpulse 1.4s ease-in-out infinite}@keyframes dotpulse{0%,to{opacity:1}50%{opacity:.35}}.sev{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:600}.sev.err{color:var(--err-fg)}.sev.warn{color:var(--warn-fg)}.sev.info{color:var(--info-fg)}.sev.ok{color:var(--ok-fg)}.tbl{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.tbl thead th{text-align:left;font-weight:600;color:var(--text-3);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.4px;padding:9px 12px;background:var(--surface-2);border-bottom:1px solid var(--border);position:sticky;top:0;white-space:nowrap}.tbl tbody td{padding:0 12px;height:var(--row-h);border-bottom:1px solid var(--border);vertical-align:middle;color:var(--text-2)}.tbl tbody tr:last-child td{border-bottom:none}.tbl tbody tr:hover td{background:var(--surface-2)}.tbl td.num,.tbl th.num{text-align:right;font-family:var(--font-mono)}.tbl td .file-cell{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text)}.tbl td.rule-cell{color:var(--text);font-weight:500}.tbl tr.err-row td:first-child{box-shadow:inset 3px 0 0 var(--err)}.tbl tr.warn-row td:first-child{box-shadow:inset 3px 0 0 var(--warn)}.table-wrap{overflow-x:auto}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;background:var(--border);border-radius:10px;overflow:hidden;border:1px solid var(--border)}.metric{background:var(--surface);padding:12px 16px;display:flex;flex-direction:column;gap:4px}.metric .m-label{font-size:var(--fs-xs);color:var(--text-3);display:flex;align-items:center;gap:6px}.metric .m-value{font-family:var(--font-mono);font-size:22px;font-weight:600;line-height:1;letter-spacing:-.5px}.metric .m-value.ok{color:var(--ok-fg)}.metric .m-value.warn{color:var(--warn-fg)}.metric .m-value.err{color:var(--err-fg)}.metric .m-unit{font-size:var(--fs-xs);color:var(--text-3);font-family:var(--font-ui);font-weight:400}.flist{display:flex;flex-direction:column}.frow{display:flex;align-items:center;gap:10px;height:var(--row-h);padding:0 12px;border-bottom:1px solid var(--border);font-size:var(--fs-sm)}.frow:last-child{border-bottom:none}.frow:hover{background:var(--surface-2)}.frow.conflict{background:var(--err-bg)}.frow.conflict:hover{background:color-mix(in oklab,var(--err-bg) 80%,var(--err))}.frow .fpath{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.frow .fdir{color:var(--text-3)}.chg-tag{font-family:var(--font-mono);font-size:10px;font-weight:600;width:18px;height:18px;border-radius:4px;display:grid;place-items:center;flex:none}.chg-tag.A{background:var(--ok-bg);color:var(--ok-fg)}.chg-tag.M{background:var(--info-bg);color:var(--info-fg)}.chg-tag.D{background:var(--err-bg);color:var(--err-fg)}.diffstat{font-family:var(--font-mono);font-size:var(--fs-xs);display:flex;gap:6px;flex:none}.diffstat .add{color:var(--ok-fg)}.diffstat .del{color:var(--err-fg)}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip{font-family:var(--font-mono);font-size:var(--fs-xs);padding:4px 9px;border-radius:6px;border:1px solid var(--border);background:var(--surface-2);color:var(--text-2);display:inline-flex;align-items:center;gap:6px}.chip .cdot{width:7px;height:7px;border-radius:50%;flex:none}.chip.result{background:var(--ok-bg);border-color:var(--ok-bd);color:var(--ok-fg)}.chip.result .cdot{background:var(--ok)}.chip.mid{background:var(--info-bg);border-color:var(--info-bd);color:var(--info-fg)}.chip.mid .cdot{background:var(--info)}.chip.src{background:var(--surface-3);border-color:var(--border);color:var(--text-2)}.chip.src .cdot{background:var(--text-3)}.chip.temp{background:color-mix(in oklab,#7a4ff0 14%,var(--surface));border-color:color-mix(in oklab,#7a4ff0 35%,var(--surface));color:color-mix(in oklab,#7a4ff0 70%,var(--text))}.chip.temp .cdot{background:#7a4ff0}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:var(--fs-xs);color:var(--text-2)}.legend .lg-item{display:inline-flex;align-items:center;gap:6px}.legend .lg-dot{width:8px;height:8px;border-radius:50%}.okstate{display:flex;align-items:center;gap:10px;color:var(--text-2);font-size:var(--fs-sm);padding:4px 2px}.okstate .okic{color:var(--ok)}.codeblk{font-family:var(--font-mono);font-size:var(--fs-xs);background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;color:var(--text-2);overflow-x:auto;line-height:1.6;white-space:pre}.codeblk .kw{color:var(--accent);font-weight:600}.codeblk .err-tok{background:var(--err-bg);color:var(--err-fg);border-radius:3px;padding:0 2px}.subhead{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);font-weight:600;margin:0 0 9px;display:flex;align-items:center;gap:8px}.subhead:after{content:"";flex:1;height:1px;background:var(--border)}.divline{height:1px;background:var(--border);margin:var(--gap) 0}.dep-graph{display:flex;flex-direction:column;gap:0}.dep-lane{display:grid;grid-template-columns:90px 1fr;gap:14px;align-items:start;padding:10px 0;border-bottom:1px dashed var(--border)}.dep-lane:last-child{border-bottom:none}.dep-lane-label{font-size:var(--fs-xs);color:var(--text-3);text-transform:uppercase;letter-spacing:.5px;padding-top:6px}.dep-nodes{display:flex;flex-wrap:wrap;gap:8px}.dep-node{font-family:var(--font-mono);font-size:var(--fs-xs);padding:5px 10px;border-radius:7px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);display:inline-flex;align-items:center;gap:7px}.dep-node.focus{background:var(--accent-weak);border-color:var(--accent-line);color:var(--accent);font-weight:600}.dep-node .nq{font-size:10px;color:var(--text-3)}.fade-in{opacity:1;animation:fadeIn .3s ease}@keyframes fadeIn{0%{transform:translateY(6px)}to{transform:none}}.debug-drawer{position:absolute;left:0;right:0;bottom:0;height:0;overflow:hidden;background:var(--surface);border-top:1px solid var(--border);transition:height .2s ease;z-index:30;display:flex;flex-direction:column}[data-theme=dark] .debug-drawer{background:#0a0d12}.debug-drawer.open{height:230px;box-shadow:0 -8px 30px #0000001f}.dbg-head{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid var(--border);font-size:var(--fs-xs);font-weight:600;color:var(--text-2);flex:none}.dbg-body{flex:1;overflow-y:auto;padding:8px 14px;font-size:var(--fs-xs);line-height:1.85}.dbg-line{display:flex;gap:12px}.dbg-ts{color:var(--text-3);flex:none;width:56px}.dbg-tag{flex:none;font-weight:600}.dbg-tag.info{color:var(--info-fg)}.dbg-tag.rule{color:var(--accent)}.dbg-tag.warn{color:var(--warn-fg)}.dbg-tag.err{color:var(--err-fg)}.dbg-msg{color:var(--text-2)}.dbg-cursor{color:var(--accent);animation:blink 1s step-start infinite}@keyframes blink{50%{opacity:0}}.main{position:relative}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.mobile-menu-btn{display:none!important}.rail-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:199;background:#0e141e00;pointer-events:none;transition:background .24s ease}.rail-overlay.shown{background:#0e141e61;pointer-events:auto}[data-theme=dark] .rail-overlay.shown{background:#0000008c}@media (max-width: 768px){.app{grid-template-columns:1fr!important}.rail{position:fixed!important;inset:0 auto 0 0;z-index:200;width:260px!important;transform:translate(-100%);transition:transform .24s cubic-bezier(.22,.61,.36,1),box-shadow .24s ease;border-right-color:var(--border-strong)}.rail.mobile-open{transform:none;box-shadow:var(--shadow-pop)}.mobile-menu-btn{display:grid!important}.topbar{padding:0 10px;gap:8px}.crumb .path{display:none}.content-inner{padding:14px 12px 60px}.metrics{grid-template-columns:repeat(2,1fr)}.dep-lane{grid-template-columns:70px 1fr}*::-webkit-scrollbar{width:5px;height:5px}}@media (max-width: 480px){.crumb .seg:not(.cur){display:none}.crumb .sep{display:none}.content-inner{padding:12px 10px 60px}.tbl thead th,.tbl tbody td{padding-left:8px;padding-right:8px}.panel-title{white-space:normal}.panel-sub{display:none}.btn{height:38px}.btn.sm{height:32px}}.home-wrap{max-width:760px;margin:0 auto;padding:48px 26px 80px}.home-hero{text-align:center;margin-bottom:26px}.hero-badge{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-xs);font-weight:500;color:var(--text-2);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:5px 12px;box-shadow:var(--shadow-sm);margin-bottom:18px;white-space:nowrap}.hero-title{font-size:30px;font-weight:700;letter-spacing:-.5px;margin:0 0 8px}.hero-sub{font-size:var(--fs-base);color:var(--text-2);margin:0 auto;max-width:520px;line-height:1.6}.home-card{padding:22px}.field-label{display:flex;align-items:center;gap:7px;font-size:var(--fs-sm);font-weight:600;color:var(--text-2);margin-bottom:9px}.path-input{display:flex;align-items:center;gap:0;border:1px solid var(--border-strong);border-radius:9px;background:var(--surface-2);overflow:hidden;transition:border-color .14s,box-shadow .14s}.path-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak);background:var(--surface)}.pi-proto{padding:0 12px;height:44px;display:grid;place-items:center;font-size:var(--fs-xs);color:var(--text-3);background:var(--surface-3);border-right:1px solid var(--border);font-weight:600}.pi-field{flex:1;border:none;outline:none;background:transparent;height:44px;padding:0 14px;font-size:var(--fs-sm);color:var(--text);min-width:0}.pi-detect{display:flex;align-items:center;gap:6px;padding:0 14px;font-size:var(--fs-xs);color:var(--ok-fg);font-weight:600;white-space:nowrap}.pi-detect.muted{color:var(--text-3);font-weight:400}.route-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}.route-card{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2);cursor:pointer;position:relative;transition:border-color .14s,background .14s,transform .05s}.route-card:hover{border-color:var(--border-strong);background:var(--surface)}.route-card:active{transform:translateY(1px)}.route-card.active{border-color:var(--accent-line);background:var(--accent-weak)}.rc-ico{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border);flex:none}.route-card.active .rc-ico{background:var(--surface)}.rc-body{display:flex;flex-direction:column;gap:2px;min-width:0}.rc-name{font-size:var(--fs-xs);font-weight:600;color:var(--text);line-height:1.3;white-space:nowrap}.rc-kw{font-size:10px;color:var(--text-3);white-space:nowrap}.rc-flag{position:absolute;top:8px;right:8px;width:16px;height:16px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center}.route-hint{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--text-3);margin:11px 2px 0;white-space:nowrap}.toggles{display:flex;flex-direction:column;gap:8px}.row-toggle{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2);cursor:pointer;transition:border-color .14s,background .14s}.row-toggle:hover{border-color:var(--border-strong)}.rt-ico{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border);color:var(--text-2);flex:none}.rt-text{flex:1;display:flex;flex-direction:column;gap:2px}.rt-label{font-size:var(--fs-sm);font-weight:600}.rt-desc{font-size:var(--fs-xs);color:var(--text-3)}.switch{width:38px;height:22px;border-radius:999px;background:var(--surface-3);border:1px solid var(--border-strong);position:relative;flex:none;transition:background .16s,border-color .16s}.switch .knob{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-sm);transition:left .16s}.switch.on{background:var(--accent);border-color:var(--accent)}.switch.on .knob{left:18px;background:#fff}[data-theme=dark] .switch .knob{background:var(--text-2)}[data-theme=dark] .switch.on .knob{background:#fff}.home-actions{display:flex;align-items:center;gap:14px;margin-top:20px}.ha-meta{flex:1;font-size:var(--fs-xs);color:var(--text-3)}.recent-block{margin-top:30px}.recent-list{padding:4px}.recent-row{display:grid;grid-template-columns:12px 64px 1fr auto auto auto;gap:14px;align-items:center;padding:9px 12px;border-radius:8px;cursor:pointer;font-size:var(--fs-sm)}.recent-row:hover{background:var(--surface-2)}.rr-rev{font-size:var(--fs-xs);color:var(--accent);font-weight:600}.rr-repo{font-size:var(--fs-xs);color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rr-wf{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--text-2);white-space:nowrap}.rr-who{font-size:var(--fs-xs);color:var(--text-3)}.rr-when{font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap}@media (max-width: 640px){.route-grid{grid-template-columns:1fr}.recent-row{grid-template-columns:12px 1fr auto}.rr-repo,.rr-wf,.rr-who{display:none}}@media (max-width: 480px){.home-wrap{padding:20px 12px 60px}.hero-title{font-size:22px;letter-spacing:-.3px}.hero-sub{font-size:var(--fs-sm)}.home-card{padding:16px}.home-actions{flex-direction:column;align-items:stretch;gap:10px}.home-actions .btn{width:100%;justify-content:center}.ha-meta{text-align:center}.pi-proto{border-radius:9px 0 0 9px}.route-hint{white-space:normal}.recent-block{margin-top:20px}}.status-hero{padding:0;margin-bottom:var(--gap);overflow:hidden;display:grid;grid-template-columns:1fr}.status-hero.ok{box-shadow:var(--shadow-sm),inset 4px 0 0 var(--ok)}.status-hero.err{box-shadow:var(--shadow-sm),inset 4px 0 0 var(--err)}.status-hero.warn{box-shadow:var(--shadow-sm),inset 4px 0 0 var(--warn)}.sh-main{display:flex;align-items:flex-start;gap:16px;padding:var(--pad-card) calc(var(--pad-card) + 4px)}.sh-badge{width:52px;height:52px;border-radius:13px;display:grid;place-items:center;flex:none;color:#fff}.sh-badge.ok{background:var(--ok);box-shadow:0 4px 14px color-mix(in oklab,var(--ok) 40%,transparent)}.sh-badge.err{background:var(--err);box-shadow:0 4px 14px color-mix(in oklab,var(--err) 40%,transparent)}.sh-badge.warn{background:var(--warn);box-shadow:0 4px 14px color-mix(in oklab,var(--warn) 40%,transparent)}.sh-text{flex:1;min-width:0}.sh-title-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.sh-title{font-size:19px;font-weight:700;margin:0;letter-spacing:-.3px;white-space:nowrap}.sh-desc{font-size:var(--fs-sm);color:var(--text-2);margin:5px 0 10px}.sh-meta{display:flex;align-items:center;gap:9px;font-size:var(--fs-xs);color:var(--text-2);flex-wrap:wrap}.sh-meta span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.sh-meta .sh-sep{color:var(--text-3)}.sh-metrics{border-radius:0;border-left:none;border-right:none;border-bottom:none}.mini-counts{display:inline-flex;gap:10px;margin-right:6px}.cat-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px}.cat-card{border:1px solid var(--border);border-radius:10px;padding:11px 13px;background:var(--surface-2);cursor:pointer;transition:border-color .14s,transform .05s,background .14s}.cat-card:hover{border-color:var(--border-strong);transform:translateY(-1px);background:var(--surface)}.cat-card.err{box-shadow:inset 0 0 0 1px var(--err-bd)}.cat-card.warn{box-shadow:inset 0 0 0 1px var(--warn-bd)}.cc-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.cc-ico{width:28px;height:28px;border-radius:7px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border);color:var(--text-2)}.cc-label{font-size:var(--fs-sm);font-weight:600}.cc-stat{font-size:var(--fs-xs);color:var(--text-3);margin-top:2px}.cat-card.err .cc-stat{color:var(--err-fg)}.cat-card.warn .cc-stat{color:var(--warn-fg)}.ib-head{display:flex;align-items:center;gap:10px;padding:11px var(--pad-card);border-bottom:1px solid var(--border);font-size:var(--fs-sm);font-weight:600;color:var(--text-2)}.ai-body{background:linear-gradient(180deg,color-mix(in oklab,var(--accent) 5%,var(--surface)),var(--surface))}.ai-summary{display:flex;gap:12px;padding:4px 0 16px}.ai-spark{width:30px;height:30px;border-radius:8px;flex:none;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--accent),color-mix(in oklab,var(--accent) 55%,#9b5cf0));box-shadow:var(--shadow-sm)}.ai-summary p{margin:0;font-size:var(--fs-sm);line-height:1.7;color:var(--text)}.ai-findings{display:flex;flex-direction:column;gap:8px}.ai-finding{display:flex;gap:12px;padding:11px 13px;border-radius:10px;border:1px solid var(--border);background:var(--surface)}.ai-finding>.sev{flex:none;padding-top:1px}.ai-finding.err{border-color:var(--err-bd);background:color-mix(in oklab,var(--err-bg) 50%,var(--surface))}.ai-finding.warn{border-color:var(--warn-bd);background:color-mix(in oklab,var(--warn-bg) 45%,var(--surface))}.aif-body{flex:1}.aif-title{font-size:var(--fs-sm);font-weight:600;margin-bottom:3px}.aif-text{font-size:var(--fs-xs);color:var(--text-2);line-height:1.6}@media (max-width: 600px){.sh-main{flex-direction:column;gap:10px;padding:var(--pad-card)}.sh-badge{width:42px;height:42px;border-radius:10px}.sh-title{font-size:16px}.sh-meta{gap:6px}.cat-board{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}.ai-finding{padding:9px 10px}.ai-summary{flex-direction:column;gap:8px}}.mini-counts{display:inline-flex;gap:10px;align-items:center}.pas-list{display:flex;flex-direction:column}.pas-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:11px var(--pad-card);border:none;border-bottom:1px solid var(--border);background:transparent;cursor:pointer;font-family:var(--font-ui);color:var(--text)}.pas-row:last-child{border-bottom:none}.pas-row:hover{background:var(--surface-2)}.pas-ico{width:30px;height:30px;border-radius:8px;flex:none;display:grid;place-items:center;background:var(--surface-3);color:var(--text-2)}.pas-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.pas-name{font-size:var(--fs-sm);color:var(--text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pas-sub{font-size:var(--fs-xs);color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pas-count{font-size:var(--fs-xs);color:var(--text-3);flex:none}.pas-tags{display:flex;align-items:center;gap:10px;flex:none}.pas-grp{display:inline-flex;align-items:center;gap:7px}.pas-grp-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);font-weight:600}.pas-div{width:1px;height:16px;background:var(--border);flex:none}.pas-chev{color:var(--text-3);flex:none}.pas-row:hover .pas-chev{color:var(--text-2)}.sd-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;justify-content:flex-end;background:#0e141e00;transition:background .22s ease}.sd-overlay.shown{background:#0e141e61}[data-theme=dark] .sd-overlay.shown{background:#0000008c}.sd-drawer{width:min(640px,94vw);height:100%;background:var(--bg);border-left:1px solid var(--border-strong);box-shadow:var(--shadow-pop);display:flex;flex-direction:column;overflow:hidden;transform:translate(100%);transition:transform .24s cubic-bezier(.22,.61,.36,1)}.sd-overlay.shown .sd-drawer{transform:none}.sd-head{flex:none;padding:16px 22px 14px;background:var(--surface);border-bottom:1px solid var(--border)}.sd-head-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.sd-kicker{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3)}.sd-head-actions{display:flex;align-items:center;gap:8px}.sd-script{font-size:15px;font-weight:600;color:var(--text);word-break:break-all;line-height:1.35}.sd-meta{display:grid;grid-template-columns:1fr;gap:8px;margin:13px 0 0}.sd-meta>div{display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:baseline}.sd-meta dt{font-size:var(--fs-xs);color:var(--text-3);margin:0}.sd-meta dd{margin:0;font-size:var(--fs-sm);color:var(--text);word-break:break-all}.sd-body{flex:1;overflow-y:auto;padding:18px 22px 40px}.sd-focus{display:flex;gap:12px;padding:13px 15px;border-radius:10px;margin-bottom:20px;background:var(--accent-weak);border:1px solid var(--accent-line)}.sd-focus-ic{width:26px;height:26px;flex:none;border-radius:7px;display:grid;place-items:center;background:var(--accent);color:var(--accent-fg)}.sd-focus-label{font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--accent);margin-bottom:4px}.sd-focus-text{margin:0;font-size:var(--fs-sm);line-height:1.6;color:var(--text)}.sd-block{margin-bottom:22px}.sd-block:last-child{margin-bottom:0}.sd-num{display:inline-grid;place-items:center;min-width:18px;height:17px;padding:0 5px;border-radius:9px;background:var(--surface-3);color:var(--text-2);font-size:10px}.subhead .sd-tally{margin-left:auto;display:inline-flex;gap:12px}.subhead .sd-tally:before{content:none}.subhead{flex-wrap:wrap}.sd-cmp{border:1px solid var(--border);border-radius:9px;overflow:hidden}.sd-cmp .tbl tbody td{height:auto;padding:9px 12px}.cmp-val{display:inline-flex;align-items:center;gap:7px;flex-wrap:wrap}.cmp-val .mono{font-size:var(--fs-xs);color:var(--text)}.cmp-note{font-size:10px;padding:1px 6px;border-radius:5px;background:var(--surface-3);color:var(--text-3)}.cmp-empty{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-3);font-style:normal}.err-row .cmp-empty{color:var(--err-fg)}.warn-row .cmp-empty{color:var(--warn-fg)}.sd-cmp .badge{gap:4px}.sd-empty{font-size:var(--fs-sm);color:var(--text-3);padding:6px 2px}@media (max-width: 560px){.sd-meta>div{grid-template-columns:60px 1fr}.sd-head{padding:12px 14px 10px}.sd-body{padding:14px 14px 40px}.pas-row{padding:10px 12px}.pas-tags{gap:6px}}@media (max-width: 400px){.sd-drawer{width:98vw}.pas-grp-label{display:none}}.fr-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:11px var(--pad-card);border:none;border-bottom:1px solid var(--border);background:transparent;cursor:pointer;font-family:var(--font-ui);color:var(--text)}.fr-row:last-child{border-bottom:none}.fr-row:hover{background:var(--surface-2)}.fr-ico{width:30px;height:30px;border-radius:8px;flex:none;display:grid;place-items:center}.fr-ico.cpt{background:var(--info-bg);color:var(--info-fg)}.fr-ico.frm{background:color-mix(in oklab,#7a4ff0 16%,var(--surface));color:color-mix(in oklab,#7a4ff0 72%,var(--text))}.fr-name{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fr-meta{display:flex;align-items:center;gap:7px;flex:none;font-size:var(--fs-xs);color:var(--text-3)}.fr-meta .fr-type{font-weight:600;color:var(--text-2);letter-spacing:.4px}.fr-meta .fr-dot{color:var(--border-strong)}.fr-row .pas-tags{gap:8px;min-width:92px;justify-content:flex-end}@media (max-width: 720px){.fr-meta{display:none}}.fr-path{font-size:var(--fs-xs);color:var(--text-3);margin-top:5px;word-break:break-all}.fr-cat{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--text-2);white-space:nowrap}.fr-cat svg{color:var(--text-3);flex:none}.fr-ds-list{display:flex;flex-direction:column;gap:9px}.fr-ds{border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--surface)}.fr-ds-top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 11px;border-bottom:1px solid var(--border);background:var(--surface-2)}.fr-ds-name{font-size:var(--fs-sm);font-weight:600;color:var(--text)}.fr-ds-rows{font-size:var(--fs-xs);color:var(--text-3);flex:none}.fr-ds-sql{margin:0;padding:10px 11px;font-size:var(--fs-xs);line-height:1.55;color:var(--text-2);white-space:pre-wrap;word-break:break-word;background:transparent}
