/* ========================================================================
   1CCF Broadsheet · 大报版式样式层
   设计基准：纸感底色 + 墨色衬线 + 分栏细线（column rule），无卡片、无阴影、无圆角
   ======================================================================== */
:root{
  /* — 纸与墨 — */
  --paper:#f7f4ec;          /* 页面纸底 */
  --paper-2:#fbf9f3;        /* 抬升块（次条/榜单）*/
  --ink:#111111;            /* 正文主墨 */
  --ink-2:#3a3a3a;          /* 次级墨 */
  --ink-3:#6b6459;          /* 弱化：署名、时间、来源 */
  --rule:#d8d2c6;           /* 发丝分栏线 */
  --rule-2:#b8b1a2;         /* 中等线 */
  --rule-heavy:#111111;     /* 报头重线 */
  --navy:#1b2a4a;           /* 强调：编号、数据面板 */
  --kicker:#8c2a2a;         /* 栏目眉题红 */
  --hover:rgba(27,42,74,.06);

  /* — 排版 — */
  --serif:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong",Georgia,"Times New Roman",serif;
  --sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",-apple-system,BlinkMacSystemFont,sans-serif;

  /* — 栅格 — */
  --col-flash:212px;        /* 左：简讯轨 */
  --col-rail:290px;         /* 右：热点轨 */
  --gutter:22px;            /* 栏间距（线居中）*/
  --page-max:1480px;

  /* — 与 app.css 令牌对接：弹窗、标签等共用组件自动继承纸张配色 — */
  --bg-color:var(--paper); --card-bg:var(--paper-2); --card-hover-bg:var(--paper);
  --border-color:var(--rule); --border-subtle:var(--rule);
  --text-primary:var(--ink); --text-secondary:var(--ink-2); --text-muted:var(--ink-3);
  --theme-source-bg:var(--paper-2); --theme-card-bg:var(--paper-2); --theme-border:var(--rule);
  --theme-heading:var(--ink); --theme-muted:var(--ink-3);
  --accent:var(--navy); --accent-bg:var(--navy); --accent-fg:var(--paper);
  --accent-soft:var(--paper-2); --accent-line:var(--rule-2);
  --surface-2:var(--paper-2); --surface-3:var(--paper-2);
  --hover-bg:var(--hover); --track:var(--rule); --veil:var(--paper);
  --alert-bg:var(--navy); --alert-line:var(--rule-2);
  /* app.css 有全局 header{background:var(--header-bg)!important}；大报报眉必须是纸底 */
  --header-bg:var(--paper);
}
[data-reader-theme="green"]{--paper:#e2ede2;--paper-2:#edf5ed;--ink:#122818;--ink-2:#2d4a34;--ink-3:#4e6b54;--rule:#c4d6c4;--rule-2:#a9c2a9;--rule-heavy:#122818;--navy:#1e382b;--kicker:#6b3030;--hover:rgba(30,56,43,.07)}
[data-reader-theme="parchment"]{--paper:#f0e6d2;--paper-2:#faf4e6;--ink:#2d2215;--ink-2:#544432;--ink-3:#73614d;--rule:#ded0b4;--rule-2:#c8b694;--rule-heavy:#2d2215;--navy:#3d2e22;--kicker:#8c2a2a;--hover:rgba(61,46,34,.07)}
[data-reader-theme="dark"]{--paper:#14161a;--paper-2:#1a1d22;--ink:#e8e4da;--ink-2:#bdb8ad;--ink-3:#8b857a;--rule:#2e3339;--rule-2:#444a52;--rule-heavy:#e8e4da;--navy:#9db4dd;--kicker:#d98a8a;--hover:rgba(232,228,218,.06)}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
/* app.css 为经典版的整屏内滚布局给 body 上了 !important；大报版式走正常文档流，必须压过 */
body{
  background:var(--paper)!important;color:var(--ink)!important;
  font-family:var(--serif)!important;overflow:visible!important;height:auto!important;
  font-size:calc(16px * var(--font-scale));line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
/* 实时连接状态灯：theme.js 直接覆写 className（Tailwind 工具类），这里按类名片段着色，不依赖 Tailwind */
#status-indicator{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--rule-2);margin-left:6px;vertical-align:middle;transition:background .2s}
#status-indicator[class*="emerald"]{background:#3f9e6a}
#status-indicator[class*="red-500"]{background:#b4443c}
#status-indicator[class*="blue-500"]{background:var(--navy)}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--page-max);margin:0 auto;padding:0 28px}

/* ===== 1. 报眉 · 日期 / 字号 / 专区 ===================================== */
.utility{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:14px 0 10px;font-family:var(--sans);font-size:calc(11px * var(--font-scale));color:var(--ink-3);letter-spacing:.02em}
.utility .u-col{display:flex;flex-direction:column;gap:3px;flex:1 1 0;min-width:0}
.utility .u-right{align-items:flex-end;text-align:right}
.masthead{flex:0 0 auto;text-align:center;padding:0 12px}
.masthead h1{font-size:calc(52px * var(--font-scale));font-weight:700;letter-spacing:.14em;line-height:1;text-indent:.14em}
.masthead .sub{font-size:calc(13px * var(--font-scale));letter-spacing:.42em;text-indent:.42em;color:var(--ink-2);margin-top:6px;font-weight:500}
.u-btn{background:none;border:none;font:inherit;color:var(--ink-3);cursor:pointer;padding:1px 4px;border-radius:2px}
button.u-btn:hover,a.u-btn:hover{color:var(--ink);background:var(--hover)}
.u-btn[aria-pressed="true"]{color:var(--ink);font-weight:700}
.u-sep{color:var(--rule-2);margin:0 2px}

/* ===== 4. 三栏主栅格（分栏线居中于栏间距）============================== */
.front{
  display:grid;
  grid-template-columns:var(--col-flash) 1fr var(--col-rail);
  gap:0;padding:18px 0 0;
}
.front > .col{padding:0 var(--gutter)}
/* 中栏做成 flex 列，翻页条 margin-top:auto 吸底：即便当页条目偏短，
   底部那条粗线也始终与左右两栏的栏线收在同一水平上。 */
.front > .col.c-lead{display:flex;flex-direction:column}
.front > .col.c-lead .pager{margin-top:auto}
.front > .col:first-child{padding-left:0;border-right:1px solid var(--rule)}
.front > .col:last-child{padding-right:0;border-left:1px solid var(--rule)}

/* 栏目眉题：上粗线 + 标题 */
.sechead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;border-bottom:2px solid var(--rule-heavy);padding-bottom:5px;margin-bottom:11px}
.sechead h2{font-size:calc(15px * var(--font-scale));font-weight:700;letter-spacing:.08em}
.sechead .aux{font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));color:var(--ink-3);letter-spacing:.02em}
.sechead .aux button{background:none;border:none;font:inherit;color:var(--ink-3);cursor:pointer;padding:0 2px}
.sechead .aux button:hover{color:var(--ink)}
.sechead .aux button[aria-pressed="true"]{color:var(--ink);font-weight:700}
.sechead.tight{margin-top:22px}

/* ===== 4a. 左栏 · 简讯轨 ============================================== */
.flash{display:block;padding:9px 0;border-bottom:1px solid var(--rule)}
.flash:first-child{padding-top:0}
.flash:hover .f-t{color:var(--kicker)}
.flash .f-time{font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));color:var(--ink-3);letter-spacing:.03em;display:block;margin-bottom:3px}
.flash .f-t{font-size:calc(14px * var(--font-scale));font-weight:600;line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.flash .f-src{font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));color:var(--ink-3);margin-top:4px;display:flex;flex-wrap:wrap;gap:5px;align-items:center}

