/* 哪都通 · 异人论坛 主样式表
   由原 index.html 内联样式块按文档顺序合并，保持原有级联关系。 */

/* ===== 原样式块：inline-style ===== */

/* ============ 基础变量 ============ */
:root{
  --blue:#243B9B; --blue-2:#2E47B8; --blue-deep:#1A2C78; --blue-ink:#0E1B52;
  --orange:#E8874A; --orange-deep:#D06E35;
  --bg:#F3F5FA; --card:#FFFFFF; --ink:#1F2433; --muted:#6A7185; --line:#E4E8F2;
  --radius:10px; --shadow:0 6px 24px rgba(22,35,90,.08);
  --ok:#2E9E6B; --warn:#E8874A; --danger:#E0484D;
  --sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --serif:"Noto Serif SC","Songti SC","SimSun",serif;
  --mono:ui-monospace,"Cascadia Code",Consolas,"Courier New",monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--sans);color:var(--ink);background:var(--bg);font-size:15px;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:var(--blue);text-decoration:none}
a:hover{color:var(--orange-deep)}
img{max-width:100%;display:block}
button{font-family:inherit;cursor:pointer}
input,textarea,select{font-family:inherit;font-size:15px}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px}
.muted{color:var(--muted)}
.serif{font-family:var(--serif)}
.hide{display:none!important}
.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--blue);background:var(--blue);color:#fff;padding:10px 22px;border-radius:8px;font-size:15px;font-weight:500;transition:.15s;cursor:pointer}
.btn:hover{background:var(--blue-deep);border-color:var(--blue-deep);color:#fff}
.btn-ghost{background:#fff;color:var(--blue)}
.btn-ghost:hover{background:#EEF1FB;color:var(--blue)}
.btn-orange{background:var(--orange);border-color:var(--orange)}
.btn-orange:hover{background:var(--orange-deep);border-color:var(--orange-deep);color:#fff}
.btn-sm{padding:6px 14px;font-size:13px;border-radius:6px}
.btn-block{width:100%;justify-content:center}
.field{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:8px;background:#fff;outline:none;transition:.15s}
.field:focus{border-color:var(--blue-2);box-shadow:0 0 0 3px rgba(36,59,155,.1)}
textarea.field{resize:vertical;min-height:110px;line-height:1.7}
label.fl{display:block;font-size:13px;color:var(--muted);margin:14px 0 6px;font-weight:500}
.tag{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:500;background:#EAF0FF;color:var(--blue)}
.tag-orange{background:#FDEBDF;color:var(--orange-deep)}
.tag-red{background:#FBE3E4;color:var(--danger)}
.tag-green{background:#E2F4EC;color:var(--ok)}
.tag-gray{background:#EEF0F5;color:var(--muted)}

/* ============ 明面：顶部条 / 导航 ============ */
.topbar{background:var(--blue-ink);color:#C7D2F5;font-size:12.5px}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;height:34px}
.topbar a{color:#C7D2F5}
.topbar a:hover{color:#fff}
.topbar .tb-r{display:flex;gap:18px;align-items:center}
.header{background:#fff;box-shadow:0 1px 0 var(--line);position:sticky;top:0;z-index:50}
.header .wrap{display:flex;align-items:center;gap:28px;height:76px}
.logo{display:flex;align-items:center;gap:12px;cursor:pointer;flex-shrink:0}
.logo img{height:46px;width:auto}
.logo .logo-txt{font-weight:900;font-size:20px;color:var(--blue);letter-spacing:1px;line-height:1.1}
.logo .logo-txt small{display:block;font-size:11px;font-weight:400;color:var(--muted);letter-spacing:3px}
.nav{display:flex;gap:4px;margin-left:auto}
.nav a{padding:10px 16px;border-radius:8px;color:var(--ink);font-weight:500;font-size:15px}
.nav a:hover,.nav a.on{background:#EEF1FB;color:var(--blue)}
.nav .emp-entry{font-size:12px;color:#B9C0D4;padding:10px 6px}
.nav .emp-entry:hover{color:var(--orange);background:none}

/* ============ 明面：Hero / 查件 ============ */
.hero{background:linear-gradient(120deg,var(--blue) 0%,var(--blue-deep) 58%,#14246B 100%);color:#fff;position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;right:-60px;top:40px;width:420px;height:160px;opacity:.5;
  background:repeating-linear-gradient(0deg,transparent 0 26px,var(--orange) 26px 38px);transform:skewX(-12deg)}
.hero .wrap{position:relative;z-index:2;padding:64px 20px 72px}
.hero h1{font-size:40px;font-weight:900;letter-spacing:2px;line-height:1.25}
.hero p{margin-top:14px;font-size:17px;color:#D5DEFF;max-width:560px}
.track-box{margin-top:30px;background:#fff;border-radius:14px;padding:8px;display:flex;gap:8px;max-width:680px;box-shadow:0 18px 40px rgba(5,12,45,.35)}
.track-box input{flex:1;border:none;outline:none;padding:14px 18px;font-size:16px;border-radius:8px;background:#F7F9FE}
.track-box .btn{padding:14px 34px;font-size:16px}
.hero-stats{display:flex;gap:44px;margin-top:38px;flex-wrap:wrap}
.hero-stats .s b{font-size:28px;font-weight:900;display:block}
.hero-stats .s span{font-size:13px;color:#C3CCF2}

/* ============ 明面：通用区块 ============ */
.section{padding:56px 0}
.section h2{font-size:26px;font-weight:900;text-align:center;margin-bottom:8px;letter-spacing:1px}
.section .sub{text-align:center;color:var(--muted);margin-bottom:38px}
.grid{display:grid;gap:22px}
.g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
.svc-card{background:var(--card);border-radius:var(--radius);padding:30px 26px;box-shadow:var(--shadow);transition:.18s;border:1px solid #EDF0F8}
.svc-card:hover{transform:translateY(-4px);box-shadow:0 14px 32px rgba(22,35,90,.13)}
.svc-ico{width:50px;height:50px;border-radius:10px;background:#EAF0FF;display:flex;align-items:center;justify-content:center;color:var(--blue);margin-bottom:16px}
.svc-card h3{font-size:17px;font-weight:700;margin-bottom:8px}
.svc-card p{color:var(--muted);font-size:14px}
.news-item{display:flex;gap:16px;padding:18px 0;border-bottom:1px dashed var(--line);align-items:flex-start}
.news-item .nd{flex-shrink:0;width:64px;text-align:center;background:#F2F5FC;border-radius:8px;padding:8px 0}
.news-item .nd b{display:block;font-size:22px;color:var(--blue);font-weight:900;line-height:1.1}
.news-item .nd span{font-size:12px;color:var(--muted)}
.news-item h3{font-size:16px;font-weight:600;margin-bottom:4px}
.news-item p{font-size:13.5px;color:var(--muted)}
/* 网点查询 */
.site-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.site-tab{border:1px solid var(--line);background:#fff;color:var(--ink);padding:9px 18px;border-radius:20px;font-size:14px;cursor:pointer;transition:.15s}
.site-tab:hover{border-color:var(--blue);color:var(--blue)}
.site-tab.on{background:var(--blue);border-color:var(--blue);color:#fff}
.region-hq{background:linear-gradient(120deg,#F2F5FC,#E8EEFB);border-left:4px solid var(--orange);border-radius:8px;padding:13px 18px;margin-bottom:18px;font-size:14.5px;font-weight:600;color:var(--blue-deep)}
.region-hq .rhq-ic{color:var(--orange);margin-right:8px}
.outlet-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.outlet-card h4{font-size:16px;margin-bottom:8px;color:var(--blue)}
.outlet-card .muted{font-size:13px;line-height:1.9}
@media(max-width:900px){.outlet-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.outlet-grid{grid-template-columns:1fr}}
.band{background:var(--blue);color:#fff;text-align:center;padding:46px 20px}
.band h2{font-size:26px;font-weight:900;letter-spacing:1px}
.band p{color:#D3DCFA;margin:10px 0 22px}
.footer{background:var(--blue-ink);color:#A9B5DE;font-size:13.5px;padding:46px 0 26px}
.footer .fgrid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:30px}
.footer h4{color:#fff;font-size:15px;margin-bottom:14px}
.footer a{display:block;color:#A9B5DE;padding:4px 0}
.footer a:hover{color:#fff}
.footer .copy{border-top:1px solid #22306B;margin-top:34px;padding-top:18px;text-align:center;font-size:12.5px;color:#6E7CAF}
.page-head{background:linear-gradient(120deg,var(--blue),var(--blue-deep));color:#fff;padding:44px 0}
.page-head h1{font-size:28px;font-weight:900;letter-spacing:1px}
.page-head p{color:#D5DEFF;margin-top:8px}
.card-box{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:28px;border:1px solid #EDF0F8}

/* ============ 快递时间线 ============ */
.tl{position:relative;padding-left:28px;margin-top:10px}
.tl::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:2px;background:var(--line)}
.tl-item{position:relative;padding:0 0 24px}
.tl-item::before{content:"";position:absolute;left:-26px;top:5px;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid #C6CFE6}
.tl-item.cur::before{border-color:var(--orange);background:var(--orange);box-shadow:0 0 0 4px rgba(232,135,74,.18)}
.tl-item.done::before{border-color:var(--blue);background:var(--blue)}
.tl-item .t{font-size:13px;color:var(--muted)}
.tl-item h4{font-size:15px;font-weight:600;margin:2px 0}
.tl-item p{font-size:13.5px;color:var(--muted)}

/* ============ 暗面：内网整体（主题变量） ============ */
.portal{
  --pt-accent:#2E47B8;--pt-accent-text:#FFFFFF;--pt-highlight:#E8874A;--pt-highlight-bg:rgba(232,135,74,.12);--pt-highlight-text:#FFF0E4;--pt-ok:#2E9E6B;--pt-warn:#E8874A;--pt-danger:#E0484D;--pt-link:#9DBAFF;--pt-hover:#15245C;--pt-cover-a:#1A2C78;--pt-cover-b:#2E47B8;--pt-shadow:0 8px 26px rgba(0,0,0,.2);--pt-bg:#0C1740;--pt-topbar:#0A1438;--pt-sidebar:#0B1740;
  --pt-panel:#13215A;--pt-input:#0E1B50;--pt-border:#243378;
  --pt-panel-2:#1B2B6E;
  --pt-border-soft:#1E2D6B;--pt-text:#F0F3FF;--pt-text-soft:#D6DEFA;
  --pt-muted:#8EA0DC;--pt-bubble-them:#1D2C68;--pt-bubble-them-text:#E0E7FF;
  --pt-glow:rgba(46,71,184,.25);
  background:var(--pt-bg);min-height:100vh;display:flex;flex-direction:column}
.portal-top{background:var(--pt-topbar);border-bottom:1px solid var(--pt-border);display:flex;align-items:center;gap:16px;padding:0 22px;height:60px;position:sticky;top:0;z-index:40}
.portal-top .p-logo{display:flex;align-items:center;gap:10px;color:var(--pt-text);font-weight:900;letter-spacing:2px;cursor:pointer}
.portal-top .p-logo .mk{width:34px;height:34px;border-radius:8px;background:var(--blue-2);display:flex;align-items:center;justify-content:center;font-size:15px}
.portal-top .p-logo small{font-size:10px;color:var(--pt-muted);letter-spacing:3px;font-weight:400}
.portal-body{display:flex;flex:1;min-height:0}
.nav-wrap{display:contents}
.sidebar{width:220px;background:var(--pt-sidebar);border-right:1px solid var(--pt-border-soft);padding:18px 12px;flex-shrink:0}
.sidebar .sd-group{font-size:11px;color:var(--pt-muted);letter-spacing:2px;padding:14px 12px 6px}
.side-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:var(--pt-text-soft);font-size:14px;cursor:pointer;margin-bottom:2px}
.side-item:hover{background:var(--pt-panel);color:var(--pt-text)}
.side-item.on{background:var(--blue-2);color:#fff}
.side-item .lock{margin-left:auto;font-size:11px;color:var(--pt-muted)}
.p-main{flex:1;padding:26px 30px;min-width:0;background:
  radial-gradient(1200px 400px at 80% -100px,var(--pt-glow),transparent),var(--pt-bg)}
.p-panel{background:var(--pt-panel);border:1px solid var(--pt-border);border-radius:12px;padding:22px 24px;margin-bottom:20px}
.p-panel h2{color:var(--pt-text);font-size:19px;font-weight:700;margin-bottom:4px}
.p-panel .ph-sub{color:var(--pt-muted);font-size:13px;margin-bottom:18px}
.p-crumb{color:var(--pt-muted);font-size:13px;margin-bottom:16px}
.p-crumb b{color:var(--pt-text-soft)}
.user-chip{margin-left:auto;display:flex;align-items:center;gap:10px;cursor:pointer}
.user-chip .av{width:36px;height:36px;border-radius:50%;background:var(--blue-2);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;overflow:hidden}
.user-chip .un{font-size:13px;color:var(--pt-text-soft);line-height:1.2}
.user-chip .un small{display:block;color:var(--pt-muted);font-size:11px}
.lvl-badge{font-size:11px;padding:2px 9px;border-radius:20px;font-weight:600}
.lvl-0{background:#3A4670;color:#C6CFEF}.lvl-1{background:#2E47B8;color:#DCE4FF}
.lvl-2{background:var(--orange);color:#3A1C05}.lvl-3{background:#E0484D;color:#fff}
.sec-badge{font-size:11px;padding:2px 9px;border-radius:4px;font-weight:600;font-family:var(--mono)}
.sec-1{background:#2A3878;color:#B9C6F2}.sec-2{background:#2E47B8;color:#DCE4FF}
.sec-3{background:#B45B23;color:#FFE9D6}.sec-4{background:#B32E33;color:#FFE0E1}

/* ============ 论坛（知乎式） ============ */
.forum-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.forum-tabs .ft{padding:7px 16px;border-radius:20px;border:1px solid var(--pt-border);color:var(--pt-text-soft);font-size:13px;cursor:pointer;background:transparent}
.forum-tabs .ft.on{background:var(--blue-2);border-color:var(--blue-2);color:#fff}
.q-item{display:flex;gap:16px;padding:20px 0;border-bottom:1px solid var(--pt-border-soft)}
.q-vote{display:flex;flex-direction:column;align-items:center;gap:4px;flex-shrink:0;width:52px}
.q-vote .vt{width:40px;height:30px;border-radius:7px;border:1px solid var(--pt-border);background:var(--pt-input);color:var(--pt-text-soft);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.12s}
.q-vote .vt:hover{border-color:var(--orange);color:var(--orange)}
.q-vote .vt.on{background:var(--orange);border-color:var(--orange);color:#2A1503}
.q-vote b{color:var(--pt-text);font-size:15px;font-weight:700}
.q-vote span{font-size:11px;color:var(--pt-muted)}
.q-main{flex:1;min-width:0}
.q-main h3{font-size:17px;font-weight:700;color:var(--pt-text);cursor:pointer;line-height:1.45}
.q-main h3:hover{color:var(--orange)}
.q-main .q-ex{color:var(--pt-text-soft);font-size:13.5px;margin:6px 0 10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.q-meta{display:flex;gap:14px;align-items:center;font-size:12.5px;color:var(--pt-muted);flex-wrap:wrap}
.q-meta .qm{display:flex;align-items:center;gap:5px;cursor:pointer}
.q-meta .qm:hover{color:var(--orange)}
.q-meta .mini-av{width:22px;height:22px;border-radius:50%;background:var(--blue-2);color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center}
.answer{display:flex;gap:16px;padding:22px 0;border-bottom:1px solid var(--pt-border-soft)}
.answer .q-main .a-body{color:var(--pt-text-soft);font-size:14.5px;line-height:1.85;white-space:pre-wrap;word-break:break-word}
.sticker{max-width:150px;max-height:150px;display:inline-block;margin:4px;vertical-align:middle}
.stk-picker{display:flex;flex-wrap:wrap;gap:6px;padding:10px;background:var(--pt-input);border:1px solid var(--pt-border);border-radius:10px;margin-top:8px}
.stk-picker button{background:var(--pt-panel);border:1px solid var(--pt-border);border-radius:8px;font-size:22px;width:42px;height:42px;cursor:pointer}
.stk-picker button:hover{border-color:var(--orange);transform:scale(1.08)}
.editor-bar{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}
.editor-bar .eb{background:var(--pt-input);border:1px solid var(--pt-border);color:var(--pt-text-soft);border-radius:7px;padding:6px 12px;font-size:13px;cursor:pointer}
.editor-bar .eb:hover{border-color:var(--orange);color:var(--orange)}

/* ============ 档案 ============ */
.arc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.arc-card{background:var(--pt-panel);border:1px solid var(--pt-border);border-radius:12px;padding:18px;cursor:pointer;transition:.15s;display:flex;gap:14px;align-items:center}
.arc-card:hover{border-color:var(--orange);transform:translateY(-2px)}
.arc-card .av{width:52px;height:52px;border-radius:50%;background:var(--blue-2);color:#fff;font-size:19px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
.arc-card h3{color:var(--pt-text);font-size:15px;font-weight:700}
.arc-card .ac-meta{font-size:12px;color:var(--pt-muted);margin-top:4px}
.dossier .d-row{display:flex;padding:13px 0;border-bottom:1px dashed var(--pt-border);font-size:14px}
.dossier .d-row .dk{width:120px;flex-shrink:0;color:var(--pt-muted);font-weight:500}
.dossier .d-row .dv{color:var(--pt-text-soft);flex:1}
.dossier .d-note{color:var(--pt-text-soft);font-size:14px;line-height:1.9;white-space:pre-wrap;margin-top:14px;background:var(--pt-input);border-left:3px solid var(--pt-accent);padding:14px 16px;border-radius:0 8px 8px 0}
.search-row{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.search-row .field{flex:1;min-width:200px;background:var(--pt-input);border-color:var(--pt-border);color:var(--pt-text)}
.search-row .field::placeholder{color:var(--pt-muted)}
.search-row select.field{width:auto;min-width:130px}

/* ============ 事件时间线（暗） ============ */
.ev-tl{position:relative;padding-left:30px}
.ev-tl::before{content:"";position:absolute;left:9px;top:8px;bottom:8px;width:2px;background:#2A3A7E}
.ev-item{position:relative;padding:0 0 26px;cursor:pointer}
.ev-item::before{content:"";position:absolute;left:-27px;top:6px;width:16px;height:16px;border-radius:50%;background:var(--blue-2);border:3px solid #0C1740;box-shadow:0 0 0 2px #2A3A7E}
.ev-item.hot::before{background:var(--orange);box-shadow:0 0 0 2px var(--orange)}
.ev-item .ey{font-family:var(--mono);font-size:12.5px;color:var(--orange);letter-spacing:1px}
.ev-item h3{color:var(--pt-text);font-size:16px;font-weight:700;margin:3px 0}
.ev-item p{color:var(--pt-text-soft);font-size:13.5px}
.lib-item{background:var(--pt-panel);border:1px solid var(--pt-border);border-radius:10px;padding:18px;margin-bottom:12px;cursor:pointer}
.lib-item:hover{border-color:var(--orange)}
.lib-item h3{color:var(--pt-text);font-size:15.5px;font-weight:700}
.lib-item .lm{font-size:12px;color:var(--pt-muted);margin:5px 0}
.lib-item p{color:var(--pt-text-soft);font-size:13.5px;white-space:pre-wrap;line-height:1.8}

/* ============ 个人空间 / 装修 ============ */
.space-cover{height:180px;border-radius:12px 12px 0 0;position:relative;overflow:hidden;background:linear-gradient(120deg,var(--tpl-a,var(--pt-cover-a)),var(--tpl-b,var(--pt-cover-b)))}
.space-head{display:flex;align-items:flex-end;gap:20px;margin-top:-46px;padding:0 26px;position:relative}
.space-head .av{width:92px;height:92px;border-radius:50%;border:4px solid var(--pt-panel);background:var(--blue-2);color:#fff;font-size:34px;font-weight:700;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}
.space-head .sh-info{padding-bottom:8px}
.space-head h2{color:var(--pt-text);font-size:22px;font-weight:900}
.space-head .zika{display:inline-block;margin-left:10px;font-size:12px;padding:3px 12px;border-radius:4px;font-family:var(--serif);font-weight:600}
.space-head .sh-sub{color:var(--pt-muted);font-size:13px;margin-top:4px}
.space-actions{margin-left:auto;padding-bottom:10px;display:flex;gap:8px}
.tpl-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.tpl-card{border-radius:10px;border:2px solid var(--pt-border);overflow:hidden;cursor:pointer;transition:.12s}
.tpl-card.on{border-color:var(--orange)}
.tpl-card .tc-cover{height:56px;background:linear-gradient(120deg,var(--tpl-a),var(--tpl-b))}
.tpl-card .tc-name{padding:8px 10px;font-size:12.5px;color:var(--pt-text-soft);background:var(--pt-panel)}
.color-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.color-row button{width:34px;height:34px;border-radius:50%;border:2px solid #2A3A7E;cursor:pointer}
.color-row button.on{border-color:#fff}
.friend-card{display:flex;align-items:center;gap:14px;background:var(--pt-panel);border:1px solid var(--pt-border);border-radius:10px;padding:14px 16px;margin-bottom:10px}
.friend-card .av{width:46px;height:46px;border-radius:50%;background:var(--blue-2);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;overflow:hidden}
.friend-card h4{color:var(--pt-text);font-size:15px}
.friend-card p{font-size:12px;color:var(--pt-muted)}
.friend-card .fc-actions{margin-left:auto;display:flex;gap:8px}

/* ============ 通用弹层 / 提示 ============ */
#toast{position:fixed;left:50%;bottom:40px;transform:translateX(-50%);z-index:999;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none}
.toast{background:#0C1740;color:#fff;border:1px solid #2A3A7E;padding:11px 22px;border-radius:10px;font-size:14px;box-shadow:0 10px 30px rgba(0,0,0,.4);animation:tin .25s}
.toast.t-ok{border-color:var(--ok)}.toast.t-err{border-color:var(--danger)}.toast.t-warn{border-color:var(--orange)}
@keyframes tin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.modal-mask{position:fixed;inset:0;background:rgba(6,12,40,.62);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(2px)}
.modal{background:#fff;border-radius:14px;max-width:480px;width:100%;padding:28px;box-shadow:0 30px 70px rgba(0,0,0,.4);max-height:88vh;overflow:auto}
.modal h3{font-size:19px;font-weight:800;margin-bottom:6px}
.modal .m-body{margin:16px 0;color:var(--ink);font-size:14.5px}
.modal .m-foot{display:flex;gap:10px;justify-content:flex;margin-top:8px}
.modal .m-foot .btn{margin-left:auto}
.modal .m-foot .btn:first-child{margin-left:0}
.p-main .modal{color:var(--ink)}
.empty{text-align:center;padding:50px 20px;color:var(--pt-muted)}
.empty .es{font-size:40px;margin-bottom:10px;opacity:.6}
.stat-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.stat-strip .ss{background:var(--pt-panel);border:1px solid var(--pt-border);border-radius:10px;padding:18px;text-align:center}
.stat-strip .ss b{font-size:26px;font-weight:900;color:var(--pt-text);display:block}
.stat-strip .ss span{font-size:12px;color:var(--pt-muted)}

/* ============ 微信式私信（WX IM） ============ */
.wx-im{display:flex;height:calc(100vh - 82px);min-height:480px;border:1px solid var(--pt-border);border-radius:12px;overflow:hidden;background:var(--pt-panel);margin-bottom:20px;box-shadow:var(--pt-shadow)}
.wx-aside{width:300px;flex:0 0 300px;display:flex;flex-direction:column;background:var(--pt-panel);border-right:1px solid var(--pt-border);min-height:0}
.wx-aside-head{display:flex;align-items:center;gap:8px;padding:12px 14px 10px;flex:0 0 auto}
.wx-aside-head h2{font-size:16px;color:var(--pt-text);margin:0;font-weight:700}
.wx-icon-btn{width:30px;height:30px;border-radius:8px;border:0;background:var(--pt-input);color:var(--pt-text-soft);font-size:17px;cursor:pointer;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.wx-icon-btn:hover{background:var(--pt-panel-2);color:var(--pt-text)}
.wx-aside-head .wx-spacer{margin-left:auto;display:flex;gap:6px}
.wx-search{padding:0 12px 10px;flex:0 0 auto}
.wx-search input{width:100%;box-sizing:border-box;background:var(--pt-input);border:1px solid var(--pt-border);border-radius:8px;padding:8px 12px;color:var(--pt-text);font-size:13px;outline:none}
.wx-search input::placeholder{color:var(--pt-muted)}
.wx-search input:focus{border-color:var(--pt-accent)}
.wx-new-row{display:flex;gap:6px;padding:0 12px 10px;flex:0 0 auto}
.wx-new-row select{flex:1;min-width:0;background:var(--pt-input);border:1px solid var(--pt-border);border-radius:8px;padding:7px 8px;color:var(--pt-text);font-size:12.5px}
.wx-new-row .btn{padding:7px 10px}
.wx-list{flex:1;overflow-y:auto;min-height:0;padding:4px 8px 8px}
.wx-item{display:flex;gap:10px;align-items:center;padding:9px 9px;border-radius:10px;cursor:pointer;position:relative}
.wx-item:hover{background:var(--pt-panel-2)}
.wx-item.is-active{background:var(--pt-panel-2)}
.wx-item.is-pinned{background:var(--pt-panel-2)}
.wx-av{width:44px;height:44px;border-radius:8px;background:var(--pt-bubble-them);color:var(--pt-bubble-them-text);font-size:16px;font-weight:700;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;position:relative}
.wx-av img{width:100%;height:100%;object-fit:cover}
.wx-av .chat-unread-badge{position:absolute;top:-6px;right:-6px;border:2px solid var(--pt-panel)}
.wx-copy{flex:1;min-width:0}
.wx-copy h4{font-size:14px;color:var(--pt-text);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}
.wx-copy p{font-size:12px;color:var(--pt-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:3px 0 0}
.wx-meta{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0;align-self:flex-start;padding-top:2px}
.wx-meta time{font-size:10.5px;color:var(--pt-muted)}
.wx-pin-btn{width:24px;height:24px;border:0;background:transparent;color:var(--pt-muted);font-size:14px;cursor:pointer;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}
.wx-item:hover .wx-pin-btn{opacity:1}
.wx-item.is-pinned .wx-pin-btn{opacity:1;color:var(--pt-accent)}
.wx-pin-btn:hover{background:var(--pt-input);color:var(--pt-text)}
.wx-main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--pt-bg)}
.wx-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:var(--pt-muted);padding:20px}
.wx-empty-ic{width:84px;height:84px;border-radius:22px;background:var(--pt-panel);border:1px solid var(--pt-border);display:flex;align-items:center;justify-content:center;font-size:42px}
.wx-empty p{margin:0;font-size:14px}
.wx-head{display:flex;align-items:center;gap:10px;padding:11px 16px;border-bottom:1px solid var(--pt-border);background:var(--pt-panel);flex:0 0 auto;min-height:58px;box-sizing:border-box}
.wx-back{display:none;width:32px;height:32px;border-radius:8px;border:0;background:var(--pt-input);color:var(--pt-text);font-size:20px;cursor:pointer;text-decoration:none;align-items:center;justify-content:center;flex-shrink:0}
.wx-head h3{font-size:15.5px;color:var(--pt-text);margin:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wx-head .wx-sub{font-size:11px;color:var(--pt-muted);margin-top:1px}
.wx-more{margin-left:auto;width:34px;height:34px;border-radius:8px;border:0;background:var(--pt-input);color:var(--pt-text);font-size:17px;cursor:pointer;flex-shrink:0;letter-spacing:1px}
.wx-more:hover{background:var(--pt-panel-2)}
.wx-scroll{flex:1;overflow-y:auto;min-height:0;padding:16px 18px;display:flex;flex-direction:column;gap:4px;background:var(--pt-bg);overscroll-behavior:contain}
.wx-scroll .msg{max-width:66%}
.wx-scroll .msg .m-av{width:38px;height:38px;border-radius:8px}
.wx-scroll .msg .bubble{padding:9px 13px;font-size:14px;line-height:1.6}
.wx-scroll .msg.them .bubble{border-radius:4px 14px 14px 14px}
.wx-scroll .msg.me .bubble{border-radius:14px 4px 14px 14px}
.wx-page-bar{display:flex;align-items:center;justify-content:center;gap:14px;padding:7px 10px;flex:0 0 auto;background:var(--pt-panel);border-top:1px solid var(--pt-border-soft)}
.wx-page-bar button{padding:5px 12px;font-size:12px;min-height:30px}
.wx-page-bar span{font-size:11px;color:var(--pt-muted)}
.wx-input-wrap{flex:0 0 auto;border-top:1px solid var(--pt-border);background:var(--pt-panel);padding:10px 14px 12px}
.wx-input{display:flex;gap:7px;align-items:flex-end}
.wx-input .ib-btn{width:38px;min-width:38px;height:38px;padding:0;border-radius:8px;font-size:17px;justify-content:center;flex-shrink:0}
.wx-input textarea{flex:1;min-height:38px;height:38px;max-height:120px;background:var(--pt-input);border:1px solid var(--pt-border);border-radius:8px;padding:9px 12px;color:var(--pt-text);resize:none;outline:none;font-size:14px;font-family:inherit;box-sizing:border-box}
.wx-input textarea::placeholder{color:var(--pt-muted)}
.wx-input textarea:focus{border-color:var(--pt-accent)}
.wx-input .hold-talk{flex:1;height:38px;border-radius:8px;font-size:14px}
.wx-input #ch-send{height:38px;padding:0 18px;font-size:14px;flex-shrink:0}
.wx-input-wrap .quote-bar{margin-bottom:8px}
/* 设置抽屉 */
.wx-cfg-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:99990;animation:wxfade .18s ease}
.wx-cfg-panel{position:fixed;top:0;right:0;bottom:0;width:330px;max-width:88vw;background:var(--pt-panel,#13215A);z-index:99991;display:flex;flex-direction:column;box-shadow:-8px 0 34px rgba(0,0,0,.35);animation:wxin .22s ease}
@keyframes wxin{from{transform:translateX(100%)}to{transform:translateX(0)}}
@keyframes wxfade{from{opacity:0}to{opacity:1}}
.wx-cfg-head{display:flex;align-items:center;padding:15px 16px;border-bottom:1px solid var(--pt-border);background:var(--pt-topbar);flex:0 0 auto}
.wx-cfg-head h3{margin:0;font-size:16px;color:var(--pt-text)}
.wx-cfg-close{margin-left:auto;width:30px;height:30px;border-radius:8px;border:0;background:var(--pt-input);color:var(--pt-text);font-size:18px;cursor:pointer}
.wx-cfg-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px;scrollbar-width:thin;scrollbar-color:var(--pt-border) transparent}
.wx-cfg-body::-webkit-scrollbar{width:6px}
.wx-cfg-body::-webkit-scrollbar-thumb{background:var(--pt-border);border-radius:999px}
.wx-cfg-section{display:flex;flex-direction:column;gap:9px;width:100%}
.wx-cfg-label{font-size:12px;color:var(--pt-muted);letter-spacing:1px}
.wx-cfg-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wx-cfg-row select,.wx-cfg-row input[type="number"]{background:var(--pt-input);border:1px solid var(--pt-border);color:var(--pt-text);border-radius:8px;padding:8px 10px;font-size:13px;outline:none}
.wx-cfg-row select{flex:1;min-width:120px}
.wx-cfg-row input[type="number"]{width:100px}
.wx-cfg-check{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--pt-text-soft);cursor:pointer}
.wx-cfg-check input{accent-color:var(--pt-accent);width:15px;height:15px}
.wx-cfg-panel .card-only{width:100%;flex-direction:column;gap:9px}
.wx-cfg-actions{display:flex;flex-direction:column;gap:9px;margin-top:2px}
.wx-cfg-actions .btn{width:100%;justify-content:center;min-height:38px}
@media(max-width:768px){
  .wx-im{height:calc(100dvh - var(--mobile-chrome-h,141px) - 22px);min-height:320px;border-radius:0;border:0;margin:0}
  .wx-on-list .wx-main{display:none}
  .wx-on-list .wx-aside{flex:1;width:auto;border-right:0}
  .wx-on-chat .wx-aside{display:none}
  .wx-on-chat .wx-main{flex:1}
  .wx-back{display:inline-flex}
  .wx-scroll{padding:12px 12px}
  .wx-scroll .msg{max-width:78%}
  .wx-scroll .msg .m-av{width:34px;height:34px}
  .wx-scroll .msg .bubble .msg-photo{max-width:min(180px,60vw);max-height:180px}
  .wx-input-wrap{padding:8px 10px 10px}
  .wx-input .ib-btn{width:34px;min-width:34px;height:36px}
  .wx-input textarea{min-height:36px;height:36px;font-size:16px}
  .wx-input .hold-talk{height:36px}
  .wx-input #ch-send{height:36px}
}

/* ============ 私信聊天（旧） ============ */
.chat-list-item{display:flex;gap:14px;align-items:center;padding:14px 10px;border-radius:10px;cursor:pointer}
.chat-list-item:hover{background:#15245C}
.chat-list-item .av{width:46px;height:46px;border-radius:50%;background:var(--blue-2);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}
.chat-list-item h4{color:#fff;font-size:15px;font-weight:600}
.chat-list-item p{font-size:12.5px;color:#8EA0DC;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}
/* 聊天室切换标签 */
.room-tabs-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.room-tab{background:var(--pt-panel);border:1px solid var(--pt-border);color:var(--pt-text-soft);border-radius:9px;padding:8px 16px;font-size:13.5px;cursor:pointer}
.room-tab:hover{border-color:var(--blue-2);color:var(--pt-text)}
.room-tab.on{background:var(--blue-2);border-color:var(--blue-2);color:#fff;font-weight:600}
.room-tab.add{color:var(--orange);border-style:dashed}
.chat-window{display:flex;flex-direction:column;min-height:calc(100vh - 150px)}
.chat-head{display:flex;align-items:center;gap:12px;padding-bottom:16px;border-bottom:1px solid var(--pt-border)}
.chat-head .av{width:44px;height:44px;border-radius:50%;background:var(--blue-2);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden}
.chat-head h3{color:var(--pt-text);font-size:17px}
.chat-head .ch-hint{font-size:12px;color:var(--pt-muted)}
.chat-head .ch-actions{margin-left:auto;display:flex;gap:8px}
.chat-scroll{flex:1;overflow-y:auto;padding:18px 4px;display:flex;flex-direction:column;gap:14px}
.msg{display:flex;gap:10px;align-items:flex-end;max-width:72%}
.msg .m-av{width:32px;height:32px;border-radius:50%;background:var(--blue-2);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;flex-shrink:0}
.msg .bubble{padding:10px 15px;border-radius:16px;font-size:14.5px;line-height:1.7;white-space:pre-wrap;word-break:break-word;cursor:pointer;box-shadow:0 2px 10px rgba(6,12,40,.18)}
.msg .bubble.has-photo{padding:5px}
.msg .bubble .msg-photo{display:block;border-radius:11px;max-width:230px;max-height:230px;cursor:zoom-in}
.msg .bubble .msg-photo+span{display:block;padding:5px 9px 2px}
.inline-img{display:block;max-width:100%;border-radius:8px;margin:8px 0;cursor:zoom-in}
.msg .m-time{font-size:11px;color:var(--pt-muted);flex-shrink:0}
.chat-window .chat-scroll{gap:5px}
.chat-time-row{display:flex;justify-content:center;align-items:center;width:100%;margin:5px 0 -2px;line-height:1}
.chat-time-node{appearance:none;border:0;background:transparent;color:var(--pt-muted);font-size:11px;line-height:1.4;padding:3px 9px;border-radius:10px;cursor:pointer;letter-spacing:.15px}
.chat-time-node:hover{background:var(--pt-input);color:var(--pt-text-soft)}
.msg-content-stack{display:flex;flex-direction:column;gap:4px;min-width:0;max-width:100%}
.msg.money-msg{align-items:flex-end}
.msg-attachment{display:block;max-width:100%;cursor:pointer;background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important}
.chat-system-row{display:flex;justify-content:center;align-items:center;width:100%;margin:0;pointer-events:none}
.money-notice{display:inline-block;padding:3px 9px;color:var(--pt-muted);font-size:11px;line-height:1.45;max-width:100%;overflow-wrap:anywhere;text-align:center}
.msg.them{align-self:flex-start}
.msg.them .bubble{background:var(--pt-bubble-them);color:var(--pt-bubble-them-text);border-bottom-left-radius:5px}
.msg.me{align-self:flex-end;flex-direction:row-reverse}
.msg.me .bubble{background:linear-gradient(135deg,var(--blue-2),var(--blue));color:#fff;border-bottom-right-radius:5px}
.msg .m-del{font-size:11px;color:var(--pt-muted);cursor:pointer;align-self:center;flex-shrink:0}
.msg .m-del:hover{color:#FF9DA0}
.chat-input{display:flex;gap:10px;padding-top:16px;border-top:1px solid var(--pt-border);align-items:flex-end}
.chat-input textarea{flex:1;background:var(--pt-input);border:1px solid var(--pt-border);color:var(--pt-text);border-radius:12px;padding:11px 15px;resize:none;min-height:48px;max-height:140px;outline:none}
.chat-input textarea::placeholder{color:var(--pt-muted)}
.chat-input textarea:focus{border-color:var(--blue-2)}

/* ---- 群聊 ---- */
.msg .m-name{display:block;font-size:11.5px;color:var(--pt-muted);margin-bottom:3px;padding:0 4px}
.msg.me .m-name{display:none}
.msg.recalled{align-self:center;max-width:100%;display:flex;justify-content:center}
.msg.recalled .recall-txt{font-size:12px;color:var(--pt-muted);background:transparent;padding:4px 10px;line-height:1.5;text-align:center}
.portal.theme-day .chat-time-node{color:#7B8493}
.portal.theme-day .chat-time-node:hover{background:#E9EEF4;color:#3E4A59}
.portal.theme-day .money-notice{color:#747F8C}
.portal.theme-classic .chat-time-node{color:#8D785E}
.portal.theme-classic .money-notice{color:#8D785E}
.portal.theme-cyber .chat-time-node{color:#75A990}
.portal.theme-cyber .money-notice{color:#75A990}
/* 引用块 */
.quote-box{display:block;border-left:3px solid var(--orange);background:rgba(232,135,74,.12);border-radius:6px;padding:5px 10px;margin-bottom:7px;font-size:12px;color:var(--pt-text-soft);white-space:normal;max-width:240px;overflow:hidden;text-overflow:ellipsis}
.quote-box b{color:#F0B98F;font-weight:600}
/* 语音条（美化） */
.voice-wrap{display:inline-flex;align-items:center;gap:7px;min-width:108px;padding:1px 0}
.voice-play{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:.15s}
.voice-play:hover{background:rgba(255,255,255,.35)}
.voice-bars{display:flex;align-items:center;gap:2.5px;height:26px}
.voice-bars i{width:3px;background:linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,.45));border-radius:2px}
.voice-len{font-size:12.5px;opacity:.9;flex-shrink:0;font-variant-numeric:tabular-nums}
.voice-txt{display:block;font-size:13px;color:var(--pt-text-soft);margin-top:2px;white-space:normal;line-height:1.45;max-width:32em}
/* 引用预览条（输入框上方） */
.quote-bar{display:flex;align-items:center;gap:10px;background:var(--pt-input);border:1px solid var(--pt-border);border-radius:8px;padding:8px 12px;font-size:13px;color:var(--pt-text-soft);margin-bottom:8px}
.quote-bar b{color:#F0B98F}
.quote-bar .qx{margin-left:auto;cursor:pointer;color:var(--pt-muted);font-size:16px}
/* 输入行工具按钮 */
.ib-btn{height:48px;width:44px;padding:0;justify-content:center;flex-shrink:0;font-size:18px}
.hold-talk{flex:1;height:48px;border-radius:12px;background:var(--pt-input);border:1px solid var(--pt-border);color:var(--pt-text-soft);display:flex;align-items:center;justify-content:center;gap:8px;font-size:15px;user-select:none;-webkit-user-select:none;touch-action:none;cursor:pointer}
.hold-talk.rec{background:#3A1420;border-color:#D0484D;color:#FF9DA0}
/* 长按菜单 */
.msg-menu{position:fixed;z-index:100000;background:var(--pt-panel-2);border:1px solid var(--pt-border);border-radius:10px;padding:6px;box-shadow:0 10px 34px rgba(0,0,0,.45);min-width:120px}
.msg-menu button{display:flex;width:100%;gap:8px;align-items:center;background:none;border:none;color:var(--pt-text-soft);padding:9px 12px;font-size:14px;border-radius:6px;cursor:pointer;text-align:left}
.msg-menu button:hover{background:var(--pt-panel)}
.msg-menu button.danger{color:var(--pt-danger)}
/* 录音浮层 */
.rec-overlay{position:fixed;inset:0;z-index:100001;background:rgba(6,12,38,.72);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px}
.rec-box{background:var(--pt-panel);border:1px solid var(--pt-border);border-radius:18px;padding:34px 46px;display:flex;flex-direction:column;align-items:center;gap:14px}
.rec-mic{width:74px;height:74px;border-radius:50%;background:#D0484D;color:#fff;display:flex;align-items:center;justify-content:center;font-size:32px;animation:recPulse 1.1s infinite}
.rec-timer{font-size:30px;font-weight:700;color:#fff;font-family:var(--mono)}
.rec-tip{font-size:13px;color:#8EA0DC}
@keyframes recPulse{0%,100%{box-shadow:0 0 0 0 rgba(208,72,77,.5)}50%{box-shadow:0 0 0 16px rgba(208,72,77,0)}}
/* 下拉（TA 发言 / 成员） */
.pop{position:absolute;z-index:900;background:var(--pt-panel-2);border:1px solid var(--pt-border);border-radius:10px;padding:6px;box-shadow:0 12px 34px rgba(0,0,0,.45);max-height:280px;overflow-y:auto;min-width:180px}
.pop .pop-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:7px;font-size:13.5px;color:#E0E7FF;cursor:pointer}
.pop .pop-item:hover{background:#26377E}
.pop .pop-item .tag-mini{margin-left:auto;font-size:10px;color:#8EA0DC}
.pop-wrap{position:relative;display:inline-block}
/* 成员管理 */
.mem-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px dashed var(--pt-border);font-size:14px;color:var(--pt-text-soft)}

/* ============ 响应式 ============ */
@media (max-width:980px){
  .g4{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(2,1fr)}
  .arc-grid{grid-template-columns:repeat(2,1fr)}.tpl-grid{grid-template-columns:repeat(2,1fr)}
  .footer .fgrid{grid-template-columns:1fr 1fr}
  .stat-strip{grid-template-columns:repeat(2,1fr)}
  .hero h1{font-size:30px}
}
@media (max-width:680px){
  .header .wrap{gap:10px;height:64px;flex-wrap:wrap}
  .logo img{height:36px}.logo .logo-txt{font-size:16px}
  .nav{gap:0;width:100%;overflow-x:auto}
  .nav a{padding:8px 11px;font-size:13.5px;white-space:nowrap}
  .g4,.g3,.g2{grid-template-columns:1fr}
  .arc-grid,.tpl-grid{grid-template-columns:1fr}
  .footer .fgrid{grid-template-columns:1fr}
  .hero .wrap{padding:44px 16px 52px}
  .hero h1{font-size:25px}
  .track-box{flex-direction:column}
  .track-box .btn{width:100%}
  .sidebar{display:none}
  .portal-body{flex-direction:column}
  .p-main{padding:18px 14px}
  .user-chip .un{display:none}
  .topbar .tb-r{gap:10px}
  .space-cover{height:130px}
  /* 聊天 / 聊天室 */
  .chat-window{min-height:calc(100vh - 120px)}
  .chat-head{flex-wrap:wrap;gap:9px}
  .chat-head .ch-hint{display:none}
  .chat-head .ch-actions{gap:6px;width:100%;margin-left:0}
  .chat-head .ch-actions .btn{padding:7px 10px;font-size:12.5px}
  .chat-scroll{padding:12px 2px}
  .msg{max-width:86%;gap:7px}
  .msg .bubble{font-size:14px;padding:9px 12px}
  .msg .bubble .msg-photo{max-width:170px;max-height:170px}
  .quote-box{max-width:190px}
  .voice-bars i{width:2px}
  .voice-wrap{min-width:120px;gap:6px}
  .chat-input{gap:6px;flex-wrap:nowrap}
  .ib-btn{width:38px;height:42px;font-size:16px}
  .chat-input textarea{min-height:42px;padding:10px 12px}
  .chat-input #ch-send,.chat-input #rm-send{padding:0 14px;height:42px}
  .hold-talk{height:42px;font-size:14px}
}

/* ============ 移动端适配增强（不改动业务逻辑） ============ */
html{width:100%;overflow-x:clip;scroll-padding-top:72px}
body{min-width:320px;width:100%;overflow-x:clip}
#app{min-width:0;width:100%;overflow-wrap:anywhere}
.wrap{width:100%;min-width:0}
button,a,input,textarea,select{max-width:100%}
input,textarea,select{min-width:0}
.grid>* ,.outlet-grid>* ,.arc-grid>* ,.tpl-grid>*{min-width:0}
.card-box,.svc-card,.p-panel,.lib-item,.arc-card,.friend-card{overflow-wrap:anywhere}
pre,code{white-space:pre-wrap;overflow-wrap:anywhere}
table{max-width:100%;width:100%;border-collapse:collapse}
svg{max-width:100%}
.modal-mask{overflow-y:auto;-webkit-overflow-scrolling:touch}
.modal{min-width:0}
.chat-scroll,.p-main,.portal-body{min-width:0}
.q-main,.dossier .d-row .dv,.news-item>div:last-child{min-width:0;overflow-wrap:anywhere}
@media (max-width:980px){
  .wrap{padding-left:18px;padding-right:18px}
  .header .wrap{gap:14px}
  .nav a{padding:9px 10px}
  .hero .wrap{padding-top:52px;padding-bottom:58px}
  .svc-card{padding:24px 20px}
  .p-main{padding:22px 20px}
  .p-panel{padding:20px}
  .arc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tpl-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .footer .fgrid{gap:22px}
}
@media (max-width:680px){
  html,body{font-size:14px}
  .wrap{padding-left:15px;padding-right:15px}
  .topbar .wrap{height:auto;min-height:34px;padding-top:7px;padding-bottom:7px;gap:8px;align-items:flex-start;flex-direction:column}
  .topbar .tb-r{display:flex;flex-wrap:wrap;gap:5px 12px}
  .header{position:sticky;top:0}
  .header .wrap{height:auto;min-height:62px;flex-wrap:wrap;gap:0;padding-top:9px;padding-bottom:8px}
  .logo{gap:8px;min-width:0;max-width:100%}
  .logo img{height:34px;max-width:42px;object-fit:contain}
  .logo .logo-txt{font-size:16px;letter-spacing:.5px}
  .logo .logo-txt small{font-size:9px;letter-spacing:1.5px}
  .nav{order:2;display:flex;flex:0 0 calc(100% + 30px);width:calc(100% + 30px);margin:8px -15px -8px;padding:4px 10px 7px;gap:3px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
  .nav a{flex:0 0 auto;padding:8px 11px;font-size:13px}
  .nav .emp-entry{flex:0 0 auto}
  .hero .wrap{padding:34px 15px 40px}
  .hero h1{font-size:clamp(23px,6vw,29px);letter-spacing:.5px;overflow-wrap:anywhere}
  .hero p{font-size:14px;margin-top:10px}
  .hero::after{right:-180px;top:20px;opacity:.22}
  .track-box{margin-top:22px;padding:7px;gap:7px;width:100%}
  .track-box input{width:100%;min-width:0;padding:13px 12px;font-size:16px}
  .track-box .btn{padding:12px 16px;font-size:15px}
  .hero-stats{gap:18px 25px;margin-top:26px}
  .hero-stats .s b{font-size:23px}
  .hero-stats .s span{font-size:12px}
  .section{padding:36px 0}
  .section h2{font-size:22px;letter-spacing:.3px}
  .section .sub{font-size:13px;margin:0 auto 24px;max-width:100%}
  .g4,.g3,.g2,.outlet-grid,.arc-grid,.tpl-grid{grid-template-columns:minmax(0,1fr)}
  .grid{gap:14px}
  .svc-card{padding:20px}
  .svc-card:hover,.arc-card:hover{transform:none}
  .news-item{gap:11px;padding:14px 0}
  .news-item .nd{width:52px;flex:0 0 52px}
  .news-item .nd b{font-size:19px}
  .news-item h3{font-size:14px;line-height:1.55}
  .news-item p{font-size:12.5px}
  .site-tabs,.forum-tabs{gap:7px}
  .site-tab{padding:8px 12px;font-size:13px}
  .region-hq{padding:12px;font-size:13px}
  .band{padding:34px 15px}
  .band h2{font-size:21px}
  .band p{font-size:13px}
  .footer{padding:32px 0 20px}
  .footer .fgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 16px}
  .footer .fgrid>div:first-child{grid-column:1/-1}
  .page-head{padding:28px 0}
  .page-head h1{font-size:24px}
  .page-head p{font-size:13px}
  .card-box{padding:16px}
  .btn{padding:10px 14px;font-size:14px;justify-content:center}
  .btn-sm{padding:7px 10px;font-size:12px}
  .search-row{gap:8px}
  .search-row .field,.search-row select.field{width:100%;min-width:0}
  .stat-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .stat-strip .ss{padding:13px 8px}
  .stat-strip .ss b{font-size:22px}
  .portal-top{height:auto;min-height:58px;padding:9px 12px;gap:8px;flex-wrap:wrap}
  .portal-top .p-logo{font-size:13px;letter-spacing:.5px;gap:7px;min-width:0;flex:1}
  .portal-top .p-logo small{display:none}
  .portal-top .p-logo .mk{width:30px;height:30px;flex:0 0 30px}
  .portal-top .user-chip{margin-left:0;gap:6px}
  .user-chip .av{width:30px;height:30px}
  .portal-top #p-logout{font-size:12px;padding:6px 9px;white-space:nowrap}
  .portal-top .theme-switch{order:3;flex:0 0 auto}
  .portal-top .theme-switch button{padding:5px 8px;font-size:11px}
  .room-tabs-bar{gap:6px;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}
  .room-tabs-bar .room-tab{flex:0 0 auto}
  .portal-body{display:block;min-height:0}
  .nav-wrap{display:block;position:sticky;top:0;z-index:30;background:var(--pt-sidebar)}
  .nav-wrap::after{content:"";position:absolute;top:0;right:0;bottom:0;width:26px;pointer-events:none;background:linear-gradient(to right,transparent,var(--pt-sidebar));opacity:0;transition:opacity .2s}
  .nav-wrap.nav-has-more::after{opacity:1}
  .sidebar{display:flex;position:static;width:100%;padding:8px;gap:5px;overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid #1E2D6B;white-space:nowrap;-webkit-overflow-scrolling:touch;box-shadow:0 3px 10px rgba(0,0,0,.18)}
  .sidebar .sd-group{display:none}
  .side-item{flex:0 0 auto;margin:0;padding:9px 11px;font-size:12.5px;white-space:nowrap}
  .side-item .lock{margin-left:3px}
  .p-main{padding:14px 12px;min-width:0}
  .p-panel{padding:15px 13px;border-radius:10px;margin-bottom:14px}
  .p-panel h2{font-size:17px}
  .p-panel .ph-sub{font-size:12px;margin-bottom:13px}
  .p-crumb{font-size:12px;overflow-wrap:anywhere}
  .q-item,.answer{gap:10px;padding:15px 0}
  .q-vote{width:36px}
  .q-vote .vt{width:32px;height:28px}
  .q-main h3{font-size:15px}
  .q-main .q-ex{font-size:12.5px}
  .q-meta{gap:8px;font-size:11.5px}
  .dossier .d-row{gap:10px;font-size:13px}
  .dossier .d-row .dk{width:86px;flex:0 0 86px}
  .space-cover{height:105px}
  .space-head{align-items:flex-start;flex-wrap:wrap;gap:10px;margin-top:-30px;padding:0 12px}
  .space-head .av{width:62px;height:62px;font-size:24px;border-width:3px}
  .space-head .sh-info{padding:5px 0 0;min-width:0;flex:1}
  .space-head h2{font-size:18px}
  .space-head .zika{margin-left:0;margin-top:4px}
  .space-head .sh-sub{font-size:12px}
  .space-actions{width:100%;margin-left:0;padding:0;flex-wrap:wrap}
  .friend-card{padding:11px;gap:9px;flex-wrap:wrap}
  .friend-card .fc-actions{margin-left:0;width:100%;flex-wrap:wrap}
  .chat-window{min-height:calc(100dvh - 190px);min-height:calc(100vh - 190px)}
  .chat-head{align-items:flex-start}
  .chat-head h3{font-size:15px}
  .chat-head .ch-actions{flex-wrap:wrap}
  .chat-scroll{min-height:180px;max-height:55dvh;overflow-y:auto}
  .msg{max-width:94%;min-width:0}
  .msg .bubble{max-width:100%;overflow-wrap:anywhere}
  .msg .bubble .msg-photo{max-width:min(170px,55vw);max-height:170px}
  .quote-box{max-width:min(190px,52vw)}
  .chat-input{align-items:stretch}
  .chat-input textarea{width:100%;min-width:0;flex:1}
  .ib-btn{width:36px;flex:0 0 36px}
  .hold-talk{min-width:0}
  .voice-wrap{min-width:0;max-width:100%}
  .rec-box{width:calc(100% - 32px);padding:26px 18px}
  .modal-mask{padding:10px;align-items:flex-end}
  .modal{width:100%;max-width:100%;padding:20px 16px;border-radius:14px 14px 10px 10px;max-height:88dvh;max-height:88vh}
  .modal .m-foot{flex-wrap:wrap}
  .modal .m-foot .btn{flex:1;margin-left:0}
  #toast{width:calc(100% - 28px);bottom:16px}
  .toast{max-width:100%;text-align:center;padding:10px 14px}
}
@media (max-width:380px){
  .wrap{padding-left:12px;padding-right:12px}
  .logo .logo-txt{font-size:14px}
  .nav{flex-basis:calc(100% + 24px);width:calc(100% + 24px);margin-left:-12px;margin-right:-12px}
  .hero h1{font-size:22px}
  .hero-stats{gap:14px 18px}
  .footer .fgrid{grid-template-columns:1fr}
  .footer .fgrid>div:first-child{grid-column:auto}
  .portal-top{padding:8px}
  .portal-top .p-logo{font-size:12px}
  .p-main{padding:10px 8px}
  .p-panel{padding:12px 10px}
  .q-item,.answer{gap:7px}
  .q-vote{width:30px}
  .q-vote .vt{width:28px}
}



/* ============ 移动端溢出与弹出层兜底修正 ============ */
html, body {
  max-width: 100%;
  overscroll-behavior-x: none;
}
body { overflow-x: clip; }
#app, .portal, .portal-body, .p-main, .p-panel, .card-box { min-width: 0; }
img, video, canvas, iframe { max-width: 100%; }
button, input, textarea, select { min-width: 0; }
select, select.field { max-width: 100%; }

/* 自定义下拉和长按菜单始终限制在可视区域内 */
.pop {
  box-sizing: border-box;
  min-width: min(180px, calc(100vw - 16px));
  max-width: calc(100vw - 16px);
  max-height: min(280px, calc(100dvh - 24px));
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
.pop .pop-item { min-width: 0; }
.pop .pop-name { min-width: 0; flex: 1; overflow-wrap: anywhere; }
.msg-menu {
  box-sizing: border-box;
  max-width: calc(100vw - 16px);
  max-height: calc(100dvh - 16px);
  overflow-y: auto;
  overscroll-behavior: contain;
}
.modal-mask {
  box-sizing: border-box;
  padding-top: max(8px, env(safe-area-inset-top));
  padding-right: max(8px, env(safe-area-inset-right));
  padding-bottom: max(8px, env(safe-area-inset-bottom));
  padding-left: max(8px, env(safe-area-inset-left));
}
.modal {
  box-sizing: border-box;
  min-width: 0;
  max-width: min(480px, 100%);
  max-height: calc(100dvh - 24px);
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 680px) {
  .wanted-grid{grid-template-columns:minmax(0,1fr)}
  html, body { width: 100%; }
  .wrap { min-width: 0; }
  .header .wrap { min-width: 0; }
  .nav, .sidebar { scrollbar-width: none; }
  .nav::-webkit-scrollbar, .sidebar::-webkit-scrollbar { display: none; }
  .hero, .section, .band, .footer, .portal, .portal-top, .portal-body, .p-main { min-width: 0; max-width: 100%; }
  .portal-top .p-logo { overflow-wrap: anywhere; }
  .p-main > *, .p-panel > *, .card-box > * { min-width: 0; max-width: 100%; }
  .search-row { min-width: 0; }
  .search-row .field, .search-row select.field { width: 100%; min-width: 0; max-width: 100%; }
  .field { max-width: 100%; }
  .dossier .d-row { min-width: 0; }
  .dossier .d-row .dv { min-width: 0; overflow-wrap: anywhere; }
  .stat-strip .ss { min-width: 0; }
  .footer a, .q-main h3, .q-main p, .lib-item h3, .lib-item p { overflow-wrap: anywhere; }
  .msg-menu button { min-height: 42px; }
  .pop .pop-item { min-height: 42px; }
  .modal-mask { align-items: flex-end; }
  .modal {
    width: 100%;
    max-width: 100%;
    max-height: calc(100dvh - max(16px, env(safe-area-inset-top)) - max(8px, env(safe-area-inset-bottom)));
    padding: 18px 14px;
    border-radius: 14px 14px 10px 10px;
  }
  .modal .m-foot { gap: 8px; }
  .modal .m-foot .btn { min-width: 0; white-space: normal; }
  table { display: block; overflow-x: auto; overscroll-behavior-x: contain; }
}

@media (max-width: 380px) {
  .topbar .tb-r { min-width: 0; }
  .hero-stats { flex-wrap: wrap; }
  .portal-top #p-logout { max-width: 100%; }
  .friend-card .fc-actions .btn { white-space: normal; }
  .modal .m-foot { flex-wrap: wrap; }
  .modal .m-foot .btn { flex: 1 1 auto; }
}



/* ============ 论坛赞同按钮：桌面端清晰、触屏端易点 ============ */
.q-item { align-items:flex-start; }
.q-vote { display:flex; flex-direction:column; align-items:center; gap:6px; flex-shrink:0; width:64px; }
.q-vote .vt {
  box-sizing:border-box; width:48px; min-height:44px; padding:7px 6px;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  border:1px solid #2A3A7E; border-radius:11px; background:#16255F; color:#B9C6F2;
  cursor:pointer; touch-action:manipulation; -webkit-tap-highlight-color:transparent; user-select:none;
  transition:background .15s,border-color .15s,color .15s,transform .15s;
}
.q-vote .vt .vote-arrow { font-size:17px; line-height:1; }
.q-vote .vt .vote-label { font-size:11px; line-height:1.1; white-space:nowrap; }
.q-vote .vt.on { background:var(--orange); border-color:var(--orange); color:#2A1503; }
.q-vote .vt:focus-visible { outline:3px solid rgba(232,135,74,.45); outline-offset:2px; }
.q-vote .vote-count { color:var(--pt-text); font-size:15px; line-height:1.2; font-weight:800; text-align:center; font-variant-numeric:tabular-nums; }
.q-vote .vote-caption { color:#8EA0DC; font-size:11px; }
.q-vote-detail { width:auto; flex-direction:row; justify-content:flex-start; align-items:center; gap:10px; margin-top:20px; }
.q-vote-detail .vt { width:auto; min-width:108px; min-height:44px; padding:0 16px; flex-direction:row; gap:8px; border-radius:999px; }
.q-vote-detail .vt .vote-arrow { font-size:18px; }
.q-vote-detail .vt .vote-label { font-size:14px; font-weight:600; }
.q-vote-detail .vote-count { min-width:18px; font-size:17px; }
.q-vote-answer { width:48px; }
.q-vote-answer .vt { width:44px; min-height:44px; flex-direction:row; padding:0; border-radius:12px; }
.q-vote-answer .vt .vote-arrow { font-size:17px; }
@media (hover:hover) and (pointer:fine) {
  .q-vote .vt:hover { border-color:var(--orange); color:var(--orange); transform:translateY(-1px); }
  .q-vote .vt.on:hover { color:#2A1503; background:#F19A5C; }
}
@media (max-width:680px) {
  .q-item { gap:10px; }
  .q-item .q-vote-list { width:64px; flex:0 0 64px; padding-top:2px; gap:5px; }
  .q-item .q-vote-list .vt { width:64px; min-height:44px; flex-direction:row; gap:6px; padding:0 8px; border-radius:12px; }
  .q-item .q-vote-list .vt .vote-arrow { font-size:16px; }
  .q-item .q-vote-list .vt .vote-label { font-size:12px; }
  .q-vote-detail { flex-wrap:wrap; gap:9px; }
  .q-vote-detail .vt { min-width:104px; }
  .q-vote-answer { width:42px; flex:0 0 42px; }
  .q-vote-answer .vt { width:42px; min-height:44px; }
  .q-vote .vote-count { font-size:14px; }
  .q-main { min-width:0; }
}
@media (max-width:380px) {
  .q-item { gap:7px; }
  .q-item .q-vote-list { width:58px; flex-basis:58px; }
  .q-item .q-vote-list .vt { width:58px; padding:0 5px; }
  .q-item .q-vote-list .vt .vote-label { font-size:11px; }
  .q-vote-detail .vt { min-width:96px; padding:0 12px; }
}

/* ============ 员工 / 管理员专属名片 ============ */
.staff-card-preview {
  position:relative; overflow:hidden; border-radius:16px; padding:24px;
  border:1px solid #35458E; background:linear-gradient(135deg,#17265F 0%,#101B48 58%,#263A86 100%);
  box-shadow:0 16px 38px rgba(0,0,0,.2); margin-bottom:18px;
}
.staff-card-preview::after {
  content:""; position:absolute; width:250px; height:250px; right:-105px; top:-120px;
  border:1px solid rgba(232,135,74,.25); border-radius:50%; box-shadow:0 0 0 24px rgba(232,135,74,.035),0 0 0 48px rgba(232,135,74,.025); pointer-events:none;
}
.staff-card-top { position:relative; z-index:1; display:flex; align-items:center; gap:12px; color:#fff; padding-bottom:18px; border-bottom:1px solid rgba(175,192,255,.18); }
.staff-card-top .staff-emblem { width:42px; height:42px; display:flex; align-items:center; justify-content:center; border-radius:11px; color:#fff; background:var(--blue-2); flex:0 0 42px; }
.staff-card-top .staff-emblem svg { width:23px; height:23px; }
.staff-card-brand { font-size:15px; font-weight:800; letter-spacing:.5px; }
.staff-card-brand small { display:block; margin-top:3px; color:#8EA0DC; font-size:10px; font-weight:500; letter-spacing:1.3px; }
.staff-card-top .lvl-badge { margin-left:auto; white-space:nowrap; }
.staff-card-hero { position:relative; z-index:1; display:flex; align-items:center; gap:16px; padding:22px 0 18px; }
.staff-card-avatar { width:68px; height:68px; flex:0 0 68px; border-radius:16px; display:flex; align-items:center; justify-content:center; color:#fff; background:linear-gradient(145deg,#E8874A,#B96535); font-size:27px; font-weight:900; box-shadow:0 8px 20px rgba(0,0,0,.18); }
.staff-card-eyebrow { display:block; color:#E7A675; font:600 10px var(--mono); letter-spacing:1.6px; margin-bottom:4px; }
.staff-card-hero h3 { color:#fff; font-size:25px; line-height:1.35; overflow-wrap:anywhere; }
.staff-card-hero p { color:#B9C6F2; font-size:13px; margin-top:4px; overflow-wrap:anywhere; }
.staff-card-grid { position:relative; z-index:1; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.staff-card-item { min-width:0; padding:12px 13px; border-radius:9px; background:rgba(4,12,43,.35); border:1px solid rgba(151,171,239,.12); }
.staff-card-item span { display:block; color:#8EA0DC; font-size:11px; margin-bottom:5px; }
.staff-card-item b { display:block; color:#F0F3FF; font-size:13.5px; font-weight:600; overflow-wrap:anywhere; white-space:pre-wrap; }
.staff-card-note { position:relative; z-index:1; margin-top:12px; padding:12px 14px; background:rgba(232,135,74,.09); border-left:3px solid var(--orange); border-radius:0 8px 8px 0; color:#D6DEFA; font-size:13px; line-height:1.8; white-space:pre-wrap; overflow-wrap:anywhere; }
.staff-card-note strong { display:block; color:#E7A675; font-size:11px; margin-bottom:3px; }
.staff-card-edit-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:16px; }
.staff-card-edit-grid .wide { grid-column:1/-1; }
.staff-card-edit-grid .field { background:#0E1B50; border-color:#243378; color:#DCE4FF; }
.staff-card-edit-grid .field::placeholder { color:#6E7FBE; }
.staff-card-hint { color:#8EA0DC; font-size:12px; line-height:1.7; margin-top:12px; }
@media (max-width:680px) {
  .staff-card-preview { padding:16px 13px; border-radius:12px; }
  .staff-card-top { gap:9px; padding-bottom:14px; }
  .staff-card-top .staff-emblem { width:36px; height:36px; flex-basis:36px; }
  .staff-card-brand { font-size:13px; }
  .staff-card-brand small { font-size:8px; letter-spacing:.8px; }
  .staff-card-top .lvl-badge { font-size:10px; padding:3px 7px; }
  .staff-card-hero { gap:12px; padding:17px 0 14px; }
  .staff-card-avatar { width:56px; height:56px; flex-basis:56px; border-radius:13px; font-size:23px; }
  .staff-card-hero h3 { font-size:21px; }
  .staff-card-hero p { font-size:12px; }
  .staff-card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .staff-card-item { padding:10px; }
  .staff-card-item b { font-size:13px; }
  .staff-card-edit-grid { grid-template-columns:minmax(0,1fr); }
  .staff-card-edit-grid .wide { grid-column:auto; }
}

/* ============ 模式切换 / 字卡 / 红包 / 抽签 / OA / 关系树 ============ */
.mode-switch{display:inline-flex;background:#0E1B50;border:1px solid #243378;border-radius:8px;overflow:hidden}
.mode-switch button{border:0;background:transparent;color:#9FB0E0;padding:6px 12px;font-size:12.5px;cursor:pointer}
.mode-switch button.on{background:var(--orange);color:#fff}
.card-cfg{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.card-cfg select{background:#0E1B50;border:1px solid #243378;color:#fff;border-radius:6px;padding:5px 8px;font-size:12.5px}
.card-cfg label{display:flex;align-items:center;gap:4px;color:#9FB0E0;font-size:12.5px}
.card-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.card-list{display:flex;flex-direction:column;gap:8px;max-height:280px;overflow:auto}
.card-item{display:flex;gap:8px;align-items:center;background:var(--pt-panel-2);border:1px solid var(--pt-border);border-radius:8px;padding:8px}
.card-item img{width:42px;height:42px;object-fit:cover;border-radius:6px}
.card-item .ci-body{flex:1;min-width:0}
.card-item .ci-body p{font-size:13px;color:var(--pt-text);margin:0;word-break:break-word}
.card-item .ci-combo{font-size:11.5px;color:var(--pt-muted);margin-top:3px}
.card-item button{border:0;background:transparent;color:var(--pt-danger);cursor:pointer;font-size:13px;padding:4px}
/* 仿微信红包与转账卡片：整张卡可点击，不再使用普通文字框 */
.money-bubble{display:inline-block;min-width:218px;max-width:min(290px,calc(100vw - 110px));vertical-align:top}
.redpack-bub,.transfer-bub{width:100%;display:flex;align-items:center;gap:11px;text-align:left;border:0;border-radius:5px;padding:12px 13px;cursor:pointer;position:relative;overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,.08);transition:filter .15s,transform .15s}
.redpack-bub{background:#F39A42;color:#fff;min-height:76px}
.redpack-bub:hover,.transfer-bub:hover{filter:brightness(1.04);transform:translateY(-1px)}
.redpack-bub::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:rgba(255,255,255,.22)}
.redpack-bub .rp-ic{width:42px;height:42px;flex:0 0 42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:21px;font-weight:800;color:#F39A42;background:#FFF3D9;border:2px solid rgba(255,255,255,.55)}
.redpack-bub .rp-txt,.transfer-bub .tf-txt{min-width:0;flex:1}
.redpack-bub .rp-txt b{display:block;font-size:14px;font-weight:650;line-height:1.4;white-space:normal;overflow-wrap:anywhere}
.redpack-bub .rp-txt small{display:block;margin-top:4px;font-size:11px;color:rgba(255,255,255,.88)}
.rp-chevron,.tf-chevron{font-size:11px;white-space:nowrap;opacity:.9}
.redpack-bub.is-opened{background:#D8A66B}
.redpack-open{display:block;font-size:11px;color:var(--pt-muted);padding:5px 2px 0}
.transfer-bub{background:#F2F3F5;color:#202124;min-height:76px}
.transfer-bub .tf-ic{width:42px;height:42px;flex:0 0 42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:21px;color:#fff;background:#09A95B;font-weight:700}
.transfer-bub .tf-txt b{font-size:21px;line-height:1.25;display:block;font-weight:600;font-variant-numeric:tabular-nums;color:#202124}
.transfer-bub .tf-txt small{display:block;margin-top:4px;font-size:11px;color:#73777D}
.transfer-bub.is-received{background:#F2F3F5!important}
.transfer-bub.is-received .tf-ic{background:#7ABF91}
.transfer-bub.is-returned{background:#F2F3F5!important;color:#606873}
.transfer-bub.is-returned .tf-ic{background:#9BA3AD}
.me .redpack-bub{background:#F39A42}
.me .transfer-bub{background:#F2F3F5!important;color:#202124}
.money-detail-mask{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.58);display:flex;align-items:center;justify-content:center;padding:18px}
.money-detail{position:relative;width:min(360px,100%);min-height:410px;border-radius:12px;overflow:hidden;display:flex;flex-direction:column;align-items:center;text-align:center;padding:26px 24px 18px;box-shadow:0 20px 70px rgba(0,0,0,.3)}
.money-detail-red{background:linear-gradient(160deg,#EFA04D 0%,#E98B36 62%,#D9782D 100%);color:#fff}
.money-detail-transfer{background:#F7F8FA;color:#202124}
.money-detail-close{position:absolute;left:12px;top:8px;border:0;background:transparent;color:inherit;font-size:27px;line-height:1;padding:4px 8px;opacity:.8}
.money-detail-brand{font-size:13px;letter-spacing:1px;opacity:.9;margin-top:8px}
.money-detail-icon{margin-top:28px;width:66px;height:66px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:800;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.5)}
.money-detail-transfer .money-detail-icon{background:#09A95B;color:#fff;border:0}
.money-detail-title{font-size:17px;font-weight:650;margin-top:15px;line-height:1.5}
.money-detail-note{font-size:12px;opacity:.85;margin-top:5px;max-width:100%;overflow-wrap:anywhere}
.money-detail-amount{font-size:36px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:22px;line-height:1.2}
.money-detail-status{font-size:12px;opacity:.85;margin-top:8px}
.money-detail-action{margin-top:24px;width:82px;height:82px;border-radius:50%;border:1px solid rgba(255,255,255,.7);background:#FFF4D6;color:#B9681D;font-size:22px;font-weight:800;box-shadow:0 4px 14px rgba(112,51,0,.16)}
.money-detail-transfer .money-detail-action{width:auto;height:auto;border-radius:8px;padding:12px 36px;background:#09A95B;color:white;border:0;font-size:15px}
.money-detail-done{margin-top:22px;padding:8px 18px;border-radius:20px;background:rgba(255,255,255,.2);font-size:13px}
.money-detail-transfer .money-detail-done{background:#DDF2E3;color:#168044}
.money-detail-foot{font-size:10px;opacity:.7;margin-top:auto;padding-top:26px;letter-spacing:1px}
/* 抽签 */
.div-wrap{max-width:560px;margin:0 auto;text-align:center}
.div-stage{background:var(--pt-panel-2);border:1px solid var(--pt-border);border-radius:16px;padding:34px 24px}
.div-sticks{display:flex;justify-content:center;gap:6px;height:150px;align-items:flex-end;margin-bottom:18px}
.div-sticks i{width:13px;background:linear-gradient(#D8B15E,#A8843A);border-radius:3px 3px 0 0}
.div-jian{font-size:15px;color:#E8C87A;letter-spacing:3px;margin-bottom:6px}
.div-grade{font-size:30px;font-weight:700;margin:8px 0}
.div-poem{font-family:'Noto Serif SC',serif;font-size:16px;color:var(--pt-text);line-height:1.9;white-space:pre-line;margin:12px 0}
.div-mean{font-size:13.5px;color:var(--pt-text-soft);line-height:1.9;white-space:pre-line;text-align:left;background:var(--pt-panel);border:1px solid var(--pt-border);border-radius:10px;padding:14px;margin-top:12px}
/* OA */
.oa-tabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.oa-tabs button{border:1px solid var(--pt-border);background:var(--pt-input);color:var(--pt-text-soft);border-radius:8px;padding:8px 14px;font-size:13px;cursor:pointer}
.oa-tabs button.on{background:var(--blue-2);color:#fff;border-color:var(--blue-2)}
.oa-item{border:1px solid var(--pt-border);border-radius:10px;padding:14px;margin-bottom:12px;background:var(--pt-panel)}
.oa-item .oa-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.oa-item h4{font-size:15px;color:var(--pt-text);margin:0}
.oa-st{font-size:12px;padding:3px 10px;border-radius:20px}
.oa-st.pending{background:#3A2E10;color:#E8C87A}
.oa-st.approved{background:#123A2A;color:#5BD6A0}
.oa-st.rejected{background:#3E1620;color:#FF8FA0}
.oa-item p{font-size:13px;color:var(--pt-text-soft);line-height:1.8;margin:4px 0;white-space:pre-line}
.oa-item .oa-meta{font-size:12px;color:var(--pt-muted)}
.oa-actions{display:flex;gap:8px;margin-top:10px}
/* 关系树 */
.rel-tree{display:flex;flex-direction:column;align-items:center;margin:18px 0}
.rel-center{background:var(--blue-2);color:#fff;border-radius:10px;padding:10px 20px;font-weight:600;font-size:15px}
.rel-branches{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:18px;max-width:680px}
.rel-node{background:var(--pt-panel-2);border:1px solid var(--pt-border);border-radius:10px;padding:10px 14px;min-width:120px;text-align:center}
.rel-node .rn-rel{font-size:11.5px;color:var(--orange);margin-bottom:3px}
.rel-node .rn-name{font-size:14px;color:var(--pt-text);font-weight:600}
.rel-node .rn-note{font-size:11.5px;color:var(--pt-muted);margin-top:3px}
.rel-node .rn-del{font-size:11px;color:var(--pt-danger);cursor:pointer;margin-top:4px;display:inline-block}
.rel-add{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:14px}
.rel-add .field{width:auto;min-width:120px}

/* Portal component palette fallbacks */
.portal .portal-notice-text{color:var(--pt-text-soft);font-size:14px;white-space:pre-wrap;background:var(--pt-input);border:1px solid var(--pt-border);border-radius:8px;padding:14px;min-height:50px}

.portal .field{background:var(--pt-input);border-color:var(--pt-border);color:var(--pt-text)}
.portal .field::placeholder{color:var(--pt-muted);opacity:1}

/* ============ 主题：日间 ============ */
.portal.theme-day{
  --pt-bg:#EEF1F8;--pt-topbar:#FFFFFF;--pt-sidebar:#FFFFFF;
  --pt-panel:#FFFFFF;--pt-input:#F2F4FA;--pt-border:#DDE3F0;
  --pt-border-soft:#E6EAF4;--pt-text:#1B2450;--pt-text-soft:#3A456E;
  --pt-muted:#7A86A8;--pt-bubble-them:#FFFFFF;--pt-bubble-them-text:#2A3360;
  --pt-glow:rgba(46,71,184,.10);--pt-panel-2:#F0F3FA;--pt-accent:#2E47B8;--pt-accent-text:#FFFFFF;--pt-ok:#237A52;--pt-warn:#A85B16;--pt-danger:#B4232C;}
.portal.theme-day .sidebar{box-shadow:1px 0 0 #E6EAF4}
.portal.theme-day .side-item:hover{background:#EEF1FB}
.portal.theme-day .msg .bubble{box-shadow:0 2px 10px rgba(40,55,110,.12)}
.portal.theme-day .msg.them .bubble{border:1px solid #E2E8F6}
.portal.theme-day .msg .m-time{color:#9AA5C4}
.portal.theme-day .div-stage{background:linear-gradient(160deg,#FFFFFF,#F3F5FC);border-color:#DDE3F0}
.portal.theme-day .div-poem{color:#2A3360}
.portal.theme-day .div-mean{background:#F2F4FA;color:#3A456E}
.portal.theme-day .oa-tabs button{background:#F2F4FA;border-color:#DDE3F0;color:#5A6488}
.portal.theme-day .oa-item{background:#F7F9FE;border-color:#E2E8F6}
.portal.theme-day .oa-item h4{color:#1B2450}
.portal.theme-day .oa-item p{color:#3A456E}
.portal.theme-day .rel-node{background:#F7F9FE;border-color:#DDE3F0}
.portal.theme-day .rel-node .rn-name{color:#1B2450}
.portal.theme-day .card-item{background:#F7F9FE;border-color:#E2E8F6}
.portal.theme-day .card-item .ci-body p{color:#3A456E}
.portal.theme-day .stk-picker{background:#F2F4FA}
.portal.theme-day .stk-picker button{background:#FFFFFF;border-color:#DDE3F0}
.portal.theme-day .msg-menu{background:#FFFFFF;border-color:#DDE3F0;box-shadow:0 12px 34px rgba(40,55,110,.2)}
.portal.theme-day .msg-menu button{color:#2A3360}
.portal.theme-day .msg-menu button:hover{background:#F0F3FB}
.portal.theme-day .p-main{background:radial-gradient(1200px 400px at 80% -100px,var(--pt-glow),transparent),var(--pt-bg)}

/* 主题切换器 */
.theme-switch{display:flex;gap:6px;align-items:center}
.theme-switch button{background:var(--pt-input);border:1px solid var(--pt-border);color:var(--pt-text-soft);border-radius:7px;padding:6px 10px;font-size:12px;cursor:pointer}
.theme-switch button.on{background:var(--blue-2);border-color:var(--blue-2);color:#fff}

@media(max-width:600px){
  .mode-switch button{padding:6px 9px;font-size:12px}
  .money-bubble{min-width:150px}
  .div-stage{padding:24px 16px}
  .theme-switch button{padding:6px 8px;font-size:11px}
}


/* ===== 主题、通缉令与消息视觉统一增强 ===== */
.portal.theme-day{--pt-accent:#2E47B8;--pt-accent-text:#FFFFFF;--pt-highlight:#D06E35;--pt-highlight-bg:#FDEBDF;--pt-highlight-text:#55240B;--pt-ok:#237A52;--pt-warn:#A85B16;--pt-danger:#B4232C;--pt-link:#243B9B;--pt-hover:#EEF1FB;--pt-cover-a:#1A2C78;--pt-cover-b:#2E47B8;--pt-shadow:0 8px 26px rgba(28,48,90,.07);--pt-bg:#F4F6FB;--pt-topbar:#FFFFFF;--pt-sidebar:#EDF1F8;--pt-panel:#FFFFFF;--pt-input:#F7F9FD;--pt-border:#D9E0EE;--pt-border-soft:#E4E9F2;--pt-text:#17213B;--pt-text-soft:#34415C;--pt-muted:#66738D;--pt-bubble-them:#E9EEF7;--pt-bubble-them-text:#24314C;--pt-glow:rgba(46,71,184,.08);color:var(--pt-text);--pt-panel-2:#F0F3FA;--pt-accent:#2E47B8;--pt-accent-text:#FFFFFF;--pt-ok:#237A52;--pt-warn:#A85B16;--pt-danger:#B4232C;}
.portal.theme-day .portal-top,.portal.theme-day .sidebar{color:var(--pt-text)}
.portal.theme-day .p-panel,.portal.theme-day .card-box{box-shadow:0 8px 26px rgba(28,48,90,.07)}
.portal.theme-day .arc-card,.portal.theme-day .lib-item,.portal.theme-day .stat-strip .ss,.portal.theme-day .friend-card,.portal.theme-day .tpl-card .tc-name,.portal.theme-day .chat-list-item:hover{background:#fff;border-color:var(--pt-border);color:var(--pt-text)}
.portal.theme-day .arc-card h3,.portal.theme-day .lib-item h3,.portal.theme-day .friend-card h4,.portal.theme-day .chat-list-item h4,.portal.theme-day .space-head h2,.portal.theme-day .ev-item h3,.portal.theme-day .stat-strip .ss b{color:var(--pt-text)}
.portal.theme-day .arc-card .ac-meta,.portal.theme-day .lib-item .lm,.portal.theme-day .lib-item p,.portal.theme-day .friend-card p,.portal.theme-day .space-head .sh-sub,.portal.theme-day .ev-item p,.portal.theme-day .stat-strip .ss span{color:var(--pt-muted)}
.portal.theme-day .dossier .d-row .dv,.portal.theme-day .dossier .d-note{color:var(--pt-text-soft)}
.portal.theme-day .dossier .d-note{background:#F6F8FC;border-left-color:var(--orange)}
.portal.theme-day .search-row .field{background:#fff;color:var(--pt-text);border-color:var(--pt-border)}
.portal.theme-day .search-row .field::placeholder{color:#7B879D}
.portal.theme-day .msg.me .bubble{background:#3152B8;color:#fff}
.portal.theme-day .msg.them .bubble{background:#E9EEF7;color:#24314C}
.portal.theme-day .voice-txt{color:var(--pt-text-soft)}
.portal.theme-day .modal{background:#fff;color:#17213B}
.portal :is(input,textarea,select){color:var(--pt-text)}
.portal.theme-day :is(input,textarea,select){color:var(--pt-text)}
.portal .field{background:var(--pt-input);border-color:var(--pt-border)}
.portal .field::placeholder{color:var(--pt-muted)}
.portal .msg .bubble{box-shadow:none}
.portal .msg .bubble .voice-txt{overflow-wrap:anywhere}
.wanted-intro{background:linear-gradient(145deg,var(--pt-panel),var(--pt-bg));}
.wanted-stamp{display:inline-block;border:1px solid var(--pt-highlight);color:var(--pt-highlight);font-size:11px;letter-spacing:2px;padding:4px 9px;margin-bottom:10px}
.wanted-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:20px}
.wanted-card{min-width:0;border:1px solid var(--pt-border);background:var(--pt-panel);padding:18px;border-radius:10px;position:relative;overflow:hidden}
.wanted-top{display:flex;justify-content:space-between;gap:8px;color:var(--pt-muted);font:11px var(--mono);border-bottom:1px solid var(--pt-border);padding-bottom:9px}
.wanted-banner{font-weight:900;font-size:22px;letter-spacing:8px;color:var(--pt-highlight);text-align:center;margin:14px 0 4px}
.wanted-name{text-align:center;font-size:25px;font-weight:900;color:var(--pt-text);letter-spacing:2px}
.wanted-reward{text-align:center;color:var(--pt-muted);font-size:12px;margin:5px 0 14px}
.wanted-reward strong{display:block;font-size:30px;color:var(--pt-highlight);font-variant-numeric:tabular-nums}
.wanted-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 12px}
.wanted-fields p{min-width:0;font-size:12px;color:var(--pt-text-soft);overflow-wrap:anywhere}
.wanted-fields b{display:block;color:var(--pt-muted);font-size:11px;font-weight:500}
.wanted-note{border-left:3px solid var(--pt-highlight);padding:9px 11px;margin:13px 0;color:var(--pt-text-soft);font-size:12.5px;line-height:1.7;background:rgba(185,59,62,.06);white-space:pre-wrap;overflow-wrap:anywhere}
.wanted-add{border:1px dashed var(--pt-border);border-radius:10px;background:transparent;color:var(--pt-text-soft);min-height:120px;font:inherit;cursor:pointer}
.wanted-add:hover{border-color:var(--orange);color:var(--orange)}
@media(max-width:680px){.wanted-grid{grid-template-columns:minmax(0,1fr)}.wanted-card{padding:14px}.wanted-name{font-size:22px}.wanted-fields{gap:6px}.wanted-reward strong{font-size:22px}.portal .theme-switch{max-width:100%;flex-wrap:wrap}.voice-wrap{gap:5px}.voice-bars{height:18px}}


/* Legacy theme-day !important patch removed; component colors now use theme variables. */
@media(max-width:700px){
  .portal.theme-day .p-panel,.portal.theme-day .p-card{padding-left:14px!important;padding-right:14px!important}
  .portal.theme-day .p-main{min-width:0}
  .portal.theme-day .p-main *{overflow-wrap:anywhere}
  .portal.theme-day .money-bubble{max-width:min(270px,calc(100vw - 105px))}
}


/* 追加优化：公开典藏、关系图、转账状态 */
.transfer-bub,.me .transfer-bub,.transfer-bub.is-received,.me .transfer-bub.is-received{background:#F2F3F5!important;color:#202124!important}
.transfer-bub.is-received .tf-ic{background:#09A95B!important}
.rel-graph{position:relative;padding-top:2px}
.rel-graph .rel-center{display:flex;flex-direction:column;align-items:center;gap:2px;position:relative;z-index:1;box-shadow:0 5px 16px rgba(46,71,184,.18)}
.rel-center small{font-size:10px;font-weight:400;opacity:.8}
.rel-branches{position:relative;width:100%;max-width:920px;padding-top:38px;margin-top:0;gap:16px 12px}
.rel-branches:before{content:"";position:absolute;top:0;left:50%;height:20px;border-left:2px solid #7184C9}
.rel-branches:after{content:"";position:absolute;top:19px;left:calc(8.333% + 4px);right:calc(8.333% + 4px);border-top:2px solid #7184C9}
.rel-graph .rel-node{position:relative;flex:1 1 145px;max-width:220px;min-width:125px;padding:18px 12px 10px;background:var(--pt-panel-2);border:1px solid var(--pt-border);border-radius:12px;box-shadow:0 7px 18px rgba(0,0,0,.12)}
.rel-graph .rel-node:before{content:"";position:absolute;top:-20px;left:50%;height:18px;border-left:2px solid #7184C9}
.rel-graph .rn-link{position:absolute;top:-15px;left:calc(50% - 17px);min-width:34px;padding:1px 5px;background:#E8874A;color:white;border:2px solid var(--pt-panel);border-radius:12px;font-size:17px;line-height:20px;font-weight:800;z-index:2}
.rel-graph .rn-link.both{background:#2E9E6B}
.rel-graph .rn-rel{font-size:12px;color:#F0B477;margin:0 0 5px}
.rel-graph .rn-name{font-size:15px;color:var(--pt-text);font-weight:700;overflow-wrap:anywhere}
.rel-graph .rn-note{color:var(--pt-text-soft);line-height:1.6}
.rel-add{padding:14px;border:1px dashed var(--pt-border);border-radius:12px;width:100%}
.codex-panel{max-width:1100px;margin:0 auto}
.codex-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.codex-head .ey,.codex-card-kicker{font-family:var(--mono);font-size:10px;letter-spacing:1.8px;color:var(--orange);margin-bottom:4px}
.codex-head h2{font-size:26px;letter-spacing:1px}
.codex-search{display:flex;gap:8px;margin:18px 0 14px}
.codex-search .field{flex:1;min-width:0}
.codex-cats{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.codex-cat{font-size:12px;padding:5px 11px;border-radius:20px;border:1px solid var(--pt-border);color:var(--pt-text-soft);background:var(--pt-input)}
.codex-section{margin:20px 0 24px}
.codex-section h3{font-size:17px;margin-bottom:12px;color:var(--pt-text);padding-left:10px;border-left:3px solid var(--orange)}
.codex-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.codex-card{border:1px solid var(--pt-border);background:var(--pt-panel);border-radius:12px;padding:17px;min-width:0;box-shadow:0 4px 14px rgba(20,35,80,.05)}
.codex-card h4{font-size:17px;color:var(--pt-text);margin:4px 0 8px}
.codex-summary{font-size:13px;color:var(--pt-text-soft);line-height:1.8;margin-bottom:12px}
.codex-card details{border-top:1px solid var(--pt-border-soft);padding-top:10px}
.codex-card summary{cursor:pointer;color:var(--blue-2);font-size:13px;font-weight:600}
.codex-content{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--pt-text);font-size:13px;line-height:1.9;padding:12px 0}
.codex-tags{font-size:11px;color:var(--pt-muted);padding:7px 0}
.codex-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.codex-foot{text-align:center;color:var(--pt-muted);font-size:11px;padding:12px 0 2px}
.portal.theme-day .rel-graph .rel-node{background:var(--pt-panel);border-color:var(--pt-border);box-shadow:0 7px 18px rgba(35,55,110,.09)}
.portal.theme-day .rel-graph .rn-name{color:var(--pt-text)}
.portal.theme-day .rel-graph .rn-note{color:var(--pt-text-soft)}
.portal.theme-day .rel-graph .rn-rel{color:var(--pt-accent)}
.portal.theme-day .rel-graph .rel-center{background:#2E47B8;color:#fff}
.portal.theme-day .codex-card{background:#FFFFFF;border-color:#D9E1F0}
.portal.theme-day .codex-summary,.portal.theme-day .codex-content{color:#34405F}
.portal.theme-day .codex-card summary{color:#2443A4}
@media(max-width:680px){.codex-grid{grid-template-columns:1fr}.codex-head h2{font-size:22px}.codex-search{align-items:stretch}.rel-branches{padding-top:30px;gap:16px 8px}.rel-branches:after{left:12%;right:12%}.rel-graph .rel-node{flex:1 1 42%;min-width:0;padding:17px 8px 9px}.rel-add .field{width:100%;min-width:0}.rel-add .btn{width:100%;justify-content:center}}


/* ====== 字卡工作台：搜索、编辑与长文本可读性 ====== */
.card-manager-intro{font-size:12px;line-height:1.7;color:var(--pt-muted);padding:10px 12px;margin-bottom:10px;background:var(--pt-input);border:1px solid var(--pt-border-soft);border-radius:8px}
.card-search{width:100%;margin:0 0 10px}
.card-list{max-height:min(330px,42vh);gap:7px;padding:1px 2px 3px}
.card-item{gap:10px;align-items:flex-start;padding:10px 11px;border-radius:10px;min-width:0}
.card-item[hidden]{display:none!important}
.card-item img{width:48px;height:48px;flex:0 0 48px;border-radius:8px;object-fit:cover;background:var(--pt-input)}
.card-item .ci-emoji{display:flex;align-items:center;justify-content:center;flex:0 0 42px;min-height:42px;font-size:25px;line-height:1.3}
.card-item .ci-body{min-width:0;padding-top:2px}
.card-item .ci-body p{font-size:13px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.card-item .ci-meta{font-size:10.5px;color:var(--pt-muted);margin-top:4px}
.card-item .ci-type{display:inline-block;font-size:10px;border-radius:4px;padding:1px 5px;background:var(--pt-input);color:var(--pt-text-soft)}
.card-item .ci-combo{font-size:11px;line-height:1.5;overflow-wrap:anywhere;white-space:normal}
.card-item button{flex:0 0 auto;align-self:center;padding:6px 7px;border-radius:6px}
.card-item button.ci-edit{color:var(--pt-text-soft);border:1px solid var(--pt-border)}
.card-edit-foot{font-size:11px;color:var(--pt-muted);margin-top:10px}
.portal.theme-day .card-manager-intro{background:#F4F7FB;color:#4B5A72;border-color:#D8E1ED}
.portal.theme-day .card-item{background:var(--pt-panel);border-color:var(--pt-border)}
.portal.theme-day .card-item .ci-body p{color:var(--pt-text)}
.portal.theme-day .card-item .ci-meta,.portal.theme-day .card-item .ci-combo{color:var(--pt-muted)}
.portal.theme-day .card-search{background:var(--pt-input);color:var(--pt-text)}
@media(max-width:560px){.card-item{gap:7px;padding:9px}.card-item img{width:38px;height:38px;flex-basis:38px}.card-item .ci-emoji{flex-basis:34px;font-size:22px}.card-item button{font-size:11px;padding:5px 6px}.card-manager-intro{font-size:11.5px}}

/* ====== 关系树：连接线更明确，移动端保持连线可读 ====== */
.rel-graph .rel-branches{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;overflow-y:visible;scroll-snap-type:x proximity;padding:38px 12px 14px;max-width:100%;scrollbar-width:thin}
.rel-graph .rel-node{flex:0 0 165px;max-width:190px;min-width:145px;scroll-snap-align:start}
.rel-graph .rel-center{min-width:145px;text-align:center;padding:11px 22px}
.rel-graph .rel-branches:after{left:0;right:0}
.rel-graph .rel-node:before{height:19px;top:-21px}
.rel-graph .rn-link{box-shadow:0 2px 6px rgba(0,0,0,.12)}
.rel-add{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.rel-add .field{min-width:0;width:100%}
.rel-add #rel-add-btn{grid-column:1/-1;justify-self:end}
@media(max-width:680px){.rel-graph .rel-branches{padding-top:34px;gap:14px}.rel-graph .rel-node{flex-basis:145px;min-width:145px}.rel-add{grid-template-columns:1fr}.rel-add #rel-add-btn{grid-column:auto;width:100%}}

/* ====== 员工关系网 ====== */
.network-intro{position:relative;overflow:hidden;background:linear-gradient(125deg,#111D4A,#1C2E6A 65%,#263D86);color:#F5F7FF;border-color:#344B95}
.network-eyebrow{font:10px/1.4 monospace;letter-spacing:2px;color:#F1B679;margin-bottom:8px}
.network-intro h2{font-size:25px;color:#fff!important;letter-spacing:1px}
.network-intro .ph-sub{color:#C8D2F0!important;max-width:780px}
.network-legend{display:flex;gap:12px 20px;flex-wrap:wrap;margin-top:17px;font-size:11px;color:#D8E0F9}
.network-legend span{display:inline-flex;align-items:center;gap:6px}
.net-dot{width:8px;height:8px;display:inline-block;border-radius:50%;background:#E8874A}
.net-dot.both{background:#36B889}
.network-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:15px}
.network-section-head h3{font-size:17px;margin:0;color:var(--pt-text)}
.network-section-head p{font-size:12px;color:var(--pt-muted);margin:5px 0 0;line-height:1.65}
.net-section-count{font:10px monospace;letter-spacing:1px;color:var(--pt-muted);white-space:nowrap;padding-top:4px}
.network-node-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.net-node{min-width:0;border:1px solid var(--pt-border);border-radius:11px;padding:14px;background:var(--pt-panel);box-shadow:0 5px 15px rgba(20,35,80,.05)}
.net-node.net-root{border-color:#C77A3C;background:linear-gradient(145deg,#FFF8EC,#FFFFFF)}
.net-node-kicker{font:10px/1.4 monospace;letter-spacing:.6px;color:var(--pt-muted);text-transform:uppercase}
.net-node h3{font-size:15px;color:var(--pt-text);margin:7px 0 6px;overflow-wrap:anywhere}
.net-node p{font-size:12px;line-height:1.7;color:var(--pt-text-soft);margin:0;min-height:2.7em;overflow-wrap:anywhere}
.net-node-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:11px}
.net-node-actions .btn{font-size:11px;padding:5px 8px}
.net-root-badge{font-size:10px;color:#9A5C21;border:1px solid #E8C9A7;background:#FFF1DE;border-radius:20px;padding:3px 8px}
.network-add-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px;padding:15px;border:1px dashed var(--pt-border);border-radius:11px;background:var(--pt-input)}
.network-add-grid .wide{grid-column:1/-1}
.network-add-grid .field{width:100%;min-width:0}
.network-add-grid .btn{justify-self:start}
.network-edge-list{display:flex;flex-direction:column;gap:9px}
.net-edge-row{display:flex;align-items:center;gap:10px;border:1px solid var(--pt-border);border-radius:11px;padding:11px;background:var(--pt-panel);min-width:0}
.net-endpoint{flex:0 1 175px;min-width:90px;max-width:220px;padding:8px 10px;border:1px solid var(--pt-border);border-radius:8px;background:var(--pt-input);color:var(--pt-text);font-size:12px;font-weight:650;text-align:center;overflow-wrap:anywhere}
.net-wire{position:relative;flex:1 1 95px;min-width:45px;height:24px;display:flex;align-items:center;justify-content:flex-end;color:#DB8543}
.net-wire:before{content:"";position:absolute;left:0;right:2px;top:50%;height:2px;background:#DB8543}
.net-wire span{z-index:1;background:var(--pt-panel);padding-left:4px;font-size:22px;line-height:1;font-weight:800}
.net-wire.is-both{color:#299C74}
.net-wire.is-both:before{background:#299C74}
.net-edge-meta{flex:0 1 150px;min-width:75px;color:var(--pt-text);font-size:12px;line-height:1.5;text-align:center;overflow-wrap:anywhere}
.net-edge-meta small{display:block;font-size:10px;color:var(--pt-muted);margin-top:3px}
.net-edge-remove{border:0;background:transparent;color:#B44A54;font-size:22px;line-height:1;padding:3px 4px;cursor:pointer;flex:0 0 auto}
.network-footnote{font-size:10.5px;color:var(--pt-muted);line-height:1.7;margin-top:14px}
.portal.theme-day .network-intro{background:linear-gradient(125deg,#14244D,#263F7A);border-color:#2E4985}
.portal.theme-day .net-node{background:#FFFFFF;border-color:#D8E1ED}
.portal.theme-day .net-node.net-root{background:#FFF8ED;border-color:#D9A36A}
.portal.theme-day .net-node h3{color:#1D2A40!important}
.portal.theme-day .net-node p{color:#4E5D73!important}
.portal.theme-day .net-edge-row{background:#FFFFFF;border-color:#D8E1ED}
.portal.theme-day .net-endpoint{background:#F5F7FB;color:#1D2A40;border-color:#D6DFEA}
.portal.theme-day .net-wire span{background:#FFFFFF}
.portal.theme-day .network-add-grid{background:#F6F8FB}
@media(max-width:780px){.network-node-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.net-edge-row{flex-wrap:wrap;gap:7px}.net-endpoint{flex:1 1 calc(40% - 8px);max-width:none}.net-wire{flex:1 1 35px;min-width:36px}.net-edge-meta{flex:1 1 100%;text-align:left}.net-edge-remove{margin-left:auto}.network-add-grid{grid-template-columns:1fr}.network-add-grid .wide{grid-column:auto}}
@media(max-width:480px){.network-node-grid{grid-template-columns:1fr}.network-intro h2{font-size:22px}.network-section-head h3{font-size:16px}.net-endpoint{flex-basis:calc(50% - 35px);font-size:11px;padding:7px 5px}.net-wire{flex:1 0 25px}.network-legend{gap:8px 13px}}
/* ===== 关系图谱与新增整体风格 ===== */
.network-graph-wrap{position:relative;isolation:isolate;min-height:170px;padding:22px 12px 18px;border:1px solid var(--pt-border);border-radius:12px;background:var(--pt-bg);overflow:hidden}
.network-graph-svg{position:absolute;inset:0;z-index:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.network-graph-nodes{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:44px 18px;min-height:120px}
.network-graph-node{position:relative;display:flex;flex-direction:column;justify-content:center;gap:6px;min-width:0;min-height:76px;padding:12px;border:1px solid var(--pt-border);border-radius:10px;background:var(--pt-panel);box-shadow:0 6px 18px rgba(0,0,0,.13);text-align:center}
.network-graph-node span{font-size:10px;letter-spacing:.6px;color:var(--pt-muted)}
.network-graph-node b{font-size:14px;line-height:1.5;color:var(--pt-text);overflow-wrap:anywhere}
.network-graph-empty{grid-column:1/-1;text-align:center;padding:28px 10px;border:1px dashed var(--pt-border);border-radius:10px;color:var(--pt-muted);font-size:14px;line-height:1.8}
.network-graph-empty small{font-size:11px}
.network-graph-svg text{font-family:inherit;font-weight:600}
.rel-empty{width:100%;margin:18px auto 0;padding:20px 14px;text-align:center;border:1px dashed var(--pt-border);border-radius:10px;color:var(--pt-muted);font-size:13px;line-height:1.8}
.rel-branches{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));overflow:visible!important;gap:34px 14px!important;padding:36px 10px 18px!important}
.rel-branches:after{left:6%!important;right:6%!important}
.rel-graph .rel-node{flex:none!important;width:auto!important;max-width:none!important;min-width:0!important;overflow:visible}
.rel-graph .rel-node:before{height:19px!important;top:-20px!important}
.rel-graph .rn-wire{position:absolute;top:-27px;left:50%;transform:translateX(-50%);z-index:2;padding:0 8px;border-radius:16px;border:2px solid var(--pt-panel);background:#E8874A;color:white;font-weight:900;font-size:18px;line-height:23px;box-shadow:0 2px 7px rgba(0,0,0,.16)}
.rel-graph .rn-wire.both{background:#24A779}
.rel-graph .rn-name.rn-open{display:block;width:100%;padding:0;border:0;background:transparent;text-align:center;font-weight:800;cursor:pointer}
.rel-graph .rn-actions{display:flex;justify-content:center;gap:10px;margin-top:10px}
.rel-graph .rn-edit,.rel-graph .rn-del{display:inline-block;margin:0;padding:4px 8px;border-radius:6px;border:1px solid var(--pt-border);background:transparent;color:var(--pt-text-soft);font-size:11px;cursor:pointer}
.rel-graph .rn-del{color:#C85A5F;border-color:rgba(200,90,95,.4)}
.rel-graph .rel-add{margin-top:18px}
.wanted-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.wanted-delete{color:#C85A5F!important}


/* ===== 关系图谱清晰化升级：可拖拽排序、按关系类型统一配色、箭头端点避开人物卡片 ===== */
.network-graph-wrap{overflow:auto;min-height:220px;height:620px;padding:0;position:relative;touch-action:pan-x pan-y;background-image:radial-gradient(var(--pt-border) .7px,transparent .7px);background-size:18px 18px}
.network-graph-svg{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:visible}
.network-graph-nodes{position:absolute;left:0;top:0;width:1600px;height:1050px;min-height:1050px;display:block;z-index:2;grid-template-columns:none;gap:0;align-items:stretch}
.network-graph-node{position:absolute;left:0;top:0;width:132px;min-height:66px;box-sizing:border-box;cursor:grab;user-select:none;touch-action:none;border:1px solid #9AA9BE;box-shadow:0 5px 12px rgba(17,34,60,.12);transition:transform .15s,border-color .15s}
.network-graph-node:active{cursor:grabbing}.network-graph-node.dragging{opacity:.45;transform:scale(.97)}.network-graph-node.drop-target{outline:2px dashed #D88942;outline-offset:3px}
.network-graph-node:before{content:'⠿ 拖动排序';font-size:9px;letter-spacing:.5px;color:var(--pt-muted);position:absolute;right:7px;top:4px;opacity:.8}
.network-graph-svg path{filter:drop-shadow(0 1px 1px rgba(0,0,0,.14))}
.rel-network-wrap{position:relative;isolation:isolate;overflow:visible;min-height:230px;padding:22px 14px;border:1px solid var(--pt-border);border-radius:12px;background:var(--pt-bg);background-image:radial-gradient(var(--pt-border) .7px,transparent .7px);background-size:18px 18px}
.rel-network-svg{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;overflow:visible}
.rel-network-center{position:relative;z-index:2;margin:0 auto 28px;max-width:260px;width:max-content;min-width:150px;padding:13px 22px;border-radius:12px;background:#172B61;color:#fff;text-align:center;font-weight:800;box-shadow:0 6px 16px #172b612b}
.rel-network-center small{display:block;margin-top:4px;font-size:10px;opacity:.8}
.rel-network-nodes{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(125px,1fr));gap:24px 16px;align-items:start}
.rel-network-node{position:relative;min-width:0;padding:13px 10px 10px;border:1px solid var(--pt-border);border-top:3px solid var(--rel-color,#D88942);border-radius:10px;background:var(--pt-panel);box-shadow:0 4px 12px rgba(0,0,0,.09);text-align:center;cursor:grab;user-select:none}
.rel-network-node.dragging{opacity:.4}.rel-network-node.drop-target{outline:2px dashed #D88942;outline-offset:3px}.rel-network-node .rn-wire{display:inline-flex;align-items:center;justify-content:center;position:static;transform:none;margin-bottom:6px;padding:1px 8px;border-radius:20px;background:var(--rel-color,#D88942);color:#fff;font-weight:900;font-size:16px;line-height:21px;box-shadow:none}
.rel-network-node .rn-rel{font-size:11px;font-weight:750;color:var(--rel-color,#D88942);margin-bottom:5px}.rel-network-node .rn-name{font-weight:800;color:var(--pt-text);overflow-wrap:anywhere}.rel-network-node .rn-name.rn-open{display:block;width:100%;padding:0;border:0;background:transparent;text-align:center;font-weight:800;cursor:pointer}.rel-network-node .rn-note{font-size:11px;color:var(--pt-text-soft);line-height:1.5;margin-top:6px;overflow-wrap:anywhere}.rel-network-node .rn-actions{display:flex;justify-content:center;gap:7px;margin-top:9px}.rel-network-node .rn-edit,.rel-network-node .rn-del{padding:4px 7px;border:1px solid var(--pt-border);border-radius:6px;background:transparent;color:var(--pt-text-soft);font-size:11px;cursor:pointer}.rel-network-node .rn-del{color:#C85A5F}
.rel-network-tools{font-size:11px;color:var(--pt-muted);margin:0 0 12px;line-height:1.7}
@media(max-width:900px){.rel-network-nodes{grid-template-columns:repeat(2,minmax(115px,1fr));gap:20px 12px}}
@media(max-width:620px){.network-graph-wrap{height:560px}.rel-network-nodes{grid-template-columns:1fr;gap:12px}.rel-network-wrap{padding:12px 8px}.network-graph-node{padding:10px 7px}.rel-network-center{margin-bottom:18px}}

/* 古风卷宗：宣纸、墨色与朱砂印 */
.portal.theme-classic{--pt-accent:#8E2328;--pt-accent-text:#FFF8E8;--pt-highlight:#B52B32;--pt-highlight-bg:#F4DAD5;--pt-highlight-text:#4A1115;--pt-ok:#28745D;--pt-warn:#9A6A20;--pt-danger:#A8202B;--pt-link:#8E2328;--pt-hover:#E3D8C5;--pt-cover-a:#8E2328;--pt-cover-b:#D0484D;--pt-shadow:0 8px 26px rgba(58,42,24,.12);--pt-bg:#E9DFC7;--pt-topbar:#F6EEDC;--pt-sidebar:#F0E6D1;--pt-panel:#F7F0E1;--pt-input:#FFF9ED;--pt-border:#C9B58C;--pt-border-soft:#D9C9A8;--pt-text:#332719;--pt-text-soft:#574531;--pt-muted:#79674E;--pt-bubble-them:#F8F1E4;--pt-bubble-them-text:#3F3021;--pt-glow:rgba(142,35,40,.09);background:var(--pt-bg);color:var(--pt-text);--pt-panel-2:#F0E4CB;--pt-accent:#8E2328;--pt-accent-text:#FFF8E9;--pt-ok:#2E7650;--pt-warn:#9A5B17;--pt-danger:#A52A2A;}
.portal.theme-classic .portal-top,.portal.theme-classic .sidebar{color:var(--pt-text);box-shadow:none}
.portal.theme-classic .p-main{background:radial-gradient(ellipse at top,rgba(255,255,255,.5),transparent 60%),var(--pt-bg)}
.portal.theme-classic .p-panel,.portal.theme-classic .card-box{box-shadow:0 5px 18px rgba(76,55,29,.07);border-radius:4px}
.portal.theme-classic .p-logo .mk,.portal.theme-classic .side-item.on{background:#8E2328;color:#FFF4DE}
.portal.theme-classic .side-item:hover{background:#E4D5B8;color:#3F3021}
.portal.theme-classic .p-panel h2,.portal.theme-classic .p-panel h3,.portal.theme-classic .p-panel h4{color:#332719}
.portal.theme-classic .theme-switch button{background:#FFF8E9;color:#5B4931;border-color:#C9B58C}
.portal.theme-classic .theme-switch button.on{background:#8E2328;color:#FFF8E9;border-color:#8E2328}
.portal.theme-classic .btn-orange,.portal.theme-classic .btn:not(.btn-ghost){background:#8E2328;border-color:#8E2328;color:#FFF8E9}
.portal.theme-classic .msg.me .bubble{background:#8E2328;color:#FFF8E9}
.portal.theme-classic .msg.them .bubble{background:#F9F0DF;color:#3D3021;border:1px solid #DCCAA7}
.portal.theme-classic .rel-graph .rel-center{background:#8E2328;color:#FFF8E9}
.portal.theme-classic .network-graph-node{background:#FBF5E8;border-color:#C9B58C}
.portal.theme-classic .network-graph-wrap{background:#E4D7BB}
.portal.theme-classic .codex-card,.portal.theme-classic .net-node{background:#FBF5E8}
.portal.theme-classic :is(input,textarea,select,.field){background:#FFF9ED;color:#332719;border-color:#C9B58C}

/* 终端夜行：墨黑底色与青碧光线 */
.portal.theme-cyber{--pt-bg:#080B1A;--pt-topbar:#060A18;--pt-sidebar:#080D1F;--pt-panel:#111A36;--pt-panel-2:#0C1428;--pt-input:#0A1024;--pt-border:#2A3A6E;--pt-border-soft:#1C2850;--pt-text:#E7F1FF;--pt-text-soft:#A5BBE6;--pt-muted:#6E86B8;--pt-bubble-them:#152347;--pt-bubble-them-text:#DCE8FF;--pt-glow:rgba(0,229,255,.10);--pt-accent:#00E5FF;--pt-accent-text:#001820;--pt-highlight:#FF2E88;--pt-highlight-bg:#3A0F24;--pt-highlight-text:#FFE3F1;--pt-ok:#3BE08F;--pt-warn:#FFB547;--pt-danger:#FF4D6D;--pt-link:#7DF3FF;--pt-hover:#17244A;--pt-cover-a:#0B1E52;--pt-cover-b:#FF2E88;--pt-shadow:0 0 0 1px rgba(0,229,255,.08),0 8px 26px rgba(0,0,0,.4);background:var(--pt-bg);color:var(--pt-text);}
.portal.theme-cyber .p-logo .mk,.portal.theme-cyber .side-item.on{background:var(--pt-accent);color:var(--pt-accent-text)}
.portal.theme-cyber .side-item:hover{background:var(--pt-hover);color:var(--pt-text)}
.portal.theme-cyber .p-main{background:radial-gradient(ellipse at top,rgba(26,125,83,.12),transparent 60%),var(--pt-bg)}
.portal.theme-cyber .p-panel,.portal.theme-cyber .card-box{box-shadow:0 0 0 1px rgba(38,180,119,.025),0 8px 26px rgba(0,0,0,.2)}
.portal.theme-cyber .theme-switch button{background:var(--pt-input);color:var(--pt-text-soft);border-color:var(--pt-border)}
.portal.theme-cyber .theme-switch button.on{background:var(--pt-accent);color:var(--pt-accent-text);border-color:var(--pt-accent)}
.portal.theme-cyber .btn-orange,.portal.theme-cyber .btn:not(.btn-ghost){background:var(--pt-accent);border-color:var(--pt-accent);color:var(--pt-accent-text)}
.portal.theme-cyber .msg.me .bubble{background:linear-gradient(135deg,var(--pt-accent),var(--pt-highlight));color:var(--pt-accent-text)}
.portal.theme-cyber .msg.them .bubble{background:var(--pt-bubble-them);color:var(--pt-bubble-them-text);border:1px solid var(--pt-border)}
.portal.theme-cyber .network-graph-node{border-color:#247654;box-shadow:0 0 18px rgba(26,175,113,.08)}
.portal.theme-cyber .network-graph-wrap{background:#06120E}
.portal.theme-cyber .rel-graph .rel-center{background:#176B4A;color:#F0FFF7}
.portal.theme-cyber .codex-card,.portal.theme-cyber .net-node{background:#0D241B}
.portal.theme-cyber :is(input,textarea,select,.field){background:var(--pt-input);color:var(--pt-text);border-color:var(--pt-border)}
.portal.theme-cyber .p-main small,.portal.theme-cyber .p-main .muted{color:#8FBEA5}

@media(max-width:900px){.network-graph-nodes{grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 12px}}
@media(max-width:680px){
  .network-graph-wrap{padding:15px 8px}
  .network-graph-nodes{grid-template-columns:repeat(2,minmax(0,1fr));gap:42px 9px}
  .network-graph-node{min-height:68px;padding:9px 7px}
  .network-graph-node b{font-size:12.5px}
  .rel-branches{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:32px 8px!important;padding:34px 3px 14px!important}
  .rel-graph .rel-node{padding:14px 8px 10px!important}
  .rel-graph .rn-wire{font-size:16px;line-height:20px}
  .portal-top .theme-switch{flex:1 1 100%;order:4;justify-content:center;gap:4px;padding-bottom:6px}
  .portal-top .theme-switch button{padding:4px 6px;font-size:10px}
  .portal-top{height:auto;min-height:60px;flex-wrap:wrap;padding:8px 10px;gap:7px}
  .portal-top .p-logo{font-size:12px;letter-spacing:1px}
  .portal-top .user-chip{margin-left:auto}
}


/* ---------- 聊天列表通知红点；逐条已读/未读状态已取消 ---------- */
.side-unread-badge,.chat-unread-badge,.room-unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#E5484D;color:#fff;font-size:10px;font-weight:800;line-height:1;white-space:nowrap;box-shadow:0 1px 4px rgba(229,72,77,.28)}
.side-unread-badge{margin-left:auto;flex-shrink:0}.chat-list-item{position:relative}.chat-list-item .chat-contact-copy{flex:1;min-width:0}.chat-list-item .chat-contact-right{display:flex;align-items:center;margin-left:auto;padding-left:8px;flex-shrink:0}.room-tab{display:inline-flex;align-items:center;gap:7px}.room-unread-badge{min-width:16px;height:16px;font-size:9px}
.msg-receipt{display:none!important}.msg.them .msg-receipt{text-align:left}.msg.money-msg .msg-receipt{max-width:235px}.portal.theme-day .msg-receipt{color:#687487}.portal.theme-classic .msg-receipt{color:#8D785E}.portal.theme-cyber .msg-receipt{color:#75A990}
.chat-read-noreply{display:inline-flex;align-items:center;gap:5px;margin:7px 5px 0 8px;color:var(--pt-text-soft);font-size:12px;white-space:nowrap}.chat-read-noreply input{accent-color:var(--orange)}#wg-cfg{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
@media(max-width:560px){.side-unread-badge{min-width:16px;height:16px;font-size:9px}.chat-list-item{gap:10px;padding:12px 7px}.chat-list-item .av{width:40px;height:40px}.chat-read-noreply{margin-left:0;font-size:11px}.msg-receipt{font-size:10px}}


/* ===== 主题可读性优化：统一提升非默认主题的文字、卡片与表单对比度 ===== */
.portal.theme-classic{--pt-accent:#8E2328;--pt-accent-text:#FFF8E8;--pt-highlight:#B52B32;--pt-highlight-bg:#F4DAD5;--pt-highlight-text:#4A1115;--pt-ok:#28745D;--pt-warn:#9A6A20;--pt-danger:#A8202B;--pt-link:#8E2328;--pt-hover:#E3D8C5;--pt-cover-a:#8E2328;--pt-cover-b:#D0484D;--pt-shadow:0 8px 26px rgba(58,42,24,.12);--pt-bg:#EDE2CC;--pt-topbar:#F6ECD9;--pt-sidebar:#E6D8BC;--pt-panel:#FFF8E9;--pt-input:#FFF9EF;--pt-border:#C9B58C;--pt-border-soft:#E2D3B3;--pt-text:#302417;--pt-text-soft:#51412E;--pt-muted:#78654B;--pt-bubble-them:#F7EEDC;--pt-bubble-them-text:#3D3021;--pt-glow:rgba(142,35,40,.06);color:#302417;--pt-panel-2:#F0E4CB;--pt-accent:#8E2328;--pt-accent-text:#FFF8E9;--pt-ok:#2E7650;--pt-warn:#9A5B17;--pt-danger:#A52A2A;}
.portal.theme-classic .p-main{background:#EFE4D0;color:#302417}
.portal.theme-classic .p-panel,.portal.theme-classic .card-box,.portal.theme-classic .arc-card,.portal.theme-classic .lib-item,.portal.theme-classic .friend-card,.portal.theme-classic .chat-list-item{background:#FFF8E9;color:#302417;border-color:#D5C29B}
.portal.theme-classic .p-main :is(h1,h2,h3,h4,.rn-name,.ci-body b,.space-head h2,.chat-list-item h4){color:#40291F}
.portal.theme-classic .p-main :is(p,li,label,td,th,.ph-sub,.muted,.hint,.lm,.ac-meta,.ev-item p,.space-head .sh-sub){color:#66523A}
.portal.theme-classic .p-main :is(input,textarea,select,.field){background:#FFFCF4;color:#332719;border-color:#C9B58C}
.portal.theme-classic .p-main :is(input,textarea,select,.field)::placeholder{color:#927D60;opacity:1}
.portal.theme-classic .p-main a{color:#8E2328}
.portal.theme-classic .side-item{color:#59462E}
.portal.theme-classic .side-item:hover,.portal.theme-classic .side-item.on{background:#D9C7A5;color:#76252A}
.portal.theme-classic .chat-time-node{color:#8B7656}
.portal.theme-cyber .p-main :is(.p-panel,.p-card,.card-box,.arc-card,.lib-item,.ev-item,.friend-card,.chat-list-item,.stat-strip .ss,.modal){color:#E0F7EA}
.portal.theme-cyber .p-main :is(.p-panel p,.p-panel li,.p-panel td,.p-panel th,.p-panel label,.ph-sub,.muted,.hint,.lm,.ac-meta,.ev-item p,.space-head .sh-sub){color:#A9D0B9}
.portal.theme-cyber .p-main :is(input,textarea,select,.field){background:var(--pt-input);color:var(--pt-text);border-color:var(--pt-border)}
.portal.theme-cyber .p-main :is(input,textarea,select,.field)::placeholder{color:#7DAF96;opacity:1}
.portal.theme-cyber .p-main a{color:var(--pt-link)}
.portal.theme-cyber .chat-time-node{color:#8FC7AA}
.portal.theme-day .chat-list-item .chat-contact-copy p{color:#58667C}
.portal.theme-day .chat-list-item .chat-contact-right .chat-unread-badge{background:#D9363E;color:#fff}
.portal.theme-classic .chat-list-item .chat-contact-copy p{color:#705C42}
.portal.theme-cyber .chat-list-item .chat-contact-copy p{color:#A2CDB5}


/* ============ 移动端深度重做：聊天空间、顶部栏自动收起、滚动位置 ============ */
.portal-top{transition:transform .22s ease,box-shadow .22s ease;will-change:transform}
.portal-top.is-hidden{transform:translateY(-105%);box-shadow:none;pointer-events:none}
@media(max-width:680px){
  .portal{min-height:100dvh}
  .portal-top{position:sticky;top:0;z-index:100;height:auto;min-height:54px;padding:7px 10px;gap:8px;flex-wrap:wrap;align-content:center}
  .portal-top .p-logo{gap:7px;letter-spacing:1px;font-size:13px;max-width:calc(100% - 105px)}
  .portal-top .p-logo .mk{width:29px;height:29px;flex:0 0 29px}
  .portal-top .p-logo small{display:none}
  .portal-top .theme-switch{order:3;display:flex;gap:4px;max-width:100%;overflow-x:auto;flex:1 0 100%;padding-bottom:1px;scrollbar-width:none}
  .portal-top .theme-switch::-webkit-scrollbar{display:none}
  .portal-top .theme-switch button{white-space:nowrap;padding:5px 8px;font-size:10px}
  .portal-top .user-chip{margin-left:auto;gap:5px}
  .portal-top .user-chip .av{width:29px;height:29px}
  .portal-top #p-logout{font-size:11px;padding:6px 8px}
  .portal-body{min-height:0}
  .p-main{padding:10px 8px 12px!important;width:100%;min-height:calc(100dvh - var(--mobile-chrome-h,141px))}
  .p-panel{padding:13px 10px;border-radius:10px;margin-bottom:10px}
  .p-crumb{font-size:11px;margin-bottom:8px}
  .chat-window{height:calc(100dvh - var(--mobile-chrome-h,141px) - 20px);min-height:calc(100dvh - var(--mobile-chrome-h,141px) - 20px);max-height:calc(100dvh - var(--mobile-chrome-h,141px) - 20px);padding:9px!important;display:flex;flex-direction:column;overflow:hidden}
  .room-tabs-bar{flex:0 0 auto;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap;margin:0 0 7px;padding-bottom:3px;scrollbar-width:none}
  .room-tabs-bar::-webkit-scrollbar{display:none}
  /* 聊天室在窗口上方还有一行房间 tabs，需把它的高度也计入，避免输入框被顶到视口外。 */
  .room-tabs-bar + .chat-window{height:calc(100dvh - var(--mobile-chrome-h,141px) - 63px);min-height:calc(100dvh - var(--mobile-chrome-h,141px) - 63px);max-height:calc(100dvh - var(--mobile-chrome-h,141px) - 63px)}
  .room-tab{flex:0 0 auto;padding:7px 10px;font-size:12px}
  .chat-head{flex:0 0 auto;align-items:center;gap:7px;padding-bottom:8px}
  .chat-head .av{width:34px;height:34px;flex:0 0 34px}
  .chat-head h3{font-size:14px;line-height:1.3}
  .chat-head .ch-actions{width:auto;margin-left:auto;display:flex;flex:0 1 auto;flex-wrap:wrap;justify-content:flex-end;gap:4px}
  .chat-head .ch-actions .btn{font-size:11px;padding:6px 7px;min-height:30px}
  .chat-head .ch-hint{display:none}
  .chat-window .card-cfg{flex:0 0 auto;max-height:84px;overflow:auto;padding:5px 7px!important;font-size:11px}
  .chat-window .card-cfg select{max-width:115px;font-size:11px;padding:4px}
  .chat-window .card-cfg .btn{font-size:11px;padding:5px 7px}
  .chat-scroll{flex:1 1 auto;min-height:0!important;height:auto;max-height:none!important;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:9px 1px!important;gap:4px!important}
  .msg{max-width:91%;gap:5px}
  .msg .m-av{width:27px;height:27px;font-size:11px;flex:0 0 27px}
  .msg .bubble{font-size:14px;line-height:1.55;padding:8px 10px;max-width:100%}
  .msg .bubble .msg-photo{max-width:min(58vw,190px);max-height:190px}
  .msg .m-time{font-size:10px}
  .msg .m-name{font-size:10px;margin-bottom:2px}
  .quote-bar{flex:0 0 auto;margin:4px 0;padding:6px 8px;font-size:11px}
  .chat-input{flex:0 0 auto;gap:4px;padding-top:7px;align-items:flex-end}
  .chat-input .ib-btn{width:32px;min-width:32px;height:38px;padding:0;font-size:14px}
  .chat-input textarea{min-height:38px;max-height:92px;padding:8px 9px;font-size:14px;border-radius:10px}
  .chat-input #ch-send,.chat-input #rm-send,.chat-input #wg-send{height:38px;padding:0 10px;font-size:12px;white-space:nowrap}
  .hold-talk{height:38px;font-size:12px}
  .div-wrap{max-width:100%}
  .div-stage{padding:22px 13px}
  .div-poem{font-size:15px;line-height:1.8}
  .div-mean{font-size:13px;padding:11px}
}
@media(max-width:380px){
  .portal-top .p-logo{font-size:12px}
  .portal-top #p-logout{padding:5px 6px}
  .chat-window{height:calc(100dvh - var(--mobile-chrome-h,141px) - 20px);min-height:calc(100dvh - var(--mobile-chrome-h,141px) - 20px);max-height:calc(100dvh - var(--mobile-chrome-h,141px) - 20px)}
  .chat-head .ch-actions .btn{padding:5px 6px;font-size:10px}
  .chat-input .ib-btn{width:28px;min-width:28px;font-size:12px}
  .chat-input #ch-send,.chat-input #rm-send,.chat-input #wg-send{padding:0 8px}
}

/* 关系图谱画布重构：小节点、自由摆放、可拖拽画布 */
.network-zoom-tools{display:flex;align-items:center;gap:7px;margin:0 0 10px;color:var(--pt-muted);font-size:12px}.network-zoom-tools button{min-width:36px;height:34px;border:1px solid var(--pt-border);border-radius:8px;background:var(--pt-panel);color:var(--pt-text);font-size:20px;line-height:1;cursor:pointer;touch-action:manipulation}.network-zoom-tools button:focus-visible{outline:2px solid var(--pt-accent,#D88942);outline-offset:2px}.network-zoom-tools .zoom-reset{min-width:64px;font-size:12px;font-weight:700}.network-graph-wrap{height:620px;min-height:620px;overflow:auto;position:relative;padding:0!important;cursor:grab;touch-action:pan-x pan-y;background-size:22px 22px}
.network-graph-wrap:active{cursor:grabbing}
.network-graph-nodes{position:relative!important;display:block!important;width:1600px;height:1050px;min-height:1050px!important;}
.network-graph-svg{position:absolute!important;left:0!important;top:0!important;width:1600px!important;height:1050px!important;min-width:1600px;min-height:1050px;pointer-events:none;overflow:visible;z-index:1}
.network-graph-node{position:absolute!important;width:132px!important;min-width:0!important;min-height:62px!important;height:auto;padding:8px 9px!important;gap:3px!important;border-radius:8px!important;cursor:grab!important;z-index:2;touch-action:none}
.network-graph-node span{font-size:9px!important}.network-graph-node b{font-size:12px!important;line-height:1.35!important}.network-graph-node:before{content:'⠿ 拖动';font-size:8px;top:2px;right:5px}
.network-graph-node.dragging{opacity:.8;z-index:8;box-shadow:0 8px 22px #0003}
.rel-network-wrap{overflow:auto!important;position:relative!important;min-height:620px!important;height:620px;padding:0!important;touch-action:pan-x pan-y}
.rel-network-center{position:absolute!important;left:760px;top:24px;transform:translateX(-50%);z-index:3;margin:0!important;min-width:132px;padding:9px 12px!important;font-size:13px!important}
.rel-network-tools{position:sticky!important;left:12px;top:8px;z-index:5;width:max-content;max-width:calc(100% - 24px);margin:8px 12px!important;padding:5px 8px;border-radius:6px;background:var(--pt-panel);font-size:10px!important}
.rel-network-nodes{position:relative!important;display:block!important;width:1600px!important;height:1000px!important;min-height:1000px!important;padding:0!important;margin:0!important}
.rel-network-svg{position:absolute!important;left:0!important;top:0!important;width:1600px!important;height:1000px!important;pointer-events:none;z-index:1}
.rel-network-node{position:absolute!important;width:128px!important;min-width:0!important;max-width:128px!important;padding:8px!important;z-index:2;cursor:grab!important;touch-action:pan-x pan-y;border-radius:8px!important}
.network-graph-wrap.node-drag-active,.rel-network-wrap.node-drag-active{touch-action:none!important;user-select:none!important;-webkit-user-select:none!important}.network-graph-node,.rel-network-node{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.network-graph-wrap,.rel-network-wrap{overscroll-behavior:contain}.network-graph-node.dragging,.rel-network-node.dragging{cursor:grabbing!important}
.rel-network-node .rn-name{font-size:12px!important;padding:4px!important}.rel-network-node .rn-rel{font-size:10px!important}.rel-network-node .rn-note{font-size:10px!important}.rel-network-node .rn-actions button{font-size:10px!important}
.rel-add{position:sticky!important;left:10px;top:10px;z-index:5;width:min(700px,calc(100vw - 40px));margin:12px!important;background:var(--pt-panel);padding:10px;border:1px solid var(--pt-border);border-radius:10px}
@media(max-width:620px){.network-graph-wrap,.rel-network-wrap{height:520px!important;min-height:520px!important}.network-graph-node{width:120px!important}.rel-network-node{width:120px!important;max-width:120px!important}}


/* 档案关系树独立层级布局：不允许自由拖动，不与员工关系网共用画布交互 */
.rel-network-wrap{overflow:auto!important;position:relative!important;min-height:560px!important;height:620px!important;padding:0!important;touch-action:pan-x pan-y!important}
.rel-network-center{position:absolute!important;z-index:3!important;margin:0!important;width:170px!important;min-width:170px!important;left:800px;top:500px;transform:translate(-50%,-50%);cursor:default!important}
.rel-network-nodes{position:relative!important;display:block!important;width:1600px!important;height:1100px!important;min-height:1100px!important;padding:0!important;margin:0!important}
.rel-network-svg{position:absolute!important;left:0!important;top:0!important;width:1600px!important;height:1100px!important;pointer-events:none;z-index:1}
.rel-network-node{position:absolute!important;width:128px!important;min-width:0!important;max-width:128px!important;z-index:2!important;cursor:default!important;touch-action:auto!important}
.rel-network-node.dragging{opacity:1!important}
.rel-network-tools{position:sticky!important;left:10px;top:8px;z-index:5;width:max-content;max-width:calc(100% - 20px);margin:8px 10px!important;padding:6px 9px;border-radius:6px;background:var(--pt-panel);font-size:11px!important}
.rel-add{position:sticky!important;left:10px;top:10px;z-index:5;width:min(700px,calc(100vw - 40px));margin:12px!important;background:var(--pt-panel);padding:10px;border:1px solid var(--pt-border);border-radius:10px}
@media(max-width:620px){.rel-network-wrap{height:540px!important;min-height:540px!important}.rel-network-node{width:120px!important;max-width:120px!important}.rel-network-center{width:150px!important;min-width:150px!important}}


/* ===== 档案关系树重做：普通页面内的层级树，不使用独立画布 / SVG ===== */
.rel-tree-inline{position:relative;width:100%;min-width:0;margin:18px 0 4px;padding:0;color:var(--pt-text);}
.rt-caption{margin:0 0 18px;padding:0 0 12px;border-bottom:1px solid var(--pt-border-soft)}
.rt-caption span{display:block;font:10px/1.5 monospace;letter-spacing:2px;color:var(--orange)}
.rt-caption b{display:block;font-size:18px;margin:4px 0 3px}.rt-caption p{font-size:12px;color:var(--pt-muted);line-height:1.7;margin:0}
.rt-zone{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;min-width:0}
.rt-zone-label{font-size:11px;color:var(--pt-muted);letter-spacing:.5px;text-align:center;margin-bottom:2px}
.rt-list{display:flex;flex-wrap:wrap;justify-content:center;align-items:stretch;gap:14px;width:100%;min-width:0}
.rt-up{margin:0 auto 20px;padding-bottom:17px}.rt-up:after{content:"";position:absolute;bottom:0;left:50%;height:15px;border-left:2px solid #7184C9}
.rt-middle{display:grid;grid-template-columns:minmax(0,1fr) minmax(170px,230px) minmax(0,1fr);gap:14px;align-items:center;position:relative}
.rt-side{min-width:0;display:flex;flex-direction:column;gap:9px;align-items:stretch;position:relative}
.rt-side .rt-list{flex-direction:column;align-items:stretch}
.rt-root{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100px;padding:18px 14px;border:2px solid #7184C9;border-radius:16px;background:linear-gradient(145deg,#263D86,#111D4A);color:#fff;text-align:center;box-shadow:0 8px 24px rgba(34,56,130,.16)}
.rt-root:before,.rt-root:after{content:"";position:absolute;top:50%;width:14px;border-top:2px solid #7184C9}.rt-root:before{right:100%}.rt-root:after{left:100%}
.rt-root-mark{font-size:10px;color:#F1B679;letter-spacing:1px}.rt-root strong{font-size:19px;margin:5px 0;overflow-wrap:anywhere}.rt-root small{font-size:11px;color:#D5DDF8}
.rt-node{position:relative;min-width:0;width:100%;padding:12px;border:1px solid color-mix(in srgb,var(--rt-color) 55%,var(--pt-border));border-left:3px solid var(--rt-color);border-radius:10px;background:var(--pt-panel);box-shadow:0 4px 13px rgba(20,35,80,.06);overflow-wrap:anywhere}
.rt-up .rt-node,.rt-down .rt-node{width:min(100%,240px)}
.rt-relation{font-size:11px;color:var(--rt-color);font-weight:700;margin-bottom:5px}.rt-direction{display:inline-block;margin-left:4px;font-size:14px}
.rt-person{display:block;border:0;padding:0;background:none;color:var(--pt-text);font-size:14px;font-weight:750;text-align:left;overflow-wrap:anywhere}.rt-open{cursor:pointer}.rt-open:hover{text-decoration:underline;color:var(--blue-2)}
.rt-note{font-size:11px;color:var(--pt-muted);line-height:1.6;margin-top:5px;white-space:pre-wrap}
.rt-actions{display:flex;gap:4px;flex-wrap:wrap;margin-top:10px;padding-top:8px;border-top:1px solid var(--pt-border-soft)}
.rt-actions button{font-size:10px;padding:4px 6px;border:1px solid var(--pt-border);border-radius:5px;background:var(--pt-input);color:var(--pt-text-soft);cursor:pointer}
.rt-actions button:hover{border-color:var(--rt-color);color:var(--rt-color)}.rt-actions .rt-remove{color:#C04D4D;margin-left:auto}
.rt-down{margin:20px auto 0;padding-top:17px}.rt-down:before{content:"";position:absolute;top:0;left:50%;height:15px;border-left:2px solid #7184C9}
.rt-empty{margin:16px 0;padding:22px 14px;text-align:center;border:1px dashed var(--pt-border);border-radius:10px;color:var(--pt-muted);font-size:12px}
.rt-add{margin-top:22px}
.portal.theme-day .rt-root{background:linear-gradient(145deg,#304EB8,#1C2E6A);color:#fff}
.portal.theme-day .rt-node{background:#fff}
@media(max-width:720px){.rt-middle{grid-template-columns:minmax(0,1fr) minmax(118px,.9fr) minmax(0,1fr);gap:7px}.rt-root{min-height:86px;padding:12px 6px}.rt-root strong{font-size:15px}.rt-node{padding:9px 8px}.rt-actions{gap:3px}.rt-actions button{padding:4px 5px;font-size:9px}.rt-side .rt-list{gap:8px}.rt-up .rt-node,.rt-down .rt-node{width:min(100%,240px)}}
@media(max-width:440px){.rt-middle{grid-template-columns:minmax(0,1fr) 106px minmax(0,1fr);gap:5px}.rt-root:before,.rt-root:after{width:6px}.rt-node{padding:8px 6px}.rt-person{font-size:12px}.rt-relation{font-size:10px}.rt-note{font-size:10px}.rt-actions button{font-size:9px;padding:4px 3px}.rt-actions .rt-remove{margin-left:0}}

/* ===== 多主题可读性修复：组件逐主题映射，强调色白名单保持原样 ===== */
.portal{--pt-panel-2:#1A2B68;--pt-accent:#7898FF;--pt-accent-text:#101A32;--pt-ok:#45C58A;--pt-warn:#E9B45A;--pt-danger:#FF9DA0}
.portal.theme-day{--pt-panel-2:#F0F3FA;--pt-accent:#2E47B8;--pt-accent-text:#FFFFFF;--pt-ok:#237A52;--pt-warn:#A85B16;--pt-danger:#B4232C}
.portal.theme-classic{--pt-accent:#8E2328;--pt-accent-text:#FFF8E8;--pt-highlight:#B52B32;--pt-highlight-bg:#F4DAD5;--pt-highlight-text:#4A1115;--pt-ok:#28745D;--pt-warn:#9A6A20;--pt-danger:#A8202B;--pt-link:#8E2328;--pt-hover:#E3D8C5;--pt-cover-a:#8E2328;--pt-cover-b:#D0484D;--pt-shadow:0 8px 26px rgba(58,42,24,.12);--pt-panel-2:#F0E4CB;--pt-accent:#8E2328;--pt-accent-text:#FFF8E9;--pt-ok:#2E7650;--pt-warn:#9A5B17;--pt-danger:#A52A2A}
.portal.theme-cyber{--pt-panel-2:#0C1428;--pt-accent:#00E5FF;--pt-accent-text:#001820;--pt-highlight:#FF2E88;--pt-highlight-bg:#3A0F24;--pt-highlight-text:#FFE3F1;--pt-ok:#3BE08F;--pt-warn:#FFB547;--pt-danger:#FF4D6D;--pt-link:#7DF3FF;--pt-hover:#17244A;--pt-cover-a:#0B1E52;--pt-cover-b:#FF2E88;--pt-shadow:0 0 0 1px rgba(0,229,255,.08),0 8px 26px rgba(0,0,0,.4)}

/* 卡片与面板：底色和默认字色成对绑定 */
.portal :is(.arc-card,.lib-item,.friend-card,.ev-item,.dossier,.stat-strip .ss,.space-head,.tpl-card,.oa-item,.div-stage,.rel-node,.card-item,.q-vote .vt,.search-row .field,.mem-row,.pop,.msg-menu,.rec-box,.empty,.wanted-card,.dossier-card,.archive-card,.event-card,.space-card,.ask-card,.post-card,.gate-card){color:var(--pt-text)}
.portal :is(.arc-card,.lib-item,.friend-card,.ev-item,.dossier,.stat-strip .ss,.tpl-card,.oa-item,.div-stage,.rel-node,.card-item,.pop,.msg-menu,.rec-box,.wanted-card,.dossier-card,.archive-card,.event-card,.space-card,.ask-card,.post-card,.gate-card){background-color:var(--pt-panel)}
.portal :is(.arc-card,.lib-item,.friend-card,.ev-item,.dossier,.stat-strip .ss,.tpl-card,.oa-item,.div-stage,.rel-node,.card-item,.q-vote .vt,.search-row .field,.mem-row,.pop,.msg-menu,.rec-box,.wanted-card,.dossier-card,.archive-card,.event-card,.space-card,.ask-card,.post-card,.gate-card){border-color:var(--pt-border)}
.portal :is(.arc-card,.lib-item,.friend-card,.ev-item,.dossier,.stat-strip .ss,.tpl-card,.oa-item,.div-stage,.rel-node,.card-item,.pop,.msg-menu,.rec-box,.wanted-card,.dossier-card,.archive-card,.event-card,.space-card,.ask-card,.post-card,.gate-card) :is(h1,h2,h3,h4,h5,p,li,label,.title,.name,.desc,.body,.content,.text,.meta,.sub,.lm,.ey,.d-note,.dv,.oa-top,.ci-body,.ci-combo){color:var(--pt-text)}
.portal :is(.arc-card,.lib-item,.friend-card,.ev-item,.dossier,.stat-strip,.space-head,.tpl-card,.oa-item,.div-stage,.rel-node,.card-item,.q-vote,.search-row,.mem-row,.pop,.msg-menu,.rec-box,.empty) :is(.muted,.hint,.meta,.sub,.desc,.lm,.ey,.time,.date,.rn-note,.ci-combo,.dk,.ss span,.friend-meta,.small-text){color:var(--pt-muted)}
.portal .arc-card :is(p,small,.am,.sub,.desc),.portal .lib-item :is(p,.lm),.portal .friend-card :is(p,small,.fm,.friend-meta),.portal .ev-item :is(p,.ey,.ed,.ev-desc),.portal .dossier :is(.dk,.d-note,.d-row .dv),.portal .space-head :is(.sh-bio,.sh-meta,.sh-info small),.portal .oa-item :is(p,.oa-meta,.oa-desc),.portal .rel-node :is(.rn-rel,.rn-note),.portal .card-item :is(p,.ci-combo),.portal .mem-row :is(small,.muted),.portal .rec-box :is(p,.hint),.portal .empty{color:var(--pt-text-soft)}
.portal .stat-strip .ss b,.portal .lib-item h3,.portal .friend-card h4,.portal .oa-item h4,.portal .rel-node .rn-name,.portal .card-item .ci-body p,.portal .dossier .d-row .dv{color:var(--pt-text)}
.portal .div-stage .div-jian,.portal .div-stage .div-grade{color:var(--pt-accent)}
.portal .rel-node .rn-rel,.portal .card-item button,.portal .msg-menu button.danger{color:var(--pt-danger)}
.portal .pop .pop-item{color:var(--pt-text-soft)}
.portal .pop .pop-item:hover,.portal .msg-menu button:hover{background:var(--pt-panel-2);color:var(--pt-text)}
.portal .pop .pop-item .tag-mini{color:var(--pt-muted)}
.portal .msg-menu button{color:var(--pt-text-soft)}
.portal :is(input,textarea,select,.field){background:var(--pt-input);border-color:var(--pt-border);color:var(--pt-text)}
.portal :is(input,textarea,select,.field)::placeholder{color:var(--pt-muted);opacity:1}
.portal :is(.dossier .d-note,.div-stage .div-mean,.card-item,.mem-row,.pop,.msg-menu){background-color:var(--pt-panel-2)}
.portal .dossier .d-row{border-color:var(--pt-border)}
.portal .ev-tl:before{background:var(--pt-border)}
.portal .ev-item:before{border-color:var(--pt-bg);box-shadow:0 0 0 2px var(--pt-border)}
/* 字卡、聊天列表、录音提示等遗留的固定颜色组件 */
.portal .mode-switch{background:var(--pt-panel-2);border-color:var(--pt-border)}
.portal .mode-switch button{color:var(--pt-text-soft)}
.portal .mode-switch button.on,.portal .mode-switch button.active{background:var(--pt-accent);color:var(--pt-accent-text)}
/* 私信设置抽屉：创作模式 / 字卡模式切换区使用纯白底，保证文字清晰可见 */
#ch-cfg .mode-switch{background:#fff;border:1px solid #E2E8F0;border-radius:8px;box-shadow:0 1px 3px rgba(15,23,42,.08)}
#ch-cfg .mode-switch button{color:#334155}
#ch-cfg .mode-switch button:hover{background:#F1F5F9}
#ch-cfg .mode-switch button.on,#ch-cfg .mode-switch button.active{background:var(--orange);color:#fff}
.portal .card-cfg select{background:var(--pt-input);border-color:var(--pt-border);color:var(--pt-text)}
.portal .card-cfg label,.portal .card-cfg .hint{color:var(--pt-text-soft)}
.portal .chat-list-item{background:var(--pt-panel);border-color:var(--pt-border);color:var(--pt-text)}
.portal .chat-list-item :is(h4,.name,.title){color:var(--pt-text)}
.portal .chat-list-item :is(p,.meta,.preview,.time){color:var(--pt-muted)}
.portal .rec-tip{color:var(--pt-muted)}
.portal .q-vote .vote-caption{color:var(--pt-muted)}



/* ===== 古风卷宗专项修复：浅宣纸背景统一使用墨色文字 ===== */
.portal.theme-classic{--pt-accent:#8E2328;--pt-accent-text:#FFF8E8;--pt-highlight:#B52B32;--pt-highlight-bg:#F4DAD5;--pt-highlight-text:#4A1115;--pt-ok:#28745D;--pt-warn:#9A6A20;--pt-danger:#A8202B;--pt-link:#8E2328;--pt-hover:#E3D8C5;--pt-cover-a:#8E2328;--pt-cover-b:#D0484D;--pt-shadow:0 8px 26px rgba(58,42,24,.12);
  --pt-bg:#E9DFC7;
  --pt-topbar:#F6EEDC;
  --pt-sidebar:#F0E6D1;
  --pt-panel:#F7F0E1;
  --pt-panel-2:#F0E4CB;
  --pt-input:#FFFCF4;
  --pt-border:#C9B58C;
  --pt-border-soft:#D9C9A8;
  --pt-text:#332719;
  --pt-text-soft:#574531;
  --pt-muted:#79674E;
  --pt-accent:#8E2328;
  --pt-accent-text:#FFF8E9;
  --pt-ok:#276747;
  --pt-warn:#87500F;
  --pt-danger:#98232B;
  color:var(--pt-text);
}
/* 不让早期深色主题的固定文字色泄漏到古风浅色卡片中 */
.portal.theme-classic :is(.arc-card,.lib-item,.friend-card,.ev-item,.dossier,.stat-strip,.space-head,.tpl-card,.oa-item,.div-stage,.rel-node,.card-item,.q-vote,.search-row,.mem-row,.pop,.msg-menu,.rec-box,.empty,.wanted-card,.dossier-card,.archive-card,.event-card,.space-card,.ask-card,.post-card,.gate-card,.chat-list-item,.chat-window,.chat-panel,.card-cfg,.staff-card-edit-grid,.rel-network-wrap,.rel-network-node,.modal,.modal-box,.modal-content,.form-card,.profile-card,.space-section,.oa-panel,.draw-panel){
  color:var(--pt-text);
  border-color:var(--pt-border);
}
.portal.theme-classic :is(.arc-card,.lib-item,.friend-card,.ev-item,.dossier,.stat-strip .ss,.tpl-card,.oa-item,.div-stage,.rel-node,.card-item,.q-vote .vt,.search-row .field,.mem-row,.pop,.msg-menu,.rec-box,.empty,.wanted-card,.dossier-card,.archive-card,.event-card,.space-card,.ask-card,.post-card,.gate-card,.chat-list-item,.chat-panel,.form-card,.profile-card,.space-section,.oa-panel,.draw-panel){
  background-color:var(--pt-panel);
}
.portal.theme-classic :is(.arc-card,.lib-item,.friend-card,.ev-item,.dossier,.stat-strip,.space-head,.tpl-card,.oa-item,.div-stage,.rel-node,.card-item,.q-vote,.search-row,.mem-row,.pop,.msg-menu,.rec-box,.empty,.wanted-card,.dossier-card,.archive-card,.event-card,.space-card,.ask-card,.post-card,.gate-card,.chat-list-item,.chat-window,.chat-panel,.card-cfg,.staff-card-edit-grid,.rel-network-wrap,.rel-network-node,.modal,.modal-box,.modal-content,.form-card,.profile-card,.space-section,.oa-panel,.draw-panel) :is(h1,h2,h3,h4,h5,h6,p,span,small,strong,b,em,i,label,li,dt,dd,td,th,div,a,summary,figcaption,legend,.title,.name,.desc,.body,.content,.text,.meta,.sub,.lm,.ey,.d-note,.dv,.oa-top,.ci-body,.ci-combo,.friend-meta,.sh-bio,.sh-meta,.sh-info,.rn-rel,.rn-note,.fm,.am,.ed,.ev-desc,.dk,.hint,.muted,.time,.date,.vote-caption,.field-label,.help-text):not(.btn):not(.btn *):not(.tag):not(.tag *):not(.lvl-badge):not(.lvl-badge *):not(.sec-badge):not(.sec-badge *):not(.wanted-banner):not(.wanted-banner *):not(.rt-root):not(.rt-root *):not(.rel-center):not(.rel-center *):not(.staff-card-preview):not(.staff-card-preview *):not(.network-intro):not(.network-intro *){
  color:var(--pt-text);
}
/* 辅助信息使用可读的棕灰色，不沿用旧主题的灰蓝色 */
.portal.theme-classic :is(.arc-card,.lib-item,.friend-card,.ev-item,.dossier,.stat-strip,.space-head,.tpl-card,.oa-item,.div-stage,.rel-node,.card-item,.q-vote,.search-row,.mem-row,.pop,.msg-menu,.rec-box,.empty,.wanted-card,.dossier-card,.archive-card,.event-card,.space-card,.ask-card,.post-card,.gate-card,.chat-list-item,.chat-window,.chat-panel,.card-cfg,.staff-card-edit-grid,.rel-network-wrap,.rel-network-node,.modal,.modal-box,.modal-content,.form-card,.profile-card,.space-section,.oa-panel,.draw-panel) :is(.muted,.hint,.meta,.sub,.desc,.lm,.ey,.time,.date,.rn-note,.dk,.ss span,.friend-meta,.small-text,.sh-meta,.sh-info small,.vote-caption,.help-text,.placeholder-text){color:#79674E;}
/* 所有常见表单控件都使用浅纸底、深墨字；覆盖遗留的 staff-card/edit CSS */
.portal.theme-classic :is(input,textarea,select,button.field,.field,.search-row .field,.card-cfg select,.staff-card-edit-grid .field,.portal-form .field){
  background-color:#FFFCF4;
  color:#332719;
  border-color:#C9B58C;
}
.portal.theme-classic :is(input,textarea,select,.field)::placeholder{color:#927D60;opacity:1;}
.portal.theme-classic :is(input,textarea,select,.field):disabled{color:#79674E;opacity:1;}
.portal.theme-classic .p-main a:not(.btn):not(.tag):not(.lvl-badge):not(.sec-badge){color:#8E2328;}
.portal.theme-classic .pop .pop-item,.portal.theme-classic .msg-menu button{color:#574531;}
.portal.theme-classic .pop .pop-item:hover,.portal.theme-classic .msg-menu button:hover{background:#E8D9BC;color:#332719;}
.portal.theme-classic .msg.me .bubble,.portal.theme-classic .theme-switch button.on{background:#8E2328;color:#FFF8E9;}
.portal.theme-classic .msg.them .bubble{background:#F9F0DF;color:#3D3021;border-color:#DCCAA7;}
/* 固定强调色白名单不参与以上普通文字映射 */
/* 古风主题强调色逐项恢复：不要让通缉令标题继承普通正文色 */
.portal.theme-classic .wanted-banner{color:#B4232C;}
.portal.theme-classic .wanted-stamp{color:#8E2328;border-color:#8E2328;}
.portal.theme-classic .wanted-reward strong{color:#9A5B17;}
.portal.theme-classic .wanted-note{color:#59442F;border-left-color:#B4232C;}
.portal.theme-classic .wanted-name{color:#332719;}

/* 古风卷宗：关系树（异闻关系网）使用宣纸底 + 墨色文字 */
.portal.theme-classic .rel-graph .rel-node,
.portal.theme-classic .rel-tree .rel-node{background:#FBF5E8;border-color:#C9B58C;color:#332719;}
.portal.theme-classic .rel-graph .rn-name,
.portal.theme-classic .rel-graph .rn-name.rn-open,
.portal.theme-classic .rel-tree .rn-name{color:#332719;}
.portal.theme-classic .rel-graph .rn-note,
.portal.theme-classic .rel-graph .rn-rel,
.portal.theme-classic .rel-tree .rn-note{color:#66523A;}
.portal.theme-classic .rel-graph .rn-edit{color:#574531;border-color:#C9B58C;background:#FFF9ED;}
.portal.theme-classic .rel-graph .rn-del,
.portal.theme-classic .rel-tree .rn-del{color:#A52A2A;}
.portal.theme-classic .rel-graph .rel-center,
.portal.theme-classic .rel-tree .rel-center{background:#8E2328;color:#FFF8E9;}
.portal.theme-classic .rel-graph .rn-link,
.portal.theme-classic .rel-graph .rn-wire{color:#FFFFFF;}

/* 古风卷宗：员工关系网独立配色。浅色节点绝不使用白字 */
.portal.theme-classic .network-graph-wrap{background:#E8D9BC;border-color:#C9B58C;}
.portal.theme-classic .network-graph-node,
.portal.theme-classic .net-node,
.portal.theme-classic .rel-network-node{background:#FBF5E8;border-color:#C9B58C;color:#332719;}
.portal.theme-classic .network-graph-node span,
.portal.theme-classic .network-graph-node small,
.portal.theme-classic .net-node-kicker,
.portal.theme-classic .rel-network-node span{color:#796347;}
.portal.theme-classic .network-graph-node b,
.portal.theme-classic .net-node h3,
.portal.theme-classic .net-node p,
.portal.theme-classic .rel-network-node b,
.portal.theme-classic .rel-network-node p{color:#332719;}
.portal.theme-classic .net-node.net-root{background:#F3E2C4;border-color:#B98249;}
.portal.theme-classic .net-edge-row{background:#FBF5E8;border-color:#C9B58C;color:#332719;}
.portal.theme-classic .net-endpoint{background:#F0E4CB;border-color:#C9B58C;color:#332719;}
.portal.theme-classic .net-edge-meta{color:#574531;}
.portal.theme-classic .net-edge-meta small{color:#79674E;}
.portal.theme-classic .network-graph-empty{color:#66523A;border-color:#BDA77D;}
.portal.theme-classic .network-graph-svg text{fill:#332719;}
.portal.theme-classic .network-intro{background:linear-gradient(125deg,#54272A,#7B3030 70%,#8E2328);border-color:#8E2328;color:#FFF8E9;}
.portal.theme-classic .network-intro h2{color:#FFF8E9;}
.portal.theme-classic .network-intro .ph-sub,
.portal.theme-classic .network-intro .network-legend{color:#F4E6D1;}

/* 强调色白名单：只让有意设计的深色/强调色块保留浅色字 */
.portal.theme-classic .btn:not(.btn-ghost),
.portal.theme-classic .rel-center,
.portal.theme-classic .rt-root,
.portal.theme-classic .network-intro,
.portal.theme-classic .staff-card-preview{color:#FFF8E9;}
.portal.theme-classic .btn.btn-ghost{color:#574531;}
.portal.theme-classic .lvl-badge,
.portal.theme-classic .sec-badge,
.portal.theme-classic .tag{color:inherit;}




/* ===== 四主题统一精修：更清晰的层级、按钮反馈与组件一致性 ===== */
.portal{--ui-radius:14px;--ui-line:var(--pt-border);--ui-card-shadow:var(--pt-shadow)}
.portal .p-panel,.portal .card-box,.portal .arc-card,.portal .lib-item,.portal .friend-card,.portal .oa-item,.portal .event-card,.portal .post-card,.portal .space-card{transition:background-color .2s,border-color .2s,box-shadow .2s;}
.portal .p-panel{border:1px solid var(--pt-border-soft);box-shadow:var(--pt-shadow)}
.portal .btn,.portal button.ft,.portal .theme-switch button{transition:transform .16s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}
.portal .btn:active,.portal button.ft:active,.portal .theme-switch button:active{transform:translateY(1px) scale(.985)}
.portal :is(input,textarea,select,.field):focus-visible{outline:2px solid var(--pt-accent);outline-offset:2px;border-color:var(--pt-accent)}
.portal .q-vote .vt{background:var(--pt-panel-2);border:1px solid var(--pt-border);color:var(--pt-text-soft);box-shadow:0 2px 5px rgba(0,0,0,.06);font-weight:800}
.portal .q-vote .vt.on,.portal .q-vote .vt[data-voted="1"]{background:var(--pt-accent)!important;border-color:var(--pt-accent)!important;color:var(--pt-accent-text)!important;box-shadow:0 0 0 3px var(--pt-glow),0 4px 12px rgba(0,0,0,.12);}
.portal .q-vote .vt.on .vote-arrow,.portal .q-vote .vt[data-voted="1"] .vote-arrow{transform:translateY(-1px);}
.portal .q-vote .vt .vote-arrow{transition:transform .16s ease}
.portal .q-vote .vt:focus-visible{outline:3px solid var(--pt-highlight);outline-offset:3px}
.portal .q-vote .vote-caption{color:var(--pt-muted)}
.portal.theme-default .p-panel{border-radius:16px}
.portal.theme-day .p-panel,.portal.theme-day .card-box{border-radius:16px;box-shadow:0 8px 24px rgba(32,52,90,.065)}
.portal.theme-day .q-vote .vt{background:linear-gradient(180deg,#fff,#f1f5ff)}
.portal.theme-classic{--pt-bg:#EDE2CC;--pt-panel:#FFF8E9;--pt-panel-2:#F0E4CB;--pt-topbar:#F8F0DF;--pt-sidebar:#E9DCC2;--pt-border:#C9B58C;--pt-border-soft:#DDCBA8;--pt-text:#332719;--pt-text-soft:#574531;--pt-muted:#79674E;--pt-accent:#8E2328;--pt-accent-text:#FFF8E9;--pt-highlight:#B52B32;--pt-glow:rgba(142,35,40,.12);}
.portal.theme-classic .p-main{background:radial-gradient(ellipse at 50% 0,rgba(255,250,235,.8),transparent 58%),repeating-linear-gradient(0deg,rgba(115,82,40,.018) 0,rgba(115,82,40,.018) 1px,transparent 1px,transparent 5px),var(--pt-bg)}
.portal.theme-classic .p-panel,.portal.theme-classic .card-box,.portal.theme-classic .arc-card,.portal.theme-classic .dossier-card,.portal.theme-classic .archive-card,.portal.theme-classic .wanted-card,.portal.theme-classic .post-card,.portal.theme-classic .space-card{border:1px solid #D5C29B;border-top:3px solid #8E2328;border-radius:5px;box-shadow:0 6px 18px rgba(77,52,23,.09)}
.portal.theme-classic .p-panel h2,.portal.theme-classic .p-panel h3{letter-spacing:.025em}
.portal.theme-classic .p-panel h2:before{content:'▌';color:#8E2328;margin-right:7px;font-size:.85em}
.portal.theme-classic .btn-orange,.portal.theme-classic .btn:not(.btn-ghost){background:linear-gradient(135deg,#9C2A30,#7E1D25);border-color:#7E1D25;color:#FFF8E9;box-shadow:0 2px 0 #5B151A}
.portal.theme-classic .btn-ghost{border-color:#C9B58C;color:#624B32;background:#F8EED9}
.portal.theme-classic .q-vote .vt{background:#F8EED9;border-color:#C9B58C;color:#624B32}
.portal.theme-classic .q-vote .vt.on,.portal.theme-classic .q-vote .vt[data-voted="1"]{background:#8E2328!important;border-color:#8E2328!important;color:#FFF8E9!important}
.portal.theme-classic .q-vote .vote-count{color:#332719}
.portal.theme-classic .q-item{padding:14px;border-bottom:1px solid #DDCBA8}
.portal.theme-classic .q-item:hover{background:rgba(255,248,233,.65)}
.portal.theme-classic .p-crumb{color:#79674E}
.portal.theme-classic .p-crumb a,.portal.theme-classic .p-main a:not(.btn){color:#8E2328}
.portal.theme-cyber{--pt-bg:#080B1A;--pt-panel:#111A36;--pt-panel-2:#0C1428;--pt-text:#E7F1FF;--pt-text-soft:#A5BBE6;--pt-muted:#7F96C5;--pt-accent:#00E5FF;--pt-accent-text:#001820;--pt-highlight:#FF2E88;--pt-glow:rgba(0,229,255,.14)}
.portal.theme-cyber .p-panel,.portal.theme-cyber .card-box,.portal.theme-cyber .arc-card,.portal.theme-cyber .post-card,.portal.theme-cyber .space-card{border-color:#263967;box-shadow:0 0 0 1px rgba(0,229,255,.035),0 10px 30px rgba(0,0,0,.2)}
.portal.theme-cyber .q-vote .vt{background:linear-gradient(145deg,#121E3D,#0A1228);border-color:#2A4778;color:#B6D6F5}
.portal.theme-cyber .q-vote .vt.on,.portal.theme-cyber .q-vote .vt[data-voted="1"]{background:#00E5FF!important;border-color:#00E5FF!important;color:#001820!important;box-shadow:0 0 16px rgba(0,229,255,.22)}
@media(max-width:680px){.portal .p-panel{padding:14px}.portal.theme-classic .p-panel{padding:13px 12px}.portal .q-vote .vt{min-height:44px}.portal .q-item{gap:10px}}



.yj-library-search{display:flex;gap:8px;align-items:stretch;margin:12px 0}.yj-library-search input{flex:1;min-width:0;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--ink)}.yj-classic-source,.yj-classic-status{font-size:12px;line-height:1.8;color:var(--muted)}.yj-classic-source a,.yj-classic-missing a{color:var(--orange)}.yj-classic-layer{padding:12px 0;border-top:1px solid var(--line)}.yj-classic-layer h4{margin:0 0 8px;color:var(--ink)}.yj-classic-layer pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;line-height:1.95;margin:0;color:var(--ink)}.yj-classic-missing{padding:14px;background:var(--panel2);border-radius:10px;line-height:1.8}.yj-classic-missing p{margin:8px 0}.yj-classic-status{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}@media(max-width:560px){.yj-library-search{flex-direction:column}.yj-library-search .btn{width:100%}}
.yj-module{max-width:980px;margin:0 auto;padding:clamp(14px,3vw,28px)}.yj-head{text-align:center;padding:12px 0 20px}.yj-kicker{letter-spacing:.22em;font-size:12px;color:var(--orange)}.yj-head h2{font-size:clamp(25px,5vw,38px);margin:8px 0}.yj-head>p{color:var(--muted);margin:5px}.yj-note{font-size:13px;line-height:1.8;background:var(--panel2);padding:12px;border-radius:10px}.yj-tabs,.yj-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.yj-card{border:1px solid var(--line);border-radius:14px;padding:clamp(12px,3vw,22px);margin:14px 0;background:var(--panel)}.yj-card h3{margin:0 0 10px}.yj-card p{line-height:1.8;color:var(--muted)}.yj-inputs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}.yj-inputs label{display:grid;gap:6px}.yj-inputs input{width:100%;min-width:0}.yj-index{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}.yj-index-item{display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;padding:9px 4px;border:1px solid var(--line);border-radius:8px;background:var(--panel2);color:var(--ink);cursor:pointer}.yj-index-item small{font-size:10px;color:var(--muted)}.yj-line-row{display:grid;grid-template-columns:38px 1fr 38px;gap:8px;align-items:center;margin:8px 0}.yj-line-row b{text-align:center;letter-spacing:2px;font-size:18px}.yj-line-row .moving{color:var(--orange)}.yj-line-row small{color:var(--orange);font-size:11px}.yj-result{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.yj-result>div{padding:12px;border:1px solid var(--line);border-radius:10px}.yj-result h3{margin:5px 0 16px}.yj-source{font-size:12px}.yj-source a{color:var(--orange)}.yj-throw{display:inline-block;padding:7px 10px;margin:4px;border-radius:8px;background:var(--panel2);border:1px solid var(--line)}@media(max-width:560px){.yj-index{grid-template-columns:repeat(4,minmax(0,1fr))}.yj-inputs{grid-template-columns:1fr}.yj-result{grid-template-columns:1fr}.yj-tabs .btn{flex:1;font-size:12px;padding:9px 6px}}

/* 主题自适应的聊天清理与易经交互优化 */
.btn-danger-soft{border:1px solid color-mix(in srgb,var(--orange) 42%,var(--line));background:color-mix(in srgb,var(--orange) 10%,var(--panel));color:var(--ink);white-space:nowrap}
.btn-danger-soft:hover{background:color-mix(in srgb,var(--orange) 20%,var(--panel));border-color:var(--orange)}
#msg-clear-all{margin-left:auto}
.yj-module{--yj-accent:var(--orange)}
.yj-head{position:relative;overflow:hidden;border-radius:16px;margin-bottom:14px;background:radial-gradient(ellipse at 50% 0%,color-mix(in srgb,var(--yj-accent) 13%,transparent),transparent 70%)}
.yj-kicker{display:inline-block;padding:5px 10px;border:1px solid color-mix(in srgb,var(--yj-accent) 38%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--yj-accent) 8%,var(--panel))}
.yj-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.yj-tabs .btn{min-height:46px;border-radius:11px;font-weight:650}
.yj-card{box-shadow:0 5px 20px color-mix(in srgb,var(--ink) 4%,transparent);transition:border-color .18s,transform .18s}
.yj-card:focus-within{border-color:color-mix(in srgb,var(--yj-accent) 55%,var(--line))}
.yj-inputs label{font-size:13px;color:var(--muted);font-weight:600}
.yj-inputs input{box-sizing:border-box;min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--ink);padding:10px 12px}
.yj-actions .btn{min-height:42px;flex:1}
.yj-library-search input{min-height:44px;box-sizing:border-box}
.yj-library-search .btn{min-width:92px}
.yj-index-item{min-height:44px;transition:background .15s,border-color .15s,transform .15s;}
.yj-index-item:hover{border-color:color-mix(in srgb,var(--yj-accent) 60%,var(--line));background:color-mix(in srgb,var(--yj-accent) 9%,var(--panel2));transform:translateY(-1px)}
.yj-index-item:focus-visible,.yj-tabs .btn:focus-visible,.yj-actions .btn:focus-visible{outline:2px solid var(--yj-accent);outline-offset:2px}
.yj-index{grid-template-columns:repeat(8,minmax(0,1fr))}
.yj-classic-hitlist{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px;margin:12px 0}
.yj-classic-hitlist .yj-index-item{flex-direction:column;gap:2px;padding:9px 4px}
.yj-classic-entry{border:1px solid var(--line);border-radius:12px;padding:12px 16px;background:var(--panel2)}
.yj-classic-layer pre{font-family:'Noto Serif CJK SC','Songti SC','SimSun',serif;font-size:15px}
.div-wrap .div-stage{border-radius:18px;padding:clamp(18px,4vw,32px);background:linear-gradient(155deg,color-mix(in srgb,var(--pt-panel) 90%,var(--pt-accent) 10%),var(--pt-panel));border:1px solid color-mix(in srgb,var(--pt-accent) 24%,transparent)}
.div-wrap .div-poem{white-space:pre-line;line-height:2.1;font-size:17px;letter-spacing:.04em}
.div-wrap .div-mean{max-width:620px;margin:12px auto 0;line-height:1.9}
@media(max-width:680px){#msg-clear-all{margin-left:0}.yj-tabs{grid-template-columns:1fr}.yj-index{grid-template-columns:repeat(4,minmax(0,1fr))}.yj-classic-hitlist{grid-template-columns:repeat(4,minmax(0,1fr))}.yj-library-search .btn{width:100%}.div-wrap .div-poem{font-size:16px}}


/* 聊天记录性能与移动端适配：消息列表独立滚动，避免长对话撑高整页 */
.chat-window{height:calc(100dvh - 205px);height:calc(100vh - 205px);min-height:420px;max-height:900px;overflow:hidden;box-sizing:border-box}
.chat-window .chat-scroll{flex:1 1 auto;height:0;min-height:0;max-height:none;overflow-y:auto;overscroll-behavior:contain;overflow-anchor:auto;scrollbar-gutter:stable;padding:14px 6px}
.chat-window .chat-pagination{flex:0 0 auto;min-height:42px;flex-wrap:wrap;border-top:1px solid var(--pt-border);border-bottom:1px solid var(--pt-border);font-size:12px;color:var(--pt-muted)}
.chat-window .chat-pagination button{min-height:34px;touch-action:manipulation}
.chat-head,.chat-input,.card-cfg{flex-shrink:0;min-width:0}
.chat-head .ch-actions{flex-wrap:wrap;justify-content:flex-end;min-width:0}
.chat-head h3,.chat-head>div{min-width:0;overflow-wrap:anywhere}
.chat-input textarea{min-width:0;max-width:100%}
@media(max-width:680px){
  .chat-window{height:calc(100dvh - 175px);min-height:390px;max-height:none}
  .chat-window .chat-scroll{padding:10px 3px}
  .chat-head{gap:8px;padding-bottom:10px}
  .chat-head>div:nth-child(2){flex:1 1 calc(100% - 60px)}
  .chat-head .ch-actions{width:100%;display:flex;gap:6px;justify-content:flex-start}
  .chat-head .ch-actions .btn,.chat-head .ch-actions a{flex:1 1 auto;min-height:36px;white-space:normal;justify-content:center}
  .chat-window .card-cfg{max-height:24dvh;overflow:auto;padding:8px!important}
  .chat-window .chat-pagination{gap:5px!important;padding:7px 3px!important}
  .chat-window .chat-pagination span{flex:1 1 100%;text-align:center;order:-1}
  .chat-window .chat-pagination button{flex:1 1 40%;font-size:12px}
  .chat-input{padding-top:8px;gap:5px}
  .chat-input .ib-btn{width:34px;min-width:34px;flex:0 0 34px;padding:0}
  .chat-input #ch-send,.chat-input #rm-send,.chat-input #wg-send{min-height:42px;padding:0 11px;flex:0 0 auto}
  .chat-input textarea{min-height:42px;max-height:100px;padding:9px 10px;font-size:16px}
  .chat-window .msg{max-width:94%}
}
@media(max-width:380px){
  .chat-window{height:calc(100dvh - 155px);min-height:360px}
  .chat-head .ch-actions .btn,.chat-head .ch-actions a{font-size:11px;padding:6px}
  .chat-window .chat-scroll{gap:4px}
}


/* 帖子消息中心：使用主题变量，跟随默认/日间/古风/赛博主题 */
.fnc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:4px 2px 18px;border-bottom:1px solid var(--pt-border)}
.fnc-kicker{font-size:10px;letter-spacing:.18em;font-weight:800;color:var(--pt-accent,var(--pt-muted));margin-bottom:7px}
.fnc-head h2{margin:0 0 8px}.fnc-head .ph-sub{max-width:680px;line-height:1.8}
.fnc-count{min-width:82px;padding:13px 16px;border:1px solid var(--pt-border);border-radius:16px;background:var(--pt-panel-2,var(--pt-panel));text-align:center;display:flex;flex-direction:column;gap:2px;flex-shrink:0}
.fnc-count strong{font-size:27px;line-height:1.1;color:var(--pt-accent,var(--pt-text))}.fnc-count span{font-size:11px;color:var(--pt-muted)}
.fnc-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:16px 0;border-bottom:1px solid var(--pt-border)}.fnc-filters,.fnc-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.fnc-list{display:grid;gap:10px;padding-top:14px}
.fnc-item{position:relative;display:flex;align-items:flex-start;gap:13px;padding:16px;border:1px solid var(--pt-border);border-radius:15px;background:var(--pt-panel);transition:transform .18s,border-color .18s,background .18s}.fnc-item:hover{transform:translateY(-1px);border-color:var(--pt-accent,var(--pt-border))}.fnc-item.is-unread{background:var(--pt-panel-2,var(--pt-panel));box-shadow:inset 3px 0 0 var(--pt-accent,var(--blue-2))}
.fnc-icon{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;flex-shrink:0;font-size:20px;font-weight:800;position:relative}.fnc-icon .fnc-icon-num{position:absolute;top:-8px;right:-8px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#E5484D;color:#fff;font-size:10.5px;font-style:normal;font-weight:800;line-height:18px;text-align:center;box-shadow:0 1px 4px rgba(229,72,77,.35)}.fnc-icon.is-reply{background:color-mix(in srgb,var(--pt-accent,var(--blue-2)) 16%,transparent);color:var(--pt-accent,var(--pt-text))}.fnc-icon.is-growth{background:color-mix(in srgb,#36a779 16%,transparent);color:#36a779}
.fnc-body{flex:1;min-width:0}.fnc-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.fnc-title-row strong{font-size:14px;color:var(--pt-text);line-height:1.5}.fnc-title-row time{font-size:11px;color:var(--pt-muted);white-space:nowrap}.fnc-body>p{font-size:13px;line-height:1.75;color:var(--pt-muted);margin:6px 0 9px;overflow-wrap:anywhere}.fnc-post-title{font-size:12px;color:var(--pt-text);padding:8px 10px;border-radius:8px;background:var(--pt-bg,var(--pt-panel));border:1px solid var(--pt-border);overflow-wrap:anywhere}.fnc-item-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.fnc-dot{width:7px;height:7px;border-radius:50%;background:var(--pt-accent,var(--blue-2));flex-shrink:0;margin-top:7px}.fnc-empty{padding:42px 15px;text-align:center}.fnc-empty p{color:var(--pt-muted);margin-top:8px}
.chat-list-item{border:1px solid transparent;transition:background .18s,border-color .18s}.chat-list-item.is-pinned{border-color:var(--pt-border);background:var(--pt-panel-2,var(--pt-panel))}.chat-list-item .chat-contact-right{gap:8px}.chat-pin-btn{border:0;background:transparent;color:var(--pt-muted);font-size:19px;cursor:pointer;border-radius:8px;width:30px;height:30px}.chat-pin-btn:hover{background:var(--pt-panel-2,var(--pt-panel));color:var(--pt-accent,var(--pt-text))}.chat-list-item.is-pinned .chat-pin-btn,.chat-pin-label{color:var(--pt-accent,var(--pt-text))}.chat-pin-label{font-size:10px;padding:3px 6px;border-radius:6px;background:var(--pt-panel-2,var(--pt-panel));white-space:nowrap}
.portal.theme-day .fnc-item,.portal.theme-day .fnc-count{background:#fff}.portal.theme-classic .fnc-item,.portal.theme-classic .fnc-count{background:#FFF8E9;border-color:#D5C29B}.portal.theme-classic .fnc-title-row strong,.portal.theme-classic .fnc-post-title{color:#40291F}.portal.theme-cyber .fnc-item,.portal.theme-cyber .fnc-count{background:rgba(5,24,25,.86);border-color:#245C50}.portal.theme-cyber .fnc-title-row strong,.portal.theme-cyber .fnc-post-title{color:#E0F7EA}
@media(max-width:600px){.fnc-head{gap:8px}.fnc-count{min-width:62px;padding:10px}.fnc-count strong{font-size:22px}.fnc-item{padding:12px;gap:9px}.fnc-icon{width:34px;height:34px;border-radius:10px}.fnc-title-row{flex-direction:column;gap:3px}.fnc-toolbar{align-items:flex-start}.fnc-actions{width:100%}.fnc-actions .btn{flex:1}.fnc-item-actions .btn{min-height:34px}.chat-pin-label{display:none}}


.chat-contact-rail .chat-list-item.is-active-chat{outline:2px solid var(--pt-accent,var(--accent,#3155c8));background:var(--pt-panel-2,rgba(49,85,200,.08));}
.chat-contact-rail .chat-list-item{cursor:pointer;}


/* ===== 原样式块：chat-clear-and-yijing-contrast-fix ===== */

/* 聊天清理入口：高对比、明确可见 */
#msg-clear-all{display:inline-flex!important;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:8px 12px!important;font-weight:750!important;border-radius:9px!important;flex:0 0 auto;position:relative;z-index:2}
#msg-clear-all span{font-size:17px;line-height:1}
@media(max-width:600px){#msg-clear-all{margin-left:0!important;white-space:normal;max-width:100%}}
/* 默认深色主题：易经模块正文、索引按钮、原文均使用浅色 */
.portal:not(.theme-day):not(.theme-classic):not(.theme-cyber):not(.theme-rose):not(.theme-aurora) .yj-module{color:#F3F6FF;--yj-fg:#F3F6FF;--yj-muted:#B8C7EC;--yj-border:#34477D;--yj-surface:#172653;--yj-surface-2:#1C2E60}
.portal:not(.theme-day):not(.theme-classic):not(.theme-cyber):not(.theme-rose):not(.theme-aurora) .yj-module :is(h2,h3,h4,label,.yj-index-item,.yj-classic-layer pre){color:var(--yj-fg)!important}
.portal:not(.theme-day):not(.theme-classic):not(.theme-cyber):not(.theme-rose):not(.theme-aurora) .yj-module :is(p,.yj-classic-source,.yj-classic-status,.yj-index-item small,.yj-inputs label){color:var(--yj-muted)!important}
.portal:not(.theme-day):not(.theme-classic):not(.theme-cyber):not(.theme-rose):not(.theme-aurora) .yj-module :is(.yj-card,.yj-classic-entry,.yj-result>div){background:var(--yj-surface)!important;border-color:var(--yj-border)!important}
.portal:not(.theme-day):not(.theme-classic):not(.theme-cyber):not(.theme-rose):not(.theme-aurora) .yj-module :is(.yj-note,.yj-index-item,.yj-inputs input,.yj-library-search input,.yj-throw){background:var(--yj-surface-2)!important;color:var(--yj-fg)!important;border-color:var(--yj-border)!important}
.portal:not(.theme-day):not(.theme-classic):not(.theme-cyber):not(.theme-rose):not(.theme-aurora) .yj-module input::placeholder{color:#A8B8E8!important;opacity:1}
/* 赛博霓虹：冰青浅字配深蓝底，霓虹色只用于强调 */
.portal.theme-cyber .yj-module{color:#EAFBFF;--yj-fg:#EAFBFF;--yj-muted:#B9D8E4;--yj-border:#24536A;--yj-surface:#0D2638;--yj-surface-2:#123449;--yj-accent:#00D9F5}
.portal.theme-cyber .yj-module :is(h2,h3,h4,label,.yj-index-item,.yj-classic-layer pre){color:var(--yj-fg)!important}
.portal.theme-cyber .yj-module :is(p,.yj-classic-source,.yj-classic-status,.yj-index-item small,.yj-inputs label){color:var(--yj-muted)!important}
.portal.theme-cyber .yj-module :is(.yj-card,.yj-classic-entry,.yj-result>div){background:var(--yj-surface)!important;border-color:var(--yj-border)!important}
.portal.theme-cyber .yj-module :is(.yj-note,.yj-index-item,.yj-inputs input,.yj-library-search input,.yj-throw){background:var(--yj-surface-2)!important;color:var(--yj-fg)!important;border-color:var(--yj-border)!important}
.portal.theme-cyber .yj-module :is(.yj-classic-source a,.yj-source a){color:#5CEBFF!important}
.portal.theme-cyber .yj-module input::placeholder{color:#82B7C8!important;opacity:1}
.portal.theme-cyber #msg-clear-all{background:#123449!important;border-color:#00D9F5!important;color:#EAFBFF!important}

/* ===== 原样式块：theme-contrast-polish ===== */

/* 默认深蓝主题：统一使用主题变量，避免全局浅色表单上出现深色标签 */
.portal:not(.theme-day):not(.theme-classic):not(.theme-cyber):not(.theme-rose):not(.theme-aurora){
  --pt-bg:#0D1740;--pt-topbar:#0A1335;--pt-sidebar:#0B1539;
  --pt-panel:#172653;--pt-panel-2:#1C2E60;--pt-input:#101D49;
  --pt-border:#30447E;--pt-border-soft:#26396E;
  --pt-text:#F3F6FF;--pt-text-soft:#D3DDF8;--pt-muted:#A8B8E8;
  --pt-accent:#6D8CFF;--pt-accent-text:#FFFFFF;--pt-link:#A9C2FF;
  --pt-hover:#21366F;--pt-glow:rgba(109,140,255,.16);
  color:var(--pt-text);
}
.portal label.fl,.portal .fl,.portal .field-label,.portal .form-label{color:var(--pt-text-soft)!important}
.portal input:not([type="checkbox"]):not([type="radio"]):not([type="color"]),
.portal textarea,.portal select,.portal .field{
  background:var(--pt-input);color:var(--pt-text);border-color:var(--pt-border);
}
.portal input::placeholder,.portal textarea::placeholder{color:var(--pt-muted);opacity:1}
.portal input:focus,.portal textarea:focus,.portal select:focus,.portal .field:focus{
  outline:none;border-color:var(--pt-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--pt-accent) 22%,transparent)
}
.portal .p-panel,.portal .card-box,.portal .tpl-card,.portal .friend-card,.portal .arc-card,.portal .lib-item{
  color:var(--pt-text);border-color:var(--pt-border)
}
.portal .tpl-card .tc-name{color:var(--pt-text-soft);background:var(--pt-panel)}
.portal .side-item{color:var(--pt-text-soft)}
.portal .side-item.on{color:#fff;background:var(--pt-accent)}
.portal button:not(.on){transition:background-color .16s,border-color .16s,color .16s,transform .16s}
.portal button:focus-visible,.portal [role="button"]:focus-visible{outline:2px solid var(--pt-accent);outline-offset:2px}
.portal .portal-notice-text{color:var(--pt-text-soft);background:var(--pt-input);border-color:var(--pt-border)}
/* 日间和古风主题也保证表单标签与输入内容有足够对比度 */
.portal.theme-day label.fl,.portal.theme-day .fl,.portal.theme-day .field-label,.portal.theme-day .form-label,
.portal.theme-classic label.fl,.portal.theme-classic .fl,.portal.theme-classic .field-label,.portal.theme-classic .form-label{color:var(--pt-text-soft)!important}
.portal.theme-day input::placeholder,.portal.theme-day textarea::placeholder{color:#697795}
.portal.theme-classic input::placeholder,.portal.theme-classic textarea::placeholder{color:#81705A}
.portal.theme-classic .side-item.on{background:#8E2328;color:#FFF8E8}
/* 赛博主题：提升正文可读性，保留霓虹强调而不让所有文字刺眼 */
.portal.theme-cyber{--pt-text:#EAFBFF;--pt-text-soft:#B9D8E4;--pt-muted:#82A9BA;--pt-input:#091D2C;--pt-panel:#0D2638;--pt-panel-2:#123449;--pt-border:#24536A;--pt-accent:#00D9F5;--pt-accent-text:#04131B;--pt-link:#5CEBFF}
.portal.theme-cyber label.fl,.portal.theme-cyber .fl,.portal.theme-cyber .field-label,.portal.theme-cyber .form-label{color:var(--pt-text-soft)!important}
.portal.theme-cyber input::placeholder,.portal.theme-cyber textarea::placeholder{color:#82A9BA}
/* 自定义字卡颜色只影响字卡；默认文字始终遵循主题前景色 */
.portal .portal-notice-text,.portal .card-item,.portal .oa-item,.portal .rel-node{overflow-wrap:anywhere}
@media(max-width:600px){.portal .p-panel{padding:16px}.portal label.fl{margin-top:12px}.portal input,.portal select,.portal textarea{max-width:100%;min-width:0}}

/* Mobile hardening: avoid horizontal overflow in forum, forms and admin controls. */
@media(max-width:680px){
  .portal .p-main{min-width:0;padding:14px 10px!important;}
  .portal .p-panel{min-width:0;max-width:100%;overflow-wrap:anywhere;}
  .portal .q-item{min-width:0;grid-template-columns:42px minmax(0,1fr);gap:9px;padding:13px 10px;}
  .portal .q-main,.portal .q-meta{min-width:0;}
  .portal .q-meta{display:flex;flex-wrap:wrap;gap:7px 9px;}
  .portal .q-main h3,.portal .q-ex{overflow-wrap:anywhere;word-break:break-word;}
  .portal .field,.portal input,.portal select,.portal textarea{box-sizing:border-box;max-width:100%;min-width:0;}
  .portal button,.portal .btn{max-width:100%;white-space:normal;}
  .portal .forum-tabs{max-width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:5px;}
  .portal .forum-tabs .ft{flex:0 0 auto;}
}
@media(max-width:380px){
  .portal .p-main{padding:10px 7px!important;}
  .portal .q-item{grid-template-columns:36px minmax(0,1fr);gap:7px;padding:11px 8px;}
  .portal .q-vote .vt{width:36px;}
  .portal .q-meta{font-size:11px;}
}

/* ===== 原样式块：final-compatibility-patch ===== */

/* ============ 最终兼容补丁：工作组、OA 提醒与全站移动端 ============ */
.side-unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;padding:0 5px;margin-left:auto;border-radius:999px;background:#E0484D;color:#fff;font-size:11px;font-weight:800;line-height:1;box-shadow:0 0 0 2px var(--pt-sidebar)}
.oa-item{min-width:0;overflow-wrap:anywhere}
.oa-top,.oa-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.oa-top h4{min-width:0;overflow-wrap:anywhere}
.chat-window{min-width:0;width:100%}
.chat-scroll{min-width:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
#wg-cfg{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
#wg-cfg select,#wg-cfg input[type="number"]{max-width:100%;min-width:0}
#wg-text{min-width:0;max-width:100%;overflow-wrap:anywhere}
@media(max-width:680px){
  .chat-window{height:auto;min-height:calc(100dvh - 170px);min-height:calc(100vh - 170px)}
  .chat-head .ch-actions{display:flex;flex-wrap:wrap}
  .chat-head .ch-actions .btn{flex:1 1 auto;min-width:0}
  #wg-cfg{padding:10px!important;align-items:flex-start}
  #wg-cfg .mode-switch{display:flex;flex-wrap:wrap;gap:5px;max-width:100%}
  #wg-cfg .card-only{width:100%;align-items:stretch!important}
  #wg-cfg .card-only select,#wg-cfg .card-only input[type="number"]{width:100%!important;min-height:38px}
  #wg-cfg .card-only label{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
  .chat-pagination{flex-wrap:wrap;text-align:center}
  .chat-pagination span{font-size:12px}
  .chat-input{display:flex;flex-wrap:wrap;gap:7px}
  .chat-input textarea{flex:1 1 calc(100% - 10px);order:0}
  .chat-input .ib-btn{flex:0 0 38px}
  .chat-input #wg-send,.chat-input #rm-send,.chat-input #ch-send{flex:1 1 auto;min-height:42px}
  .oa-top{align-items:flex-start}
  .oa-actions .btn{flex:1 1 auto}
  .oa-item{padding:14px!important}
  .portal-top .theme-switch{max-width:100%;display:flex;flex-wrap:wrap;gap:4px}
  .portal-top .theme-switch button{font-size:11px;padding:5px 7px}
  .stat-strip .ss{min-width:0}
  .dossier .d-row{flex-wrap:wrap}
  .dossier .d-row .dk{width:100%;flex-basis:100%}
  .dossier .d-row .dv{width:100%;flex-basis:100%}
  .p-main .grid,.p-main [style*="grid-template-columns"]{min-width:0}
}
@media(max-width:380px){
  .portal-top{align-items:flex-start}
  .portal-top .theme-switch{order:4;width:100%}
  .side-item{padding:8px 9px;font-size:12px}
  .chat-input .btn{padding:8px 10px}
  .chat-head .ch-actions .btn{font-size:11.5px}
}

/* ===== 原样式块：workgroup-rebuild-styles ===== */

.workgroup-window{min-width:0;width:100%}.workgroup-window .wg-title{min-width:0}.workgroup-window .chat-pagination{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap;padding:10px}.workgroup-window #wg-cfg{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}.workgroup-window #wg-cfg select,.workgroup-window #wg-cfg input[type=number]{max-width:100%;min-width:0}.workgroup-window #wg-text{min-width:0;max-width:100%;overflow-wrap:anywhere}
@media(max-width:680px){.workgroup-window .chat-head{align-items:flex-start;flex-wrap:wrap}.workgroup-window .chat-head .ch-actions{display:flex;flex-wrap:wrap;width:100%;margin-left:0}.workgroup-window .chat-head .ch-actions .btn{flex:1 1 auto;min-width:0}.workgroup-window #wg-cfg{align-items:flex-start;padding:10px!important}.workgroup-window #wg-cfg .card-only{width:100%;align-items:stretch!important}.workgroup-window #wg-cfg .card-only select,.workgroup-window #wg-cfg .card-only input[type=number]{width:100%!important;min-height:38px}.workgroup-window .chat-input{display:flex;flex-wrap:wrap;gap:7px}.workgroup-window .chat-input textarea{flex:1 1 calc(100% - 10px);order:0}.workgroup-window .chat-input #wg-send{flex:1 1 auto;min-height:42px}.workgroup-window .chat-scroll{min-width:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}}
@media(max-width:380px){.workgroup-window .chat-head .ch-actions .btn{font-size:11.5px;padding:7px}.workgroup-window .chat-input .btn{padding:8px 10px}}

/* ===== 原样式块：forum-enhancement-responsive ===== */

.forum-rule-row .field{width:100%;min-width:0;box-sizing:border-box}
#forum-rule-list{max-height:55vh;overflow:auto;padding-right:2px}
.workgroup-window .ch-actions{display:flex;gap:6px;flex-wrap:wrap}
@media(max-width:680px){.workgroup-window .ch-actions{width:100%;margin-top:8px}.workgroup-window .chat-head{flex-wrap:wrap}.workgroup-window .ch-actions .btn{flex:1 1 auto}.forum-rule-row{padding:8px!important}}

/* v11 修复补丁：员工入口登录文字对比度、当前私信联系人状态 */
.staff-gate, .staff-gate label, .staff-gate p, .staff-gate small, .staff-gate .ph-sub { color:#EAF0FF !important; }
.staff-gate input, .staff-gate select { color:#F4F7FF !important; background:#111D48 !important; border-color:#53659D !important; }
.staff-gate input::placeholder { color:#B8C4E8 !important; opacity:1; }
#app .chat-list-item.is-active-chat { background: var(--pt-panel-2, rgba(70,90,160,.22)); border-color: var(--pt-accent, #8EA6FF); }
#app .chat-contact-rail .chat-list-item { border:1px solid transparent; }
#app .chat-contact-rail .chat-list-item.is-active-chat { border-color: var(--pt-accent, #8EA6FF); }

/* ==================================================================
   V15 高级质感升级
   1) 全局质感（玻璃/阴影/按钮/卡片）
   2) 新主题：玫瑰金 rose / 极光星河 aurora
   3) 加载动效（首屏 / 进入内网 / 视图入场）
   4) 微信式聊天输入行（＋面板：红包/转账/图片/表情/语音/拍照）
   5) 红点主题适配
   6) 移动端（固定顶栏 / 滚动隐藏 / 横向菜单 / 输入面板）
   ================================================================== */

/* ---------- 1. 全局质感 ---------- */
.portal .p-panel,.portal .card-box,.portal .arc-card,.portal .lib-item,.portal .friend-card,.portal .post-card,.portal .space-card,.portal .event-card,.portal .oa-item{
  box-shadow:0 1px 2px rgba(2,8,30,.05),0 14px 34px -18px rgba(2,8,30,.28);
}
.portal-top{
  background:color-mix(in srgb,var(--pt-topbar) 84%,transparent);
  backdrop-filter:saturate(165%) blur(14px);-webkit-backdrop-filter:saturate(165%) blur(14px);
}
.portal .btn{font-weight:700;letter-spacing:.01em;
  transition:transform .15s ease,box-shadow .18s ease,background-color .18s ease,border-color .18s ease;}
.portal .btn:not(.btn-ghost):not(.btn-sm){
  box-shadow:0 1px 0 rgba(255,255,255,.16) inset,0 8px 18px -10px var(--pt-glow);}
.portal .btn:active{transform:translateY(1px) scale(.98);}
.portal .post-card,.portal .friend-card,.portal .lib-item,.portal .arc-card,.portal .space-card{
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease,background-color .2s ease;}
.portal .post-card:hover,.portal .friend-card:hover,.portal .lib-item:hover,.portal .arc-card:hover{
  transform:translateY(-3px);}
.portal .side-item{transition:background .16s ease,color .16s ease,transform .16s ease;}
.portal .side-item:hover{transform:translateX(2px);}
.portal .side-item.on{box-shadow:0 6px 16px -8px var(--pt-glow);}
.portal .room-tab.on,.portal .forum-tabs .ft.on{box-shadow:0 6px 14px -8px var(--pt-glow);}

/* ---------- 2a. 新主题：玫瑰金 rose ---------- */
.portal.theme-rose{
  --pt-bg:#F2E9E1;--pt-topbar:#FBF6F1;--pt-sidebar:#F1E7DE;
  --pt-panel:#FDF9F5;--pt-panel-2:#F6ECE3;--pt-input:#F7EEE7;
  --pt-border:#E2D0C4;--pt-border-soft:#EDDFD3;
  --pt-text:#4A3530;--pt-text-soft:#6B4E47;--pt-muted:#A4847A;
  --pt-accent:#C07A6D;--pt-accent-text:#FFF8F4;--pt-highlight:#DFA48F;
  --pt-link:#BE7063;--pt-hover:#F2E1D7;--pt-glow:rgba(192,122,109,.18);
  --badge:#D9536A;--badge-glow:rgba(217,83,106,.38);
  color:var(--pt-text);
}
.portal.theme-rose .p-main{
  background:
    radial-gradient(1000px 420px at 50% -10%,rgba(223,164,143,.22),transparent 60%),
    radial-gradient(800px 500px at 100% 110%,rgba(192,122,109,.1),transparent 60%),
    var(--pt-bg);}
.portal.theme-rose .p-panel,.portal.theme-rose .card-box,.portal.theme-rose .arc-card,.portal.theme-rose .post-card,.portal.theme-rose .space-card,.portal.theme-rose .lib-item,.portal.theme-rose .friend-card{
  background:linear-gradient(180deg,#FDFBF8,#FBF4EE);
  border:1px solid #EBD9CC;border-top:3px solid #D99A89;
  border-radius:16px;box-shadow:0 12px 30px -16px rgba(150,90,75,.3);}
.portal.theme-rose .btn-orange,.portal.theme-rose .btn:not(.btn-ghost){
  background:linear-gradient(135deg,#D9917F 0%,#C07A6D 52%,#A96559 100%);
  border:1px solid #B26A5D;color:#FFF8F4;
  box-shadow:0 1px 0 rgba(255,255,255,.3) inset,0 10px 20px -10px rgba(192,122,109,.5);}
.portal.theme-rose .btn-ghost{background:#F7EBE3;border:1px solid #E6D3C6;color:#9C5E52;}
.portal.theme-rose .side-item.on,.portal.theme-rose .room-tab.on{background:linear-gradient(135deg,#D9917F,#C07A6D);color:#FFF8F4;}
.portal.theme-rose .room-tab{background:#F6ECE3;border:1px solid #E6D3C6;color:#8A6458;}
.portal.theme-rose .q-vote .vt{background:#F7EBE3;border-color:#E6D3C6;color:#8A6458;}
.portal.theme-rose .q-vote .vt.on,.portal.theme-rose .q-vote .vt[data-voted="1"]{
  background:linear-gradient(135deg,#D9917F,#C07A6D)!important;border-color:#B26A5D!important;color:#FFF8F4!important;}
.portal.theme-rose .msg.them .bubble,.portal.theme-rose .bubble.them{background:#F4E7DE;}
.portal.theme-rose .p-crumb a,.portal.theme-rose .p-main a:not(.btn){color:#BE7063;}

/* ---------- 2b. 新主题：极光星河 aurora ---------- */
.portal.theme-aurora{
  --pt-bg:#0E0A24;--pt-topbar:#150F33;--pt-sidebar:#130D2E;
  --pt-panel:#1D1648;--pt-panel-2:#261D57;--pt-input:#1A1340;
  --pt-border:#3A2D72;--pt-border-soft:#2C215C;
  --pt-text:#EFEBFF;--pt-text-soft:#CBC2F3;--pt-muted:#948AC8;
  --pt-accent:#5BE3C8;--pt-accent-text:#04211C;--pt-highlight:#B07CFF;
  --pt-link:#7CEBD8;--pt-hover:#261D57;--pt-glow:rgba(91,227,200,.16);
  --badge:#FF5C9A;--badge-glow:rgba(255,92,154,.4);
  color:var(--pt-text);
}
.portal.theme-aurora .p-main{
  background:
    radial-gradient(1000px 420px at 12% -10%,rgba(91,227,200,.18),transparent 60%),
    radial-gradient(1000px 460px at 92% -12%,rgba(176,124,255,.2),transparent 60%),
    radial-gradient(760px 520px at 50% 120%,rgba(91,227,200,.08),transparent 60%),
    radial-gradient(1.5px 1.5px at 25% 35%,rgba(255,255,255,.5),transparent 60%),
    radial-gradient(1px 1px at 70% 65%,rgba(255,255,255,.4),transparent 60%),
    radial-gradient(1.5px 1.5px at 45% 82%,rgba(255,255,255,.32),transparent 60%),
    var(--pt-bg);
  background-size:auto,auto,auto,180px 180px,240px 240px,300px 300px,auto;}
.portal.theme-aurora .p-panel,.portal.theme-aurora .card-box,.portal.theme-aurora .arc-card,.portal.theme-aurora .post-card,.portal.theme-aurora .space-card,.portal.theme-aurora .lib-item,.portal.theme-aurora .friend-card{
  background:linear-gradient(165deg,rgba(38,29,87,.86),rgba(24,18,58,.82));
  border:1px solid rgba(150,130,255,.22);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-radius:18px;box-shadow:0 0 0 1px rgba(91,227,200,.05),0 18px 44px -18px rgba(0,0,0,.6);}
.portal.theme-aurora .btn-orange,.portal.theme-aurora .btn:not(.btn-ghost){
  background:linear-gradient(120deg,#5BE3C8 0%,#6BA8F5 48%,#B07CFF 100%);
  border:1px solid rgba(124,235,216,.5);color:#06131C;
  box-shadow:0 1px 0 rgba(255,255,255,.35) inset,0 10px 26px -10px rgba(91,227,200,.5);}
.portal.theme-aurora .btn-ghost{background:rgba(38,29,87,.7);border:1px solid rgba(150,130,255,.25);color:#BFE9FF;}
.portal.theme-aurora .side-item.on,.portal.theme-aurora .room-tab.on{
  background:linear-gradient(120deg,#5BE3C8,#6BA8F5 55%,#B07CFF);color:#06131C;}
.portal.theme-aurora .room-tab{background:rgba(38,29,87,.6);border:1px solid rgba(150,130,255,.22);color:#CBC2F3;}
.portal.theme-aurora .q-vote .vt{background:rgba(38,29,87,.7);border-color:rgba(150,130,255,.25);color:#CBC2F3;}
.portal.theme-aurora .q-vote .vt.on,.portal.theme-aurora .q-vote .vt[data-voted="1"]{
  background:linear-gradient(120deg,#5BE3C8,#6BA8F5 55%,#B07CFF)!important;border-color:rgba(124,235,216,.5)!important;color:#06131C!important;}
.portal.theme-aurora .msg.them .bubble,.portal.theme-aurora .bubble.them{
  background:rgba(42,32,92,.85);border:1px solid rgba(150,130,255,.18);}
.portal.theme-aurora .p-crumb a,.portal.theme-aurora .p-main a:not(.btn){color:#7CEBD8;}

/* ---------- 3. 加载动效 ---------- */
#page-preloader{background:radial-gradient(circle at 50% 36%,#17214F,#0A1028 78%);}
#page-preloader .pl-mark{background:linear-gradient(160deg,#2E4BC4,#1E2E86);
  box-shadow:0 0 0 6px rgba(109,140,255,.12),0 12px 30px rgba(0,0,0,.45);}
#page-preloader .pl-ring{background:conic-gradient(from 90deg,#6D8CFF,#37D6BE,#E8874A,#6D8CFF);}
#page-preloader .pl-name{color:#F4F7FF;}
#page-preloader .pl-tip{color:#AEBCE8;}
#page-preloader .pl-bar{background:rgba(255,255,.12);}
.portal-entry{position:fixed;inset:0;z-index:99998;display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transition:opacity .45s ease,visibility .45s ease;}
.portal-entry.is-in{opacity:1;visibility:visible;}
.portal-entry.is-leaving{opacity:0;visibility:hidden;}
.pe-bg{position:absolute;inset:0;overflow:hidden;
  background:radial-gradient(circle at 50% 38%,#17214F,#0A1028 78%);}
.pe-bg:before{content:"";position:absolute;inset:-20%;
  background:
    radial-gradient(420px 300px at 18% 22%,rgba(91,227,200,.18),transparent 60%),
    radial-gradient(460px 320px at 84% 18%,rgba(176,124,255,.2),transparent 60%),
    radial-gradient(520px 360px at 50% 118%,rgba(109,140,255,.16),transparent 60%);
  animation:peFloat 9s ease-in-out infinite alternate;}
.pe-bg:after{content:"";position:absolute;inset:0;
  background-image:linear-gradient(rgba(120,150,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(120,150,255,.06) 1px,transparent 1px);
  background-size:42px 42px;
  mask-image:radial-gradient(circle at 50% 45%,#000,transparent 72%);-webkit-mask-image:radial-gradient(circle at 50% 45%,#000,transparent 72%);}
@keyframes peFloat{from{transform:translate3d(-2%,-1%,0);}to{transform:translate3d(2%,2%,0) rotate(2deg);}}
.pe-box{position:relative;width:min(360px,84vw);text-align:center;padding:0 20px;}
.pe-ring{position:relative;width:118px;height:118px;margin:0 auto 22px;}
.pe-ring-rot{position:absolute;inset:0;border-radius:50%;
  background:conic-gradient(from 0deg,transparent 4%,#6D8CFF 24%,#37D6BE 46%,transparent 66%);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
  animation:peSpin 1.15s linear infinite;}
.pe-ring-rot2{inset:9px;animation:peSpin 1.7s linear infinite reverse;
  background:conic-gradient(from 180deg,transparent 6%,#B07CFF 30%,#6D8CFF 52%,transparent 72%);}
@keyframes peSpin{to{transform:rotate(360deg);}}
.pe-shield{position:absolute;inset:27px;display:grid;place-items:center;color:#EAF1FF;
  border-radius:50%;background:linear-gradient(160deg,#24336F,#0E1740);
  box-shadow:0 0 26px rgba(109,140,255,.45),inset 0 0 14px rgba(55,214,190,.3);}
.pe-shield svg{width:30px;height:30px;}
.pe-title{font-size:18px;font-weight:900;color:#F4F7FF;letter-spacing:2px;}
.pe-step{margin-top:10px;font-size:13px;color:#AEBCE8;min-height:20px;}
.pe-dots:after{content:"";animation:peDots 1.2s steps(4,end) infinite;}
@keyframes peDots{0%{content:"";}25%{content:"·";}50%{content:"··";}75%{content:"···";}}
.pe-bar{position:relative;height:5px;margin-top:16px;border-radius:999px;background:rgba(255,255,255,.12);overflow:hidden;}
.pe-bar-fill{display:block;height:100%;width:0;border-radius:999px;
  background:linear-gradient(90deg,#6D8CFF,#37D6BE,#B07CFF);
  box-shadow:0 0 12px rgba(91,227,200,.6);transition:width .12s linear;}
.pe-percent{margin-top:9px;font-size:12px;color:#8FA2D8;font-variant-numeric:tabular-nums;}
@keyframes viewIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
.p-main>.p-crumb,.p-main>.room-tabs-bar,.p-main>.wx-im,.p-main>.p-panel{animation:viewIn .5s cubic-bezier(.22,.61,.36,1) both;}
.p-main>.p-panel:nth-of-type(2){animation-delay:.06s;}
.p-main>.p-panel:nth-of-type(3){animation-delay:.12s;}

/* ---------- 4. 微信式聊天输入行 ---------- */
.chat-input-row{position:relative;flex:0 0 auto;min-width:0;}
.chat-input-line{display:flex;align-items:flex-end;gap:7px;padding:8px 10px;
  background:color-mix(in srgb,var(--pt-panel) 92%,transparent);
  border-top:1px solid var(--pt-border);}
.ci-ib{width:38px;height:38px;flex:0 0 38px;border:0;border-radius:50%;
  background:transparent;color:var(--pt-muted);display:grid;place-items:center;cursor:pointer;
  transition:background .16s,color .16s,transform .16s;}
.ci-ib:hover{background:var(--pt-panel-2);color:var(--pt-accent);}
.ci-ib:active{transform:scale(.9);}
.ci-text-wrap{flex:1;min-width:0;}
.ci-text-mode{display:block;}
.ci-text-wrap textarea{width:100%;box-sizing:border-box;resize:none;
  min-height:38px;max-height:120px;padding:9px 14px;
  border-radius:19px;border:1px solid var(--pt-border);
  background:var(--pt-input);color:var(--pt-text);
  font-size:15px;line-height:1.5;transition:border-color .18s,box-shadow .18s;}
.ci-text-wrap textarea:focus{outline:none;border-color:var(--pt-accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--pt-accent) 20%,transparent);}
.ci-hold-mode{display:block;}
.hold-talk{display:block;box-sizing:border-box;width:100%;text-align:center;
  padding:10px;border-radius:19px;border:1px solid var(--pt-border);
  background:var(--pt-panel-2);color:var(--pt-text-soft);font-weight:700;
  user-select:none;-webkit-user-select:none;touch-action:none;}
.ci-send{border:0;border-radius:18px;height:38px;padding:0 18px;flex:0 0 auto;
  background:linear-gradient(135deg,var(--pt-accent),color-mix(in srgb,var(--pt-accent) 82%,#000));
  color:var(--pt-accent-text);font-weight:800;cursor:pointer;display:none;
  box-shadow:0 8px 18px -8px var(--pt-glow);}
.ci-send:active{transform:scale(.96);}
.chat-input-row.has-text .ci-plus{display:none;}
.chat-input-row.has-text .ci-send{display:inline-flex;align-items:center;}
.plus-panel{display:grid;grid-template-columns:repeat(4,1fr);gap:16px 10px;
  padding:16px 14px;background:var(--pt-panel);border-top:1px solid var(--pt-border);}
.plus-item{display:flex;flex-direction:column;align-items:center;gap:7px;
  background:transparent;border:0;cursor:pointer;color:var(--pt-text-soft);padding:0;}
.plus-item.is-placeholder{visibility:hidden;}
.pi-ic{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;font-size:26px;
  background:var(--pt-panel-2);border:1px solid var(--pt-border);
  transition:transform .16s,box-shadow .16s,background .16s;}
.plus-item:hover .pi-ic{transform:translateY(-3px);box-shadow:0 10px 18px -8px var(--pt-glow);}
.plus-item:active .pi-ic{transform:scale(.92);}
.plus-item small{font-size:11.5px;color:var(--pt-muted);}
.emoji-panel{display:flex;flex-direction:column;gap:8px;padding:12px 12px 10px;
  background:var(--pt-panel);border-top:1px solid var(--pt-border);}
.ep-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:2px;max-height:176px;overflow-y:auto;}
.ep-grid button{background:transparent;border:0;font-size:22px;padding:6px;border-radius:9px;cursor:pointer;
  transition:background .14s,transform .14s;}
.ep-grid button:hover{background:var(--pt-panel-2);transform:scale(1.12);}
.ep-back{align-self:flex-end;min-width:60px;min-height:34px;border-radius:10px;
  border:1px solid var(--pt-border);background:var(--pt-panel-2);color:var(--pt-text-soft);cursor:pointer;}
.plus-panel:not(.hide),.emoji-panel:not(.hide){animation:panelUp .26s cubic-bezier(.22,.61,.36,1) both;}
@keyframes panelUp{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}

/* ---------- 5. 红点主题适配 ---------- */
.portal{--badge:#F25560;--badge-glow:rgba(242,85,96,.35);}
.portal.theme-day{--badge:#E5484D;--badge-glow:rgba(229,72,77,.35);}
.portal.theme-classic{--badge:#B52B32;--badge-glow:rgba(181,43,50,.32);}
.portal.theme-cyber{--badge:#FF4D6D;--badge-glow:rgba(255,77,109,.4);}
.side-unread-badge,.chat-unread-badge,.room-unread-badge,.fnc-icon .fnc-icon-num{
  background:var(--badge)!important;color:#fff!important;
  box-shadow:0 0 0 2px var(--pt-sidebar),0 2px 8px var(--badge-glow);}
.fnc-icon .fnc-icon-num{box-shadow:0 2px 8px var(--badge-glow);}
.fnc-dot{background:var(--badge)!important;}

/* ---------- 6. 移动端适配 ---------- */
@media(max-width:680px){
  .portal-top{position:fixed;left:0;right:0;top:0;z-index:60;
    transition:transform .32s cubic-bezier(.22,.61,.36,1);}
  .portal-top.is-hidden{transform:translateY(-104%);}
  /* 顶部菜单与横向导航都显示时，占用 topbar + nav；隐藏时整组让出屏幕 */
  .portal{--mobile-chrome-h:var(--chrome-measured,141px);}
  .portal.is-top-hidden{--mobile-chrome-h:0px;}
  .portal-body{padding-top:var(--mobile-chrome-h);
    transition:padding-top .32s cubic-bezier(.22,.61,.36,1);}
  /* 横向导航改为固定在顶栏下方，随顶栏一起上滑隐藏，不再横亘在内容中间 */
  .nav-wrap{position:fixed;left:0;right:0;top:var(--topbar-h,92px);z-index:59;
    transition:transform .32s cubic-bezier(.22,.61,.36,1);}
  .portal.is-top-hidden .nav-wrap{
    transform:translateY(calc(-100% - var(--topbar-h,92px)));}
  .portal .chat-window,.portal .wx-im{
    height:calc(100dvh - var(--mobile-chrome-h) - 28px);min-height:0;max-height:none;
    transition:height .3s ease;}
  .portal .room-tabs-bar + .chat-window{
    height:calc(100dvh - var(--mobile-chrome-h) - 57px - 28px);}
  .chat-input-line{padding:7px 8px;gap:6px;}
  .ci-ib{width:36px;height:36px;flex-basis:36px;}
  .ci-text-wrap textarea{min-height:36px;font-size:16px;}
  .ci-send{height:36px;}
  .plus-panel{gap:14px 8px;padding:14px 10px;}
  .pi-ic{width:50px;height:50px;font-size:24px;}
  .ep-grid{grid-template-columns:repeat(6,1fr);}
}
@media(max-width:380px){
  .plus-panel{grid-template-columns:repeat(3,1fr);}
  .pi-ic{width:52px;height:52px;}
}
@media(prefers-reduced-motion:reduce){
  .p-main>*,.plus-panel:not(.hide),.emoji-panel:not(.hide){animation:none!important;}
  .pe-bg:before,.pe-ring-rot,.pe-ring-rot2{animation:none!important;}
}

/* ---------- 7. 弹层（modal）跟随主题 ---------- */
body[data-portal-theme] .modal{border-radius:18px;}
body[data-portal-theme="default"] .modal{background:linear-gradient(165deg,#1B2A5E,#142049);color:#F3F6FF;border:1px solid #2A3A72;}
body[data-portal-theme="day"] .modal{background:#fff;color:#1F2433;}
body[data-portal-theme="classic"] .modal{background:#FFF8E9;color:#332719;border:1px solid #D5C29B;}
body[data-portal-theme="cyber"] .modal{background:linear-gradient(165deg,#0F2A3D,#0A1C2C);color:#EAFBFF;border:1px solid #24536A;}
body[data-portal-theme="rose"] .modal{background:linear-gradient(180deg,#FDFBF8,#FBF4EE);color:#4A3530;border:1px solid #EBD9CC;}
body[data-portal-theme="aurora"] .modal{background:linear-gradient(165deg,#261D57,#18123A);color:#EFEBFF;border:1px solid rgba(150,130,255,.25);}
body[data-portal-theme] .modal h3{color:inherit;}
body[data-portal-theme] .modal .m-body{color:inherit;}
body[data-portal-theme] .modal label{color:inherit;}
body[data-portal-theme="default"] .modal input,body[data-portal-theme="default"] .modal textarea,body[data-portal-theme="default"] .modal select{background:#101D49;color:#F3F6FF;border-color:#30447E;}
body[data-portal-theme="cyber"] .modal input,body[data-portal-theme="cyber"] .modal textarea,body[data-portal-theme="cyber"] .modal select{background:#091D2C;color:#EAFBFF;border-color:#24536A;}
body[data-portal-theme="aurora"] .modal input,body[data-portal-theme="aurora"] .modal textarea,body[data-portal-theme="aurora"] .modal select{background:#1A1340;color:#EFEBFF;border-color:#3A2D72;}
body[data-portal-theme="classic"] .modal input,body[data-portal-theme="classic"] .modal textarea,body[data-portal-theme="classic"] .modal select{background:#F8EED9;color:#332719;border-color:#C9B58C;}
body[data-portal-theme="rose"] .modal input,body[data-portal-theme="rose"] .modal textarea,body[data-portal-theme="rose"] .modal select{background:#F7EEE7;color:#4A3530;border-color:#E2D0C4;}
body[data-portal-theme] .modal input::placeholder,body[data-portal-theme] .modal textarea::placeholder{color:currentColor;opacity:.55;}
body[data-portal-theme]:not([data-portal-theme="day"]) .modal .btn-ghost{background:rgba(255,255,255,.08);color:inherit;border:1px solid rgba(255,255,255,.2);}
/* 弹层入场动效 */
@keyframes modalIn{from{opacity:0;transform:translateY(18px) scale(.97);}to{opacity:1;transform:none;}}
body[data-portal-theme] .modal{animation:modalIn .32s cubic-bezier(.22,.61,.36,1) both;}
@keyframes maskIn{from{opacity:0;}to{opacity:1;}}
.modal-mask{animation:maskIn .25s ease both;}

/* ==================================================================
   V16 升级：配色修复 / 专属名片全主题 / 能力详情 / 等级 / 小游戏
   ================================================================== */

/* ---------- 1. 配色修复 ---------- */
/* 日间：选中项再次悬停时保持蓝底白字，不再出现白字浅底 */
.portal.theme-day .side-item.on:hover{background:var(--pt-accent);color:#fff;}
/* 玫瑰金：网络关系页头部改为饱和玫瑰渐变，配浅色文字 */
.portal.theme-rose .network-intro{
  background:linear-gradient(125deg,#B87063 0%,#C98A7C 55%,#D9A48F 100%);
  border:1px solid #B26A5D;border-top:3px solid #E4B8A6;color:#FFF8F4;}
.portal.theme-rose .network-eyebrow{color:#FBE3D6;}
.portal.theme-rose .network-intro h2{color:#FFF8F4!important;}
.portal.theme-rose .network-intro .ph-sub{color:#FBEADE!important;}
.portal.theme-rose .network-legend{color:#FBEADE;}
.portal.theme-rose .net-dot{background:#FFF0E8;}
.portal.theme-rose .net-dot.both{background:#F6D6D0;}
/* 极光星河：网络关系页头部改为深紫渐变，配浅色文字 */
.portal.theme-aurora .network-intro{
  background:linear-gradient(125deg,#2A1F6E 0%,#3A2D9E 55%,#2E6E8E 100%);
  border:1px solid #4A3AA0;border-top:3px solid #5BE3C8;color:#EFEBFF;}
.portal.theme-aurora .network-eyebrow{color:#7CEBD8;}
.portal.theme-aurora .network-intro h2{color:#fff!important;}
.portal.theme-aurora .network-intro .ph-sub{color:#CBC2F3!important;}
.portal.theme-aurora .network-legend{color:#CBC2F3;}

/* ---------- 2. 专属名片全主题适配 ---------- */
/* 日间：浅色名片 */
.portal.theme-day .staff-card-preview{
  background:linear-gradient(135deg,#FFFFFF 0%,#F3F6FD 58%,#E7EDFA 100%);
  border:1px solid #D6DEF0;box-shadow:0 16px 38px rgba(46,71,184,.12);}
.portal.theme-day .staff-card-preview::after{
  border-color:rgba(46,71,184,.2);box-shadow:0 0 0 24px rgba(46,71,184,.03),0 0 0 48px rgba(46,71,184,.02);}
.portal.theme-day .staff-card-top{color:#1B2450;border-bottom:1px solid #E2E8F6;}
.portal.theme-day .staff-card-top .staff-emblem{background:#2E47B8;color:#fff;}
.portal.theme-day .staff-card-brand small{color:#8A96BF;}
.portal.theme-day .staff-card-avatar{background:linear-gradient(145deg,#4A63D4,#2E47B8);}
.portal.theme-day .staff-card-hero h3{color:#1B2450;}
.portal.theme-day .staff-card-hero p{color:#5A6795;}
.portal.theme-day .staff-card-item{background:#F2F5FC;border:1px solid #E2E8F6;}
.portal.theme-day .staff-card-item span{color:#8A96BF;}
.portal.theme-day .staff-card-item b{color:#2A3360;}
.portal.theme-day .staff-card-note{background:rgba(46,71,184,.07);border-left:3px solid #2E47B8;color:#3A456E;}
.portal.theme-day .staff-card-note strong{color:#2E47B8;}
.portal.theme-day .staff-card-edit-grid .field{background:#F2F4FA;border-color:#DDE3F0;color:#1B2450;}
.portal.theme-day .staff-card-edit-grid .field::placeholder{color:#9AA5C4;}
/* 古风：朱砂红印 */
.portal.theme-classic .staff-card-preview{
  background:linear-gradient(135deg,#5A2418 0%,#3F1A12 58%,#2E120C 100%);
  border:1px solid #7A3A28;box-shadow:0 16px 38px rgba(40,18,10,.35);}
.portal.theme-classic .staff-card-preview::after{
  border-color:rgba(232,176,106,.28);box-shadow:0 0 0 24px rgba(232,176,106,.04),0 0 0 48px rgba(232,176,106,.03);}
.portal.theme-classic .staff-card-top{color:#FFF8E9;border-bottom:1px solid rgba(232,176,106,.22);}
.portal.theme-classic .staff-card-top .staff-emblem{background:#8E2328;color:#FFF8E9;}
.portal.theme-classic .staff-card-brand small{color:#D3B98C;}
.portal.theme-classic .staff-card-avatar{background:linear-gradient(145deg,#E8B06A,#B5762E);}
.portal.theme-classic .staff-card-preview .staff-card-hero h3{color:#FFF8E9;}
.portal.theme-classic .staff-card-preview .staff-card-hero p{color:#D3B98C;}
.portal.theme-classic .staff-card-item{background:rgba(255,248,233,.06);border:1px solid rgba(232,176,106,.18);}
.portal.theme-classic .staff-card-item span{color:#D3B98C;}
.portal.theme-classic .staff-card-item b{color:#FFF8E9;}
.portal.theme-classic .staff-card-note{background:rgba(232,176,106,.08);border-left:3px solid #E8B06A;color:#EFDDB8;}
.portal.theme-classic .staff-card-note strong{color:#E8B06A;}
.portal.theme-classic .staff-card-edit-grid .field{background:#F8EED9;border-color:#C9B58C;color:#332719;}
.portal.theme-classic .staff-card-edit-grid .field::placeholder{color:#A98E66;}
/* 赛博霓虹 */
.portal.theme-cyber .staff-card-preview{
  background:linear-gradient(135deg,#0B2736 0%,#0A1F2E 58%,#102E44 100%);
  border:1px solid #1F5568;box-shadow:0 16px 38px rgba(0,40,60,.5);}
.portal.theme-cyber .staff-card-preview::after{
  border-color:rgba(0,229,255,.25);box-shadow:0 0 0 24px rgba(0,229,255,.04),0 0 0 48px rgba(0,229,255,.03);}
.portal.theme-cyber .staff-card-top{color:#EAFBFF;border-bottom:1px solid rgba(0,229,255,.18);}
.portal.theme-cyber .staff-card-top .staff-emblem{background:#00E5FF;color:#04212C;}
.portal.theme-cyber .staff-card-brand small{color:#5FB9C8;}
.portal.theme-cyber .staff-card-avatar{background:linear-gradient(145deg,#3BE08F,#159E64);}
.portal.theme-cyber .staff-card-hero h3{color:#EAFBFF;}
.portal.theme-cyber .staff-card-hero p{color:#7FB9C8;}
.portal.theme-cyber .staff-card-item{background:rgba(0,229,255,.05);border:1px solid rgba(0,229,255,.14);}
.portal.theme-cyber .staff-card-item span{color:#5FB9C8;}
.portal.theme-cyber .staff-card-item b{color:#EAFBFF;}
.portal.theme-cyber .staff-card-note{background:rgba(59,224,143,.08);border-left:3px solid #3BE08F;color:#C8F5E4;}
.portal.theme-cyber .staff-card-note strong{color:#3BE08F;}
.portal.theme-cyber .staff-card-edit-grid .field{background:#091D2C;border-color:#24536A;color:#EAFBFF;}
.portal.theme-cyber .staff-card-edit-grid .field::placeholder{color:#5A8A98;}
/* 玫瑰金 */
.portal.theme-rose .staff-card-preview{
  background:linear-gradient(135deg,#C98B7E 0%,#B5766A 58%,#A96559 100%);
  border:1px solid #B26A5D;box-shadow:0 16px 38px rgba(150,90,75,.35);}
.portal.theme-rose .staff-card-preview::after{
  border-color:rgba(255,240,232,.32);box-shadow:0 0 0 24px rgba(255,240,232,.05),0 0 0 48px rgba(255,240,232,.04);}
.portal.theme-rose .staff-card-top{color:#FFF8F4;border-bottom:1px solid rgba(255,240,232,.22);}
.portal.theme-rose .staff-card-top .staff-emblem{background:#FFF0E8;color:#A96559;}
.portal.theme-rose .staff-card-brand small{color:#FBE3D6;}
.portal.theme-rose .staff-card-avatar{background:linear-gradient(145deg,#F0C9B8,#D9A48F);}
.portal.theme-rose .staff-card-hero h3{color:#FFF8F4;}
.portal.theme-rose .staff-card-hero p{color:#FBE3D6;}
.portal.theme-rose .staff-card-item{background:rgba(255,248,244,.12);border:1px solid rgba(255,240,232,.2);}
.portal.theme-rose .staff-card-item span{color:#FBE3D6;}
.portal.theme-rose .staff-card-item b{color:#FFF8F4;}
.portal.theme-rose .staff-card-note{background:rgba(255,248,244,.14);border-left:3px solid #FFF0E8;color:#FFF8F4;}
.portal.theme-rose .staff-card-note strong{color:#FFF0E8;}
.portal.theme-rose .staff-card-edit-grid .field{background:#F7EEE7;border-color:#E2D0C4;color:#4A3530;}
.portal.theme-rose .staff-card-edit-grid .field::placeholder{color:#A4847A;}
/* 极光星河 */
.portal.theme-aurora .staff-card-preview{
  background:linear-gradient(135deg,#2F2570 0%,#241B58 58%,#1C1440 100%);
  border:1px solid rgba(150,130,255,.3);box-shadow:0 16px 38px rgba(0,0,0,.5);}
.portal.theme-aurora .staff-card-preview::after{
  border-color:rgba(91,227,200,.28);box-shadow:0 0 0 24px rgba(91,227,200,.05),0 0 0 48px rgba(176,124,255,.04);}
.portal.theme-aurora .staff-card-top{color:#EFEBFF;border-bottom:1px solid rgba(150,130,255,.2);}
.portal.theme-aurora .staff-card-top .staff-emblem{background:linear-gradient(135deg,#5BE3C8,#6BA8F5);color:#04211C;}
.portal.theme-aurora .staff-card-brand small{color:#B7AEE8;}
.portal.theme-aurora .staff-card-avatar{background:linear-gradient(145deg,#B07CFF,#7C5BD8);}
.portal.theme-aurora .staff-card-hero h3{color:#EFEBFF;}
.portal.theme-aurora .staff-card-hero p{color:#B7AEE8;}
.portal.theme-aurora .staff-card-item{background:rgba(150,130,255,.08);border:1px solid rgba(150,130,255,.16);}
.portal.theme-aurora .staff-card-item span{color:#B7AEE8;}
.portal.theme-aurora .staff-card-item b{color:#EFEBFF;}
.portal.theme-aurora .staff-card-note{background:rgba(91,227,200,.08);border-left:3px solid #5BE3C8;color:#D9F5EE;}
.portal.theme-aurora .staff-card-note strong{color:#5BE3C8;}
.portal.theme-aurora .staff-card-edit-grid .field{background:#1A1340;border-color:#3A2D72;color:#EFEBFF;}
.portal.theme-aurora .staff-card-edit-grid .field::placeholder{color:#948AC8;}

/* ---------- 3. 论坛等级徽章（5 档 UI） ---------- */
.grade-badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:800;
  padding:3px 10px;border-radius:999px;line-height:1.5;white-space:nowrap;}
.grade-badge svg{width:12px;height:12px;}
.grade-badge.grade-mini{font-size:11px;padding:2px 8px;}
.grade-badge.tier-bronze{background:linear-gradient(135deg,#C9A886,#A87F5C);color:#FFF8EE;}
.grade-badge.tier-blue{background:linear-gradient(135deg,#5E7CE0,#3A55C4);color:#F2F6FF;}
.grade-badge.tier-violet{background:linear-gradient(135deg,#A874E8,#7C4FD0);color:#FAF4FF;}
.grade-badge.tier-gold{background:linear-gradient(135deg,#F0C86A,#D89A3C);color:#3A2408;
  box-shadow:0 4px 14px -4px rgba(216,154,60,.6);}
.grade-badge.tier-max{
  background:linear-gradient(120deg,#FF5C9A,#FFB03C 40%,#5BE3C8 75%,#6D8CFF);
  background-size:220% 220%;color:#fff;
  animation:gradeShine 3.2s ease infinite;
  box-shadow:0 6px 20px -4px rgba(255,120,160,.55);}
@keyframes gradeShine{0%,100%{background-position:0% 50%;}50%{background-position:100% 50%;}}
/* 等级进度条 */
.grade-progress{margin-top:10px;}
.gp-bar{height:7px;border-radius:999px;background:var(--pt-input);overflow:hidden;}
.gp-bar span{display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,var(--pt-accent),var(--pt-highlight));
  box-shadow:0 0 10px var(--pt-glow);transition:width .4s ease;}
.gp-text{margin-top:6px;font-size:11.5px;color:var(--pt-muted);}
/* 个人空间等级卡片 */
.space-level-card{background:var(--pt-panel-2);border:1px solid var(--pt-border);
  border-radius:12px;padding:13px 15px;}
.slc-head{display:flex;align-items:center;gap:10px;}
.slc-points{margin-left:auto;font-size:12px;font-weight:700;color:var(--pt-muted);}
.sh-badges{margin:4px 0 2px;}

/* ---------- 4. 个人能力详情 ---------- */
.ability-actions{margin:12px 0 14px;}
.ability-card{border:1px solid var(--pt-border);border-radius:16px;
  background:var(--pt-panel-2);padding:18px;}
.ability-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.ability-avatar{width:64px;height:64px;flex:0 0 64px;border-radius:50%;overflow:hidden;
  display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:900;
  background:var(--pt-accent);color:var(--pt-accent-text);}
.ability-id{min-width:0;flex:1;}
.ability-id h3{margin:0;font-size:20px;color:var(--pt-text);}
.ability-id p{margin:4px 0 0;font-size:12.5px;color:var(--pt-muted);}
.ability-radar-wrap{margin:6px auto 0;max-width:380px;}
.ability-radar-wrap canvas{width:100%;height:auto;display:block;}
.ability-table-wrap{margin-top:14px;overflow-x:auto;}
.ability-table{width:100%;border-collapse:collapse;font-size:13px;min-width:420px;}
.ability-table th{background:var(--pt-accent);color:var(--pt-accent-text);
  padding:9px 10px;text-align:left;font-weight:700;white-space:nowrap;}
.ability-table td{padding:9px 10px;border-bottom:1px solid var(--pt-border);
  color:var(--pt-text);vertical-align:top;}
.ability-table tbody tr:nth-child(even){background:var(--pt-panel);}
.ability-empty{text-align:center;color:var(--pt-muted);}
.ab-h{font-size:14px;margin:18px 0 10px;}
/* 雷达编辑 */
.ability-radar-edit{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;}
.are-row{display:flex;align-items:center;gap:10px;}
.are-label{flex:0 0 96px;padding:7px 10px;}
.are-range{flex:1;accent-color:var(--pt-accent);min-width:0;}
.are-num{flex:0 0 30px;text-align:center;font-size:13px;font-weight:700;
  color:var(--pt-accent);font-variant-numeric:tabular-nums;}
/* 字段编辑 */
.ability-fields-edit{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.afe-row{display:flex;gap:6px;}
.afe-row .field{flex:1;}
/* 行编辑 */
.ability-rows-edit{display:flex;flex-direction:column;gap:14px;}
.ab-row{border:1px solid var(--pt-border);border-radius:12px;padding:13px;}
.ab-row-head{display:flex;align-items:center;margin-bottom:10px;}
.ab-row-head b{font-size:13px;color:var(--pt-text);}
.ab-row-head .btn{margin-left:auto;}
.ab-row-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.ab-row-grid label{display:block;font-size:11px;color:var(--pt-muted);margin-bottom:4px;}
.ab-row-grid .field{padding:7px 10px;}

/* ---------- 5. 等级配置 ---------- */
.points-rule-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.prg-row{display:flex;align-items:center;gap:8px;}
.prg-row span{flex:1;font-size:13px;color:var(--pt-text-soft);}
.prg-row .field{flex:0 0 90px;padding:7px 9px;}
.level-cfg-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;}
.lcfg-row{display:flex;align-items:center;gap:8px;}
.lcfg-no{flex:0 0 42px;font-size:12px;color:var(--pt-muted);}
.lcfg-name{flex:1;padding:7px 9px;}
.lcfg-min{flex:0 0 90px;padding:7px 9px;}

/* ---------- 6. 方块小游戏 ---------- */
.tetris-wrap{display:grid;grid-template-columns:180px auto;gap:18px;justify-content:center;
  margin-top:14px;align-items:start;}
.tetris-side{display:flex;flex-direction:column;gap:10px;}
.tetris-topbar{display:flex;flex-direction:column;gap:10px;}
.tetris-stat{background:var(--pt-panel-2);border:1px solid var(--pt-border);border-radius:10px;
  padding:10px 13px;display:flex;align-items:baseline;justify-content:space-between;}
.tetris-stat span{font-size:12px;color:var(--pt-muted);}
.tetris-stat b{font-size:18px;color:var(--pt-text);font-variant-numeric:tabular-nums;}
.tetris-next-wrap{background:var(--pt-panel-2);border:1px solid var(--pt-border);border-radius:10px;
  padding:10px 13px;display:flex;flex-direction:column;gap:8px;}
.tetris-next-wrap>span{font-size:12px;color:var(--pt-muted);}
#tetris-next{width:100%;height:auto;}
.tetris-side-btns{display:flex;flex-direction:column;gap:8px;}
.tetris-board-wrap{border-radius:10px;overflow:hidden;
  box-shadow:0 18px 44px -18px rgba(0,0,0,.55),0 0 0 1px var(--pt-border);}
#tetris-canvas{display:block;width:100%;height:auto;}
.tetris-gamepad{display:none;}
.tetris-help{margin-top:14px;font-size:12px;color:var(--pt-muted);line-height:1.7;}

/* ---------- 7. 移动端适配 ---------- */
@media(max-width:680px){
  .ability-card{padding:14px;}
  .ability-radar-edit{grid-template-columns:1fr;}
  .ability-fields-edit{grid-template-columns:repeat(2,1fr);}
  .ab-row-grid{grid-template-columns:repeat(2,1fr);}
  .points-rule-grid{grid-template-columns:repeat(2,1fr);}
  .level-cfg-list{grid-template-columns:1fr;}
  /* ===== 方块小游戏：红白掌机式竖屏排版 ===== */
  .tetris-wrap{
    display:flex;flex-direction:column;gap:11px;
    max-width:420px;margin:6px auto 0;
    padding:13px 12px 15px;border-radius:22px;
    background:linear-gradient(165deg,var(--pt-panel-2),var(--pt-panel));
    border:1px solid var(--pt-border);box-shadow:var(--pt-shadow);}
  /* 顶部数据条：3 项数值 + 下一个 */
  .tetris-side{gap:11px;}
  .tetris-topbar{
    display:grid;grid-template-columns:repeat(3,1fr) auto;gap:7px;align-items:stretch;}
  .tetris-stat{
    flex:none;padding:7px 9px;flex-direction:column;align-items:flex-start;
    justify-content:center;gap:2px;}
  .tetris-stat span{font-size:10px;}
  .tetris-stat b{font-size:16px;line-height:1;}
  .tetris-next-wrap{
    flex:none;padding:5px 8px;gap:2px;align-items:center;justify-content:center;}
  .tetris-next-wrap>span{font-size:10px;}
  #tetris-next{width:60px;height:44px;}
  /* 开始 / 暂停：药丸一排 */
  .tetris-side-btns{flex-direction:row;gap:8px;}
  .tetris-side-btns .btn{flex:1;padding:9px 0;font-size:13px;min-height:40px;}
  /* 屏幕：深色边框（bezel） */
  .tetris-board-wrap{
    max-width:188px;margin:0 auto;padding:8px;border-radius:14px;
    background:linear-gradient(160deg,#1B2350,#0A0F2C);
    border:1px solid var(--pt-border);
    box-shadow:inset 0 2px 10px rgba(0,0,0,.55);}
  #tetris-canvas{border-radius:6px;}
  /* 手柄：十字键左 + A/B 圆键右 */
  .tetris-gamepad{
    display:flex;align-items:center;justify-content:space-between;
    gap:12px;margin-top:2px;padding:2px 6px;}
  .tc-dpad{
    display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px);
    grid-template-areas:". up ." "left hub right" ". down .";}
  .tc-up{grid-area:up;}.tc-left{grid-area:left;}.tc-hub{grid-area:hub;}
  .tc-right{grid-area:right;}.tc-down{grid-area:down;}
  .tc-dp{
    display:flex;align-items:center;justify-content:center;
    background:var(--pt-text);color:var(--pt-panel);
    border:0;font-size:15px;cursor:pointer;line-height:1;
    -webkit-tap-highlight-color:transparent;user-select:none;touch-action:manipulation;}
  .tc-dp:active{background:var(--pt-accent);color:var(--pt-accent-text);}
  .tc-hub{pointer-events:none;}
  .tc-up{border-radius:8px 8px 0 0;}.tc-down{border-radius:0 0 8px 8px;}
  .tc-left{border-radius:8px 0 0 8px;}.tc-right{border-radius:0 8px 8px 0;}
  .tc-ab{display:flex;align-items:center;gap:15px;}
  .tc-round{
    width:60px;height:60px;border-radius:50%;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    border:0;cursor:pointer;font-size:17px;font-weight:900;line-height:1;
    color:#fff;user-select:none;touch-action:manipulation;
    box-shadow:0 5px 0 rgba(0,0,0,.28);}
  .tc-round span{font-size:9px;font-weight:600;margin-top:3px;opacity:.92;}
  .tc-a{background:linear-gradient(160deg,#E8556A,#C52E44);}
  .tc-b{background:linear-gradient(160deg,#37D6E8,#1C8FB0);}
  .tc-round:active{transform:translateY(3px);box-shadow:0 2px 0 rgba(0,0,0,.28);}
}
@media(max-width:380px){
  .ability-fields-edit{grid-template-columns:1fr;}
  .ab-row-grid{grid-template-columns:1fr;}
}

/* ==================================================================
   V17 升级：固定侧边导航 / 能力表格优化 / 空间内自定义等级
   ================================================================== */

/* ---------- 1. 桌面端：左侧导航独立固定、内部滚动，位置不随切换重置 ---------- */
@media(min-width:681px){
  .nav-wrap{
    display:block;
    position:sticky;
    top:60px;
    align-self:flex-start;
    flex:0 0 220px;
    width:220px;
    height:calc(100vh - 60px);
    z-index:20;
  }
  .sidebar{
    width:100%;
    height:100%;
    overflow-y:auto;
    overflow-x:hidden;
    overscroll-behavior:contain;
    scrollbar-width:thin;
    scrollbar-color:var(--pt-border) transparent;
  }
  .sidebar::-webkit-scrollbar{width:6px;}
  .sidebar::-webkit-scrollbar-thumb{background:var(--pt-border);border-radius:999px;}
  .sidebar::-webkit-scrollbar-track{background:transparent;}
}

/* ---------- 2. 能力档案表格：去密集、卡片化、全主题清晰 ---------- */
.ability-table-wrap{
  margin-top:18px;
  border:1px solid var(--pt-border-soft);
  border-radius:14px;
  overflow:auto;
  background:var(--pt-panel);
  box-shadow:0 1px 2px rgba(2,8,30,.04),0 12px 28px -20px rgba(2,8,30,.3);
}
.portal .p-main .ability-table-wrap .ability-table{
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  font-size:13.5px;
  min-width:460px;
}
/* 表头：高特异性覆盖古风/赛博的深色字，保证清晰可读 */
.portal .p-main .p-panel .ability-table-wrap .ability-table thead th{
  padding:14px 16px;
  text-align:left;
  font-weight:700;
  letter-spacing:.5px;
  white-space:nowrap;
  background:var(--pt-accent);
  color:var(--pt-accent-text);
  border-bottom:1px solid var(--pt-border);
}
/* 正文：加大行距、垂直居中，去密集 */
.portal .p-main .p-panel .ability-table-wrap .ability-table tbody td{
  padding:15px 16px;
  vertical-align:middle;
  line-height:1.7;
  color:var(--pt-text);
  border-bottom:1px solid var(--pt-border-soft);
}
.portal .p-main .p-panel .ability-table-wrap .ability-table tbody tr:last-child td{border-bottom:0;}
.portal .p-main .p-panel .ability-table-wrap .ability-table tbody tr{transition:background .15s ease;}
.portal .p-main .p-panel .ability-table-wrap .ability-table tbody tr:nth-child(even){background:var(--pt-panel-2);}
.portal .p-main .p-panel .ability-table-wrap .ability-table tbody tr:hover{background:var(--pt-glow);}
.portal .p-main .p-panel .ability-table-wrap .ability-table tbody td:first-child{
  font-weight:700;
  color:var(--pt-text);
}
.portal .p-main .p-panel .ability-table-wrap .ability-table .ability-empty{
  text-align:center;
  padding:28px 14px!important;
  color:var(--pt-muted)!important;
}

/* ---------- 3. 个人空间内自定义等级 ---------- */
.space-level-manage{
  margin-top:12px;
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.slv-edit-list{
  display:grid;
  gap:9px;
  margin-top:12px;
  max-height:52vh;
  overflow-y:auto;
  padding-right:4px;
}
.slv-edit-row{
  display:grid;
  grid-template-columns:52px 1fr 104px;
  gap:8px;
  align-items:center;
}
.slv-edit-row .slv-no{
  font-size:12px;
  font-weight:700;
  color:var(--pt-muted);
  text-align:center;
}
.slv-edit-row .field{padding:9px 11px;}
.slv-rule-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:10px;
  margin-top:10px;
}
.slv-rule-grid .sr-cell{
  display:flex;
  flex-direction:column;
  gap:5px;
}
.slv-rule-grid .sr-cell span{font-size:12px;color:var(--pt-text-soft);}
.slv-rule-grid .sr-cell .field{padding:9px 11px;}
@media(max-width:480px){
  .slv-edit-row{grid-template-columns:44px 1fr 88px;gap:6px;}
}

/* ============ 云端账号 ============ */
.cloud-loading{
  display:flex;align-items:center;justify-content:center;gap:12px;
  padding:48px 16px;color:var(--pt-text-soft);font-size:14px}
.cl-spin{
  width:22px;height:22px;border-radius:50%;flex:0 0 auto;
  border:2.5px solid var(--pt-border);border-top-color:var(--pt-accent);
  animation:clspin .8s linear infinite}
@keyframes clspin{to{transform:rotate(360deg)}}
.cloud-pill{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;
  border:1px solid var(--pt-border);color:var(--pt-text-soft);
  background:var(--pt-input);transition:.18s}
.cloud-pill:hover{border-color:var(--pt-accent);color:var(--pt-accent)}
.cloud-pill.on{
  background:var(--pt-accent);border-color:var(--pt-accent);color:var(--pt-accent-text)}
.cloud-tabs{display:flex;gap:8px;margin:6px 0 14px}
.cloud-tabs .ct{
  flex:0 0 auto;padding:8px 22px;border-radius:999px;border:1px solid var(--pt-border);
  background:var(--pt-input);color:var(--pt-text-soft);font-weight:600;transition:.18s}
.cloud-tabs .ct.on{
  background:var(--pt-accent);border-color:var(--pt-accent);color:var(--pt-accent-text)}
.cloud-form{max-width:460px}
.cloud-msg{min-height:20px;font-size:13px;margin-bottom:4px}
.cloud-msg.err{color:var(--pt-danger);font-weight:600}
.cloud-account{
  border:1px solid var(--pt-border);border-radius:16px;padding:20px;
  background:var(--pt-panel);box-shadow:var(--pt-shadow)}
.cloud-account-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.cloud-av{
  width:60px;height:60px;border-radius:50%;overflow:hidden;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;
  background:var(--pt-accent);color:var(--pt-accent-text);font-weight:800;font-size:24px}
.cloud-account-head .grade-badge{margin-left:auto}
.cloud-stats{
  display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}
.cloud-stats .cs{
  border:1px solid var(--pt-border);border-radius:12px;padding:12px 14px;
  display:flex;flex-direction:column;gap:6px;background:var(--pt-input)}
.cloud-stats .cs span{font-size:12px;color:var(--pt-text-soft)}
.cloud-stats .cs b{font-size:20px;color:var(--pt-text)}
@media(max-width:480px){
  .cloud-stats{grid-template-columns:1fr;gap:8px}
  .cloud-account-head .grade-badge{margin-left:0}
}

