:root{--bg:#f4f6fb;--card:#fff;--fg:#1f2937;--mut:#6b7280;--pri:#3b6cf6;--pri2:#e8eefe;--bd:#e5e7eb;--c1:#3b6cf6;--c2:#10b981;--c3:#f59e0b;--c4:#ef4444}
*{box-sizing:border-box}
body{margin:0;font:15px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--fg)}
.banner{background:#fff3cd;color:#8a6100;text-align:center;padding:6px 10px;font-weight:600;font-size:13px;position:sticky;top:0;z-index:30;border-bottom:1px solid #f0d98a}
.app{display:flex;min-height:calc(100vh - 32px)}
.side{width:230px;background:#101828;color:#cbd5e1;padding:18px 14px;display:flex;flex-direction:column;position:sticky;top:32px;height:calc(100vh - 32px)}
.brand{display:flex;gap:10px;align-items:center;margin-bottom:22px;color:#fff}
.brand small{display:block;color:#94a3b8;font-size:12px}
.logo{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#3b6cf6,#7c3aed);display:grid;place-items:center;font-weight:700}
nav a{display:block;padding:10px 12px;border-radius:8px;color:#cbd5e1;text-decoration:none;margin-bottom:4px}
nav a:hover{background:#1e293b}
nav a.on{background:var(--pri);color:#fff}
.side-foot{margin-top:auto;font-size:12px;color:#64748b}
main{flex:1;padding:20px 26px;min-width:0}
.top{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.top h1{margin:0;font-size:22px}
#menu{display:none;border:0;background:#fff;border-radius:8px;font-size:20px;padding:4px 10px;box-shadow:0 1px 3px #0002}
.tag{background:#fde68a;color:#92400e;border-radius:6px;font-size:11px;padding:2px 8px;font-weight:700}
.page{display:none}.page.on{display:block}
.panel{background:var(--card);border-radius:14px;padding:18px;box-shadow:0 1px 3px #0000000f;border:1px solid var(--bd)}
.panel h3{margin:0 0 12px;font-size:16px}
.narrow{max-width:640px}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}
.card{background:#fff;border-radius:14px;padding:16px;border:1px solid var(--bd);border-left:5px solid var(--c);}
.card .n{font-size:32px;font-weight:700}
.card .l{color:var(--mut);font-size:13px}
.card .d{font-size:12px;color:var(--c2)}
.grid2{display:grid;grid-template-columns:1.4fr 1fr;gap:14px}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--mut);margin-top:6px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px}
.recent{list-style:none;margin:0;padding:0}
.recent li{padding:10px 0;border-bottom:1px dashed var(--bd)}
.recent li:last-child{border:0}
.recent small{color:var(--mut)}
.badge{display:inline-block;font-size:11px;padding:1px 8px;border-radius:99px;background:var(--pri2);color:var(--pri);margin-right:6px}
.year-row{margin-bottom:12px}
select,input,textarea{font:inherit;padding:8px 10px;border:1px solid var(--bd);border-radius:8px;background:#fff;width:100%}
.year-row select{width:auto}
label{display:block;font-size:13px;color:var(--mut);margin-bottom:12px}
label input,label select,label textarea{margin-top:4px;color:var(--fg)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.filters{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:10px;margin-bottom:12px}
.tbl-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;min-width:640px}
th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--bd);font-size:14px}
th{color:var(--mut);font-weight:600;background:#f9fafb}
.muted{color:var(--mut);font-size:13px}
.btn{background:var(--pri);color:#fff;border:0;padding:9px 18px;border-radius:8px;cursor:pointer;font:inherit}
.btn:hover{filter:brightness(1.08)}
.ok{color:var(--c2);margin-left:10px}
.files{list-style:none;margin:0 0 10px;padding:0}
.files li{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--bd)}
.files .ic{width:38px;height:38px;border-radius:8px;background:var(--pri2);display:grid;place-items:center;font-size:11px;font-weight:700;color:var(--pri);flex:none}
.files .nm{flex:1;min-width:0;word-break:break-all}
.files .sz{color:var(--mut);font-size:13px;white-space:nowrap}
.chat{max-width:760px}
.demo-note{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:8px;padding:8px 12px;font-size:13px;margin-bottom:12px}
.msgs{min-height:260px;max-height:50vh;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:4px}
.m{max-width:86%;padding:10px 14px;border-radius:14px;white-space:pre-wrap}
.m.u{align-self:flex-end;background:var(--pri);color:#fff;border-bottom-right-radius:4px}
.m.a{align-self:flex-start;background:#f1f5f9;border-bottom-left-radius:4px}
.quick{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;align-items:center}
.chip{border:1px solid var(--bd);background:#fff;border-radius:99px;padding:6px 12px;cursor:pointer;font:inherit;font-size:13px}
.chip:hover{border-color:var(--pri);color:var(--pri)}
#chatForm{display:flex;gap:8px}
footer{text-align:center;color:var(--mut);font-size:12px;margin:26px 0 6px}
@media(max-width:860px){
 .side{position:fixed;left:-250px;top:32px;z-index:20;transition:left .2s;height:calc(100vh - 32px)}
 .side.open{left:0;box-shadow:0 0 40px #0006}
 #menu{display:block}
 main{padding:14px}
 .cards{grid-template-columns:1fr 1fr}
 .grid2{grid-template-columns:1fr}
 .filters{grid-template-columns:1fr 1fr}
 .filters input{grid-column:1/-1}
 .row{grid-template-columns:1fr}
}