/* 角标：极轻，纯文字 + 细框 */
.chip{font-family:var(--sans);font-size:calc(9.5px * var(--font-scale));line-height:1.5;color:var(--ink-3);border:1px solid var(--rule);padding:0 4px;letter-spacing:.02em}
.chip.zone{color:var(--kicker);border-color:var(--kicker)}
.chip.pay,.chip.block{color:var(--navy);border-color:var(--rule-2)}

/* ===== 4b. 中栏 · 头条 ================================================= */
.kicker{font-family:var(--sans);font-size:calc(11.5px * var(--font-scale));font-weight:700;color:var(--kicker);letter-spacing:.14em;margin-bottom:9px}
.lead-h{font-size:calc(46px * var(--font-scale));font-weight:700;line-height:1.16;letter-spacing:-.01em;margin-bottom:14px}
.lead-h a:hover{color:var(--navy);text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px}
.lead-dek{font-size:calc(16.5px * var(--font-scale));line-height:1.72;color:var(--ink-2);margin-bottom:12px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.byline{font-family:var(--sans);font-size:calc(11px * var(--font-scale));color:var(--ink-3);display:flex;flex-wrap:wrap;align-items:center;gap:7px;padding-bottom:14px;border-bottom:1px solid var(--rule)}
.byline .dot{color:var(--rule-2)}
.byline .more{color:var(--navy);border:1px solid var(--rule-2);padding:0 5px;cursor:pointer;background:none;font:inherit}
button.more:hover,.byline button.more:hover{background:var(--navy);color:var(--paper);border-color:var(--navy)}
/* 触屏上 11px 高的按钮点不中，给到接近 44px 的可点高度 */
@media (max-width:720px){
  .byline .more{padding:7px 10px;line-height:1.2;min-height:32px;display:inline-flex;align-items:center}
  .byline{gap:9px}
}

/* 头条下挂的相关条目 */
.lead-links{list-style:none;margin:2px 0 0}
.lead-links li{padding:6px 0 6px 15px;position:relative;font-size:calc(14.5px * var(--font-scale));line-height:1.5;border-bottom:1px solid var(--rule)}
.lead-links li:before{content:"■";position:absolute;left:0;top:7px;font-size:calc(7px * var(--font-scale));color:var(--kicker)}
.lead-links li:hover{color:var(--kicker)}
.lead-links .s{font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));color:var(--ink-3);margin-left:6px}

/* 中栏三格次条 */
.decks{display:grid;grid-template-columns:repeat(3,1fr);margin-top:20px;border-top:3px solid var(--rule-heavy);padding-top:13px}
.decks .deck{padding:0 16px;border-left:1px solid var(--rule)}
.decks .deck:first-child{padding-left:0;border-left:none}
.decks .deck:last-child{padding-right:0}
.deck .d-kick{font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));font-weight:700;color:var(--kicker);letter-spacing:.1em;margin-bottom:6px}
.deck .d-t{font-size:calc(18px * var(--font-scale));font-weight:700;line-height:1.32;margin-bottom:7px}
.deck:hover .d-t{color:var(--navy)}
.deck .d-s{font-size:calc(13px * var(--font-scale));line-height:1.62;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.deck .d-m{font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));color:var(--ink-3);margin-top:8px;padding-top:7px;border-top:1px solid var(--rule)}

