:root {
  --ink: #18233b;
  --muted: #77839a;
  --accent: #258f86;
  --accent-soft: #e4f4f0;
  --blue: #3978ca;
  --amber: #c98a30;
  --purple: #8667c7;
  --bg: #edf2f8;
  --card: #fff;
  --line: #dce4ed;
  --navy: #142038;
}

* { box-sizing: border-box; }
body { margin: 0; color: var(--ink); background: var(--bg); font-family: "Avenir Next", "PingFang SC", sans-serif; }
button, input, textarea { font: inherit; } button { cursor: pointer; }
.layout { min-height: 100vh; display: grid; grid-template-columns: 190px minmax(0,1fr); }
.sidebar { position: sticky; top: 0; height: 100vh; padding: 22px 12px; color: white; background: linear-gradient(180deg,#101a31,#17243e); display: flex; flex-direction: column; }
.brand { display: flex; gap: 10px; align-items: center; padding: 0 8px 30px; }.brand-mark { width: 34px; height: 34px; display: grid; place-items: center; color: #11302d; background: #6ed0c1; border-radius: 8px; font-weight: 900; }
.brand b,.brand small { display:block; }.brand b { font-size: 13px; letter-spacing: .12em; }.brand small { margin-top:3px; color:#718098; font-size:7px; letter-spacing:.14em; }
.nav-label { margin: 13px 10px 6px; color:#5f6e87; font-size:8px; letter-spacing:.16em; }
.nav-item { width:100%; display:flex; gap:10px; align-items:center; padding:11px 12px; color:#acb7ca; border:0; border-radius:7px; background:transparent; text-align:left; font-size:11px; }
.nav-item span { width:16px; color:#687791; text-align:center; }.nav-item:hover,.nav-item.active { color:white; background:rgba(63,180,166,.12); box-shadow:inset 3px 0 #57c4b6; }.nav-item.active span { color:#60cdbf; }
.user-card { margin-top:auto; display:flex; gap:9px; align-items:center; padding:12px; border:1px solid rgba(255,255,255,.09); border-radius:9px; }.user-card>span { width:29px;height:29px;display:grid;place-items:center;background:#5576d7;border-radius:50%;font-size:11px; }.user-card b,.user-card small { display:block; }.user-card b{font-size:9px}.user-card small{margin-top:3px;color:#718098;font-size:7px}
main { min-width:0; padding:27px clamp(20px,3.5vw,48px) 50px; }
.page { display:none; animation:reveal .25s ease; }.page.active { display:block; }
header { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-bottom:22px; }
.eyebrow { margin:0;color:var(--accent);font-size:8px;font-weight:800;letter-spacing:.18em; } h1 { margin:4px 0 5px;font-family:"Songti SC",serif;font-size:32px; } header p:not(.eyebrow){margin:0;color:var(--muted);font-size:10px}
button.primary,.primary { padding:9px 14px;color:white;border:0;border-radius:7px;background:var(--accent);font-size:10px; }.ghost { padding:9px 13px;color:var(--blue);border:0;border-radius:7px;background:white;box-shadow:0 5px 18px rgba(28,52,88,.08);font-size:10px; }.outline,.back { padding:8px 12px;color:#52617a;border:1px solid var(--line);border-radius:7px;background:white;font-size:9px; }
.overview-stats { display:grid;grid-template-columns:repeat(4,1fr);gap:10px; }.overview-stats article { padding:18px;background:white;border:1px solid var(--line);border-radius:10px; }.overview-stats span,.overview-stats small { display:block;color:var(--muted);font-size:9px; }.overview-stats strong { display:block;margin:7px 0 4px;font-size:25px; }.overview-stats small{color:#3c9470}.overview-stats small.warn{color:var(--amber)}
.panel { background:white;border:1px solid var(--line);border-radius:11px;box-shadow:0 8px 28px rgba(32,51,82,.045); }
.panel-head { display:flex;justify-content:space-between;align-items:end;gap:18px;padding:17px 18px;border-bottom:1px solid #edf0f5; }.panel-head h2{margin:3px 0;font-size:15px}.panel-head small{color:var(--muted);font-size:8px}
.search { display:flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid var(--line);border-radius:7px;color:var(--muted); }.search input{width:190px;border:0;outline:0;background:transparent;font-size:9px}
.knowledge-row { min-width:650px;display:grid;grid-template-columns:2fr 1fr .8fr .8fr .8fr;gap:12px;align-items:center;padding:11px 16px;border-bottom:1px solid #edf0f5;font-size:9px}.knowledge-row.table-header{color:var(--muted);background:#f8fafc;font-size:8px}.knowledge-title strong,.knowledge-title small{display:block}.knowledge-title strong{font-size:10px}.knowledge-title small{margin-top:3px;color:var(--muted);font-size:8px}
.tag,.state { width:fit-content;padding:4px 7px;border-radius:5px;background:#edf2f7;color:#566984;font-size:8px}.state.ok{color:#34795d;background:#e8f5ee}.state.review{color:#a36a1d;background:#fff1dc}.mini-actions{display:flex;gap:5px}.mini-actions button,.action-btn{padding:6px 9px;border:1px solid var(--line);border-radius:6px;background:white;color:#455674;font-size:8px}.mini-actions button:first-child,.action-btn.primary-action{color:var(--accent);border-color:#a7d8d1;background:#effaf7}
.issue-tabs { display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:14px;padding:4px;background:white;border:1px solid var(--line);border-radius:10px; }.issue-tab { position:relative;padding:13px 10px;color:#7b8699;border:0;background:transparent;font-size:9px}.issue-tab::after{content:"";position:absolute;right:12px;bottom:0;left:12px;height:3px;background:var(--accent);transform:scaleX(0);transition:.2s}.issue-tab.active{color:var(--accent);font-weight:700}.issue-tab.active::after{transform:scaleX(1)}
.scan-panel { margin-bottom:13px;padding:17px; }.scan-head { display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:14px; }.scan-head p{margin:0;font-size:10px}.scan-head em{margin-left:8px;padding:4px 7px;color:var(--blue);background:#edf3fb;border-radius:5px;font-style:normal;font-size:8px}.shield{margin-right:6px;color:var(--accent)}.scan-tools{display:flex;align-items:center;gap:8px}.scan-rule{padding:7px 10px;color:#50728a;background:#eef7f6;border:1px solid #d7ece8;border-radius:7px;font-size:8px}.alert-button{display:grid;grid-template-columns:auto auto;gap:0 5px;align-items:center;padding:7px 11px;color:#9a6a16;border:1px solid #e4c46c;border-radius:7px;background:#fff9e8;font-size:8px}.alert-button span{grid-row:1/3;font-size:13px}.alert-button b,.alert-button small{display:block}.alert-button small{color:#b18b48;font-size:7px}.alert-button.off{color:#77839a;border-color:var(--line);background:#f5f7fa}
.kb-cards { display:grid;grid-template-columns:repeat(3,1fr);gap:8px; }.kb-card { padding:12px;border:1px solid var(--line);border-radius:8px;background:#fbfcfe;text-align:left;transition:.2s}.kb-card.active{border-color:#66bfb3;background:#f2fbf8;box-shadow:inset 3px 0 var(--accent)}.kb-card strong,.kb-card small{display:block}.kb-card strong{font-size:10px}.kb-card small{margin-top:4px;color:var(--muted);font-size:8px}.kb-card b{float:right;color:var(--amber);font-size:8px}
.result-panel{overflow:hidden}.result-tools{display:flex;align-items:center;gap:8px}.status-filters{display:flex;padding:3px;background:#f3f6fa;border:1px solid var(--line);border-radius:8px}.status-filter{padding:6px 10px;color:#6d7a90;border:0;border-radius:6px;background:transparent;font-size:8px}.status-filter.active{color:var(--accent);background:white;box-shadow:0 1px 4px rgba(28,52,88,.08);font-weight:700}.issue-group{margin:13px;border:1px solid var(--line);border-radius:9px;overflow:hidden}.group-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#f6f8fb}.group-head strong{font-size:10px}.group-head small{margin-left:8px;color:var(--muted);font-size:8px}.group-summary{margin-left:8px;padding:4px 7px;color:#65728a;background:white;border:1px solid var(--line);border-radius:999px;font-size:7px}.group-head button{padding:7px 10px;color:white;border:0;border-radius:6px;background:var(--accent);font-size:8px}.group-head button:disabled{opacity:.45;cursor:default}.empty-issues{padding:36px 18px;color:var(--muted);text-align:center;font-size:10px}
.issue-table{overflow-x:auto}.issue-row{min-width:760px;display:grid;grid-template-columns:.8fr 1.4fr 1.5fr .7fr .7fr .7fr .8fr;gap:10px;align-items:center;padding:10px 12px;border-top:1px solid #edf0f5;font-size:8px}.issue-row.table-header{color:var(--muted);background:#fbfcfe}.issue-type{width:fit-content;padding:5px 7px;border-radius:5px}.issue-type.a{color:#b86724;background:#fff1df}.issue-type.b{color:#7b5db4;background:#f1ebfb}.issue-type.c{color:#3d78b2;background:#eaf3fc}.issue-detail{color:#9a6929;line-height:1.45}.issue-row strong{line-height:1.45}.issue-row code{color:#576681}.notice{color:#3a8d6b}.row-actions{display:flex;gap:5px}.row-actions button{padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:white;color:#4d5c73;font-size:8px}.row-actions .process{color:white;border-color:var(--accent);background:var(--accent)}.row-actions .processed{color:#2f7e5d;border-color:#c7e8d8;background:#eaf8f1;cursor:default}
.merge-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.merge-top>div{display:flex;gap:8px}.locked{opacity:.45;pointer-events:none}.merge-group{margin-bottom:13px;padding:18px;background:white;border:1px solid var(--line);border-radius:11px}.merge-group-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.merge-group-head h2{margin:0;font-size:14px}.merge-group-head button{padding:7px 10px;color:var(--accent);border:1px solid #b8dcd7;background:#f1faf8;border-radius:6px;font-size:8px}.merge-context{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-bottom:12px}.merge-context div{padding:9px;background:#f7f9fc;border-radius:7px}.merge-context span,.merge-context b{display:block}.merge-context span{color:var(--muted);font-size:7px}.merge-context b{margin-top:3px;font-size:8px}.diff-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.diff-card{padding:13px;border:1px solid var(--line);border-radius:8px}.diff-card.recommended{border-color:#a9d8d2;background:#f4fbf9}.diff-card h3{margin:0 0 7px;font-size:9px}.diff-card p{margin:0;color:#55627a;font-size:8px;line-height:1.7}.merge-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:12px}.accept,.reject,.undo{padding:7px 11px;border-radius:6px;font-size:8px}.accept{color:white;border:0;background:var(--accent)}.reject{color:#7b5b5b;border:1px solid #e6caca;background:white}.undo{color:var(--blue);border:1px solid #bed2e8;background:white}.decision{padding:7px 10px;color:#31765b;background:#e8f5ee;border-radius:6px;font-size:8px}
.merge-head-actions{display:flex;gap:6px}.merge-group-head .quick-accept{color:white;border-color:var(--accent);background:var(--accent)}.diff-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.diff-card-head h3{margin:0}.diff-card-head>span{color:var(--muted);font-size:7px}.diff-card-head .edited-badge{padding:3px 6px;color:#2f7e5d;background:#dff3e9;border-radius:999px}.suggestion-editor{width:100%;min-height:94px;margin-top:9px;padding:9px;color:#405068;border:1px solid #76bdb4;border-radius:6px;background:white;outline:0;font-size:8px;line-height:1.7;resize:vertical}.suggestion-editor:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,143,134,.1)}.edit-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:7px}.edit-actions button{padding:6px 9px;color:#52617a;border:1px solid var(--line);border-radius:6px;background:white;font-size:8px}.edit-actions .save-edit{color:white;border-color:var(--accent);background:var(--accent)}.version-panel{margin-top:12px;padding:12px;border:1px dashed #c7d5e4;border-radius:8px;background:#f8fafc}.version-panel-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.version-panel-head strong{font-size:9px}.version-panel-head span{color:var(--muted);font-size:7px}.version-list{display:grid;gap:7px}.version-item{display:grid;grid-template-columns:54px 1fr auto;gap:8px;align-items:start;padding:8px 9px;border:1px solid #e4ebf3;border-radius:7px;background:white}.version-item.current{border-color:#a9d8d2;background:#f4fbf9}.version-item b{color:var(--accent);font-size:9px}.version-item p{margin:0;color:#55627a;font-size:8px;line-height:1.55}.version-item small{color:var(--muted);font-size:7px;white-space:nowrap}.version-item button{padding:5px 8px;color:var(--blue);border:1px solid #bed2e8;border-radius:5px;background:white;font-size:7px}
dialog{width:min(520px,calc(100% - 30px));padding:0;border:0;border-radius:12px;box-shadow:0 30px 90px rgba(12,24,47,.35)}dialog::backdrop{background:rgba(10,19,37,.65);backdrop-filter:blur(4px)}dialog form{position:relative;padding:28px}.close{position:absolute;top:16px;right:16px;border:0;background:transparent;font-size:21px}dialog h2{margin:4px 0 18px}label{display:grid;gap:6px;margin:13px 0;color:var(--muted);font-size:9px}label input,label textarea{padding:10px;border:1px solid var(--line);border-radius:7px;outline:0}textarea{min-height:100px;resize:vertical}.validation-result{padding:10px;color:var(--muted);background:#f6f8fb;border-radius:7px;font-size:9px}.validation-result.success{color:#34795d;background:#e8f5ee}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:15px}
.toast{position:fixed;right:22px;bottom:22px;padding:10px 15px;color:white;background:var(--navy);border-radius:8px;opacity:0;transform:translateY(12px);transition:.22s;font-size:9px}.toast.show{opacity:1;transform:none}
@keyframes reveal{from{opacity:0;transform:translateY(5px)}}
@media(max-width:900px){.overview-stats{grid-template-columns:repeat(2,1fr)}.kb-cards{grid-template-columns:1fr}.issue-tabs{grid-template-columns:1fr}.issue-tab{text-align:left}.merge-context,.diff-grid{grid-template-columns:1fr}.scan-tools,.result-tools{align-items:stretch;flex-direction:column}.version-item{grid-template-columns:1fr}}
@media(max-width:720px){.layout{grid-template-columns:1fr}.sidebar{position:static;height:auto;display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;gap:5px;padding:12px}.brand{padding:0}.nav-label,.user-card{display:none}.nav-item{justify-content:center}.nav-item span{display:none}main{padding:20px 13px}header{align-items:start;flex-direction:column}.kb-cards{grid-template-columns:1fr}.scan-head{align-items:start;flex-direction:column}.merge-top{align-items:stretch;flex-direction:column;gap:8px}.merge-top>div{justify-content:flex-end}.status-filters{width:100%;justify-content:space-between}}
