/* 瀚林数科 HANLIN DIGITAL · 品牌视觉
   取自官方 logo：中文宝蓝 #2E7BFD → 图形青蓝 #189CC0 → 青绿 #16B6AA
   浅青波浪 #6CD8C0 · 英文灰蓝 #7D8EA0 · 白底 */
:root{
  --bg:#f4f8ff; --panel:#fff; --line:#e2ebf8; --ink:#1a2a44; --ink2:#5b6d87;
  --ink3:#8b9cb4;
  --brand:#2e7bfd; --brand-d:#1b5fd6; --brand2:#eaf3ff;
  --cyan:#189cc0; --teal:#16b6aa; --mint:#6cd8c0; --slate:#7d8ea0;
  --grad:linear-gradient(135deg,#2e7bfd 0%,#189cc0 48%,#16b6aa 100%);
  --grad-soft:linear-gradient(135deg,#eaf3ff 0%,#e6f9f5 100%);
  --warn:#b87524;
  --warnbg:#fdf4e6; --danger:#c0453b; --dangerbg:#fbeceb; --blue:#2e7bfd;
  --bluebg:#eaf3ff; --shadow:0 1px 3px rgba(30,80,160,.07);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font:13px/1.6 -apple-system,"Segoe UI","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink)}
.app{height:100vh;display:flex;flex-direction:column}
.top{height:60px;flex:none;display:flex;align-items:center;gap:10px;padding:0 18px;background:#fff;border-bottom:1px solid var(--line);position:relative}
.top:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--grad);opacity:.9}
.brand{display:flex;align-items:center;gap:10px;margin-right:6px}
.mark{width:36px;height:36px;object-fit:contain;border-radius:9px;background:var(--grad-soft);border:1px solid #dceafb;padding:2px;flex:none}
.brand b{display:block;font-size:15px;letter-spacing:.5px;color:var(--brand);font-weight:700}
.brand small{display:block;font-size:9.5px;color:var(--slate);margin-top:-1px;letter-spacing:.9px;font-family:Arial,"Segoe UI",sans-serif}
.badge{font-size:11px;padding:3px 9px;border-radius:20px;border:1px solid var(--line);white-space:nowrap}
.badge.biz{background:var(--bluebg);color:var(--brand);border-color:#d5e6ff}
.badge.ch{background:var(--warnbg);color:var(--warn);border-color:#f0dfc2}
.sp{flex:1}
.who{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink2)}
.who label{color:var(--ink3)}
.who select{border:1px solid var(--line);border-radius:6px;padding:5px 8px;background:#fff;color:var(--ink);font-size:12px}
.role{font-size:11px;color:var(--brand);background:var(--brand2);padding:3px 8px;border-radius:5px}
.body{flex:1;display:flex;min-height:0}
.side{width:198px;flex:none;background:#fff;border-right:1px solid var(--line);overflow:auto;padding:12px 0;display:flex;flex-direction:column}
.grp{font-size:10px;color:var(--ink3);padding:12px 18px 5px;letter-spacing:1px}
.nav{display:flex;align-items:center;gap:9px;padding:8px 18px;cursor:pointer;color:var(--ink2);font-size:12.5px;border-left:3px solid transparent}
.nav i{font-style:normal;width:15px;text-align:center;color:var(--ink3);font-size:13px}
.nav:hover{background:#f2f7ff;color:var(--ink)}
.nav.on{background:var(--brand2);color:var(--brand);font-weight:600;border-left-color:var(--brand)}
.foot{font-size:10.5px;color:var(--ink3);line-height:1.9;padding:16px 18px 6px;border-top:1px solid var(--line);margin-top:auto}
.foot b{color:var(--slate)}
.main{flex:1;overflow:auto;padding:20px 24px 40px}
.page h1{font-size:19px;margin:0 0 4px;font-weight:600}
.page .sub{color:var(--ink2);font-size:12px;margin-bottom:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;box-shadow:var(--shadow);margin-bottom:14px}
.card h2{font-size:13.5px;margin:0 0 10px;font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.card h2:before{content:"";width:3px;height:13px;border-radius:2px;background:var(--grad);flex:none}
.card h2 .tag{font-size:10.5px;font-weight:400;color:var(--ink3);background:#f2f7ff;border:1px solid var(--line);padding:2px 8px;border-radius:20px}
.row{display:flex;gap:14px;flex-wrap:wrap}
.row>.card{flex:1;min-width:320px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:14px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:10px;padding:15px 17px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--grad)}
.kpi b{display:block;font-size:24px;line-height:1.2;color:var(--brand);font-weight:650}
.kpi span{font-size:11.5px;color:var(--ink2)}
.kpi small{display:block;color:var(--ink3);font-size:10.5px;margin-top:5px}
table{width:100%;border-collapse:collapse;font-size:12px}
th{text-align:left;color:var(--ink3);font-weight:500;font-size:11px;padding:8px 9px;border-bottom:1px solid var(--line);background:#f7faff;white-space:nowrap}
td{padding:8px 9px;border-bottom:1px solid #eef3fb;vertical-align:middle}
tr:last-child td{border-bottom:none}
tbody tr:hover{background:#f7faff}
.num{text-align:right;font-variant-numeric:tabular-nums}
.tag{display:inline-block;font-size:10.5px;padding:2px 7px;border-radius:5px;background:var(--brand2);color:var(--brand);white-space:nowrap}
.tag.g{background:#eaf8f5;color:var(--teal)}
.tag.w{background:var(--warnbg);color:var(--warn)}
.tag.d{background:var(--dangerbg);color:var(--danger)}
.tag.b{background:var(--bluebg);color:var(--blue)}
.tag.ok{background:#eaf8f5;color:var(--teal)}
.tag.bad{background:var(--dangerbg);color:var(--danger)}
.dim{color:var(--ink3)}
.authrow.dim{background:#fafbfc;color:var(--ink3)}
.authrow.dim .aw{font-weight:500;color:var(--ink3)}
/* 「选择抖音号」官方风格下拉框 */
.dyselect{display:flex;align-items:center;gap:8px;min-height:38px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;margin-bottom:6px}
.dyselect:hover{border-color:var(--brand)}
.dychips{display:flex;flex-wrap:wrap;gap:6px;flex:1}
.dychip{display:inline-flex;align-items:center;gap:6px;font-size:12px;background:var(--brand2);color:var(--brand);border-radius:6px;padding:3px 8px;font-weight:600}
.dychip code{font-weight:400;color:var(--ink3)}
.dychips .ph{color:var(--ink3);font-size:12px}
.dycaret{color:var(--ink3);font-size:12px}
.dypicker{display:none;margin-bottom:6px;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:0 8px 24px rgba(20,50,100,.12);padding:8px;max-width:560px}
.dypicker.on{display:block}
.dysearch{width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid var(--line);border-radius:6px;font-size:12px;margin-bottom:6px}
.dylist{max-height:220px;overflow:auto}
.dyrow{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:6px;font-size:12px;cursor:pointer}
.dyrow:hover{background:var(--brand2)}
.dyrow .dyname{font-weight:600;color:var(--ink2)}
.dyrow .act{margin-left:auto;display:flex;gap:6px}
.dyrow.un{cursor:default;border-radius:0}
.dyrow.un:hover{background:#fbfcfd}
.dygroup + .dygroup{border-top:1px solid var(--line);margin-top:6px;padding-top:6px}
.dygrp{font-size:11px;font-weight:700;color:var(--ink3);letter-spacing:.04em;padding:2px 8px 4px;display:flex;align-items:center;gap:6px}
.dygrp b{color:var(--brand);font-size:11px}
.dyfoot{border-top:1px solid var(--line);margin-top:6px;padding-top:6px}
.dot{display:inline-block;font-size:9.5px;line-height:1;padding:2px 6px;border-radius:20px;font-weight:600;white-space:nowrap}
.dot.ok{background:#eaf8f5;color:var(--teal);border:1px solid #bfeee6}
.dot.pending{background:var(--warnbg);color:var(--warn);border:1px solid #f0d9b0}
.dot.badd{background:var(--dangerbg);color:var(--danger);border:1px solid #f1c4c4}
.btn{border:1px solid var(--line);background:#fff;color:var(--ink2);border-radius:6px;padding:6px 12px;font-size:12px;cursor:pointer;font-family:inherit}
.btn:hover{border-color:var(--brand);color:var(--brand)}
.btn.pri{background:var(--grad);border-color:transparent;color:#fff;box-shadow:0 2px 6px rgba(46,123,253,.22)}
.btn.pri:hover{opacity:.92;color:#fff;box-shadow:0 3px 10px rgba(46,123,253,.32)}
.btn.sm{padding:4px 9px;font-size:11px}

/* ---- 登录页 ---- */
.login{position:fixed;inset:0;background:linear-gradient(160deg,#e8f2ff 0%,#f4faff 52%,#e9faf6 100%);display:flex;align-items:center;justify-content:center;z-index:50}
.login:before{content:"";position:absolute;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(46,123,253,.10),transparent 68%);top:-160px;left:-120px}
.login:after{content:"";position:absolute;width:460px;height:460px;border-radius:50%;background:radial-gradient(circle,rgba(22,182,170,.11),transparent 68%);bottom:-150px;right:-100px}
.lbox{width:376px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 40px rgba(30,80,160,.14);padding:24px 30px 26px;position:relative;overflow:hidden;z-index:1}
.lbox:before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--grad)}
.login-logo{display:block;width:172px;height:auto;margin:10px auto 6px}
.login-sep{height:1px;background:linear-gradient(90deg,transparent,var(--line) 20%,var(--line) 80%,transparent);margin:14px 0 14px}
.lbox h2{font-size:15px;margin:0 0 16px;font-weight:600;text-align:center;color:var(--ink)}
.lbox .field{display:flex;flex-direction:column;align-items:stretch;gap:5px;margin-bottom:12px}
.lbox .field label{width:auto;flex:none;text-align:left;font-size:11.5px;color:var(--ink2)}
.lbox input{border:1px solid var(--line);border-radius:7px;padding:9px 11px;font-size:13px;font-family:inherit;outline:none}
.lbox input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(46,123,253,.10)}
.btn.full{width:100%;padding:10px;font-size:13.5px;margin-top:4px}
.lg-err{color:var(--danger);font-size:12px;min-height:18px;margin-top:8px;text-align:center}
.login-foot{text-align:center;font-size:10px;color:var(--slate);letter-spacing:1.2px;margin-top:16px;font-family:Arial,"Segoe UI",sans-serif}
#userChip{font-size:13px;color:var(--ink)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.bar .sp{flex:1}
input,select,textarea{border:1px solid var(--line);border-radius:6px;padding:6px 9px;font-size:12px;font-family:inherit;background:#fff;color:var(--ink);outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--brand)}
input[type=text]{min-width:150px}
.field{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.field label{width:118px;flex:none;color:var(--ink2);font-size:12px;text-align:right}
.field input,.field select,.field textarea{flex:1}
.hint{font-size:11px;color:var(--ink3);line-height:1.8;margin:8px 0 0}
.note{background:#f5f9ff;border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:6px;padding:10px 12px;font-size:11.5px;color:var(--ink2);line-height:1.8;margin-top:12px}
.note.warn{border-left-color:var(--warn);background:var(--warnbg)}
code{font-family:Consolas,monospace;font-size:10.5px;background:#eef4ff;padding:1px 5px;border-radius:3px}
.logline{font-size:11.5px;padding:6px 10px;border-left:2px solid var(--line);margin-bottom:5px;background:#f7faff;color:var(--ink2)}
.logline.g{border-left-color:var(--brand)}
.logline.d{border-left-color:var(--danger);color:var(--danger);background:var(--dangerbg)}
.logline.w{border-left-color:var(--warn);background:var(--warnbg)}
.empty{color:var(--ink3);text-align:center;padding:24px;font-size:12px}
.chk{width:14px;height:14px;accent-color:var(--brand);cursor:pointer}
.pill{display:inline-flex;gap:6px;align-items:center;font-size:11px;background:#f2f7ff;border:1px solid var(--line);border-radius:20px;padding:3px 10px;margin:0 6px 6px 0}
.authlist{margin-top:6px}
.authrow{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;background:#fff;font-size:12px}
.authrow .aw{display:inline-flex;align-items:center;gap:6px;min-width:160px;font-weight:600;color:var(--ink2)}
.authrow .act{margin-left:auto;display:inline-flex;gap:6px}
.btn.xs{padding:2px 8px;font-size:10.5px;border-radius:5px}
.modal{position:fixed;inset:0;background:rgba(18,38,70,.38);display:none;place-items:center;z-index:50}
.modal.on{display:grid}
.mbox{width:480px;max-height:82vh;overflow:auto;background:#fff;border-radius:10px;box-shadow:0 12px 40px rgba(20,50,100,.22)}
.mhead{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line)}
.mhead b{font-size:14px}
.mhead span{cursor:pointer;font-size:20px;color:var(--ink3);line-height:1}
.mbody{padding:16px 18px}
.mfoot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line)}
.toast{position:fixed;right:22px;bottom:22px;background:var(--ink);color:#fff;padding:10px 16px;border-radius:8px;font-size:12px;opacity:0;transform:translateY(8px);transition:.2s;pointer-events:none;z-index:60;max-width:420px}
.toast.on{opacity:1;transform:none}
.toast.err{background:var(--danger)}
.chain{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.chain>div{flex:1;min-width:150px;background:#f5f9ff;border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.chain b{display:block;font-size:11.5px;color:var(--brand);margin-bottom:4px}
.chain span{font-size:10.5px;color:var(--ink2);line-height:1.7}

/* 订单流程步骤条 */
.flow{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.flow em{font-style:normal;font-size:10.5px;color:var(--ink3);background:#f2f7ff;border:1px solid var(--line);border-radius:20px;padding:2px 8px}
.flow em.on{background:var(--grad);border-color:transparent;color:#fff}
.flow em.done{background:var(--brand2);border-color:#cfe2ff;color:var(--brand)}
.flow i{width:10px;height:1px;background:var(--line);font-style:normal}

/* 漏斗 */
.funnel{display:flex;gap:8px;flex-wrap:wrap}
.funnel>div{flex:1;min-width:96px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:#f7faff;text-align:center}
.funnel b{display:block;font-size:20px;color:var(--brand);font-weight:650;line-height:1.3}
.funnel span{font-size:10.5px;color:var(--ink2)}

/* 剪辑工作台 */
.wb{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.wb-col{background:#f7faff;border:1px solid var(--line);border-radius:9px;padding:11px}
.wb-col h3{margin:0 0 8px;font-size:12px;color:var(--ink2);font-weight:600;display:flex;justify-content:space-between}
.wb-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 11px;margin-bottom:8px}
.wb-card b{font-size:12px;display:block}
.wb-card small{display:block;font-size:10.5px;color:var(--ink3);line-height:1.7;margin:3px 0 7px}

/* 通用小件 */
.kv{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:11px;color:var(--ink2);margin:6px 0 0}
.kv b{color:var(--ink);font-weight:500}
.sec{font-size:11px;color:var(--ink3);margin:0 0 8px;letter-spacing:.5px}
.split{height:1px;background:var(--line);margin:12px 0}

/* 扫码添加账号弹窗 */
.scan{display:flex;flex-direction:column;gap:14px}
.scan-phone{border:1px solid var(--line);border-radius:12px;padding:16px;background:linear-gradient(160deg,#f7fbff,#eef6ff);text-align:center}
.scan-top{font-size:12px;color:var(--ink2);font-weight:600;margin-bottom:10px}
.scan-qr{display:flex;justify-content:center}
.scan-qr img{width:170px;height:170px;border:6px solid #fff;border-radius:8px;box-shadow:0 4px 14px rgba(20,50,100,.12)}
.scan-tip{font-size:12px;color:var(--brand);margin-top:10px;min-height:16px}
.scan-steps{text-align:left;margin:10px auto 0;padding-left:20px;color:var(--ink2);font-size:12px;line-height:1.9}
.scan-side{display:flex;flex-direction:column;gap:10px}
.scan-side .btn{width:100%}
a.link{color:var(--brand);cursor:pointer;text-decoration:underline;font-size:12px}
a.link:hover{color:#1a5fe0}

/* 合作台账（瀚林启策并进） */
.req{color:var(--danger);font-weight:700}
.cp-pv{display:flex;gap:16px;border:1px solid var(--line);border-radius:9px;background:#fbfcfe;padding:14px;margin-top:10px}
.cp-pv-qr{flex:none;width:132px;display:flex;align-items:flex-start;justify-content:center}
.cp-pv-qr img{width:116px;height:116px;border:5px solid #fff;border-radius:7px;box-shadow:0 3px 10px rgba(20,50,100,.12)}
.cp-pv-main{flex:1;min-width:0}
.cp-grid{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:9px 12px}
.cp-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.cp-f.wide{grid-column:1/-1}
.cp-f label{font-size:11px;color:var(--ink2);font-weight:600}
.cp-f input,.cp-f select,.cp-f textarea{width:100%;box-sizing:border-box;font-size:12px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;font-family:inherit}
.cp-f input[readonly]{background:#f4f6f9;color:var(--ink2)}
.cp-f textarea{resize:vertical}
.cp-tabs{display:flex;gap:6px}
.cp-thumb{width:38px;height:38px;object-fit:cover;border-radius:5px;border:1px solid var(--line)}
.cp-st{border:1px solid var(--line);border-radius:5px;padding:2px 4px;background:#fff;color:var(--ink2);font-family:inherit}
.cp-st.on{background:#eaf8f5;color:var(--teal);border-color:#bfeee6}
.cp-st.paused{background:var(--warnbg);color:var(--warn);border-color:#f0d9b0}
@media(max-width:1100px){.cp-grid{grid-template-columns:repeat(2,minmax(140px,1fr))}}
@media(max-width:720px){.cp-pv{flex-direction:column}.cp-grid{grid-template-columns:1fr}}

/* 运营看板 · 出单数据 */
.stswitch{display:inline-flex;gap:4px;margin-left:10px;vertical-align:middle}
.stswitch .btn{padding:2px 9px;font-size:10px}
.strend{display:flex;align-items:flex-end;gap:4px;height:174px;overflow-x:auto;padding:6px 2px 0;border-bottom:1px solid var(--line)}
.stcol{flex:1 0 42px;min-width:42px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.stplot{height:132px;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
.stbar{width:58%;min-height:2px;background:var(--brand);border-radius:3px 3px 0 0;transition:height .18s}
.stbar.zero{background:var(--line)}
.stcol:hover .stbar{opacity:.75}
.stval{font-size:9.5px;color:var(--ink3);margin-bottom:3px;white-space:nowrap;line-height:1}
.stlab{font-size:9.5px;color:var(--ink3);margin-top:6px;white-space:nowrap;line-height:1}
@media(max-width:720px){.strend{height:150px}.stplot{height:110px}}
a.btn{display:inline-block;text-decoration:none;line-height:1.5;box-sizing:border-box}

/* ===== 全程留痕：屏幕身份水印 + 审计中心 ===== */
#qcWatermark{position:fixed;inset:0;z-index:2147483647;pointer-events:none!important;
  background-repeat:repeat;background-position:0 0;opacity:1;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}
@media print{#qcWatermark{position:fixed!important;display:block!important;opacity:1!important;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}}
.badge.audit{background:#eaf8f5;color:#0f8a5f;border-color:#bfeee6}
.audit-notice{margin-top:12px;padding:8px 10px;border:1px solid #f0d9b0;background:var(--warnbg);
  color:var(--warn);border-radius:6px;font-size:11px;line-height:1.6;text-align:left}
.aud-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.aud-bar .hint{margin:0}
.aud-chain{font-size:11.5px;padding:5px 10px;border-radius:6px;font-weight:600}
.aud-chain.ok{background:#eaf8f5;color:#0f8a5f;border:1px solid #bfeee6}
.aud-chain.bad{background:var(--dangerbg);color:var(--danger);border:1px solid #f3c9c5}
.aud-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}
.aud-stat{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;box-shadow:var(--shadow)}
.aud-stat b{display:block;font-size:20px;color:var(--brand);line-height:1.3}
.aud-stat span{font-size:11px;color:var(--ink3)}
.aud-stat.warn b{color:var(--warn)}
.aud-stat.danger b{color:var(--danger)}
.aud-filter{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.aud-filter .field{flex:0 1 155px;margin:0;flex-direction:column;align-items:stretch;gap:4px}
.aud-filter .field.grow{flex:1 1 220px}
.aud-filter .field label{width:auto;text-align:left;font-size:11px}
.aud-filter .field input,.aud-filter .field select{width:100%}
.aud-filter .btn{align-self:flex-end}
.aud-list{overflow-x:auto;border:1px solid var(--line);border-radius:8px}
.aud-tbl{width:100%;border-collapse:collapse;font-size:11.5px;background:#fff}
.aud-tbl th{background:#f5f9ff;color:var(--ink2);font-weight:600;text-align:left;
  padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.aud-tbl td{padding:7px 10px;border-bottom:1px solid #f0f4fb;color:var(--ink2);vertical-align:top}
.aud-tbl .aud-row{cursor:pointer}
.aud-tbl .aud-row:hover td{background:#f4f9ff}
.mono{font-family:Consolas,"SF Mono",Menlo,monospace;font-size:11px}
.aud-tbl .nowrap{white-space:nowrap}
.aud-tbl .small{font-size:10.5px}
.aud-tbl small{color:var(--ink3);font-size:10px}
.aud-detail td{background:#f8fbff;padding:10px 14px;line-height:1.9;word-break:break-all}
.aud-detail code{font-family:Consolas,Menlo,monospace;font-size:10.5px;color:var(--ink2)}
.aud-pager{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:11.5px;color:var(--ink2)}
.aud-pager select{border:1px solid var(--line);border-radius:6px;padding:4px 7px;
  background:#fff;font-family:inherit;font-size:11px}
.aud-note p{margin:6px 0;font-size:11.5px;color:var(--ink2);line-height:1.8}
.aud-note .warnline{padding:8px 10px;background:var(--warnbg);
  border-left:3px solid var(--warn);border-radius:4px;color:var(--warn)}
@media(max-width:900px){.aud-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .aud-filter .field{flex:1 1 45%}}

/* 初始密码警示 */
.badge.pwweak{background:var(--dangerbg);color:var(--danger);border-color:#f3c9c5;cursor:pointer;font-weight:600}
.badge.pwweak:hover{background:#f7d9d6}
/* 巨量开放平台申请指引 */
.oe-guide{background:var(--panel);border:1px solid var(--line);border-radius:10px;margin-bottom:12px;box-shadow:var(--shadow)}
.oe-guide>summary{cursor:pointer;list-style:none;padding:12px 16px;font-size:13px;color:var(--ink);font-weight:600}
.oe-guide>summary::-webkit-details-marker{display:none}
.oe-guide>summary::before{content:'▸';display:inline-block;margin-right:8px;color:var(--brand)}
.oe-guide[open]>summary::before{content:'▾'}
.oe-guide>summary .tag{margin-left:8px;font-weight:400}
.oe-guide-b{padding:0 16px 14px;border-top:1px solid var(--line);font-size:11.5px;color:var(--ink2);line-height:1.85}
.oe-guide-b p{margin:10px 0}
.oe-guide-b b{color:var(--ink)}
.oe-guide-b a{color:var(--brand)}
.oe-guide-b code{font-family:Consolas,Menlo,monospace;background:var(--brand2);padding:2px 5px;border-radius:4px;font-size:11px}
.oe-guide-t{display:grid;gap:6px;margin:10px 0;background:#f7faff;border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.oe-guide-t>div{display:grid;grid-template-columns:100px 1fr;gap:10px;align-items:start}
.oe-guide-t>div>b{color:var(--brand);font-weight:600}
.oe-guide-t .btn{padding:2px 8px;font-size:10.5px}
.oe-guide-w{background:var(--warnbg);border-left:3px solid var(--warn);border-radius:4px;padding:8px 10px;color:var(--warn)}
/* 会话回放时间线 */
.aud-trace{color:var(--brand);text-decoration:underline dotted;cursor:pointer}
.aud-trace:hover{color:var(--brand-d)}
.aud-tl-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px;margin-bottom:8px}
.aud-tl-sum>div{background:#f7faff;border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-width:0}
.aud-tl-sum b{display:block;font-size:13px;color:var(--brand);line-height:1.5;word-break:break-all}
.aud-tl-sum span{font-size:10.5px;color:var(--ink3)}
.aud-tl-sum .warn b{color:var(--warn)}
.aud-tl-sum .danger b{color:var(--danger)}
.aud-tl{max-height:52vh;overflow-y:auto;border:1px solid var(--line);border-radius:8px;background:#fff}
.aud-tl-row{display:grid;grid-template-columns:88px 1fr;gap:10px;padding:8px 12px;border-bottom:1px solid #f0f4fb;font-size:11.5px;color:var(--ink2)}
.aud-tl-row:last-child{border-bottom:0}
.aud-tl-row.risk{background:#fff7f2}
.aud-tl-t{color:var(--ink3);white-space:nowrap;padding-top:2px}
.aud-tl-n{display:block;font-size:9.5px;color:var(--ink3);margin-top:2px}
.aud-tl-c b{color:var(--ink)}
.aud-tl-c .small{font-size:10.5px;color:var(--ink3);margin-top:3px;word-break:break-all}
.aud-tl-d{background:#f5f9ff;border-radius:4px;padding:4px 7px;margin-top:4px;white-space:pre-wrap;word-break:break-all}
@media(max-width:900px){.oe-guide-t>div{grid-template-columns:1fr}}