/* 中栏后续要闻河 */
.river{margin-top:6px}
.river .r-item{display:grid;grid-template-columns:1fr;gap:4px;padding:14px 0;border-bottom:1px solid var(--rule)}
.river .r-item .r-t{font-size:calc(21px * var(--font-scale));font-weight:700;line-height:1.34}
.river .r-item:hover .r-t{color:var(--navy)}
.river .r-item .r-s{font-size:calc(13.5px * var(--font-scale));line-height:1.66;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* 覆盖媒体数：头版正文按这个排序，所以给它一个可扫读的角标 */
.river .r-item .r-m .cov{font-family:var(--sans);font-weight:700;color:var(--kicker);border:1px solid var(--kicker);padding:0 5px;letter-spacing:.02em}
.river .r-item .r-m{font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));color:var(--ink-3);display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-top:2px}

/* ===== 4c. 右栏 · 热点榜 / 大事 ======================================== */
.rank{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--rule)}
.rank:first-child{padding-top:0}
.rank .n{flex:0 0 17px;font-family:var(--sans);font-size:calc(15px * var(--font-scale));font-weight:700;color:var(--navy);line-height:1.3;font-variant-numeric:tabular-nums}
.rank .b{min-width:0;flex:1 1 auto}
.rank .t{font-size:calc(14px * var(--font-scale));font-weight:600;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rank:hover .t{color:var(--kicker)}
.rank .m{font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));color:var(--ink-3);margin-top:4px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* 24 小时大事：主体—动作—客体 */
.evt{display:block;padding:9px 0;border-bottom:1px solid var(--rule)}
.evt:hover .e-t{color:var(--kicker)}
.evt .e-t{display:block;font-size:calc(13.5px * var(--font-scale));font-weight:600;line-height:1.45;
  color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* 副行：SVO 三元组 + 分类 + 印证家数 */
.evt .e-svo{display:block;font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));
  color:var(--ink-3);margin-top:4px;line-height:1.5}
.evt .e-svo i{font-style:normal;color:var(--kicker);padding:0 3px}
.evt .e-svo em{font-style:normal;margin-left:6px;padding:0 4px;border:1px solid var(--rule);color:var(--ink-3)}
.rail-empty{font-family:var(--sans);font-size:calc(11px * var(--font-scale));color:var(--ink-3);padding:14px 0;text-align:center}

/* ===== 5. 翻页 / 页脚 ================================================== */
.pager{display:flex;align-items:center;justify-content:space-between;margin-top:26px;padding:16px 0;border-top:3px solid var(--rule-heavy);font-family:var(--sans);font-size:calc(12px * var(--font-scale))}
.pager a{border:1px solid var(--rule-2);padding:6px 18px;color:var(--ink-2);letter-spacing:.06em}
.pager a:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.pager a.off{opacity:.3;pointer-events:none}
.pager .p{color:var(--ink-3)}
footer.paper{border-top:1px solid var(--rule-2);margin-top:30px;padding:16px 0 34px;font-family:var(--sans);font-size:calc(11px * var(--font-scale));color:var(--ink-3);display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}

/* ===== 6. 响应式：三栏 → 两栏 → 单栏 ================================== */
@media (max-width:1180px){
  :root{--col-flash:186px;--col-rail:248px;--gutter:16px}
  .lead-h{font-size:calc(38px * var(--font-scale))}
  .masthead h1{font-size:calc(44px * var(--font-scale))}
}
@media (max-width:980px){
  .front{grid-template-columns:1fr var(--col-rail)}
  .front > .col.c-flash{grid-column:1 / -1;border-right:none;padding:0;order:3;border-top:3px solid var(--rule-heavy);margin-top:22px;padding-top:12px}
  .front > .col.c-lead{padding-left:0}
  .front > .col.c-flash .flash-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 24px}
}
@media (max-width:720px){
  .wrap{padding:0 16px}
  .front{grid-template-columns:1fr}
  .front > .col{padding:0!important;border:none!important}
  .front > .col.c-rail{order:2;border-top:3px solid var(--rule-heavy)!important;margin-top:22px;padding-top:12px!important}
  .front > .col.c-flash .flash-grid{grid-template-columns:1fr}
  .masthead h1{font-size:calc(34px * var(--font-scale))}
  .masthead .sub{font-size:calc(10px * var(--font-scale));letter-spacing:.3em;text-indent:.3em}
  .utility{flex-wrap:wrap;justify-content:center;text-align:center}
  .utility .u-col{flex:1 1 100%;align-items:center;text-align:center;order:2}
  .masthead{order:1;flex:1 1 100%}
  .lead-h{font-size:calc(31px * var(--font-scale))}
  .decks{grid-template-columns:1fr;gap:0}
  .decks .deck{padding:13px 0;border-left:none;border-top:1px solid var(--rule)}
  .decks .deck:first-child{border-top:none;padding-top:0}
  .river .r-item .r-t{font-size:calc(19px * var(--font-scale))}
  .navsearch{display:none}
}
@media print{
  .pager,.utility .u-right{display:none}
  body{background:#fff;font-size:10pt}
}



/* Tailwind preflight 用 [type='submit'] / [type='button'] 重置按钮背景，属性选择器
   特异度 (0,1,0) 与裸类名完全相同，且注入位置更靠后，于是把自定义背景洗成透明。
   下面这些规则统一加元素选择器提到 (0,1,1)，避免用 !important。 */

/* ===== 8. 检索条：时间轴快捷筛选 + 可视化多条件检索 ===================== */
.searchbar{padding:12px 0 14px;border-bottom:1px solid var(--rule);font-family:var(--sans)}
.searchbar .vs-wrap{max-width:none;width:100%}
.vs-wrap{position:relative;flex:1 1 auto;max-width:640px;min-width:0}
.vs-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;
  border:1px solid var(--rule-2);background:var(--paper-2);padding:4px 6px}
