:root{
  --pri:#0AA0B5;--pri-d:#087F90;--pri-deep:#05586A;--link:#1D5F8A;--link-d:#164A6C;
  --ink:#1C2B33;--ink2:#43535D;--ink3:#748691;
  --bd:#E3EBEE;--bg:#F4F9FA;--white:#fff;--deep:#07242C;
  --shadow:0 14px 34px rgba(9,60,80,.12);
  --r:6px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{font:14px/1.6 "MiSans","PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
button,input,select,textarea{font-family:inherit;font-size:14px;color:inherit}
button{cursor:pointer;border:0;background:none}
a{color:var(--link);text-decoration:none}

/* ============ 登录 ============ */
.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#07242C 0%,#05586A 60%,#087F90 100%);padding:24px}
.login-card{width:100%;max-width:880px;background:#fff;border-radius:12px;overflow:hidden;display:flex;
  box-shadow:0 24px 60px rgba(0,0,0,.35)}
.login-left{flex:1.05;padding:54px 44px;color:#fff;
  background:linear-gradient(150deg,#05586A,#07242C 70%);position:relative}
.login-left .lg-badge{width:54px;height:54px;border-radius:13px;background:#fff;display:flex;align-items:center;
  justify-content:center;margin-bottom:18px;box-shadow:0 8px 20px rgba(0,0,0,.25)}
.login-left .lg-badge img{width:34px;height:34px;object-fit:contain}
.login-left h1{font-size:26px;margin:0 0 10px;letter-spacing:1px}
.login-left p{color:rgba(255,255,255,.72);font-size:13.5px;line-height:1.9;margin:0}
.login-left .marks{margin-top:34px;display:flex;flex-direction:column;gap:12px}
.login-left .marks span{font-size:12.5px;color:rgba(255,255,255,.62);padding-left:16px;position:relative}
.login-left .marks span::before{content:"";position:absolute;left:0;top:8px;width:6px;height:6px;border-radius:50%;background:#3FC6D8}
.login-right{flex:1;padding:54px 46px}
.login-right h2{margin:0 0 6px;font-size:19px}
.login-right .sub{color:var(--ink3);font-size:12.5px;margin-bottom:26px}
.field{margin-bottom:16px}
.field label{display:block;font-size:12.5px;color:var(--ink2);margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;height:40px;padding:0 12px;border:1px solid var(--bd);
  border-radius:var(--r);background:#fff;outline:none;transition:.15s}
.field textarea{height:auto;padding:8px 12px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(12,156,140,.12)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 16px;
  border-radius:var(--r);font-size:13.5px;background:#fff;border:1px solid var(--bd);color:var(--ink2);transition:.15s}
.btn:hover{border-color:#C9D4DC;color:var(--ink)}
.btn-pri{background:var(--pri);border-color:var(--pri);color:#fff}
.btn-pri:hover{background:var(--pri-d);border-color:var(--pri-d);color:#fff}
.btn-block{width:100%;height:42px;font-size:15px;margin-top:8px}
.btn-sm{height:28px;padding:0 10px;font-size:12.5px}
.btn-red{color:#C0392B}
.login-tip{font-size:12px;color:var(--ink3);margin-top:14px;text-align:center}

/* ============ 主框架 ============ */
.app{display:none;height:100%;flex-direction:column}
.app.on{display:flex}
.topbar{height:56px;background:rgba(255,255,255,.9);backdrop-filter:blur(10px);border-bottom:1px solid var(--bd);display:flex;align-items:center;
  padding:0 16px;gap:14px;flex-shrink:0;position:relative;z-index:30}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:15.5px;letter-spacing:.5px;flex-shrink:0}
.brand span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand img{width:24px;height:24px;object-fit:contain}
.topbar .search{flex:1;max-width:300px;margin-left:8px;position:relative}
.topbar .search input{width:100%;height:32px;border:1px solid transparent;background:#F2F4F7;border-radius:16px;padding:0 12px 0 32px;outline:none}
.topbar .search input:focus{background:#fff;border-color:var(--pri)}
.topbar .search::before{content:"⌕";position:absolute;left:12px;top:4px;color:var(--ink3);font-size:16px}
.topbar .spacer{flex:1}
.who{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink2)}
.who .av{width:26px;height:26px;border-radius:50%;background:#DCE9FF;color:var(--link);display:flex;
  align-items:center;justify-content:center;font-size:12px;font-weight:700}
.oa-btn{height:30px;padding:0 12px;border-radius:15px;font-size:12.5px;border:1px solid var(--bd);color:var(--ink2);background:#fff;flex-shrink:0;transition:.15s}
.oa-btn:hover{border-color:var(--pri);color:var(--pri)}
.icon-btn{width:30px;height:30px;border-radius:6px;color:var(--ink3);display:flex;align-items:center;justify-content:center;font-size:16px}
.icon-btn:hover{background:#F2F4F7;color:var(--ink)}
.menu-toggle{display:none}

.body{flex:1;display:flex;min-height:0}
.side{width:212px;background:#fff;border-right:1px solid var(--bd);overflow-y:auto;flex-shrink:0;padding:8px 0 20px}
.side::-webkit-scrollbar{width:5px}
.side::-webkit-scrollbar-thumb{background:#D8E4EA;border-radius:3px}
.side .grp{font-size:11.5px;color:var(--ink3);letter-spacing:1px;padding:14px 18px 6px}
.nav-item{display:flex;align-items:center;gap:10px;height:40px;padding:0 18px;font-size:13.5px;color:var(--ink2);cursor:pointer;position:relative}
.nav-item:hover{background:#F6F9FA;color:var(--ink)}
.nav-item.on{color:var(--pri);background:#EAF7F5;font-weight:700}
.nav-item.on::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--pri)}
.nav-item .ic{width:16px;text-align:center;font-size:15px;opacity:.85}

.main{flex:1;min-width:0;overflow:auto;padding:16px 20px 30px}
.crumb{font-size:12.5px;color:var(--ink3);margin-bottom:12px}
.crumb b{color:var(--ink);font-weight:600}

/* ============ 卡片 / 面板 ============ */
.panel{background:#fff;border:1px solid var(--bd);border-radius:12px;padding:16px 18px;margin-bottom:14px;box-shadow:0 1px 3px rgba(9,60,80,.04)}
.panel-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.panel-h h3{margin:0;font-size:15px;position:relative;padding-left:11px}
.panel-h h3::before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:3px;border-radius:2px;background:linear-gradient(180deg,#0AA0B5,#1D5F8A)}
.panel-h .more{font-size:12.5px;color:var(--ink3)}

/* 工作台 */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}
.kpi{background:#fff;border:1px solid var(--bd);border-radius:12px;padding:16px 18px;position:relative;overflow:hidden;transition:.18s}
.kpi:hover{box-shadow:0 8px 20px rgba(9,60,80,.1);transform:translateY(-2px)}
.kpi .t{font-size:12.5px;color:var(--ink3)}
.kpi .n{font-size:26px;font-weight:700;margin-top:6px;letter-spacing:-.5px}
.kpi .n small{font-size:12px;font-weight:400;color:var(--ink3);margin-left:4px}
.kpi .bar{position:absolute;left:0;top:0;width:3px;height:100%;background:linear-gradient(180deg,#0AA0B5,#3FC6D8)}
.kpi:nth-child(2) .bar{background:linear-gradient(180deg,#1D5F8A,#2E86B4)}
.kpi:nth-child(3) .bar{background:linear-gradient(180deg,#087F90,#0AA0B5)}
.kpi:nth-child(4) .bar{background:linear-gradient(180deg,#164A6C,#1D5F8A)}
.grid2{display:grid;grid-template-columns:1.35fr 1fr;gap:14px}
.list-line{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px dashed #EDF1F4;font-size:13px}
.list-line:last-child{border-bottom:0}
.list-line .l{display:flex;align-items:center;gap:10px;min-width:0}
.list-line .dot{width:6px;height:6px;border-radius:50%;background:var(--pri);flex-shrink:0}
.list-line .m{color:var(--ink3);font-size:12px}
.list-line .l span.txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 筛选 + 工具栏 */
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:14px}
.toolbar .fld{display:flex;flex-direction:column;gap:4px}
.toolbar .fld label{font-size:12px;color:var(--ink3)}
.toolbar input,.toolbar select{height:32px;border:1px solid var(--bd);border-radius:var(--r);padding:0 10px;background:#fff;outline:none;min-width:140px}
.toolbar input:focus,.toolbar select:focus{border-color:var(--pri)}
.toolbar .grow{flex:1}
.acts{display:flex;gap:8px;flex-wrap:wrap}

/* 表格 */
.tb-wrap{background:#fff;border:1px solid var(--bd);border-radius:12px;overflow:auto}
table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}
thead th{background:#F5F7F9;color:var(--ink2);font-weight:600;text-align:left;padding:11px 12px;
  border-bottom:1px solid var(--bd);position:sticky;top:0;z-index:2}
tbody td{padding:11px 12px;border-bottom:1px solid #F0F3F5;color:var(--ink)}
tbody tr:hover{background:#FAFCFC}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td.act{white-space:nowrap}
td.act button{color:var(--link);font-size:12.5px;margin-right:10px}
td.act button.del{color:#C0392B}
.empty{text-align:center;color:var(--ink3);padding:38px 0;font-size:13px}
.tag{display:inline-block;font-size:11.5px;padding:2px 8px;border-radius:10px;background:#EDF2F5;color:var(--ink2)}
.tag.ok{background:#E7F6F3;color:#0A8377}
.tag.warn{background:#FDF2E3;color:#B37A15}
.tag.gray{background:#EFF1F3;color:#7C8A96}
.foot{display:flex;align-items:center;justify-content:space-between;padding:12px 2px 0;font-size:12.5px;color:var(--ink3)}

/* 弹层 */
.mask{position:fixed;inset:0;background:rgba(20,32,40,.45);display:none;z-index:60;padding:24px;overflow:auto}
.mask.on{display:flex;align-items:flex-start;justify-content:center}
.dialog{background:#fff;border-radius:10px;width:100%;max-width:620px;box-shadow:0 20px 50px rgba(0,0,0,.25);margin:auto}
.dialog.wide{max-width:920px}
.dialog-h{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--bd)}
.dialog-h h3{margin:0;font-size:15.5px}
.dialog-b{padding:18px 20px}
.dialog-f{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--bd);background:#FAFBFC;border-radius:0 0 10px 10px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.form-grid .full{grid-column:1/-1}
.req::after{content:"*";color:#C0392B;margin-left:2px}
.mini-tb{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:6px}
.mini-tb th{background:#F5F7F9;padding:8px;border:1px solid var(--bd);font-weight:600;color:var(--ink2)}
.mini-tb td{padding:4px;border:1px solid var(--bd)}
.mini-tb input,.mini-tb select{width:100%;height:30px;border:1px solid transparent;background:transparent;padding:0 6px;outline:none;border-radius:4px}
.mini-tb input:focus,.mini-tb select:focus{border-color:var(--pri);background:#fff}
.toast{position:fixed;left:50%;bottom:40px;transform:translateX(-50%) translateY(20px);background:#1F2D3D;color:#fff;
  padding:10px 20px;border-radius:20px;font-size:13px;opacity:0;transition:.25s;z-index:99;pointer-events:none}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* ============ 响应式 ============ */
@media(max-width:900px){
  .login-card{flex-direction:column;max-width:400px}
  .login-left{padding:30px 26px}
  .login-left h1{font-size:20px}
  .login-left .marks{display:none}
  .login-right{padding:28px 26px}
  .menu-toggle{display:flex}
  .topbar{padding:0 12px;gap:10px}
  .topbar .search{display:none}
  .brand span{font-size:14px}
  .who .name{display:none}
  .side{position:fixed;left:0;top:56px;bottom:0;z-index:40;transform:translateX(-100%);transition:.22s;
    box-shadow:6px 0 24px rgba(0,0,0,.12);width:220px}
  .side.on{transform:none}
  .scrim{position:fixed;inset:56px 0 0;background:rgba(20,32,40,.35);z-index:35;display:none}
  .scrim.on{display:block}
  .main{padding:12px 12px 40px}
  .kpis{grid-template-columns:1fr 1fr;gap:10px}
  .kpi{padding:13px 14px}
  .kpi .n{font-size:21px}
  .grid2{grid-template-columns:1fr}
  .panel{padding:14px}
  .toolbar .fld,.toolbar input,.toolbar select{min-width:0;flex:1 1 44%}
  .form-grid{grid-template-columns:1fr}
  .list-line{flex-direction:column;align-items:flex-start;gap:3px}
  .list-line .m{font-size:11.5px}
  .mini-tb td select,.mini-tb td input{font-size:12.5px}
  .mask{padding:0}
  .dialog{border-radius:0;min-height:100%;max-width:none;margin:0}
  .dialog.wide{max-width:none}
  .dialog-f{border-radius:0;position:sticky;bottom:0}
}

/* ===== v3 三级菜单树 ===== */
.mfilter{padding:8px 12px 4px}
.mfilter input{width:100%;height:30px;border:1px solid var(--bd);border-radius:15px;padding:0 12px;font-size:12.5px;outline:none;background:#F7F9FA}
.mfilter input:focus{border-color:var(--pri);background:#fff}
.m1{display:flex;align-items:center;gap:9px;height:38px;padding:0 14px;font-size:13.5px;color:var(--ink);cursor:pointer;position:relative;margin-top:2px}
.m1 .ic{width:18px;text-align:center;flex-shrink:0}
.m1 .t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.m1 .ar{font-size:12px;color:#B9C6CF;transition:.18s}
.m1.open .ar{transform:rotate(90deg)}
.m1:hover{background:#F6F9FA}
.m1.on{color:var(--pri);background:#E8F5F7}
.m1.on::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--pri)}
.msub{display:none;padding:2px 0 6px;background:#FAFCFC;border-bottom:1px solid #F0F3F5}
.m1.open + .msub{display:block}
.m2{display:flex;align-items:center;gap:8px;height:34px;padding:0 14px 0 22px;font-size:13px;color:var(--ink2);cursor:pointer}
.m2:hover{color:var(--ink)}
.m2 .t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m2 .ar{font-size:11px;color:#C4CFD8;transition:.18s}
.m2.open .ar{transform:rotate(90deg)}
.m3{display:none;padding:1px 0 4px}
.m2.open + .m3{display:block}
.m2t{font-size:12px;color:var(--ink3);padding:6px 22px 2px;font-weight:600}
.m3i{display:flex;align-items:center;gap:7px;height:31px;padding:0 14px 0 34px;font-size:12.5px;color:var(--ink2);cursor:pointer;position:relative}
.m3i:hover{color:var(--ink);background:#F1F6F7}
.m3i.on{color:var(--pri);font-weight:600}
.m3i.on::before{content:"";position:absolute;left:22px;width:4px;height:4px;border-radius:50%;background:var(--pri)}
.m3i .ic{width:14px;text-align:center;font-size:13px;opacity:.85}
.m3i .ex{margin-left:auto;font-size:11px;color:#B9C6CF;opacity:0;transition:.15s}
.m3i.ext:hover .ex,.m3i.ext.on .ex{opacity:1;color:var(--link)}
.m2s{display:flex;align-items:center;gap:9px;height:36px;padding:0 14px 0 22px;font-size:13px;color:var(--ink2);cursor:pointer;position:relative}
.m2s:hover{background:#F6F9FA;color:var(--ink)}
.m2s.on{color:var(--pri);font-weight:600;background:#EAF7F5}
.m2s .ic{width:16px;text-align:center}
.mod-page{text-align:center;padding:44px 20px}
.mod-ic{font-size:34px;margin-bottom:10px}
.mod-page h3{margin:0 0 8px;font-size:18px}
.mod-page .ds{max-width:520px;margin:0 auto;color:var(--ink2);font-size:13px;line-height:1.9}
.mod-tags{margin-top:12px;display:flex;gap:8px;justify-content:center;flex-wrap:wrap}

/* ===== v4 门户风格（对齐官网设计语言） ===== */
/* ===== v5 精修层 ===== */
.login-wrap::before,.login-wrap::after{content:"";position:absolute;border-radius:50%;pointer-events:none}
.login-wrap::before{width:420px;height:420px;border:1px solid rgba(255,255,255,.07);top:-140px;right:-100px}
.login-wrap::after{width:280px;height:280px;border:1px solid rgba(255,255,255,.07);bottom:-90px;left:-60px}
.login-card{border-radius:16px}
.sec-k{font-size:11px;letter-spacing:4px;color:var(--pri);font-weight:700;margin:22px 0 3px}
.sec-t{font-size:17px;font-weight:700;margin-bottom:14px}
.m1 .ic{width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dialog{border-radius:14px}
.btn-pri{box-shadow:0 4px 12px rgba(10,160,181,.28)}
.btn-pri:active{transform:translateY(1px);box-shadow:none}
.chip:hover{border-color:var(--pri);color:var(--pri)}
.hero-deco{position:absolute;right:110px;top:0;height:100%;width:300px;opacity:.45;pointer-events:none}

.hero{background:linear-gradient(120deg,#07242C 0%,#05586A 55%,#087F90 100%);border-radius:14px;
  padding:30px 32px;color:#fff;display:flex;align-items:center;gap:24px;margin-bottom:14px;
  box-shadow:var(--shadow);position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;
  background:rgba(63,198,216,.14)}
.hero .kicker{font-size:11px;letter-spacing:4px;color:#3FC6D8;font-weight:700;margin-bottom:8px}
.hero h2{margin:0;font-size:22px;letter-spacing:.5px}
.hero p{margin:6px 0 0;font-size:13px;color:rgba(255,255,255,.72)}
.hero-l{flex:1.4;min-width:0}
.hero-r{flex-shrink:0;text-align:right;position:relative;z-index:1}
.hero-r .hn{font-size:34px;font-weight:700;line-height:1.1}
.hero-r .ht{font-size:12px;color:rgba(255,255,255,.6)}
.hero-r .hn2{margin-top:8px;font-size:12.5px;background:rgba(255,255,255,.12);border-radius:14px;padding:3px 12px;display:inline-block}
.hero-acts{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap}
.hchip{height:30px;padding:0 14px;border-radius:15px;font-size:12.5px;display:inline-flex;align-items:center;
  background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.22);cursor:pointer;transition:.15s}
.hchip:hover{background:rgba(255,255,255,.22)}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px}
.pcard{background:#fff;border:1px solid var(--bd);border-radius:10px;padding:16px 14px;display:block;
  cursor:pointer;transition:.16s;position:relative}
.pcard:hover{border-color:var(--pri);box-shadow:var(--shadow);transform:translateY(-2px)}
.pcard .pic{width:44px;height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  margin-bottom:10px;color:#fff}
.pcard .pn{font-weight:600;font-size:13.5px;color:var(--ink)}
.pcard .pd{font-size:11.5px;color:var(--ink3);margin-top:3px}
.pcard .pic.g0{background:linear-gradient(135deg,#0AA0B5,#3FC6D8)}.pcard .pic.g1{background:linear-gradient(135deg,#1D5F8A,#2E86B4)}.pcard .pic.g2{background:linear-gradient(135deg,#087F90,#0AA0B5)}
.pcard .pic.g3{background:linear-gradient(135deg,#164A6C,#1D5F8A)}.pcard .pic.g4{background:linear-gradient(135deg,#05586A,#087F90)}.pcard .pic.g5{background:linear-gradient(135deg,#0AA0B5,#1D5F8A)}
.pcard{border-radius:12px}
.pcard:hover{transform:translateY(-3px)}
.pcard:active{transform:translateY(-1px) scale(.985)}
.pcard .pd{color:var(--pri);font-weight:600}
.pcard.ext .pd{color:var(--ink3);font-weight:400}
.pcard.ext .ex{color:var(--pri)}
.mod-hero{border-radius:14px;padding:24px 28px;color:#fff;display:flex;align-items:center;gap:18px;
  margin-bottom:14px;box-shadow:var(--shadow)}
.mod-hero.g0{background:linear-gradient(120deg,#05586A,#0AA0B5)}.mod-hero.g1{background:linear-gradient(120deg,#07242C,#1D5F8A)}
.mod-hero.g2{background:linear-gradient(120deg,#087F90,#1D5F8A)}.mod-hero.g3{background:linear-gradient(120deg,#05586A,#087F90)}
.mod-hero.g4{background:linear-gradient(120deg,#164A6C,#0AA0B5)}.mod-hero.g5{background:linear-gradient(120deg,#07242C,#05586A)}
.mod-hero .mh-ic{width:52px;height:52px;border-radius:13px;background:rgba(255,255,255,.16);display:flex;
  align-items:center;justify-content:center;flex-shrink:0}
.mod-hero h3{margin:0;font-size:18px}
.mod-hero p{margin:4px 0 0;font-size:12.5px;color:rgba(255,255,255,.7)}
@media(max-width:900px){
  .hero{flex-direction:column;align-items:flex-start;padding:22px}
  .hero-r{text-align:left}
  .pgrid{grid-template-columns:1fr 1fr;gap:10px}
  .pcard{padding:13px 12px}
  .pcard .pic{width:38px;height:38px}
}
@media(max-width:900px){
  .m1{height:44px}
  .m2{height:40px}
  .m3i{height:38px}
  .m3i::after{content:"";position:absolute;left:0;right:0;top:0;bottom:0}
}

/* ===== v2 扩展 ===== */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.chip{height:28px;padding:0 14px;border-radius:14px;font-size:12.5px;border:1px solid var(--bd);color:var(--ink2);background:#fff;transition:.15s}
.chip.on{background:var(--pri);border-color:var(--pri);color:#fff}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:12px}
.acard{background:#fff;border:1px solid var(--bd);border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.acard .nm{font-weight:700;font-size:13.5px;display:flex;align-items:center;gap:8px}
.acard .ds{font-size:12px;color:var(--ink3);flex:1;line-height:1.7}
.acard .ft{display:flex;justify-content:space-between;align-items:center}
.acard .pr{font-size:13px;color:var(--pri);font-weight:700}
.acard .cat{font-size:11px;color:var(--link);background:#EDF4FF;border-radius:4px;padding:1px 6px}
.prog{height:6px;background:#EFF3F5;border-radius:3px;overflow:hidden}
.prog i{display:block;height:100%;background:linear-gradient(90deg,#0AA0B5,#3FC6D8);transition:width .3s}
.split{display:grid;grid-template-columns:1.45fr 1fr;gap:14px}
.sect{margin:20px 0 12px;font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
.sect::before{content:"";width:3px;height:14px;background:var(--pri);border-radius:2px}
.legend{display:flex;gap:14px;font-size:12px;color:var(--ink2);margin-top:8px;flex-wrap:wrap}
.legend i{width:10px;height:10px;border-radius:2px;display:inline-block;margin-right:5px;vertical-align:-1px}
.bars text{font-size:10.5px;fill:#8A99A8}
.gauge{display:flex;align-items:center;gap:18px}
.gauge .big{font-size:30px;font-weight:700;color:var(--pri)}
@media(max-width:900px){
  .split{grid-template-columns:1fr}
  .cards{grid-template-columns:1fr 1fr}
}
@media(max-width:520px){.cards{grid-template-columns:1fr}}
@media(max-width:420px){
  .brand span{font-size:13px}
  .brand i{width:19px;height:19px}
  .who{display:none}
}

/* ============================================================
   v7 现代化视觉层 —— 对标 SAP Fiori / 飞书工作台 / 用友 YonBIP
   更大留白 · 悬浮卡片 · 胶囊导航 · 柔和层叠阴影 · 精致细节
   ============================================================ */
:root{
  --bg:#F4F6F9;--bd:#E8EDF2;
  --ink:#17232B;--ink2:#3E4C57;--ink3:#8494A0;
  --sh-sm:0 1px 2px rgba(16,42,54,.04),0 1px 3px rgba(16,42,54,.06);
  --sh-md:0 6px 18px -2px rgba(16,42,54,.1),0 2px 6px rgba(16,42,54,.05);
  --sh-lg:0 20px 48px -12px rgba(16,42,54,.22);
  --r8:8px;--r12:12px;--r16:16px;--r20:20px;
  --grad-pri:linear-gradient(135deg,#0AA0B5,#12B5C9);
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{scrollbar-width:thin;scrollbar-color:#CBD6DE transparent}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-thumb{background:#CBD6DE;border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:#AEBEC9}
::selection{background:rgba(10,160,181,.18)}

/* ---- 顶栏：玻璃浮层 ---- */
.topbar{height:60px;background:rgba(255,255,255,.82);backdrop-filter:blur(16px) saturate(1.4);
  border-bottom:1px solid rgba(232,237,242,.9);padding:0 20px;gap:16px}
.brand{gap:10px;font-size:15.5px;letter-spacing:.3px;font-weight:800}
.brand img{width:26px;height:26px;filter:drop-shadow(0 2px 6px rgba(10,160,181,.35))}
.topbar .search input{height:36px;background:#F1F4F7;border-radius:18px;padding:0 14px 0 34px;font-size:13px;transition:.2s var(--ease)}
.topbar .search input:focus{background:#fff;border-color:transparent;box-shadow:0 0 0 3px rgba(10,160,181,.15),var(--sh-sm)}
.topbar .search::before{left:13px;top:7px;font-size:15px}
.who .av{width:30px;height:30px;font-size:12.5px;background:var(--grad-pri);color:#fff;box-shadow:0 3px 8px rgba(10,160,181,.35)}
.oa-btn{height:32px;border-radius:16px;font-size:12.5px;color:var(--ink2);transition:.18s var(--ease)}
.oa-btn:hover{border-color:transparent;background:rgba(10,160,181,.08);color:var(--pri)}

/* ---- 侧栏：胶囊导航 ---- */
.side{border-right:0;background:transparent;padding:10px 10px 24px;width:224px}
.side .grp{padding:16px 12px 6px;font-size:11px;letter-spacing:2px;font-weight:700;color:#9AA9B4}
.nav-item{margin:1px 0;height:40px;border-radius:10px;padding:0 12px;font-size:13.5px;color:var(--ink2);transition:.15s var(--ease)}
.nav-item:hover{background:rgba(10,160,181,.07);color:var(--ink)}
.nav-item.on{color:var(--pri);background:#fff;font-weight:700;box-shadow:var(--sh-sm)}
.nav-item.on::before{left:auto;right:10px;top:50%;bottom:auto;transform:translateY(-50%);width:6px;height:6px;border-radius:50%;background:var(--pri)}
.mfilter{padding:4px 8px 8px}
.mfilter input{height:34px;border-radius:17px;background:#fff;border-color:transparent;box-shadow:var(--sh-sm);transition:.2s}
.mfilter input:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(10,160,181,.12)}
.m1{margin:1px 4px;height:40px;border-radius:10px;padding:0 12px;transition:.15s var(--ease)}
.m1:hover{background:rgba(10,160,181,.07)}
.m1.on{background:#fff;box-shadow:var(--sh-sm);color:var(--pri)}
.m1.on::before{display:none}
.msub{background:transparent;border-bottom:0;border-radius:0 0 12px 12px;margin:0 4px 4px}
.m2{border-radius:8px;height:36px;padding:0 12px 0 20px;margin:0 4px;transition:.15s}
.m2:hover{background:rgba(10,160,181,.06);color:var(--ink)}
.m3i{border-radius:8px;height:34px;padding:0 12px 0 32px;margin:0 4px;transition:.15s}
.m3i:hover{background:rgba(10,160,181,.07);color:var(--ink)}
.m3i.on{background:rgba(10,160,181,.1);color:var(--pri)}
.m3i.on::before{left:18px}
.m2s{border-radius:8px;margin:0 4px}

/* ---- 主区 ---- */
.main{padding:20px 24px 40px}
.crumb{margin-bottom:6px;font-size:11.5px;color:#9AA9B4;letter-spacing:1.5px}
.crumb b{font-weight:700}
.page-h{margin:0 0 18px}
.page-h h1{margin:0;font-size:23px;font-weight:800;letter-spacing:-.4px;color:#12202A}
.page-h p{margin:5px 0 0;font-size:13px;color:var(--ink3)}
.toolbar{align-items:center;gap:12px;margin-bottom:16px}
.toolbar .fld{flex-direction:row;align-items:center;gap:8px}
.toolbar .fld label{font-size:12.5px;color:var(--ink3);white-space:nowrap}
.toolbar input,.toolbar select{width:248px;min-width:0}

/* ---- 面板：悬浮卡片 ---- */
.panel{border:0;border-radius:var(--r16);padding:20px 22px;box-shadow:var(--sh-sm);transition:.2s var(--ease)}
.panel:hover{box-shadow:var(--sh-md)}
.panel-h h3{padding-left:0;font-size:15.5px;font-weight:700}
.panel-h h3::before{display:none}
.panel-h .more{transition:.15s}
.panel-h .more:hover{color:var(--pri)}

/* ---- KPI 卡 ---- */
.kpis{gap:16px}
.kpi{border:0;border-radius:var(--r16);padding:20px 22px;box-shadow:var(--sh-sm);transition:.22s var(--ease)}
.kpi:hover{transform:translateY(-3px);box-shadow:var(--sh-md)}
.kpi .t{font-size:12.5px;color:var(--ink3);letter-spacing:.5px}
.kpi .n{font-size:30px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .bar{top:auto;bottom:0;width:100%;height:2px;border-radius:0;opacity:.85}
.kpi{overflow:hidden}

/* ---- 门户 Hero：深空渐变 + 光斑 ---- */
.hero{border-radius:var(--r20);padding:34px 36px;background:
  radial-gradient(600px 200px at 85% -10%,rgba(63,198,216,.35),transparent 60%),
  radial-gradient(400px 160px at 60% 120%,rgba(29,95,138,.5),transparent 60%),
  linear-gradient(125deg,#061F27 0%,#084C5C 55%,#0A7A8C 100%);
  box-shadow:var(--sh-lg)}
.hero::after{display:none}
.hero h2{font-size:24px;font-weight:800;letter-spacing:.3px}
.hero p{font-size:13.5px;color:rgba(255,255,255,.66)}
.hero .kicker{letter-spacing:5px;color:#4FD8E8}
.hero-r .hn{font-size:38px;font-weight:800;background:linear-gradient(120deg,#7FE8F2,#fff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hchip{height:32px;border-radius:16px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);
  backdrop-filter:blur(6px);font-size:12.5px;transition:.18s var(--ease)}
.hchip:hover{background:rgba(255,255,255,.2);transform:translateY(-1px)}

/* ---- 模块卡片 ---- */
.pgrid{gap:14px}
.pcard{border:0;border-radius:var(--r16);padding:18px 16px;box-shadow:var(--sh-sm);transition:.22s var(--ease)}
.pcard:hover{transform:translateY(-4px);box-shadow:var(--sh-md)}
.pcard:hover .pic{transform:scale(1.06) rotate(-3deg)}
.pcard .pic{transition:.25s var(--ease);border-radius:13px;box-shadow:0 6px 14px -4px rgba(10,160,181,.4)}
.pcard .pn{font-size:13.5px;font-weight:700}
.pcard .pd{font-size:11.5px;font-weight:600}
.mod-hero{border-radius:var(--r20);padding:28px 32px;box-shadow:var(--sh-lg)}
.mod-hero .mh-ic{border-radius:14px;box-shadow:0 8px 20px rgba(0,0,0,.18)}

/* ---- 表格 ---- */
.tb-wrap{border:0;border-radius:var(--r16);box-shadow:var(--sh-sm);overflow:auto}
thead th{background:#F8FAFB;color:#8494A0;font-weight:600;font-size:12px;letter-spacing:.5px;
  padding:12px 14px;border-bottom:1px solid var(--bd)}
tbody td{padding:12px 14px;border-bottom:1px solid #F2F5F8}
tbody tr{transition:.12s}
tbody tr:hover{background:#F6FBFC}
tbody tr:last-child td{border-bottom:0}
td.act button{background:#F1F5F7;border-radius:7px;padding:4px 10px;font-size:12px;margin-right:6px;transition:.15s}
td.act button:hover{background:rgba(10,160,181,.12);color:var(--pri)}
td.act button.del{background:#FDF0EE;color:#C25446}
td.act button.del:hover{background:#FBE3DF;color:#B03A2E}
.empty{padding:46px 0;color:#9AA9B4}

/* ---- 标签 ---- */
.tag{font-size:11.5px;padding:2.5px 10px;border-radius:999px;font-weight:600;border:1px solid transparent}
.tag.ok{background:#E5F7F2;color:#0E9C7D;border-color:#C9EEE3}
.tag.warn{background:#FEF4E4;color:#C08420;border-color:#F8E5C4}
.tag.gray{background:#F1F4F6;color:#7C8A96;border-color:#E4E9ED}

/* ---- 按钮 ---- */
.btn{border:0;background:#F1F4F7;border-radius:9px;height:34px;padding:0 16px;font-size:13px;font-weight:600;color:var(--ink2);transition:.16s var(--ease)}
.btn:hover{background:#E7EBEF;color:var(--ink)}
.btn-pri{background:var(--grad-pri);color:#fff;box-shadow:0 6px 16px -4px rgba(10,160,181,.5)}
.btn-pri:hover{background:linear-gradient(135deg,#0B9AB0,#16BDD2);color:#fff;box-shadow:0 8px 20px -4px rgba(10,160,181,.55)}
.btn-block{height:44px;border-radius:11px;font-size:15px}
.chip{border:0;background:#F1F4F7;border-radius:999px;transition:.15s var(--ease)}
.chip:hover{background:rgba(10,160,181,.1);color:var(--pri)}
.chip.on{background:var(--grad-pri);color:#fff;box-shadow:0 4px 10px -2px rgba(10,160,181,.45)}

/* ---- 表单 ---- */
.field input,.field select,.field textarea{border-radius:9px;border-color:#E4E9ED;transition:.18s var(--ease)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(10,160,181,.13)}
.field label{font-weight:600;color:var(--ink2);font-size:12.5px}
.toolbar input,.toolbar select{border-radius:9px;border:0;background:#fff;box-shadow:var(--sh-sm)}

/* ---- 弹窗 ---- */
.mask{background:rgba(13,27,35,.5);backdrop-filter:blur(4px)}
.dialog{border-radius:var(--r20);box-shadow:var(--sh-lg);max-width:640px}
.dialog-h{padding:18px 24px;border-bottom:0}
.dialog-h h3{font-size:16.5px;font-weight:800}
.dialog-b{padding:6px 24px 18px}
.dialog-f{border-top:0;background:transparent;padding:14px 24px 20px}
.dialog-f .btn{border-radius:9px}

/* ---- 进度条 / 其他 ---- */
.prog{background:#EDF1F4;border-radius:999px}
.prog i{border-radius:999px}
.toast{background:rgba(23,35,43,.92);backdrop-filter:blur(8px);border-radius:999px;padding:10px 22px;
  box-shadow:var(--sh-lg);font-size:13px}
.mod-page .panel{border-radius:var(--r20)}
.sect{font-size:16px;font-weight:800}
.sect::before{height:16px;background:var(--grad-pri)}
.sec-k{color:var(--pri);letter-spacing:5px}
.list-line{border-bottom:1px dashed #EEF2F5;padding:12px 0}
.gauge .big{font-weight:800}
.acard{border:0;border-radius:var(--r16);box-shadow:var(--sh-sm);transition:.2s var(--ease)}
.acard:hover{box-shadow:var(--sh-md);transform:translateY(-2px)}
.acard .cat{border-radius:6px}

/* ---- 登录页精修 ---- */
.login-wrap{background:
  radial-gradient(800px 400px at 90% -10%,rgba(18,181,201,.25),transparent 60%),
  radial-gradient(600px 300px at -5% 110%,rgba(29,95,138,.35),transparent 60%),
  linear-gradient(140deg,#061F27,#07414F 55%,#0A7A8C)}
.login-card{border-radius:var(--r20);box-shadow:0 40px 90px -20px rgba(0,0,0,.5)}
.login-left{background:linear-gradient(155deg,#0A5B6C 0%,#06242D 75%)}
.login-left h1{font-weight:800}
.login-right{padding:54px 50px}
.login-right h2{font-size:21px;font-weight:800}

/* ---- 响应式补充 ---- */

/* ============================================================
   v8 信息架构层 —— 对标 Fiori Launchpad / 钉钉工作台 / SAP List Report
   ============================================================ */
/* 快捷入口（最近使用 / 我的常用） */
.qrow{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.qchip{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 16px;border-radius:12px;
  background:#fff;box-shadow:var(--sh-sm);font-size:13px;font-weight:600;color:var(--ink);
  cursor:pointer;transition:.18s var(--ease);border:1px solid transparent}
.qchip svg{flex-shrink:0}
.qchip:hover{box-shadow:var(--sh-md);transform:translateY(-2px);border-color:rgba(10,160,181,.25);color:var(--pri)}
.qchip em{font-style:normal;font-size:11px;color:var(--ink3)}

/* 收藏星标 */
.star{position:absolute;top:10px;right:12px;font-size:15px;color:#C9D4DC;cursor:pointer;
  transition:.15s var(--ease);line-height:1;padding:2px}
.star:hover{color:#F5B942;transform:scale(1.2)}
.star.on{color:#F5B942}
.pcard{position:relative}

/* 模块实时角标 */
.bdg{position:absolute;right:12px;bottom:12px;font-size:10.5px;font-weight:700;color:var(--pri);
  background:rgba(10,160,181,.1);border-radius:999px;padding:2px 9px}
.bdg.red{color:#C25446;background:rgba(194,84,70,.1)}

/* 侧栏常用项 */
.nav-item .fx{font-style:normal;margin-left:auto;font-size:11px;color:var(--ink3)}

/* 分页器 */
.pager{display:inline-flex;align-items:center;gap:8px}
.pager button{height:26px;padding:0 12px;border-radius:8px;background:#F1F4F7;font-size:12px;color:var(--ink2);transition:.15s}
.pager button:hover:not(:disabled){background:rgba(10,160,181,.12);color:var(--pri)}
.pager button:disabled{opacity:.4;cursor:not-allowed}
.pager em{font-style:normal;font-size:12px;color:var(--ink3);font-variant-numeric:tabular-nums}
.foot{margin-top:2px;flex-wrap:wrap;gap:8px}

@media(max-width:900px){
  .qchip{height:34px;padding:0 12px;font-size:12.5px;border-radius:10px}
  .qrow{gap:8px}
  .pager button{padding:0 10px}
}

/* 二级页：返回链 + 同级 Tab（Fiori Object Page 模式） */
.backrow{display:flex;gap:8px;margin-bottom:10px;align-items:center}
.backrow .chip{height:30px;padding:0 14px;font-size:12.5px;font-weight:600;color:var(--ink2);
  display:inline-flex;align-items:center;cursor:pointer}
.backrow .chip:hover{color:var(--pri);background:rgba(10,160,181,.1)}
.mtabs{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--bd);margin:0 0 18px;padding-bottom:0}
.mtabs::-webkit-scrollbar{height:0}
.mtab{position:relative;padding:9px 16px 11px;font-size:13.5px;font-weight:600;color:var(--ink3);
  white-space:nowrap;cursor:pointer;transition:.15s var(--ease);border-radius:10px 10px 0 0}
.mtab:hover{color:var(--ink);background:rgba(10,160,181,.06)}
.mtab.on{color:var(--pri)}
.mtab.on::after{content:"";position:absolute;left:16px;right:16px;bottom:-1px;height:2.5px;border-radius:2px;
  background:var(--grad-pri)}
@media(max-width:900px){
  .main{padding:14px 14px 40px}
  .side{width:236px;background:#fff}
  .hero{padding:24px;border-radius:18px}
  .kpi .n{font-size:21px;letter-spacing:-.5px}
  .kpi{padding:16px 16px 18px}
  .kpi .n small{font-size:11px}
  .panel,.tb-wrap,.pcard{border-radius:14px}
  .topbar{height:54px;padding:0 12px}
  .side{top:54px}
  .nav-item.on{background:rgba(10,160,181,.1);box-shadow:none}
  .m1.on{background:rgba(10,160,181,.1);box-shadow:none}
}

/* ================= v10 · WorkBuddy 助理 ================= */
.ai-wrap{max-width:880px;margin:0 auto;display:flex;flex-direction:column;min-height:calc(100vh - 230px)}
.ai-thread{display:flex;flex-direction:column;gap:14px;padding:8px 2px 16px;flex:1 1 auto;min-height:240px;overflow:auto}
.msg{max-width:80%;padding:12px 16px;border-radius:14px;font-size:14px;line-height:1.75;word-break:break-word}
.msg p{margin:0 0 6px}
.msg p:last-child{margin-bottom:0}
.msg.u{align-self:flex-end;background:linear-gradient(135deg,#0AA0B5,#1D5F8A);color:#fff;border-bottom-right-radius:4px}
.msg.a{align-self:flex-start;width:88%;min-width:min(500px,88%);background:#fff;border:1px solid #E3ECF0;color:#22313A;border-bottom-left-radius:4px;box-shadow:0 2px 12px rgba(7,36,44,.05)}
.msg.a b{color:#0AA0B5}
.ai-hit{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid #E3ECF0;border-radius:10px;margin-top:8px;color:inherit;text-decoration:none;background:#FAFCFD;transition:.15s;cursor:pointer}
.ai-hit:hover{border-color:#0AA0B5;box-shadow:0 4px 14px rgba(10,160,181,.14);transform:translateX(2px)}
.ai-hit .ic{color:#0AA0B5;flex:none;display:flex}
.ai-hit b{font-size:13.5px;display:block;font-weight:600;color:#22313A}
.ai-hit span{font-size:12px;color:#7A8A93;display:block;margin-top:2px}
.ai-hit em{margin-left:auto;font-style:normal;font-size:12px;color:#0AA0B5;white-space:nowrap}
.ai-chiprow{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.ai-chip{padding:7px 15px;border-radius:999px;border:1px solid #CFE3E8;background:#fff;color:#1D5F8A;font-size:13px;cursor:pointer;transition:.15s}
.ai-chip:hover{background:#0AA0B5;color:#fff;border-color:#0AA0B5}
.ai-inputbar{display:flex;gap:10px;align-items:center;background:#fff;border:1.5px solid #CFE3E8;border-radius:14px;padding:10px 12px;box-shadow:0 6px 18px rgba(7,36,44,.06)}
.ai-inputbar:focus-within{border-color:#0AA0B5;box-shadow:0 6px 18px rgba(10,160,181,.15)}
.ai-inputbar input{flex:1;border:none;outline:none;font-size:14.5px;background:transparent;color:#22313A}
@media (max-width:760px){.msg{max-width:92%}.ai-wrap{min-height:calc(100vh - 200px)}}
/* ===== v11 系统信息品牌页 ===== */
.sys-hero{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;background:linear-gradient(120deg,#0B2E3C 0%,#0E4A5C 55%,#0AA0B5 130%);border-radius:var(--r16,16px);padding:22px 24px;color:#fff;box-shadow:0 10px 28px rgba(7,36,44,.18);margin-bottom:14px}
.sys-hero-l{display:flex;align-items:center;gap:14px}
.sys-hero-l img{width:52px;height:52px;border-radius:12px;background:#fff;padding:6px;object-fit:contain}
.sys-hero-l h2{font-size:20px;margin:0 0 4px;letter-spacing:.5px}
.sys-hero-l p{margin:0;font-size:12.5px;opacity:.82}
.sys-hero-r{display:flex;align-items:center;gap:10px}
.sys-hero-r .ver{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.35);border-radius:20px;padding:5px 14px;font-weight:700;font-size:14px;letter-spacing:1px}
.sys-hero-r .bd{font-size:11.5px;opacity:.75}
.acard .ft2{display:flex;flex-direction:column;gap:0}
.ir{display:flex;gap:10px;padding:7px 0;border-bottom:1px dashed var(--bd,#EDF0F3);font-size:13px;line-height:1.6}
.ir:last-child{border-bottom:none}
.ir .ik{flex:0 0 96px;color:var(--ink3,#8794A0)}
.ir .iv{color:var(--ink,#22313A);font-weight:600;word-break:break-all}
.cards.sys-cards{grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}
.ir .ik{flex:0 0 84px}

/* ---- 顶栏：湃界 AIOS 小入口（小巧胶囊，不占长条） ---- */
.toplink{display:inline-flex;align-items:center;justify-content:center;gap:0;
  width:38px;height:30px;padding:0;margin-right:4px;flex:none;
  border-radius:9px;text-decoration:none;white-space:nowrap;
  font-size:10.5px;font-weight:800;letter-spacing:.6px;
  color:#fff;background:linear-gradient(135deg,#22c3ea,#0B7F96);
  box-shadow:0 3px 9px -3px rgba(10,160,181,.6);transition:.16s var(--ease)}
.toplink::before{content:"◆";font-size:8px;margin-right:2px;opacity:.9}
.toplink:hover{transform:translateY(-1px);box-shadow:0 6px 13px -5px rgba(10,160,181,.85)}
@media(max-width:640px){
  .toplink{width:34px;height:28px;font-size:9.5px;margin-right:2px}
}

/* ---- 顶栏：独立子域名标识 ---- */
.dom{display:inline-flex;align-items:center;gap:5px;flex:none;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:10.5px;color:#0b6a80;background:#eaf7fc;border:1px solid #cfe9f3;
  border-radius:20px;padding:3px 9px;white-space:nowrap;letter-spacing:.2px}
.dom::before{content:"";width:5px;height:5px;border-radius:50%;background:#37b7cf;flex:0 0 auto}
@media(max-width:900px){.dom{display:none}}

/* ---- 顶栏：一键返回首页（平台选择） ---- */
.toplink.home{width:auto;padding:0 9px 0 8px;color:#0b6a80;background:#fff;
  border:1px solid #cfe9f3;box-shadow:none;font-weight:600;letter-spacing:.3px}
.toplink.home::before{content:"⌂";font-size:11.5px;margin-right:3px}
.toplink.home:hover{border-color:#22c3ea;color:#0E8AB8;box-shadow:0 6px 13px -6px rgba(10,160,181,.6)}
@media(max-width:640px){.toplink.home{width:auto;padding:0 8px 0 7px}}

/* ===== 指标卡 / 图表 可点击下钻 ===== */
.kpi.klnk{cursor:pointer}
.kpi.klnk:hover{border-color:#9FD9E6;box-shadow:0 10px 22px rgba(9,60,80,.14)}
.kpi.klnk::after{content:"";position:absolute;right:0;top:0;width:0;height:0;
  border-top:22px solid #EAF6FA;border-left:22px solid transparent;opacity:.9}
.kpi .kgo{position:absolute;right:9px;bottom:8px;font-size:10.5px;color:#0AA0B5;
  opacity:0;transform:translateY(3px);transition:.16s}
.kpi.klnk:hover .kgo{opacity:1;transform:none}
.bars .bgrp{cursor:pointer}
.bars .bgrp:hover .bp{fill:#AFC3CE}
.bars .bgrp:hover .ba{fill:#0E8AB8}
.bars .bgrp:hover text{fill:#0E8AB8;font-weight:700}
.hrow.click{cursor:pointer;border-radius:8px;transition:.15s}
.hrow.click:hover{background:#F5FBFD;box-shadow:inset 0 0 0 1px #DDF0F6}

/* ---- 顶栏 AI 入口：文字版「智能体平台」 ---- */
.toplink.plat{width:auto;padding:0 10px 0 8px;letter-spacing:.3px;font-size:11px;font-weight:700}
.toplink.plat::before{font-size:9px;margin-right:4px}
@media(max-width:640px){.toplink.plat{width:auto;padding:0 9px 0 7px;font-size:10.5px}}

/* ---- 品牌落款（与公司介绍 PPT 统一：公司名 + 英文左右两端对齐） ---- */
.coen{
  display:block;font-style:normal;font-weight:600;line-height:1;font-size:8px;letter-spacing:.5px;
  white-space:nowrap;color:#93a7b3;text-align:justify;text-align-last:justify;margin-top:4px;
}
.brand span{display:inline-block;overflow:visible}
.brand .coen{font-size:7.5px;margin-top:3px;color:#9db0ba}
.login-left .coen-lock{display:inline-block;margin-top:2px}
.login-left .coen-lock .cn{display:block;font-size:11px;color:rgba(255,255,255,.72);letter-spacing:.8px}
.login-left .coen-lock .coen{font-size:9px;letter-spacing:.6px;margin-top:4px;color:rgba(255,255,255,.42)}
