/* ============================================================
 * ZY云客服 · 全局样式
 * 设计基调：成熟商用 SaaS 控制台。靛蓝主色、克制层次、线性图标、柔和阴影。
 * 无卡通插画、无表情符号、无多余动效；全站 PC + 移动端自适应。
 * 布局：固定深色侧栏 + 顶栏 + 内容区；移动端侧栏抽屉化、表格横向滚动。
 * ============================================================ */
:root{
  --brand:#4f46e5; --brand-2:#4338ca; --brand-3:#6366f1; --brand-soft:#eef2ff;
  --ink:#0f172a; --ink-2:#475569; --ink-3:#94a3b8;
  --line:#e6eaf2; --line-2:#f1f4f9; --bg:#f6f8fc; --card:#ffffff;
  --ok:#059669; --ok-bg:#ecfdf5; --ok-line:#c7eede;
  --warn:#d97706; --warn-bg:#fffbeb; --warn-line:#f3dfae;
  --err:#dc2626; --err-bg:#fef2f2; --err-line:#f6cfcf;
  --info:#0284c7; --info-bg:#f0f9ff; --info-line:#c9e6f8;
  --radius:10px; --radius-sm:7px;
  --shadow:0 1px 2px rgba(15,23,42,.04),0 6px 20px rgba(15,23,42,.045);
  --shadow-lg:0 18px 50px rgba(15,23,42,.14);
  --sidebar-w:236px; --topbar-h:60px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;
  font-size:14px;line-height:1.6;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--brand);text-decoration:none;transition:color .15s ease}
a:hover{color:var(--brand-2);text-decoration:none}
h1,h2,h3,h4{margin:0;font-weight:650;color:var(--ink);letter-spacing:-.2px}
p{margin:0 0 10px}
ul{margin:0;padding:0;list-style:none}
input,select,textarea,button{font-family:inherit;font-size:14px;color:var(--ink)}
table{border-collapse:collapse;width:100%}
img{max-width:100%}
hr{border:0;border-top:1px solid var(--line);margin:18px 0}
.mono{font-family:"SFMono-Regular",Consolas,Monaco,"Courier New",monospace;font-size:12.5px}
.muted{color:var(--ink-3)}
.small{font-size:12px;color:var(--ink-3)}
.hint{font-size:12px;color:var(--ink-3);margin-top:5px}
.sub{font-size:12px;color:var(--ink-3)}
.req{color:var(--err)}
.nowrap{white-space:nowrap}
.nopad{padding:0!important}
.tx{color:var(--ink-2)}
.ico{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;vertical-align:-3px}
.ico svg{display:block}

/* ---------- 控制台骨架 ---------- */
.app{display:flex;min-height:100vh}
.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);
  background:linear-gradient(178deg,#111a2e 0%,#0d1526 100%);color:#c3cfe2;
  position:fixed;top:0;left:0;bottom:0;overflow-y:auto;z-index:40;
  border-right:1px solid rgba(255,255,255,.05);scrollbar-width:thin}