.vs-bar:focus-within{border-color:var(--ink)}
.vs-chips{flex:1 1 180px;display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-width:0;
  max-height:52px;overflow-y:auto;scrollbar-width:none}
.vs-chips::-webkit-scrollbar{display:none}
.vs-chips input{flex:1 1 8rem;min-width:7rem;background:transparent;border:none;outline:none;
  font-family:var(--sans);font-size:calc(11.5px * var(--font-scale));color:var(--ink);padding:3px 2px}
.vs-chips input::placeholder{color:var(--ink-3)}
/* search-builder.js 生成的条件芯片 */
.vs-chips .chip,.vs-chips [class*="chip"]{font-size:calc(10.5px * var(--font-scale));
  border:1px solid var(--rule-2);color:var(--ink-2);padding:1px 5px;cursor:pointer;background:var(--paper)}
.vs-btn{flex:0 0 auto;background:none;border:1px solid transparent;color:var(--ink-3);cursor:pointer;
  font-family:var(--sans);font-size:calc(11px * var(--font-scale));padding:2px 7px;letter-spacing:.04em}
.vs-btn:hover{color:var(--ink);border-color:var(--rule-2)}
.vs-go{border-color:var(--rule-2);color:var(--ink)}
button.vs-go:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.vs-badge{display:inline-block;margin-left:4px;background:var(--kicker);color:#fff;
  font-size:calc(9px * var(--font-scale));padding:0 4px;line-height:1.5}
.vs-badge.hidden{display:none}
.vs-mode{flex:0 0 auto;background:transparent;border:none;outline:none;cursor:pointer;color:var(--ink-3);
  font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));font-weight:700}
.vs-mode option{background:var(--paper);color:var(--ink)}

/* 高级检索面板：纸底细线，不用圆角与投影 */
.vs-panel{position:absolute;z-index:60;top:calc(100% + 6px);right:0;width:min(640px,94vw);
  background:var(--paper-2);border:1px solid var(--ink);padding:14px 16px}
.vs-panel.hidden{display:none}
.vs-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  padding-bottom:8px;margin-bottom:10px;border-bottom:1px solid var(--rule)}
.vs-panel-title{font-family:var(--serif);font-size:calc(14px * var(--font-scale));font-weight:700;color:var(--ink)}
.vs-panel-hint{font-size:calc(10.5px * var(--font-scale));color:var(--ink-3);margin-top:2px}
.vs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 14px}
.vs-dates{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.vs-row{display:flex;gap:6px}
.vs-field-label{display:block;font-size:calc(10.5px * var(--font-scale));color:var(--ink-3);
  margin-bottom:3px;letter-spacing:.04em}
.vs-field-input{width:100%;min-width:0;background:var(--paper);border:1px solid var(--rule-2);
  color:var(--ink);font-family:var(--sans);font-size:calc(11.5px * var(--font-scale));padding:4px 6px;outline:none}
.vs-field-input:focus{border-color:var(--ink)}
.vs-add-btn{flex:0 0 auto;background:none;border:1px solid var(--rule-2);color:var(--ink-2);cursor:pointer;
  font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));padding:0 8px}
button.vs-add-btn:hover,a.vs-add-btn:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.vs-panel-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:12px;padding-top:9px;border-top:1px solid var(--rule)}
.vs-clear{background:none;border:none;color:var(--ink-3);cursor:pointer;text-decoration:underline;
  font-family:var(--sans);font-size:calc(11px * var(--font-scale))}
.vs-clear:hover{color:var(--kicker)}
button.vs-submit,a.vs-submit{background:var(--ink);color:var(--paper);border:1px solid var(--ink);cursor:pointer;
  font-family:var(--sans);font-size:calc(11px * var(--font-scale));padding:5px 16px;letter-spacing:.06em}
button.vs-submit:hover,a.vs-submit:hover{background:var(--navy);border-color:var(--navy)}
.vs-preview{margin-top:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:calc(10px * var(--font-scale));color:var(--ink-3);word-break:break-all}

@media (max-width:860px){
  .searchbar{flex-direction:column;gap:8px}
  .vs-wrap{max-width:none;width:100%}
  .vs-panel{right:auto;left:0;width:100%}
  .vs-grid{grid-template-columns:1fr}
}

