/* ==========================================================================
   晨星食品标签审核系统 —— E「出行蓝」界面层
   参考携程首页的形体：白顶栏 + 搜索胶囊 → 蓝色渐变页头 → 白色圆角卡片 → 橙色只做强调
   本文件在每页自有样式之后加载，只做覆盖，不改页面脚本与数据结构。
   ========================================================================== */

/* ---------- 1. 变量 ---------- */
.t-e{
  --blue:#0A7FF0;
  --blue-dk:#0069D9;
  --blue-cy:#25B6F6;
  --blue-lt:#EAF4FF;

  --navy:#16202E;
  --bg:#F3F6FA;
  --line:#E5EAF2;
  --line2:#EFF3F8;
  --txt:#16202E;
  --muted:#8B99AC;
  --ink2:#4E5D72;

  --ok:#12805A;
  --warn:#C97A0A;
  --bad:#E23D2E;

  --r-s:10px;
  --r-m:14px;
  --r-l:18px;
  --sh-1:0 2px 10px rgba(20,50,90,.05);
  --sh-2:0 6px 22px rgba(20,50,90,.07);
  --sh-3:0 12px 34px rgba(10,110,220,.18);

  --maxw:1440px;
  --pad:32px;

  --sans:"Segoe UI","Microsoft YaHei","PingFang SC",system-ui,sans-serif;
}