.sidebar::-webkit-scrollbar{width:6px}
.sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:3px}
.sidebar .brand{height:var(--topbar-h);display:flex;align-items:center;gap:11px;padding:0 18px;
  border-bottom:1px solid rgba(255,255,255,.07);color:#fff;font-size:15.5px;font-weight:650;letter-spacing:.2px;white-space:nowrap}
.sidebar .brand .mark{width:30px;height:30px;border-radius:8px;flex:0 0 30px;
  background:linear-gradient(140deg,var(--brand-3),var(--brand-2));
  display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff;font-weight:700;letter-spacing:.5px;
  box-shadow:0 4px 12px rgba(79,70,229,.35)}
.nav-group{padding:18px 10px 4px}
.nav-group .gt{font-size:10.5px;color:#64748b;letter-spacing:1.3px;padding:0 12px 9px;text-transform:uppercase;font-weight:600}
.nav-item{display:flex;align-items:center;gap:11px;padding:9px 12px;margin:2px 0;color:#b6c3d6;font-size:13.5px;
  border-radius:var(--radius-sm);position:relative;transition:background .15s ease,color .15s ease}
.nav-item .ico{width:18px;height:18px;opacity:.82}
.nav-item:hover{background:rgba(255,255,255,.06);color:#fff}
.nav-item.active{background:rgba(99,102,241,.2);color:#fff;font-weight:550}
.nav-item.active:before{content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:3px;
  border-radius:0 3px 3px 0;background:#818cf8}
.nav-item.active .ico{opacity:1;color:#a5b4fc}
.nav-item .dot{display:none}
.nav-item .badge{margin-left:auto}
.sidebar .foot{padding:16px 18px;font-size:11px;color:#54627a;border-top:1px solid rgba(255,255,255,.06);margin-top:14px;line-height:1.8}

.main{flex:1;min-width:0;margin-left:var(--sidebar-w);display:flex;flex-direction:column}
.topbar{height:var(--topbar-h);background:rgba(255,255,255,.94);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);display:flex;align-items:center;
  padding:0 22px;gap:14px;position:sticky;top:0;z-index:30}
.topbar .crumb{font-size:13px;color:var(--ink-3);display:flex;align-items:center;gap:7px;white-space:nowrap}
.topbar .crumb b{color:var(--ink);font-weight:600}
.topbar .spacer{flex:1}
.topbar .tb-btn{position:relative;display:inline-flex;align-items:center;gap:7px;padding:6px 11px;border:1px solid transparent;
  border-radius:var(--radius-sm);color:var(--ink-2);font-size:13px;background:transparent;cursor:pointer;transition:background .15s ease}
.topbar .tb-btn:hover{background:var(--bg);color:var(--ink)}
.topbar .tb-btn.has-border{border-color:var(--line);background:#fff}
.topbar .avatar{width:30px;height:30px;border-radius:50%;
  background:linear-gradient(140deg,var(--brand-3),var(--brand-2));color:#fff;display:inline-flex;
  align-items:center;justify-content:center;font-size:12px;font-weight:650}
.topbar .who{font-size:13px;color:var(--ink-2)}
.topbar .env-tag{font-size:11.5px;color:var(--ink-3);border:1px solid var(--line);
  padding:3px 9px;border-radius:20px;background:#fff;white-space:nowrap}
.menu-toggle{display:none;border:1px solid var(--line);background:#fff;border-radius:var(--radius-sm);
  width:36px;height:34px;cursor:pointer;font-size:16px;line-height:1;align-items:center;justify-content:center;color:var(--ink-2)}
.content{padding:22px 24px 40px;flex:1;min-width:0}
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.page-head h1{font-size:21px;letter-spacing:-.4px}
.page-head .desc{color:var(--ink-3);font-size:13px;margin-top:5px}
.page-head .acts{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- 卡片 / 统计 ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;overflow:hidden}
.card .hd{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.card .hd h3{font-size:14.5px;display:flex;align-items:center;gap:8px}
.card .hd h3 .ico{color:var(--brand)}
.card .hd .sub{font-size:12px;color:var(--ink-3)}
.card .bd{padding:18px}
.card .bd.nopad{padding:0}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
.stat-grid.six{grid-template-columns:repeat(6,1fr)}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:17px 18px;box-shadow:var(--shadow);
  position:relative;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease}
.stat:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(15,23,42,.08)}
.stat .stat-ico{position:absolute;right:16px;top:16px;width:36px;height:36px;border-radius:9px;
  display:flex;align-items:center;justify-content:center;background:var(--brand-soft);color:var(--brand)}
.stat .label{font-size:12.5px;color:var(--ink-3);padding-right:44px}
.stat .num{font-size:27px;font-weight:700;letter-spacing:-.8px;margin:8px 0 3px;color:var(--ink);
  font-variant-numeric:tabular-nums;line-height:1.2}
.stat .num.brand{color:var(--brand)}
.stat .foot{font-size:12px;color:var(--ink-3)}
.stat .foot .up{color:var(--ok)} .stat .foot .down{color:var(--err)}
.two-col{display:grid;grid-template-columns:1.6fr 1fr;gap:16px}
.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}

/* ---------- 表格 ---------- */
.table-wrap{width:100%;overflow-x:auto}
.tbl{font-size:13px;min-width:680px;width:100%}
.tbl th,.tbl td{padding:11px 14px;border-bottom:1px solid var(--line-2);text-align:left;vertical-align:middle}
.tbl th{background:#f9fafc;color:var(--ink-2);font-weight:600;font-size:12px;white-space:nowrap;letter-spacing:.2px}
.tbl tbody tr{transition:background .12s ease}
.tbl tbody tr:hover{background:#f8faff}
.tbl td .mono{font-family:Consolas,Monaco,"Courier New",monospace;font-size:12.5px}
.tbl .nowrap{white-space:nowrap}
.tbl .muted{color:var(--ink-3)}
.tbl .row-acts a,.tbl .row-acts button{margin-right:10px;font-size:12.5px;white-space:nowrap}
.tbl .row-acts{white-space:nowrap}
.empty{padding:44px 16px;text-align:center;color:var(--ink-3);font-size:13px}
.empty .ico{display:block;margin:0 auto 10px;color:#cbd5e1}

/* ---------- 表单 ---------- */
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 22px}
.form-grid.one{grid-template-columns:1fr}
.fi{margin-bottom:15px}
.fi label{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:7px;font-weight:600}
.fi label .req{color:var(--err)}
.fi .hint{font-size:12px;color:var(--ink-3);margin-top:5px}
.ctl{width:100%;padding:9px 12px;border:1px solid #d9e0ea;border-radius:var(--radius-sm);background:#fff;
  outline:none;min-height:38px;transition:border-color .15s ease,box-shadow .15s ease}
.ctl:hover{border-color:#c3ccdb}
.ctl:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.ctl::placeholder{color:#aab4c3}
textarea.ctl{min-height:90px;resize:vertical;line-height:1.65}
select.ctl{height:38px;appearance:none;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.4'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}
.ctl[readonly]{background:#f7f9fc;color:var(--ink-2)}
.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.inline .ctl{width:auto;flex:1;min-width:130px}
.check{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-2);margin-right:16px;cursor:pointer}
.check input{width:15px;height:15px;accent-color:var(--brand)}
.filter-bar{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;padding:16px 18px;background:#fff;
  border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px;box-shadow:var(--shadow)}
.filter-bar .fi{margin:0;min-width:160px;flex:1}
.filter-bar .fi.small{min-width:120px;max-width:190px}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 15px;min-height:36px;
  border:1px solid #d9e0ea;border-radius:var(--radius-sm);background:#fff;color:var(--ink-2);cursor:pointer;
  font-size:13px;font-weight:500;white-space:nowrap;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}
.btn:hover{background:var(--bg);border-color:#c3ccdb;color:var(--ink)}
.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff;
  box-shadow:0 2px 8px rgba(79,70,229,.22)}
.btn-primary:hover{background:var(--brand-2);border-color:var(--brand-2);color:#fff;box-shadow:0 4px 14px rgba(79,70,229,.3)}
.btn-dark{background:#0f172a;border-color:#0f172a;color:#fff}
.btn-dark:hover{background:#1e293b;border-color:#1e293b;color:#fff}
.btn-danger{background:#fff;border-color:#f0c9c9;color:var(--err)}
.btn-danger:hover{background:var(--err-bg);border-color:#e8b4b4;color:var(--err)}
.btn-ghost{border-color:transparent;background:transparent}
.btn-link{border:0;background:none;color:var(--brand);padding:0;cursor:pointer;font-size:13px;min-height:0}
.btn-link:hover{color:var(--brand-2);text-decoration:underline}
.btn-sm{padding:5px 10px;min-height:29px;font-size:12.5px}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:6px}
.btn.solid{background:#fff;color:var(--brand-2);border-color:#fff}
.btn.solid:hover{background:#eef2ff;color:var(--brand-2)}

/* ---------- 徽章 / 提示 ---------- */
.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11.5px;line-height:1.8;white-space:nowrap;font-weight:550}
.badge.ok{background:var(--ok-bg);color:var(--ok)}
.badge.warn{background:var(--warn-bg);color:var(--warn)}
.badge.err{background:var(--err-bg);color:var(--err)}
.badge.info{background:var(--info-bg);color:var(--info)}
.badge.gray{background:#f1f4f9;color:var(--ink-2)}
.alert{padding:12px 15px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:15px;border:1px solid transparent;
  display:flex;align-items:flex-start;gap:9px;line-height:1.6}
.alert.success{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok)}
.alert.error{background:var(--err-bg);border-color:var(--err-line);color:var(--err)}
.alert.warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn)}
.alert.info{background:var(--info-bg);border-color:var(--info-line);color:var(--info)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}
.tabs a{padding:10px 16px;font-size:13.5px;color:var(--ink-2);border-bottom:2px solid transparent;white-space:nowrap}
.tabs a:hover{color:var(--brand)}
.tabs a.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:650}

/* ---------- 分页 ---------- */
.pager{display:flex;align-items:center;gap:5px;padding:14px 18px;flex-wrap:wrap}
.pager .pg{padding:6px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:12.5px;color:var(--ink-2);background:#fff}
.pager .pg:hover{background:var(--bg);border-color:#c3ccdb}
.pager .pg.active{background:var(--brand);border-color:var(--brand);color:#fff}
.pager .pg.disabled{opacity:.5;pointer-events:none}
.pager .pg-info{margin-left:auto;font-size:12px;color:var(--ink-3)}

/* ---------- 弹窗 ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:100;display:none;
  align-items:flex-start;justify-content:center;padding:44px 14px;overflow-y:auto;backdrop-filter:blur(2px)}
.modal-mask.show{display:flex}
.modal{background:#fff;border-radius:12px;width:100%;max-width:640px;box-shadow:var(--shadow-lg);
  animation:modalIn .16s ease-out}
.modal.wide{max-width:880px}
@keyframes modalIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.modal .m-hd{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
.modal .m-hd h3{font-size:16px}
.modal .m-close{border:0;background:none;font-size:22px;color:var(--ink-3);cursor:pointer;line-height:1}
.modal .m-bd{padding:20px;max-height:70vh;overflow-y:auto}
.modal .m-ft{padding:13px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px;background:#fbfcfe}
.zy-toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%);z-index:200;
  background:#0f172a;color:#fff;padding:10px 18px;border-radius:8px;font-size:13px;
  box-shadow:0 10px 30px rgba(15,23,42,.3);opacity:0;transition:opacity .18s ease;pointer-events:none}
.zy-toast.show{opacity:1}

/* ---------- 登录 / 提示页 ---------- */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;
  background:radial-gradient(1000px 500px at 15% 0%,#e7eaff 0%,transparent 60%),
             radial-gradient(900px 500px at 90% 100%,#e3f0ff 0%,transparent 55%),#f5f7fc}
.auth-box{width:100%;max-width:420px;background:#fff;border:1px solid var(--line);border-radius:14px;
  box-shadow:0 20px 60px rgba(15,23,42,.1);overflow:hidden}
.auth-box .a-hd{padding:30px 30px 6px;text-align:center}
.auth-box .a-hd .logo{font-size:19px;font-weight:700;color:var(--ink);letter-spacing:-.3px;
  display:flex;align-items:center;justify-content:center;gap:10px}
.auth-box .a-hd .logo .mark{width:32px;height:32px;border-radius:9px;
  background:linear-gradient(140deg,var(--brand-3),var(--brand-2));color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.auth-box .a-hd .tip{font-size:12.5px;color:var(--ink-3);margin-top:9px}
.auth-box .a-bd{padding:18px 30px 30px}
.auth-box .fi label{font-weight:600}
.auth-box .btn-primary{width:100%;margin-top:8px;padding:10px}
.auth-links{display:flex;justify-content:space-between;margin-top:16px;font-size:12.5px;gap:10px;flex-wrap:wrap}
.msg-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--bg)}
.msg-card{background:#fff;border:1px solid var(--line);border-radius:12px;max-width:480px;width:100%;overflow:hidden;
  box-shadow:var(--shadow-lg)}
.msg-card .msg-bar{height:4px;background:linear-gradient(90deg,var(--brand-3),var(--brand-2))}
.msg-card h2{padding:24px 26px 0;font-size:18px}
.msg-card p{padding:10px 26px 20px;color:var(--ink-2);font-size:13.5px;line-height:1.75}
.msg-card .btn-row{padding:0 26px 26px}

/* ---------- 引导门户（仅总后台根路径） ---------- */
.site{background:#fff;color:var(--ink)}
.site-head{height:66px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 28px;
  position:sticky;top:0;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);z-index:20}
.site-head .logo{display:flex;align-items:center;gap:11px;font-size:16px;font-weight:700;color:var(--ink);letter-spacing:-.2px}
.site-head .logo .mark{width:32px;height:32px;border-radius:9px;
  background:linear-gradient(140deg,var(--brand-3),var(--brand-2));color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;letter-spacing:.4px;
  box-shadow:0 4px 12px rgba(79,70,229,.28)}
.site-head .logo .tagline{font-size:11.5px;color:var(--ink-3);font-weight:400;padding-left:11px;border-left:1px solid var(--line);margin-left:2px}
.site-head nav{margin-left:auto;display:flex;gap:24px;align-items:center}
.site-head nav a{color:var(--ink-2);font-size:13.5px;font-weight:500}
.site-head nav a:hover{color:var(--brand)}
.site-head nav a.btn{padding:8px 16px;font-size:13px}
.site-head nav a.btn,.site-head nav a.btn:hover{color:#fff}
.hero{position:relative;color:#fff;padding:78px 26px 84px;overflow:hidden;
  background:radial-gradient(700px 380px at 78% 8%,rgba(99,102,241,.34),transparent 65%),
             radial-gradient(600px 420px at 8% 95%,rgba(14,165,233,.16),transparent 65%),
             linear-gradient(155deg,#0b1220 0%,#111c38 55%,#172554 100%)}
.hero:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.35;
  background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);
  background-size:44px 44px;mask-image:linear-gradient(180deg,#000,transparent 92%)}
.hero-inner{position:relative;max-width:1160px;margin:0 auto;display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center}
.hero .kicker{font-size:11.5px;letter-spacing:2.4px;color:#a5b4fc;text-transform:uppercase;font-weight:650;
  display:inline-flex;align-items:center;gap:9px}
.hero .kicker:before{content:"";width:22px;height:1px;background:#818cf8}
.hero h1{font-size:40px;color:#fff;margin:18px 0 16px;font-weight:700;line-height:1.25;letter-spacing:-1px}
.hero h1 em{font-style:normal;color:#a5b4fc}
.hero p{max-width:560px;color:#b6c4dc;font-size:15px;line-height:1.85}
.hero .btn-row{justify-content:flex-start;margin-top:28px}
.hero .btn{border-color:rgba(255,255,255,.32);background:rgba(255,255,255,.06);color:#fff;padding:10px 21px;min-height:42px}
.hero .btn:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.5);color:#fff}
.hero .btn.solid{background:#fff;color:var(--brand-2);border-color:#fff;font-weight:600}
.hero .btn.solid:hover{background:#eef2ff;color:var(--brand-2)}
.hero .meta{display:flex;gap:0;margin-top:42px;flex-wrap:wrap;
  border-top:1px solid rgba(255,255,255,.12);padding-top:22px}
.hero .meta .m{padding-right:34px;margin-right:34px;border-right:1px solid rgba(255,255,255,.12)}
.hero .meta .m:last-child{border-right:0}
.hero .meta .m b{font-size:19px;display:block;color:#fff;font-weight:650;letter-spacing:-.3px}
.hero .meta .m span{font-size:11.5px;color:#8fa2c2;margin-top:3px;display:block}
/* 右侧双端架构示意卡片（CSS 绘制，非插画） */
.hero-card{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:16px;
  padding:22px;backdrop-filter:blur(12px);box-shadow:0 24px 60px rgba(0,0,0,.22)}
.hero-card .hc-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.hero-card .hc-top b{font-size:13px;color:#fff;font-weight:600}
.hero-card .hc-top span{font-size:11px;color:#8fa2c2;font-family:Consolas,monospace}
.hc-node{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.13);border-radius:10px;padding:14px 16px;margin-bottom:10px}
.hc-node.master{background:linear-gradient(120deg,rgba(99,102,241,.28),rgba(99,102,241,.1));border-color:rgba(129,140,248,.4)}
.hc-node .n-hd{display:flex;align-items:center;gap:9px;font-size:13px;color:#fff;font-weight:600}
.hc-node .n-hd .ico{width:26px;height:26px;border-radius:7px;background:rgba(255,255,255,.12);color:#c7d2fe}
.hc-node .n-hd .badge{margin-left:auto}
.hc-node .n-bd{font-size:11.5px;color:#a9bad6;margin-top:10px;line-height:1.8}
.hc-flow{display:flex;align-items:center;justify-content:center;gap:8px;color:#8fa2c2;font-size:11px;margin:2px 0 10px}
.hc-flow:before,.hc-flow:after{content:"";height:1px;flex:1;background:rgba(255,255,255,.15)}
.hc-arrow{height:24px;display:flex;align-items:center;justify-content:center;color:#818cf8;font-size:16px;margin:-4px 0 6px}
.section{max-width:1160px;margin:0 auto;padding:66px 26px}
.section .s-head{text-align:center;margin-bottom:38px}
.section .s-head .k{font-size:11.5px;color:var(--brand);letter-spacing:2.2px;text-transform:uppercase;font-weight:700}
.section .s-head h2{font-size:26px;margin:12px 0 10px;letter-spacing:-.6px}
.section .s-head p{color:var(--ink-3);font-size:14px;max-width:680px;margin:0 auto}
.section.alt{background:#f8faff;max-width:none;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.section.alt>.s-head,.section.alt>.feat-grid,.section.alt>.steps,.section.alt>.two-col,.section.alt>.card,.section.alt>.compare{max-width:1108px;margin-left:auto;margin-right:auto}
.feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.feat{border:1px solid var(--line);border-radius:12px;padding:24px;background:#fff;
  transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.feat:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(15,23,42,.08);border-color:#d5dcf5}
.feat .f-ico{width:40px;height:40px;border-radius:10px;background:var(--brand-soft);color:var(--brand);
  display:flex;align-items:center;justify-content:center;margin-bottom:16px}
.feat .no{font-size:11px;color:var(--brand);font-weight:700;letter-spacing:1.2px;display:none}
.feat h4{font-size:15.5px;margin:0 0 9px}
.feat p{font-size:13px;color:var(--ink-2);line-height:1.75;margin:0}
.feat ul{margin-top:14px}
.feat ul li{font-size:12.5px;color:var(--ink-3);padding-left:15px;position:relative;margin-bottom:6px}
.feat ul li:before{content:"";position:absolute;left:0;top:8px;width:5px;height:5px;background:var(--brand-3);border-radius:50%}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.step{border:1px solid var(--line);border-radius:12px;padding:22px;position:relative;background:#fff}
.step:after{content:"";position:absolute;top:32px;right:-17px;width:17px;height:1px;background:var(--line);z-index:1}
.step:last-child:after{display:none}
.step .n{width:30px;height:30px;border-radius:9px;background:var(--brand-soft);color:var(--brand);
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;margin-bottom:14px}
.step h4{font-size:14.5px;margin-bottom:7px}
.step p{font-size:12.5px;color:var(--ink-3);margin:0;line-height:1.7}
.compare{width:100%;font-size:13.5px}
.compare th,.compare td{padding:13px 16px;border-bottom:1px solid var(--line);text-align:left}
.compare th{background:#f9fafc;text-align:left;font-size:12px;color:var(--ink-2);font-weight:600}
.compare td:first-child{color:var(--ink-2);font-weight:500}
.download-band{background:linear-gradient(120deg,#101a30,#1b2a52);color:#fff;border:0}
.download-inner{max-width:1160px;margin:0 auto;padding:52px 26px;display:flex;align-items:center;
  justify-content:space-between;gap:30px;flex-wrap:wrap}
.download-inner h2{font-size:24px;color:#fff}
.download-inner p{color:#a9bad6;font-size:13.5px;margin-top:9px;max-width:620px}
.download-inner .dl-meta{display:flex;gap:22px;margin-top:18px;flex-wrap:wrap}
.download-inner .dl-meta span{font-size:12px;color:#8fa2c2}
.download-inner .dl-meta b{color:#e2e8f5;font-weight:600}
.download-inner .btn-row{flex-direction:column;align-items:stretch;min-width:230px;margin:0}
.download-inner .btn{min-height:42px}
.download-inner .btn-primary{background:#fff;border-color:#fff;color:var(--brand-2)}
.download-inner .btn-primary:hover{background:#eef2ff;color:var(--brand-2)}
.download-inner .btn.ghost-light{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.25);color:#fff}
.code-line{font-family:Consolas,Monaco,monospace;background:#0f172a;color:#c7d2fe;padding:14px 18px;
  border-radius:var(--radius-sm);font-size:12.5px;overflow-x:auto;line-height:1.7}
.release-list{display:grid;gap:10px}
.release{display:flex;align-items:center;gap:14px;padding:13px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;flex-wrap:wrap}
.release .rv{font-family:Consolas,monospace;font-size:13px;font-weight:650;color:var(--brand)}
.release .rd{flex:1;min-width:180px;font-size:13px;color:var(--ink-2)}
.release .rt{font-size:12px;color:var(--ink-3)}
.site-foot{background:#0b1220;color:#7c8ca8;padding:32px 26px;font-size:12.5px;text-align:center}
.site-foot .links{margin-bottom:12px}
.site-foot .links a{color:#a9bad4;margin:0 13px;font-size:12.5px}
.site-foot .links a:hover{color:#fff}
.site-foot .f-brand{color:#cbd5e1;font-weight:600;margin-bottom:6px}

/* ---------- 业务工作台（分后台根首页） ---------- */
.work-greet{background:linear-gradient(120deg,#111c38,#24336b);border-radius:14px;padding:22px 26px;color:#fff;
  margin-bottom:18px;display:flex;align-items:center;gap:20px;flex-wrap:wrap;
  box-shadow:0 12px 32px rgba(20,32,70,.16)}
.work-greet .wg-main{flex:1;min-width:240px}
.work-greet h2{color:#fff;font-size:20px;margin-bottom:6px}
.work-greet p{color:#aab9d6;font-size:13px;margin:0}
.work-greet .wg-state{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.work-greet .wg-state .pill{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);
  padding:7px 13px;border-radius:20px;font-size:12.5px;color:#e2e8f5;display:inline-flex;align-items:center;gap:7px}
.work-greet .dot-live{width:7px;height:7px;border-radius:50%;background:#34d399;box-shadow:0 0 0 3px rgba(52,211,153,.2)}
.work-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:16px}
.work-panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.work-panel .wp-hd{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:9px}
.work-panel .wp-hd h3{font-size:14.5px;flex:1}
.work-panel .wp-hd .ico{color:var(--brand)}
.work-panel .wp-bd{padding:16px 18px}
.work-panel .wp-bd.nopad{padding:0}
.queue-item{display:flex;align-items:center;gap:12px;padding:13px 18px;border-bottom:1px solid var(--line-2)}
.queue-item:last-child{border-bottom:0}
.queue-item:hover{background:#fafbff}
.queue-item .q-av{width:36px;height:36px;border-radius:9px;flex:0 0 36px;background:var(--brand-soft);color:var(--brand);
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:650}
.queue-item .q-main{flex:1;min-width:0}
.queue-item .q-main b{font-size:13.5px;display:block}
.queue-item .q-main span{font-size:12px;color:var(--ink-3);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.quick-entry{display:flex;flex-direction:column;align-items:center;gap:9px;padding:16px 8px;border:1px solid var(--line);
  border-radius:var(--radius-sm);background:#fff;color:var(--ink-2);font-size:12.5px;transition:all .15s ease}
.quick-entry:hover{border-color:#c7cdfa;background:#fafaff;color:var(--brand);transform:translateY(-2px)}
.quick-entry .ico{width:34px;height:34px;border-radius:9px;background:var(--brand-soft);color:var(--brand)}
.mini-stat{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px dashed var(--line)}
.mini-stat:last-child{border-bottom:0}
.mini-stat span{font-size:13px;color:var(--ink-2)}
.mini-stat b{font-size:16px;color:var(--ink);font-variant-numeric:tabular-nums}
.work-notice{padding:12px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);margin-bottom:10px;background:#fff}
.work-notice b{font-size:13px;display:block;margin-bottom:4px}
.work-notice p{font-size:12.5px;color:var(--ink-3);margin:0;line-height:1.65}

/* ---------- 聊天 / 会话工作台 ---------- */
.chat-shell{display:grid;grid-template-columns:264px 1fr 290px;gap:0;height:calc(100vh - 140px);min-height:520px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.chat-col{border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0}
.chat-col:last-child{border-right:0}
.chat-col .c-hd{padding:13px 15px;border-bottom:1px solid var(--line);font-size:13.5px;font-weight:650;
  display:flex;justify-content:space-between;align-items:center;background:#fbfcfe}
.chat-col .c-list{flex:1;overflow-y:auto}
.conv-item{padding:13px 15px;border-bottom:1px solid var(--line-2);cursor:pointer;display:flex;gap:10px;transition:background .12s ease}
.conv-item:hover{background:#f8faff}
.conv-item.active{background:var(--brand-soft);border-left:3px solid var(--brand);padding-left:12px}
.conv-item .av{width:36px;height:36px;border-radius:9px;background:#e8ecfa;color:var(--brand);flex:0 0 36px;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:650}
.conv-item .ci{min-width:0;flex:1}
.conv-item .ci .t{display:flex;justify-content:space-between;font-size:13px;gap:8px}
.conv-item .ci .t b{font-weight:600}
.conv-item .ci .t span{font-size:11px;color:var(--ink-3);white-space:nowrap}
.conv-item .ci .last{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}
.chat-main{display:flex;flex-direction:column;min-width:0}
.chat-main .m-hd{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff}
.chat-main .m-hd b{font-size:14px}
.chat-main .m-hd .spacer{flex:1}
.msg-list{flex:1;overflow-y:auto;padding:18px;background:#f8faff}
.msg-row{display:flex;margin-bottom:15px;gap:9px}
.msg-row.mine{flex-direction:row-reverse}
.msg-row .bubble{max-width:72%;background:#fff;border:1px solid var(--line);border-radius:10px 10px 10px 2px;padding:10px 13px;
  font-size:13.5px;line-height:1.65;word-break:break-word;box-shadow:0 1px 3px rgba(15,23,42,.05)}
.msg-row.mine .bubble{background:var(--brand);color:#fff;border-color:var(--brand);border-radius:10px 10px 2px 10px;box-shadow:0 3px 10px rgba(79,70,229,.2)}
.msg-row .meta{font-size:11px;color:var(--ink-3);margin-top:5px}
.msg-row .file{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:8px 10px;background:#fafbfe}
.msg-sys{text-align:center;font-size:12px;color:var(--ink-3);margin:10px 0}
.msg-recalled{font-size:12px;color:var(--ink-3);font-style:italic}
.composer{border-top:1px solid var(--line);padding:12px;background:#fff}
.composer textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 11px;
  min-height:68px;resize:vertical;outline:none;font-size:13.5px}
.composer textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(79,70,229,.1)}
.composer .c-acts{display:flex;gap:8px;align-items:center;margin-top:9px;flex-wrap:wrap}
.composer .c-acts .spacer{flex:1}
.info-list{padding:6px 16px}
.info-list .kv{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line-2);font-size:12.5px}
.info-list .kv span{color:var(--ink-3)}
.info-list .kv b{font-weight:550;text-align:right;word-break:break-all}

/* ---------- 访客挂件 / 访客聊天窗 ---------- */
#zy-widget-btn{position:fixed;right:22px;bottom:22px;z-index:9998;width:56px;height:56px;border-radius:50%;
  background:linear-gradient(140deg,var(--brand-3),var(--brand-2));color:#fff;border:0;
  box-shadow:0 8px 26px rgba(79,70,229,.4);cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}
#zy-widget-panel{position:fixed;right:22px;bottom:90px;z-index:9999;width:368px;max-width:calc(100vw - 32px);
  height:530px;max-height:calc(100vh - 116px);background:#fff;border:1px solid var(--line);border-radius:14px;
  box-shadow:0 20px 60px rgba(15,23,42,.24);display:none;flex-direction:column;overflow:hidden}
#zy-widget-panel.open{display:flex}
#zy-widget-panel .w-hd{background:linear-gradient(120deg,#111c38,#24336b);color:#fff;padding:15px 17px;display:flex;align-items:center;justify-content:space-between}
#zy-widget-panel .w-hd b{font-size:14px}
#zy-widget-panel .w-hd .w-sub{font-size:11.5px;color:#a9bad6;margin-top:3px}
#zy-widget-panel .w-hd button{background:none;border:0;color:#fff;font-size:20px;cursor:pointer;line-height:1}
#zy-widget-panel .w-body{flex:1;overflow-y:auto;padding:14px;background:#f8faff}
#zy-widget-panel .w-ft{border-top:1px solid var(--line);padding:9px;display:flex;gap:7px;background:#fff}
#zy-widget-panel .w-ft input{flex:1;border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px;outline:none;font-size:13px}
#zy-widget-panel .w-ft input:focus{border-color:var(--brand)}
#zy-widget-panel .w-ft .btn{min-height:36px}

/* ---------- API 文档 ---------- */
.doc-wrap{display:grid;grid-template-columns:226px 1fr;gap:22px}
.doc-nav{position:sticky;top:80px;align-self:start;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);max-height:calc(100vh - 100px);overflow-y:auto}
.doc-nav a{display:block;padding:7px 10px;font-size:12.5px;color:var(--ink-2);border-radius:6px}
.doc-nav a:hover{background:var(--brand-soft);color:var(--brand)}
.doc-body{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:8px 26px 26px;box-shadow:var(--shadow);min-width:0}
.doc-body h2{font-size:19px;margin:28px 0 12px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.doc-body h3{font-size:15px;margin:22px 0 9px}
.doc-body p,.doc-body li{font-size:13.5px;color:var(--ink-2);line-height:1.85}
.doc-body code{background:#f1f4fa;padding:2px 6px;border-radius:4px;font-family:Consolas,Monaco,monospace;font-size:12.5px;color:#3730a3}
.doc-body pre{background:#0f172a;color:#d8e2f5;padding:16px 18px;border-radius:var(--radius-sm);overflow-x:auto;font-size:12.5px;line-height:1.7}
.doc-body pre code{background:none;color:inherit;padding:0}
.method{display:inline-block;font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:4px;color:#fff;margin-right:9px;letter-spacing:.4px}
.method.get{background:#059669}.method.post{background:var(--brand)}.method.put{background:var(--warn)}.method.del{background:var(--err)}
code.block{display:block;white-space:pre-wrap}

/* ---------- 时间线 / 键值 ---------- */
.timeline{padding:4px 0}
.timeline .ti{display:flex;gap:14px;padding:10px 0;border-bottom:1px solid var(--line-2)}
.timeline .ti:last-child{border-bottom:0}
.timeline .ti .tm{font-size:12px;color:var(--ink-3);width:142px;flex:0 0 142px;font-variant-numeric:tabular-nums}
.timeline .ti .tx{font-size:13px;color:var(--ink-2)}
.kv-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 26px}
.kv-grid .kv,.kv{display:flex;justify-content:space-between;gap:12px;border-bottom:1px dashed var(--line);padding:9px 0;font-size:13px}
.kv-grid .kv span,.kv span{color:var(--ink-3);white-space:nowrap}
.kv-grid .kv b,.kv b{font-weight:550;text-align:right;word-break:break-all}

/* ---------- 侧栏遮罩（移动端） ---------- */
.sidebar-mask{display:none;position:fixed;inset:0;background:rgba(15,23,42,.46);z-index:35}
.sidebar-mask.show{display:block}

/* ---------- 响应式：平板 / 手机 ---------- */
@media (max-width:1180px){
  .hero-inner{grid-template-columns:1fr;gap:36px}
  .hero-card{max-width:520px}
  .work-grid{grid-template-columns:1fr}
  .quick-grid{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:1100px){
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .two-col,.three-col{grid-template-columns:1fr}
  .feat-grid{grid-template-columns:repeat(2,1fr)}
  .steps{grid-template-columns:repeat(2,1fr)}
  .step:after{display:none}
  .chat-shell{grid-template-columns:224px 1fr}
  .chat-shell .chat-col:last-child{display:none}
  .doc-wrap{grid-template-columns:1fr}
  .doc-nav{position:static;max-height:none}
}
@media (max-width:820px){
  .sidebar{transform:translateX(-100%);transition:transform .22s ease;box-shadow:12px 0 40px rgba(15,23,42,.2)}
  .sidebar.open{transform:translateX(0)}
  .main{margin-left:0}
  .menu-toggle{display:inline-flex}
  .topbar{padding:0 14px;gap:10px}
  .topbar .who,.topbar .crumb,.topbar .env-tag{display:none}
  .content{padding:16px 14px 34px}
  .form-grid{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .page-head h1{font-size:19px}
  .site-head{height:auto;min-height:64px;flex-wrap:wrap;padding:11px 16px;row-gap:9px}
  .site-head .logo .tagline{display:none}
  .site-head nav{width:100%;margin-left:0;gap:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}
  .site-head nav a{white-space:nowrap;flex:0 0 auto;font-size:13px}
  .hero{padding:52px 18px 58px}
  .hero h1{font-size:29px}
  .hero .meta{gap:0}
  .hero .meta .m{padding-right:18px;margin-right:18px}
  .hero .meta .m b{font-size:16px}
  .hero-card{padding:18px}
  .section{padding:44px 18px}
  .section .s-head h2{font-size:22px}
  .feat-grid{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr}
  .download-inner{padding:38px 18px}
  .download-inner .btn-row{min-width:100%}
  .chat-shell{grid-template-columns:1fr;height:auto;min-height:0}
  .chat-shell .chat-col{display:none}
  .chat-shell .chat-main{display:flex;height:70vh}
  .kv-grid{grid-template-columns:1fr}
  .modal-mask{padding:20px 10px}
  .auth-box .a-hd,.auth-box .a-bd{padding-left:22px;padding-right:22px}
  .quick-grid{grid-template-columns:repeat(3,1fr)}
  .work-greet{padding:18px}
  .release .rd{min-width:100%;order:3}
}
@media (max-width:480px){
  .stat-grid{grid-template-columns:1fr}
  .filter-bar .fi,.filter-bar .fi.small{min-width:100%;max-width:none}
  .btn{padding:7px 11px}
  .hero .meta .m b{font-size:15px}
  .tbl{min-width:560px}
  .quick-grid{grid-template-columns:repeat(2,1fr)}
  .doc-body{padding:6px 16px 20px}
  #zy-widget-panel{right:8px;left:8px;bottom:78px;width:auto;max-width:none;height:72vh}
  #zy-widget-btn{right:14px;bottom:14px}
}
/* 六列业务指标在不同视口下的收敛 */
@media (max-width:1180px){.stat-grid.six{grid-template-columns:repeat(3,1fr)}}
@media (max-width:820px){.stat-grid.six{grid-template-columns:repeat(2,1fr)}}
@media (max-width:480px){.stat-grid.six{grid-template-columns:1fr}}
@media print{.sidebar,.topbar,.page-head .acts,.btn,.filter-bar,.pager,.menu-toggle{display:none!important}.main{margin-left:0}.content{padding:0}}