/* ===== 9. 单篇阅读页 ==================================================== */
.reader-utility{padding-bottom:8px}
.masthead-sm h1{font-size:calc(26px * var(--font-scale));letter-spacing:.12em;text-indent:.12em}
.u-back{font-size:calc(12px * var(--font-scale));font-weight:700;color:var(--ink-2)}
.rule-heavy{border-bottom:3px solid var(--rule-heavy);margin-bottom:26px}
.rule-heavy.rule-tight{margin-bottom:0}          /* 首页：紧跟其后的检索条自带留白 */

.reader{max-width:720px;margin:0 auto;padding-bottom:10px}
.reader-h{font-family:var(--serif);font-size:calc(40px * var(--font-scale));font-weight:700;
  line-height:1.2;letter-spacing:-.01em;margin:6px 0 16px;color:var(--ink)}
.reader-byline{margin-bottom:26px}

/* 正文排版：字号由 theme.js 的 --reading-font-size 驱动，与全站字号档位联动 */
.reader-body{font-family:var(--serif);font-size:var(--reading-font-size,18px);line-height:1.95;
  color:var(--ink);letter-spacing:.01em}
.reader-body > *{margin-bottom:1.15em}
.reader-body > *:last-child{margin-bottom:0}
.reader-body p{text-align:justify;text-justify:inter-ideograph}
.reader-body h2,.reader-body h3,.reader-body h4{font-weight:700;line-height:1.4;
  margin-top:1.8em;margin-bottom:.7em;color:var(--ink)}
.reader-body h2{font-size:1.28em;border-bottom:1px solid var(--rule);padding-bottom:.3em}
.reader-body h3{font-size:1.12em}
.reader-body a{color:var(--navy);text-decoration:underline;text-underline-offset:3px;
  text-decoration-thickness:1px;text-decoration-color:var(--rule-2)}
.reader-body a:hover{text-decoration-color:var(--navy)}
.reader-body blockquote{border-left:3px solid var(--kicker);padding:.2em 0 .2em 1.1em;
  color:var(--ink-2);font-style:normal}
.reader-body ul,.reader-body ol{padding-left:1.4em}
.reader-body ul{list-style:square}
.reader-body ol{list-style:decimal}
.reader-body li{margin-bottom:.45em}
.reader-body img{max-width:100%;height:auto;display:block;margin:1.6em auto;border:1px solid var(--rule)}
.reader-body figcaption{font-family:var(--sans);font-size:calc(11px * var(--font-scale));
  color:var(--ink-3);text-align:center;margin-top:-1.1em}
.reader-body hr{border:none;border-top:1px solid var(--rule);margin:2em 0}
.reader-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88em;
  background:var(--paper-2);border:1px solid var(--rule);padding:0 4px}
.reader-body table{width:100%;border-collapse:collapse;font-size:.9em}
.reader-body th,.reader-body td{border:1px solid var(--rule);padding:6px 9px;text-align:left}
.reader-body th{background:var(--paper-2);font-weight:700}

/* 同源全文引导框 */
.reader-box{border:1px solid var(--rule-2);border-left:3px solid var(--navy);
  background:var(--paper-2);padding:15px 18px;margin:34px 0 0}
.rb-head{font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));color:var(--ink-3);
  letter-spacing:.08em;margin-bottom:6px}
.rb-title{font-family:var(--serif);font-size:calc(17px * var(--font-scale));font-weight:700;
  line-height:1.4;margin-bottom:8px;color:var(--ink)}
.rb-text{font-size:calc(13.5px * var(--font-scale));line-height:1.75;color:var(--ink-2);margin-bottom:12px;
  display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}

/* 跨信源上下文 */
.reader-cross{margin-top:34px}
.reader-cross .sechead{margin-bottom:6px}

/* 底部动作条 */
.reader-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;
  margin-top:34px;padding-top:18px;border-top:3px solid var(--rule-heavy)}
.ra-left{display:flex;flex-wrap:wrap;align-items:center;gap:9px}
.ra-btn{display:inline-flex;align-items:center;padding:5px 14px;line-height:1.9;text-decoration:none}
.reader-actions .vs-submit{text-decoration:none;display:inline-flex;align-items:center}

@media (max-width:720px){
  .reader-h{font-size:calc(28px * var(--font-scale))}
  .rule-heavy{margin-bottom:18px}
  .reader-actions{flex-direction:column;align-items:stretch}
  .ra-left{flex-direction:column;align-items:stretch}
  .reader-actions .vs-submit,.ra-btn{justify-content:center}
}

/* ===== 10. 弹窗大报化皮肤 ==============================================
   弹窗正文大量由 JS 动态生成（events-feed / storyline / dossier 等合计数千行
   Tailwind 标记），逐行改写风险极高。这里改用一层覆写把卡片观感中和掉：
   去圆角、去投影、纸底细线、衬线标题。语义色（冲突红/合作蓝/外交黄）走内联
   style，优先级更高，不会被这里洗掉。
   ====================================================================== */
.bs-modal{background:rgba(30,26,18,.45)!important;font-family:var(--sans)}
[data-reader-theme="dark"] .bs-modal{background:rgba(0,0,0,.62)!important}

/* 弹窗外壳 */
.bs-modal > div:not(.absolute){background:var(--paper)!important;color:var(--ink)!important;
  border:1px solid var(--ink)!important;border-radius:0!important;box-shadow:none!important}