/* ---------- 2. 基础 ---------- */
html{background:#F3F6FA}
body.t-e{
  display:block;
  font-family:var(--sans);
  background:var(--bg);
  color:var(--txt);
  min-height:100vh;
  padding:0;
  -webkit-font-smoothing:antialiased;
}
.t-e main{
  max-width:var(--maxw);
  margin:0 auto;
  padding:0 var(--pad) 80px;
}
.t-e main > .subtabs:first-child,
.t-e main > .tabs:first-child{margin-top:20px}
.t-e .hidden{display:none !important}
.t-e a{color:var(--blue)}
.t-e ::-webkit-scrollbar{width:10px;height:10px}
.t-e ::-webkit-scrollbar-thumb{background:#D5DEEC;border-radius:6px}
.t-e ::-webkit-scrollbar-thumb:hover{background:#BFCBE0}
.t-e ::-webkit-scrollbar-track{background:transparent}

/* ---------- 3. 顶栏 ---------- */
.t-e .tb{
  position:sticky;top:0;z-index:50;
  height:68px;display:flex;align-items:center;gap:14px;
  padding:0 var(--pad);
  background:#fff;
  border-bottom:1px solid #E8EDF5;
  box-shadow:0 1px 0 rgba(20,50,90,.03),0 6px 18px rgba(20,50,90,.04);
}
.t-e .tb .brand{
  display:flex;align-items:center;gap:11px;flex:0 0 auto;
  text-decoration:none;color:inherit;
}
.t-e .tb .brand .mk{
  width:36px;height:36px;border-radius:10px;
  display:grid;place-items:center;
  background:linear-gradient(135deg,#0086F6,#25B6F6);
  color:#fff;font-size:17px;font-weight:700;
  box-shadow:0 4px 12px rgba(10,127,240,.28);
}
.t-e .tb .brand .tx b{
  display:block;font-size:15.5px;font-weight:700;letter-spacing:.01em;
  color:#16202E;line-height:1.25;white-space:nowrap;
}
.t-e .tb .brand .tx span{
  display:block;font-size:8.5px;letter-spacing:.18em;color:#9AA7B8;margin-top:2px;
}

/* 搜索胶囊 */
.t-e .srch{
  display:flex;align-items:center;gap:8px;
  flex:0 1 280px;height:38px;margin-left:10px;padding:0 14px;
  background:#F3F6FA;border:1px solid #E9EFF7;border-radius:999px;
  color:#9AA7B8;
}
.t-e .srch svg{width:15px;height:15px;flex:0 0 auto;stroke:#9AA7B8;fill:none;stroke-width:2}
.t-e .srch input{
  width:100%;border:0;background:transparent;outline:none;
  font-size:12.5px;font-family:inherit;color:#16202E;padding:0;
}
.t-e .srch input::placeholder{color:#A6B2C2}

/* 模块导航 */
.t-e .tnav{display:flex;align-items:center;gap:2px;margin-left:auto}
.t-e .tnav a{
  display:flex;align-items:center;gap:6px;
  height:36px;padding:0 12px;border-radius:9px;
  font-size:13px;color:#5B6B80;text-decoration:none;white-space:nowrap;
  transition:background .16s,color .16s;
}
.t-e .tnav a i{font-style:normal;font-size:10px;color:#B9C6D6;letter-spacing:.02em}
.t-e .tnav a:hover{background:#F1F6FD;color:#16202E}
.t-e .tnav a.on{background:#EAF4FF;color:var(--blue);font-weight:600}
.t-e .tnav a.on i{color:var(--blue);opacity:.62}

/* 用户区 */
.t-e .tb .me{
  display:flex;align-items:center;gap:10px;flex:0 0 auto;
  margin-left:8px;padding:0 0 0 16px;border-left:1px solid var(--line2);
  font-size:12.5px;color:#8B99AC;background:none;height:auto;
}
.t-e .tb .me b{color:#16202E;font-weight:600;display:inline}
.t-e .tb .me .role{
  background:#EAF4FF;color:var(--blue);border-radius:999px;
  padding:1px 7px;font-size:10.5px;margin-left:5px;
}
.t-e .tb .me a{
  color:#65758C;text-decoration:none;font-size:12.5px;cursor:pointer;
  padding:4px 9px;border-radius:999px;transition:.16s;
}
.t-e .tb .me a:hover{background:#F1F6FD;color:var(--blue)}

/* ---------- 4. 页头（蓝色渐变卡） ---------- */
.t-e .ph{
  position:relative;overflow:hidden;
  border-radius:20px;
  padding:30px 36px 32px;
  margin:22px 0 18px;
  background:linear-gradient(103deg,#0072F0 0%,#1D93F5 54%,#25B6F6 100%);
  color:#fff;
  box-shadow:0 12px 34px rgba(10,110,220,.18);
}
.t-e .ph::before{
  content:"";position:absolute;right:-70px;top:-120px;
  width:340px;height:340px;border-radius:50%;background:rgba(255,255,255,.10);
}
.t-e .ph::after{
  content:"";position:absolute;right:120px;bottom:-150px;
  width:260px;height:260px;border-radius:50%;background:rgba(255,255,255,.07);
}
.t-e .ph > *{position:relative;z-index:1}
.t-e .ph .kick{
  display:flex;align-items:center;gap:10px;
  font-size:11px;letter-spacing:.16em;color:rgba(255,255,255,.86);
}
.t-e .ph .kick::before{
  content:"";width:22px;height:2px;border-radius:2px;background:rgba(255,255,255,.72);
}
.t-e .ph h1{
  margin:11px 0 0;font-size:clamp(28px,2.7vw,38px);font-weight:700;
  letter-spacing:.01em;line-height:1.22;color:#fff;
}
.t-e .ph .lede{
  margin:9px 0 0;font-size:13.5px;line-height:1.8;
  color:rgba(255,255,255,.86);max-width:76ch;
}
.t-e .ph .phno{
  position:absolute;right:26px;bottom:-16px;z-index:0;
  font-size:clamp(88px,7.6vw,118px);font-weight:700;line-height:1;
  letter-spacing:-.03em;color:rgba(255,255,255,.19);
  pointer-events:none;user-select:none;
}
.t-e .ph .phno span{color:rgba(255,255,255,.12)}

/* ---------- 5. 页内标签（次级导航） ---------- */
.t-e .subtabs,
.t-e .tabs{
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  margin:0 0 14px;
}
.t-e .subtabs a,
.t-e .tabs a{
  height:33px;padding:0 15px;border-radius:999px;
  display:inline-flex;align-items:center;
  background:#fff;border:1px solid var(--line);
  font-size:12.5px;color:#4E5D72;text-decoration:none;cursor:pointer;
  transition:.16s;
}
.t-e .subtabs a:hover,
.t-e .tabs a:hover{border-color:#BFD6F0;color:var(--blue)}
.t-e .subtabs a.on,
.t-e .tabs a.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}

/* ---------- 5.1 工具栏 ---------- */
.t-e .bar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0 0 14px;
}
.t-e .bar h2{font-size:17px;font-weight:700;color:#16202E;margin-right:auto;letter-spacing:.01em}
.t-e .bar h2 small{font-weight:400;color:#9AA7B8;font-size:12px;margin-left:8px}
.t-e .bar input.search{margin-right:auto}
.t-e.pg-materials .bar h2,
.t-e.pg-reports .bar h2,
.t-e.pg-rd .bar h2{display:none}
.t-e.pg-ledger .bar h2{margin-right:auto}
.t-e.pg-ledger .bar input.search{margin-right:0}
/* 物料页只留一个主按钮：「导入清单」退为次要 */
.t-e.pg-materials #impBtn{
  background:#fff;border-color:#DCE4EF;color:#40506A;box-shadow:none;
}
.t-e.pg-materials #impBtn:hover{border-color:#9CC6F2;color:var(--blue);background:#F7FBFF}

/* ---------- 6. 按钮 ---------- */
.t-e .btn{
  height:38px;padding:0 16px;border-radius:9px;
  border:1px solid transparent;
  background:linear-gradient(135deg,#0A7FF0,#25B6F6);
  color:#fff;font-size:13px;font-family:inherit;font-weight:500;
  cursor:pointer;white-space:nowrap;
  box-shadow:0 4px 12px rgba(10,127,240,.22);
  transition:box-shadow .18s,background .18s,color .18s,border-color .18s;
}
.t-e .btn:hover{background:linear-gradient(135deg,#0069D9,#12A0F5);box-shadow:0 6px 16px rgba(10,127,240,.28)}
.t-e .btn.ghost,.t-e .btn.gray{
  background:#fff;border-color:#DCE4EF;color:#40506A;box-shadow:none;
}
.t-e .btn.ghost:hover,.t-e .btn.gray:hover{border-color:#9CC6F2;color:var(--blue);background:#F7FBFF}
.t-e .btn.green{background:linear-gradient(135deg,#0A7FF0,#25B6F6);color:#fff;border-color:transparent}
.t-e .btn.green:hover{background:linear-gradient(135deg,#0069D9,#12A0F5)}
.t-e .btn.sm{height:30px;padding:0 11px;font-size:11.5px;border-radius:8px;box-shadow:none}
.t-e .btn:disabled{background:#EDF1F7;color:#A6B2C2;border-color:#E5EAF2;box-shadow:none;cursor:not-allowed}
.t-e .btn:disabled:hover{background:#EDF1F7;color:#A6B2C2}

/* ---------- 7. 卡片 ---------- */
.t-e .card{
  background:#fff;
  border:1px solid #EDF1F8;
  border-radius:var(--r-l);
  box-shadow:var(--sh-2);
  padding:22px 24px;
  margin-bottom:16px;
}
.t-e .card h3{
  font-size:14px;font-weight:600;color:#16202E;
  letter-spacing:.01em;margin-bottom:14px;
}
.t-e .card > h3:first-child{margin-top:-2px}

/* ---------- 8. 标签 ---------- */
.t-e .tag{
  display:inline-flex;align-items:center;justify-content:center;
  height:23px;padding:0 9px;border:0;border-radius:999px;
  font-size:11.5px;font-weight:500;letter-spacing:0;
  background:#F1F5FB;color:#65758C;
  vertical-align:middle;
}
.t-e .t-blue{background:#EAF4FF;color:#0A7FF0}
.t-e .t-green{background:#E7F7EF;color:#12805A}
.t-e .t-amber{background:#FFF4E4;color:#C97A0A}
.t-e .t-red{background:#FFEDEA;color:#D93A2B}
.t-e .t-grey{background:#F1F4F9;color:#7B8A9E}
.t-e .t-purple{background:#F2EEFF;color:#5B49D6}
.t-e .tag.ok,.t-e .ok{background:#E7F7EF;color:#12805A}
.t-e .tag.no{background:#FFEDEA;color:#D93A2B}
.t-e .tag.wa{background:#FFF4E4;color:#C97A0A}

/* ---------- 9. 表格 ---------- */
.t-e table{width:100%;border-collapse:separate;border-spacing:0;font-size:12.8px}
.t-e th{
  background:#F7FAFE;
  color:#8B99AC;font-size:11.5px;font-weight:500;letter-spacing:.03em;
  text-align:left;padding:11px 12px;white-space:nowrap;
  border-bottom:1px solid var(--line);
}
.t-e th:first-child{border-top-left-radius:10px}
.t-e th:last-child{border-top-right-radius:10px}
.t-e td{
  padding:11px 12px;border-bottom:1px solid var(--line2);
  vertical-align:middle;color:#33415C;
}
.t-e tbody tr:last-child td{border-bottom:0}
.t-e tbody tr:hover td{background:#F8FBFF}
.t-e tr.grp td{background:#F4F8FD;color:#16202E;font-weight:600;font-size:12.5px;padding:9px 12px}
.t-e .empty{color:#9AA7B8;font-size:12.5px;padding:44px 0;text-align:center}

/* ---------- 10. 表单 ---------- */
.t-e input[type=text],.t-e input[type=number],.t-e input[type=date],
.t-e input[type=password],.t-e select,.t-e textarea{
  border:1px solid #E1E8F2;border-radius:9px;background:#fff;
  font-family:inherit;font-size:13px;color:#16202E;
  padding:8px 11px;outline:none;
  transition:border-color .16s,box-shadow .16s;
}
.t-e input:focus,.t-e select:focus,.t-e textarea:focus{
  border-color:var(--blue);box-shadow:0 0 0 3px rgba(10,127,240,.12);
}
.t-e input.search{
  background:#fff;border:1px solid #E1E8F2;border-radius:999px;
  padding:0 15px;height:38px;
}
.t-e input.search:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(10,127,240,.12)}

/* ---------- 11. 筛选胶囊 ---------- */
.t-e .chips{gap:7px;margin-bottom:10px}
.t-e .chip{
  height:32px;display:inline-flex;align-items:center;
  padding:0 13px;border:1px solid var(--line);border-radius:999px;
  background:#fff;color:#4E5D72;font-size:12.5px;cursor:pointer;
  white-space:nowrap;transition:.16s;
}
.t-e .chip:hover{border-color:#BFD6F0;color:var(--blue)}
.t-e .chip.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.t-e .chip.on span{color:rgba(255,255,255,.78)}
.t-e .chips .cl{font-size:12px;color:#9AA7B8}

/* ---------- 12. 数字卡 ---------- */
.t-e .stats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:16px}
.t-e .stat{
  background:#fff;border:1px solid #EDF1F8;border-radius:var(--r-m);
  box-shadow:var(--sh-1);padding:16px 18px;
}
.t-e .stat span{display:block;font-size:12px;color:#8B99AC;letter-spacing:.01em}
.t-e .stat b{display:block;margin-top:7px;font-size:30px;font-weight:700;color:#16202E;line-height:1.1}
.t-e .stat.warn b{color:#C97A0A}
.t-e .stat.bad b{color:#D93A2B}
.t-e .stat.good b{color:#12805A}

/* ---------- 13. 提示条 ---------- */
.t-e .alert{
  background:linear-gradient(112deg,#FFF6EC,#FFEDE7);
  border:1px solid #FFDCCB;border-radius:var(--r-m);
  padding:12px 18px;color:#8A4A2A;font-size:12.8px;line-height:1.8;
  margin-bottom:12px;box-shadow:var(--sh-1);
}
.t-e .alert b{color:#C0492E}
.t-e .alert a{color:var(--blue);cursor:pointer;margin-left:6px}
.t-e .alert.red{background:linear-gradient(112deg,#FFF1EF,#FFE7E3);border-color:#FFD2CB;color:#8A3020}
.t-e .alert.red b{color:#C0392B}

/* ---------- 14. 上传 / 队列 ---------- */
.t-e .drop{
  border:1.5px dashed #BBD8F7;background:#F8FBFF;
  border-radius:var(--r-m);padding:34px 20px;
  transition:.18s;
}
.t-e .drop:hover,.t-e .drop.over{border-color:var(--blue);background:#F2F8FF}
.t-e .drop .i{color:var(--blue);font-size:26px;margin-bottom:8px}
.t-e .drop .t{font-size:16px;font-weight:600;color:#16202E}
.t-e .drop .s{font-size:12px;color:#8B99AC;margin-top:6px}
.t-e .queue{margin-top:14px;border:0}
.t-e .queue .qi{
  border-bottom:1px solid var(--line2);border-radius:9px;padding:10px 8px;
  transition:background .16s;
}
.t-e .queue .qi:hover{background:#F8FBFF}
.t-e .queue .qi.cur{background:#F2F8FF;box-shadow:inset 3px 0 0 var(--blue)}
.t-e .queue .qi .n{background:#EEF4FC;color:#5B7C9E;border-radius:7px}
.t-e .queue .qi .st.busy{color:var(--blue)}

/* ---------- 15. 判定区 ---------- */
/* .verdict 是结论文字本身（颜色由脚本内联给出），这里只放大，不做底色 */
.t-e .verdict{font-size:23px;font-weight:700;line-height:1.25;letter-spacing:.01em}
.t-e .kv{gap:8px 0;margin-top:12px}
.t-e .kv div{
  background:none;border:0;border-left:1px solid var(--line2);border-radius:0;
  padding:1px 16px;font-size:11.5px;color:#8B99AC;
}
.t-e .kv div:first-child{border-left:0;padding-left:0}
.t-e .kv div b{color:#16202E;font-size:14px;font-weight:600;margin-top:3px}

/* ---------- 16. 审核记录分组 ---------- */
.t-e .grp{
  background:#fff;border:1px solid #EDF1F8;border-radius:var(--r-l);
  padding:0 22px 4px;margin-bottom:14px;box-shadow:var(--sh-1);
}
.t-e .grp.alert,.t-e .grp.risk{
  border-color:#FFD6CC;
  box-shadow:0 0 0 1px #FFD9CF,0 6px 20px rgba(217,58,43,.07);
}
.t-e .grp .gh{border-bottom:1px solid var(--line2);padding:16px 0 13px}
.t-e .grp .gh span{font-size:11.5px;color:#9AA7B8}
.t-e .riskbar{
  background:linear-gradient(112deg,#FFF1EF,#FFE7E3);
  border:1px solid #FFD2CB;border-radius:var(--r-m);
  padding:11px 16px;color:#8A3020;font-size:12.8px;margin-bottom:14px;
}
.t-e .riskbar b{color:#C0392B}
.t-e .ver{border-bottom:1px solid var(--line2);padding:12px 6px;border-radius:8px}
.t-e .ver:hover{background:#F8FBFF}
.t-e .filters{gap:6px;border-bottom:0;margin-bottom:10px}
.t-e .filters .f{
  height:31px;display:inline-flex;align-items:center;
  padding:0 12px;border:1px solid var(--line);border-radius:999px;
  background:#fff;color:#4E5D72;font-size:12px;cursor:pointer;
}
.t-e .filters .f.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.t-e .filters .f span{opacity:.7;margin-left:4px}

/* ---------- 17. 弹层 / 抽屉 ---------- */
.t-e .mask{background:rgba(12,24,40,.45);backdrop-filter:blur(2px);z-index:80}
.t-e .modal{
  background:#fff;border-radius:20px;box-shadow:0 30px 70px rgba(8,30,60,.28);
  border:0;
}
.t-e .modal .mh{border-bottom:1px solid var(--line2);padding:18px 22px}
.t-e .modal .mh h3{font-size:16px;font-weight:700;color:#16202E}
.t-e .modal .mf{border-top:1px solid var(--line2);padding:14px 22px}
.t-e .modal .x{color:#9AA7B8}
.t-e .modal .x:hover{color:#16202E}
.t-e .drawer{
  z-index:85;
  border-radius:18px 0 0 18px;box-shadow:-20px 0 60px rgba(8,30,60,.20);
  border-left:1px solid var(--line2);
}
.t-e #imgMask{z-index:90}
.t-e .toast{z-index:95}

/* ---------- 18. 页脚 ---------- */
.t-e footer{
  text-align:center;color:#A6B2C2;font-size:11.5px;
  padding:8px 0 34px;
}

/* ---------- 19. 首页 ---------- */
.t-e .hero{
  position:relative;overflow:hidden;
  display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:34px;
  border-radius:22px;padding:38px 40px;margin:22px 0 18px;
  background:linear-gradient(108deg,#0072F0 0%,#1B95F5 58%,#2FBDF6 100%);
  color:#fff;box-shadow:0 14px 40px rgba(10,110,220,.20);
}
.t-e .hero::before{
  content:"";position:absolute;right:-60px;top:-130px;
  width:380px;height:380px;border-radius:50%;background:rgba(255,255,255,.10);
}
.t-e .hero::after{
  content:"";position:absolute;left:42%;bottom:-190px;
  width:320px;height:320px;border-radius:50%;background:rgba(255,255,255,.06);
}
.t-e .hero > *{position:relative;z-index:1}
.t-e .hero .kick{
  display:flex;align-items:center;gap:10px;
  font-size:11px;letter-spacing:.18em;color:rgba(255,255,255,.84);
}
.t-e .hero .kick::before{content:"";width:22px;height:2px;border-radius:2px;background:rgba(255,255,255,.7)}
.t-e .hero h1{
  margin:14px 0 0;font-size:clamp(32px,3.2vw,46px);font-weight:700;
  line-height:1.2;letter-spacing:.01em;color:#fff;
}
.t-e .hero h1 em{font-style:normal;color:#FFE0B8}
.t-e .hero p{
  margin:14px 0 0;font-size:13.5px;line-height:1.9;
  color:rgba(255,255,255,.86);max-width:52ch;
}
.t-e .hero .hero-r{
  background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.20);
  border-radius:16px;padding:18px 20px;
  display:flex;flex-direction:column;
}
.t-e .hero .datel{display:flex;align-items:baseline;justify-content:space-between}
.t-e .hero .datel span{font-size:11px;letter-spacing:.16em;color:rgba(255,255,255,.82)}
.t-e .hero .datel b{font-size:40px;font-weight:700;line-height:1;color:#fff}
.t-e .hero .hero-k{
  display:flex;align-items:center;justify-content:space-between;
  padding:9px 0;border-top:1px solid rgba(255,255,255,.22);
  font-size:12px;color:rgba(255,255,255,.84);
}
.t-e .hero .hero-k:first-of-type{margin-top:14px}
.t-e .hero .hero-k b{font-size:14.5px;font-weight:600;color:#fff}

.t-e .kpirow{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:18px}
.t-e .kpirow .kpi{
  background:#fff;border:1px solid #EDF1F8;border-radius:var(--r-m);
  box-shadow:var(--sh-1);padding:16px 18px;
}
.t-e .kpirow .kpi .lb{display:flex;align-items:center;gap:7px;font-size:12px;color:#8B99AC}
.t-e .kpirow .kpi .lb i{width:6px;height:6px;border-radius:50%;background:var(--blue)}
.t-e .kpirow .kpi b{display:block;margin-top:7px;font-size:30px;font-weight:700;color:#16202E;line-height:1.1}
.t-e .kpirow .kpi b em{font-size:12px;font-style:normal;font-weight:500;color:#8B99AC;margin-left:5px}
.t-e .kpirow .kpi .dfs{font-size:11.5px;color:#9AA7B8;margin-top:5px}
.t-e .kpirow .kpi.warn .lb i{background:#C97A0A}
.t-e .kpirow .kpi.warn b{color:#C97A0A}
.t-e .kpirow .kpi.bad .lb i{background:#D93A2B}
.t-e .kpirow .kpi.bad b{color:#D93A2B}

.t-e .sechd{display:flex;align-items:baseline;gap:12px;margin:26px 0 14px}
.t-e .sechd h2{font-size:19px;font-weight:700;color:#16202E;letter-spacing:.01em}
.t-e .sechd span{font-size:12px;color:#9AA7B8}

.t-e .mods{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.t-e .mod{
  display:grid;grid-template-columns:46px 1fr auto;grid-template-rows:auto auto;
  align-items:center;gap:4px 14px;
  background:#fff;border:1px solid #EDF1F8;border-radius:var(--r-m);
  box-shadow:var(--sh-1);padding:18px;
  text-decoration:none;color:inherit;
  transition:transform .18s,box-shadow .18s,border-color .18s;
}
.t-e .mod:hover{border-color:#CFE3F9;box-shadow:0 10px 26px rgba(20,50,90,.10);transform:translateY(-2px)}
.t-e .mod .no{
  grid-column:1;grid-row:1 / 3;
  width:46px;height:46px;border-radius:13px;
  display:grid;place-items:center;
  background:linear-gradient(135deg,#EAF4FF,#D6E9FF);color:#0A7FF0;
  font-size:13px;font-weight:700;
}
.t-e .mod:nth-child(2) .no{background:linear-gradient(135deg,#FFF2E4,#FFE0C6);color:#E8760C}
.t-e .mod:nth-child(3) .no{background:linear-gradient(135deg,#E8F8F3,#D2F0E6);color:#12805A}
.t-e .mod:nth-child(4) .no{background:linear-gradient(135deg,#F0EDFF,#E1DBFF);color:#5B49D6}
.t-e .mod:nth-child(5) .no{background:linear-gradient(135deg,#E9F7FF,#D4EEFF);color:#0C87C9}
.t-e .mod:nth-child(6) .no{background:linear-gradient(135deg,#FFEFEF,#FFDCDC);color:#D93A2B}
.t-e .mod .nm{grid-column:2;grid-row:1;font-size:15.5px;font-weight:600;color:#16202E;line-height:1.3}
.t-e .mod .ds{grid-column:2;grid-row:2;font-size:12px;color:#8B99AC;line-height:1.55}
.t-e .mod .ar{grid-column:3;grid-row:1 / 3;color:#C2CEDE;font-size:14px;transition:.18s}
.t-e .mod:hover .ar{color:var(--blue);transform:translateX(3px)}

/* ---------- 19.1 弹窗表单：把输入框放宽一点，密集表单更好读 ---------- */
.t-e .modal input[type=text],
.t-e .modal input[type=date],
.t-e .modal input[type=number],
.t-e .modal input:not([type]),
.t-e .modal select{
  height:34px;padding:0 10px;font-size:12.8px;border-radius:8px;
}
.t-e .modal textarea{padding:9px 10px;font-size:12.8px;border-radius:8px;line-height:1.6}
.t-e .modal label{font-size:11.5px;color:#8B99AC}
.t-e .prog{height:7px;border-radius:999px;background:#EDF2F9}
.t-e .prog i{background:linear-gradient(90deg,#0A7FF0,#25B6F6);border-radius:999px}
.t-e .pct{font-size:11px;color:#8B99AC}

/* ---------- 20. 登录 ---------- */
.t-e.pg-login{
  display:grid;grid-template-columns:1.02fr .98fr;min-height:100vh;
  background:#F3F6FA;padding:0;
}
.t-e .lg-l{
  position:relative;overflow:hidden;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:54px 58px 46px;
  background:linear-gradient(135deg,#0069D9 0%,#0A8AF5 52%,#25B6F6 100%);
  color:#fff;
}
.t-e .lg-l::before{
  content:"";position:absolute;right:-120px;top:-140px;
  width:460px;height:460px;border-radius:50%;background:rgba(255,255,255,.10);
}
.t-e .lg-l::after{
  content:"";position:absolute;left:-80px;bottom:-180px;
  width:400px;height:400px;border-radius:50%;background:rgba(255,255,255,.07);
}
.t-e .lg-l > *{position:relative;z-index:1}
.t-e .lg-l .brand{display:flex;align-items:center;gap:12px}
.t-e .lg-l .brand .mk{
  width:38px;height:38px;border-radius:11px;
  background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.5);
  display:grid;place-items:center;font-size:18px;font-weight:700;color:#fff;
}
.t-e .lg-l .brand b{display:block;font-size:15px;font-weight:700;color:#fff;letter-spacing:.02em}
.t-e .lg-l .brand span{display:block;font-size:8.5px;letter-spacing:.2em;color:rgba(255,255,255,.7);margin-top:2px}
.t-e .lg-l .mid h1{
  margin:0;font-size:clamp(34px,3.4vw,52px);line-height:1.16;
  font-weight:700;letter-spacing:.01em;color:#fff;
}
.t-e .lg-l .mid .kick{
  display:flex;align-items:center;gap:10px;margin-bottom:16px;
  font-size:11px;letter-spacing:.2em;color:rgba(255,255,255,.82);
}
.t-e .lg-l .mid .kick::before{content:"";width:26px;height:2px;background:rgba(255,255,255,.75)}
.t-e .lg-l .mid p{font-size:13.5px;line-height:1.95;color:rgba(255,255,255,.84);margin-top:16px;max-width:40ch}
.t-e .lg-l .foot{font-size:11.5px;color:rgba(255,255,255,.62);letter-spacing:.02em}
.t-e .lg-r{display:flex;align-items:center;justify-content:center;padding:40px}
.t-e .lg-r .box{
  width:100%;max-width:392px;background:#fff;border-radius:20px;
  padding:38px 36px 30px;box-shadow:0 24px 60px rgba(8,50,110,.16);
}
.t-e .lg-r .box .logo{
  width:44px;height:44px;border-radius:12px;margin-bottom:18px;
  background:linear-gradient(135deg,#0086F6,#25B6F6);color:#fff;
  display:grid;place-items:center;font-size:20px;font-weight:700;
  box-shadow:0 6px 16px rgba(10,127,240,.26);
}
.t-e .lg-r h1{font-size:21px;font-weight:700;color:#16202E;letter-spacing:.01em}
.t-e .lg-r .sub{font-size:12px;color:#8B99AC;margin-top:8px;line-height:1.7}
.t-e .lg-r label{display:block;font-size:11.5px;color:#8B99AC;letter-spacing:.04em;margin:18px 0 7px}
.t-e .lg-r input{
  width:100%;height:44px;padding:0 14px;border:1px solid #E1E8F2;border-radius:10px;
  background:#FAFCFF;font-size:14px;outline:none;font-family:inherit;
  transition:.16s;
}
.t-e .lg-r input:focus{border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(10,127,240,.12)}
.t-e .lg-r button{
  width:100%;height:46px;margin-top:24px;border:0;border-radius:10px;
  background:linear-gradient(135deg,#0A7FF0,#25B6F6);color:#fff;
  font-size:15px;font-family:inherit;font-weight:600;cursor:pointer;
  box-shadow:0 6px 18px rgba(10,127,240,.26);transition:.18s;
}
.t-e .lg-r button:hover{background:linear-gradient(135deg,#0069D9,#12A0F5)}
.t-e .lg-r button:disabled{background:#C3CEDA;box-shadow:none;cursor:not-allowed}
.t-e .lg-r .err{color:#D93A2B;font-size:12.5px;margin-top:12px;min-height:18px}
.t-e .lg-r .foot{margin-top:22px;font-size:11px;color:#A6B2C2;text-align:center;line-height:1.7}

/* ---------- 21. 响应式 ---------- */
@media (max-width:1520px){
  .t-e{--pad:26px}
  .t-e .tnav a{padding:0 10px;font-size:12.5px}
  .t-e .srch{flex-basis:220px}
}
@media (max-width:1366px){
  .t-e{--pad:22px;--maxw:1320px}
  .t-e .tnav a i{display:none}
  .t-e .tnav a{padding:0 9px}
  .t-e .srch{flex-basis:180px;margin-left:4px}
  .t-e .tb .brand .tx span{display:none}
}
@media (max-width:1300px){
  .t-e .srch{display:none}
  .t-e .tb .me b{display:none}
  .t-e .stats{grid-template-columns:repeat(3,1fr)}
  .t-e .mods{grid-template-columns:repeat(2,1fr)}
  .t-e .hero{grid-template-columns:1fr;gap:22px}
  .t-e .kpirow{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:980px){
  .t-e .tb{height:auto;flex-wrap:wrap;padding:10px var(--pad);gap:8px}
  .t-e .tnav{margin-left:0;width:100%;overflow-x:auto;padding-bottom:2px}
  .t-e.pg-login{grid-template-columns:1fr}
  .t-e .lg-l{display:none}
}
