/* 《系统是被打出来的》全站样式 · 逐字抽取自样章 sample/ch05-cache-brothers.html
   下方「BASE」段落与样章 <style> 内容完全一致，禁止修改令牌与既有组件。
   新增组件一律追加在文件末尾的「EXTENDED」段，且只允许使用已有 CSS 变量。 */

/* ============================ BASE（样章逐字抽取） ============================ */
:root{
  --bg:#0B0E14; --panel:#121826; --panel-2:#0F141F; --line:#232B3D;
  --text:#DCE3F2; --muted:#8A94A9; --faint:#5A657D;
  --red:#FF5C5C; --amber:#FFB454; --teal:#3FD2C7; --green:#4CC38A;
  --mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  --serif:"Noto Serif SC","Songti SC","SimSun",serif;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto} *{animation:none!important;transition:none!important}}
body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:17px;line-height:1.85;
  -webkit-font-smoothing:antialiased}
.wrap{max-width:760px;margin:0 auto;padding:0 22px 90px}
.wide{max-width:960px;margin-left:auto;margin-right:auto}

/* ---------- header ---------- */
header{border-bottom:1px solid var(--line);background:linear-gradient(180deg,#0D1220 0%,var(--bg) 100%)}
.book-bar{max-width:960px;margin:0 auto;padding:14px 22px;display:flex;justify-content:space-between;align-items:baseline;
  font-family:var(--mono);font-size:12.5px;color:var(--faint);letter-spacing:.06em}
.book-bar b{color:var(--muted);font-weight:600}
.chapter-head{max-width:760px;margin:0 auto;padding:58px 22px 46px}
.eyebrow{font-family:var(--mono);font-size:13px;letter-spacing:.22em;color:var(--amber);margin-bottom:18px}
h1{font-family:var(--serif);font-weight:700;font-size:40px;line-height:1.3;letter-spacing:.01em}
.h1-sub{margin-top:14px;color:var(--muted);font-size:16.5px;max-width:600px}
@media(max-width:600px){h1{font-size:30px}}

/* ---------- prose ---------- */
h2{font-family:var(--serif);font-size:26px;font-weight:700;margin:64px 0 8px;line-height:1.4}
h2 .sec{font-family:var(--mono);font-size:13px;color:var(--faint);display:block;letter-spacing:.2em;margin-bottom:10px;font-weight:400}
h3{font-size:18.5px;font-weight:650;margin:34px 0 10px}
p{margin:16px 0}
p.lead{font-size:18px;color:#E8EEFA}
em{font-style:normal;color:var(--amber)}
strong{color:#F0F4FF;font-weight:650}
.kicker{border-left:3px solid var(--amber);padding:4px 0 4px 16px;color:var(--muted);margin:26px 0;font-size:16px}
code{font-family:var(--mono);font-size:.86em;background:var(--panel-2);border:1px solid var(--line);
  border-radius:5px;padding:1.5px 6px;color:#BFE3DD}
hr.thin{border:0;border-top:1px solid var(--line);margin:56px auto;max-width:120px}

/* ---------- pager / terminal ---------- */
.pager{background:var(--panel-2);border:1px solid #3A2430;border-radius:12px;margin:34px 0;overflow:hidden}
.pager-top{display:flex;align-items:center;gap:10px;padding:11px 16px;background:#1A1220;border-bottom:1px solid #3A2430;
  font-family:var(--mono);font-size:12.5px;color:#D8A0A8;letter-spacing:.05em}
.dot{width:9px;height:9px;border-radius:50%;background:var(--red);animation:pulse 1.6s ease-in-out infinite;flex:none}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}
.pager-body{padding:16px 18px;font-family:var(--mono);font-size:13.5px;line-height:2;color:#C7D2E8;overflow-x:auto}
.pager-body .r{color:var(--red)} .pager-body .a{color:var(--amber)} .pager-body .t{color:var(--teal)}
.pager-body .g{color:var(--faint)}

/* ---------- metric cards ---------- */
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:22px 0}
.metric{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.metric .k{font-size:12px;color:var(--faint);font-family:var(--mono);letter-spacing:.04em}
.metric .v{font-size:21px;font-family:var(--mono);margin-top:4px;font-weight:600}
.metric .d{font-size:12px;margin-top:3px;font-family:var(--mono)}
.up{color:var(--red)} .down{color:var(--teal)} .warn{color:var(--amber)}

/* ---------- decision blocks ---------- */
.decision{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px 22px 8px;margin:34px 0}
.decision-tag{font-family:var(--mono);font-size:12px;color:var(--bg);background:var(--amber);display:inline-block;
  padding:3px 10px;border-radius:99px;letter-spacing:.12em;font-weight:700;margin-bottom:12px}
.decision h3{margin-top:2px}
.opt{display:block;width:100%;text-align:left;background:var(--panel-2);border:1px solid var(--line);color:var(--text);
  border-radius:10px;padding:12px 16px;margin:10px 0;font-size:15.5px;font-family:var(--sans);cursor:pointer;line-height:1.7;
  transition:border-color .15s,background .15s}
.opt:hover{border-color:#3B4A6B}
.opt:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.opt .tag{font-family:var(--mono);color:var(--faint);margin-right:8px}
.opt.picked-good{border-color:var(--teal);background:#0F1D1D}
.opt.picked-bad{border-color:#7A3A44;background:#1C1216}
.verdict{display:none;border-radius:10px;padding:14px 16px;margin:14px 0 16px;font-size:15px;line-height:1.8;border:1px dashed var(--line);background:var(--panel-2)}
.verdict.show{display:block}
.verdict b.good{color:var(--teal)} .verdict b.bad{color:var(--red)} .verdict b.mid{color:var(--amber)}

/* ---------- 病历卡 ---------- */
.case-card{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--teal);
  border-radius:12px;margin:30px 0;overflow:hidden}
.case-card.no5{border-left-color:var(--amber)}
.case-card.no6{border-left-color:var(--red)}
.case-head{display:flex;justify-content:space-between;align-items:baseline;padding:16px 20px 0;flex-wrap:wrap;gap:6px}
.case-head h3{margin:0;font-size:19px}
.case-no{font-family:var(--mono);font-size:12px;color:var(--faint);letter-spacing:.1em}
.case-alias{padding:2px 20px 0;font-family:var(--mono);font-size:12.5px;color:var(--faint)}
.case-body{padding:8px 20px 18px}
.case-row{display:grid;grid-template-columns:86px 1fr;gap:14px;padding:11px 0;border-top:1px solid var(--line);font-size:15px}
.case-row:first-child{border-top:0}
.case-row .lbl{font-family:var(--mono);font-size:12.5px;color:var(--faint);padding-top:3px;letter-spacing:.08em}
.case-row .val{line-height:1.8}
.case-row .val .sym{color:var(--amber);font-family:var(--mono);font-size:13.5px}
@media(max-width:560px){.case-row{grid-template-columns:1fr;gap:2px}}

/* ---------- simulator ---------- */
.sim{background:var(--panel-2);border:1px solid var(--line);border-radius:16px;padding:20px;margin:30px 0}
.sim-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.sim-title{font-family:var(--mono);font-size:13px;letter-spacing:.14em;color:var(--muted)}
.sim-clock{font-family:var(--mono);font-size:15px;color:var(--amber);font-weight:700}
.sim-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:9px;margin:14px 0}
.sim-metric{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:9px 12px}
.sim-metric .k{font-size:11.5px;color:var(--faint);font-family:var(--mono)}
.sim-metric .v{font-size:18px;font-family:var(--mono);font-weight:650;margin-top:2px}
canvas{width:100%;height:250px;display:block;background:#0A0D13;border:1px solid var(--line);border-radius:10px}
.legend{display:flex;gap:18px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:var(--muted);margin:10px 2px}
.legend i{display:inline-block;width:16px;height:3px;border-radius:2px;margin-right:6px;vertical-align:middle}
.controls{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0 6px;align-items:center}
.btn{font-family:var(--sans);font-size:14.5px;font-weight:600;border-radius:9px;padding:9px 16px;cursor:pointer;
  border:1px solid var(--line);background:var(--panel);color:var(--text);transition:filter .15s}
.btn:hover{filter:brightness(1.2)}
.btn:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.btn.danger{background:#2A1418;border-color:#7A3A44;color:#FFB0B0}
.btn.primary{background:#12312E;border-color:#2E6B62;color:#9FE8DE}
.toggle{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);cursor:pointer;user-select:none}
.toggle input{accent-color:var(--teal);width:16px;height:16px;cursor:pointer}
.sliders{display:grid;grid-template-columns:1fr 1fr;gap:14px 26px;margin:12px 0 4px}
@media(max-width:560px){.sliders{grid-template-columns:1fr}}
.slider label{font-family:var(--mono);font-size:12.5px;color:var(--muted);display:flex;justify-content:space-between}
.slider input{width:100%;accent-color:var(--amber);cursor:pointer}
.sim-log{font-family:var(--mono);font-size:12.5px;line-height:2;color:var(--muted);background:var(--panel);
  border:1px solid var(--line);border-radius:9px;padding:10px 14px;height:118px;overflow-y:auto;margin-top:12px}
.sim-log .tt{color:var(--faint);margin-right:8px}
.experiments{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px 22px;margin:24px 0}
.experiments h3{margin-top:0}
.experiments ol{margin:8px 0 4px 22px}
.experiments li{margin:10px 0;font-size:15.5px}
.state-健康{color:var(--green)} .state-承压{color:var(--amber)} .state-过载{color:var(--red)} .state-宕机{color:var(--red);font-weight:800}

/* ---------- timeline ---------- */
.timeline{border-left:2px solid var(--line);margin:28px 0 28px 8px;padding-left:26px}
.tl{position:relative;margin:22px 0}
.tl::before{content:"";position:absolute;left:-32px;top:8px;width:10px;height:10px;border-radius:50%;
  background:var(--bg);border:2px solid var(--amber)}
.tl .tt{font-family:var(--mono);font-size:13px;color:var(--amber);font-weight:700}
.tl p{margin:4px 0 0;font-size:15.5px}

/* ---------- lessons / interview ---------- */
.lesson{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:4px 22px;margin:26px 0}
.lesson .li{display:grid;grid-template-columns:34px 1fr;gap:12px;padding:16px 0;border-top:1px solid var(--line)}
.lesson .li:first-child{border-top:0}
.lesson .num{font-family:var(--mono);color:var(--amber);font-size:15px;font-weight:700;padding-top:2px}
.interview{border:1px dashed #3B4A6B;border-radius:12px;padding:18px 22px;margin:30px 0;background:rgba(59,74,107,.08)}
.interview h3{margin-top:0}
.iq{margin:14px 0;font-size:15.5px}
.iq b{color:#AFC6FF;font-weight:650}
.iq .ans{color:var(--muted);display:block;margin-top:2px}

/* ---------- quiz ---------- */
.quiz{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin:26px 0}
.quiz h3{margin-top:0;font-size:17px}
.quiz .stem{font-size:15.5px;color:var(--text)}
.q-opts{margin:12px 0 4px}
footer{border-top:1px solid var(--line);margin-top:80px}
.foot-in{max-width:760px;margin:0 auto;padding:30px 22px;display:flex;justify-content:space-between;gap:14px;
  font-family:var(--mono);font-size:12.5px;color:var(--faint);flex-wrap:wrap}
.foot-in a{color:var(--muted);text-decoration:none}

/* ============================ EXTENDED（全站新增组件） ============================
   规则：只允许使用 BASE 段已定义的 CSS 变量，禁止引入新的裸色值。
   例外：已在 BASE 中出现过的成对色值（如 pager 的 #3A2430 系列）可在同族组件中复用。 */

/* ---------- 顶部导航（每页可达 上一章 / 目录 / 下一章） ---------- */
.book-bar nav{display:flex;gap:14px;align-items:baseline}
.book-bar a{color:var(--muted);text-decoration:none;border-bottom:1px solid transparent;transition:color .15s,border-color .15s}
.book-bar a:hover{color:var(--teal);border-bottom-color:var(--teal)}
.book-bar a[aria-disabled="true"]{color:var(--faint);pointer-events:none}
.book-bar a:focus-visible{outline:2px solid var(--teal);outline-offset:3px;border-radius:3px}
@media(max-width:600px){.book-bar{flex-wrap:wrap;gap:8px}.book-bar nav{gap:10px}}
.foot-in a:hover{color:var(--teal)}
.foot-in a:focus-visible{outline:2px solid var(--teal);outline-offset:3px;border-radius:3px}

/* ---------- 引用式病历卡（无新增卡的章节用，指向已定义的卡） ---------- */
.case-ref{background:var(--panel-2);border:1px solid var(--line);border-left:3px solid var(--faint);
  border-radius:10px;padding:13px 18px;margin:16px 0;font-size:15px;line-height:1.8}
.case-ref .no{font-family:var(--mono);font-size:12.5px;color:var(--muted);letter-spacing:.08em;margin-right:10px}
.case-ref .nm{font-weight:650;color:#F0F4FF;margin-right:10px}
.case-ref .sym{color:var(--amber);font-family:var(--mono);font-size:13.5px;margin-right:10px}
.case-ref a{color:var(--teal);text-decoration:none;border-bottom:1px solid rgba(63,210,199,.35)}
.case-ref a:hover{border-bottom-color:var(--teal)}
.case-ref.fwd{border-left-color:var(--amber)}

/* ---------- 架构图（纯 HTML/CSS，第 1 章基线图与第 12 章全景图） ---------- */
.arch{background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:22px 20px;margin:30px 0;overflow-x:auto}
.arch-title{font-family:var(--mono);font-size:12.5px;letter-spacing:.14em;color:var(--muted);margin-bottom:16px}
.arch-flow{display:flex;align-items:stretch;gap:0;min-width:min-content}
.arch-node{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;min-width:112px;text-align:center;flex:none}
.arch-node .nn{font-size:14.5px;font-weight:650;color:#F0F4FF}
.arch-node .nd{font-family:var(--mono);font-size:11.5px;color:var(--muted);margin-top:4px;line-height:1.6}
.arch-node.db{border-color:#3B4A6B}
.arch-node.new{border-color:var(--teal)}
.arch-node.new .nn{color:#9FE8DE}
.arch-arrow{display:flex;align-items:center;color:var(--faint);font-family:var(--mono);font-size:16px;padding:0 10px;flex:none}
.arch-layer{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:10px 0}
.arch-note{font-size:14px;color:var(--muted);margin-top:14px;font-family:var(--mono);line-height:1.9}
@media(max-width:560px){.arch-flow{flex-direction:column;gap:0}.arch-arrow{padding:6px 0;justify-content:center}
  .arch-arrow::before{content:"↓"}.arch-arrow span{display:none}}

/* ---------- 实战关卡（真实事故页） ---------- */
.disclaimer{border:1px dashed #7A3A44;background:#1C1216;border-radius:12px;padding:14px 18px;margin:28px 0;
  font-size:14.5px;color:#D8A0A8;line-height:1.85}
.disclaimer b{color:#FFB0B0}
.beat{border-left:2px solid var(--line);margin:30px 0 30px 8px;padding-left:26px}
.beat .b{position:relative;margin:26px 0}
.beat .b::before{content:"";position:absolute;left:-32px;top:9px;width:10px;height:10px;border-radius:50%;
  background:var(--bg);border:2px solid var(--red)}
.beat .b.safe::before{border-color:var(--teal)}
.beat .bt{font-family:var(--mono);font-size:13.5px;color:var(--red);font-weight:700;letter-spacing:.05em}
.beat .b.safe .bt{color:var(--teal)}
.beat .b p{margin:5px 0 0;font-size:16px}
.srcref{font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.03em}
.srcref a{color:var(--muted);text-decoration:none;border-bottom:1px solid var(--line)}
.srcref a:hover{color:var(--teal);border-bottom-color:var(--teal)}
.sources{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px 22px;margin:30px 0;font-size:14.5px}
.sources h3{margin-top:0}
.sources ol{margin:10px 0 4px 22px}
.sources li{margin:9px 0;line-height:1.8}
.sources a{color:var(--teal);text-decoration:none;word-break:break-all;border-bottom:1px solid rgba(63,210,199,.3)}
.sources a:hover{border-bottom-color:var(--teal)}

/* ---------- 附录：图鉴索引与速查表 ---------- */
.grp{margin:44px 0 0}
.grp-h{font-family:var(--mono);font-size:12.5px;letter-spacing:.16em;color:var(--amber);
  border-bottom:1px solid var(--line);padding-bottom:9px;margin-bottom:6px}
.grp-d{font-size:14.5px;color:var(--muted);margin:10px 0 4px}
.tbl-wrap{overflow-x:auto;margin:26px 0;border:1px solid var(--line);border-radius:12px}
table.tbl{border-collapse:collapse;width:100%;min-width:640px;font-size:14.5px;background:var(--panel)}
table.tbl th{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--muted);text-align:left;
  padding:12px 14px;border-bottom:1px solid var(--line);background:var(--panel-2);font-weight:600;white-space:nowrap}
table.tbl td{padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:top;line-height:1.75}
table.tbl tr:last-child td{border-bottom:0}
table.tbl td.ch{font-family:var(--mono);font-size:12.5px;color:var(--muted);white-space:nowrap}
/* 首列是标签列：其余列文字长会抢走宽度，把它挤成每行两三个字。给它一个下限。 */
table.tbl th:first-child,table.tbl td:first-child{min-width:118px}
table.tbl a{color:var(--teal);text-decoration:none;border-bottom:1px solid rgba(63,210,199,.3)}
table.tbl a:hover{border-bottom-color:var(--teal)}
table.tbl td b{color:#AFC6FF}

/* ---------- 目录页 ---------- */
.toc{margin:30px 0}
.toc-part{font-family:var(--mono);font-size:12.5px;letter-spacing:.16em;color:var(--amber);
  border-bottom:1px solid var(--line);padding-bottom:9px;margin:44px 0 4px}
.toc-item{display:grid;grid-template-columns:58px 1fr;gap:14px;padding:15px 0;border-bottom:1px solid var(--line);
  text-decoration:none;color:var(--text)}
.toc-item>*{min-width:0}
.toc-item:hover{background:var(--panel-2)}
.toc-item:focus-visible{outline:2px solid var(--teal);outline-offset:-2px;border-radius:6px}
.toc-num{font-family:var(--mono);font-size:13px;color:var(--muted);padding-top:3px;letter-spacing:.06em}
.toc-t{font-size:17px;font-weight:650;color:#F0F4FF;line-height:1.55}
.toc-d{font-size:14.5px;color:var(--muted);margin-top:4px;line-height:1.7}
.toc-tags{margin-top:7px;display:flex;gap:7px;flex-wrap:wrap;align-items:flex-start}
.tag-pill{font-family:var(--mono);font-size:11px;letter-spacing:.05em;padding:2px 8px;border-radius:99px;
  border:1px solid var(--line);color:var(--muted);white-space:nowrap;flex:none;line-height:1.7}
/* 注意：修饰类不能叫 .sim——BASE 里 .sim 是模拟器容器（margin:30px 0），
   同名会让 margin 泄漏到 pill 上，把第二个 pill 压低 30px。故用 .tp-sim。 */
.tag-pill.tp-sim{border-color:#2E6B62;color:#9FE8DE}
.tag-pill.card{border-color:#6B5A2E;color:var(--amber)}
.toc-item.level{border-left:3px solid var(--red);padding-left:14px;grid-template-columns:44px 1fr}
.toc-item.level .toc-t{color:#FFB0B0}
@media(max-width:560px){.toc-item{grid-template-columns:1fr;gap:3px}.toc-num{padding-top:0}}
.howto{display:grid;grid-template-columns:repeat(auto-fit,minmax(228px,1fr));gap:12px;margin:24px 0}
.howto .h{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
.howto .h .ht{font-size:15.5px;font-weight:650;color:#F0F4FF}
.howto .h .hd{font-size:14px;color:var(--muted);margin-top:6px;line-height:1.75}
.howto .h .hn{font-family:var(--mono);font-size:11.5px;color:var(--amber);letter-spacing:.1em}

/* ---------- A2：--faint 对比度不达 WCAG AA（3.0–3.3:1 < 正文要求的 4.5:1），改用已达标的 --muted（5.8–6.3:1）
   以下选择器定义在 BASE 段（样章逐字抽取，禁止直接修改），在此追加覆盖规则把文字色从 --faint 换成 --muted。
   覆盖：.book-bar（书眉）、h2 .sec（章节序号标签）、.pager-body .g（值班现场终端摘要文本）、.metric .k（指标标签）、
   .opt .tag（决策/自测选项字母）、.case-no（病历卡编号）、.case-alias（病历卡别名）、.case-row .lbl（病历卡五行标签）、
   .sim-metric .k（模拟器指标标签）、.sim-log .tt（模拟器日志时间戳）、.foot-in（页脚链接行）——均为读者需要
   实际阅读的正文性质小字。未覆盖 .book-bar a[aria-disabled="true"]（禁用态链接，WCAG 对非激活控件无对比度要求）、
   .case-ref 的 border-left、.arch-arrow 的箭头符号（纯装饰/图形，不是文本）。 */
.book-bar{color:var(--muted)}
h2 .sec{color:var(--muted)}
.pager-body .g{color:var(--muted)}
.metric .k{color:var(--muted)}
.opt .tag{color:var(--muted)}
.case-no{color:var(--muted)}
.case-alias{color:var(--muted)}
.case-row .lbl{color:var(--muted)}
.sim-metric .k{color:var(--muted)}
.sim-log .tt{color:var(--muted)}
.foot-in{color:var(--muted)}

/* ---------- v2 · 交卷练习（先写、后揭晓）----------
   要求读者从空白页产出的机制。无任何存储：答案只活在当前会话的 DOM 里。 */
.exercise{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--teal);
  border-radius:14px;padding:22px 22px 18px;margin:34px 0}
.exercise-tag{font-family:var(--mono);font-size:12px;color:var(--bg);background:var(--teal);display:inline-block;
  padding:3px 10px;border-radius:99px;letter-spacing:.12em;font-weight:700;margin-bottom:12px}
.exercise h3{margin-top:2px}
.ex-input{display:block;width:100%;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;
  color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.8;padding:12px 14px;margin:12px 0 4px;
  resize:vertical;min-height:96px}
.ex-input:focus{outline:2px solid var(--teal);outline-offset:2px}
.ex-hint{font-size:13.5px;color:var(--muted);margin:8px 0 12px;line-height:1.75}
.ex-warn{display:none;color:var(--amber);font-size:14.5px;margin:10px 0 0;line-height:1.8}
.ex-warn.show{display:block}
.ex-model{display:none;border-top:1px solid var(--line);margin-top:18px;padding-top:16px}
.ex-model.show{display:block}
.ex-model h4{font-size:16px;font-weight:650;color:#F0F4FF;margin:18px 0 6px}
.ex-model h4:first-child{margin-top:0}

/* ---------- v2 · 条件翻转（同一道权衡题，换一个约束再选一次）---------- */
.flip{background:var(--panel-2);border:1px dashed var(--amber);border-radius:12px;
  padding:16px 20px 6px;margin:20px 0 4px}
.flip-tag{font-family:var(--mono);font-size:11.5px;color:var(--amber);letter-spacing:.14em;
  font-weight:700;display:block;margin-bottom:8px}
.flip > p:first-of-type{margin-top:0}