/* 统一去圆角去投影 */
.bs-modal [class*="rounded"]{border-radius:0!important}
.bs-modal [class*="shadow"]{box-shadow:none!important}

/* 底色归一到纸张。
   这里一律用 ~= 精确匹配类名 token，不用 *=：后者会连 hover:/dark:/md: 变体
   和 bg-white/20 这类透明度变体一起命中，把悬停态变成常驻态、把半透明徽章
   刷成实心块。 */
.bs-modal [class~="bg-white"],
.bs-modal [class~="bg-gray-50"],.bs-modal [class~="bg-gray-100"],
.bs-modal [class~="bg-gray-50/70"],.bs-modal [class~="bg-slate-50"],
.bs-modal [class~="bg-slate-100"],.bs-modal [class~="bg-neutral-50"],
.bs-modal [class~="bg-[#fafafa]"],.bs-modal [class~="bg-[#f1eff4]"],
.bs-modal [class~="bg-[#111]"],.bs-modal [class~="bg-[#1a1e23]"],
.bs-modal [class~="bg-[#1a1e24]"]{background-color:var(--paper-2)!important}
.bs-modal [class~="bg-gray-200"],.bs-modal [class~="bg-gray-200/60"]{background-color:var(--hover)!important}

/* 文字与分隔线（text-white 不动：它多半压在深色强调块上，由下面的强调块规则统一接管）*/
.bs-modal [class~="text-gray-900"],.bs-modal [class~="text-gray-800"],
.bs-modal [class~="text-slate-900"],.bs-modal [class~="text-slate-800"],
.bs-modal [class~="text-black"],.bs-modal [class~="text-[#111]"]{color:var(--ink)!important}
.bs-modal [class~="text-gray-700"],.bs-modal [class~="text-gray-600"],
.bs-modal [class~="text-slate-700"],.bs-modal [class~="text-slate-600"]{color:var(--ink-2)!important}
.bs-modal [class~="text-gray-500"],.bs-modal [class~="text-gray-400"],
.bs-modal [class~="text-gray-300"],.bs-modal [class~="text-slate-500"],
.bs-modal [class~="text-slate-400"]{color:var(--ink-3)!important}
.bs-modal [class*="border-gray"],.bs-modal [class*="border-slate"],
.bs-modal [class*="border-[#dfdbe2]"],.bs-modal [class*="border-[#333]"],
.bs-modal [class*="divide-gray"]{border-color:var(--rule)!important}

/* 实心强调块（深蓝按钮、表头条）→ 墨色 */
.bs-modal [class~="bg-[#213568]"],.bs-modal [class~="bg-[#182848]"],
.bs-modal [class~="bg-[#182235]"],.bs-modal [class~="bg-blue-600"],
.bs-modal [class~="bg-blue-700"],.bs-modal [class~="bg-teal-700"],
.bs-modal [class~="bg-accent"]{
  background-color:var(--navy)!important;color:var(--paper)!important;border-color:var(--navy)!important}

/* 标题回到衬线，正文与元信息保持无衬线 */
.bs-modal h1,.bs-modal h2,.bs-modal h3,.bs-modal h4{font-family:var(--serif)!important;font-weight:700!important}

/* 输入控件 */
.bs-modal input[type="text"],.bs-modal input[type="search"],.bs-modal input[type="date"],
.bs-modal select,.bs-modal textarea{
  background:var(--paper)!important;color:var(--ink)!important;
  border:1px solid var(--rule-2)!important;border-radius:0!important}
.bs-modal input:focus,.bs-modal select:focus,.bs-modal textarea:focus{border-color:var(--ink)!important;outline:none}

/* 滚动条与图谱画布保持中性 */
.bs-modal .custom-scrollbar{scrollbar-color:var(--rule-2) transparent}

/* ===== 11. 登录页（管理员 / 专区）====================================== */
body.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px 16px}
.login-card{width:100%;max-width:360px;background:var(--paper-2);border:1px solid var(--ink);padding:34px 30px 30px}
.login-mast{text-align:center;padding-bottom:16px;margin-bottom:22px;border-bottom:3px solid var(--rule-heavy)}
.login-mast .lm-name{font-family:var(--serif);font-size:calc(34px * var(--font-scale));font-weight:700;
  letter-spacing:.14em;text-indent:.14em;line-height:1;color:var(--ink)}
.login-mast .lm-sub{font-family:var(--sans);font-size:calc(11px * var(--font-scale));letter-spacing:.34em;
  text-indent:.34em;color:var(--ink-3);margin-top:8px}
.login-title{font-family:var(--serif);font-size:calc(19px * var(--font-scale));font-weight:700;
  color:var(--ink);margin-bottom:4px}
.login-hint{font-family:var(--sans);font-size:calc(11.5px * var(--font-scale));color:var(--ink-3);margin-bottom:20px}
.login-field{margin-bottom:14px}
.login-label{display:block;font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));
  color:var(--ink-3);letter-spacing:.06em;margin-bottom:4px}
.login-input{width:100%;background:var(--paper);border:1px solid var(--rule-2);color:var(--ink);
  font-family:var(--sans);font-size:calc(13px * var(--font-scale));padding:9px 11px;outline:none}
