
/* ============================================================
   M2G 用户运营后台 · 黑白未来感主题（m2g-theme.css）
   版本: V42 | 生成自设计稿 m2g-design-preview-v42
   用法: 在每个 views/*.html 的 </head> 前加一行
         <link rel="stylesheet" href="/css/m2g-theme.css">
   回滚: 删掉上面那一行即可，本文件不覆盖任何原有样式
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;700;900&display=swap');
/* ===== 主题 TOKENS ===== */
:root{--ok:#4C9E6E;--warn:#C9973B;--err:#C05248;--info:#5A7CA5}
:root[data-theme="light"]{
  --bg:#ECEDEF;--panel:#FFFFFF;--panel-2:#F6F7F8;
  --ink:#0B0B0C;--mut:#84868B;
  --line:#D8DADD;--hair:#E7E8EA;
  --cut:#1F2127;--cut-ink:#F2F2F0;--cut-mut:#9EA1A8;
  --dcard:#2B2E35;--dcard-h:#35383F;--badge:#3F434B;
  --grid:rgba(11,11,12,.055);--hover:#F6F7F8;
  --shadow:0 30px 60px rgba(11,11,12,.08);
  --float-bg:rgba(255,255,255,.55);--float-bd:rgba(255,255,255,.8);
}
:root[data-theme="dark"]{
  --bg:#141518;--panel:#232529;--panel-2:#2B2E33;
  --ink:#F0F0ED;--mut:#A3A7AE;
  --line:#3A3E45;--hair:#2A2D33;
  --cut:#0E0F12;--cut-ink:#F5F5F2;--cut-mut:#A3A7AE;
  --dcard:#1E2025;--dcard-h:#282B31;--badge:#34383F;
  --grid:rgba(240,240,237,.05);--hover:#2B2E33;
  --shadow:0 30px 60px rgba(0,0,0,.45);
  --float-bg:rgba(43,46,51,.75);--float-bd:rgba(255,255,255,.16);
}
/* ===== 基础 ===== */
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Space Grotesk','Noto Sans SC',-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.6;transition:background .35s,color .35s}
.wrap{max-width:1320px;margin:0 auto;padding:0 28px}
.micro{font-size:11px;letter-spacing:.38em;text-transform:uppercase;color:var(--mut);font-weight:500}
.huge{font-size:clamp(42px,6.5vw,80px);line-height:1.04;letter-spacing:.01em;font-weight:500;text-transform:uppercase}
.grid-bg{background-image:linear-gradient(to right,var(--grid) 1px,transparent 1px),linear-gradient(to bottom,var(--grid) 1px,transparent 1px);background-size:72px 72px}
/* 页面切换 */
@keyframes pgIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
.page-head{padding:60px 0 40px}
.page-head .huge{margin:16px 0 12px}
.page-head p{color:var(--mut);max-width:560px}
/* ===== 通用组件 ===== */
.btn{display:inline-flex;align-items:center;gap:10px;border-radius:10px;padding:12px 22px;font-size:13px;font-weight:600;cursor:pointer;transition:.2s;text-decoration:none;border:1px solid transparent;font-family:inherit}
.btn .ar{transition:transform .2s}
.btn:hover .ar{transform:translateX(4px)}
.btn-solid{background:var(--ink);color:var(--bg)}
.btn-solid:hover{opacity:.85}
.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink)}
.btn-ghost:hover{border-color:var(--ink)}
.btn-ghost-panel{background:transparent;border-color:#3A3B3E;color:#F2F2F0}
.btn-ghost-panel:hover{border-color:#fff}
.btn-light{background:#fff;color:#0B0B0C}
.btn-light:hover{opacity:.88}
.sel-dark,.txta-dark{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);color:#F2F2F0}
.sel-dark option{color:#0B0B0C;background:#fff}
.sel-dark:focus,.txta-dark:focus{border-color:#fff}
.txta-dark::placeholder{color:#8F9196}
input[type="checkbox"]{accent-color:var(--ink);width:14px;height:14px;cursor:pointer}
.btn-sm{padding:8px 16px;font-size:12px;border-radius:8px}
/* 卡片 */
.card{background:var(--panel);border:1px solid var(--line);border-radius:20px 20px 20px 4px;transition:.35s;overflow:hidden}
.card-pad{padding:28px}
.card-title{font-size:15px;font-weight:700;margin-bottom:4px}
.card-sub{font-size:12px;color:var(--mut)}
/* 切角黑面板 */
.panel-cut{background:var(--cut);color:var(--cut-ink);border-radius:32px;clip-path:polygon(0 0,calc(100% - 72px) 0,100% 72px,100% 100%,0 100%);padding:56px;transition:background .35s}
:root[data-theme="dark"] .panel-cut{border:1px solid rgba(255,255,255,.14);box-shadow:0 24px 50px rgba(0,0,0,.5)}
/* 夜间模式：白卡悬浮感 + 层次强化（黑曜石方案） */
:root[data-theme="dark"] .card{border-color:#42464E;box-shadow:0 12px 30px rgba(0,0,0,.32)}
:root[data-theme="dark"] .send-sec-light{background:#2B2E33;border-color:#3A3E45}
:root[data-theme="dark"] .perm-chip{background:#1A1C20;border-color:#3A3E45}
:root[data-theme="dark"] .perm-chip.on{background:#F0F0ED;color:#141518;border-color:#F0F0ED}
:root[data-theme="dark"] .fb-card{background:#232529;border-color:#2A2D33}
:root[data-theme="dark"] .fb-body{background:#2B2E33}
:root[data-theme="dark"] .rep-card{background:#2B2E33;border-color:#3A3E45}
:root[data-theme="dark"] .tok-card{background:#232529;border-color:#3A3E45}
:root[data-theme="dark"] .ch-row{background:#2B2E33;border-color:#2A2D33}
:root[data-theme="dark"] .db-card{background:#232529;border-color:#3A3E45}
:root[data-theme="dark"] .vpost{background:#232529;border-color:#2A2D33}
:root[data-theme="dark"] .tcard{background:#232529;border-color:#2A2D33}
.panel-cut h2{font-size:clamp(22px,2.8vw,32px);font-weight:500;text-transform:uppercase;letter-spacing:.02em;line-height:1.25}
.panel-cut .desc{color:var(--cut-mut);max-width:400px;font-size:13px;padding-right:68px}
.dcards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.dcards.c3{grid-template-columns:repeat(3,1fr)}
.dcard{display:grid;grid-template-columns:auto 1fr;column-gap:14px;align-items:center;background:var(--dcard);border-radius:16px;padding:16px 18px;transition:.25s;color:#F2F2F0}
.dcard:hover{background:var(--dcard-h);transform:translateY(-3px)}
.dcard .badge{grid-row:1/4;margin:0;width:38px;height:38px;border-radius:50%;background:var(--badge);display:flex;align-items:center;justify-content:center;color:#fff}
.dcard .badge svg{width:17px;height:17px}
.dcard .big{grid-column:2;font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.15}
.dcard h4{grid-column:2;font-size:13px;font-weight:600;margin:0}
.dcard p{grid-column:2;font-size:11px;color:var(--cut-mut);margin:0}
/* 表格 */
table{width:100%;border-collapse:collapse;font-size:13px}
th{font-size:10px;letter-spacing:.25em;text-transform:uppercase;color:var(--mut);font-weight:600;text-align:left;padding:16px 20px;border-bottom:1px solid var(--line)}
td{padding:16px 20px;border-bottom:1px solid var(--hair);color:var(--mut);vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr{transition:.15s}
tbody tr:hover td{background:var(--hover)}
td.strong,.strong{color:var(--ink);font-weight:700}
td.mono{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px}
.tag{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--ink)}
.tag::before{content:'';width:7px;height:7px;border-radius:50%}
.tag.ok::before{background:var(--ok)}.tag.warn::before{background:var(--warn)}
.tag.err::before{background:var(--err)}.tag.idle::before{background:var(--mut)}.tag.info::before{background:var(--info)}
.oplink{font-size:12px;font-weight:600;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:1px;margin-right:14px;transition:.2s}
.oplink:hover{opacity:.55}
/* 角色徽章 */
.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600;white-space:nowrap}
.badge-admin{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af}
.badge-user{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);color:#374151}
.badge-success{background:rgba(76,158,110,.12);color:#276749}
.badge-danger{background:rgba(224,82,82,.12);color:#c53030}
.badge-warning{background:rgba(232,163,61,.12);color:#92400e}
.badge-info{background:rgba(74,158,218,.12);color:#2c5282}
.badge-muted{background:var(--panel-2);color:var(--mut)}
.pager{display:flex;justify-content:flex-end;gap:10px;padding:18px 20px}
.pgc{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.2s;color:var(--ink)}
.pgc:hover{background:var(--ink);color:var(--bg);border-color:var(--ink)}
/* 表单 */
.sel,.sea{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:13px;color:var(--ink);outline:none;font-family:inherit;transition:.35s}
.sel:focus,.sea:focus{border-color:var(--ink)}
.sea::placeholder,.txta::placeholder{color:var(--mut)}
.txta{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;font-size:13px;color:var(--ink);outline:none;font-family:inherit;width:100%;min-height:140px;resize:vertical;transition:.35s}
.txta:focus{border-color:var(--ink)}
.flabel{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mut);font-weight:600;display:block;margin-bottom:8px}
.fgroup{margin-bottom:20px}
/* ===== 其他组件 ===== */
/* ===== 浮动侧边栏（图标停靠栏 + 悬停展开） ===== */
.sidebar{position:fixed;left:0;top:0;bottom:0;width:64px;background:#1F2127;color:#F2F2F0;z-index:120;transition:width .32s cubic-bezier(.4,0,.2,1),box-shadow .32s;display:flex;flex-direction:column;overflow:hidden;box-shadow:4px 0 20px rgba(0,0,0,.10)}
:root[data-theme="dark"] .sidebar{background:#2C2F36;box-shadow:4px 0 20px rgba(0,0,0,.4)}
.sidebar:hover,.sidebar.peek{width:252px;box-shadow:16px 0 50px rgba(0,0,0,.24)}
.side-head{display:flex;gap:12px;align-items:center;height:64px;min-height:64px;border-bottom:1px solid rgba(255,255,255,.08)}
.side-head .logo-mark{margin-left:17px;background:#fff;color:#0A0A0B;flex-shrink:0}
.side-head .ht{white-space:nowrap}
.side-head .t1{font-weight:700;font-size:15px;letter-spacing:.04em}
.side-head .t2{font-size:9px;letter-spacing:.3em;color:#8F9196;margin-top:1px}
/* 侧边栏顶部身份区（操作人+权限角色，全站唯一展示位） */
.side-user{display:flex;gap:10px;align-items:center;padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.08)}
.side-user .u-ava{width:34px;height:34px;border-radius:50%;background:var(--badge);color:#F2F2F0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;border:1px solid rgba(255,255,255,.15)}
.side-user .u-name{font-size:13px;font-weight:700;color:#F2F2F0}
.side-user .u-role{display:inline-block;font-size:9px;letter-spacing:.12em;color:var(--warn);border:1px solid rgba(201,151,59,.45);border-radius:6px;padding:2px 6px;margin-top:3px}
.sidebar:not(:hover):not(.peek) .side-user{justify-content:center;padding:14px 8px}
.st{white-space:nowrap}
.sidebar:not(:hover):not(.peek) .st{display:none}
.sidebar:not(:hover):not(.peek) .side-item{justify-content:center;gap:0;padding:11px 0}
.sidebar:not(:hover):not(.peek) .side-sec{font-size:0;height:15px}
.sidebar:not(:hover):not(.peek) .side-sec::after{content:'';display:block;width:16px;height:1px;background:rgba(255,255,255,.16);margin:7px auto 0}
.sidebar:not(:hover):not(.peek) .side-switch{display:none}
.side-scroll{flex:1;overflow-y:auto;overflow-x:hidden;padding:6px 10px}
.side-sec{font-size:9px;letter-spacing:.28em;color:#6E7076;text-transform:uppercase;margin:16px 10px 6px;white-space:nowrap}
.side-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:10px 12px;border-radius:10px;color:#B9BBC0;font-size:13px;font-weight:500;cursor:pointer;text-decoration:none;transition:.2s;background:none;border:none;font-family:inherit;white-space:nowrap}
.side-item svg{width:16px;height:16px;flex-shrink:0;opacity:.85}
.sidebar:not(:hover):not(.peek) .side-item svg{width:18px;height:18px}
.side-item:hover{color:#fff;background:rgba(255,255,255,.06)}
.side-item.on{color:#fff;background:rgba(255,255,255,.09);box-shadow:inset 2px 0 0 #fff}
.side-item.danger{color:#D98A82}
.side-item.danger:hover{background:rgba(217,138,130,.1)}
.side-foot{border-top:1px solid rgba(255,255,255,.08);padding:10px 12px}
.side-switch{margin-left:auto;width:30px;height:16px;border-radius:8px;background:rgba(255,255,255,.15);position:relative;flex-shrink:0}
.side-switch i{position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#8F9196;transition:.25s}
.side-item.on-dark .side-switch{background:rgba(255,255,255,.3)}
.side-item.on-dark .side-switch i{left:16px;background:#fff}
.side-pulse{width:6px;height:6px;border-radius:50%;background:#fff;opacity:.55;margin:0 auto 14px;animation:sidePulse 2.2s ease-in-out infinite}
.sidebar:hover .side-pulse,.sidebar.peek .side-pulse{display:none}
@keyframes sidePulse{0%,100%{opacity:.15;transform:scale(.8)}50%{opacity:.7;transform:scale(1.2)}}
.sys-nav{display:flex;align-items:center;gap:32px;padding:20px 0;border-bottom:1px solid var(--line);margin-bottom:0}
.logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;letter-spacing:.06em}
.logo-mark{width:30px;height:30px;background:var(--ink);color:var(--bg);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;transition:.35s}
.sys-nav a{color:var(--mut);text-decoration:none;font-size:13px;font-weight:500;transition:.2s}
.sys-nav a:hover,.sys-nav a.on{color:var(--ink)}
.sys-nav .right{margin-left:auto;display:flex;gap:12px;align-items:center}
/* 登录屏 */
.screen-login{padding:90px 0 110px;position:relative;overflow:hidden}
.login-flex{display:flex;align-items:center;gap:60px;flex-wrap:wrap}
.login-left{flex:1;min-width:300px}
.login-left .huge{margin:18px 0 22px}
.login-left p{color:var(--mut);max-width:420px}
.login-card{width:360px;background:var(--panel);border:1px solid var(--line);border-radius:22px 22px 22px 4px;padding:36px;box-shadow:var(--shadow);transition:.35s}
.login-card .micro{margin-bottom:8px}
.login-card h3{font-size:20px;font-weight:700;margin-bottom:24px}
.g-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:12px;background:var(--ink);color:var(--bg);border:none;border-radius:10px;padding:14px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:.2s}
.g-btn:hover{opacity:.85}
.login-card .hint{margin-top:18px;font-size:12px;color:var(--mut);text-align:center}
.float-stat{position:absolute;right:6%;top:8%;background:var(--float-bg);backdrop-filter:blur(10px);border:1px solid var(--float-bd);border-radius:14px;padding:14px 20px;display:flex;gap:18px;align-items:center;z-index:2}
.float-stat .n{font-size:22px;font-weight:700}
.float-stat .t{font-size:10px;letter-spacing:.2em;color:var(--mut);text-transform:uppercase}
.fs-div{width:1px;height:30px;background:var(--line)}
/* hero统计 */
.hero-stats{display:flex;gap:0;border-left:1px solid var(--line)}
.hstat{padding:6px 26px;border-right:1px solid var(--line)}
.hstat .n{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums}
.hstat .t{font-size:10px;letter-spacing:.22em;color:var(--mut);text-transform:uppercase}
/* 双栏/三栏布局 */
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.cols-2-1{display:grid;grid-template-columns:2fr 1fr;gap:20px}
.mb20{margin-bottom:20px}.mb32{margin-bottom:32px}
/* 上传拖拽区 */
.drop{border:2px dashed var(--line);border-radius:18px;padding:36px 20px;text-align:center;transition:.25s;cursor:pointer;background:var(--panel)}
.drop:hover{border-color:var(--ink)}
.drop .ico{font-size:30px;margin-bottom:10px}
.drop .t1{font-size:13px;font-weight:600;color:var(--ink)}
.drop .t2{font-size:11px;color:var(--mut);margin-top:4px}
/* 黑面板内的上传区 */
.drop-dark{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.22)}
.drop-dark:hover{border-color:#fff}
.drop-dark .t1{color:#F2F2F0}
.drop-dark .t2{color:var(--cut-mut)}
/* 图片缩略图 */
.thumbs{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.thumb{width:84px;border-radius:10px;overflow:hidden;border:1px solid rgba(255,255,255,.16);background:var(--dcard)}
.thumb .img{height:58px;background:#3A3E46;display:flex;align-items:center;justify-content:center;color:#8F9196}
.thumb .bar{display:flex;justify-content:space-between;align-items:center;padding:5px 8px;font-size:10px;color:#C9CBD1;background:rgba(255,255,255,.04)}
.thumb .bar i{font-style:normal;cursor:pointer;opacity:.8}
.thumb .bar i:hover{opacity:1}
.thumb .bar .del{color:#E88B81}
/* 发送配置双栏布局 */
.send-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:22px;align-items:stretch}
.send-sec{background:var(--dcard);border:1px solid rgba(255,255,255,.07);border-radius:16px;padding:20px 18px;display:flex;flex-direction:column}
.send-sec .sec-t{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--cut-mut);font-weight:700;margin-bottom:12px}
.send-sec .frow{margin-bottom:12px}
.send-sec .frow:last-of-type{margin-bottom:0}
.send-div{height:1px;background:rgba(255,255,255,.1);margin:6px 0 14px}
.drop-strip{display:flex;align-items:center;gap:10px;border:2px dashed rgba(255,255,255,.22);border-radius:12px;padding:12px 16px;font-size:12px;color:#C9CBD1;cursor:pointer;transition:.25s;background:rgba(255,255,255,.04)}
.drop-strip:hover{border-color:#fff}
.drop-strip .ico{font-size:16px;opacity:.8}
/* 发送配置白卡内的浅色变体 */
.send-sec-light{background:var(--panel-2);border:1px solid var(--hair);border-radius:16px;padding:20px 18px;display:flex;flex-direction:column}
.send-sec-light .sec-t{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--mut);font-weight:700;margin-bottom:12px}
.send-sec-light .frow{margin-bottom:12px}
.send-div-light{height:1px;background:var(--hair);margin:6px 0 14px}
.drop-strip-light{display:flex;align-items:center;gap:10px;border:2px dashed var(--line);border-radius:12px;padding:12px 16px;font-size:12px;color:var(--mut);cursor:pointer;transition:.25s;background:var(--panel-2)}
.drop-strip-light:hover{border-color:var(--ink);color:var(--ink)}
.thumb-light{background:var(--panel);border-color:var(--line)}
.thumb-light .img{background:var(--panel-2);color:var(--mut)}
.thumb-light .bar{background:var(--panel-2);color:var(--mut)}
/* 黑面板内的深色表格与报告区块 */
.tbl-dark{width:100%;border-collapse:collapse;font-size:13px;margin:6px 0 14px}
.tbl-dark th{background:rgba(255,255,255,.09);color:#F2F2F0;font-size:12px;letter-spacing:.08em;font-weight:700;text-align:left;padding:10px 14px;border:none}
.tbl-dark td{padding:10px 14px;color:#C9CBD1;border-top:1px solid rgba(255,255,255,.08);font-variant-numeric:tabular-nums}
.tbl-dark tr:last-child td{font-weight:700;color:#F2F2F0}
.rpt-sec{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#F2F2F0;margin:18px 0 10px}
.rpt-sec::before{content:'';width:3px;height:14px;background:#fff;border-radius:2px}
.rpt-quote{border-left:3px solid rgba(255,255,255,.25);padding:8px 12px;margin:8px 0;font-size:12px;color:#C9CBD1;line-height:1.65;background:rgba(255,255,255,.04);border-radius:0 8px 8px 0}
/* 历史报告卡 */
.rep-card{border:1px solid var(--hair);border-radius:14px;padding:18px;background:var(--panel-2);transition:.2s}
.rep-card:hover{border-color:var(--line);transform:translateY(-2px)}
.rep-card .rh{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.rep-card .rt{font-weight:700;font-size:14px;color:var(--ink)}
.rep-card .rm{font-size:12px;color:var(--mut);margin-bottom:4px}
.rep-card .rv{font-size:12px;color:var(--mut);line-height:1.65;border-top:1px dashed var(--hair);padding-top:10px;margin-top:10px}
/* 操作列小按钮 */
.btn-op{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:8px;padding:5px 12px;font-size:12px;font-weight:600;color:var(--ink);background:var(--panel);cursor:pointer;transition:.2s;text-decoration:none;margin-right:8px;font-family:inherit}
.btn-op:hover{border-color:var(--ink)}
.btn-op.danger{color:var(--err);border-color:rgba(192,82,72,.45)}
.btn-op.danger:hover{border-color:var(--err);background:rgba(192,82,72,.07)}
.btn-op.ok{color:var(--ok);border-color:rgba(76,158,110,.45)}
.btn-op.ok:hover{border-color:var(--ok);background:rgba(76,158,110,.07)}
/* 管理页组件 */
.warn-banner{background:rgba(201,151,59,.12);border:1px solid rgba(201,151,59,.5);border-left:4px solid var(--warn);border-radius:12px;padding:12px 18px;font-size:13px;color:var(--ink);margin-bottom:20px}
.adm-pane{display:none}
.adm-pane.on{display:block;animation:pgIn .35s ease}
.tok-card{border:1px solid var(--line);border-radius:14px;padding:18px;background:var(--panel)}
.tok-mask{background:var(--panel-2);border:1px solid var(--hair);border-radius:8px;padding:8px 12px;font-family:'Space Grotesk',monospace;font-size:12px;color:var(--mut);letter-spacing:.06em;margin:12px 0 6px}
.ch-row{display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid var(--hair);border-radius:10px;margin-bottom:8px;background:var(--panel-2)}
.ch-row .cid{font-family:'Space Grotesk',monospace;font-size:11px;color:var(--mut)}
.ch-row .del{margin-left:auto}
.db-card{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:var(--panel);display:flex;gap:12px;align-items:center}
.db-card .b{width:36px;height:36px;border-radius:10px;background:var(--panel-2);border:1px solid var(--hair);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--mut);flex-shrink:0}
.db-card .n{font-weight:700;font-size:13px;color:var(--ink)}
.db-card .t{font-family:'Space Grotesk',monospace;font-size:10px;color:var(--mut);margin-top:2px}
.db-card .r{margin-left:auto;text-align:right}
.db-card .r .rn{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.db-card .r .rt{font-size:10px;color:var(--mut);margin-top:2px}
.fb-card{border:1px solid var(--line);border-left:3px solid var(--info);border-radius:12px;padding:16px 18px;margin-bottom:14px;background:var(--panel)}
.fb-body{background:var(--panel-2);border-radius:10px;padding:10px 14px;font-size:13px;color:var(--mut);margin:10px 0 12px;line-height:1.65}
/* 权限芯片（替代裸勾选框） */
.perm-grp{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.perm-grp:last-child{margin-bottom:0}
.perm-grp .gl{font-size:10px;letter-spacing:.14em;color:var(--mut);font-weight:700;min-width:52px}
.perm-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:8px;padding:4px 10px;font-size:11px;font-weight:600;color:var(--mut);background:var(--panel);cursor:pointer;transition:.2s;user-select:none}
.perm-chip:hover{border-color:var(--ink);color:var(--ink)}
.perm-chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.perm-chip.on::before{content:'✓';font-size:10px}
.perm-chip.lock{background:var(--panel-2);border:1px dashed var(--line);color:var(--mut);cursor:default;font-weight:500}
.perm-chip.lock:hover{border-color:var(--line);color:var(--mut)}
.perm-chip.lock::before{content:'🔒';font-size:9px}
/* 一级标签卡（深色 · 图标+计数角标+选中白指示条） */
.tab-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}
.tab-card{display:flex;align-items:center;gap:12px;padding:14px 18px;border:1px solid transparent;border-radius:14px;background:var(--cut);cursor:pointer;transition:.2s;position:relative}
.tab-card:hover{background:var(--dcard-h)}
.tab-card .ti{width:38px;height:38px;border-radius:11px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#C9CBD1}
.tab-card .ti svg{width:18px;height:18px}
.tab-card .tn{font-size:14px;font-weight:700;color:#F2F2F0}
.tab-card .td{font-size:11px;color:var(--cut-mut);margin-top:2px}
.tab-card .cnt{margin-left:auto;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.14);border-radius:8px;padding:3px 9px;font-size:11px;font-weight:700;color:#C9CBD1;font-variant-numeric:tabular-nums}
.tab-card.on{background:#fff;box-shadow:inset 3px 0 0 #0B0B0C, 0 10px 26px rgba(0,0,0,.22);transform:translateY(-2px)}
.tab-card.on .tn{color:#0B0B0C}
.tab-card.on .td{color:#84868B}
.tab-card.on .ti{background:#0B0B0C;color:#fff;border-color:#0B0B0C}
.tab-card.on .cnt{background:#0B0B0C;color:#fff;border-color:#0B0B0C}
.tab-card.hot .cnt{background:var(--err);color:#fff;border-color:var(--err)}
.tab-card.hot.on .cnt{background:var(--err);color:#fff;border-color:var(--err)}
:root[data-theme="dark"] .tab-card{border-color:rgba(255,255,255,.14)}
:root[data-theme="dark"] .tab-card.on{background:#3F444E;box-shadow:inset 3px 0 0 #F2F2F0, 0 10px 26px rgba(0,0,0,.4)}
:root[data-theme="dark"] .tab-card.on .tn{color:#F2F2F0}
:root[data-theme="dark"] .tab-card.on .td{color:#B9BBC0}
:root[data-theme="dark"] .tab-card.on .ti{background:#F2F2F0;color:#1F2127;border-color:#F2F2F0}
:root[data-theme="dark"] .tab-card.on .cnt{background:#F2F2F0;color:#1F2127;border-color:#F2F2F0}
@media(max-width:900px){.tab-cards{grid-template-columns:1fr}}
/* 整合tab内的段控子导航 */
.seg-bar{display:inline-flex;background:var(--panel-2);border:1px solid var(--hair);border-radius:11px;padding:4px;gap:4px;margin-bottom:20px}
.seg-bar button{border:none;background:transparent;border-radius:8px;padding:8px 18px;font-size:12px;font-weight:600;color:var(--mut);cursor:pointer;font-family:inherit;transition:.2s}
.seg-bar button:hover{color:var(--ink)}
.seg-bar button.on{background:var(--panel);color:var(--ink);box-shadow:0 2px 8px rgba(0,0,0,.10);border:1px solid var(--hair)}
.adm-sub{display:none}
.adm-sub.on{display:block;animation:pgIn .3s ease}
/* 清空警示按钮（红色描边，提醒谨慎） */
.btn-warn-ghost{background:transparent;border:1px solid rgba(192,82,72,.5);color:var(--err)}
.btn-warn-ghost:hover{background:rgba(192,82,72,.08);border-color:var(--err)}
@media(max-width:900px){.send-grid{grid-template-columns:1fr}}
/* 图表占位（纯CSS柱状图） */
.chart{display:flex;align-items:flex-end;gap:10px;height:180px;padding:10px 4px 0}
.chart .bar{flex:1;background:var(--ink);opacity:.85;border-radius:6px 6px 0 0;transition:.3s;min-height:8px}
.chart .bar:hover{opacity:1;transform:translateY(-4px)}
:root[data-theme="dark"] .chart .bar{background:#EDEDEA}
.chart-x{display:flex;gap:10px;margin-top:8px}
.chart-x span{flex:1;text-align:center;font-size:10px;color:var(--mut);letter-spacing:.1em}
/* 折线（SVG） */
.line-chart{width:100%;height:180px}
/* 热度条 */
.heat-row{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--hair)}
.heat-row:last-child{border-bottom:none}
.heat-rank{font-size:20px;font-weight:700;width:34px;color:var(--mut);font-variant-numeric:tabular-nums}
.heat-body{flex:1;min-width:0}
.heat-body .t{font-size:13px;font-weight:600;color:var(--ink)}
.heat-body .m{font-size:11px;color:var(--mut);margin-top:2px}
.heat-score{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}
.heat-bar{height:5px;background:var(--panel-2);border-radius:3px;margin-top:8px;overflow:hidden}
.heat-bar i{display:block;height:100%;background:var(--ink);border-radius:3px}
:root[data-theme="dark"] .heat-bar i{background:#EDEDEA}
/* 报告正文 */
.report-body{line-height:1.9;color:var(--mut);font-size:14px}
.report-body h3{color:var(--ink);font-size:16px;font-weight:700;margin:26px 0 10px}
.report-body h3:first-child{margin-top:0}
.report-body strong{color:var(--ink)}
.report-kpi{display:flex;gap:40px;flex-wrap:wrap;padding:22px 0;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);margin:20px 0}
.report-kpi .n{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums}
.report-kpi .t{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mut)}
/* AI对话气泡 */
/* 贴文助手组件 */
.ok-banner{background:rgba(76,158,110,.12);border:1px solid rgba(76,158,110,.45);border-left:4px solid var(--ok);border-radius:12px;padding:12px 18px;font-size:13px;color:var(--ink)}
.warn-banner-o{background:rgba(201,151,59,.12);border:1px solid rgba(201,151,59,.5);border-left:4px solid var(--warn);border-radius:12px;padding:12px 18px;font-size:13px;color:var(--ink)}
.embed-ph{border:2px dashed var(--line);border-radius:14px;min-height:340px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;background:var(--panel-2)}
.embed-ph .ico{font-size:28px}
.embed-ph .t1{font-size:13px;font-weight:700;color:var(--ink)}
.embed-ph .t2{font-size:11px;color:var(--mut);max-width:300px;line-height:1.6}
.lang-box{border:1px solid var(--hair);border-radius:10px;padding:10px 12px;background:var(--panel-2)}
.lang-box .lb{font-size:11px;font-weight:700;color:var(--mut);margin-bottom:6px}
.lang-box textarea{width:100%;border:none;background:transparent;font-size:12px;color:var(--ink);resize:vertical;min-height:56px;outline:none;font-family:inherit;line-height:1.6}
.bubble{max-width:78%;padding:14px 18px;border-radius:16px;font-size:13.5px;line-height:1.7}
.bubble.ai{background:var(--panel);border:1px solid var(--line);border-radius:16px 16px 16px 4px}
.bubble.me{background:var(--ink);color:var(--bg);border-radius:16px 16px 4px 16px;margin-left:auto}
.chat-head{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.chat-ava{width:30px;height:30px;border-radius:50%;background:var(--ink);color:var(--bg);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}
/* 进度条 */
.progress{height:8px;background:var(--panel-2);border-radius:5px;overflow:hidden}
.progress i{display:block;height:100%;width:64%;background:var(--ink);border-radius:5px}
:root[data-theme="dark"] .progress i{background:#EDEDEA}
/* Discord预览 */
.dc-preview{background:#202125;border-radius:16px;overflow:hidden;border:1px solid var(--line)}
:root[data-theme="light"] .dc-preview{background:#36393F;border-color:#36393F}
.dc-head{padding:12px 18px;border-bottom:1px solid rgba(255,255,255,.06);color:#fff;font-weight:600;font-size:14px;display:flex;gap:8px;align-items:center}
.dc-head .h{color:#8A8D94;font-weight:700}
.dc-body{padding:18px;display:flex;gap:14px}
.dc-ava{width:40px;height:40px;border-radius:50%;background:#4A4D55;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;flex-shrink:0}
.dc-author{color:#fff;font-weight:600;font-size:14px}
.dc-time{color:#8A8D94;font-size:11px;margin-left:8px}
.dc-text{color:#D5D7DB;font-size:13.5px;line-height:1.6;margin-top:4px}
.dc-img{margin-top:10px;width:280px;height:150px;background:linear-gradient(135deg,#3A3D45,#26282D);border-radius:8px}
/* 空状态 */
.empty{text-align:center;padding:70px 20px;color:var(--mut)}
.empty .ico{font-size:40px;margin-bottom:16px;opacity:.5}
.empty .t{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:6px}
/* 页脚 */
footer{margin-top:80px;background:var(--cut);color:#8F9196;padding:50px 0 0;transition:background .35s}
.foot-row{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:12px;padding-bottom:30px}
.mega{font-size:clamp(70px,15.5vw,215px);font-weight:700;letter-spacing:.06em;line-height:.82;color:#2A2D34;text-align:center;text-transform:uppercase;user-select:none}
:root[data-theme="dark"] .mega{color:#363A42}
/* ===== 舆情页组件 ===== */
.chips{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:8px 14px;font-size:12px;font-weight:600;color:var(--ink);background:var(--panel)}
.chip .dot{width:7px;height:7px;border-radius:50%}
.brief5{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.voice-bar{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:14px;padding:14px 20px;display:flex;gap:12px;align-items:center;flex-wrap:wrap;transition:.35s}
.voice-bar .vt{font-weight:700;font-size:13px;letter-spacing:.05em}
.voice-bar .pill{background:var(--panel-2);color:var(--mut);border:1px solid var(--line);border-radius:8px;padding:6px 12px;font-size:12px;cursor:pointer}
.voice-bar .pill.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.voice-bar .cnt{margin-left:auto;font-size:12px;color:var(--mut)}
.voice-box .voice-bar{border-radius:14px 14px 0 0}
.voice-list{max-height:0;overflow:hidden;transition:max-height .45s ease}
.voice-box.open .voice-list{max-height:440px;overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-top:none;border-radius:0 0 14px 14px;padding:14px;display:flex;flex-direction:column;gap:12px}
.voice-tabs{display:flex;gap:8px;flex-wrap:wrap;position:sticky;top:-14px;background:var(--panel);padding:4px 0 10px;margin-top:-4px;border-bottom:1px solid var(--hair);z-index:2}
.voice-tabs .pill{background:var(--panel-2);color:var(--mut);border:1px solid var(--line);border-radius:8px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;transition:.2s}
.voice-tabs .pill:hover{color:var(--ink)}
.voice-tabs .pill.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.voice-more{text-align:center;font-size:11px;color:var(--mut);letter-spacing:.15em;padding:4px 0 2px;flex-shrink:0}
.vpost{border:1px solid var(--hair);border-left:3px solid var(--ok);border-radius:12px;padding:14px 16px;background:var(--panel)}
.vpost .vh{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:13px}
.vpost .name{font-weight:700;color:var(--ink)}
.vpost .handle{color:var(--mut);font-size:12px}
.vpost .time{margin-left:auto;font-size:11px;color:var(--mut)}
.vpost .body{font-size:13px;color:var(--ink);margin-top:8px;line-height:1.65;word-break:break-all}
.vpost .orig{font-size:12px;color:var(--mut);font-style:italic;margin-top:8px;border-top:1px dashed var(--hair);padding-top:8px;line-height:1.6}
.duo{display:flex;align-items:flex-end;gap:22px;height:190px;padding:10px 6px 0}
.duo .g{flex:1;display:flex;align-items:flex-end;gap:5px;justify-content:center;height:100%}
.duo .b1,.duo .b2,.duo .b3{width:16px;border-radius:5px 5px 0 0;min-height:3px}
.duo .b1{background:#4A9EDA}
.duo .b2{background:#6A5ACD}
.duo .b3{background:#E8A33D}
.legend{display:flex;gap:16px;align-items:center;font-size:11px;color:var(--mut);flex-wrap:wrap}
.legend i{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:6px;vertical-align:-1px}
/* 紧凑深色卡（黑面板内） */
.dcard-sm{background:var(--dcard);border-radius:14px;padding:16px 16px 14px;transition:.25s;color:#F2F2F0}
.dcard-sm:hover{background:var(--dcard-h)}
.dcard-sm .big{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.dcard-sm h4{font-size:12px;font-weight:600;margin-top:2px}
.dcard-sm p{font-size:10px;color:var(--cut-mut);margin-top:2px}
.sumbox-dark{background:rgba(255,255,255,.06);border-radius:10px;padding:10px 12px;font-size:12px;color:#C9CBD1;line-height:1.6}
/* 趋势黑面板内的深色适配（与今日快报规范一致） */
.panel-cut .lstat{background:var(--dcard);border-color:transparent}
.panel-cut .lstat .n{color:#F2F2F0}
.panel-cut .lstat .t{color:var(--cut-mut)}
.panel-cut .card-sub{color:var(--cut-mut)}
.panel-cut .duo .v{color:#C9CBD1}
.panel-cut .duo-x b,.panel-cut .duo-x i{color:var(--cut-mut)}
.panel-cut .legend{color:var(--cut-mut)}
.panel-cut .mood-cell{background:var(--dcard);border-color:transparent}
.panel-cut .mood-cell .md{color:var(--cut-mut)}
.panel-cut .mb .mtrack{background:rgba(255,255,255,.08)}
.panel-cut .mb .mv{color:var(--cut-mut)}
.duo-x{display:flex;gap:22px;margin-top:8px}
.duo-x span{flex:1;text-align:center;font-size:10px;color:var(--mut)}
.mood{display:flex;gap:14px;align-items:center;margin-bottom:12px}
.mood .d{font-size:11px;color:var(--mut);width:56px;flex-shrink:0}
.mood .track{flex:1;height:8px;border-radius:4px;background:var(--hair);display:flex;overflow:hidden}
.mood .track i{display:block;height:100%}
.mood .pct{font-size:11px;color:var(--mut);width:96px;text-align:right;flex-shrink:0}
.mood-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin-top:12px}
.mood-cell{background:var(--panel-2);border:1px solid var(--hair);border-radius:10px;padding:10px 10px 8px}
.mood-cell .md{font-size:10px;color:var(--mut);font-weight:700;margin-bottom:8px;text-align:center;white-space:nowrap}
.mb{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.mb:last-child{margin-bottom:0}
.mb .mtrack{flex:1;height:9px;background:var(--hair);border-radius:5px;overflow:hidden;min-width:0}
.mb .mtrack i{display:block;height:100%;border-radius:5px}
.mb .mv{font-size:10px;color:var(--mut);white-space:nowrap;font-variant-numeric:tabular-nums}
@media(max-width:900px){.mood-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:560px){.mood-grid{grid-template-columns:repeat(2,1fr)}}
.topic-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}
.tcol-h{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:700;border-radius:8px;padding:6px 12px;margin-bottom:12px}
.tcard{border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px;background:var(--panel)}
.tcard .top{display:flex;align-items:center;gap:8px}
.tag-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--panel-2);color:var(--mut);white-space:nowrap;letter-spacing:.02em;text-transform:uppercase}
.tcard .name{font-weight:700;font-size:13px;color:var(--ink)}
.tcard .heat{margin-left:auto;font-size:12px;font-weight:700}
.tcard .meta{font-size:11px;color:var(--mut);margin:6px 0 8px}
.tcard .sum{background:var(--panel-2);border-radius:10px;padding:10px 12px;font-size:12px;color:var(--mut);line-height:1.6}
.sbar{height:5px;background:var(--hair);border-radius:3px;overflow:hidden;margin:8px 0 10px}
.sbar i{display:block;height:100%;border-radius:3px}
.quote{border:1px solid var(--hair);border-radius:10px;padding:10px 12px;margin-top:8px}
.quote .q{font-size:12px;color:var(--ink);line-height:1.55}
.quote .a{font-size:11px;color:var(--mut);margin-top:6px;display:flex;gap:8px;align-items:center}
.arch{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.arch-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--panel)}
.arch-card .d{font-weight:700;font-size:13px;color:var(--ink)}
.arch-card .n{font-size:11px;color:var(--mut);margin:6px 0}
.arch-card .s{font-size:10px;font-weight:600}
.jargon{position:relative;cursor:help;border-bottom:1px dotted currentColor}
.jargon .jt{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#2A2D34;color:#F2F2F0;font-size:10px;font-weight:500;line-height:1.5;padding:8px 12px;border-radius:8px;white-space:nowrap;opacity:0;pointer-events:none;transition:.2s;z-index:30;box-shadow:0 8px 20px rgba(0,0,0,.25)}
.jargon:hover .jt{opacity:1}
/* 平台色（小面积点缀） */
.plat-tw{background:rgba(74,158,218,.14);color:#3A7FB5}
.plat-dc{background:rgba(123,104,238,.14);color:#6A5ACD}
.plat-kr{background:rgba(232,163,61,.18);color:#B57A1E}
:root[data-theme="dark"] .plat-tw{color:#7FBCE8}
:root[data-theme="dark"] .plat-dc{color:#B0A4F0}
:root[data-theme="dark"] .plat-kr{color:#E8C088}
.tcard.tw{border-left:3px solid #4A9EDA}
.tcard.dc{border-left:3px solid #6A5ACD}
.tcard.kr{border-left:3px solid #E8A33D}
.sumbox{background:var(--panel-2);border-radius:10px;padding:10px 12px;font-size:12px;color:var(--mut);line-height:1.6}
.lstat{background:var(--panel-2);border:1px solid var(--hair);border-radius:14px;padding:18px 20px}
.lstat .n{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}
.lstat .t{font-size:11px;color:var(--mut);margin-top:4px}
.duo .col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:4px}
.duo .v{font-size:10px;color:var(--mut);line-height:1}
.duo-x span{display:flex;flex-direction:column;gap:2px}
.duo-x b{font-weight:600;color:var(--mut);font-size:10px}
.duo-x i{font-style:normal;font-size:10px;color:var(--mut);opacity:.7}
@media(max-width:1000px){.brief5{grid-template-columns:repeat(3,1fr)}.arch{grid-template-columns:repeat(3,1fr)}.topic-grid{grid-template-columns:1fr}}
@media(max-width:900px){.dcards{grid-template-columns:1fr 1fr}.dcards.c3{grid-template-columns:1fr}.panel-cut{padding:36px 26px}.cols2,.cols3,.cols-2-1{grid-template-columns:1fr}}
@media(max-width:560px){.dcards{grid-template-columns:1fr}.login-card{width:100%}.sys-nav{gap:14px;flex-wrap:wrap}.hstat{padding:6px 14px}}
/* ===== V21 字号优化：灰色小字全站调大一号，侧边栏重点照顾 ===== */
.side-item{font-size:14px}
.side-sec{font-size:11px}
.side-head .t2{font-size:10px}
.side-user .u-name{font-size:14px}
.side-user .u-role{font-size:10px}
.micro{font-size:12px}
.flabel{font-size:12px}
th{font-size:11px}
.drop .t2{font-size:12px}
.dcard p{font-size:12px}
.dcard-sm p{font-size:11px}
.lstat .t{font-size:12px}
.hstat .t{font-size:11px}
.float-stat .t{font-size:11px}
.chart-x span{font-size:11px}
.duo .v{font-size:11px}
.duo-x b{font-size:11px}
.duo-x i{font-size:11px}
.mood-cell .md{font-size:11px}
.mb .mv{font-size:11px}
.mood .d{font-size:12px}
.mood .pct{font-size:12px}
.arch-card .n{font-size:12px}
.arch-card .s{font-size:11px}
.tcard .meta{font-size:12px}
.quote .a{font-size:12px}
.heat-body .m{font-size:12px}
.legend{font-size:12px}
.voice-more{font-size:12px}
.vpost .time{font-size:12px}
.dc-time{font-size:12px}
.report-kpi .t{font-size:12px}
.send-sec .sec-t{font-size:11px}
.send-sec-light .sec-t{font-size:11px}
.jargon .jt{font-size:11px}
.thumb .bar{font-size:11px}

/* ===== 浮动反馈组件 ===== */
@keyframes fbFadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.fb-fab{position:fixed;right:28px;bottom:28px;width:52px;height:52px;border-radius:16px;background:var(--ink,#0B0B0C);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:110;border:none;box-shadow:0 10px 26px rgba(0,0,0,.28);transition:transform .25s}
.fb-fab:hover{transform:translateY(-2px)}
.fb-fab svg{width:22px;height:22px}
.fb-win{position:fixed;right:28px;bottom:92px;width:320px;background:var(--panel,#fff);border:1px solid var(--line,#D8DADD);border-radius:16px;box-shadow:0 24px 60px rgba(0,0,0,.28);z-index:110;display:none;overflow:hidden}
.fb-win.open{display:block;animation:fbFadeIn .3s ease}
.fb-win .fh{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line,#E7E8EA);background:var(--panel-2,#F6F7F8)}
.fb-win .fh .t{font-size:14px;font-weight:700;color:var(--ink,#0B0B0C)}
.fb-win .fb-sub{font-size:10px;letter-spacing:.15em;color:var(--mut,#84868B);text-transform:uppercase}
.fb-win .fh .x{margin-left:auto;cursor:pointer;color:var(--mut,#84868B);font-size:18px;line-height:1;border:none;background:none;font-family:inherit}
.fb-win .fh .x:hover{color:var(--ink,#0B0B0C)}
.fb-win .fb-body{padding:16px}
.fb-win textarea{width:100%;min-height:96px;border:1px solid var(--line,#D8DADD);border-radius:10px;padding:10px 12px;font-size:13px;color:var(--ink,#0B0B0C);background:var(--panel,#fff);resize:vertical;outline:none;font-family:inherit;line-height:1.6;box-sizing:border-box}
.fb-win textarea:focus,.fb-win input:focus{border-color:var(--ink,#0B0B0C)}
.fb-win input{width:100%;margin-top:10px;border:1px solid var(--line,#D8DADD);border-radius:10px;padding:9px 12px;font-size:13px;color:var(--ink,#0B0B0C);background:var(--panel,#fff);outline:none;font-family:inherit;box-sizing:border-box}
.fb-win .fb-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}
.fb-win .fb-hint{font-size:11px;color:var(--mut,#84868B)}
.fb-win .fb-submit{background:var(--ink,#0B0B0C);color:#fff;border:none;border-radius:10px;padding:9px 18px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:.2s}
.fb-win .fb-submit:hover{opacity:.85}
