
:root{
--bg:#eef2f6;--card:#fff;--ink:#15263b;--muted:#69798b;--line:#d8e1eb;
--navy:#223044;--blue:#2f628f;--teal:#2d6e72;--green:#2f7a46;--red:#b42318;
--orange:#c45d16;--yellow:#a47a00;--soft:#f6f8fb;--shadow:0 8px 26px rgba(25,44,65,.08)
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:system-ui,-apple-system,"Microsoft YaHei","PingFang SC",Arial,sans-serif;background:var(--bg);color:var(--ink)}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.appbar{position:sticky;top:0;z-index:50;background:linear-gradient(135deg,#1e2c3f,#315475);color:#fff;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 10px #0002}
.appbar b{font-size:17px}.appbar small{display:block;opacity:.8;margin-top:2px;font-size:10px}.statusdot{font-size:13px;color:#72e39a}
.summarybar{position:sticky;top:60px;z-index:40;background:#f8fbff;border-bottom:1px solid var(--line);padding:7px 12px;display:flex;gap:8px;align-items:center;font-size:10px;color:#536579}
.summarybar b{color:#223044;white-space:nowrap}
.wrap{max-width:980px;margin:auto;padding:10px 10px 90px}
.tabs{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;margin:7px 0 11px}
.tab{border:0;border-radius:9px;padding:8px 2px;background:#dde6ef;color:#41566d;font-size:9px;font-weight:800}
.tab.active{background:var(--navy);color:#fff}
.view{display:none}.view.active{display:block}
.card{background:var(--card);border:1px solid #dfe6ee;border-radius:15px;padding:14px;margin-bottom:11px;box-shadow:var(--shadow)}
.card h2{font-size:16px;margin:0 0 9px}.card h3{font-size:13px;margin:10px 0 6px}
.hero{background:linear-gradient(135deg,#1e344d,#2d6f73);color:white;padding:19px;border-radius:17px;margin-bottom:11px}
.hero h1{font-size:21px;line-height:1.25;margin:0 0 7px}.hero p{font-size:11px;line-height:1.7;margin:0;opacity:.92}
.modegrid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:11px}
.modecard{text-align:left;border:1px solid var(--line);background:#fff;border-radius:14px;padding:13px;box-shadow:var(--shadow)}
.modecard b{display:block;font-size:13px;color:#244c70;margin-bottom:5px}.modecard span{font-size:10px;color:var(--muted);line-height:1.55}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:10px 0}.kpi{background:#fff;border:1px solid var(--line);border-radius:11px;text-align:center;padding:9px}.kpi b{font-size:17px;display:block}.kpi span{font-size:8.8px;color:var(--muted)}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.wide{grid-column:1/-1}.field label{display:block;font-size:11px;font-weight:800;color:#3b526b;margin-bottom:4px}
.field input,.field select,.field textarea{width:100%;border:1px solid #c7d3df;border-radius:9px;padding:10px;background:#fff;color:var(--ink)}
.field textarea{min-height:70px}.field small,.hint{display:block;font-size:9.6px;line-height:1.55;color:var(--muted);margin-top:4px}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:5px}.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.actions,.wizardnav{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.actions button,.wizardnav button{border:0;border-radius:10px;padding:10px 12px;font-weight:800;min-width:125px;flex:1}
.primary{background:var(--blue);color:white}.secondary{background:#e7edf4;color:#29465f}.danger{background:#fde7e4;color:var(--red)}
.callout{border-left:4px solid #8093a7;background:#f6f8fb;padding:10px;border-radius:9px}.callout p{margin:5px 0 0;font-size:10px;line-height:1.55}.callout.warning{border-left-color:#d19b13;background:#fff8e5}.callout.danger{border-left-color:var(--red);background:#fff0ee}.callout.good{border-left-color:var(--green);background:#edf8f0}
.wizardhead{background:#fff;border:1px solid var(--line);border-radius:13px;padding:10px;margin-bottom:10px;box-shadow:var(--shadow)}
.progress{height:7px;background:#e7edf3;border-radius:999px;overflow:hidden}.progress i{display:block;height:100%;width:20%;background:linear-gradient(90deg,#2f628f,#2d6e72);transition:.2s}
.wizardlabels{display:grid;grid-template-columns:repeat(5,1fr);gap:3px;margin-top:7px}.wizardlabels span{text-align:center;font-size:8px;color:#6b7a8b}
.wizard-step{display:none}.wizard-step.active{display:block}
.pattern{border:1px solid var(--line);border-radius:13px;padding:11px;margin:8px 0;background:white}.pattern.selected{border:2px solid #2f628f;background:#f4f9ff}.patternhead{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.pattern h3{margin:0;font-size:12px}.score{background:#e9f2fa;color:#234e72;border-radius:999px;padding:4px 8px;font-weight:800;font-size:10px;white-space:nowrap}.pattern p{font-size:10px;line-height:1.5;margin:5px 0;color:#53657a}.chips{display:flex;gap:4px;flex-wrap:wrap}.chip{font-size:8.8px;border-radius:999px;padding:3px 7px;background:#edf2f7;color:#516275}.pattern button{border:0;background:#e5eef7;color:#244d70;border-radius:8px;padding:7px 9px;font-weight:800;font-size:9px;margin-top:6px}
.standard{border:1px dashed #c8d3de;border-radius:11px;padding:9px;margin:7px 0}.standard b{font-size:11px}.standard p{font-size:9.5px;color:var(--muted);line-height:1.5;margin:4px 0}.standard a,.source a{font-size:9px;color:#2b628f;word-break:break-all}
.gate{border:2px solid;border-radius:13px;padding:12px;margin:9px 0}.gate.green{border-color:#61a277;background:#edf8f0}.gate.yellow{border-color:#d3ad3b;background:#fff8dd}.gate.orange{border-color:#d98a52;background:#fff2e8}.gate.red{border-color:#d56e66;background:#fff0ee}.gate strong{font-size:16px}.gate p{font-size:10px;line-height:1.55;margin:4px 0}
.issue{border:1px solid var(--line);border-left:5px solid #8fa0b3;border-radius:11px;padding:10px;margin:7px 0;background:white}.issue.block{border-left-color:var(--red)}.issue.high{border-left-color:var(--orange)}.issue.warn{border-left-color:#c49a08}.issue.ok{border-left-color:var(--green)}.issue .top{display:flex;justify-content:space-between;gap:8px}.issue h4{font-size:11px;margin:0}.issue p{font-size:9.7px;color:#4b5f75;line-height:1.5;margin:4px 0}.issue .basis{color:#7f8c99;font-size:8.8px}.issue .next{background:#f4f7fa;border-radius:7px;padding:6px;margin-top:6px;color:#324e69}
.bigdim{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.dim{background:#f2f6fa;border-radius:10px;text-align:center;padding:9px}.dim b{font-size:16px;display:block}.dim span{font-size:8.7px;color:var(--muted)}
.matrix{overflow-x:auto}.matrix table{width:100%;border-collapse:collapse;font-size:9.5px}.matrix th,.matrix td{padding:7px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.matrix th:first-child,.matrix td:first-child{text-align:left}
details summary{font-size:13px;font-weight:850;cursor:pointer;color:#294861}details[open] summary{margin-bottom:10px}
.troublecause{border-left:4px solid #5e7691;background:#f7f9fb;border-radius:9px;padding:9px;margin:7px 0}.troublecause b{font-size:11px}.troublecause p{font-size:9.5px;line-height:1.5;margin:4px 0}
.source{border-bottom:1px solid var(--line);padding:8px 0}.source:last-child{border:0}.source b{font-size:10.5px}.source p{font-size:9.3px;color:var(--muted);line-height:1.5;margin:3px 0}
.glossary{display:flex;flex-wrap:wrap;gap:5px}.glossary span{background:#edf2f6;border-radius:999px;padding:5px 8px;font-size:9px}
.validationitem{display:grid;grid-template-columns:110px 1fr;gap:8px;border-bottom:1px solid var(--line);padding:9px 0}.validationitem:last-child{border:0}.validationitem b{font-size:9px;color:#31516e}.validationitem strong{font-size:10.5px}.validationitem p{font-size:9.3px;line-height:1.5;color:var(--muted);margin:3px 0}
.record{border:1px solid var(--line);border-radius:11px;padding:10px;margin:7px 0}.record b{font-size:11px}.record p{font-size:9px;color:var(--muted);margin:3px 0}
.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:9.5px;white-space:pre-wrap;background:#f6f8fb;border:1px solid var(--line);border-radius:10px;padding:10px}
.hidden{display:none!important}.quality{display:inline-block;border-radius:999px;padding:2px 6px;font-size:8px;background:#edf2f6;margin-left:4px}.quality.A{background:#e8f7ed;color:#23643a}.quality.B{background:#fff4d8;color:#795c00}
.test-pass{color:var(--green);font-weight:900}.test-fail{color:var(--red);font-weight:900}
@media(max-width:720px){
.summarybar{top:58px;display:block}.summarybar b{display:block;margin-bottom:2px}.tabs{grid-template-columns:repeat(4,1fr)}.tab{font-size:8.5px}
.grid{grid-template-columns:1fr}.wide{grid-column:auto}.modegrid{grid-template-columns:1fr}.kpis{grid-template-columns:1fr 1fr}.bigdim{grid-template-columns:1fr 1fr}
.wizardlabels span{font-size:6.8px}.validationitem{grid-template-columns:85px 1fr}
}
@media print{.appbar,.summarybar,.tabs,.actions,.wizardnav,.no-print{display:none!important}.view{display:none!important}#reviewView{display:block!important}.wrap{max-width:none;padding:0}.card,.issue,.gate{box-shadow:none;break-inside:avoid}}
/* V2.1 database UI */
.dbkpis{margin-top:12px}.dbfilters{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:7px;margin:8px 0}.dbfilters input,.dbfilters select{width:100%;border:1px solid #c7d3df;border-radius:9px;padding:9px;background:#fff;color:var(--ink);font-size:9.5px}.dbrowhead{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.dbrowhead>span{font-size:8px;color:var(--muted);background:#edf2f6;border-radius:999px;padding:3px 6px;white-space:nowrap}.standard .caution{color:#9a5416;background:#fff7eb;border-radius:7px;padding:5px}.matrix a{color:#2b628f;text-decoration:none}.matrix td[title]{cursor:help}
@media(max-width:720px){.dbfilters{grid-template-columns:1fr 1fr}.matrix table{font-size:8.7px}.dbrowhead{display:block}.dbrowhead>span{display:inline-block;margin-top:4px}}