.login-input:focus{border-color:var(--ink)}
button.login-btn{width:100%;background:var(--ink);color:var(--paper);border:1px solid var(--ink);cursor:pointer;
  font-family:var(--sans);font-size:calc(13px * var(--font-scale));font-weight:700;letter-spacing:.14em;
  padding:10px;margin-top:8px}
button.login-btn:hover{background:var(--navy);border-color:var(--navy)}
.login-btn.loading{opacity:.6;cursor:wait;pointer-events:none}
.login-err{border:1px solid var(--kicker);border-left:3px solid var(--kicker);background:var(--paper);
  color:var(--kicker);font-family:var(--sans);font-size:calc(12px * var(--font-scale));
  padding:9px 12px;margin-bottom:18px;line-height:1.5}
.login-foot{text-align:center;margin-top:18px;padding-top:14px;border-top:1px solid var(--rule)}
.login-foot a{font-family:var(--sans);font-size:calc(11.5px * var(--font-scale));color:var(--ink-3)}
.login-foot a:hover{color:var(--ink)}

/* ===== 12. 搜索结果页（参照 WSJ 搜索版式）============================
   整行检索框 → 两枚胶囊（检索方式 / 日期）→「搜索结果」标题
   → 左主结果列（眉题/标题/摘要/署名/时间各占一行）+ 右「热门文章」编号榜。
   WSJ 结果行右侧有缩略图，items 表没有图片列，这里改为纯文本行。
   ====================================================================== */
.srch-bar{padding:18px 0 14px}
.srch-bar .vs-wrap{max-width:none;width:100%}
.srch-bar .vs-bar{padding:8px 12px;border:1px solid var(--rule-2);background:var(--paper-2)}
.srch-bar .vs-chips input{font-size:calc(15px * var(--font-scale));padding:5px 2px}
.srch-bar .vs-go{padding:6px 22px;background:var(--navy);color:var(--paper);border-color:var(--navy);
  font-size:calc(13px * var(--font-scale));font-weight:700}
button.srch-bar-go:hover{background:var(--ink)}
.srch-bar .vs-panel{right:0;width:min(760px,96vw)}

/* 两枚胶囊下拉 */
.srch-pills{display:flex;gap:12px;padding-bottom:20px;border-bottom:1px solid var(--rule)}
.pill{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--rule-2);border-radius:999px;
  padding:6px 15px;font-family:var(--sans);font-size:calc(12.5px * var(--font-scale));
  color:var(--ink-2);cursor:pointer;background:var(--paper)}
.pill:hover{border-color:var(--ink)}
.pill-ico{color:var(--ink-3);font-size:calc(12px * var(--font-scale))}
.pill select{border:none;background:transparent;outline:none;cursor:pointer;color:inherit;
  font:inherit;padding-right:2px}
.pill select option{background:var(--paper);color:var(--ink)}

/* 主列 + 右栏 */
.srch-page{display:grid;grid-template-columns:1fr 300px;gap:0;padding-top:26px}
.srch-results{padding-right:34px;min-width:0}
.srch-rail{padding-left:26px;border-left:1px solid var(--rule)}

.srch-head{margin-bottom:10px}
.srch-title{font-family:var(--serif);font-size:calc(28px * var(--font-scale));font-weight:700;
  line-height:1.25;color:var(--ink)}
.srch-count{font-family:var(--sans);font-size:calc(11.5px * var(--font-scale));color:var(--ink-3);margin-top:7px}

/* 结果行：眉题 / 标题 / 摘要 / 署名 / 时间，各占一行 */
.srch-item{display:block;padding:22px 0;border-bottom:1px solid var(--rule)}
.srch-item:hover .si-title{color:var(--navy)}
.si-kicker{font-family:var(--sans);font-size:calc(11.5px * var(--font-scale));
  color:var(--ink-3);letter-spacing:.06em;margin-bottom:7px}
.si-title{font-family:var(--serif);font-size:calc(23px * var(--font-scale));font-weight:700;
  line-height:1.36;color:var(--ink);margin-bottom:9px}
.si-snippet{font-size:calc(14.5px * var(--font-scale));line-height:1.8;color:var(--ink-2);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:12px}
.si-byline{font-family:var(--sans);font-size:calc(12.5px * var(--font-scale));color:var(--navy);
  font-style:italic;margin-bottom:9px}
.si-byline .sep{color:var(--rule-2);margin:0 6px;font-style:normal}
.si-time{font-family:var(--sans);font-size:calc(11.5px * var(--font-scale));color:var(--ink-3);
  display:flex;flex-wrap:wrap;align-items:center;gap:7px}

/* 右栏：热门文章 */
.hot-head{font-family:var(--serif);font-size:calc(19px * var(--font-scale));font-weight:700;
  color:var(--ink);margin-bottom:12px}
.hot-tabs{display:flex;border-bottom:1px solid var(--rule);margin-bottom:6px}
.hot-tab{flex:1 1 0;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;
  font-family:var(--sans);font-size:calc(12.5px * var(--font-scale));color:var(--ink-3);padding:8px 2px}
.hot-tab:hover{color:var(--ink)}
button.hot-tab.is-on{color:var(--navy);font-weight:700;border-bottom-color:var(--navy)}
.hot-list{list-style:none}
.hot-item{display:flex;gap:9px;padding:12px 0;border-bottom:1px solid var(--rule)}
.hot-n{flex:0 0 auto;font-family:var(--serif);font-size:calc(19px * var(--font-scale));
  font-weight:700;color:var(--ink-3);line-height:1.25}
