
:root{
  /* 主任 2026-11-15 指定：红底白字喜庆主题 */
  --bg:#fdf6f5; --card:#fff; --line:#f0d9dc; --line2:#f8ebed;
  --ink:#33262a; --ink2:#5c4a4e; --ink3:#9a8589;
  --brand:#c8102e; --brand-d:#9c0c23; --brand-l:#e0343f;
  --brand-bg:#fdecef; --brand-line:#f3c2c9;
  /* 兼容别名：原有 var(--blue) 全部自动转为主色红 */
  --blue:var(--brand); --blue-bg:var(--brand-bg);
  --gray:#faf1f1;
  --red:#e0483d; --green:#16a34a; --amber:#d97706;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--ink);font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;padding:22px 26px 60px}
.wrap{max-width:1200px;margin:0 auto}
h1{font-size:22px;font-weight:700;letter-spacing:.3px}
h2{font-size:17px;font-weight:700;margin-bottom:10px}
h3{font-size:14px;font-weight:700;margin:16px 0 8px}
p{margin:6px 0}
.hd{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 22px;margin-bottom:12px}
.hd-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.badge{font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap}
.b-eval{background:var(--blue-bg);color:var(--blue)}
.b-warn{background:#fff4e5;color:var(--amber)}
.b-ok{background:#e8f7ee;color:var(--green)}
.b-gray{background:#e9edf4;color:var(--ink2)}
.hd-sub{color:var(--ink3);font-size:13px;margin-top:6px}
.meta{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}
.meta div{background:var(--gray);border:1px solid var(--line2);border-radius:10px;padding:9px 12px}
.meta span{display:block;color:var(--ink3);font-size:11px}
.meta b{font-size:13px;color:var(--blue);font-weight:700}
.update{background:#fff;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:10px;padding:12px 16px;margin-bottom:12px}
.update li{margin:3px 0 3px 18px;font-size:13px;color:var(--ink2)}
.tabs{display:flex;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:6px;margin-bottom:14px;flex-wrap:wrap}
.tab{padding:8px 15px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;color:var(--ink2);border:1px solid transparent;white-space:nowrap}
.tab:hover{background:var(--gray)}
.tab.on{background:var(--blue);color:#fff}
.panel{display:none}
.panel.on{display:block}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:12px}
.note{font-size:12px;color:var(--ink3);line-height:1.8}
.tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;background:#e9edf4;color:var(--ink2);margin-right:5px}
.tag.lock{background:#fdeceb;color:var(--red)}
.tag.sys{background:#fff4e5;color:var(--amber)}
.tag.ok{background:#e8f7ee;color:var(--green)}
hr{border:0;border-top:1px solid var(--line2);margin:14px 0}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:9px 10px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:top}
th{color:var(--ink3);font-weight:600;font-size:12px;background:var(--gray)}
tr:last-child td{border-bottom:0}
td.num{color:var(--blue);font-weight:700}
td.neg{color:var(--red);font-weight:700}
.tbl-wrap{border:1px solid var(--line);border-radius:10px;overflow:hidden}
button{font:inherit;cursor:pointer;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink2);padding:6px 12px;font-size:12px;font-weight:600}
button:hover:not(:disabled){border-color:var(--blue);color:var(--blue)}
button:disabled{opacity:.42;cursor:not-allowed}
button.pri{background:var(--blue);color:#fff;border-color:var(--blue)}
button.pri:hover:not(:disabled){background:#0f63e0;color:#fff}
button.danger{color:var(--red)}
button.ghost{border-color:var(--blue);color:var(--blue);background:#fff}
input,select{font:inherit;font-size:13px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);outline:none}
input:focus,select:focus{border-color:var(--blue)}
input:disabled,select:disabled{background:var(--gray);color:var(--ink3)}
.row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.row>.grow{flex:1;min-width:150px}
.gate{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--red);border-radius:10px;padding:12px 16px;margin-bottom:12px}
.gate.unlocked{border-left-color:var(--green)}
.gate-state{font-weight:700;font-size:13px}
.gate-state.lock{color:var(--red)}
.gate-state.ok{color:var(--green)}
.sim{display:grid;grid-template-columns:200px 1fr;gap:12px;min-height:430px}
.side{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px}
.side-grp{background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px;margin-bottom:10px}
.side-grp .gt{font-size:11px;font-weight:700;color:var(--ink3);margin-bottom:7px;padding-left:3px}
.nav-item{padding:7px 10px;border-radius:7px;font-size:13px;cursor:pointer;color:var(--ink2)}
.nav-item:hover{background:var(--gray)}
.nav-item.on{background:var(--blue-bg);color:var(--blue);font-weight:700}
.main{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.main-hd{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.main-hd h2{margin:0}
.main-hd .sub{font-size:12px;color:var(--ink3)}
.sumbar{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:13px 16px;margin-bottom:10px;flex-wrap:wrap}
.sumbar-left{flex:1;min-width:250px}
.sum-row{display:flex;align-items:baseline;gap:12px;margin-bottom:8px}
.sum-row:last-child{margin-bottom:0}
.sum-label{font-size:13px;color:var(--ink2);min-width:160px}
.sum-val{font-size:19px;color:var(--blue);font-weight:700}
.sumbar-right{align-self:center}
.sum-detail{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.sum-chip{background:#f7f9fc;border:1px solid var(--line);border-radius:8px;padding:7px 10px;display:flex;justify-content:space-between;font-size:12px}
.sum-chip i{font-style:normal;color:var(--ink3)}
.sum-chip b{color:var(--blue)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.stat{background:#fff;border:1px solid var(--line);border-radius:10px;padding:11px 13px;text-align:center}
.stat.frozen{background:var(--gray)}
.stat span{display:block;font-size:11px;color:var(--ink3);margin-bottom:4px}
.stat b{font-size:19px;color:var(--blue);font-weight:700}
.stat b.neg{color:var(--red)}
.fin-tbl td,.fin-tbl th{font-size:12px;padding:8px 9px;white-space:nowrap}
.fin-tbl td.n{color:var(--blue);text-align:right;font-variant-numeric:tabular-nums}
.fin-tbl td.st{font-weight:700;color:var(--blue);text-align:right}
.fin-tbl tr.total td{background:#eef4ff;font-weight:700}
.fin-tbl td.red{color:var(--red);font-weight:700;text-align:right}
.fin-tbl td.green{color:var(--green);font-weight:700;text-align:right}
.profit-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.profit-col{border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:#fff}
.profit-col.frz{background:var(--gray)}
.profit-hd{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.profit-hd .k{font-size:13px;color:var(--ink2)}
.profit-hd .v{font-size:22px;color:var(--blue);font-weight:700}
.profit-hd .v.neg{color:var(--red)}
.frz-tag{margin-left:auto;font-size:11px;font-weight:700;color:var(--ink3);background:#e6eaf3;border-radius:999px;padding:2px 9px;white-space:nowrap}
.profit-sub{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.profit-sub .sub-item{background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 10px;display:flex;justify-content:space-between;font-size:12px}
.profit-sub .sub-item i{font-style:normal;color:var(--ink3)}
.profit-sub .sub-item b{color:var(--blue)}
.profit-note{font-size:12px;color:var(--ink3);line-height:1.8;margin-top:10px}
.dict-grid{display:grid;grid-template-columns:230px 1fr;gap:12px}
.dict-list button{display:block;width:100%;text-align:left;margin-bottom:6px;padding:8px 10px}
.dict-list button.on{background:var(--blue-bg);border-color:var(--blue);color:var(--blue)}
.opt{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;background:#fff}
.opt .nm{flex:1;font-size:13px}
.opt.off .nm{color:var(--ink3);text-decoration:line-through}
.cmp th:nth-child(2),.cmp th:nth-child(3),.cmp th:nth-child(4){width:24%}
.cmp td:first-child{font-weight:600;color:var(--ink2);width:16%}
.recommend{background:#eaf2ff!important}
.pill{display:inline-block;font-size:11px;font-weight:700;color:var(--blue);background:var(--blue-bg);border-radius:6px;padding:2px 7px;margin-left:6px}
.lv{display:inline-block;width:52px;text-align:center;font-size:11px;font-weight:700;border-radius:6px;padding:2px 0;background:#e9edf4;color:var(--ink2)}
.lv.p0{background:#fdeceb;color:var(--red)}
.lv.p1{background:#fff4e5;color:var(--amber)}
.lv.p2{background:#e8f7ee;color:var(--green)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{border:0;border-radius:0;border-right:1px solid var(--line)}
.seg button:last-child{border-right:0}
.seg button.on{background:var(--blue);color:#fff}
.mask{position:fixed;inset:0;background:rgba(20,30,50,.35);display:none;align-items:center;justify-content:center;z-index:50}
.mask.on{display:flex}
.dlg{background:#fff;border:1px solid var(--line);border-radius:12px;width:350px;padding:18px;box-shadow:0 12px 40px rgba(0,0,0,.14)}
.dlg h3{margin:0 0 12px}
.dlg .ft{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
#toast{position:fixed;right:24px;bottom:24px;background:#1f2937;color:#fff;padding:10px 16px;border-radius:9px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .22s;z-index:99}
#toast.on{opacity:1}
.foot{text-align:center;color:var(--ink3);font-size:12px;margin-top:22px;line-height:1.9}
.kbd{background:var(--gray);border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-size:12px;color:var(--ink2)}
code{background:var(--gray);border-radius:4px;padding:1px 5px;font-size:12px}
@media(max-width:900px){.meta{grid-template-columns:repeat(2,1fr)}.stats,.profit-grid,.sum-detail{grid-template-columns:1fr 1fr}.sim,.dict-grid{grid-template-columns:1fr}}

/* ===== 红底白字 · 喜庆主题（主任 2026-11-15 指定） ===== */
body{background:linear-gradient(180deg,#f9e2e4 0,#fdf6f5 320px,#fdf6f5 100%)}
.hd{background:linear-gradient(120deg,#9c0c23 0%,#c8102e 55%,#e0343f 100%);border-color:#8b0a1e;box-shadow:0 6px 20px rgba(156,12,35,.18)}
.hd h1,.hd h1 span{color:#fff}
.hd h1 .hd-ver{font-size:12px;font-weight:700;color:#fff;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:2px 9px;vertical-align:middle;letter-spacing:0}
.hd .badge{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.32)}
.hd .b-warn{background:rgba(255,214,102,.2);color:#ffe9a8;border-color:rgba(255,214,102,.55)}
.hd .hd-sub{color:rgba(255,255,255,.86)}
.hd .hd-sub b{color:#ffe6a6}
.hd .meta div{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.24)}
.hd .meta span{color:rgba(255,255,255,.72)}
.hd .meta b{color:#fff}
.update{border-left-color:var(--brand)}
.tabs{background:linear-gradient(90deg,#9c0c23,#c8102e);border-color:#8b0a1e}
.tabs .tab{color:rgba(255,255,255,.86)}
.tabs .tab:hover{background:rgba(255,255,255,.16);color:#fff}
.tabs .tab.on{background:#fff;color:#c8102e;box-shadow:0 2px 8px rgba(120,8,24,.18)}
.card,.main{background:#fff;border-color:var(--line)}
.side{background:linear-gradient(180deg,#a80d24 0%,#8c0a1d 100%);border-color:#7d091a}
.side-grp{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.2)}
.side-grp .gt{color:rgba(255,255,255,.7)}
.side .nav-item{color:rgba(255,255,255,.9)}
.side .nav-item:hover{background:rgba(255,255,255,.16);color:#fff}
.side .nav-item.on{background:#fff;color:var(--brand)}
.sim-top{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:linear-gradient(90deg,#8c0a1d,#c8102e);border:1px solid #7d091a;border-radius:12px;padding:10px 16px;color:#fff}
.sim-top .brand{display:flex;align-items:center;gap:9px;font-size:16px;letter-spacing:.5px;font-weight:700}
.sim-top .logo{width:26px;height:26px;border-radius:7px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.38);display:inline-flex;align-items:center;justify-content:center;font-size:14px}
.sim-top-r{font-size:12px;color:rgba(255,255,255,.82)}
.sim-badge{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.36);border-radius:999px;padding:2px 9px;margin-left:8px;font-weight:700;color:#fff}
button.pri:hover:not(:disabled){background:#9c0c23;color:#fff}
.tag{background:#f6e8ea}
.frz-tag{background:#f3d9dd;color:#8b6369}
.sum-chip{background:#fff8f8}
.lv{background:#f6e8ea}
.fin-tbl tr.total td{background:#fbe6e9}
.recommend{background:#fdecef!important}
.profit-col.frz,.stat.frozen{background:#fdf1f2;border-color:var(--brand-line)}
.profit-col.frz .sub-item{background:#fff;border-color:var(--brand-line)}
.dlg{border-color:var(--brand-line)}
.mask{background:rgba(90,8,20,.42)}
#toast{background:#7a0b1d}
td.neg,.stat b.neg,.profit-hd .v.neg{color:#b91c1c}


/* ============================================================
 * 正式系统布局（在评估演示稿红主题基础上追加，2026-11-15）
 * ============================================================ */
body{padding:0}
button, input, select{font-family:inherit}

/* ---------- 登录 ---------- */
#login-view{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{width:100%;max-width:390px;background:#fff;border:1px solid var(--brand-line);border-radius:16px;padding:30px 30px 26px;box-shadow:0 18px 50px rgba(140,10,29,.16)}
.login-brand{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:800;color:var(--brand);letter-spacing:.5px}
.login-logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#9c0c23,#e0343f);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:16px;font-weight:700}
.login-sub{font-size:12px;color:var(--ink3);margin:8px 0 20px}
.login-err{display:none;background:#fdeceb;color:#b91c1c;border:1px solid #f3c2c9;border-radius:8px;padding:8px 11px;font-size:12px;margin-bottom:12px}
.login-err.on{display:block}
.login-card input{width:100%;padding:10px 12px;margin-bottom:12px;font-size:14px;border:1px solid var(--line);border-radius:9px}
.login-card input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-bg)}
.login-card button{width:100%;padding:11px;font-size:14px;font-weight:700;margin-top:4px}
.login-foot{font-size:11px;color:var(--ink3);text-align:center;margin-top:18px;line-height:1.7}

/* ---------- 顶栏 ---------- */
#app-view{min-height:100vh}
.app-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:linear-gradient(100deg,#8c0a1d 0%,#c8102e 55%,#e0343f 100%);
  border-bottom:1px solid #7d091a;padding:13px 26px;color:#fff;box-shadow:0 4px 18px rgba(140,10,29,.18)}
.app-top .brand{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:800;letter-spacing:.6px;white-space:nowrap}
.app-top .logo{width:28px;height:28px;border-radius:8px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.4);
  display:inline-flex;align-items:center;justify-content:center;font-size:14px}
.app-top-r{display:flex;align-items:center;gap:12px;font-size:12px;color:rgba(255,255,255,.88)}
.top-user{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3);border-radius:999px;padding:3px 11px;font-weight:700;color:#fff}
.top-btn{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.42);color:#fff;padding:5px 12px}
.top-btn:hover:not(:disabled){background:rgba(255,255,255,.26);color:#fff;border-color:#fff}

/* ---------- 主体 ---------- */
.app-body{display:grid;grid-template-columns:212px minmax(0,1fr);gap:14px;max-width:1500px;margin:0 auto;padding:16px 22px 48px}
.side{align-self:start;min-height:420px}
.side-foot{margin-top:14px;padding:10px;border-top:1px solid rgba(255,255,255,.24);font-size:11px;color:rgba(255,255,255,.72);line-height:1.8}
.side-foot b{color:#ffe6a6;font-size:12px}
.main{min-height:560px}
.main-hd{border-bottom:1px solid var(--line2);padding-bottom:12px}
#view-body{padding-top:14px}

/* ---------- 工具栏 / 表单 ---------- */
.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.toolbar .grow{flex:1}
.f-row{display:grid;grid-template-columns:104px minmax(0,1fr);gap:10px;align-items:center;margin-bottom:11px}
.f-row>label{font-size:13px;color:var(--ink2);text-align:right}
.f-row input,.f-row select,.f-row textarea{width:100%;padding:8px 10px;font-size:13px}
.f-row textarea{resize:vertical;min-height:60px}
.f-note{grid-column:2;font-size:11px;color:var(--ink3);line-height:1.7}
.mini{padding:3px 8px;font-size:11px;border-radius:6px}
.rec-act{white-space:nowrap}
.empty{text-align:center;color:var(--ink3);padding:26px 0;font-size:13px}
.sec-title{font-size:14px;font-weight:700;margin:18px 0 10px;color:var(--ink)}
.sec-title:first-child{margin-top:0}
.divider{height:1px;background:var(--line2);margin:16px 0}

/* ---------- 门禁条 ---------- */
.gate input{width:190px}
.gate .g-msg{font-size:12px;color:var(--ink3)}

/* ---------- 板块与选项管理 ---------- */
.cfg-grid{display:grid;grid-template-columns:220px minmax(0,1fr);gap:12px}
.cfg-list button{display:block;width:100%;text-align:left;margin-bottom:6px;padding:8px 10px}
.cfg-list button.on{background:var(--brand-bg);border-color:var(--brand);color:var(--brand)}
.cfg-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.cfg-head h3{margin:0}
.cfg-count{font-size:11px;font-weight:700;color:var(--brand);background:var(--brand-bg);border-radius:999px;padding:2px 9px}
.cfg-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.cfg-tabs button.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.cfg-view-row{display:grid;grid-template-columns:26px 1.2fr 1.4fr 110px 64px 80px;gap:8px;align-items:center;
  border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:6px;background:#fff;font-size:12px}
.cfg-view-row input,.cfg-view-row select{width:100%;padding:5px 7px;font-size:12px}
.cfg-view-row .idx{color:var(--ink3);text-align:center;font-weight:700}
.cfg-ft{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--line2)}
.sys-note{font-size:12px;color:var(--ink3);line-height:1.8;background:var(--gray);border:1px solid var(--line2);border-radius:8px;padding:10px 12px;margin-bottom:12px}

/* ---------- 系统管理卡片 ---------- */
.sys-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.sys-card{border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:#fff}
.sys-card h3{margin:0 0 8px;font-size:14px}
.sys-card .desc{font-size:12px;color:var(--ink3);line-height:1.8;margin-bottom:10px}
.sys-card .row{gap:8px}
.sys-card input{width:170px}

@media(max-width:900px){
  .app-body{grid-template-columns:1fr;padding:12px}
  .side{min-height:0}
  .cfg-grid{grid-template-columns:1fr}
  .sys-grid{grid-template-columns:1fr}
  .cfg-view-row{grid-template-columns:24px 1fr 1fr;gap:6px}
  .sum-detail,.stats,.profit-grid{grid-template-columns:1fr 1fr}
}
