/* ============================================================
   上流云智能体SaaS平台 — 设计系统
   风格：红白相间 + 黑色点缀 / 简约大气 / 科技感
   桌面与移动端双形态（移动端为独立简化布局，非降级缩放）
   ============================================================ */
:root{
  --red:#e60012; --red2:#ff2d3f; --red-deep:#b3000e;
  --ink:#141419; --ink2:#2a2a31;
  --bg:#f7f7f8; --card:#ffffff;
  --line:#e8e8ec; --txt:#1d1d24; --txt2:#6b6b76; --txt3:#9a9aa4;
  --radius:14px; --shadow:0 6px 28px rgba(20,20,25,.07);
  --grad:linear-gradient(135deg,var(--red) 0%,var(--red2) 100%);
  --nav-h:64px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;
  background:var(--bg); color:var(--txt); min-height:100vh;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,textarea,select{font-family:inherit;outline:none}

/* ---------- 开屏 ---------- */
#splash{position:fixed;inset:0;z-index:99;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--ink);transition:opacity .45s}
#splash.hide{opacity:0;pointer-events:none}
.s-mark{font-size:42px;font-weight:800;color:#fff;letter-spacing:4px}
.s-mark span{color:var(--red2);margin-left:6px;font-size:18px;letter-spacing:8px;font-weight:600}
.s-name{margin-top:14px;color:#ffffff99;font-size:13px;letter-spacing:6px}

/* ---------- 顶部导航（桌面形态） ---------- */
.topnav{
  position:fixed;top:0;left:0;right:0;height:var(--nav-h);z-index:50;
  display:flex;align-items:center;gap:24px;
  /* 全宽延伸：导航栏铺满整窗左右（仅留自适应边距），中间链接组在整窗横向居中；
     不再锁死 1100px 盒子，避免宽屏两侧留白过大、导航项拥挤重叠 */
  padding:0 max(24px, 3vw);
  background:rgba(255,255,255,.88);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:17px;white-space:nowrap;flex:0 0 auto}
.brand .logo{width:31px;height:31px;overflow:visible;filter:drop-shadow(0 3px 10px rgba(228,51,43,.32))}
/* 母站同款三箭头 logo：错相位向上冲刺（老浏览器仅静态显示，无害降级） */
.logo .lg-a{transform-origin:256px 430px;will-change:transform;animation:logo-rush 2.4s cubic-bezier(.4,0,.2,1) infinite}
.logo .lg-a1{animation-delay:.3s}
.logo .lg-a2{animation-delay:0s}
.logo .lg-a3{animation-delay:.12s}
.brand:hover .logo{filter:drop-shadow(0 4px 14px rgba(228,51,43,.5))}
@keyframes logo-rush{0%,52%{transform:translateY(0)}62%{transform:translateY(-24px)}72%{transform:translateY(0)}100%{transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){.logo .lg-a{animation:none}}
.brand em{font-style:normal;color:var(--red)}
.brand small{font-size:10px;color:var(--txt3);letter-spacing:2px;margin-left:2px}
.nav-links{display:flex;gap:2px;flex:1;min-width:0;justify-content:center}
.nav-links a{padding:8px 13px;border-radius:9px;font-size:14.5px;color:var(--txt2);font-weight:500;transition:.18s;white-space:nowrap}
.nav-links a:hover{color:var(--red);background:#fff1f2}
.nav-links a.on{color:var(--red);font-weight:600}
/* 热门菜单小火焰：轻微摇曳脉动，hover 烧得更旺 */
.nav-links a .flame{width:12px;height:12px;vertical-align:-1.5px;margin-right:4px;transform-origin:50% 92%;animation:flame-flicker 1.8s ease-in-out infinite;filter:drop-shadow(0 0 3px rgba(255,106,0,.35))}
.nav-links a.hot:hover{color:var(--red);background:linear-gradient(90deg,#fff1f2,#fff7e8)}
.nav-links a.hot.on .flame{width:13px;height:13px}
@keyframes flame-flicker{
  0%,100%{transform:scale(1) rotate(-2deg)}
  30%{transform:scale(1.14) rotate(4deg) translateY(-.5px)}
  55%{transform:scale(.92) rotate(-1deg)}
  75%{transform:scale(1.08) rotate(2deg)}
}
@media (prefers-reduced-motion:reduce){.nav-links a .flame{animation:none}}
/* 窄桌面降级：登录管理员共8个导航项，1366px 以下逐级收紧，杜绝文字被挤成竖排 */
@media (max-width:1366px){
  .topnav{gap:14px;padding:0 max(20px, 2.5vw)}
  .nav-links a{padding:8px 10px;font-size:13.5px}
  .brand small{display:none}
}
@media (max-width:1160px){
  .nav-links{gap:0}
  .nav-links a{padding:8px 7px;font-size:13px;border-radius:8px}
}
.nav-right{display:flex;align-items:center;gap:12px;flex:0 0 auto}
.balance-chip{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--red);background:#fff1f2;border:1px solid #ffd6da;padding:6px 12px;border-radius:99px;white-space:nowrap}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 22px;border-radius:10px;font-size:14.5px;font-weight:600;transition:.18s;white-space:nowrap}
.btn-red{background:var(--grad);color:#fff;box-shadow:0 4px 14px rgba(230,0,18,.3)}
.btn-red:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(230,0,18,.4)}
.btn-ghost{border:1.5px solid var(--ink);color:var(--ink)}
.btn-ghost:hover{background:var(--ink);color:#fff}
.btn-sm{padding:7px 14px;font-size:13px;border-radius:8px}
.btn-block{width:100%}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;cursor:pointer;border:2px solid #fff;box-shadow:0 0 0 1.5px var(--line)}
.user-menu{position:relative}
.user-dropdown{position:absolute;right:0;top:44px;width:210px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:8px;display:none;z-index:60}
.user-dropdown.open{display:block}
.user-dropdown .u-head{padding:10px 12px;border-bottom:1px solid var(--line);margin-bottom:6px}
.user-dropdown .u-head b{font-size:14px}
.user-dropdown .u-head p{font-size:12px;color:var(--txt3);margin-top:3px}
.user-dropdown a,.user-dropdown button.ud-item{display:block;width:100%;text-align:left;padding:9px 12px;border-radius:8px;font-size:13.5px;color:var(--txt2)}
.user-dropdown a:hover,.user-dropdown button.ud-item:hover{background:#fff1f2;color:var(--red)}

/* ---------- 主区域 ---------- */
#view{padding-top:var(--nav-h);min-height:100vh}
.page{max-width:1180px;margin:0 auto;padding:44px 40px 80px}

/* ---------- 首页 Hero ---------- */
.hero{position:relative;overflow:hidden;background:var(--ink);color:#fff}
.hero-inner{max-width:1180px;margin:0 auto;padding:96px 40px 110px;position:relative;z-index:2}
.hero::before{content:"";position:absolute;inset:0;
  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}
.hero::after{content:"";position:absolute;width:560px;height:560px;border-radius:50%;
  background:radial-gradient(circle,rgba(230,0,18,.4) 0%,transparent 65%);
  top:-180px;right:-120px;filter:blur(10px)}
.hero-tag{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;letter-spacing:3px;color:#ff8f98;border:1px solid rgba(230,0,18,.5);background:rgba(230,0,18,.12);padding:7px 16px;border-radius:99px;margin-bottom:26px}
.hero-tag i{width:7px;height:7px;border-radius:50%;background:var(--red2);box-shadow:0 0 10px var(--red2);animation:pulse 1.8s infinite}
@keyframes pulse{50%{opacity:.35}}
.hero h1{font-size:52px;line-height:1.18;font-weight:800;letter-spacing:1px}
.hero h1 em{font-style:normal;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p.sub{margin-top:20px;font-size:17px;color:#ffffffb3;line-height:1.9;max-width:640px}
.hero-cta{margin-top:40px;display:flex;gap:16px}
.hero-cta .btn{padding:14px 32px;font-size:15.5px;border-radius:12px}
.hero-stats{margin-top:64px;display:flex;gap:56px}
.hero-stats .st b{font-size:26px;font-weight:800;color:#fff}
.hero-stats .st b i{font-style:normal;color:var(--red2)}
.hero-stats .st p{font-size:12.5px;color:#ffffff80;margin-top:5px;letter-spacing:1px}

/* ---------- 通用区块 ---------- */
.sec-title{display:flex;align-items:baseline;gap:14px;margin-bottom:34px}
.sec-title h2{font-size:28px;font-weight:800}
.sec-title span{font-size:13px;color:var(--txt3);letter-spacing:2px}
.sec-title::before{content:"";width:8px;height:26px;border-radius:4px;background:var(--grad);align-self:center}

.feature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.f-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:30px 26px;transition:.25s;position:relative;overflow:hidden}
.f-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:#ffc9ce}
.f-card::before{content:"";position:absolute;top:0;left:0;width:44px;height:4px;background:var(--grad);border-radius:0 0 4px 0}
.f-icon{width:46px;height:46px;border-radius:12px;background:#fff1f2;color:var(--red);display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:18px;font-weight:700}
.f-card h3{font-size:16.5px;font-weight:700;margin-bottom:10px}
.f-card p{font-size:13.5px;color:var(--txt2);line-height:1.8}

.scene-band{background:var(--ink);border-radius:20px;padding:52px 48px;color:#fff;margin-top:64px;position:relative;overflow:hidden}
.scene-band::before{content:"";position:absolute;right:-80px;top:-80px;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(230,0,18,.35),transparent 70%)}
.scene-band h2{font-size:24px;font-weight:800;margin-bottom:24px}
.scene-tags{display:flex;flex-wrap:wrap;gap:12px}
.scene-tags span{border:1px solid rgba(255,255,255,.22);padding:9px 20px;border-radius:99px;font-size:13.5px;color:#ffffffcc}

/* ---------- 会员页 ---------- */
.plan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;align-items:stretch}
.plan{background:var(--card);border:1.5px solid var(--line);border-radius:18px;padding:34px 30px;display:flex;flex-direction:column;position:relative;transition:.22s}
.plan:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.plan.hot{border-color:var(--red);box-shadow:0 10px 34px rgba(230,0,18,.14)}
.plan .hot-badge{position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:var(--grad);color:#fff;font-size:12px;padding:5px 18px;border-radius:99px;font-weight:600;letter-spacing:1px}
.plan h3{font-size:18px;font-weight:800}
.plan .price{margin:18px 0 6px;font-size:38px;font-weight:800;color:var(--red)}
.plan .price small{font-size:13px;color:var(--txt3);font-weight:500}
.plan .token-note{font-size:13px;color:var(--txt2);background:var(--bg);border-radius:8px;padding:9px 12px;margin:10px 0 18px}
.plan ul{list-style:none;flex:1;margin-bottom:24px}
.plan li{font-size:13.5px;color:var(--txt2);padding:7px 0;display:flex;gap:9px;align-items:flex-start}
.plan li::before{content:"✓";color:var(--red);font-weight:700;flex-shrink:0}

/* ---------- 对话页 ---------- */
.chat-layout{display:grid;grid-template-columns:264px 1fr;height:calc(100vh - var(--nav-h))}
.chat-side{border-right:1px solid var(--line);background:var(--card);display:flex;flex-direction:column}
.chat-side .cs-head{padding:20px 20px 12px;font-size:12px;letter-spacing:2px;color:var(--txt3);font-weight:600}
.agent-item{padding:14px 20px;cursor:pointer;border-left:3px solid transparent;transition:.15s}
.agent-item:hover{background:#fff1f2}
.agent-item.on{border-left-color:var(--red);background:#fff1f2}
.agent-item b{display:block;font-size:14.5px;font-weight:600}
.agent-item span{display:block;font-size:12px;color:var(--txt3);margin-top:4px;line-height:1.5}
.cs-foot{margin-top:auto;padding:16px 20px;border-top:1px solid var(--line);font-size:12.5px;color:var(--txt2)}
.cs-foot b{color:var(--red);font-size:16px}
.chat-main{display:flex;flex-direction:column;min-width:0;background:var(--bg)}
.chat-msgs{flex:1;overflow-y:auto;padding:28px 6%;scroll-behavior:smooth}
.msg{display:flex;gap:14px;margin-bottom:26px;animation:fadeUp .3s}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1}}
.msg .m-avatar{width:36px;height:36px;border-radius:10px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}
.msg.ai .m-avatar{background:var(--grad);color:#fff}
.msg.me{flex-direction:row-reverse}
.msg.me .m-avatar{background:var(--ink);color:#fff;border-radius:10px}
.bubble{max-width:72%;padding:11px 15px;border-radius:14px;font-size:14.5px;line-height:1.7;white-space:pre-wrap;word-break:break-word}
.msg.ai .bubble{background:var(--card);border:1px solid var(--line);border-top-left-radius:4px;color:var(--txt)}
.msg.me .bubble{background:var(--red);color:#fff;border-top-right-radius:4px;box-shadow:0 4px 14px rgba(230,0,18,.25);padding:9px 14px;line-height:1.6}
.bubble .think{font-size:12.5px;color:var(--txt3);background:var(--bg);border-left:3px solid var(--line);padding:8px 12px;border-radius:8px;margin-bottom:10px;line-height:1.7}
.bubble .cursor{display:inline-block;width:8px;height:16px;background:var(--red);vertical-align:-3px;animation:blink .9s infinite}
@keyframes blink{50%{opacity:0}}
.chat-input-wrap{padding:16px 6% 22px;border-top:1px solid var(--line);background:var(--card)}
.chat-input{display:flex;gap:12px;align-items:flex-end;max-width:880px;margin:0 auto}
.chat-input textarea{flex:1;resize:none;border:1.5px solid var(--line);border-radius:12px;padding:13px 16px;font-size:14.5px;line-height:1.6;max-height:140px;background:var(--bg);transition:border .15s}
.chat-input textarea:focus{border-color:var(--red);background:#fff}
.send-btn{width:46px;height:46px;border-radius:12px;background:var(--grad);color:#fff;font-size:18px;flex-shrink:0;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(230,0,18,.3);transition:.15s}
.send-btn:disabled{opacity:.5;cursor:not-allowed}
.chat-tip{max-width:880px;margin:8px auto 0;font-size:11.5px;color:var(--txt3);text-align:center}

/* ---------- 账户页 ---------- */
.account-grid{display:grid;grid-template-columns:340px 1fr;gap:24px}
.a-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:28px}
.a-card h3{font-size:15px;font-weight:700;margin-bottom:18px;color:var(--txt2)}
.balance-big{font-size:40px;font-weight:800;color:var(--red);letter-spacing:-1px}
.balance-big small{font-size:13px;color:var(--txt3);font-weight:500;letter-spacing:0}
.balance-card{background:var(--ink);color:#fff;border:none;position:relative;overflow:hidden}
.balance-card::after{content:"";position:absolute;right:-60px;top:-60px;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(230,0,18,.45),transparent 70%)}
.balance-card .balance-big{color:#fff}
.balance-card .balance-big small{color:#ffffff80}
.b-row{display:flex;justify-content:space-between;font-size:13px;color:#ffffff99;margin-top:10px}
.usage-table{width:100%;border-collapse:collapse;font-size:13px}
.usage-table th{text-align:left;color:var(--txt3);font-weight:500;padding:8px 6px;border-bottom:1px solid var(--line);font-size:12px}
.usage-table td{padding:10px 6px;border-bottom:1px solid var(--bg)}
.usage-table .tk{color:var(--red);font-weight:600}

/* ---------- 底部 ---------- */
.footer{border-top:1px solid var(--line);padding:36px 40px;text-align:center;font-size:12.5px;color:var(--txt3);line-height:2.1}
.footer b{color:var(--txt2)}

/* ---------- 底部标签栏（移动端形态） ---------- */
.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:50;display:none;
  background:rgba(255,255,255,.95);backdrop-filter:blur(14px);
  border-top:1px solid var(--line);
  padding:6px 0 calc(6px + env(safe-area-inset-bottom));}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10.5px;color:var(--txt3);padding:4px 0}
.tabbar a .t-ico{font-size:20px;line-height:1}
.tabbar a.on{color:var(--red);font-weight:600}

/* ---------- 弹窗 / Toast ---------- */
.modal-mask{position:fixed;inset:0;z-index:80;background:rgba(16,16,20,.55);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeUp .2s}
.modal{background:var(--card);border-radius:20px;width:400px;max-width:100%;padding:36px 34px;position:relative}
.modal .m-close{position:absolute;top:16px;right:18px;font-size:20px;color:var(--txt3);width:32px;height:32px;border-radius:8px}
.modal .m-close:hover{background:var(--bg);color:var(--red)}
.modal h2{font-size:22px;font-weight:800;margin-bottom:6px}
.modal h2 em{font-style:normal;color:var(--red)}
.modal .m-sub{font-size:13px;color:var(--txt3);margin-bottom:24px}
.m-tabs{display:flex;background:var(--bg);border-radius:10px;padding:4px;margin-bottom:22px}
.m-tabs button{flex:1;padding:9px;border-radius:8px;font-size:14px;font-weight:600;color:var(--txt3)}
.m-tabs button.on{background:#fff;color:var(--red);box-shadow:0 2px 8px rgba(0,0,0,.08)}
.field{margin-bottom:16px}
.field label{display:block;font-size:12.5px;font-weight:600;color:var(--txt2);margin-bottom:7px}
.field input{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:12px 14px;font-size:14.5px;background:var(--bg);transition:.15s}
.field input:focus{border-color:var(--red);background:#fff}
.form-err{font-size:12.5px;color:var(--red);min-height:18px;margin:-6px 0 10px}
#toast-root{position:fixed;top:76px;left:50%;transform:translateX(-50%);z-index:95;display:flex;flex-direction:column;gap:10px;align-items:center}
.toast{background:var(--ink);color:#fff;padding:11px 22px;border-radius:99px;font-size:13.5px;box-shadow:var(--shadow);animation:fadeUp .25s;border-left:4px solid var(--red)}

/* ============================================================
   移动端形态（独立简化布局，非缩放）
   ============================================================ */
body.mobile .topnav{padding:0 18px;gap:12px}
body.mobile .nav-links{display:none}
body.mobile .balance-chip{font-size:12px;padding:5px 10px}
body.mobile .tabbar{display:flex}

body.mobile .hero-inner{padding:64px 22px 72px}
body.mobile .hero h1{font-size:31px}
body.mobile .hero p.sub{font-size:14px;margin-top:14px}
body.mobile .hero-cta{flex-direction:column;gap:12px;margin-top:30px}
body.mobile .hero-cta .btn{padding:13px 24px}
body.mobile .hero-stats{gap:28px;margin-top:44px;flex-wrap:wrap}
body.mobile .hero-stats .st b{font-size:20px}
/* 移动端隐藏次要区块，保持简洁 */
body.mobile .m-hide{display:none}

body.mobile .page{padding:26px 18px 96px}
body.mobile .feature-grid{grid-template-columns:1fr 1fr;gap:12px}
body.mobile .f-card{padding:18px 14px;border-radius:12px}
body.mobile .f-icon{width:36px;height:36px;font-size:17px;margin-bottom:10px;border-radius:9px}
body.mobile .f-card h3{font-size:14px}
body.mobile .f-card p{font-size:12px;line-height:1.6}
body.mobile .scene-band{padding:30px 22px;border-radius:16px;margin-top:36px}
body.mobile .scene-band h2{font-size:18px}
body.mobile .scene-tags span{font-size:12px;padding:7px 14px}
body.mobile .sec-title h2{font-size:20px}

body.mobile .plan-grid{grid-template-columns:1fr;gap:16px}
body.mobile .plan{padding:24px 20px}
body.mobile .plan .price{font-size:30px}

/* 移动端对话：全屏聊天 + 顶部横向智能体选择，无侧边栏 */
body.mobile .chat-layout{display:flex;flex-direction:column;height:calc(100vh - var(--nav-h) - 58px)}
body.mobile .chat-side{display:none}
body.mobile .agent-chips{display:flex;gap:8px;overflow-x:auto;padding:10px 16px;background:var(--card);border-bottom:1px solid var(--line);flex-shrink:0}
body.mobile .agent-chip{flex-shrink:0;padding:7px 16px;border-radius:99px;font-size:13px;font-weight:600;background:var(--bg);color:var(--txt2);border:1px solid var(--line)}
body.mobile .agent-chip.on{background:var(--red);color:#fff;border-color:var(--red)}
body.mobile .chat-msgs{padding:18px 14px}
body.mobile .bubble{max-width:82%;font-size:14px;padding:11px 14px}
body.mobile .chat-input-wrap{padding:10px 12px calc(12px + env(safe-area-inset-bottom))}
body.mobile .chat-input textarea{padding:10px 13px;font-size:14px}
body.mobile .send-btn{width:42px;height:42px}

body.mobile .account-grid{grid-template-columns:1fr;gap:14px}
body.mobile .a-card{padding:20px;border-radius:12px}
body.mobile .balance-big{font-size:32px}
body.mobile .modal{padding:28px 22px;border-radius:16px}
body.mobile .footer{padding:26px 18px 96px}

@media (min-width:769px){ .agent-chips{display:none} }
@media (max-width:1000px) and (min-width:769px){
  .feature-grid{grid-template-columns:repeat(2,1fr)}
  .plan-grid{grid-template-columns:1fr;max-width:460px;margin:0 auto}
  .account-grid{grid-template-columns:1fr}
}

/* ---------- 管理后台 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px 20px;display:flex;gap:14px;align-items:center;transition:.2s}
.stat-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.stat-card .st-ico{width:44px;height:44px;border-radius:11px;background:#fff1f2;color:var(--red);display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0}
.stat-card b{display:block;font-size:21px;font-weight:800;letter-spacing:-.5px}
.stat-card p{font-size:12px;color:var(--txt3);margin-top:3px}
.admin-table th{white-space:nowrap}
.admin-table td{white-space:nowrap;vertical-align:middle}
.badge{display:inline-block;font-size:11px;font-weight:600;padding:3px 9px;border-radius:99px;background:var(--bg);color:var(--txt2);border:1px solid var(--line)}
.badge.b-red{background:#fff1f2;color:var(--red);border-color:#ffd6da}
.badge.b-ok{background:#e9f9ef;color:#0a8a3a;border-color:#c9f0d8}
.badge.b-off{background:#fdf2f2;color:#b91c1c;border-color:#f7d4d4}
.row-actions{display:flex;gap:10px}
.lnk{font-size:12.5px;color:var(--red);font-weight:600;padding:4px 8px;border-radius:6px}
.lnk:hover{background:#fff1f2}
.lnk.danger{color:#b91c1c}
.lnk.danger:hover{background:#fdf2f2}
.agent-form .field{margin-bottom:12px}
.agent-form textarea{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:11px 14px;font-size:13.5px;background:var(--bg);resize:vertical;line-height:1.6}
.agent-form textarea:focus{border-color:var(--red);background:#fff}
.agent-form select{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:11px 14px;font-size:13.5px;background:var(--bg)}
.af-row{display:flex;gap:12px;align-items:flex-start}

body.mobile .stat-grid{grid-template-columns:1fr 1fr;gap:10px}
body.mobile .stat-card{padding:14px;gap:10px}
body.mobile .stat-card .st-ico{width:36px;height:36px;font-size:15px}
body.mobile .stat-card b{font-size:16px}
body.mobile .stat-grid .stat-card:last-child{grid-column:1/-1}
body.mobile .m-tabs{max-width:100%}
body.mobile .admin-table{font-size:12px}
body.mobile .row-actions{flex-direction:column;gap:2px}

/* ---------- 子智能体树 + 委派可视化 ---------- */
.agent-item.sub{padding:10px 20px 10px 34px;background:#fbfbfc}
.agent-item.sub b{font-size:13.5px;color:var(--txt2)}
.agent-item.sub.on b{color:var(--red)}
.agent-item .own-mark{font-style:normal;font-size:10px;background:var(--red);color:#fff;padding:1px 6px;border-radius:99px;margin-left:6px;vertical-align:1px}
.cs-new{display:inline-block;margin-top:10px;font-size:12.5px;font-weight:600;color:var(--red);padding:5px 10px;border:1px solid #ffd6da;border-radius:8px}
.cs-new:hover{background:#fff1f2}
.delegate-box{background:#fff8f8;border:1px solid #ffd6da;border-radius:10px;padding:10px 13px;margin-bottom:10px}
.delegate-box b{font-size:12.5px;color:var(--red)}
.delegate-box p{font-size:12px;color:var(--txt2);margin-top:5px;line-height:1.6}
.delegate-box .d-ans{font-size:13px;color:var(--txt);background:#fff;border-left:3px solid var(--red);padding:8px 11px;border-radius:6px;margin-top:7px;line-height:1.7;white-space:pre-wrap}
.delegate-box .d-wait{color:var(--txt3);font-size:12px;margin-top:6px}

/* ---------- 图像处理专家 ---------- */
.img-lead{font-size:14px;color:var(--txt2);line-height:1.8;margin:-6px 0 18px;max-width:760px}
.img-warn{background:#fff8e6;border:1px solid #ffe1a6;color:#8a5a00;border-radius:var(--radius);
  padding:12px 16px;font-size:13px;margin-bottom:18px;line-height:1.6}
.img-panel{margin-bottom:8px}
.img-form{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:24px;box-shadow:var(--shadow)}
.img-form.two{display:grid;grid-template-columns:300px 1fr;gap:24px;align-items:start}
.img-form label{display:block;font-size:12.5px;font-weight:700;color:var(--txt2);margin:14px 0 7px;letter-spacing:.3px}
.img-form label:first-child{margin-top:0}
.img-form textarea,.img-form input{width:100%;border:1.5px solid var(--line);border-radius:10px;
  padding:12px 14px;font-size:14px;background:var(--bg);resize:vertical;line-height:1.7;font-family:inherit}
.img-form textarea:focus,.img-form input:focus{border-color:var(--red);background:#fff;outline:none}
.img-form select{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:11px 13px;
  font-size:13.5px;background:var(--bg);color:var(--txt)}
.img-row{display:grid;grid-template-columns:1.6fr 1fr .7fr;gap:14px}
.img-form .btn{margin-top:20px}

/* 上传区 */
.up-box{position:relative;border:2px dashed var(--line);border-radius:14px;background:var(--bg);
  aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:.2s}
.up-box:hover,.up-box.drag{border-color:var(--red);background:#fff8f8}
.up-box.has{border-style:solid}
.up-box img{width:100%;height:100%;object-fit:cover;display:block}
.up-mask{position:absolute;inset:0;background:rgba(10,10,12,.55);color:#fff;font-size:13px;font-weight:600;
  display:flex;align-items:center;justify-content:center;opacity:0;transition:.2s}
.up-box.has:hover .up-mask{opacity:1}
.up-empty{text-align:center;color:var(--txt3);padding:20px}
.up-empty span{display:block;font-size:36px;color:var(--red);opacity:.5;margin-bottom:8px}
.up-empty small{font-size:12px}

/* 增强方式选择 */
.op-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:6px}
.op-card{border:1.5px solid var(--line);border-radius:12px;padding:14px;cursor:pointer;background:var(--bg);transition:.2s}
.op-card:hover{border-color:#ffd6da}
.op-card.on{border-color:var(--red);background:#fff8f8}
.op-card b{display:block;font-size:13.5px;margin-bottom:5px}
.op-card.on b{color:var(--red)}
.op-card span{font-size:12px;color:var(--txt3);line-height:1.6}

/* 结果网格 */
.img-sec-head{display:flex;align-items:center;justify-content:space-between;margin:28px 0 14px}
.img-sec-head h3{font-size:16px;font-weight:800;margin:0}
.img-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}
.img-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.2s}
.img-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.img-card img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;background:var(--bg)}
.ic-bar{display:flex;gap:8px;align-items:center;padding:9px 12px;border-top:1px solid var(--line)}
.ic-cap{font-size:11.5px;color:var(--txt3);padding:0 12px 10px;line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.img-skel{grid-column:1/-1;text-align:center;color:var(--txt3);font-size:13px;padding:28px 0}
.img-answer{margin-top:18px;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--red);
  border-radius:10px;padding:16px 18px;font-size:14px;line-height:1.9;white-space:pre-wrap}

/* 对话内图片 */
.msg-image{margin:10px 0;border:1px solid var(--line);border-radius:12px;overflow:hidden;max-width:340px;background:var(--card)}
.msg-image img{width:100%;display:block}
.mi-bar{display:flex;align-items:center;justify-content:space-between;padding:7px 11px;border-top:1px solid var(--line)}
.mi-bar span{font-size:11.5px;color:var(--txt3)}
.tool-status{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--red);
  background:#fff8f8;border:1px solid #ffd6da;border-radius:8px;padding:8px 12px;margin:8px 0}
.spin{width:12px;height:12px;border:2px solid #ffd6da;border-top-color:var(--red);border-radius:50%;
  animation:sp .7s linear infinite;flex-shrink:0}
@keyframes sp{to{transform:rotate(360deg)}}

body.mobile .img-form{padding:16px}
body.mobile .img-form.two{grid-template-columns:1fr}
body.mobile .img-row{grid-template-columns:1fr}
body.mobile .op-grid{grid-template-columns:1fr}
body.mobile .up-box{aspect-ratio:4/3}
body.mobile .img-grid{grid-template-columns:1fr 1fr;gap:10px}
body.mobile .msg-image{max-width:100%}

/* ---------- 图片放大预览 Lightbox ---------- */
img[data-zoom]{cursor:zoom-in}
body.lb-open{overflow:hidden}
.lb-root{position:fixed;inset:0;z-index:9999;user-select:none;-webkit-user-select:none}
.lb-mask{position:absolute;inset:0;background:rgba(12,12,16,.94);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:lbIn .18s ease}
@keyframes lbIn{from{opacity:0}to{opacity:1}}
.lb-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  overflow:hidden;touch-action:none;cursor:grab}
.lb-stage.grabbing{cursor:grabbing}
.lb-img{max-width:92vw;max-height:82vh;transform-origin:0 0;will-change:transform;
  border-radius:6px;box-shadow:0 18px 60px rgba(0,0,0,.55);background:#000;
  image-rendering:auto;-webkit-user-drag:none}
.lb-x{position:absolute;top:16px;right:18px;width:40px;height:40px;border-radius:50%;
  border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#fff;
  font-size:17px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s;z-index:3}
.lb-x:hover{background:var(--red);border-color:var(--red)}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:78px;
  border:none;background:rgba(255,255,255,.08);color:#fff;font-size:30px;line-height:1;
  cursor:pointer;border-radius:10px;transition:.2s;z-index:3}
.lb-nav:hover{background:var(--red)}
.lb-prev{left:16px} .lb-next{right:16px}
.lb-bar{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);
  display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:99px;
  background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.16);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:3;max-width:94vw;flex-wrap:wrap;justify-content:center}
.lb-btn{border:none;background:rgba(255,255,255,.1);color:#fff;font-size:12.5px;
  padding:7px 13px;border-radius:99px;cursor:pointer;transition:.2s;font-family:inherit;white-space:nowrap}
.lb-btn:hover{background:var(--red)}
.lb-scale{min-width:48px;text-align:center;font-size:12.5px;color:#fff;font-weight:600;font-variant-numeric:tabular-nums}
.lb-count{font-size:12px;color:rgba(255,255,255,.7);padding:0 6px;font-variant-numeric:tabular-nums}
.lb-cap{position:absolute;left:50%;bottom:74px;transform:translateX(-50%);max-width:86vw;
  text-align:center;font-size:12.5px;color:rgba(255,255,255,.62);line-height:1.6;z-index:3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lb-tip{position:absolute;top:24px;left:50%;transform:translateX(-50%);font-size:11.5px;
  color:rgba(255,255,255,.42);z-index:2;pointer-events:none;white-space:nowrap}

body.mobile .lb-tip{display:none}
body.mobile .lb-nav{width:38px;height:64px;font-size:24px}
body.mobile .lb-prev{left:6px} body.mobile .lb-next{right:6px}
body.mobile .lb-bar{bottom:14px;gap:6px;padding:7px 9px}
body.mobile .lb-btn{padding:6px 10px;font-size:12px}
body.mobile .lb-cap{bottom:64px;font-size:11.5px}
body.mobile .lb-img{max-width:96vw;max-height:74vh}
.up-zoom{position:absolute;top:8px;right:8px;z-index:2;width:30px;height:30px;border-radius:8px;
  border:none;background:rgba(20,20,25,.55);color:#fff;font-size:14px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:.2s;opacity:.9}
.up-zoom:hover{background:var(--red);opacity:1}

/* ---------- 图像计费提示 ---------- */
.img-note{background:#fff;border:1px solid var(--line);border-left:3px solid var(--red);
  border-radius:10px;padding:12px 16px;font-size:12.5px;color:var(--txt2);line-height:1.8;margin-bottom:18px}
.img-note b{color:var(--red)}
.cost-hint{margin:10px 0 2px;font-size:12.5px;line-height:1.7;padding:9px 13px;border-radius:9px;
  border:1px solid var(--line);background:var(--bg);color:var(--txt3)}
.cost-hint.free{background:#eefaf2;border-color:#c9f0d8;color:#0a7a36}
.cost-hint.free b{color:#0a7a36}
.cost-hint.paid{background:#fff8e6;border-color:#ffe1a6;color:#8a5a00}
.cost-hint.paid b{color:#a34b00;font-size:13.5px}

/* ---------- 对话历史（会话条） ---------- */
.conv-bar{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line);
  background:var(--card);overflow:hidden}
.conv-new{flex-shrink:0;border:1px solid var(--line);background:#fff;color:var(--red);font-weight:600;
  font-size:12.5px;padding:7px 13px;border-radius:99px;cursor:pointer;transition:.15s;white-space:nowrap}
.conv-new:hover{background:var(--red);color:#fff;border-color:var(--red)}
.conv-chips{display:flex;gap:8px;overflow-x:auto;flex:1;scrollbar-width:none}
.conv-chips::-webkit-scrollbar{display:none}
.conv-chip{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--txt2);
  background:var(--bg);border:1px solid var(--line);border-radius:99px;padding:6px 12px;cursor:pointer;
  transition:.15s;max-width:180px}
.conv-chip:hover{border-color:var(--red);color:var(--red)}
.conv-chip.on{background:var(--red);border-color:var(--red);color:#fff}
.conv-chip.on i{color:#ffffffaa}
.conv-chip i{font-style:normal;font-size:10.5px;color:var(--txt3);padding:1px 2px;border-radius:99px}
.conv-chip i:hover{color:var(--red)}
.conv-chip.on i:hover{color:#fff}
.conv-empty{font-size:12px;color:var(--txt3);white-space:nowrap}
body.mobile .conv-bar{padding:8px 10px}
body.mobile .conv-new{padding:6px 10px;font-size:12px}
body.mobile .agent-chips{border-bottom:1px solid var(--line)}
.pin{border:1px solid var(--line);border-radius:7px;padding:5px 9px;font-size:13px;color:var(--txt1);
  background:#fff;outline:none}
.pin:focus{border-color:var(--red)}
.recharge-note h3{margin-bottom:8px}

/* ---------- 智能体广场（首页卡片墙） ---------- */
.plaza-lead{font-size:13.5px;color:var(--txt2);margin:-10px 0 22px}
.plaza-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.plaza-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;
  cursor:pointer;transition:.18s;display:flex;flex-direction:column;gap:12px}
.plaza-card:hover{border-color:var(--red);box-shadow:0 10px 28px rgba(230,0,18,.10);transform:translateY(-3px)}
.p-head{display:flex;align-items:center;gap:12px}
.p-avatar{width:44px;height:44px;border-radius:12px;background:var(--red);color:#fff;display:flex;
  align-items:center;justify-content:center;font-weight:800;font-size:19px;flex-shrink:0}
.p-title b{display:block;font-size:15.5px}
.p-title span{font-size:12px;color:var(--txt3)}
.p-desc{font-size:13px;color:var(--txt2);line-height:1.7;margin:0;min-height:44px}
.p-badges{display:flex;gap:6px;flex-wrap:wrap}
.p-badge{font-size:11px;padding:3px 9px;border-radius:99px;background:var(--bg);border:1px solid var(--line);color:var(--txt2)}
.p-badge.b-img{background:#fff4f5;border-color:#ffd2d6;color:var(--red)}
.p-badge.b-model{font-family:ui-monospace,monospace;font-size:10.5px}
.p-badge.b-mine{background:var(--red);border-color:var(--red);color:#fff}
.p-actions{display:flex;gap:10px;margin-top:auto}
.p-stats{display:flex;gap:14px;margin-top:12px;padding-top:10px;border-top:1px dashed var(--line);
  font-size:12px;color:var(--txt3);flex-wrap:wrap}
.p-stats b{color:var(--txt);font-weight:700}
.p-stats span{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.plaza-empty{grid-column:1/-1;text-align:center;padding:50px 20px;color:var(--txt3)}
body.mobile .plaza-grid{grid-template-columns:1fr}
body.mobile .plaza-card{padding:16px}
body.mobile .p-desc{min-height:0}

/* ---------- 页脚备案与营业执照 ---------- */
.footer .f-links{display:inline-flex;align-items:center;gap:8px;margin-top:6px;font-size:12.5px}
.footer .f-links a{color:#ffffff99;text-decoration:none;border-bottom:1px dashed #ffffff44;padding-bottom:1px;transition:.15s}
.footer .f-links a:hover{color:#fff;border-bottom-color:#fff}
.footer .f-sep{color:#ffffff55}
.p-badge.b-heat{background:#fff8e6;border-color:#ffe1a6;color:#a34b00}

/* ============ 外贸 ERP 模块 ============ */
.erp-tabs{flex-wrap:wrap;max-width:none}
.tab-dot{display:inline-block;min-width:16px;padding:0 4px;margin-left:5px;background:var(--red);color:#fff;
  border-radius:99px;font-size:10.5px;font-style:normal;line-height:16px;text-align:center}
.erp-block{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:14px}
.erp-block h3{font-size:15px;margin-bottom:12px}
.erp-block h3 small{font-weight:400;font-size:12px;color:var(--txt3);margin-left:8px}
.erp-chain{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:14px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--radius);margin-bottom:14px}
.ec-node{border:1px solid var(--line);border-radius:10px;padding:8px 14px;cursor:pointer;transition:.15s;background:#fff}
.ec-node b{display:block;font-size:13px}
.ec-node span{font-size:11.5px;color:var(--txt3)}
.ec-node.has{border-color:#ffd2d6}
.ec-node.on{background:var(--red);border-color:var(--red)}
.ec-node.on b,.ec-node.on span{color:#fff}
.ec-arrow{color:var(--txt3);font-style:normal;font-size:13px}
.ec-new{margin-left:auto;border:1px dashed var(--line);border-radius:99px;padding:8px 14px;font-size:12.5px;
  color:var(--red);cursor:pointer;transition:.15s}
.ec-new:hover{background:var(--red);color:#fff;border-style:solid}
.erp-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.erp-hint{font-size:12.5px;color:var(--txt3)}
.erp-ai-row{display:flex;gap:10px;align-items:center}
.erp-ai-ans{margin-top:12px;padding:14px;background:var(--bg);border:1px solid var(--line);border-radius:10px;
  font-size:13.5px;line-height:1.8;white-space:pre-wrap}
.erp-tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:99px;background:var(--bg);
  border:1px solid var(--line);color:var(--txt2)}
.erp-tag.t-confirmed{background:#f0fbf3;border-color:#c3e9cd;color:#128a3c}
.erp-tag.t-pending,.erp-tag.t-warn{background:#fff8e6;border-color:#ffe1a6;color:#a34b00}
.erp-tag.t-draft{background:var(--bg);border-color:var(--line);color:var(--txt2)}
.erp-row{cursor:pointer}
.erp-row:hover{background:#fff6f7}
.erp-mini{padding:8px 10px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;font-size:12.5px}

/* 单据抽屉 */
.erp-drawer{position:fixed;inset:0;z-index:80;background:rgba(20,20,25,.45);display:flex;
  align-items:flex-start;justify-content:center;padding:26px 16px;overflow:auto}
.erp-drawer-inner{width:100%;max-width:1080px;background:var(--bg);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.2)}
.ed-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 20px;
  background:var(--card);border-radius:16px 16px 0 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.ed-head h3{font-size:17px}
.ed-head p{font-size:12.5px;color:var(--txt3);margin-top:5px}
.ed-head a{color:var(--red)}
.ed-actions{display:flex;gap:8px;flex-wrap:wrap}
.ed-body{display:grid;grid-template-columns:1.55fr 1fr;gap:16px;padding:18px}
.ed-left,.ed-right{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}
.ed-left h4,.ed-right h4{font-size:13.5px;margin-bottom:10px}
.ed-left h4 small,.ed-right h4 small{font-weight:400;color:var(--txt3);font-size:11.5px;margin-left:6px}
.ed-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.ed-field{display:flex;flex-direction:column;gap:5px}
.ed-field span{font-size:12.5px;color:var(--txt2)}
.ed-field small{font-size:11px;color:var(--txt3);font-weight:400}
.ed-items th,.ed-items td{padding:4px 6px;font-size:12.5px}
.ei{width:100%;border:1px solid var(--line);border-radius:6px;padding:5px 7px;font-size:12.5px;background:#fff}
.ei:focus{border-color:var(--red)}
.ei-sm{max-width:88px}
.ei-xs{max-width:56px}
.ei-num{max-width:82px;text-align:right}
.ed-del{border:1px solid var(--line);border-radius:6px;width:26px;height:26px;color:var(--txt3);background:#fff}
.ed-del:hover{border-color:var(--red);color:var(--red)}
.erp-match{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--bg);font-size:13px}
.erp-match.ok{border-color:#c3e9cd;background:#f6fdf8}
.erp-match.warn{border-color:#ffe1a6;background:#fffcF4}
.em-top{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;margin-bottom:6px}
.em-top b{font-size:13px}
.em-diff{margin-top:6px;font-size:12.5px}
.em-diff b.up{color:var(--red)}
.em-diff b.down{color:#128a3c}
.em-diff .ok{color:#128a3c}
.em-diff .bad{color:var(--red)}
.em-alloc{margin-top:10px;font-size:12px}
.em-alloc b{display:block;margin-bottom:6px;font-size:12.5px}
.erp-att{display:flex;gap:10px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:9px;margin-bottom:8px}
.erp-att img{width:56px;height:56px;object-fit:cover;border-radius:7px;cursor:zoom-in}
.ea-info{display:flex;flex-direction:column;gap:4px;font-size:12.5px}
.ea-info small{color:var(--txt3);font-size:11.5px}
.erp-logs{max-height:180px;overflow:auto;font-size:12px;color:var(--txt2)}
.erp-logs div{padding:4px 0;border-bottom:1px dashed var(--line)}
.erp-logs span{color:var(--txt3);margin-right:8px}
.erp-diff{border:1px solid #ffe1a6;background:#fffdf7;border-radius:12px;padding:14px;margin-bottom:12px;cursor:pointer}
.ed-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px}
.ed-ops{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.ed-ex{margin-top:10px;padding:12px;background:#fff;border:1px solid var(--line);border-radius:9px;
  font-size:13px;line-height:1.8;white-space:pre-wrap}

/* 手机扫码上传页 */
.scan-page{max-width:520px;padding:22px 16px 90px}
.scan-head{text-align:center;margin-bottom:18px}
.scan-head h2{font-size:19px}
.scan-head p{font-size:13px;color:var(--txt3);margin-top:6px}
.scan-cam{text-align:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:24px}
.scan-btn{display:inline-block;background:var(--grad);color:#fff;padding:14px 30px;border-radius:99px;
  font-size:15px;font-weight:600;cursor:pointer}
.scan-cam .erp-hint{margin-top:10px}
.scan-list{margin-top:16px;display:flex;flex-direction:column;gap:10px}
.scan-item{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:10px}
.scan-item img{width:64px;height:64px;object-fit:cover;border-radius:9px;background:var(--bg)}
.si-info{display:flex;flex-direction:column;gap:3px;font-size:13px}
.si-info span{font-size:12px;color:var(--txt3)}
.si-info small{font-size:11.5px;color:var(--txt3);word-break:break-all}
.scan-foot{margin-top:20px;text-align:center;font-size:12px;color:var(--txt3)}

@media (max-width:900px){
  .ed-body{grid-template-columns:1fr}
  .erp-drawer{padding:12px 8px}
}

/* ============ 单据打印预览 ============ */
.erp-print-wrap{position:fixed;inset:0;z-index:90;background:rgba(20,20,25,.5);overflow:auto;padding:24px 12px}
.pt-actions{display:flex;gap:10px;justify-content:center;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.pt-paper{max-width:820px;margin:0 auto;background:#fff;padding:34px 38px;border-radius:8px;
  box-shadow:0 8px 40px rgba(0,0,0,.18);color:#141419}
.pt-head{text-align:center;border-bottom:2px solid #141419;padding-bottom:12px;margin-bottom:14px}
.pt-co{font-size:13px;color:#6b6b76}
.pt-head h1{font-size:22px;margin:6px 0;font-weight:600}
.pt-code{font-size:13px;color:#6b6b76}
.pt-meta{width:100%;border-collapse:collapse;margin-bottom:14px}
.pt-meta td{border:1px solid #dcdce0;padding:6px 9px;font-size:12.5px;width:25%;vertical-align:top}
.pt-meta span{display:block;color:#9a9aa4;font-size:11px;margin-bottom:2px}
.pt-items{width:100%;border-collapse:collapse;font-size:12.5px}
.pt-items th,.pt-items td{border:1px solid #dcdce0;padding:6px 8px;text-align:left}
.pt-items th{background:#f7f7f8;font-weight:600}
.pt-sum td{background:#fafafa;font-weight:600}
.pt-foot{display:flex;gap:40px;flex-wrap:wrap;margin-top:26px;font-size:12.5px;color:#6b6b76}
.pt-tip{margin-top:18px;font-size:11px;color:#9a9aa4;text-align:center}

@media print{
  body > *:not(.erp-print-wrap){display:none !important}
  .erp-print-wrap{position:static;background:#fff;padding:0;overflow:visible}
  .pt-actions{display:none !important}
  .pt-paper{box-shadow:none;border-radius:0;padding:0;max-width:none}
}

/* ============ 广场：筛选条 + 小卡片 ============ */
.plaza-filter{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 14px;
  background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:6px}
.plaza-filter .pin{min-width:120px}
.plaza-filter #pf-kw{flex:1;min-width:180px}
.plaza-count{margin-left:auto;font-size:12px;color:var(--txt3);white-space:nowrap}
/* 固定三列：卡片约 358px 宽，一张卡上的三个操作按钮才放得开。
   之前用 minmax(236px) 会自动排成 4 列（卡片仅 266px），按钮挤爆卡片。 */
.plaza-grid{grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:1040px){.plaza-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.plaza-grid{grid-template-columns:1fr}}
.plaza-card{padding:18px;gap:10px;border-radius:12px}
.p-avatar{width:38px;height:38px;border-radius:10px;font-size:17px}
.p-title b{font-size:14.5px}
.p-title span{font-size:11.5px}
.p-desc{font-size:12.5px;line-height:1.65;min-height:38px}
.p-badge{font-size:10.5px;padding:2px 8px}
.p-actions{margin-top:2px}
.plaza-card.is-dev{background:#fcfcfd}
.plaza-card.is-dev:hover{border-color:var(--line);box-shadow:none;transform:none}
.p-badge.b-dev{background:var(--bg);border-color:var(--line);color:var(--txt3)}
body.mobile .plaza-grid{grid-template-columns:1fr}
body.mobile .plaza-filter{padding:10px}
body.mobile .plaza-count{margin-left:0;width:100%}

/* ============ 思维导图式总链路 ============ */
.erp-mind{padding:6px 0 2px}
.mm-root{width:300px;max-width:100%;margin:0 auto;text-align:center;background:var(--grad);color:#fff;
  border-radius:12px;padding:12px 16px;cursor:pointer;box-shadow:0 4px 16px rgba(230,0,18,.18)}
.mm-root:hover{filter:brightness(1.06)}
.mm-root b{display:block;font-size:14.5px}
.mm-root span{display:block;font-size:11.5px;opacity:.92;margin-top:3px}
.mm-root em{display:block;font-size:11px;opacity:.82;margin-top:4px;font-style:normal}
.mm-fork{height:28px;position:relative}
.mm-fork::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line)}
.mm-fork::after{content:"";position:absolute;bottom:0;left:25%;right:25%;height:1px;background:var(--line)}
.mm-cols{display:grid;grid-template-columns:1fr 1fr;gap:34px}
.mm-ttl{text-align:center;font-size:12.5px;color:var(--txt2);font-weight:600;margin:4px 0 10px}
.mm-node{border:1px solid var(--line);border-radius:10px;padding:9px 12px;background:#fff;
  cursor:pointer;text-align:center;transition:.15s}
.mm-node:hover{border-color:var(--red);background:#fff6f7;transform:translateY(-1px)}
.mm-node.has{border-color:#ffd2d6;background:#fffafb}
.mm-node b{display:block;font-size:13px}
.mm-node span{display:block;font-size:11px;color:var(--txt3);margin-top:2px}
.mm-arrow{display:block;text-align:center;color:var(--txt3);font-style:normal;font-size:12px;padding:4px 0}
@media (max-width:900px){
  .mm-cols{grid-template-columns:1fr;gap:18px}
  .mm-fork::after{left:50%;right:50%}
}

/* ============ 明细录入卡片（替换挤压的表格） ============ */
.ed-items-wrap{background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:14px 16px 16px;margin:0 18px 18px}
.ed-sec-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.ed-sec-head h4{font-size:13.5px}
.ed-sec-head h4 small{font-weight:400;color:var(--txt3);font-size:11.5px;margin-left:6px}
.ed-itabs{max-width:none;margin-left:auto;flex-wrap:wrap}
.ed-cards{display:flex;flex-direction:column;gap:10px}
.it-card{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff}
.it-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.it-no{font-size:11px;color:var(--txt3);background:var(--bg);border-radius:5px;padding:1px 6px}
.it-title{font-size:12.5px;font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.it-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px}
.it-f{display:flex;flex-direction:column;gap:3px;min-width:0}
.it-f span{font-size:11px;color:var(--txt2)}
.it-f .ei{width:100%}
.it-f.it-wide{grid-column:span 2}
.it-conv{margin-top:8px;font-size:11.5px;color:var(--txt2);background:var(--bg);
  border-radius:7px;padding:6px 9px;line-height:1.7}
.it-conv .ok{color:#128a3c;font-weight:500}
.it-conv .bad{color:var(--red);font-weight:500}
.ed-items-foot{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px}
@media (max-width:700px){
  .ed-items-wrap{margin:0 10px 12px;padding:12px}
  .it-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:6px}
  .it-f.it-wide{grid-column:span 2}
}

/* ============ 明细紧凑行 + 采购分配弹窗 ============ */
.it-table{border:1px solid var(--line);border-radius:10px;overflow-x:auto;background:#fff}
.it-head,.it-row{display:flex;align-items:center;gap:6px;padding:7px 10px;min-width:760px}
.it-head{background:var(--bg);font-size:11.5px;color:var(--txt2);font-weight:500;
  border-bottom:1px solid var(--line)}
.it-row{border-bottom:1px solid #f2f2f4}
.it-row:last-child{border-bottom:none}
.it-row:hover{background:#fffafa}
.it-cell{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.it-name{font-weight:500}
.it-cell.num{text-align:right}
.it-no{font-size:11px;color:var(--txt3);background:var(--bg);border-radius:5px;text-align:center;padding:1px 0}
.c-idx{width:26px;flex:none}
.c-sku{width:78px;flex:none}
.c-name{flex:1;min-width:88px}
.c-spec{width:72px;flex:none}
.c-unit{width:42px;flex:none}
.c-cat{width:82px;flex:none}
.c-qty{width:58px;flex:none;text-align:right}
.c-price{width:66px;flex:none;text-align:right}
.c-amount{width:76px;flex:none;text-align:right}
.c-alloc{width:122px;flex:none}
.c-ops{width:102px;flex:none;text-align:right;display:flex;gap:6px;justify-content:flex-end}
.alloc-tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:99px;
  background:var(--bg);border:1px solid var(--line);color:var(--txt3);white-space:nowrap}
.alloc-tag.ok{background:#f0fbf3;border-color:#c3e9cd;color:#128a3c}
.alloc-tag.bad{background:#fff5f5;border-color:#ffd2d6;color:var(--red)}
.alloc-tag.warn{background:var(--bg);border-color:var(--line);color:var(--txt3)}

.alloc-head{padding:10px 12px;background:var(--bg);border-radius:9px;font-size:13px;margin-top:12px}
.alloc-rows{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.alloc-row{display:flex;gap:8px;align-items:flex-end;background:#fff;border:1px solid var(--line);
  border-radius:9px;padding:8px 10px;flex-wrap:wrap}
.ar-no{font-size:11px;color:var(--txt3);background:var(--bg);border-radius:5px;
  padding:2px 6px;height:22px;line-height:18px;flex:none}
.ar-f{display:flex;flex-direction:column;gap:3px;flex:1;min-width:118px}
.ar-f span{font-size:11px;color:var(--txt2)}
.ar-f.ar-n{flex:none;width:98px;min-width:98px}
.ar-amt{font-size:13px;font-weight:500;min-width:74px;text-align:right;padding-bottom:6px}
.alloc-check{margin-top:12px;padding:10px 12px;border-radius:9px;font-size:12.5px;line-height:1.7}
.alloc-check.ok{background:#f6fdf8;border:1px solid #c3e9cd;color:#0f6e56}
.alloc-check.bad{background:#fff5f5;border:1px solid #ffd2d6;color:#a32d2d}
@media (max-width:700px){
  .c-spec,.c-cat{display:none}
  .c-ops{width:92px}
  .it-head,.it-row{min-width:600px}
}
.cat-list{display:flex;gap:8px;flex-wrap:wrap}
.cat-list .p-badge{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;padding:5px 10px}
.cat-list .p-badge i{font-style:normal;cursor:pointer;color:var(--txt3);font-size:11px}
.cat-list .p-badge i:hover{color:var(--red)}

/* ---------------- 课程学习页 ---------------- */
.learn-hero h3{font-size:16.5px}
.learn-hero p{font-size:13.5px;color:var(--txt2);line-height:1.85;margin-top:10px}
.learn-hero b{color:var(--red)}
.learn-grid{margin-top:18px}
.learn-card .learn-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.learn-card .learn-ico{font-size:30px;line-height:1}
.learn-lock{font-size:11.5px;padding:4px 12px;border-radius:99px;background:#fff1f0;color:var(--red);font-weight:600;white-space:nowrap}
.learn-lock.free{background:#f0fff4;color:#1a9e55}
.learn-desc{font-size:13px;color:var(--txt2);line-height:1.75;margin:10px 0 16px;min-height:68px}
.learn-rights{margin-top:18px}
.learn-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:12px}
.learn-table th,.learn-table td{padding:9px 10px;text-align:left;border-bottom:1px solid var(--line)}
.learn-table th{color:var(--txt3);font-weight:500;font-size:12px}
.learn-table .rd{color:var(--red);font-weight:600}
.learn-tip{font-size:12px;color:var(--txt3);margin-top:14px}
@media (prefers-reduced-motion:reduce){.learn-card{transition:none}}

/* ---------------- 深度思考开关 ---------------- */
.think-btn{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;padding:6px 13px;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--txt2);white-space:nowrap;cursor:pointer;transition:background .25s,border-color .25s,color .25s;flex:none}
.think-btn i{font-style:normal;font-size:11px;opacity:.65}
.think-btn.on{background:#fff1f0;border-color:#ffd4d0;color:var(--red)}

/* ============ 卡片等比统一：所有网格卡片同高，不因内容多少而撑开 ============
   做法：① grid-auto-rows:1fr 让每一行的高度完全一致（以最高者为准）
        ② 描述文字固定 3 行（line-clamp + 固定高度），长短都不会影响卡片高度
        ③ 卡内用 flex 纵向布局，操作按钮 margin-top:auto 贴底对齐 */
.plaza-grid,.plan-grid,.learn-grid{grid-auto-rows:1fr}
.plaza-card,.plan,.learn-card{height:100%}
.p-desc{
  display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;
  -webkit-line-clamp:3;line-clamp:3;height:5.2em;margin:0}
.learn-desc{
  display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;
  -webkit-line-clamp:3;line-clamp:3;height:5.3em;margin:10px 0 16px}
.p-badges{min-height:26px;align-content:flex-start}
.plan .btn-block,.learn-card .btn-block,.plaza-card .btn-block{margin-top:auto}
.plaza-card .p-actions{margin-top:auto}
/* 会员套餐：权益列表最多 6 行，多的截断，保证卡片齐平 */
.plan ul{max-height:15.5em;overflow:hidden}
body.mobile .p-desc,body.mobile .learn-desc{height:auto;max-height:5.2em}
body.mobile .plan ul{max-height:none}

/* ============ 修复溢出 + 老浏览器（IE 内核 / 老安卓 WebView）兼容 ============ */
/* 1. 卡片操作区按钮可换行 —— 成品广场一张卡三个按钮，窄卡片会横向溢出，这是主因 */
.p-actions{display:-webkit-box;display:-webkit-flex;display:flex;
  -webkit-flex-wrap:wrap;flex-wrap:wrap;gap:0;margin-top:auto}
.p-actions>*{margin:0 9px 7px 0}
/* 2. 其余横向排布区：关掉 gap 改用 margin（老浏览器不认 flex gap，会导致元素粘连） */
.sops,.ln-nav,.gm-ops,.chip-wrap,.p-badges,.ln-stat,.tags,.learn-head,.p-head{
  -webkit-flex-wrap:wrap;flex-wrap:wrap;gap:0}
.sops>*,.ln-nav>*,.gm-ops>*,.chip-wrap>*,.ln-stat>*{margin:0 9px 7px 0}
.p-badges>*,.tags>*{margin:0 6px 6px 0}
/* 3. 卡片整体裁切：任何内容都不允许撑破卡片 */
.plaza-card,.plan,.learn-card,.gl-card,.scard,.asset-cell{overflow:hidden}
/* 4. 长串文本（网址 / 域名 / 英文）强制换行，防横向溢出 */
.p-desc,.learn-desc,.gl-p,.gl-en,.smeta,.ch-t,.ch-s,.pt-p,.eg-b,.st-p,.st-lead,.token-note{
  word-break:break-word;overflow-wrap:break-word}
/* 5. 纵向卡片容器（老 WebView 需 -webkit- 前缀） */
.plaza-card,.plan,.learn-card,.gl-card,.gm-card{
  display:-webkit-box;display:-webkit-flex;display:flex;
  -webkit-box-orient:vertical;-webkit-flex-direction:column;flex-direction:column}
/* 6. 不支持 grid 的老浏览器退化为单列堆叠：内容完整、不横向溢出 */
@supports not (display:grid){
  .plaza-grid,.plan-grid,.learn-grid2,.gl-grid,.stat-grid{display:block}
  .plaza-grid>*,.plan-grid>*,.learn-grid2>*,.gl-grid>*,.stat-grid>*{width:100%;margin-bottom:16px}
}
/* 7. 极老内核不支持 line-clamp：用最大高度兜底裁切，保证卡片等高 */
.p-desc,.learn-desc,.gl-p{max-height:6.6em}

/* ---------------- 下载客户端页（WorkDaddy） ---------------- */
.dl-hero{display:flex;gap:22px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px 26px;flex-wrap:wrap}
.dl-left{display:flex;gap:18px;align-items:center;flex:1;min-width:320px}
.dl-btns{display:flex;flex-direction:column;gap:10px;min-width:260px}
.dl-btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 18px}
.dl-btn b{font-size:15px}
.dl-btn span{font-size:11.5px;opacity:.85;font-weight:400}
.dl-mobtip{margin-top:14px;background:#fff8f8;border:1.5px dashed var(--red);border-radius:12px;padding:12px 16px;font-size:13.5px;color:var(--txt2)}
.dl-pkg{display:flex;align-items:center;gap:16px;margin-top:16px;background:linear-gradient(135deg,#fff,#fff6f6);
  border:1.5px solid #ffd9d9;border-radius:16px;padding:18px 20px}
.dl-pkg-ico{font-size:30px;flex-shrink:0;width:48px;height:48px;display:flex;align-items:center;justify-content:center;
  background:#fff;border-radius:12px;box-shadow:0 4px 14px rgba(230,0,18,.12)}
.dl-pkg-txt{flex:1;min-width:0}
.dl-pkg-txt b{display:block;font-size:15px;color:var(--ink);margin-bottom:4px}
.dl-pkg-txt p{font-size:13px;color:var(--txt2);line-height:1.7;margin:0}
.dl-pkg .dl-btn{flex-shrink:0;white-space:nowrap}
.dl-feats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.dl-feat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px 16px}
.dl-feat b{font-size:15px}
.dl-feat p{margin-top:8px;font-size:13px;color:var(--txt2);line-height:1.8;margin-bottom:0}
.dl-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.dl-step{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px 16px}
.dl-step i{font-style:normal;width:26px;height:26px;border-radius:50%;background:var(--grad);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;margin-bottom:8px}
.dl-step b{display:block;font-size:14.5px;margin-bottom:6px}
.dl-step p{font-size:12.5px;color:var(--txt2);line-height:1.8;margin:0}
.dl-faq{background:#fff;border:1px solid var(--line);border-radius:14px;padding:6px 20px}
.dl-faq details{border-bottom:1px solid #f1f2f4}
.dl-faq details:last-child{border-bottom:0}
.dl-faq summary{padding:14px 0;font-weight:600;font-size:14px;cursor:pointer}
.dl-faq summary::before{content:"▸ ";color:var(--red)}
.dl-faq details[open] summary::before{content:"▾ "}
.dl-faq details p{padding:0 0 14px;font-size:13.5px;color:var(--txt2);line-height:1.9;margin:0}
@media (max-width:900px){.dl-feats{grid-template-columns:1fr 1fr}.dl-steps{grid-template-columns:1fr}}

/* ---------------- 演示模式（直播/录屏专用） ----------------
   开启：?demo=1 或管理员导航「🎬 演示模式」；放大界面、隐藏余额/后台入口、显示演示指令条 */
body.demo-mode{zoom:1.18}
body.demo-mode .balance-chip,
body.demo-mode .chat-tip,
body.demo-mode .nav-links a[href="#/admin"]{display:none}
.demo-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0;padding:10px 12px;
  background:#fff8f8;border:1.5px dashed var(--red);border-radius:12px}
.demo-bar b{font-size:13.5px;color:var(--red);white-space:nowrap}
.demo-bar button{padding:7px 14px;border:1.5px solid var(--red);background:#fff;color:var(--red);
  border-radius:999px;font-size:13px;font-weight:600;cursor:pointer;transition:.15s;white-space:nowrap}
.demo-bar button:hover{background:var(--red);color:#fff;transform:translateY(-1px)}
body.demo-mode .topnav{background:rgba(255,255,255,.96)}

/* ---- 嵌入模式（WorkDaddy 客户端内页 ?embed=1）：站点导航由客户端侧栏替代，隐藏网页自身导航 ---- */
body.embed-mode .topnav,
body.embed-mode .tabbar{display:none}
body.embed-mode #view{padding-top:0}

/* 智能体卡片收藏星标（广场个性化置顶） */
.plaza-card{position:relative}
.p-fav{position:absolute;top:12px;right:12px;width:30px;height:30px;border:none;border-radius:8px;
  background:transparent;font-size:19px;line-height:1;cursor:pointer;color:var(--txt3);opacity:.55;
  transition:color .15s,opacity .15s,transform .15s}
.p-fav:hover{color:#f5a623;opacity:1;transform:scale(1.15)}
.p-fav.on{color:#f5a623;opacity:1}