.hot-b{min-width:0;flex:1 1 auto}
.hot-t{display:block;font-size:calc(14px * var(--font-scale));font-weight:600;line-height:1.5;color:var(--ink)}
.hot-item:hover .hot-t{color:var(--kicker)}
.hot-m{display:block;font-family:var(--sans);font-size:calc(10.5px * var(--font-scale));
  color:var(--ink-3);margin-top:4px}

/* 空结果 */
.srch-empty{padding:40px 0 60px}
.se-h{font-family:var(--serif);font-size:calc(21px * var(--font-scale));font-weight:700;
  color:var(--ink);margin-bottom:14px}
.se-tips{list-style:square;padding-left:1.3em;font-family:var(--sans);
  font-size:calc(13px * var(--font-scale));color:var(--ink-2);line-height:2;margin-bottom:22px}
.se-tips code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--paper-2);
  border:1px solid var(--rule);padding:0 3px}
.srch-empty .vs-submit{display:inline-block;text-decoration:none}

@media (max-width:900px){
  .srch-page{grid-template-columns:1fr;padding-top:18px}
  .srch-results{padding-right:0}
  .srch-rail{padding-left:0;border-left:none;border-top:3px solid var(--rule-heavy);
    margin-top:26px;padding-top:16px}
  .si-title{font-size:calc(19px * var(--font-scale))}
  .srch-pills{flex-wrap:wrap}
}

/* ===== 译文 / 媒体原文对照（阅读页） =====
   .bi-p 里译文与原文各占一块，默认显示译文；
   .has-bilingual.is-original 是整页原文态，.bi-p.is-flipped 是「与整页态相反」的单段态。 */
.bi-hint{font-family:var(--sans);font-size:calc(11px * var(--font-scale));color:var(--ink-3);
  border-left:2px solid var(--rule-2);padding:2px 0 2px 9px;margin:16px 0 -4px}
.reader-body.has-bilingual > .bi-p{margin-bottom:1.15em}
.bi-p{position:relative;border-radius:2px;
  /* 关掉本元素的双击缩放：viewport 允许 maximum-scale=5，不加这行的话
     手机上双击段落只会放大页面，dblclick 根本不稳定触发 */
  touch-action:manipulation;-webkit-tap-highlight-color:transparent;
  transition:background-color .15s ease,box-shadow .15s ease}
.bi-p > .bi-zh > *:first-child,.bi-p > .bi-en > *:first-child{margin-top:0}
.bi-p > .bi-zh > *:last-child,.bi-p > .bi-en > *:last-child{margin-bottom:0}
@media (hover:hover) and (pointer:fine){
  .bi-p:hover{background:var(--hover);box-shadow:-9px 0 0 0 var(--hover),9px 0 0 0 var(--hover)}
}
/* 触屏没有 hover，改用点按瞬时反馈 */
.bi-p:active{background:var(--hover)}
.bi-zh{display:block}
.bi-en{display:none;font-family:Georgia,"Times New Roman",serif;color:var(--ink-2);
  text-align:left;text-justify:auto}
.bi-en p{text-align:left;text-justify:auto}
/* 默认态（整页译文）下翻转某段 → 该段显示原文 */
.bi-p.is-flipped > .bi-zh{display:none}
.bi-p.is-flipped > .bi-en{display:block}
/* 整页原文态下未翻转的段 → 显示原文 */
.has-bilingual.is-original .bi-p:not(.is-flipped) > .bi-zh{display:none}
.has-bilingual.is-original .bi-p:not(.is-flipped) > .bi-en{display:block}
/* 整页原文态下翻转某段 → 该段切回译文。缺了这两条，翻转在原文态下不会有任何视觉变化 */
.has-bilingual.is-original .bi-p.is-flipped > .bi-zh{display:block}
.has-bilingual.is-original .bi-p.is-flipped > .bi-en{display:none}

/* 角标文案只在这四条里定义一次，宽窄屏两套呈现共用 */
.bi-p{--bi-label:"双击看原文"}
.has-bilingual.is-original .bi-p{--bi-label:"双击看译文"}
.bi-p.is-flipped{--bi-label:"双击看译文"}
.has-bilingual.is-original .bi-p.is-flipped{--bi-label:"双击看原文"}

/* 宽屏：悬停时浮在正文左栏外，不占版面 */
.bi-p::before{content:var(--bi-label);position:absolute;left:-5.6em;top:.25em;opacity:0;
  font-family:var(--sans);font-size:calc(10px * var(--font-scale));color:var(--ink-3);
  letter-spacing:.04em;pointer-events:none;transition:opacity .15s ease}
.bi-p:hover::before{opacity:.75}

/* 窄屏没有栏外空间，直接不显示角标：顶部提示已经讲清了交互，
   再逐段重复一遍只是噪音（切到原文的段落本身就是英文，一眼可辨）。 */
@media (max-width:1100px){.bi-p::before{display:none}}

/* 标题随整页态切换 */
.reader-h > .bi-en{display:none}
.reader-h.is-original > .bi-zh{display:none}
.reader-h.is-original > .bi-en{display:block;font-family:Georgia,"Times New Roman",serif}
