/* css/ui-sentence.css — 「04 造句設計」的設計語言
 *
 * 使用者可以在正式版與這一套設計之間切換（右上角切換鈕，見 js/ui-mode.js）。
 * 選擇存在 localStorage['ct-ui']，每頁 <head> 內有一段 inline script 在樣式表
 * 之前把 data-ui 補回 <html> 上，避免載入時閃一下另一套樣式。
 *
 * **這一批只換外觀，不換導覽方式**：側邊欄與返回鍵仍是正式版那一套。
 * 造句導覽本體（句子即狀態、退詞即返回、網址即句子）是下一批的工作。
 *
 * 鐵律：本檔所有規則一律寫在 [data-ui="sentence"] 之下——
 * 這是「不破壞正式版」能被證明的原因：屬性不存在時，本檔等於不存在。
 * css/styles.css、css/nav.css 等既有檔案的既有選擇器一條都不動。
 * 驗證方式：workspace/work/restyle/baseline.py --compare 比對的是**關閉態**
 * 與改動前的基準（108 頁 × 亮暗 × 390/1440）；parity.py 比對的是同一頁
 * 在開／關兩態下的可見文字必須完全相同。
 *
 * 色票／字體來源：workspace/work/restyle/style-04-sentence/css/proof.css
 * （04 造句設計的排字校樣底層），變數改名加上 --sentence- 前綴，
 * 避免與 css/styles.css 既有的 --ink／--paper 等變數同名互相覆蓋。
 */

/* ---------- 色票：亮＝骨白底配墨字，暗＝極深墨綠底配骨白字 ---------- */
:root[data-ui="sentence"] {
  --sentence-bg:      #efece1;
  --sentence-bg2:     #e6e2d4;
  --sentence-bg3:     #dcd7c6;
  --sentence-fg:      #1f1f1d;   /* 色票的近黑，取代原本的墨綠黑 */
  --sentence-fg2:     #474643;   /* 墨↔紙軸上取值，中性暖灰（與換版前對比等值） */
  --sentence-dim:     #5f5d58;   /* 2026-09-06 由 #706e69 加深：亮色在骨白上 4.31→5.56，這個角色專排全站最小的字 */
  --sentence-line:    #c3bda9;
  --sentence-line2:   #a8a18b;
  --sentence-inv-bg:  #1f1f1d;
  --sentence-inv-fg:  #efece1;
  /* 臨床語意色改用新色票**加深後**的變體：緋紅在米白上只有 4.44、橘只有 2.15，
     當內文都不到 AA 的 4.5。加深後每一項都與換版前等值或更好（hot 6.33→6.43、
     warn 5.31→5.41），原色 --pal-crimson／--pal-orange 留給燈號填色與螢光筆。
     墨綠照舊：這套色票裡沒有「安全」色，拿暖色當低風險會把臨床語意講反。 */
  --sentence-hot:     #ab0027;   /* 緋紅（加深）：最高急迫度／危險 */
  --sentence-warn:    #954b00;   /* 橘（加深）：中 */
  --sentence-calm:    #2b5f45;   /* 墨綠：低／安全——照舊 */
  --sentence-mid:     #615e09;   /* 墨綠與新 warn 的中間色，只給 T×N 決策格用（見 P11 段） */
  --sentence-sel:     #1f1f1d;
  --sentence-shade:   rgba(31,31,29,.06);
  --sentence-scrim:   rgba(239,236,225,.94);

  /* ---------- 字體堆疊（全部系統字，無外部載入） ---------- */
  --sentence-serif: "Iowan Old Style", Georgia, "Noto Serif TC", "Songti TC", serif;
  --sentence-sans:  -apple-system, BlinkMacSystemFont, "Noto Sans TC", "PingFang TC", sans-serif;
  --sentence-mono:  ui-monospace, "SF Mono", Menlo, "Roboto Mono", monospace;

  /* ---------- 動態時間軸 ---------- */
  --sentence-fast: 180ms;
  --sentence-slow: 260ms;
  --sentence-ease: cubic-bezier(.22,.61,.36,1);

  /* ---------- 排版基本鉤子：零陰影、零圓角、髮絲線 ---------- */
  --sentence-radius: 0px;
  --sentence-shadow: none;
  --sentence-border-w: 1px;
}

@media (prefers-color-scheme: dark) {
  :root[data-ui="sentence"] {
    --sentence-bg:     #0a1512;
    --sentence-bg2:    #0f1e19;
    --sentence-bg3:    #162922;
    --sentence-fg:     #ece6d8;
    --sentence-fg2:    #cfc8b8;
    --sentence-dim:    #97978d;
    --sentence-line:   #2a3b34;
    --sentence-line2:  #3d5349;
    --sentence-inv-bg: #ece6d8;
    --sentence-inv-fg: #0a1512;
    --sentence-hot:    #fd5f66;
    --sentence-warn:   #ed893a;
    --sentence-calm:   #79b58e;
    --sentence-mid:    #9b994e;
    --sentence-sel:    #ece6d8;
    --sentence-shade:  rgba(236,230,216,.07);
    --sentence-scrim:  rgba(10,21,18,.94);
  }
}

/* ================================================================
 * 第 3 段 — 把 04 的設計語言套進 108 頁
 * ================================================================
 * 做法：打全站共用的 markup 慣例（schema/check_pages.py 驗的就是這些：
 * .app-header 內的 .eyebrow／h1／.sub、.back-stack、卡片、表格、徽章、
 * <details><summary>、輸入列……），不逐檔案改 markup。
 *
 * 三條鐵律（貫穿以下所有規則）：
 *   1. 只加樣式，不加/刪/搬文字節點——不用 text-overflow:ellipsis 截字、
 *      不用 display:none 藏內容、不用 order／flex-direction:row-reverse
 *      改變閱讀順序。document.body.innerText 經驗證不含 ::before/::after
 *      的 content（用 cdp.py 對 news2.html 現場量過），故本檔可以放心用
 *      生成內容做圖形記號（▸／▮▯／○✓…），不會被 parity.py 誤判成內容被改。
 *   2. 嚴重度一律三重（以上）編碼：格數／邊框粗細 ＋ 文字 ＋ 色。
 *      hot／warn／calm 三色只用於臨床嚴重度，不當導覽或裝飾色。
 *   3. 觸控目標 ≥44px（僅本設計要求）；表格與橫向清單一律自己
 *      overflow-x:auto，不讓整頁橫向溢出。
 *
 * 章節：
 *   A. 全站基礎排版
 *   B. 頁首三件組／返回鍵（.app-header/.eyebrow/h1/.sub/.back-stack/.back-btn）
 *   C. 卡片與容器（.card/.section-title/.organ-*／.lede）
 *   D. 摺疊區塊（details.def-box/.info-box/.box-inner/.dot-line/.plain-list）
 *   E. 輸入列與控制項（.field-row/.toggle-inline/label.item/.pt-badge/.exclusive-note）
 *   F. 表格（.score-ref/.def-table/.ref/通用 table 防溢出）
 *   G. 結果面板（.result/.metric-*／.risk-band/.risk-note/.breakdown）
 *   H. 公式顯示（.meld-field/.formula-box）
 *   I. 決策流程（.flow-*／.rec-*）
 *   J. 分級／分類查閱頁（.tab-row/.sys-*）
 *   K. 分級清單（.lv-*／.dept-*／.op-item，急診手術分級頁）
 *   L. 頁尾與連結（footer.tool-footer/.ref-link/.tool-link/.ind-badge/.mono）
 *   M. 通用觸控目標安全網 ＋ 動態降級
 *   Q. 藥物與抗生素查閱頁（tools/antibiotics.html 藥物查詢分頁、tools/drug-database.html；
 *      drugcard／dc-*／db-*／cov-* 的造句設計配色，見該段開頭）
 *   （N／O 兩段見檔案後段——N 側欄導覽觸控目標，O 造句導覽本體 js/sentence-nav.js，
 *   非本次交付範圍，維持原樣不動）
 *   P. 癌症頁（tools/cancer.html）專屬元件——js/cancer-staging.js 與
 *      30 個癌別共用的 js/*-pathway.js 各自的 render 函式輸出的 markup，
 *      不吃 A–N 段的全站共用慣例，見該段開頭說明。
 *
 *   ── 以下 R–AB 是 2026-08-13 補的「頁面專屬 class」層 ──────────────────
 *   起因：使用者實機指出 pathways/cardiogenic-shock.html 的藥卡沒有套到本設計。
 *   根因與 P 段同一類——那些元件是各頁 <style> 內的專屬 class，不走 A–N 打的
 *   全站共用慣例，本檔對它們一條規則都沒有，於是原封不動吃 css/styles.css 的
 *   正式版色票。用 workspace/work/restyle/leak.py 全站掃描（判準：造句設計
 *   開著時，元素的 computed 顏色仍命中正式版 token 或頁面寫死的色字面值），
 *   108 頁裡有 75 頁中招，逐一收斂到只剩下面那個刻意保留的例外。
 *   R.  藥卡與時間軸型內頁（cardiogenic-shock／rsi／acs／pe／stroke 五頁同一套
 *       .dg-*／.dd-*／.tl-*／.rsi-*／.kbox；R8 順帶修全站 75 頁的 .box-inner）
 *   S.  肺動脈導管頁（swan-ganz：.wvc-*／SVG 波形 .w-*／table.sg-out）
 *   T.  心衰竭指引全文頁（heart-failure：.tabbar／.tab 內的裸標籤／.badge／
 *       .callout／.quad／.pillar／自己那一套 .flow-rec 變體）
 *   U.  抗菌譜資料庫（spectrum-database：直接改寫該頁的 --s2/--s1/--s0/--sn
 *       四級 token，圖例與格子一次到位）
 *   V.  全站共用的組合式查詢欄 .gs-field（9 頁）
 *   W.  全站表單控制項的底層（styles.css 的裸 input／select ＋ .pt-badge 底色）
 *   X.  計分工具家族（nu-／vt-／cv-／hb-／ps-／ni-／gv-／gr-／pc-／dc- 十頁同骨架）
 *   Y.  可展開清單型查閱頁（surgical-prophylaxis／periop-anticoag／trauma-abx）
 *   Z.  ACLS 圖鑑頁（心電圖紙／床邊監視器的 --ekg-* 專業色**刻意不動**，只換周邊）
 *   AA. seizure 給藥表、iah-acs Björck 矩陣 ＋ HTML inline style 的兜底
 *   AB. 收尾：.to-top／.home-divider／vasopressor／drug-database 等零星元件
 *
 *   R–AB 順手修掉的**既有缺陷**（都不是本輪改動造成，是 G 段把正式版那個
 *   寫死的深色 .result 面板換成骨白之後才暴露出來的）：swan-ganz 的
 *   table.sg-out、trauma-abx 的 .tt-out、perc 的 .pc-verdict.idle、
 *   seizure 的 .sz-dose、apache／radial／wassmer 的預估死亡率——這些元件的
 *   文字色是為深底寫死的淺色（#fff／#9fb3ae／#f0a875…），在亮色主題下
 *   對比 1.0–1.5，等於整段消失。
 *
 * 範圍聲明（**已於 Q 段作廢，保留原文供對照**）：本檔原本不含
 * tools/drug-database.html、tools/antibiotics.html、
 * tools/spectrum-database.html 等頁面專屬的 dc-*／db-*／abx-*／bac-*／cov-*／
 * drugcard 類別——那是另一位負責的「藥物資料庫的樣式」，不在此檔動它們。
 * 這些頁面仍會吃到本檔的全站共用層（A/B/C/D/L/M 段），只是它們自己的
 * 藥卡／查閱元件維持原樣，交由對應的 css/antibiotics.css、
 * css/drug-database.css 各自的 [data-ui="sentence"] 區塊處理。
 *
 * 例外：spectrum-database.html 的 .sd-colhead／a.dlink 不算在上面排除的
 * dc-*／db-*／abx-*／bac-*／cov-*／drugcard 名單內，且該頁自己的 inline
 * <style> 與 antibiotics.css／drug-database.css 都沒人補過 44px 觸控目標
 * ——這不是別人的地盤，是缺口，M 段補上，見那裡的說明。
 * ================================================================ */

/* ---------- A. 全站基礎排版 ---------- */
[data-ui="sentence"] body {
  background: var(--sentence-bg);
  color: var(--sentence-fg);
  font-family: var(--sentence-sans);
  font-size: 13px;
  line-height: 1.62;
}
[data-ui="sentence"] .sheet { max-width: 860px; }
[data-ui="sentence"] ::selection { background: var(--sentence-fg); color: var(--sentence-bg); }
[data-ui="sentence"] :focus-visible { outline: 2px solid var(--sentence-fg); outline-offset: 2px; }
/* 組合式搜尋欄（.gs-field > .gs-icon + .gs-input + .gs-clear，全站十頁共用）：
   聚焦一律由外層 .gs-field 表達（:focus-within 的邊框／描邊），input 本體不畫圈。
   styles.css 的 `.gs-field .gs-input{outline:0}` 本來就是這個意思，但它 (0,2,0)
   與上面那條全域 :focus-visible 同特異度、本檔又載在後——文字框在手機上一點擊
   就算 :focus-visible，於是外框之內再套一圈 2px，就是實機截圖的「雙重框框」
   （藥物資料庫與抗生素藥物查詢回報，其餘八頁同構造同病）。 */
[data-ui="sentence"] .gs-field .gs-input:focus-visible { outline: none; }
[data-ui="sentence"] a { color: inherit; }
[data-ui="sentence"] b, [data-ui="sentence"] strong { color: var(--sentence-fg); }
/* 沒有專屬樣式的散裝標題（例：tools/heart-failure.html 的 <h3>）也要跟上字級階層，
   不然全頁只剩正文與巨大數值兩級，中間斷層。 */
[data-ui="sentence"] h2 {
  font-family: var(--sentence-serif); font-weight: 500;
  font-size: clamp(18px, 3.6vw, 22px); letter-spacing: .06em;
  margin: 18px 0 8px; color: var(--sentence-fg);
}
[data-ui="sentence"] h3 {
  font-family: var(--sentence-serif); font-weight: 500;
  font-size: 15.5px; letter-spacing: .04em;
  margin: 14px 0 6px; color: var(--sentence-fg);
}

/* ---------- B. 頁首三件組／返回鍵（全站每頁保證都有，schema/check_pages.py 驗過） ---------- */
[data-ui="sentence"] .app-header {
  border-bottom: 0; border-top: 2px solid var(--sentence-fg);
  margin-top: 4px; padding-top: 12px; padding-bottom: 4px;
}
[data-ui="sentence"] .eyebrow {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .22em;
  text-transform: uppercase; color: var(--sentence-dim);
}
/* 2026-08-13 使用者實機指示「縮小字體」後整組下修（h1 與 .lede-title 一起，
   見下方 C 段 .lede-title 的註解）。**手機端幾乎不動、寬螢幕才明顯收斂**：
   390px 下 32→? 其實本來就吃 clamp 下限 22px，現為 20px；1280px 下由 32px 降到 26px。
   下修的是**上限與 vw 係數**，因為使用者看到的過大只發生在寬螢幕。 */
[data-ui="sentence"] .app-header h1 {
  font-family: var(--sentence-serif); font-weight: 500;
  font-size: clamp(20px, 3.6vw, 26px); letter-spacing: .06em;
  margin: 4px 0 5px; color: var(--sentence-fg);
}
[data-ui="sentence"] .app-header .sub {
  font-family: var(--sentence-sans); font-size: 11.5px; color: var(--sentence-fg2); line-height: 1.55;
}
/* 兩個「查閱頁」（緊急手術分級／分類與分級系統）沒有單一臨床數值可以放大——
   內容是可瀏覽的清單，不是計分或決策結論，硬把 .dept-name／.sys-name 撐到
   跟 .rec-title 一樣大會不成比例。改成反過來：這兩頁的 h1 降級到低於它們
   自己內容區的字級（.dept-name／.sys-name 見 K／J 段，已各自調到 20px），
   讓清單內容仍是畫面上最大的東西。只用頁面根 id 掛鉤，不動全站共用的
   .app-header h1 規則，其餘 106 頁的頁首完全不受影響。 */
[data-ui="sentence"] #view-emerg-op .app-header h1,
[data-ui="sentence"] #view-classifications .app-header h1,
/* divert-path 同理：它沒有 .lede-title、載入當下也沒有可見的結論框，
   內容是可瀏覽的流程（最大的臨床內容是 .flow-q 20–24px），
   1440px 下的 h1 32px 仍會蓋過它，所以一併降級。 */
[data-ui="sentence"] #view-divert-path .app-header h1 {
  font-size: clamp(16px, 3.6vw, 19px);
}
/* （cardiogenic-shock／divert-path／swan-ganz 這三頁載入當下沒有可見的 .rec-title，
   一度想比照上面降 h1，實測後放棄：降完之後 h1 仍是最大的，因為那三頁的內文都
   小於 19px——**問題不在標題太大，是內容太小**。改成把 .lede-title 放大（見上），
   那才是這三頁載入時真正的臨床內容。註記在這裡，免得下一位又走一次同樣的冤枉路。
   另外也不能改成把隱藏的建議框顯示出來——那會改變渲染文字，parity.py 立刻擋下。 */
/* 造句設計下整組收起。使用者實機回報兩件事，其實是同一個原因：
     · 每一頁的「← 返回主選單」與句子軌跡裡的「清空句子」用途重疊
     · 抗生素那六個分頁互相跳時還會多長出「← 返回抗生素指引」，
       但那六頁本來就有分頁列可以互跳，那顆按鈕是多餘的
   造句設計已經有自己的一套返回：句子軌跡內的「清空句子」（每一頁都有、
   桌機手機皆然，實測按下去會導回 index.html）＋ 手機下緣固定列的「上一步」。
   兩套返回鍵並存只是讓人不知道該按哪一個。
   只用 display:none：節點與 js/backlink.js 都沒動，關掉造句設計立刻原樣回來。

   **修正（使用者實機回報）**：原本整個 .back-stack 都收掉，把 js/backlink.js
   動態產生的那顆 `.back-origin`（「← 返回闌尾炎手術決策」這種**帶來路**的返回鍵）
   一起收掉了——從決策流程點進計分工具之後就回不去原本那份流程，正式版有、
   造句設計沒有。使用者要移除的是「返回主選單」那一顆（跟「清空句子」用途重疊），
   不是帶來路的那一顆。改成只收沒有 .back-origin 的那些。 */
/* 造句設計下收掉「返回主選單」，保留 js/backlink.js 依來路產生的返回鍵。
   使用者：「04sentence 設計中還是有許多頁面有『返回主畫面』，請全部刪掉，
   且請確保有『清空句子』的按鈕」。

   認法：靜態那顆的 onclick 一律是 `location.href='../index.html#card-view-…'`，
   用屬性選擇器認它。這是**讀過真實 DOM 之後**的寫法——先前試過子代選擇器、
   :not(.back-origin) 都因為對結構的假設沒有查證而打錯目標，其中一次還把
   backlink.js 產生的「← 返回闌尾炎決策」一起弄不見，害人從決策流程點進計分
   工具後回不去。實際 DOM 是：
     <div class="back-stack">
       <!-- 「← 返回<來源頁>」由 js/backlink.js 於載入時自動插在這一顆之上 -->
       <button class="back-btn" onclick="location.href='../index.html#card-view-abg'">← 返回主選單</button>
     </div>

   回首頁的路沒有斷：句子軌跡裡的「清空句子」每一頁都有、桌機手機皆然，
   按下去導回 index.html（本檔合併時實測過）。 */
/* body:has(#sentTrail) 是必要條件，不是保險：tools/ich-score.html 與 tools/pss.html
   不在 facets.js 的 136 個標的裡，句子軌跡（#sentTrail）在那兩頁根本不會插入，
   也就沒有「清空句子」。若無條件收掉「返回主選單」，那兩頁在造句設計下會**完全
   走不出去**。加上這個條件之後，沒有軌跡的頁面自動保留正式版的返回鍵。 */
[data-ui="sentence"] body:has(#sentTrail) .back-stack .back-btn[onclick*="index.html"] { display: none; }
/* 整排只剩那一顆時，連外框的間距一起收掉，不要留一塊空白。 */
[data-ui="sentence"] body:has(#sentTrail) .back-stack:not(:has(.back-origin)) { display: none; }
[data-ui="sentence"] .back-btn {
  font-family: var(--sentence-mono); font-size: 11px; letter-spacing: .04em;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); padding: 0 12px; min-height: 44px;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background var(--sentence-fast) var(--sentence-ease), border-color var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] .back-btn:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); }
/* 陷阱：部分頁面的來源返回鍵預設帶 .hidden（例：CHA₂DS₂-VASc 頁的
   <button class="back-btn hidden back-origin">，靠頁面自己的 JS 依 ?from= 才解除隱藏）。
   基準樣式表的 .hidden{display:none;} 沒有 !important，本檔給 .back-btn 設
   display:inline-flex 的特異度（attribute+class）比它高，會反而把它「解除隱藏」——
   已用 parity.py 對 tools/cha2ds2-vasc.html 現場驗證抓到這個問題。這裡補一條
   特異度更高的規則把 .hidden 的 display:none 效果找回來。 */
[data-ui="sentence"] .back-btn.hidden { display: none; }
/* 用次要強調色而不是 --sentence-hot：本檔第 86 行訂了「hot／warn／calm 三色只用於
   臨床嚴重度，不當導覽或裝飾色」，而「返回來源頁」是純導覽。原本用 hot 會讓一顆
   返回鍵跟最高臨床急迫度同色。正式版這顆鍵用的也是次要強調色，不是嚴重度色。 */
[data-ui="sentence"] .back-origin { border-color: var(--sentence-fg); color: var(--sentence-fg); font-weight: 600; }
[data-ui="sentence"] .back-origin:hover { background: var(--sentence-shade); }

/* ---------- C. 卡片與容器 ---------- */
/* 底色與頁面一致、只留一條髮絲框：使用者看 tools/vasopressor.html 的體重輸入列
   後指定「體重輸入匡的區塊請與底色一樣即可」。原本填 --sentence-bg2 會在頁面上
   浮出一塊比底色亮的長條，和這一款「零陰影、零圓角、只用線條分隔」的語彙相違；
   框線保留，區塊的界線還在，只是不再另外塗一層底色。 */
[data-ui="sentence"] .card {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  padding: 14px 15px 10px; margin-bottom: 16px;
}
[data-ui="sentence"] .section-title {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .2em; text-transform: uppercase;
  color: var(--sentence-dim); border-bottom: 1px solid var(--sentence-fg); padding-bottom: 7px; margin: 4px 0 10px;
}
[data-ui="sentence"] .organ-head {
  border-bottom: 1px solid var(--sentence-line); padding-bottom: 7px; margin-bottom: 10px;
}
[data-ui="sentence"] .organ-name { font-family: var(--sentence-serif); font-size: 16px; font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .organ-en { font-family: var(--sentence-mono); font-size: 10.5px; color: var(--sentence-dim); }
/* .organ-score 兼作「單項得分徽章」。E 段原本另外寫過一組依 data-p="0".."4"
   分三／四級變色的版本，已證實 data-p 全站實際帶的是分頁 id（dx/risk/wave…）
   從未是 0–4、那組規則永遠 0 命中，整組已刪除（見 E 段對應位置的說明）。
   這裡是唯一剩下的樣式：不分等級的中性樣式，8 個用到 .organ-score 的頁面
   （news2/sofa/apache/fgsi/marshall/lrinec/ich-score/thyroid-storm）都吃這條。 */
[data-ui="sentence"] .organ-score {
  font-family: var(--sentence-mono); font-size: 15px; font-weight: 700; color: var(--sentence-fg);
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0; padding: 3px 11px;
}
[data-ui="sentence"] .lede {
  background: var(--sentence-bg2); border: 1px solid var(--sentence-line2);
  border-left: 5px solid var(--sentence-fg); border-radius: 0;
  padding: 12px 13px 11px; margin: 0 0 16px;
}
/* .lede-title 是 36 個頁面載入時的第一段臨床內容（「先分開的三個問題」「使用前必讀」…），
   也就是「這一頁現在要你想什麼」。原本 15px、比裝飾用的 h1（22/32px）還小，
   在載入當下沒有可見建議框的頁面（cardiogenic-shock／divert-path／swan-ganz）
   會讓畫面上最大的東西變成頁面標題，違反「最大的東西必須是臨床內容」。
   拉到 h1 之上。計分頁不受影響——那裡最大的仍是 .metric-value（48–68px）。 */
/* text-transform: none 是**必要**的，不是順手加的：css/styles.css:364 的
   .lede-title 有 text-transform:uppercase，本檔沒有重設就會沿用下去。
   後果是把藥名與分數名的大小寫吃掉——tools/news2.html 原始碼寫的是
   「為什麼是 NEWS2 而不是 qSOFA」，畫面上卻變成 qSOFA→QSOFA。原型
   （style-04-sentence）在同一段文字上是正確的小寫 q，使用者指名要以原型為母本。
   （正式版也有同樣的大寫問題，那要動 styles.css、會改到正式版每一頁的外觀，
   已另外列出來讓使用者決定，這裡只修造句設計這一側。） */
/* ⚠ 2026-08-13 使用者裁決：「**畫面上最大的東西必須是臨床內容**」這條原則
   **不再遵守**。本檔多處字級（.lede-title／.flow-q／.rec-title／.rt／.pc-v-t／
   .tx-label）當初都是為了滿足它而被推到 24–34px，實機上過大。
   現在一律回到「**接近正式版、以好讀為準**」的尺度——正式版那組是使用者用了
   很久沒有抱怨過的：h1 25px、.rec-title 20px、.flow-q 15.5px。
   **下一位不要再因為那條原則把這些字級調回去。**

   本條（導言標題）：clamp(24,5.6vw,34) → clamp(22,4vw,28) → 現在 clamp(17,2.8vw,20)。
   text-transform:none 仍然是必要的（見下段），與字級無關。 */
[data-ui="sentence"] .lede-title {
  font-family: var(--sentence-serif); text-transform: none;
  font-size: clamp(17px, 2.8vw, 20px); letter-spacing: .02em; line-height: 1.4;
  color: var(--sentence-fg); font-weight: 500; margin-bottom: 9px;
}
[data-ui="sentence"] .lede-body { font-size: 12.5px; line-height: 1.75; color: var(--sentence-fg2); }
/* 只留 b：全站 .lede-body 內文一律用 <b>，0 頁用過 <strong>（死樣式掃描實測，見交付說明）。 */
[data-ui="sentence"] .lede-body b { color: var(--sentence-fg); }
[data-ui="sentence"] .lede-item > span:first-child { color: var(--sentence-hot); font-family: var(--sentence-mono); }
[data-ui="sentence"] .lede-foot { border-top: 1px dotted var(--sentence-line); color: var(--sentence-dim); }
/* ---------- D. 摺疊區塊 ---------- */
[data-ui="sentence"] details.def-box,
[data-ui="sentence"] details.info-box {
  border: 1px solid var(--sentence-line2); background: var(--sentence-bg2); border-radius: 0;
  margin: 14px 0;
}
[data-ui="sentence"] details.def-box > summary,
[data-ui="sentence"] details.info-box > summary {
  min-height: 48px; padding: 9px 12px; cursor: pointer;
  display: flex; align-items: center; gap: 8px; list-style: none;
  font-family: var(--sentence-sans); font-size: 12.5px; font-weight: 700; letter-spacing: .03em;
  color: var(--sentence-fg);
}
[data-ui="sentence"] details.def-box > summary::-webkit-details-marker,
[data-ui="sentence"] details.info-box > summary::-webkit-details-marker { display: none; }
[data-ui="sentence"] details.def-box > summary::marker,
[data-ui="sentence"] details.info-box > summary::marker { content: ""; }
[data-ui="sentence"] details.def-box > summary::before,
[data-ui="sentence"] details.info-box > summary::before {
  content: "＋"; font-family: var(--sentence-mono); color: var(--sentence-dim); flex: none;
}
[data-ui="sentence"] details.def-box[open] > summary::before,
[data-ui="sentence"] details.info-box[open] > summary::before { content: "－"; }
[data-ui="sentence"] details.def-box[open] > summary,
[data-ui="sentence"] details.info-box[open] > summary { border-bottom: 1px solid var(--sentence-line); }
/* 空 <summary></summary>（NEWS2／SOFA 系列的區間表摺疊列）靠 CSS content 補一段固定字，
   已驗證 ::before/::after 不進 innerText，兩種設計下的可見文字不受影響。 */
[data-ui="sentence"] details.info-box > summary:empty::after {
  content: "顯示評分區間表"; font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .08em; color: var(--sentence-dim);
}
[data-ui="sentence"] .box-inner { padding: 4px 13px 13px; font-size: 12px; line-height: 1.8; color: var(--sentence-fg2); }
[data-ui="sentence"] .box-inner b, [data-ui="sentence"] .box-inner strong { color: var(--sentence-fg); }
[data-ui="sentence"] .box-inner ul { padding-left: 1.3em; }
[data-ui="sentence"] .dot-line { padding-left: 1.2em; text-indent: -1.2em; margin: 2px 0; }
[data-ui="sentence"] .plain-list { font-size: 12.5px; line-height: 1.75; }

/* ---------- E. 輸入列與控制項 ---------- */
[data-ui="sentence"] .field-row {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px;
  min-height: 48px; border-bottom: 1px dotted var(--sentence-line); padding: 7px 0; margin: 0;
}
[data-ui="sentence"] .field-row label {
  flex: 1 1 160px; font-size: 12.5px; letter-spacing: .02em; color: var(--sentence-fg2); min-width: 0;
}
[data-ui="sentence"] .field-row input[type="number"],
/* 全站唯一一條「目前 0 命中」的規則，刻意保留：208 個 .field-row 底下的 input
   現在全是 type="number"，沒有 type="text"。留著不是猜錯 tag，是為了未來新增
   文字型輸入時不必再補一次樣式。**下一輪跑死樣式掃描的人會再抓到它，這是預期的**，
   看到這行註解就知道它是已知且刻意的，不要當成漏網的死樣式刪掉。 */
[data-ui="sentence"] .field-row input[type="text"] {
  flex: 0 1 120px; min-width: 92px; min-height: 44px;
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); color: var(--sentence-fg);
  padding: 0 10px; font-size: 16px; font-family: var(--sentence-mono); border-radius: 0;
}
[data-ui="sentence"] .field-row select {
  /* max-width/min-width 缺一不可：flex 項目預設 min-width:auto，長選項字串會撐開版面。 */
  flex: 1 1 220px; min-height: 44px; max-width: 100%; min-width: 0;
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); color: var(--sentence-fg);
  padding: 0 10px; font-size: 13.5px; font-family: var(--sentence-sans); border-radius: 0;
}
[data-ui="sentence"] .unit { font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-dim); letter-spacing: .05em; }
[data-ui="sentence"] .note { font-size: 11.5px; line-height: 1.65; color: var(--sentence-dim); margin-top: 4px; }
[data-ui="sentence"] .note b, [data-ui="sentence"] .note strong { color: var(--sentence-fg); }
[data-ui="sentence"] .exclusive-note {
  border-left: 4px solid var(--sentence-warn); background: var(--sentence-bg2); border-radius: 0;
  padding: 8px 10px; margin: 7px 0; font-family: var(--sentence-sans);
  font-size: 11.5px; line-height: 1.6; color: var(--sentence-fg2);
}
/* 只留 b：.exclusive-note 內文全站 0 頁用過 <strong>（死樣式掃描實測）。 */
[data-ui="sentence"] .exclusive-note b { color: var(--sentence-warn); }

/* 得分徽章 .organ-score：本來想靠 data-p="0".."4" 做三重編碼（數字 ＋ 格數 ＋ 色），
   但實測 8 個用到 .organ-score 的頁面（news2/sofa/apache/fgsi/marshall/lrinec/
   ich-score/thyroid-storm）該元素只有 id 與 class，JS 只寫 .textContent，
   從未設過 data-p 或任何 class／attribute 當嚴重度鉤子——這條路徑不存在，
   已刪除整組永遠 0 命中的死選擇器（原本的 data-p="0"~"4" 五級 ＋ ::after
   格數記號），不再假裝這是已交付的功能。.organ-score 目前維持 C 段設的中性樣式
   （字級／邊框），沒有依分數變色或加格數記號；要做到需改各頁 HTML 內的 inline
   script（不在本檔／本輪範圍內）。 */
[data-ui="sentence"] .field-row .organ-score {
  min-width: 46px; min-height: 34px; padding: 2px 9px; margin-left: auto;
  display: inline-flex; align-items: center; justify-content: center; gap: 5px;
}

/* 一列一個判準的勾選（label.item）：44px 觸控目標，視覺方塊仍小。
   實際尺寸靠下方 M 段的通用 checkbox 規則（appearance:none 自畫方塊）達成——
   這裡不再另外把 input 縮成 20px，那樣量到的是 input 元素本身而非外層 label，
   cdp.py 的 small_targets() 是逐一量每個 <input>，label 再大也救不了裡面的它。 */
[data-ui="sentence"] label.item {
  min-height: 44px; padding: 6px 4px; font-family: var(--sentence-sans); font-size: 13px; color: var(--sentence-fg2);
}
[data-ui="sentence"] label.item:hover { background: var(--sentence-shade); }
[data-ui="sentence"] label.item .it-def { color: var(--sentence-dim); font-family: var(--sentence-sans); }
[data-ui="sentence"] .toggle-inline {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px 9px; min-height: 48px;
  border-bottom: 1px dotted var(--sentence-line); padding: 7px 0;
  font-family: var(--sentence-sans); font-size: 12.5px; color: var(--sentence-fg2); cursor: pointer;
}
[data-ui="sentence"] .pt-badge {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .08em;
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 2px 7px; color: var(--sentence-dim);
  margin-left: auto; white-space: nowrap;
}

/* ---------- F. 表格 ---------- */
/* 三條表格規則都**不**設 display:block——這裡踩過一次坑，留紀錄避免有人改回去：
   `display:block` 加在 <table> 上，表格就不再是表格盒了。它的 <tbody> 仍是
   table-row-group，父層卻不是 table，瀏覽器只好在中間生一個**匿名 table 盒**；
   匿名盒是 shrink-to-fit，原本寫在 <table> 上的 width:100% 落在外層 block 上、
   對匿名盒無效，欄寬因此縮到「剛好包住內容」為止。
   實測（tools/drug-database.html 藥卡展開，1280px）：
     正式版   三張 renal-tbl 皆 display:table，首列欄寬 269 / 521，三張完全一致
     加了 block 之後  皆 display:block，首列欄寬 62 / 120、62 / 120、57 / 111
   ——同一張藥卡裡每張表的欄位落點都不一樣，這就是使用者說的「表格排版很亂」。
   要防溢出得靠外層捲動容器，不能拿 <table> 自己當容器。這些表格在正式版本來
   就不溢出（正式版 390px 已驗過），造句設計沒有放大它們的字級，維持 display:table
   等於維持正式版的溢出行為，不需要另外補防線。 */
[data-ui="sentence"] table.score-ref {
  border-collapse: collapse; width: 100%; font-family: var(--sentence-mono); font-size: 11.5px;
  max-width: 100%;
}
[data-ui="sentence"] table.score-ref td,
[data-ui="sentence"] table.score-ref th {
  border-bottom: 1px dotted var(--sentence-line); padding: 4px 6px; text-align: left;
}
[data-ui="sentence"] table.score-ref td:first-child { color: var(--sentence-fg2); }
[data-ui="sentence"] table.score-ref td:last-child { text-align: right; font-weight: 700; white-space: nowrap; color: var(--sentence-fg); }
[data-ui="sentence"] table.score-ref th { letter-spacing: .1em; font-size: 10px; color: var(--sentence-dim); border-bottom: 1px solid var(--sentence-line2); }

[data-ui="sentence"] table.def-table {
  border-collapse: collapse; width: 100%; font-family: var(--sentence-sans); font-size: 11.5px;
  max-width: 100%; margin: 8px 0;
}
[data-ui="sentence"] table.def-table th,
[data-ui="sentence"] table.def-table td {
  border: 1px solid var(--sentence-line); padding: 5px 7px; text-align: left; vertical-align: top;
}
[data-ui="sentence"] table.def-table th {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .06em; color: var(--sentence-dim);
  background: var(--sentence-bg2); white-space: nowrap;
}
[data-ui="sentence"] table.def-table td:first-child {
  font-family: var(--sentence-mono); white-space: nowrap; color: var(--sentence-fg); font-weight: 700;
}
[data-ui="sentence"] table.def-table.dt-pair td:nth-child(3) {
  font-family: var(--sentence-mono); white-space: nowrap; color: var(--sentence-fg); font-weight: 700;
}
[data-ui="sentence"] table.def-table tr.dt-warn td { color: var(--sentence-hot); }

/* 原本這裡有一條通用防溢出 `table { display:block; overflow-x:auto; max-width:100% }`，
   出發點是「沒有專屬 class 的表格也不要把整頁撐寬」，但它把**全站每一張表格**都
   拆成了上面說的匿名 shrink-to-fit 盒——包含藥卡裡的 renal-tbl（那本來是宣告
   不歸本檔管的元件，這條卻管到了）。防的溢出沒發生過，弄壞的欄位對齊是實際
   被使用者回報的。整條移除，表格一律維持 display:table。 */

/* ---------- G. 結果面板 ---------- */
[data-ui="sentence"] .result {
  background: var(--sentence-bg2); color: var(--sentence-fg);
  border: 2px solid var(--sentence-fg); border-radius: 0;
  padding: 16px 16px 13px; margin-top: 20px;
}
[data-ui="sentence"] .result-grid {
  /* 最小欄寬跟正式版對齊（styles.css:407 是 120px）。原本寫 110px，430px 寬下
     會多擠出第三欄（3 × 112.7px vs 正式版 2 × 172px），欄一窄，上面依欄寬計算的
     巨型數值就被壓到下限 30px，比正式版的 44px 還小——反而失去「最大的東西是
     臨床數值」這件事。對齊之後量到 2 欄 × 176px、字級 45.8px。 */
  display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 12px 14px; margin-bottom: 8px;
}
[data-ui="sentence"] .metric-label {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--sentence-dim);
}
/* 全頁最大的文字：值班的人只想看這個。同一 .result 內若有多個 .big
  （例：NEWS2 同時秀總分／風險分層／監測頻率），三者等重也是合理呈現——
   scoped 樣式表沒有頁面專屬 id 可用來再分主副。 */
[data-ui="sentence"] .metric-value {
  font-family: var(--sentence-serif); font-size: 22px; font-weight: 600; color: var(--sentence-fg);
  line-height: 1.2; margin-top: 3px;
}
/* DESIGN-LANGUAGE 訂的「巨型數值」是 48–72px。原本寫 clamp(48px, 11vw, 68px)，
   並在註解裡宣稱「分數／比值／百分比內容最長不過 6 字元，48–68px 在 .result-grid
   最窄欄（110px）仍不會溢出」——那個前提是錯的，而且沒有實際去看過畫面。
   .metric-value.big 不是只掛在數字上：tools/news2.html 三格全掛 big，其中兩格是
   **文字**（`低`、`每 12 小時`）。`每 12 小時` 在 430px 寬用 48px 字級，實測斷成三行，
   結果面板整個被撐開，畫面上最大的東西變成監測頻率而不是分數。

   改用容器查詢單位而不是 vw：字級跟著**自己那一欄的寬度**走，不是跟著整個
   視窗走。三格並排時每欄約 110–130px，算出來約 30–34px，長字串頂多兩行；
   單獨一格的頁面（如 tools/vasopressor.html 的 VIS）欄寬就是整個面板，
   仍然吃到上限 68px，巨型數值的設計意圖沒有被犧牲。
   沒有祖先宣告 container-type 時（.result 底下不經 .result-grid 的那些），
   cqw 依規範回退成小視窗尺寸，等同原本的 vw 行為，不會壞掉。 */
[data-ui="sentence"] .result-grid > * { container-type: inline-size; }
[data-ui="sentence"] .metric-value.big {
  font-size: clamp(30px, 26cqw, 68px); line-height: 1.05; margin-top: 2px;
  overflow-wrap: break-word;
}

/* ── §B → css/ui-sentence.css（新增，不取代 26cqw 那條）────────────────── */

[data-ui="sentence"] .metric-value.big.is-text {
  font-size: clamp(22px, 17cqw, 68px);
  line-height: 1.1;
  margin-top: 2px;
  overflow-wrap: break-word;
}
[data-ui="sentence"] .result-headline {
  font-family: var(--sentence-serif); font-size: 18px; font-weight: 500; color: var(--sentence-fg); margin-top: 4px;
}
[data-ui="sentence"] .result-body { font-size: 12.5px; line-height: 1.75; color: var(--sentence-fg2); margin-top: 6px; }
[data-ui="sentence"] .result-notes { font-size: 11.5px; line-height: 1.7; color: var(--sentence-fg2); padding-left: 1.2em; }
[data-ui="sentence"] .result-interp {
  border: 1px solid var(--sentence-line2); border-left: 5px solid var(--sentence-fg);
  background: var(--sentence-bg); border-radius: 0;
  padding: 10px 12px; margin: 10px 0; font-family: var(--sentence-sans);
  font-size: 12.5px; line-height: 1.75; color: var(--sentence-fg2);
}
/* 只留 b：.result-interp 內文全站 0 頁用過 <strong>（死樣式掃描實測）。 */
[data-ui="sentence"] .result-interp b { color: var(--sentence-fg); }

/* 這一條當初漏掉了：score-ref 與 def-table 的 display:block 已經因為「表格排版很亂」
   移除，通用的 table{display:block} 也整條刪了，唯獨 table.ref 還留著同一個寫法。
   症狀一樣——表格退化成匿名 shrink-to-fit 盒，width:100% 失效。
   實測 tools/nihss.html（1280px）：正式版 display:table、寬 776、首列欄寬 283/493；
   造句設計 display:block、首列欄寬 46/81——整張表縮到左邊一小條。
   影響 kdigo-aki／fib4／osmolality／nihss／air 等所有用 table.ref 的頁面。 */
[data-ui="sentence"] table.ref {
  border-collapse: collapse; width: 100%; font-size: 11.5px; margin-top: 8px;
  max-width: 100%;
}
[data-ui="sentence"] table.ref th,
[data-ui="sentence"] table.ref td {
  border-bottom: 1px dotted var(--sentence-line); padding: 5px 6px; text-align: left; color: var(--sentence-fg2);
}
[data-ui="sentence"] table.ref th {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .08em; color: var(--sentence-dim);
  border-bottom: 1px solid var(--sentence-line2);
}
[data-ui="sentence"] table.ref tr.ref-current td { background: var(--sentence-shade); font-weight: 700; color: var(--sentence-fg); }
[data-ui="sentence"] table.ref tr.ref-current td:first-child::before { content: "▶ "; }
[data-ui="sentence"] .risk-note {
  font-size: 11.5px; line-height: 1.7; color: var(--sentence-fg2);
  border-top: 1px dotted var(--sentence-line); padding-top: 9px; margin-top: 9px;
}
/* 只留 b：.risk-note 內文全站 0 頁用過 <strong>（死樣式掃描實測）。 */
[data-ui="sentence"] .risk-note b { color: var(--sentence-fg); }

/* 風險徽章 b0–b3：格數 ＋ 邊框粗細 ＋ 色，三重以上編碼 */
[data-ui="sentence"] .risk-band {
  font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .04em;
  border-radius: 0; padding: 3px 9px; display: inline-flex; align-items: center; gap: 5px;
  background: transparent; border: 1px solid var(--sentence-line2); white-space: nowrap;
}
[data-ui="sentence"] .risk-band::before { font-size: 9px; letter-spacing: .04em; }
[data-ui="sentence"] .risk-band.b0 { color: var(--sentence-calm); border-color: var(--sentence-calm); }
[data-ui="sentence"] .risk-band.b0::before { content: "▮▯▯▯"; }
[data-ui="sentence"] .risk-band.b1 { color: var(--sentence-calm); border-color: var(--sentence-calm); border-width: 1px; }
[data-ui="sentence"] .risk-band.b1::before { content: "▮▮▯▯"; }
[data-ui="sentence"] .risk-band.b2 { color: var(--sentence-warn); border-color: var(--sentence-warn); border-width: 2px; }
[data-ui="sentence"] .risk-band.b2::before { content: "▮▮▮▯"; }
[data-ui="sentence"] .risk-band.b3 { color: var(--sentence-hot); border-color: var(--sentence-hot); border-width: 2px; font-weight: 700; }
[data-ui="sentence"] .risk-band.b3::before { content: "▮▮▮▮"; }

[data-ui="sentence"] .breakdown {
  font-family: var(--sentence-mono); font-size: 11.5px; color: var(--sentence-fg2);
  gap: 8px; margin-bottom: 14px;
}
[data-ui="sentence"] .breakdown div { background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0; padding: 7px 9px; }
[data-ui="sentence"] .breakdown b { color: var(--sentence-fg); font-size: 14px; }

/* ---------- H. 公式顯示（MELD／水分缺乏……） ---------- */
[data-ui="sentence"] .meld-field .mf-label { color: var(--sentence-fg2); font-weight: 600; font-family: var(--sentence-sans); }
[data-ui="sentence"] .meld-field .mf-note { color: var(--sentence-dim); font-family: var(--sentence-mono); }
[data-ui="sentence"] .meld-field input,
[data-ui="sentence"] .meld-field select { min-height: 44px; }

[data-ui="sentence"] .formula-box {
  background: var(--sentence-bg2); border: 1px solid var(--sentence-line2); border-radius: 0;
  padding: 15px 16px; margin-top: 10px;
}
[data-ui="sentence"] .formula-title {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--sentence-dim);
  margin-bottom: 10px;
}
[data-ui="sentence"] .formula-term { font-family: var(--sentence-mono); font-size: 13px; color: var(--sentence-fg2); }
[data-ui="sentence"] .formula-term .fop { color: var(--sentence-dim); }
[data-ui="sentence"] .formula-term .fcoef { color: var(--sentence-hot); font-weight: 700; }
[data-ui="sentence"] .formula-term .fvar { color: var(--sentence-fg2); }
[data-ui="sentence"] .formula-result {
  border-top: 1px dashed var(--sentence-line2); font-family: var(--sentence-mono);
  font-size: clamp(18px, 4vw, 24px); font-weight: 700; color: var(--sentence-fg); margin-top: 10px; padding-top: 10px;
}

/* ---------- I. 決策流程 ---------- */
[data-ui="sentence"] .flow-step {
  background: transparent; border: 0; border-top: 2px solid var(--sentence-fg);
  border-radius: 0; padding: 15px 0 6px; margin-top: 18px; margin-bottom: 0;
}
[data-ui="sentence"] .flow-step-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
[data-ui="sentence"] .flow-num {
  background: transparent; color: var(--sentence-fg);
  border: 1px solid var(--sentence-fg); border-radius: 0;
  width: auto; height: auto; min-width: 26px; text-align: center; padding: 2px 6px;
  font-family: var(--sentence-mono); font-size: 11px; font-weight: 700;
}
/* .flow-q 是「現在要你回答的那個臨床問題」。
   2026-08-13 由 clamp(20,4.2vw,24) 降回 clamp(15.5,2.6vw,18)——與正式版的 15.5px 同級。
   當初拉大的理由是「不應該比裝飾用的 h1 小」，那條原則已由使用者取消（見 C 段）。
   「結論 > 問題 > 選項」的相對層次仍然保留（.rec-title 18–21 > .flow-q 15.5–18），
   但整組不再往上頂。 */
[data-ui="sentence"] .flow-q { font-family: var(--sentence-serif); font-weight: 500; font-size: clamp(15.5px, 2.6vw, 18px); letter-spacing: .02em; line-height: 1.35; color: var(--sentence-fg); }
[data-ui="sentence"] .flow-connector { color: var(--sentence-dim); font-family: var(--sentence-mono); margin: 10px 0; }
[data-ui="sentence"] .flow-opts { gap: 7px; }
@media (min-width: 760px) {
  [data-ui="sentence"] .flow-opts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
[data-ui="sentence"] .flow-opt {
  min-height: 48px; text-align: left; padding: 9px 12px 9px 30px; position: relative;
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-sans); font-size: 13px; line-height: 1.5; color: var(--sentence-fg);
  transition: background var(--sentence-fast) var(--sentence-ease), border-color var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] .flow-opt:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); }
[data-ui="sentence"] .flow-opt::before {
  content: "○"; position: absolute; left: 10px; top: 9px; font-family: var(--sentence-mono); color: var(--sentence-dim);
}
[data-ui="sentence"] .flow-opt.selected {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); border-color: var(--sentence-inv-bg); font-weight: 400;
}
[data-ui="sentence"] .flow-opt.selected::before { content: "✓"; color: inherit; }
/* **選中態底色是反轉的，裡面所有自帶顏色的元素都必須改吃 inherit。**
   漏掉的後果是字色撞上底色、完全隱形——使用者實機回報過一次：
   選了「功能性（麻痺性）腸阻塞」之後，選項裡的 <b>（英文病名、關鍵特徵）
   在暗色主題是 rgb(236,230,216) 壓在 rgb(236,230,216) 上，亮色主題是
   rgb(20,33,28) 壓在 rgb(20,33,28) 上，**兩個主題都看不到**。
   成因是本檔前面那條全域的 `b, strong { color: var(--sentence-fg) }`——
   它抓的是固定的前景色，不會跟著底色反轉。
   `.fo-sub` 當初有補 inherit，`b`／`strong` 漏了。
   注意：這類錯**逐字比對抓不到**（innerText 讀得到隱形文字），
   只有量「字色 vs 自己的背景色」才抓得到。 */
[data-ui="sentence"] .flow-opt.selected b,
[data-ui="sentence"] .flow-opt.selected strong,
[data-ui="sentence"] .flow-opt.selected i,
[data-ui="sentence"] .flow-opt.selected em,
[data-ui="sentence"] .flow-opt.selected span { color: inherit; }
[data-ui="sentence"] .flow-opt .fo-sub { color: var(--sentence-dim); font-size: 11px; line-height: 1.55; margin-top: 3px; }
[data-ui="sentence"] .flow-opt.selected .fo-sub { color: inherit; opacity: .8; }
/* 注意：不可把 display 改成 block——原樣是 inline-block，多顆 .flow-link 相鄰時
   同屬一個 innerText 行；改成 block 會在瀏覽器的 innerText 演算法裡於每顆之間
   插入換行，逐字比對就會被判定「內容不同」（parity.py 現場量測驗證過這件事：
   闌尾炎頁 4 顆「開啟計分工具」鈕在關閉狀態合併成一行，開啟後若誤用 display:block
   會被拆成 4 行，字元一樣但行陣列結構不同，仍算不通過）。故只補視覺樣式，
   維持原本的 inline-block 排列方式。 */
[data-ui="sentence"] .flow-link {
  min-height: 48px; padding: 9px 12px; margin: 6px 6px 0 0;
  background: transparent; border: 1px dashed var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-sans); font-size: 12px; line-height: 1.45; color: var(--sentence-fg);
}
[data-ui="sentence"] .flow-link:hover { background: var(--sentence-shade); border-style: solid; }

[data-ui="sentence"] .flow-rec {
  border-radius: 0; padding: 13px 14px; margin-top: 14px;
  border: 1px solid var(--sentence-line2); background: var(--sentence-bg2); color: var(--sentence-fg);
}
[data-ui="sentence"] .flow-rec .rec-label {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em; text-transform: uppercase;
  opacity: 1; margin-bottom: 5px; display: inline-block;
}
/* 臨床建議標題。2026-08-13 由 clamp(24,5.5vw,34) 降回 clamp(18,3.2vw,21)，
   與正式版的 20px 同級。
   ⚠ 這條原本掛的是 DESIGN-LANGUAGE 第一條「畫面上最大的東西必須是臨床結論」，
   並且用「兩條 clamp 曲線不交叉」來保證它永遠比 h1 大。**該原則已由使用者
   在 2026-08-13 明確取消**（原話：「畫面上最大的東西必須是臨床內容請不用遵守」），
   所以現在 h1（20–26）反而比它大，這是預期的、不是回歸。
   下一位不要再為了那條原則把這裡調回去。 */
[data-ui="sentence"] .flow-rec .rec-title { font-family: var(--sentence-serif); font-weight: 500; font-size: clamp(18px, 3.2vw, 21px); line-height: 1.35; margin-bottom: 4px; }
[data-ui="sentence"] .flow-rec .rec-detail { padding-left: 1.2em; font-size: 12px; line-height: 1.72; }
[data-ui="sentence"] .flow-rec .rec-detail li { margin: 3px 0; color: var(--sentence-fg2); }
[data-ui="sentence"] .flow-rec .rec-detail li b, [data-ui="sentence"] .flow-rec .rec-detail li strong { color: var(--sentence-fg); }
[data-ui="sentence"] .flow-rec .rec-detail li.ev { opacity: .82; }
/* 建議卡內的小標題與其子條列。styles.css 用 -18px 退回 padding，造句版的
   padding 是 1.2em，所以這裡只改退回量，其餘（不掛點點、上留白）沿用。 */
[data-ui="sentence"] .flow-rec .rec-detail li.hd { margin-left: -1.2em; }
[data-ui="sentence"] .flow-rec .rec-detail ul.rec-sub { font-size: 11.5px; }
[data-ui="sentence"] .flow-rec .rec-note {
  border-top: 1px dotted var(--sentence-line); border-top-color: var(--sentence-line);
  font-family: var(--sentence-mono); font-size: 10.5px; color: var(--sentence-dim); opacity: 1;
}
/* 急迫度：邊框粗細 ＋ 標籤格數 ＋ 色，三重編碼 */
[data-ui="sentence"] .flow-rec.rec-urgent { border: 4px solid var(--sentence-hot); }
[data-ui="sentence"] .flow-rec.rec-urgent .rec-label { color: var(--sentence-hot); font-weight: 700; }
[data-ui="sentence"] .flow-rec.rec-urgent .rec-label::before { content: "▮▮▮▮ "; }
[data-ui="sentence"] .flow-rec.rec-elective { border: 3px solid var(--sentence-warn); }
[data-ui="sentence"] .flow-rec.rec-elective .rec-label { color: var(--sentence-warn); }
[data-ui="sentence"] .flow-rec.rec-elective .rec-label::before { content: "▮▮▮▯ "; }
[data-ui="sentence"] .flow-rec.rec-nonop { border: 2px solid var(--sentence-calm); }
[data-ui="sentence"] .flow-rec.rec-nonop .rec-label { color: var(--sentence-calm); }
[data-ui="sentence"] .flow-rec.rec-nonop .rec-label::before { content: "▮▮▯▯ "; }
[data-ui="sentence"] .flow-rec.rec-blue { border: 1px solid var(--sentence-line2); }
[data-ui="sentence"] .flow-rec.rec-blue .rec-label { color: var(--sentence-dim); }
[data-ui="sentence"] .flow-rec.rec-blue .rec-label::before { content: "▮▯▯▯ "; }
[data-ui="sentence"] .flow-rec.rec-idle { border: 1px dashed var(--sentence-line2); background: var(--sentence-bg); }
/* 2026-08-13 改回縮小：使用者實機指出「請由步驟 1（診斷）開始選擇」這行太大。
   先前不縮小的理由是「不應該比裝飾用的 h1 小」——那條原則已由使用者取消（見 C 段）。
   這行是**還沒作答時的佔位提示，不是臨床結論**，正式版本來就把它做成 15px 的
   sans 灰字，這裡回到同一個意思。 */
[data-ui="sentence"] .flow-rec.rec-idle .rec-title {
  color: var(--sentence-dim); font-family: var(--sentence-sans); font-weight: 600;
  font-size: clamp(14.5px, 2.4vw, 16px);
}
[data-ui="sentence"] .flow-rec.rec-idle .rec-label { color: var(--sentence-dim); }
[data-ui="sentence"] .flow-rec.rec-idle .rec-label::before { content: "▯▯▯▯ "; }
/* 這條規則第一版曾被我判定「永遠 0 命中」而刪掉——只查了 31 個 pathways/*.html，
   全部 33 處 cls='rec-idle' 賦值確實都與 note='' 同一敘述句成對出現。但
   tools/cancer.html 掛的 js/aml-pathway.js 用的是它自己另一份 ulRec()（非
   js/common.js 的 flowRec()），第 585–589 行 renderOther() 把「本指引之化療
   章節未涵蓋此類白血病」這個分流結果同時標成 cls='rec-idle' 又帶非空 note
   （'AML-1：分流後之四個出口中…'），ulRec() 對 note 是否輸出 <div class="rec-note">
   只看 note 真假、不看 cls——找回來了，這裡補回這條規則。教訓：本檔各處提到
   「全部 33 頁」的死樣式判斷，只涵蓋 pathways/*.html，沒有涵蓋 tools/*.html
   與 js/*-pathway.js 共用同一套 markup 慣例但各自獨立實作 render 函式的頁面。 */
[data-ui="sentence"] .flow-rec.rec-idle .rec-note { color: var(--sentence-dim); }

[data-ui="sentence"] .flow-reset { margin-top: 6px; }
[data-ui="sentence"] .btn-reset {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-mono); font-size: 11px; letter-spacing: .08em;
  padding: 0 16px; min-height: 44px; display: inline-flex; align-items: center;
}
[data-ui="sentence"] .btn-reset:hover { background: var(--sentence-shade); }

/* ---------- J. 分級／分類查閱頁 ---------- */
[data-ui="sentence"] .tab-row { border-bottom: 2px solid var(--sentence-fg); gap: 6px; margin-bottom: 18px; }
[data-ui="sentence"] .tab-btn {
  font-family: var(--sentence-mono); font-size: 11.5px; letter-spacing: .04em;
  background: transparent; border: 1px solid var(--sentence-line2); border-bottom: none; border-radius: 0;
  padding: 9px 13px; min-height: 44px; color: var(--sentence-dim); top: 2px; position: relative;
}
[data-ui="sentence"] .tab-btn:hover { background: var(--sentence-shade); color: var(--sentence-fg); }
[data-ui="sentence"] .tab-btn.active {
  color: var(--sentence-fg); background: var(--sentence-bg2); border-color: var(--sentence-fg); font-weight: 700;
}
[data-ui="sentence"] .sys-head {
  border-bottom: 2px solid var(--sentence-fg); margin: 26px 0 8px; padding-bottom: 6px;
  display: flex; align-items: baseline; gap: 9px; flex-wrap: wrap;
}
[data-ui="sentence"] .sys-name { font-family: var(--sentence-serif); font-weight: 500; font-size: 20px; color: var(--sentence-fg); }
[data-ui="sentence"] .sys-en { font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-dim); }
[data-ui="sentence"] .sys-src {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .1em; color: var(--sentence-dim); margin-left: auto;
  border: 1px solid var(--sentence-line2); padding: 1px 6px;
}
[data-ui="sentence"] .sys-head.sys-hit { background: var(--sentence-shade); }
[data-ui="sentence"] .sys-body { font-size: 12.5px; line-height: 1.75; color: var(--sentence-fg2); }
[data-ui="sentence"] .sys-body table.def-table { margin: 8px 0 10px; }
[data-ui="sentence"] .sys-sub {
  font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .06em; color: var(--sentence-dim);
  margin: 14px 0 4px; padding-bottom: 3px; border-bottom: 1px solid var(--sentence-line);
}
[data-ui="sentence"] .sys-caveat { font-family: var(--sentence-mono); font-size: 10.5px; line-height: 1.65; color: var(--sentence-dim); }

/* ---------- K. 分級清單（急診手術分級：紫→紅→橘→黃→灰） ---------- */
[data-ui="sentence"] .lv-legend { gap: 7px; }
[data-ui="sentence"] .lv-chip {
  border: 1px solid var(--sentence-line2); background: var(--sentence-bg); border-radius: 0;
  padding: 8px 10px; font-family: var(--sentence-sans); font-size: 12px; color: var(--sentence-fg);
  min-height: 44px; justify-content: center;
}
[data-ui="sentence"] .lv-chip:hover { background: var(--sentence-shade); }
[data-ui="sentence"] .lv-chip.selected { border-color: var(--sentence-fg); background: var(--sentence-shade); }
[data-ui="sentence"] .lv-chip .lv-wait { font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim); }
/* lv1–lv5：不再用實心底色塊當唯一識別，改成邊框粗細（1–5 級遞減）＋ 序號 ＋ 文字色，
   顏色仍保留原本紫→紅→橘→黃→灰的五級視覺記憶，但不再是唯一線索。 */
[data-ui="sentence"] .lv-badge {
  background: transparent; border-radius: 0; color: var(--sentence-fg);
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .04em;
  padding: 2px 7px; display: inline-flex; align-items: center; gap: 4px;
}
[data-ui="sentence"] .lv-badge.lv1 { border: 3px solid #6b3fa0; color: #6b3fa0; }
[data-ui="sentence"] .lv-badge.lv1::before { content: "①"; }
[data-ui="sentence"] .lv-badge.lv2 { border: 3px solid var(--sentence-hot); color: var(--sentence-hot); }
[data-ui="sentence"] .lv-badge.lv2::before { content: "②"; }
[data-ui="sentence"] .lv-badge.lv3 { border: 2px solid #b25c0e; color: #b25c0e; }
[data-ui="sentence"] .lv-badge.lv3::before { content: "③"; }
[data-ui="sentence"] .lv-badge.lv4 { border: 1px solid var(--sentence-warn); color: var(--sentence-warn); }
[data-ui="sentence"] .lv-badge.lv4::before { content: "④"; }
[data-ui="sentence"] .lv-badge.lv5 { border: 1px dashed var(--sentence-line2); color: var(--sentence-dim); }
[data-ui="sentence"] .lv-badge.lv5::before { content: "⑤"; }
@media (prefers-color-scheme: dark) {
  [data-ui="sentence"] .lv-badge.lv1 { color: #b9a0e0; border-color: #b9a0e0; }
  [data-ui="sentence"] .lv-badge.lv3 { color: #e0a566; border-color: #e0a566; }
}
[data-ui="sentence"] .dept-block { background: var(--sentence-bg2); border: 1px solid var(--sentence-line2); border-radius: 0; padding: 12px 14px; margin-bottom: 10px; }
[data-ui="sentence"] .dept-head { border-bottom: 1px solid var(--sentence-line); }
[data-ui="sentence"] .dept-name { font-family: var(--sentence-serif); font-weight: 500; font-size: 20px; color: var(--sentence-fg); }
[data-ui="sentence"] .dept-en { font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim); }
[data-ui="sentence"] .dept-n { font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim); }
[data-ui="sentence"] .op-item { border-bottom: 1px dotted var(--sentence-line); font-size: 12.5px; color: var(--sentence-fg2); }
[data-ui="sentence"] .op-note { color: var(--sentence-dim); }
[data-ui="sentence"] .op-hl { background: var(--sentence-shade); }
[data-ui="sentence"] .list-empty { color: var(--sentence-dim); }

/* ---------- L. 頁尾與連結 ---------- */
[data-ui="sentence"] footer.tool-footer {
  border-top: 1px solid var(--sentence-line2); margin-top: 26px; padding: 12px 0 6px;
  font-family: var(--sentence-mono); font-size: 10.5px; line-height: 2; color: var(--sentence-dim);
}
/* 2026-09-06：文獻連結的底線改髮絲色、離字 3px——二十幾條引用串在一起時不再是一面底線牆 */
[data-ui="sentence"] footer.tool-footer a.ref-link,
[data-ui="sentence"] a.ref-link {
  color: inherit; text-decoration: underline; text-decoration-color: var(--sentence-line2);
  text-decoration-thickness: 1px; text-underline-offset: 3px;
}
[data-ui="sentence"] a.ref-link:hover { background: var(--sentence-shade); }
[data-ui="sentence"] a.tool-link { color: inherit; text-decoration-color: var(--sentence-line2); }
[data-ui="sentence"] .ind-badge { border-color: currentColor; border-radius: 0; }
[data-ui="sentence"] .mono { font-family: var(--sentence-mono); }

/* ---------- M. 通用觸控目標安全網 ＋ 動態降級 ---------- */
/* 沒被上面任何具名規則覆蓋到的互動元件，仍要達到 ≥44px（僅本設計要求）。
   排除 checkbox／radio（下面用 appearance:none 自畫視覺方塊另外處理，
   原生方塊撐大會很醜，要保持小方塊＋大熱區）。45px 而非 44px：cdp.py
   small_targets() 量到的是未四捨五入的實際 px，44.00 剛好卡在邊界時，
   box-sizing／次像素捨入偶爾會量出 43.6xx 這種「四捨五入顯示 44 但實際
   小於 44」的假陽性（tools/acls.html 的 BLS 分頁鈕現場遇到），多留 1px
   安全邊界。 */
[data-ui="sentence"] button:not(.ui-mode-toggle),
[data-ui="sentence"] input:not([type="checkbox"]):not([type="radio"]),
[data-ui="sentence"] select {
  min-height: 45px; min-width: 45px;
}

/* ---- M-1. 例外：三個查閱頁的行內徽章鈕，維持正式版密度 ----
 * 本檔開頭的範圍聲明寫著藥物資料庫／抗生素／菌譜三頁的 dc-*／db-*／cov-* 元件
 * 「不在此檔動它們」，但上面那條通用安全網只挑 <button>，不看 class，
 * 於是把這三頁**當徽章用的按鈕**全部撐成 45px 見方——那些是文字標籤，
 * 不是版面上的主要控制項，撐高之後整份清單鬆散到不能看。使用者實機回報：
 * 「抗生素與藥物的各個項目與 badge 太高了，排版疏鬆，原正式版的高度較佳」。
 *
 * 實測（1280px，中位數，正式版 → 造句設計・修正前）：
 *   抗生素指引  菌譜徽章 cov-tag   20.1 → 45   (+24.9)
 *               類別徽章 dc-class    19 → 45   (+26)
 *               藥卡列首           82.2 → 128  (+45.8)   ← 徽章撐高整列
 *               藥卡本體           84.2 → 130  (+45.8)
 *               排序鈕               22 → 45   (+23)
 *   藥物資料庫  分類方磚 db-cat      31 → 45   (+14)
 *               機轉籤 db-clschip    22 → 45   (+23)
 *               更多鈕 db-clsmore    21 → 45   (+24)
 *               藥卡列首             46 → 67   (+21)
 * 這一段把它們放回各自 CSS 原本的尺寸（min-height/min-width 歸零，padding
 * 與字級本來就沒被本檔改過，因此結果等於正式版高度）。
 *
 * 代價要講清楚：這九類元件在本設計下不再滿足 ≥44px 觸控目標，是**明知而為**
 * 的取捨——使用者兩度指名要正式版的密度，而它們在正式版本來就是這個尺寸、
 * 一直是這樣用的。cdp.py small_targets() 因此會在這三頁報出這些元件，
 * 那是預期內的，不是回歸。真正的主要控制項（搜尋框、分頁鈕、模式鈕、
 * 新增藥物等）仍留在上面的通用規則裡，不在這份例外名單內。 */
/* 選擇器一律寫成 `button.xxx` 而不是 `.xxx`：上面那條安全網是
   `[data-ui="sentence"] button:not(.ui-mode-toggle)`，特異度 (0,2,1)——
   屬性 1 ＋ :not() 裡的 class 1 ＋ 元素 1。只寫 `[data-ui="sentence"] .db-cat`
   是 (0,2,0)，寫在後面也蓋不過去（第一版就是這樣寫的，量出來 db-cat 仍是 45px）。
   補上元素選擇器打成平手，再靠出現在後面取勝。 */
[data-ui="sentence"] button.cov-tag,
[data-ui="sentence"] button.dc-class,
[data-ui="sentence"] button.drug-chip,
[data-ui="sentence"] button.abx-sortbtn,
[data-ui="sentence"] button.db-cat,
[data-ui="sentence"] button.db-clschip,
[data-ui="sentence"] button.db-clsmore {
  min-height: 0; min-width: 0;
}

/* 通用 checkbox／radio：appearance:none 自畫方塊／圓點，量到的 <input>
   元素本身就是 45×45，視覺記號維持 20px 密度。不靠外層 label 撐熱區——
   cdp.py 的 small_targets() 逐一量每個 <input>，外層 label 再大也救不了
   裡面那顆 20px 的原生方塊。這條通用規則涵蓋全站所有 checkbox／radio，
   包含各頁自訂的 class（.hb-cb／.cv-cb／.cap-cb／.pa-rf……用不著逐一列名）；
   .toggle-inline input[type="checkbox"] 仍保留自己那份（class+type 特異度更高），
   兩者視覺結果一致，只是各自獨立維護、互不依賴。 */
[data-ui="sentence"] input[type="checkbox"],
[data-ui="sentence"] input[type="radio"] {
  appearance: none; -webkit-appearance: none;
  width: 45px; height: 45px; min-width: 45px; min-height: 45px; margin: 0; flex-shrink: 0;
  position: relative; background: transparent; border: 0; cursor: pointer; vertical-align: middle;
}
[data-ui="sentence"] input[type="checkbox"]::before,
[data-ui="sentence"] input[type="radio"]::before {
  content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 20px; height: 20px; border: 2px solid var(--sentence-line2); background: var(--sentence-bg);
}
[data-ui="sentence"] input[type="radio"]::before { border-radius: 50%; }
[data-ui="sentence"] input[type="checkbox"]:checked::before,
[data-ui="sentence"] input[type="radio"]:checked::before {
  background: var(--sentence-fg); border-color: var(--sentence-fg);
}
[data-ui="sentence"] input[type="checkbox"]:checked::after {
  content: "✓"; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  color: var(--sentence-inv-fg); font-size: 13px; font-weight: 700; line-height: 1;
}
[data-ui="sentence"] input[type="radio"]:checked::after {
  content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 8px; height: 8px; border-radius: 50%; background: var(--sentence-inv-fg);
}
/* 不強制 display:flex——def-box／info-box 已各自指定過（皆為區塊層級，
   list-item→flex 不影響 innerText 換行分段，已現場驗證）；這裡只補
   min-height，避免影響「另一位負責」的藥卡等頁面尚未命名到的 <summary>
   版面（例如 .drugcard > summary 目前是多個徽章並排，改 display 有風險）。 */
[data-ui="sentence"] details > summary { min-height: 44px; }

/* tools/spectrum-database.html 的 .sd-colhead／.dlink：這兩個 class 前綴是 sd-／dlink，
   不在本檔開頭聲明排除的 dc-*／db-*／abx-*／bac-*／cov-*／drugcard 名單內，
   而且全站 grep 找不到任何一支 css/*.css 定義過它們——連該頁面自己 <style> 內
   都只寫了 28px 高的欄首與 inline 的列首連結，從未有人補過 44px。不是「另一位
   負責的範圍」，是缺口，這裡補上：
     · div.sd-colhead（29 個）—— 帶 onclick="toggleCol(...)" 的欄首切換鈕，真控制項。
     · a.sd-colhead.dlink（9 個）—— 同一列欄首、點了直接連去該藥藥卡，同樣是控制項，
       且和上面那 29 個同一個 <tr>，撐高不會多花版面。
     · a.dlink（36 個，th.rowhead 內的列首藥名連結）—— 也是控制項不是行內引用，
       分布在資料列的列首，一併補上。
       版面代價：實測頁面 scrollHeight 設計關 5015px、設計開 5001px——**沒有變高**，
       因為同列的資料格本來就已經 ≥44px，列首連結長高不會再撐高那一列。
       （原本這裡寫「52 列 × 增高 7px ≈ 多 364px（5091→5455px）」是沒有量過的推估，
       與實測相反，已刪除。出貨檔案裡不留沒量過的數字。） */
[data-ui="sentence"] .sd-colhead {
  min-height: 44px; justify-content: center;
}
/* :not(.sd-colhead)：a.sd-colhead.dlink 那 9 個已經被上面那條 flex-column 規則
   撐到 44px，這裡只再處理單純的列首連結（th.rowhead 內、display 預設 inline，
   min-height 對 inline 元素無效，需要先改成 inline-flex 才吃得到）。 */
/* min-height 拿掉了。當初補 44px 是為了觸控目標，附註寫著「實測頁面 scrollHeight
   設計關 5015px、設計開 5001px——沒有變高」。那個數字現在不成立：實測
   tools/spectrum-database.html 資料格中位數 37px（正式版）→ 55px（造句設計），
   1044 個格子受影響，整頁 5344 → 5573px。使用者實機看到後要求「將這個表格的
   每格高度節省」。這是明知而為的取捨——列首藥名連結不再滿足 44px 觸控目標，
   與 M-1 段對藥物／抗生素查閱頁徽章鈕做的取捨同一個理由：使用者兩度指名要密度。
   min-width 保留（那是為了「1st／2nd」這種極短縮寫，不影響列高）。 */
[data-ui="sentence"] a.dlink:not(.sd-colhead) {
  display: inline-flex; align-items: center; min-width: 44px;
  /* 部分藥名縮寫很短（1st／2nd／Colistin 縮到 42px 這種），min-height 補完後
     量出來的寬還是 <44px——列首欄有 ~92px 空間，補寬不會撐破欄位。 */
}

@media (prefers-reduced-motion: reduce) {
  [data-ui="sentence"] *, [data-ui="sentence"] *::before, [data-ui="sentence"] *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}

/* ---------- N. 側欄導覽的觸控目標（css/nav.css／js/nav.js，每頁都有） ----------
 * nav.js 在執行期把整座抽屜式導覽（.nav-toggle／.side-nav／.nav-item…）插進
 * <body>，不是靜態 markup，但仍會被 document.body.innerText 量到（parity.py／
 * cdp.py 的量測都是頁面載入完成後才讀取）。這裡只補尺寸，不動 display／
 * position／transform——那些屬性由 nav.js 的開合動畫依賴，改了會連動壞掉；
 * .nav-toggle／.nav-group-fold 是純裝飾符號（三橫槓／小箭頭），沒有文字節點，
 * 放心調大。.nav-item 含真正的頁面名稱文字，只加 min-height，不改 display，
 * 已現場以 parity.py 驗證兩態逐字相同。 */
[data-ui="sentence"] .nav-toggle { width: 44px; height: 44px; }
[data-ui="sentence"] .nav-group-fold { width: 44px; min-height: 44px; }
[data-ui="sentence"] .nav-item { min-height: 44px; padding-top: 9px; padding-bottom: 9px; }

/* ================================================================
 * O. 造句導覽本體（第 2a 段：js/sentence-nav.js）
 * ================================================================
 * 兩個進場點，DOM 都由 js/sentence-nav.js 動態插入（正式版模式下完全不存在）：
 *   · #sentHome  —— 首頁（index.html）唯一整頁換掉的地方：句子造句列取代
 *                    六大類方磚，插在搜尋框之前，一律用文件流排版。
 *   · #sentTrail —— 107 個工具／流程頁：插在 .app-header 之後的唯讀句子軌跡，
 *                    同樣是文件流（不是 fixed 疊層），內容自然被推開，
 *                    parity.py 規則 B 要求的「不可遮住／不可造成橫向溢出」
 *                    因此是版面結構本身保證的。
 * 兩者最外層都帶 data-ui-chrome，parity.py 規則 A 逐字比對時整棵排除。
 * 觸控目標：<button> 已被上面 M 段的通用規則覆蓋到 ≥45px，這裡只需要另外
 * 處理 <a>（M 段只挑 button/input/select，不含 a）。
 */

/* ---- 首頁換場：搜尋框／六大類方磚整段隱藏，讓 #sentHome 取代它們的版位 ----
 * 只用 display:none 換版位，不刪節點、不改 markup——關掉造句設計（移除
 * data-ui 屬性）時，#gs-home／#gs-results／#home-body 原樣還在、原樣顯示，
 * js/search.js／首頁其餘互動完全不受影響。index.html 是 parity.py 規則 A
 * 唯一的例外頁（見該檔檔頭「首頁是唯一例外」），這裡的整頁換場正是
 * briefs/PHASE2-SENTENCE-NAV.md 明訂「首頁在造句模式下顯示句子列」的交付物本身，
 * 不適用「內容區逐字不變」。 */
[data-ui="sentence"] #gs-home,
[data-ui="sentence"] #gs-results,
[data-ui="sentence"] #home-body {
  display: none;
}

/* ---- 首頁換場的其餘兩件：側邊導覽與像素貓 ----
 * 使用者指定「若改成 04 sentence，則畫面採用 work 中的 index（不需要側邊欄……
 * 先不要有貓咪）」。兩者都只在**首頁**收起來：
 *   · 側邊欄——在造句模式的首頁，導覽就是句子本身，抽屜式選單是第二套走法，
 *     兩套並存只會讓人不知道該用哪一個。107 個內頁不在此列（那裡的句子軌跡
 *     是唯讀的，側邊欄仍是那些頁面唯一的跳頁方式，收掉會讓人走不出去）。
 *   · #cat-canvas／#cat-strip——像素貓是正式版首頁的彩蛋，原型沒有。
 * 用 body:has(#sentHome) 限定首頁：#sentHome 只由 js/sentence-nav.js 在首頁插入，
 * 內頁插的是 #sentTrail，天然分得開，不必再靠頁面路徑判斷。
 * 一律只用 display:none，節點與 js/nav.js、js/pixel-cat.js 都原封不動——
 * 關掉造句設計，兩者立刻原樣回來。 */
/* 【2026-08 改版】側邊欄改成**全站**收起，不再只收首頁那一份。使用者原話：
 * 「確保每個分頁中都不要有側邊欄（只在貓咪主題才出現）」。上面那段舊理由
 * （內頁靠側邊欄才走得出去）已經不成立：句子軌跡的「清空句子」每一頁都有，
 * 手機下緣固定列還有「說整句」可以直接跳到任何一個標的。
 * 唯二沒有軌跡的 tools/ich-score.html 與 tools/pss.html 不受影響——那兩頁的
 * 「← 返回主選單」本來就因為 body:has(#sentTrail) 的條件而保留著（見本檔前段），
 * 收掉側邊欄不會讓它們變成死路。 */
[data-ui="sentence"] .nav-toggle,
[data-ui="sentence"] .side-nav,
[data-ui="sentence"] .nav-scrim,
[data-ui="sentence"] body:has(#sentHome) #cat-canvas,
[data-ui="sentence"] body:has(#sentHome) #cat-strip {
  display: none;
}

/* ---- 造句首頁的殺人鯨疊層（節點由 js/orca.js 建，只在首頁存在） ----
 * fixed 而非 absolute：牠不依附任何元素，也就沒有「疊層與文件逐像素對齊」的
 * 需求（那才是像素貓非得用 absolute 的理由）。fixed 的三個好處正好對上使用者
 * 的三項要求——活動範圍＝整個視口、捲動不走位、畫布不進文件流所以不可能跑版。
 * z-index 介於內容與下緣固定列（.sent-mbar 的 40）之間：牠游在字的前面，
 * 但永遠壓不到下緣工具列。（主題切換鈕已於 2026-08 從右上角的 fixed 疊層
 * 改成頁尾文件流的一行小字「找貓咪」，不再參與這裡的疊層順序。）
 * pointer-events:none：點擊一律由 document 收（見 js/orca.js 的檔尾），
 * 疊層不會擋住底下任何一顆按鈕。 */
[data-ui="sentence"] #orca-canvas {
  position: fixed; inset: 0; width: 100%; height: 100%;
  pointer-events: none; z-index: 30;
}
@media (prefers-reduced-motion: reduce) {
  [data-ui="sentence"] #orca-canvas { opacity: .55; }
}

/* ---- 詞塊／空格插槽／連接詞（首頁大字 vs 目標頁唯讀軌跡，兩者分開） ---- */
/* ────────────────────────────────────────────────────────────────────────
   §1 詞塊／空格插槽／連接詞
   取代原 843–874 行。首頁（.sent-*）走大字級襯線，目標頁（.st-*）原樣保留。
   ──────────────────────────────────────────────────────────────────────── */

/* ---- 目標頁唯讀軌跡：值與併入前完全相同，只是從共用選擇器裡拆出來 ---- */
[data-ui="sentence"] .st-lx {
  font-family: var(--sentence-serif); font-size: 13px; color: var(--sentence-dim);
  margin: 0 2px;
}

/* ---- 首頁句子列：全站唯一的大字（原型 css/sentence.css .sent／.slot／.chip） ----
 * 面向記號一律走底線樣式，不靠顏色：主體＝實線、狀況＝虛線、動作＝雙線、
 * 範圍＝點線。色弱與黑白列印下仍分得出這一格是哪個面向。 */
[data-ui="sentence"] .sent-row .f-s { border-bottom: 3px solid currentColor; }
[data-ui="sentence"] .sent-row .f-c { border-bottom: 3px dashed currentColor; }
[data-ui="sentence"] .sent-row .f-a { border-bottom: 3px double currentColor; }
[data-ui="sentence"] .sent-row .f-g { border-bottom: 3px dotted currentColor; }

[data-ui="sentence"] .sent-slot {
  display: inline-flex; align-items: center; gap: 6px;
  min-height: 46px; min-width: 46px; padding: 0 12px;
  font-family: var(--sentence-sans);
  font-size: max(14px, .46em);          /* 跟著 .sent-row 的大字級一起長 */
  letter-spacing: .08em;
  color: var(--sentence-dim);
  background: transparent;
  border: 1.5px dashed var(--sentence-line2);
  border-radius: 0;
  transition: color var(--sentence-fast) var(--sentence-ease),
              background var(--sentence-fast) var(--sentence-ease),
              border-color var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] .sent-slot:hover {
  color: var(--sentence-fg); background: var(--sentence-shade); border-color: var(--sentence-fg);
}
/* ▢ 跟著 .sent-slot 的 sans 走（原型 css/sentence.css .slot .box 只設 font-size）——
   併入前這條掛的是 --sentence-mono，同一個字元在等寬字裡會被畫成另一種方框，
   跟原型看起來不是同一顆記號 */
[data-ui="sentence"] .ss-box { font-size: 1.05em; }

[data-ui="sentence"] .sent-chip {
  display: inline-flex; align-items: stretch; max-width: 100%;
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg);
  border: 0; border-radius: 0; padding: 0; margin: 0;
}
[data-ui="sentence"] .sent-chip.f-s,
[data-ui="sentence"] .sent-chip.f-c,
[data-ui="sentence"] .sent-chip.f-a,
[data-ui="sentence"] .sent-chip.f-g { border-bottom-color: var(--sentence-line2); }
[data-ui="sentence"] .sc-w {
  min-height: 46px; min-width: 46px; padding: 2px 4px 2px 10px;
  display: inline-flex; align-items: center;
  background: transparent; border: 0; color: inherit;
  font-family: var(--sentence-serif); font-size: inherit; letter-spacing: .06em;
  white-space: normal; overflow-wrap: anywhere; text-align: left;
}
[data-ui="sentence"] .sc-x {
  min-height: 46px; min-width: 46px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 0; color: inherit; opacity: .72;
  font-family: var(--sentence-mono); font-size: 15px; padding: 0;
}
[data-ui="sentence"] .sc-x:hover { opacity: 1; background: rgba(128, 128, 128, .28); color: inherit; }
[data-ui="sentence"] .sent-lx {
  font-family: var(--sentence-serif); font-size: inherit; font-weight: 400;
  color: var(--sentence-dim); margin: 0;
}

[data-ui="sentence"] .sent-chip.wheeling {
  outline: 2px solid var(--sentence-fg); outline-offset: 2px;
}
[data-ui="sentence"] .wh-vp {
  display: block; position: relative; overflow: hidden;
  height: 3.75em; min-width: 3em;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 26%, #000 74%, transparent 100%);
          mask-image: linear-gradient(to bottom, transparent 0, #000 26%, #000 74%, transparent 100%);
}
[data-ui="sentence"] .wh-stack { display: block; will-change: transform; }
[data-ui="sentence"] .wh-it {
  display: block; height: 1.25em; line-height: 1.25em; white-space: nowrap; opacity: .3;
}
[data-ui="sentence"] .wh-it.cur { opacity: 1; }

/* ---- 首頁：#sentHome ---- */
[data-ui="sentence"] .sent-home { margin: 6px 0 18px; }

/* 造句列＝左邊一顆 ⌕ 說整句 ＋ 右邊句子本體（原型 css/sentence.css .rail） */
[data-ui="sentence"] .sent-rail {
  display: flex; align-items: flex-start; gap: 10px;
  border-top: 2px solid var(--sentence-fg);
  border-bottom: 1px solid var(--sentence-line2);
  padding: 12px 0 10px; margin-bottom: 10px;
}
[data-ui="sentence"] .sent-say-btn {
  flex: 0 0 auto; align-self: flex-start;
  min-height: 46px; min-width: 46px; padding: 0 12px;
  display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-mono);
  font-size: 10px; letter-spacing: .12em;
}
[data-ui="sentence"] .sent-say-btn:hover { background: var(--sentence-shade); }
[data-ui="sentence"] .sent-say-btn .mag { font-size: 15px; line-height: 1; }
[data-ui="sentence"] .sent-say-btn[aria-expanded="true"] {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); border-color: var(--sentence-inv-bg);
}

/* 句子本體：全站唯一的大字 */
[data-ui="sentence"] .sent-row {
  flex: 1 1 auto; min-width: 0;
  display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px;
  font-family: var(--sentence-serif);
  font-size: clamp(18px, 4.4vw, 28px);
  line-height: 1.35; letter-spacing: .05em;
  color: var(--sentence-fg);
  border: 0; padding: 0; margin: 0;
}

/* 說整句面板攤開時，句子與底下的常用句／清單先讓位，避免同一組字重複出現在兩處 */
[data-ui="sentence"] .sent-home.asking .sent-row,
[data-ui="sentence"] .sent-home.asking .sent-hubs-zone,
[data-ui="sentence"] .sent-home.asking .sent-results,
[data-ui="sentence"] .sent-home.asking .sent-point,
[data-ui="sentence"] .sent-home.asking .sent-wh-hint { display: none; }

[data-ui="sentence"] .sent-wh-hint {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .1em;
  line-height: 1.6; color: var(--sentence-dim);
  padding: 0 0 8px;
}
[data-ui="sentence"] .sent-home.asking .sent-wh-hint { display: none; }

[data-ui="sentence"] .sent-ask { padding: 10px 0 4px; }
[data-ui="sentence"] .sent-ask-in {
  width: 100%; box-sizing: border-box; min-height: 46px; padding: 0 12px;
  background: var(--sentence-bg); color: var(--sentence-fg);
  border: 1px solid var(--sentence-fg); border-radius: 0;
  font-family: var(--sentence-sans); font-size: 15px;
}
[data-ui="sentence"] .sent-ask-list { margin-top: 8px; max-height: 60vh; overflow-y: auto; }
[data-ui="sentence"] .sent-ask-hint {
  font-family: var(--sentence-mono); font-size: 11px; line-height: 1.7; color: var(--sentence-dim);
  padding: 6px 0;
}
[data-ui="sentence"] .sent-ask-fuzzy { color: var(--sentence-warn); }
[data-ui="sentence"] .sent-ask-item {
  display: flex; flex-direction: column; gap: 2px;
  min-height: 46px; box-sizing: border-box; padding: 8px 10px;
  border-bottom: 1px solid var(--sentence-line); text-decoration: none;
}
[data-ui="sentence"] .sent-ask-item:hover,
[data-ui="sentence"] .sent-ask-item.sel { background: var(--sentence-shade); }
[data-ui="sentence"] .sai-say {
  font-family: var(--sentence-serif); font-size: 15px; color: var(--sentence-dim);
}
[data-ui="sentence"] .sai-say em { font-style: normal; color: var(--sentence-fg); }
[data-ui="sentence"] .sai-arw { color: var(--sentence-dim); }
[data-ui="sentence"] .sai-meta {
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
}

/* ── §1 分組標頭 ────────────────────────────────────────────────────────
   sticky 黏在 .sent-ask-list 的頂端：清單捲到第 20 筆藥的時候，使用者還看得見
   「現在在看的是藥物資料庫這一組」。sticky 必須有不透明底色，否則捲到它下面的
   那一列會透出來疊在字上。 */
[data-ui="sentence"] .sent-ask-gh {
  position: sticky; top: 0; z-index: 2;
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 1px 8px;
  background: var(--sentence-bg);
  border-bottom: 1px solid var(--sentence-fg);
  padding: 8px 0 4px; margin: 0;
}
[data-ui="sentence"] .sent-ask-gh:first-child { padding-top: 2px; }
[data-ui="sentence"] .sag-en {
  flex: 0 0 100%;
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--sentence-dim);
  order: -1;                    /* 英文眉標在上、中文在下，與 .sgh-en 同一個排法 */
}
[data-ui="sentence"] .sag-zh {
  font-family: var(--sentence-serif); font-size: 13.5px; font-weight: 500;
  letter-spacing: .06em; color: var(--sentence-fg);
}
[data-ui="sentence"] .sag-n {
  margin-left: auto;
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
  white-space: nowrap;
}

/* ── §2 分組副標：這一組的資料是什麼 ──────────────────────────────────
   「台大處方集 · 一商品名一張藥卡」這種一句話的來源說明。它不是標頭的一部分
   （不跟著 sticky），捲過去就過去了——它只需要在使用者第一次看到這一組時
   講清楚一次。 */
[data-ui="sentence"] .sent-ask-gnote {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .06em;
  line-height: 1.6; color: var(--sentence-dim);
  padding: 3px 0 2px;
}

/* ── §3 藥的候選項 ─────────────────────────────────────────────────────
   跟工具那一列（.sai-say：襯線體、整句話、中間夾 <em> 的詞塊）刻意長得不一樣：
   學名用**無襯線體**（拉丁藥名在襯線體下辨識度差，Illl／rn 那幾組容易看錯），
   中文品名接在同一行後面用 dim 色，商品名與藥理分類落到既有的 .sai-meta。
   .sai-drug 本身不設 padding／min-height／border——那三件由既有的
   .sent-ask-item 提供，這裡只換裡面的字。 */
[data-ui="sentence"] .sai-dname {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px;
  font-family: var(--sentence-sans); font-size: 14px; line-height: 1.45;
}
[data-ui="sentence"] .sai-dname em {
  font-style: normal; font-weight: 600; letter-spacing: .01em;
  color: var(--sentence-fg);
}
[data-ui="sentence"] .sai-dzh {
  font-family: var(--sentence-serif); font-size: 12.5px; letter-spacing: .04em;
  color: var(--sentence-dim);
}
/* 商品名那一行常常很長（「Humalog Mix50 KwikPen, 300 U/3 mL/pen」），
   一律截成一行——它是辨識用的第二層資訊，不是要讀完的內容。
   截斷之後整條寬度就鎖住了，不會把 .sent-ask-list 撐出橫向捲軸。 */
[data-ui="sentence"] .sai-drug .sai-meta {
  display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  max-width: 100%;
}

/* ── §4 一組截斷時的誠實交代 ──────────────────────────────────────────
   「這一組還有 37 筆沒列出來」。用 warn 色（琥珀）而不是 dim：它講的是
   「你看到的不是全部」，那是需要被注意到的事，不是註腳。 */
[data-ui="sentence"] .sent-ask-more {
  font-family: var(--sentence-mono); font-size: 10px; line-height: 1.7;
  color: var(--sentence-warn);
  padding: 5px 0 2px;
}

/* ── §5 藥名索引的狀態行（清單最後一行，四種狀態） ──────────────────
   未載入／載入中／已建好／取不到，四種都靠這一條。載入中那一種左邊多一顆
   閃爍的方點——不用 spinner（本設計全站沒有任何旋轉元件），用同一組
   直角語彙的方塊淡入淡出。 */
[data-ui="sentence"] .sent-ask-note {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .06em;
  line-height: 1.7; color: var(--sentence-dim);
  border-top: 1px solid var(--sentence-line);
  padding: 7px 0 2px; margin-top: 6px;
}
[data-ui="sentence"] .sent-ask-note.is-fail { color: var(--sentence-warn); }
[data-ui="sentence"] .sent-ask-note.is-loading {
  display: flex; align-items: center; gap: 6px; color: var(--sentence-fg2);
}
[data-ui="sentence"] .sent-ask-note.is-loading::before {
  content: ''; flex: 0 0 auto; width: 7px; height: 7px;
  background: var(--sentence-fg);
  animation: sent-ask-pulse 1s steps(2, end) infinite;
}
@keyframes sent-ask-pulse { 0%, 49% { opacity: 1; } 50%, 100% { opacity: .18; } }
/* 使用者關掉動態效果時不閃，改成固定半透明（本檔既有的 prefers-reduced-motion
   處理方式一致：停掉動畫但保留可辨識的靜態外觀）。 */
@media (prefers-reduced-motion: reduce) {
  [data-ui="sentence"] .sent-ask-note.is-loading::before { animation: none; opacity: .5; }
}

/* ── §6 窄螢幕（430×932／390×844）───────────────────────────────────
   實測 430 寬時 .sai-dname 的學名＋中文品名多半塞得下同一行；390 寬遇到
   「50% Insulin Lispro and 50% Insulin Lispro Protamine」這種長學名會折成
   兩行，flex-wrap 已經處理掉。這裡只把兩個字級再收 .5–1px，讓一列維持在
   兩行以內（三行的話 12 筆就佔掉一屏半，捲不完）。 */
@media (max-width: 430px) {
  [data-ui="sentence"] .sai-dname { font-size: 13px; }
  [data-ui="sentence"] .sai-dzh { font-size: 11.5px; }
  [data-ui="sentence"] .sag-zh { font-size: 13px; }
}

/* ═══════════════════════════════════════════════════════════════════════
   §7–§11 六大分類：方磚變成分類入口
   ───────────────────────────────────────────────────────────────────────
   （同一份 patches/sentence-home-4.css 的第二節。上面 §1–§6 是「說整句」的
     藥名索引，這一節是六格方磚的改版，兩者互不相干，分開併也可以。）

   ───────────────────────────────────────────────────────────────────────
   併進 O 段的哪裡、取代哪幾條
   ───────────────────────────────────────────────────────────────────────
   插入點（行號以 83ee667 為準）：接在既有 `.shb-sub`（1425 行）之後、
   「怎麼用？摺疊 ＋ 三軌熱門詞」那段註解與 `.sent-empty-state`（1428 行）之前。

   **要刪掉一條既有規則**（唯一一條）：
     · `[data-ui="sentence"] .shb-say`（1422 行）
       ——那是每格上緣「說『在 腹部急症 …』」那行小字的樣式。JS 已經不再輸出
       `.shb-say` 節點（行為改成不動句子，就不該再預告會填什麼），這條規則
       留著是死規則。§7 的 `.shb-n` 接替它在版面上的位置（同樣是格子裡的
       第四行小字），但語意完全不同：它印的是「這一格底下有幾件」。

   會沾到但**不改**的既有規則：
     · `.sent-hubs`（1406 行，grid 2/3/6 欄）、`.sent-hub`（1414 行，flex 直排
       ＋ 72px 最小高）原樣沿用；`.sent-hub-go` 只是多一個 class，版型完全共用。
     · `.sent-group / .sent-group-head / .sgh-* / .sent-subgroup-name / .ssg-*`
       （1221–1270 行附近）在攤開的清單裡照用，§9 只在它們掛上 `.is-static`
       時把「看起來可以按」的那幾件（hover 底色、左邊界變色、游標）拿掉。
     · `.sent-hit-row / .sent-hit / .sh-*`（候選項一列六層資訊）完全沿用，
       攤開的清單與造句的候選清單長得一模一樣——那是刻意的，同一種東西
       就該長同一個樣子。
   ═══════════════════════════════════════════════════════════════════════ */

/* ── §7 方磚右下角的件數 ────────────────────────────────────────────────
   五格印「18 件 ⌄」（⌄ 暗示按下去會往下展開），藥物資料庫那格印「直接前往 →」
   （→ 暗示會離開這一頁）。兩個記號的方向差異就是這一格會發生哪一種事的預告，
   不必等使用者按下去才知道。 */
[data-ui="sentence"] .shb-n {
  margin-top: 2px;
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .12em;
  color: var(--sentence-dim);
}
/* 直接連過去的那一格是 <a>，要跟另外五顆 <button> 對齊：<a> 沒有 button 的
   預設 text-align/box-sizing，這裡補齊，讓六格在 grid 裡完全等高等寬。 */
[data-ui="sentence"] .sent-hub-go {
  box-sizing: border-box; text-align: left; text-decoration: none;
}
[data-ui="sentence"] .sent-hub-go .shb-n { color: var(--sentence-fg2); }
/* 目前攤開的那一格：六格這時是收起來的，這條只在「再點一次收起」那一瞬間
   （aria-expanded 已翻成 true、DOM 還沒重畫）看得到，留著是為了讓
   aria-expanded 有對應的視覺，不是靠它撐畫面。 */
[data-ui="sentence"] .sent-hub[aria-expanded="true"] {
  background: var(--sentence-bg3);
}

/* ── §8 攤開後的工具列（退路） ────────────────────────────────────────
   兩顆並排：左邊「← 回六大分類」是主要退路，右邊「以『X』為範圍開始造句」
   是補回舊行為的那顆。兩顆都做成 46px 高的實體按鈕（觸控目標下限），
   而且**永遠在清單最上面**——59 件的計分工具捲到底再找返回鍵是不合理的。 */
[data-ui="sentence"] .sent-tile-bar {
  display: flex; flex-wrap: wrap; gap: 8px;
  padding: 2px 0 10px;
}
[data-ui="sentence"] .sent-tile-back,
[data-ui="sentence"] .sent-tile-scope {
  min-height: 46px; box-sizing: border-box; padding: 0 14px;
  display: inline-flex; align-items: center;
  background: var(--sentence-bg); color: var(--sentence-fg);
  border: 1px solid var(--sentence-fg); border-radius: 0;
  font-family: var(--sentence-sans); font-size: 12.5px; letter-spacing: .08em;
  transition: background var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] .sent-tile-back:hover,
[data-ui="sentence"] .sent-tile-scope:hover { background: var(--sentence-shade); }
/* 「開始造句」那顆是次要動作：同樣的尺寸與觸控面積，但邊界降成細線、
   字色降一階，兩顆並排時看得出哪一顆是主要退路。 */
[data-ui="sentence"] .sent-tile-scope {
  border-color: var(--sentence-line2); color: var(--sentence-fg2);
}

/* ── §9 攤開後的標題 ──────────────────────────────────────────────────
   英文眉標在上、中文大字在下、右側件數——跟清單裡的分區標頭（.sgh-*）同一套
   排法，但字級大一級，因為它是這一整區的名字。底下再一行 data-sub 的描述，
   那句話是 index.html 的方磚自己帶的（「決策流程、分類分級、緊急手術分級與
   圍手術期抗栓」），不在這裡另抄。 */
[data-ui="sentence"] .sent-tile-head {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px;
  border-bottom: 2px solid var(--sentence-fg);
  padding: 4px 0 6px;
}
[data-ui="sentence"] .stv-en {
  flex: 0 0 100%;
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .stv-zh {
  font-family: var(--sentence-serif); font-size: 24px; font-weight: 500;
  letter-spacing: .06em; color: var(--sentence-fg);
}
[data-ui="sentence"] .stv-n {
  margin-left: auto;
  font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-dim);
  white-space: nowrap;
}
[data-ui="sentence"] .sent-tile-sub {
  font-family: var(--sentence-sans); font-size: 11.5px; line-height: 1.6;
  color: var(--sentence-fg2);
  padding: 6px 0 2px;
}

/* ── §10 瀏覽模式下的兩層標頭：看起來就不能按 ────────────────────────
   同樣的字級與排版（沿用 .sgh-* / .ssg-*），只把「可以按」的訊號拿掉：
   沒有 hover 底色、群組標頭的左邊界不再變色、游標維持箭頭。
   `all: unset` 之類的重置一律不用——那會連字級一起吃掉；這裡只補 <div>
   跟 <button> 之間會不一樣的那幾個屬性（display、寬度、盒模型）。 */
[data-ui="sentence"] .sent-group-head.is-static,
[data-ui="sentence"] .sent-subgroup-name.is-static {
  display: flex; flex-wrap: wrap; align-items: baseline;
  width: 100%; box-sizing: border-box; text-align: left;
  cursor: default;
}
[data-ui="sentence"] .sent-group-head.is-static { gap: 2px 10px; }
[data-ui="sentence"] .sent-subgroup-name.is-static { gap: 2px 8px; }
[data-ui="sentence"] .sent-group-head.is-static:hover,
[data-ui="sentence"] .sent-subgroup-name.is-static:hover { background: transparent; }
[data-ui="sentence"] .sent-subgroup-name.is-static:hover {
  border-left-color: var(--sentence-line2);
}

/* ── §11 窄螢幕 ───────────────────────────────────────────────────────
   430 以下兩顆退路鍵各佔一整行（並排時「以『急重症處置』為範圍開始造句」
   會被擠成兩行、按鈕高度撐到 70px 以上）。標題字級同時收一級。 */
@media (max-width: 430px) {
  [data-ui="sentence"] .sent-tile-back,
  [data-ui="sentence"] .sent-tile-scope { flex: 1 1 100%; justify-content: center; }
  [data-ui="sentence"] .stv-zh { font-size: 21px; }
}

/* ═══════════════════════════════════════════════════════════════════════
   §12–§15 頁內子目標（查詢深入各分頁）
   ───────────────────────────────────────────────────────────────────────
   （patches/sentence-home-4.css 的第三節。§1–§6 是「說整句」的藥名索引，
     §7–§11 是六格方磚改版，這一節是頁內子目標。三節互不相干，可分開併。）

   ───────────────────────────────────────────────────────────────────────
   併進 O 段的哪裡、取代哪幾條
   ───────────────────────────────────────────────────────────────────────
   兩個插入點（行號以 4db4a08 為準）：

     §12     接在 §1–§6 那一節的尾巴（也就是既有 `.sai-meta`／1107 行之後
             那一整段新增規則的最後面）。它是「說整句」候選項的一部分。
     §13–§15 接在既有 `.sent-hit-more`（1290 行附近，候選項右側那顆「＋」）
             之後、`.sent-empty`（1300 行附近）之前。

   **不取代任何既有規則。** 會沾到但不改的：
     · `.sent-hit-row`（1296 行）是
           display: grid; grid-template-columns: 1fr 46px;
       ——左欄整列連結 `.sent-hit`、右欄那顆 46px 的「＋」`.sent-hit-more`。
       **這一點踩過坑，寫清楚免得再犯**：新加的兩個子節點若不指定 grid 位置，
       會被自動排進第二列，而且 `.sent-subs` 正好落在那個 **46px 寬的右欄**裡，
       整塊子清單被壓成一條直的、一行一個字（實測 390 寬的截圖就是這樣）。
       所以 §13／§14 兩條都必須寫 `grid-column: 1 / -1` 讓它們各自獨占一整列。
       這也是為什麼它們不去搶右欄那 46px：那格是「＋」的，390 寬只塞得下一顆。
     · `.sent-ask-item` / `.sai-dname` / `.sai-dzh` / `.sai-meta`（§1–§3 與
       既有規則）由子目標候選項沿用，§12 只多加「路徑」那一行。
   ═══════════════════════════════════════════════════════════════════════ */

/* ── §12 「說整句」候選項的麵包屑 ────────────────────────────────────
   「抗生素指引 › 依部位 › 腹腔內感染 IAI」。路徑那一段用 mono 小字＋dim 色，
   末端名字才是主角（.sai-dname 的 em）。整行允許折行——路徑最長的一種是
   「抗生素指引 › 依病原菌 › Gram 陰性桿菌」，390 寬會折成兩行，不截斷，
   因為路徑被截掉的話這一行就失去存在的意義了。 */
[data-ui="sentence"] .sai-path {
  display: block;
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .08em;
  line-height: 1.5; color: var(--sentence-dim);
}
[data-ui="sentence"] .sai-sep { opacity: .6; }

/* ── §13 候選項那一列的「頁內還有一層」 ──────────────────────────────
   落在整列底下自成一行、靠左，與 .sh-desc 的縮排對齊。它是**次要**動作
   （主要動作是點整列進那一頁），所以用細框小字，不用實心按鈕。
   min-height 34px 而不是 44：它與整列的連結區（.sent-hit，本身已 ≥46px）
   在同一列內，整列的可觸控面積是足夠的；把它也撐成 46 會讓每一列多長一截。
   → 這一條是刻意偏離 44px 下限的地方，理由如上，不是漏掉。 */
[data-ui="sentence"] .sent-hit-subs {
  grid-column: 1 / -1;                 /* 見本節檔頭：不寫會被塞進右欄那 46px */
  justify-self: start;
  display: inline-flex; align-items: center;
  min-height: 34px; box-sizing: border-box; padding: 0 10px;
  margin: 2px 0 6px 26px;
  background: transparent; color: var(--sentence-fg2);
  border: 1px solid var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .1em;
  transition: background var(--sentence-fast) var(--sentence-ease),
              border-color var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] .sent-hit-subs:hover {
  background: var(--sentence-shade); border-color: var(--sentence-fg);
}
[data-ui="sentence"] .sent-hit-subs.open {
  border-color: var(--sentence-fg); color: var(--sentence-fg);
}
[data-ui="sentence"] .shs-chev { opacity: .7; }

/* ── §14 攤開後的頁內項目 ────────────────────────────────────────────
   縮排 26px（對齊上面那顆按鈕），左邊一條實線把「這是那一列的下一層」畫出來。
   每一項自己是 46px 的觸控目標——這些是真的會離開本頁的連結，不能縮。 */
[data-ui="sentence"] .sent-subs {
  grid-column: 1 / -1;                 /* 同上——這一條沒寫，整塊子清單會被壓成一行一個字 */
  min-width: 0;
  margin: 0 0 8px 26px;
  border-left: 2px solid var(--sentence-line2);
  padding-left: 10px;
}
[data-ui="sentence"] .sent-sub {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px;
  min-height: 46px; box-sizing: border-box; padding: 6px 8px;
  border-bottom: 1px solid var(--sentence-line);
  text-decoration: none; color: var(--sentence-fg);
  transition: background var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] .sent-sub:last-child { border-bottom: 0; }
[data-ui="sentence"] .sent-sub:hover { background: var(--sentence-shade); }
/* min-width:0 ＋ overflow-wrap:anywhere 兩件缺一不可，實測 430 寬會橫向溢出 62px：
   flex 項目的 min-width 預設是 auto（＝ min-content），所以
   「Post-transplant / Immunocompromised」這種長英文的盒子**縮不到**該行剩下的
   40px，就直接凸出去。min-width:0 解除那道下限，overflow-wrap:anywhere 讓
   min-content 本身也能被拆開（單字比剩餘寬度還長時仍然有斷點）。
   兩條都加上去之後 430×932 與 390×844 的 overflow_x 都回到 0。 */
[data-ui="sentence"] .ssb-name {
  min-width: 0; overflow-wrap: anywhere;
  font-family: var(--sentence-sans); font-size: 13px; font-weight: 600;
  letter-spacing: .04em;
}
[data-ui="sentence"] .ssb-en {
  min-width: 0; overflow-wrap: anywhere;
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
}
[data-ui="sentence"] .ssb-meta {
  flex: 0 0 100%;
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%;
}

/* ── §15 攤開區的狀態行（載入中／取不到／還有 N 個沒列） ────────────
   沿用 §5 那三種狀態的語彙（dim／warn／閃爍方點），只是縮到子清單裡。 */
[data-ui="sentence"] .sent-subs-note {
  font-family: var(--sentence-mono); font-size: 10px; line-height: 1.7;
  color: var(--sentence-warn); padding: 6px 8px 2px;
}
[data-ui="sentence"] .sent-subs-note.is-fail { color: var(--sentence-warn); }
[data-ui="sentence"] .sent-subs-note.is-loading {
  display: flex; align-items: center; gap: 6px; color: var(--sentence-fg2);
}
[data-ui="sentence"] .sent-subs-note.is-loading::before {
  content: ''; flex: 0 0 auto; width: 7px; height: 7px;
  background: var(--sentence-fg);
  animation: sent-ask-pulse 1s steps(2, end) infinite;   /* §5 already defines it */
}
@media (prefers-reduced-motion: reduce) {
  [data-ui="sentence"] .sent-subs-note.is-loading::before { animation: none; opacity: .5; }
}

@media (max-width: 430px) {
  [data-ui="sentence"] .sent-hit-subs { margin-left: 0; }
  [data-ui="sentence"] .sent-subs { margin-left: 0; }
}

/* 一行極小註腳（原本壓在句子上方那整段灰色免責文字的替代品） */
[data-ui="sentence"] .sent-foot-note {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .06em;
  color: var(--sentence-dim); padding: 14px 0 0;
}
[data-ui="sentence"] .sent-panel {
  position: relative;
  background: var(--sentence-bg2);
  border: 1px solid var(--sentence-line2); border-top: 2px solid var(--sentence-fg);
  border-radius: 0; padding: 10px 12px; margin-bottom: 14px;
}
[data-ui="sentence"] .sent-panel::before {
  content: ""; position: absolute; top: -2px; left: var(--sent-caret, 40px);
  width: 0; height: 0; margin-left: -7px;
  border-left: 7px solid transparent; border-right: 7px solid transparent;
  border-top: 7px solid var(--sentence-fg);
}
[data-ui="sentence"] .sent-panel-head {
  display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
}
[data-ui="sentence"] .sent-panel-title {
  font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--sentence-dim); white-space: nowrap;
}
/* 過濾框（原型 #trfilter）：主體有 57 個候選詞，沒有它就只能一路捲。 */
[data-ui="sentence"] .sent-panel-filter {
  flex: 1 1 auto; min-width: 0; box-sizing: border-box;
  min-height: 45px; padding: 0 10px;
  background: var(--sentence-bg); color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-sans); font-size: 13px;
}
[data-ui="sentence"] .sent-panel-filter:focus {
  outline: 2px solid var(--sentence-fg); outline-offset: -2px;
}

[data-ui="sentence"] .sent-panel-filter {
  font-size: 16px;
}
[data-ui="sentence"] .sent-panel { scroll-margin-top: 12px; }
[data-ui="sentence"] .sent-panel-body { min-height: 96px; }
[data-ui="sentence"] .sent-panel-close {
  flex: 0 0 auto;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-mono); font-size: 10.5px; color: var(--sentence-fg);
  padding: 0 10px;
}
[data-ui="sentence"] .sent-panel-close:hover { background: var(--sentence-shade); }
/* align-content 一定要寫死 flex-start，不能留 normal。
   flex-wrap:wrap 的容器，align-content 預設等同 stretch：**行**會被拉開去填滿容器。
   上面那條給了 min-height:96px（保留高度、避免面板開合時版面跳動），於是候選詞只有
   一行時，那一行就被拉成 96px 高，每顆詞塊跟著變成 96px——詞塊自己的 min-height
   是 45px，被拉高的是「行」不是詞塊，所以單看詞塊的規則怎麼查都正常。
   候選詞多到兩行以上時總高超過 96px，不再 stretch，看起來又正常了——這就是使用者
   回報的「有時候選項高度太高（有時候正常）」。
   實測（1440px、句子收斂到只剩 8 個主體候選）：修前每顆 96px，修後 45px。 */
[data-ui="sentence"] .sent-panel-body {
  display: flex; flex-wrap: wrap; align-content: flex-start; gap: 6px;
  max-height: 46vh; overflow-y: auto;
}
[data-ui="sentence"] .sent-tok {
  font-family: var(--sentence-sans); font-size: 12.5px; color: var(--sentence-fg);
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  padding: 0 6px 0 10px; display: inline-flex; align-items: center; gap: 6px; min-height: 40px;
}
[data-ui="sentence"] .sent-tok:hover { border-color: var(--sentence-fg); }
[data-ui="sentence"] .sent-tok.cur { background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); border-color: var(--sentence-inv-bg); }

[data-ui="sentence"] .sent-tok.sel {
  border-color: var(--sentence-fg); border-width: 2px;
  outline: 2px solid var(--sentence-fg); outline-offset: 2px;
}
[data-ui="sentence"] .sent-tok.cur.sel {
  outline-color: var(--sentence-fg);
}
/* 鍵盤游標不是滑鼠焦點：面板開著時焦點一直在過濾框上，候選詞本身不會拿到
   :focus-visible，所以這一圈描邊是唯一的位置指示，必須夠明顯。
   prefers-reduced-motion 下不需要特別處理（這裡沒有動畫）。 */
@media (prefers-contrast: more) {
  [data-ui="sentence"] .sent-tok.sel { outline-width: 3px; }
}
[data-ui="sentence"] .sent-tok i {
  font-style: normal; font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 1px 5px;
}
[data-ui="sentence"] .sent-tok.cur i { color: inherit; border-color: var(--sentence-inv-fg); opacity: .8; }
[data-ui="sentence"] .sent-tok-empty { font-family: var(--sentence-mono); font-size: 11.5px; color: var(--sentence-dim); }

[data-ui="sentence"] .sent-tok-empty {
  flex: 1 1 100%; width: 100%; box-sizing: border-box;
  padding: 10px 0 10px 10px; margin: 2px 0;
  line-height: 1.7;
  border-left: 3px solid var(--sentence-line2);
}

/* ── O-H. 最近搜尋（兩個查詢欄各一份，js/sentence-nav.js 的 histSayHTML()／
 *         panelHistHTML()）─────────────────────────────────────────────────
 * 兩處長得刻意**不一樣**，因為它們記的東西不一樣（見 js 檔那一大段）：
 *   · 三格造句的那一排記的是**詞**，所以直接沿用 .sent-tok 的詞塊外觀——
 *     它與底下全清單裡的同一個詞按下去是同一件事，長成兩種樣子才是騙人。
 *     只加一顆 ⌕ 前綴記號（生成內容，不是文字節點，見本檔開頭鐵律 1）標出
 *     「這一顆是從歷史來的」。
 *   · 說整句的那一排記的是**一句查詢**，不是詞表裡的東西，所以自己一套詞塊
 *     （.sent-hist），並且多一顆 × 可以單筆刪掉——那一欄是自由輸入，打錯的字
 *     也會被記下來。
 * 兩處的「清除」都是 <button>，會被 M 段的通用安全網撐成 45×45（本設計的觸控
 * 目標下限）；標頭列因此比純文字的標頭高一截，這是預期內的，不另設例外——
 * 它們是真的要按的控制項，不是徽章。 */

/* (1) 候選詞面板裡的分區標題：「最近搜尋」／「全部主體 57 個」。
   flex:1 1 100% 讓它在 .sent-panel-body（flex-wrap 的詞塊容器）裡自成一列，
   作法與上面 .sent-tok-empty 那一條相同。 */
[data-ui="sentence"] .sent-tok-sec {
  flex: 1 1 100%; width: 100%; box-sizing: border-box;
  display: flex; align-items: center; gap: 8px;
  border-bottom: 1px solid var(--sentence-line);
  padding: 2px 0; margin: 2px 0 0;
}
[data-ui="sentence"] .sent-tok-sec:first-child { margin-top: 0; }
[data-ui="sentence"] .sts-t {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .14em;
  color: var(--sentence-dim); white-space: nowrap;
}
[data-ui="sentence"] .sts-n {
  margin-left: auto;
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
  white-space: nowrap;
}
[data-ui="sentence"] button.sts-clear {
  margin-left: auto;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .1em;
  color: var(--sentence-dim); padding: 0 10px;
}
[data-ui="sentence"] button.sts-clear:hover {
  background: var(--sentence-shade); border-color: var(--sentence-fg); color: var(--sentence-fg);
}
/* 從歷史來的那幾顆詞塊：外觀與全清單那份一模一樣，只多一顆 ⌕ 記號。
   ⌕ 與說整句那一排的記號同一顆，兩處讀起來因此是同一件事。 */
[data-ui="sentence"] .sent-tok.is-hist::before {
  content: "⌕";
  font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-dim);
}
[data-ui="sentence"] .sent-tok.is-hist.cur::before { color: inherit; opacity: .8; }

/* (2) 說整句面板：標頭沿用候選清單的 .sent-ask-gh（sticky、上緣英文眉標），
   這裡只把「清除」推到最右邊，位置與其他組別的「N 筆」（.sag-n）同一處。 */
[data-ui="sentence"] button.sent-hist-clear {
  margin-left: auto;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .1em;
  color: var(--sentence-dim); padding: 0 10px;
}
[data-ui="sentence"] button.sent-hist-clear:hover {
  background: var(--sentence-shade); border-color: var(--sentence-fg); color: var(--sentence-fg);
}
[data-ui="sentence"] .sent-hist-row {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding: 6px 0 2px;
}
/* 一筆＝詞塊本體 ＋ ×，兩顆按鈕併在同一個框裡。結構與句子列的 .sent-chip／
   .sc-w／.sc-x 同一套（那裡也是「一個詞塊 ＋ 一顆退掉它的 ×」），
   只是配色反過來：句子列的詞塊是選定的狀態（反白），這裡是可選的候選。 */
[data-ui="sentence"] .sent-hist {
  display: inline-flex; align-items: stretch; max-width: 100%;
  background: var(--sentence-bg);
  border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .sent-hist:hover { border-color: var(--sentence-fg); }
/* 鍵盤游標（↑ ↓）。焦點一直留在輸入框上，這一圈描邊是唯一的位置指示，
   規格照抄候選詞面板的 .sent-tok.sel。 */
[data-ui="sentence"] .sent-hist.sel {
  border-color: var(--sentence-fg);
  outline: 2px solid var(--sentence-fg); outline-offset: 2px;
}
@media (prefers-contrast: more) {
  [data-ui="sentence"] .sent-hist.sel { outline-width: 3px; }
}
[data-ui="sentence"] button.sh-q {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 0 4px 0 10px; min-width: 0;
  background: transparent; border: 0; border-radius: 0; color: var(--sentence-fg);
  font-family: var(--sentence-sans); font-size: 13px; letter-spacing: .02em;
  text-align: left; white-space: normal; overflow-wrap: anywhere;
}
[data-ui="sentence"] button.sh-q::before {
  content: "⌕"; flex: 0 0 auto;
  font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-dim);
}
[data-ui="sentence"] button.sh-x {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0; background: transparent; border: 0; border-radius: 0;
  color: var(--sentence-dim); font-family: var(--sentence-mono); font-size: 14px;
}
[data-ui="sentence"] button.sh-x:hover {
  background: rgba(128, 128, 128, .22); color: var(--sentence-fg);
}

/* align-items 用 baseline 不用 center：這一行混了兩種字級（「136」是 14px、
   旁邊的說明是 11px），center 是各自把「盒子」置中，字級不同盒高就不同，
   兩段文字的基線因此差開——使用者實機截圖圈出來的就是這個。實測 center 下
   .sent-point-n top=335、.sent-point-hint top=338，差 3px。baseline 對的是
   文字本身而不是盒子，兩段字才會坐在同一條線上。 */
[data-ui="sentence"] .sent-point {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px;
  font-family: var(--sentence-mono); font-size: 11px; letter-spacing: .1em;
  color: var(--sentence-dim);
  border-top: 1px solid var(--sentence-line);
  padding: 9px 0 8px; margin-bottom: 4px;
}
[data-ui="sentence"] .sent-point-n b { color: var(--sentence-fg); font-weight: 700; font-size: 14px; }
[data-ui="sentence"] .sent-point-hint { letter-spacing: .04em; }
[data-ui="sentence"] .sent-clear {
  margin-left: auto;
  min-height: 44px; padding: 0 12px;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-mono); font-size: 10.5px; color: var(--sentence-fg);
}
[data-ui="sentence"] .sent-clear:hover { background: var(--sentence-shade); }
[data-ui="sentence"] .sent-relax {
  flex-basis: 100%; font-family: var(--sentence-sans); font-size: 11.5px; line-height: 1.6;
  color: var(--sentence-warn); border-left: 3px solid var(--sentence-warn); padding-left: 8px;
}
[data-ui="sentence"] .sent-relax-empty { color: var(--sentence-hot); border-left-color: var(--sentence-hot); }
[data-ui="sentence"] .sent-empty { font-family: var(--sentence-sans); font-size: 12.5px; color: var(--sentence-dim); padding: 10px 0; }

[data-ui="sentence"] .sent-group { margin-bottom: 16px; }
/* ---- 分區標頭（取代併入前的 .sent-group-head / .sgh-zh / .sgh-en）---- */
[data-ui="sentence"] .sent-group-head {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px;
  width: 100%; box-sizing: border-box; text-align: left;
  background: transparent; border: 0; border-bottom: 2px solid var(--sentence-fg);
  border-radius: 0; padding: 6px 0 5px; margin-bottom: 6px;
  transition: background var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] .sent-group-head:hover { background: var(--sentence-shade); }
/* 英文當眉標：整條先換行，中文大字自己一行（原型 .sec-h 的 .sh-eye 在上、
   .sh-zh 在下）。flex-basis:100% 是換行的手段，不是版面寬度。 */
[data-ui="sentence"] .sgh-en {
  flex: 0 0 100%;
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .sgh-zh {
  font-family: var(--sentence-serif); font-size: 20px; font-weight: 500;
  letter-spacing: .06em; color: var(--sentence-fg);
}
[data-ui="sentence"] .sgh-n {
  margin-left: auto;
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
  white-space: nowrap;
}

/* ---- 群組標頭（取代併入前的 .sent-subgroup-name）----
 * 這一顆按下去是**平行換題**：只把句子的「狀況」換成這個群組最具代表性的詞，
 * 其他詞塊不動。它是可點的，所以不能再是一行灰色小標——給它一條左邊界線與
 * 一格 hover 底色，讓「可以按」看得出來（原型 .grp-h 用的是同一組手法）。 */
[data-ui="sentence"] .sent-subgroup-name {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px;
  width: 100%; box-sizing: border-box; text-align: left;
  background: transparent; border: 0; border-left: 3px solid var(--sentence-line2);
  border-radius: 0; padding: 4px 8px; margin: 6px 0 3px;
  transition: background var(--sentence-fast) var(--sentence-ease),
              border-color var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] .sent-subgroup-name:hover {
  background: var(--sentence-shade); border-left-color: var(--sentence-fg);
}
[data-ui="sentence"] .ssg-zh {
  font-family: var(--sentence-sans); font-size: 12.5px; font-weight: 700;
  letter-spacing: .09em; color: var(--sentence-fg);
}
[data-ui="sentence"] .ssg-en {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .08em;
  color: var(--sentence-dim);
}
[data-ui="sentence"] .ssg-n {
  margin-left: auto;
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
  white-space: nowrap;
}

/* ---- 候選項一列（取代併入前的 .sent-hit / :hover / .sh-name / .sh-en）----
 * 併入前 .sent-hit 是 inline-flex 藥丸，一列擠好幾顆；原型是**整條寬的一列**
 * （grid 1fr 46px），因為它要放得下一句 desc。這裡照原型改成整條寬。 */
[data-ui="sentence"] .sent-hit-row {
  display: grid; grid-template-columns: 1fr 46px;
  border-bottom: 1px dotted var(--sentence-line);
  max-width: 100%;
}
[data-ui="sentence"] .sent-hit {
  display: block; width: 100%; box-sizing: border-box; min-width: 0;
  min-height: 46px; padding: 7px 8px 7px 0; margin: 0;
  text-align: left; text-decoration: none;
  background: transparent; border: 0; border-radius: 0;
  transition: background var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] .sent-hit:hover { background: var(--sentence-shade); border-color: transparent; }
/* 2026-08-13 由 flex 改回**行內流**。使用者實機指出兩件事，其實是同一個原因：
   標題與前面的「計分／流程」沒對齊、而且長名稱整塊掉到下一行。
   原本 `display:flex; flex-wrap:wrap` 讓 .sh-name 成為一個 flex item——
   擠不下時它是**整塊**換行（「敗血性休克 Sepsis & Septic Shock Pathway」因此
   自己占一整行，標籤獨留上一行），而不是像一般文字那樣在行末斷字。
   改成行內流之後：標籤與名稱是同一段文字、基線自動對齊，名稱接在標籤後面，
   太長就自然折行，不會刻意另起一行。 */
[data-ui="sentence"] .sh-top {
  display: block; line-height: 1.55;
}
/* 型別：只用文字標籤，不單靠顏色（原型 .kind-badge / .kind-label）。
   ⚠ 2026-08-17 拿掉形狀記號（.sh-kind）—— 暗色主題下看不見，而且會讓每一列
   多一個縮排的列點欄。型別的可辨識性由這個文字標籤承擔，色弱與黑白列印皆可讀。 */
[data-ui="sentence"] .sh-kind-l {
  display: inline-block;
  font-family: var(--sentence-mono); font-size: 9px; letter-spacing: .1em;
  border: 1px solid var(--sentence-line2); padding: 1px 5px; white-space: nowrap;
  margin-right: 6px;
}
[data-ui="sentence"] .sh-kind-l.k-tool    { color: var(--sentence-fg2); }
/* 2026-08-18 新增第三個型別「指引」（整理型／多分頁的參考頁，見 js/sentence-nav.js
   的 KIND_META）。用墨綠而不是再借一個既有色：硃砂已經是「流程」、琥珀是「癌別」，
   三個標籤常常同屏出現，共用顏色等於少一層辨識。 */
[data-ui="sentence"] .sh-kind-l.k-guide   { color: var(--sentence-calm); }
[data-ui="sentence"] .sh-kind-l.k-pathway { color: var(--sentence-hot); }
[data-ui="sentence"] .sh-kind-l.k-mega    { color: var(--sentence-fg); font-weight: 700; }
[data-ui="sentence"] .sh-kind-l.k-mode    { color: var(--sentence-dim); }
[data-ui="sentence"] .sh-kind-l.k-cancer { color: var(--sentence-warn); }
[data-ui="sentence"] .sh-name {
  font-family: var(--sentence-serif); font-size: 15px; letter-spacing: .05em;
  color: var(--sentence-fg);
}
/* 英文名同樣接在中文名後面（原本靠 flex 的 gap:8px，改行內流之後自己留左邊距） */
[data-ui="sentence"] .sh-en {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .04em;
  color: var(--sentence-dim); margin-left: 6px;
}
/* 簡介：兩行截斷。原型 css/proof.css .row-desc 逐字同一組值
   （11.5px / 1.5 / -webkit-line-clamp:2），只有顏色換成 --sentence-fg2。 */
[data-ui="sentence"] .sh-desc {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
  overflow: hidden;
  font-family: var(--sentence-sans); font-size: 11.5px; line-height: 1.5;
  color: var(--sentence-fg2); margin-top: 2px;
  overflow-wrap: anywhere;
}
[data-ui="sentence"] .sent-hit-row.open .sh-desc {
  -webkit-line-clamp: unset; overflow: visible;
}
[data-ui="sentence"] .sent-hit-more {
  min-width: 46px; min-height: 46px; padding: 0;
  background: transparent; border: 0; border-left: 1px dotted var(--sentence-line);
  border-radius: 0;
  font-family: var(--sentence-mono); font-size: 15px; color: var(--sentence-dim);
}
[data-ui="sentence"] .sent-hit-more:hover { background: var(--sentence-shade); color: var(--sentence-fg); }

/* ---- 目標頁：#sentTrail（插在 .app-header 之後，文件流，內容被推開不被蓋住） ---- */
[data-ui="sentence"] .sent-trail {
  background: transparent; border: 0;
  border-bottom: 1px solid var(--sentence-line);
  padding: 6px 0 8px; margin: 10px 0 14px;
  max-width: 100%; box-sizing: border-box; overflow-wrap: break-word;
}
[data-ui="sentence"] .st-rail { display: flex; align-items: flex-start; gap: 10px; }
[data-ui="sentence"] .sent-fold {
  flex: 1 1 auto; min-width: 0;
  display: flex; flex-direction: column; align-items: stretch;
  min-height: 46px; padding: 4px 2px; gap: 3px;
  text-align: left; color: var(--sentence-fg);
  background: transparent; border: 0; border-radius: 0;
  border-bottom: 1.5px dashed var(--sentence-line2);
}
[data-ui="sentence"] .sent-fold .sf-line1 {
  font-family: var(--sentence-serif); font-size: clamp(11.5px, 3.4vw, 13.5px);
  letter-spacing: .03em; color: var(--sentence-dim);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
[data-ui="sentence"] .sent-fold .sf-line1:empty { display: none; }
[data-ui="sentence"] .sent-fold .sf-line2 {
  display: flex; align-items: center; gap: 8px; width: 100%; min-width: 0;
}
[data-ui="sentence"] .sent-fold .sf-arrow { flex: 0 0 auto; color: var(--sentence-dim); }
[data-ui="sentence"] .sent-fold .sf-tool {
  flex: 1 1 auto; min-width: 0;
  font-family: var(--sentence-serif); font-size: clamp(15px, 4.6vw, 18px);
  font-weight: 600; letter-spacing: .03em;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
[data-ui="sentence"] .sent-fold .sf-chev {
  flex: 0 0 auto;
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .08em;
  color: var(--sentence-dim);
}
[data-ui="sentence"] .st-full { padding-top: 8px; }
/* 誠實標示：內容沒有變少，只是壓成一行極小字，不再比句子本身還重 */
[data-ui="sentence"] .st-honest {
  font-family: var(--sentence-mono); font-size: 10px; line-height: 1.6;
  letter-spacing: .04em; color: var(--sentence-dim);
  margin: 0; padding: 2px 0 0; border: 0;
}
/* 軌跡裡的指向行不再自己畫上緣線——上面那條虛線（.sent-fold 的 border-bottom）
   已經是分隔，兩條線疊在一起只是噪音 */
[data-ui="sentence"] .sent-trail .sent-point {
  border-top: 0; padding: 7px 0 2px; margin-bottom: 0;
}
[data-ui="sentence"] .sent-trail.asking .st-rail .sent-fold,
[data-ui="sentence"] .sent-trail.asking .st-full,
[data-ui="sentence"] .sent-trail.asking .sent-point,
[data-ui="sentence"] .sent-trail.asking .st-honest { display: none; }

/* ==========================================================================
 * （本段開頭的 `/*` 原本漏掉了，於是這一整段說明被當成 CSS 解析，
 *   連同它後面第一條規則 `.sent-trail .sent-row` 一起被解析器丟掉。）
 * 插在 `[data-ui="sentence"] .sent-trail.asking …
 *         { display: none; }` 那四條選擇器結束的地方，約第 1804 行）。
 * 取代誰：一條都沒有取代。全部是新增規則，既有規則一條都不必改。
 * 已一併刪除：`.st-line`、`.st-chip`、`.st-chip-tool` 三條。內頁軌跡的唯讀詞塊
 *         （js/sentence-nav.js 的 trailChipsHTML()）在本輪整支移除、改用首頁同一套
 *         .sent-row／.sent-chip 之後，這三條沒有任何節點會用到（合併時以
 *         querySelectorAll 逐條確認命中 0），屬死規則，故直接清掉不留。
 *
 * 由 js/sentence-nav.js 這一輪的兩件工作產生，兩節分開寫：
 *   §1 13 個分頁式頁面的頁內分頁（第二波索引）
 *   §2 107 個內頁的句子軌跡改成可編輯
 * ========================================================================== */


/* ============================================================================
 * §1 13 個分頁式頁面的頁內分頁 —— 這一節**沒有任何規則**
 * ----------------------------------------------------------------------------
 * 記錄在這裡是為了讓下一個人不必再查一次：那 68 個分頁候選項走的是「說整句」
 * 候選清單既有的版型，一個新 class 都沒有加——
 *   · 群組標頭用 .sent-ask-gh / .sag-zh / .sag-en / .sag-n（與抗生素、處方集、
 *     分級系統那三組同一套，SAY_GROUP 只多一筆資料、不多一個選擇器）；
 *   · 每一列用 .sent-ask-item.sai-drug + .sai-path / .sai-dname / .sai-dzh /
 *     .sai-meta（麵包屑「肺栓塞 › 危險分層 Risk」就是 .sai-path 那一層）；
 *   · 候選清單裡攤開的頁內清單用 .sent-subs / .sent-sub / .ssb-name / .ssb-en /
 *     .ssb-meta（與分級系統那批共用）。
 * 新增的 data-tabhash 屬性只給 JS 判斷用（同一份文件時要補一次重載），
 * 不參與樣式，所以不需要選擇器。
 * ========================================================================== */


/* ============================================================================
 * §2 內頁軌跡：展開之後那一列變成可編輯
 * ----------------------------------------------------------------------------
 * 展開區裡放的就是首頁同名的 #sentRow 與 #sentPanel，所以 .sent-row /
 * .sent-chip / .sent-slot / .sent-panel* 的樣式**全部沿用既有那一份**
 * （它們本來就只掛在 [data-ui="sentence"] 底下，沒有被 #sentHome 限定）。
 * 這一節只補三件在內頁才成立的差異。
 * ========================================================================== */

/* (1) 句子列在內頁要比在首頁小一號。
   首頁的 .sent-row 是全站唯一的大字（clamp(18px, 4.4vw, 28px)）——那一頁的主角
   就是句子。內頁的主角是頁面自己的 h1（實測 430×932 h1＝22px、1440×900 h1＝32px），
   軌跡不該壓過它：不改的話 1440 寬時軌跡裡的句子是 28px、而同一條軌跡上方的
   工具名（.sf-tool）只有 18px，同一塊 chrome 裡兩種字級互相打架。
   改成 clamp(15px, 3.9vw, 19px)：430 寬量到 16.8px、1440 寬量到 19px，
   兩邊都小於該處的 h1，也和 .sf-tool（18px）同一個量級。
   .sc-x（詞塊上那顆 ×）與 .sent-lx（連接詞）都是 em 相對值，會跟著一起縮。 */
[data-ui="sentence"] .sent-trail .sent-row {
  font-size: clamp(15px, 3.9vw, 19px);
  gap: 3px 5px;
}

/* (2) 候選詞面板在內頁的下緣留白。
   首頁的 .sent-panel 底下接的是「指向行 → 六格 → 候選清單」一長串，14px 才夠
   把面板和清單分開；內頁面板底下只有一行極小字（.st-edit-note）與指向行，
   14px 會讓那兩行看起來像掉隊的孤兒。 */
[data-ui="sentence"] .sent-trail .sent-panel {
  margin-bottom: 8px;
}

/* (3) 展開區底下那一行說明。
   字級與顏色**照抄同一條軌跡上的 .st-honest**（mono 9.5px / --sentence-dim），
   兩行誠實標示長得一樣才不會有一行看起來比較重要。 */
[data-ui="sentence"] .st-edit-note {
  font-family: var(--sentence-mono);
  font-size: 10px;
  line-height: 1.6;
  letter-spacing: .04em;
  color: var(--sentence-dim);
  padding: 2px 0 0;
}


/* ---- 值班常用句六格（空句子＝主選單） ---- */
[data-ui="sentence"] .sent-hubs-h {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .24em;
  text-transform: uppercase; color: var(--sentence-dim); padding: 12px 0 6px;
}
[data-ui="sentence"] .sent-hubs {
  display: grid; gap: 1px;
  background: var(--sentence-line);
  border: 1px solid var(--sentence-line);
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (min-width: 700px)  { [data-ui="sentence"] .sent-hubs { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1050px) { [data-ui="sentence"] .sent-hubs { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
[data-ui="sentence"] .sent-hub {
  background: var(--sentence-bg);
  min-height: 72px; padding: 9px 10px;
  /* justify-content 用 flex-start 不用 center：六格的描述文字行數不一樣
     （「急重症處置」三行、「癌症治療」兩行），置中會讓同一列兩張卡的標題
     一高一低。實測 center 下同一列的標題頂端差 7px（急重症處置 9px vs
     癌症治療 16px），使用者實機截圖圈出來的就是這個。改成從頂端排起，
     所有卡片的標題一律對齊。 */
  display: flex; flex-direction: column; justify-content: flex-start; gap: 2px;
  text-align: left; border: 0; border-radius: 0; color: var(--sentence-fg);
  transition: background var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] .sent-hub:hover { background: var(--sentence-bg2); }
[data-ui="sentence"] .shb-zh   { font-family: var(--sentence-serif); font-size: 17px; letter-spacing: .08em; }
[data-ui="sentence"] .shb-en   { font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .06em; color: var(--sentence-dim); }
[data-ui="sentence"] .shb-sub  { font-family: var(--sentence-sans); font-size: 10.5px; color: var(--sentence-fg2); line-height: 1.4; }

/* ---- 三軌熱門詞 ---- */
/* 原本這裡還有一個「怎麼用？」摺疊（.sent-howto／.sent-howto-body），
   2026-08-16 依使用者指定連同 js/sentence-nav.js mainMenuHTML() 內的 markup
   一起刪除——主選單第一屏留給六大分類與熱門詞。 */
[data-ui="sentence"] .sent-empty-state { padding: 6px 0 8px; }
[data-ui="sentence"] .sent-es-slot {
  border-top: 1px solid var(--sentence-line); margin-top: 16px; padding-top: 8px;
}
[data-ui="sentence"] .sent-es-h {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .18em; text-transform: uppercase;
  color: var(--sentence-dim); padding-bottom: 6px;
}
[data-ui="sentence"] .sent-es-words { display: flex; flex-wrap: wrap; gap: 6px; }

/* ---- 畫面下緣固定列 ---- */
[data-ui="sentence"] .sent-mbar { display: none; }
@media (max-width: 680px) {
  [data-ui="sentence"] .sent-mbar {
    display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
    background: var(--sentence-line); gap: 1px;
    border-top: 1px solid var(--sentence-line);
    padding-bottom: env(safe-area-inset-bottom, 0);
  }
  [data-ui="sentence"] .smb-btn {
    flex: 1 1 33.33%; min-height: 50px;
    background: var(--sentence-bg); color: var(--sentence-fg);
    border: 0; border-radius: 0;
    display: flex; align-items: center; justify-content: center; gap: 6px;
    font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .06em;
  }
  [data-ui="sentence"] .smb-btn:active { background: var(--sentence-shade); }
  [data-ui="sentence"] .smb-btn[disabled] { opacity: .4; }
  [data-ui="sentence"] .smb-btn[disabled]:active { background: var(--sentence-bg); }
  [data-ui="sentence"] body:has(#sentBar) { padding-bottom: 72px; }
  /* 「回到最上面」的箭頭（css/styles.css 的 .to-top，右下角 fixed）原本 bottom:18px，
     正好壓在固定列第三顆「清空句子」上面。固定列高 51px（50 + 上框線）另加
     safe-area，所以把箭頭抬到 51 + 12 = 63px 再加同一段 safe-area。
     只在真的有固定列時抬——沒有 #sentBar 的頁面維持原位。 */
  [data-ui="sentence"] body:has(#sentBar) .to-top {
    bottom: calc(63px + env(safe-area-inset-bottom, 0px));
  }
}


@media (prefers-color-scheme: dark) {
  [data-ui="sentence"] .sh-kind-l { border-color: currentColor; opacity: .92; }
  [data-ui="sentence"] .sent-hit-row { border-bottom-color: var(--sentence-line); }
}

/* ================================================================
 * P. 癌症頁（tools/cancer.html）—— js/cancer-staging.js 與各
 *    js/*-pathway.js（30 個癌別共用同一套 markup 慣例）專屬元件
 * ================================================================
 * 這一頁的內容由 js/cancer-staging.js 動態產生，用的是它自己的一套
 * class（.onc-*／.tx-*／.rx-*／.node-item／.smx 表格…），A–N 段打的是
 * 全站共用的 markup 慣例，打不到這裡——這一段才是這一頁真正吃到樣式的地方。
 *
 * 隱形文字根因（使用者實機回報）：cancer-staging.css 的 .rx-h／.rx／.drug／
 * .cb／.cbx-h／.rx-def／.rx-warn／.rx-line／.rx-panel-h／.pt1-flow .pt1-node
 * 這些「建議處置色塊內的療程徽章」樣式，原本是為正式版 .flow-rec 的**實色
 * 深底**（rec-elective 等變體 background:#123028 這類）設計的半透明淺色／
 * 白字。但本設計的 .flow-rec 不分 rec-urgent/elective/nonop/blue，一律是
 * --sentence-bg2 骨白底（見 I 段）——那組白字／半透明白底疊在骨白上等於
 * 白紙畫白字。用 getComputedStyle 量過字色 vs 沿父鏈找到的實際背景色，
 * 確認 .rx-h／.rx 對比 <1.5（幾乎隱形，胃癌 M1 系統性治療段：FOLFOX／CAPOX／
 * FP／HDFL／化療骨架 BACKBONE／一線 1ST LINE…），P7 修掉；其餘同一系統的
 * 徽章（.drug／.cb／.rx-def／.rx-warn／.rx-line／.pt1-node）本身不到「隱形」
 * 門檻（文字色其實繼承自 .rec-detail li 的 --sentence-fg2，本來就讀得到），
 * 但半透明白色的底／框在骨白背景上等於沒畫，看起來像沒套用設計——一併在
 * P7–P10 換成看得見的骨白／墨色框線，同時解決「問題 2：整段沒有套到設計
 * 語言」在追蹤與支持治療區塊（P9）之外，同一類元件也存在的部分。
 *
 * 特異度策略（P7／P8 最終版；過程留在那兩節的註解裡，值得一讀——第一版
 * 只打 `.flow-rec .rec-detail X`，30 個癌別逐一 getComputedStyle 掃過才
 * 發現同一批 class 至少落在三種不同祖先下：多數癌別在 .rec-detail 內；
 * 大腸直腸癌 COL-10 處方、pNET／NET 在 `.flow-rec > details.rx-more >
 * .rx-stack > .rx-line`，不經過 .rec-detail；NET／UTUC 甚至出現在
 * .flow-step 的 extra 參數裡，不在 .flow-rec 內。窮舉祖先組合每次都漏，
 * 故最終版不設祖先條件，直接打 class 本身：attribute + 1 class，
 * 特異度 (0,2,0)。
 * 老實說這個特異度**打不贏** cancer-staging.css 的
 * `.flow-rec.rec-idle .rec-detail X`（4 個 class，(0,4,0)）——CSS
 * 特異度比較是先比 a 再比 b，(0,2,0) 的 b=2 小於 (0,4,0) 的 b=4，
 * 來源順序救不了低特異度，這點在此更正，不要被字面上的位置唬到。
 * 能維持 0 隱形文字（30 癌別 × 亮暗 × 390/1440 全掃過）不是靠贏過這條
 * 特異度更高的規則，是因為 `.rec-idle` 且 `.rec-detail` 內同時含
 * `.rx-h`／`.rx`／`.drug`／`.cb`／`.cbx-h` 這批 class 的情境，在現有
 * 30 個癌別的原始碼裡**不存在**——唯一「rec-idle 且有實質內容」的案例
 * （js/aml-pathway.js 的 renderOther()，AML-1 分流至非 AML 白血病時）
 * 內文只用純 `<b>`，沒有這批徽章 class，該處已被本檔 (0,2,0) 對
 * `.rec-detail .rx-h` 等「非 idle 版」(同為 (0,2,0)，靠來源順序勝出)
 * 正常覆寫。**這是現況成立、不是規則保證**：往後若哪個癌別的 idle 狀態
 * 塞進帶這批 class 的內容，這裡會重新破功，需要另外補一條
 * `.flow-rec.rec-idle X`（4 class 當量）比照辦理，不能只加 !important
 * 了事。.tx-body 靜態卡片、.crc-supp 補充面板兩處的淺底覆寫邏輯本來就
 * 與深底這組不同，各自獨立一條規則，不共用選擇器。
 * ================================================================ */

/* ---- P1. 癌別詳情頁頭（.onc-back／.onc-title／.onc-edition／.onc-note／.onc-sec-h／.onc-wip）---- */
[data-ui="sentence"] .onc-back {
  font-family: var(--sentence-mono); font-size: 11px; background: transparent;
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 0 12px;
  min-height: 44px; display: inline-flex; align-items: center; color: var(--sentence-fg);
  margin-bottom: 12px;
}
[data-ui="sentence"] .onc-back:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); }
/* .onc-title 本身是 <h2 class="onc-title">，已被 A 段的通用
   `[data-ui="sentence"] h2` 規則（clamp(18px,3.6vw,22px)）蓋過
   ——attribute+type 的特異度比 cancer-staging.css 的 .onc-title 單一
   class 高，這裡只需補它的英文病名子節點 .oct-en（cancer-staging.css
   對它的顏色是 --muted-soft，正式版變數，不隨本檔調色）。 */
[data-ui="sentence"] .onc-title .oct-en { font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-dim); font-weight: 400; }
[data-ui="sentence"] .onc-edition {
  font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .04em;
  color: var(--sentence-dim); background: transparent; border: 1px solid var(--sentence-line2);
  border-radius: 0; padding: 2px 9px; display: inline-block; margin: 8px 0 4px;
}
[data-ui="sentence"] .onc-note { font-size: 12px; line-height: 1.7; color: var(--sentence-fg2); margin: 8px 0; }
[data-ui="sentence"] .onc-note b { color: var(--sentence-fg); }
[data-ui="sentence"] .onc-sec-h {
  font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--sentence-dim); margin: 18px 0 8px; border-bottom: 1px solid var(--sentence-line); padding-bottom: 4px;
}
[data-ui="sentence"] .onc-wip {
  font-family: var(--sentence-mono); font-size: 12.5px; letter-spacing: .06em; color: var(--sentence-dim);
  border: 1px dashed var(--sentence-line2); border-radius: 0; padding: 36px 16px; text-align: center; margin-top: 14px;
}
[data-ui="sentence"] .onc-group-head {
  font-family: var(--sentence-mono); font-size: 11px; letter-spacing: .2em; text-transform: uppercase;
  color: var(--sentence-dim); border-bottom: 1px solid var(--sentence-line); padding-bottom: 5px; font-weight: 400;
}
[data-ui="sentence"] .onc-empty { color: var(--sentence-dim); font-family: var(--sentence-mono); font-size: 12.5px; }
/* 這一頁是可瀏覽的分期／淋巴結參考表，不是單一數值的計分結論——沒有一個
   天然的「巨大數字」。比照 B 段既有的 #view-classifications／#view-emerg-op
   降級手法（同一份說明見 B 段那三行），把本頁 h1 降到本頁真正的臨床內容
   （下面 .rec-title 24–34px、.onc-title 18–22px、静態卡片版 .tx-label 見
   P6）之下。新增獨立規則，不動 B 段既有那條多 id 並列的選擇器一個字。
   用固定 16px（不用 clamp）：.onc-title 的 h2 規則下限是 18px，兩條若都用
   同一個 3.6vw 係數的 clamp，理論上在某個中段視窗寬度會打平（見交付說明），
   固定值可以完全避開這個問�，390／1440 兩個檢核點皆確認 16 < 18。 */
[data-ui="sentence"] #view-cancer .app-header h1 { font-size: 16px; letter-spacing: .04em; }

/* ---- P2. 分頁列（分期 TNM／淋巴結分群／治療建議）---- */
[data-ui="sentence"] .onc-tabs { border-bottom: 2px solid var(--sentence-fg); gap: 6px; margin: 14px 0 18px; }
[data-ui="sentence"] .onc-tab {
  font-family: var(--sentence-mono); font-size: 12px; letter-spacing: .03em;
  background: transparent; border: 1px solid var(--sentence-line2); border-bottom: none; border-radius: 0;
  padding: 9px 6px; min-height: 44px; color: var(--sentence-dim); top: 2px; position: relative;
}
[data-ui="sentence"] .onc-tab:hover { background: var(--sentence-shade); color: var(--sentence-fg); }
[data-ui="sentence"] .onc-tab.active {
  color: var(--sentence-fg); background: var(--sentence-bg2); border-color: var(--sentence-fg); font-weight: 700;
}

/* ---- P3. 分期表格（table.tnm／table.stage／table.smx 矩陣）---- */
[data-ui="sentence"] table.tnm, [data-ui="sentence"] table.stage, [data-ui="sentence"] table.smx {
  font-family: var(--sentence-mono); font-size: 12px; border-collapse: collapse; margin: 6px 0 12px;
}
[data-ui="sentence"] table.tnm td { padding: 6px 8px; border-bottom: 1px dotted var(--sentence-line); color: var(--sentence-fg2); vertical-align: top; }
[data-ui="sentence"] table.tnm td:first-child { color: var(--sentence-fg); font-weight: 700; }
[data-ui="sentence"] table.stage th {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--sentence-dim); text-align: left; padding: 4px 8px; border-bottom: 1px solid var(--sentence-fg);
}
[data-ui="sentence"] table.stage td { padding: 6px 8px; border-bottom: 1px dotted var(--sentence-line); color: var(--sentence-fg2); vertical-align: top; }
[data-ui="sentence"] table.stage td:first-child { color: var(--sentence-fg); font-weight: 700; }
[data-ui="sentence"] table.stage.stage-map td.st-c1 { color: var(--sentence-fg); }
[data-ui="sentence"] table.tnm.tnm-figo th { color: var(--sentence-dim); font-weight: 400; }

/* 分期深淺著色：改吃 calm→warn→hot 三色漸層（I–II 期＝calm、III 期＝warn、
   IV 期＝hot），不再用正式版的 --accent（藍綠色，未被本檔調色，與骨白墨
   綠的整體色調不同系，屬於「問題 2：沒套到設計語言」的一部分）。分期本身
   仍是「文字（儲存格內印著的羅馬數字期別，如 IIIA／IV）＋ 色」雙重編碼，
   色只是輔助掃讀用，不是唯一線索。 */
[data-ui="sentence"] .sm-s0 { background: transparent; color: var(--sentence-dim); }
[data-ui="sentence"] .sm-s1 { background: color-mix(in srgb, var(--sentence-calm) 14%, var(--sentence-bg)); color: var(--sentence-fg); }
[data-ui="sentence"] .sm-s2 { background: color-mix(in srgb, var(--sentence-calm) 28%, var(--sentence-bg)); color: var(--sentence-fg); }
[data-ui="sentence"] .sm-s3 { background: color-mix(in srgb, var(--sentence-warn) 24%, var(--sentence-bg)); color: var(--sentence-fg); }
[data-ui="sentence"] .sm-s4 { background: color-mix(in srgb, var(--sentence-warn) 40%, var(--sentence-bg)); color: var(--sentence-fg); }
[data-ui="sentence"] .sm-s5 { background: color-mix(in srgb, var(--sentence-warn) 62%, var(--sentence-bg)); color: var(--sentence-fg); }
[data-ui="sentence"] .sm-s6 { background: color-mix(in srgb, var(--sentence-hot) 58%, var(--sentence-bg)); color: var(--sentence-inv-fg); }
[data-ui="sentence"] .sm-s7 { background: var(--sentence-hot); color: var(--sentence-inv-fg); }
[data-ui="sentence"] table.stage td.st-code.sm-s4, [data-ui="sentence"] table.stage td.st-code.sm-s5,
[data-ui="sentence"] table.stage td.st-code.sm-s6, [data-ui="sentence"] table.stage td.st-code.sm-s7,
[data-ui="sentence"] table.tnm.tnm-figo td.tf-figo.sm-s4, [data-ui="sentence"] table.tnm.tnm-figo td.tf-figo.sm-s5,
[data-ui="sentence"] table.tnm.tnm-figo td.tf-figo.sm-s6, [data-ui="sentence"] table.tnm.tnm-figo td.tf-figo.sm-s7 { color: var(--sentence-inv-fg); }
[data-ui="sentence"] table.tnm.tnm-figo td.tf-figo { font-family: var(--sentence-mono); }

[data-ui="sentence"] .smx .sm-corner, [data-ui="sentence"] .smx .sm-nh, [data-ui="sentence"] .smx .sm-ng {
  background: var(--sentence-bg2); color: var(--sentence-dim);
}
[data-ui="sentence"] .smx .sm-nh span { color: var(--sentence-dim); }
[data-ui="sentence"] .smx .sm-th { color: var(--sentence-fg); background: var(--sentence-bg2); }
[data-ui="sentence"] table.smx th, [data-ui="sentence"] table.smx td { border-color: var(--sentence-line); }
[data-ui="sentence"] .smx tr.sm-mrow th.sm-nth { color: var(--sentence-dim); }
[data-ui="sentence"] .smx tr.sm-mrow th.sm-mth { color: var(--sentence-fg); }
[data-ui="sentence"] .smx tr.sm-mrow:first-of-type td, [data-ui="sentence"] .smx tr.sm-mrow:first-of-type th { border-top: 2px solid var(--sentence-fg); }
[data-ui="sentence"] .sm-m1 {
  font-size: 12px; color: var(--sentence-fg2); background: var(--sentence-bg2); border: 1px solid var(--sentence-line2);
  border-left: 4px solid var(--sentence-fg); border-radius: 0; padding: 8px 11px; margin-top: 6px;
}
[data-ui="sentence"] .sm-m1 b { color: var(--sentence-fg); font-family: var(--sentence-mono); }
[data-ui="sentence"] .sm-legend { font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim); gap: 8px 14px; }
[data-ui="sentence"] .sm-legend i { border: 1px solid var(--sentence-line2); border-radius: 0; }

/* ---- P4. 淋巴結分群（.nd-*／.node-item／.node-group／.dl-*／.ni-*）---- */
[data-ui="sentence"] .onc-subtype { border-left: 4px solid var(--sentence-fg); background: var(--sentence-bg2); border-radius: 0; }
[data-ui="sentence"] .onc-subtype .nd-h { color: var(--sentence-fg); }
[data-ui="sentence"] .nd-ctrl { background: var(--sentence-bg2); border: 1px solid var(--sentence-line2); border-radius: 0; padding: 10px 12px; margin: 8px 0 10px; }
[data-ui="sentence"] .nd-h { font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--sentence-dim); }
[data-ui="sentence"] .nd-btn {
  font-family: var(--sentence-mono); font-size: 11.5px; background: var(--sentence-bg); border: 1px solid var(--sentence-line2);
  border-radius: 0; padding: 6px 10px; min-height: 40px; color: var(--sentence-fg);
}
[data-ui="sentence"] .nd-btn:hover { border-color: var(--sentence-fg); background: var(--sentence-shade); }
[data-ui="sentence"] .nd-btn.active { background: var(--sentence-inv-bg); border-color: var(--sentence-inv-bg); color: var(--sentence-inv-fg); font-weight: 700; }
[data-ui="sentence"] .nd-def {
  font-family: var(--sentence-mono); font-size: 11.5px; line-height: 1.65; color: var(--sentence-fg2);
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-left: 4px solid var(--sentence-fg);
  border-radius: 0; padding: 8px 11px; margin-bottom: 10px;
}

[data-ui="sentence"] .node-item {
  background: var(--sentence-bg2); border: 1px solid var(--sentence-line2); border-left: 4px solid var(--sentence-line2);
  border-radius: 0; padding: 8px 11px; margin-bottom: 6px; font-size: 12.5px; line-height: 1.55; color: var(--sentence-fg2);
}
[data-ui="sentence"] .node-item .ni-code { font-family: var(--sentence-mono); font-weight: 700; color: var(--sentence-fg); margin-right: 6px; }
[data-ui="sentence"] .node-item .ni-en { font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-dim); }
[data-ui="sentence"] .node-group {
  font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-dim); background: transparent;
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 1px 8px; margin-left: 6px; white-space: nowrap;
}
/* D 級（廓清範圍：D1／D1+／D2、必要／可省略、常規／條件／N+加做）本身不是
   臨床嚴重度，是廓清範圍分類——D2 不代表比 D1「更危險」，只是範圍更大——
   故不套用 hot/warn/calm（該三色依本檔開頭第 2 條鐵律保留給真正的嚴重度）。
   等級差異已經由徽章上的文字本身（D1／D1+／D2…）承載，這裡再疊一層邊框
   粗細當第二channel。dl-warn 是唯一例外：這一級原文命名就是「擴大」
   （胰臟癌：標準／擴大），語意上真的是風險升高，才吃 warn 色。 */
[data-ui="sentence"] .node-item.dl-1 { border-left-color: var(--sentence-fg); border-left-width: 3px; }
[data-ui="sentence"] .node-item.dl-1p { border-left-color: var(--sentence-fg); border-left-width: 5px; }
[data-ui="sentence"] .node-item.dl-2 { border-left-color: var(--sentence-fg); border-left-width: 8px; }
[data-ui="sentence"] .node-item.dl-warn { border-left-color: var(--sentence-warn); border-left-width: 5px; }
[data-ui="sentence"] .node-item.dl-none { border-left-color: var(--sentence-line2); border-left-style: dashed; opacity: .72; }
[data-ui="sentence"] .node-group.dl-1, [data-ui="sentence"] .node-group.dl-1p, [data-ui="sentence"] .node-group.dl-2 {
  color: var(--sentence-inv-fg); background: var(--sentence-inv-bg); border-color: var(--sentence-inv-bg);
}
[data-ui="sentence"] .node-group.dl-warn { color: var(--sentence-warn); background: transparent; border-color: var(--sentence-warn); font-weight: 700; }
[data-ui="sentence"] .node-group.dl-none { color: var(--sentence-dim); background: transparent; border-style: dashed; }
[data-ui="sentence"] .ni-reg {
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700; letter-spacing: .04em; border-radius: 0;
  padding: 1px 7px; margin-left: 5px; white-space: nowrap; color: var(--sentence-fg); border: 1px solid var(--sentence-line2);
}
[data-ui="sentence"] .ni-reg.is-m { color: var(--sentence-hot); border-color: var(--sentence-hot); }
[data-ui="sentence"] .ni-alt { color: var(--sentence-dim); }
[data-ui="sentence"] .ni-note { color: var(--sentence-dim); border-top: 1px dashed var(--sentence-line); }

/* ---- P5. 判讀準則（Favorable／Unfavorable／High-risk、檢查清單、高風險特徵徽章）
   來源：gastric（ESD 適應症）、colon（COL-1 息肉病理、COL-2 檢查清單、
   COL-3 第 II 期高風險特徵）等——這批是 <div class="flow-step">…<div class="note">
   或 step() 的 extra 參數內，本來就是淺底（.flow-step 是 I 段既有樣式），
   不是隱形文字，這裡只是把顏色從正式版 --accent 系換成本設計的調色盤。 ---- */
[data-ui="sentence"] .crit {
  background: var(--sentence-bg2); border: 1px solid var(--sentence-line2); border-left: 4px solid var(--sentence-line2);
  border-radius: 0; padding: 8px 11px;
}
[data-ui="sentence"] .crit-h { font-family: var(--sentence-mono); font-size: 10.5px; font-weight: 700; letter-spacing: .04em; }
[data-ui="sentence"] .crit-h .crit-zh { font-family: var(--sentence-sans); font-weight: 600; color: var(--sentence-fg2); }
[data-ui="sentence"] .crit ul, [data-ui="sentence"] .crit ol { color: var(--sentence-fg2); }
[data-ui="sentence"] .crit-note { color: var(--sentence-dim); }
/* 良好／不良預後因子與高風險特徵是真正的臨床嚴重度，套 calm／warn／hot，
   ＋ 邊框粗細遞增 ＋ 標題本身既有的文字（FAVORABLE／UNFAVORABLE／HIGH RISK
   FEATURES）三重編碼。 */
[data-ui="sentence"] .crit-fav { border-left-color: var(--sentence-calm); border-left-width: 3px; }
[data-ui="sentence"] .crit-fav .crit-h { color: var(--sentence-calm); }
[data-ui="sentence"] .crit-unfav { border-left-color: var(--sentence-warn); border-left-width: 5px; }
[data-ui="sentence"] .crit-unfav .crit-h { color: var(--sentence-warn); }
[data-ui="sentence"] .crit-hr {
  border-left-color: var(--sentence-hot); border-left-width: 7px;
  background: color-mix(in srgb, var(--sentence-hot) 8%, var(--sentence-bg2));
}
[data-ui="sentence"] .crit-hr .crit-h { color: var(--sentence-hot); }

[data-ui="sentence"] .cbx-h { font-family: var(--sentence-mono); font-size: 10.5px; font-weight: 700; color: var(--sentence-fg); }
[data-ui="sentence"] .cbx-h .cbx-sub { font-family: var(--sentence-sans); font-weight: 600; color: var(--sentence-dim); }
[data-ui="sentence"] .cb {
  font-size: 11.5px; line-height: 1.6; border-radius: 0; padding: 1px 8px;
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-bottom: 2px solid var(--sentence-fg);
  color: var(--sentence-fg);
}
[data-ui="sentence"] .cb .cb-k { font-family: var(--sentence-mono); font-weight: 700; color: var(--sentence-fg); margin-right: 5px; }

[data-ui="sentence"] .hrf {
  background: var(--sentence-bg2); border: 1px solid var(--sentence-line2); border-left: 5px solid var(--sentence-warn);
  border-radius: 0; padding: 9px 11px;
}
[data-ui="sentence"] .hrf-h { font-family: var(--sentence-mono); font-size: 10.5px; font-weight: 700; color: var(--sentence-warn); }
[data-ui="sentence"] .hrf-h .hrf-sub { font-family: var(--sentence-sans); font-weight: 600; color: var(--sentence-dim); }
[data-ui="sentence"] .hrf-b {
  font-size: 11.5px; line-height: 1.6; white-space: nowrap; border-radius: 0; padding: 1px 8px;
  background: color-mix(in srgb, var(--sentence-warn) 16%, var(--sentence-bg2)); border: 1px solid var(--sentence-warn); color: var(--sentence-fg);
}

/* ---- P6. 治療區塊 —— 無互動流程之癌別（gist／anal／appendix／cca）的靜態卡片
   （js/cancer-staging.js renderTx() 之 fallback：.tx／.tx-head／.tx-role／
   .tx-label／.tx-body，c.tx 陣列直接渲染，非 *-pathway.js 產生）---- */
[data-ui="sentence"] .tx {
  background: var(--sentence-bg2); border: 1px solid var(--sentence-line2); border-radius: 0;
  padding: 13px 15px; margin-bottom: 10px;
}
[data-ui="sentence"] .tx.neo, [data-ui="sentence"] .tx.surg, [data-ui="sentence"] .tx.adj, [data-ui="sentence"] .tx.sys {
  border-left: 4px solid var(--sentence-fg);
}
[data-ui="sentence"] .tx-head { gap: 9px; margin-bottom: 6px; }
[data-ui="sentence"] .tx-role {
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  border-radius: 0; padding: 2px 9px; color: var(--sentence-inv-fg); background: var(--sentence-inv-bg);
}
/* cancer-staging.css 對 .tx 卡片內的 .tx-role 另外依角色分底色（4 條
   `.tx.neo/.surg/.adj/.sys .tx-role`，各 3 個 class 疊出的特異度），
   比上面這條 attribute+1class 高，會贏。量過 `.tx.adj .tx-role`
   （固定 #6b8f8a）配本檔 --sentence-inv-fg：亮色主題對比只有 2.999——
   四種角色色只是分類（手術／術前輔助／術後輔助／轉移），不是嚴重度，
   本檔不需要保留這四色，統一收回本檔的反轉配色即可。用同深度
   （attribute + .tx + .tx-role 兩個 class）打平，來源順序勝出。 */
[data-ui="sentence"] .tx .tx-role {
  color: var(--sentence-inv-fg); background: var(--sentence-inv-bg);
}
/* .tx-role 也被拿來當行內小標籤用，且部分呼叫端帶了 inline style 直接指定
   底色（js/all-pathway.js／cml／mds／mpn 之「來源提醒」固定用 #a33a2f 磚紅、
   不隨主題變化；CSS 覆寫不了 inline style 的屬性本身，只能覆寫沒被 inline
   蓋掉的 color）。量過：inline 背景是 var(--accent) 或 var(--muted-soft)
   時，本規則的 --sentence-inv-fg 在兩個主題都量得出 ≥5:1；只有 #a33a2f
   這個固定磚紅在暗色主題量到 2.84（inv-fg 在暗色主題變淺色，配深色文字，
   而磚紅本身不隨主題變淺，兩者對不上）。用屬性選擇器只鎖定這個固定值，
   不影響另外兩種 inline 底色，也不影響沒有 inline style 的預設徽章。 */
[data-ui="sentence"] .tx-role[style*="a33a2f"] { color: #f2ece4; }
/* .tx-label 是這 4 個癌別在治療分頁載入當下最大的臨床內容（沒有互動流程、
   沒有 .rec-title）——放大到接近 .rec-title 的量級，理由與 P1 的 h1 降級
   同一組：確保這 4 頁畫面上最大的東西仍是臨床內容，不是裝飾用的頁面標題。 */
[data-ui="sentence"] .tx-label { font-family: var(--sentence-serif); font-weight: 500; font-size: clamp(17px, 2.9vw, 20px); color: var(--sentence-fg); }
[data-ui="sentence"] .tx-body { font-size: 12.5px; line-height: 1.7; color: var(--sentence-fg2); }
[data-ui="sentence"] .tx-body .rx { font-family: var(--sentence-mono); font-weight: 700; color: var(--sentence-fg); }
[data-ui="sentence"] .tx-body .drug {
  font-family: var(--sentence-sans); background: var(--sentence-bg); border: 1px solid var(--sentence-line2);
  border-bottom: 2px solid var(--sentence-fg); border-radius: 0; padding: 1px 6px; font-size: 12px; white-space: nowrap;
  color: var(--sentence-fg);
}

/* ---- P7. 建議處置色塊內的療程徽章 —— 隱形文字修正（本檔頂端已說明根因）。
   選擇器故意不要求任何特定祖先（不寫 `.flow-rec X`、也不寫
   `.flow-rec .rec-detail X`）：這批 class 出現的位置比第一版設想的更分散——
   現場 getComputedStyle 逐一癌別量過三種真實包裝，同一組 class 在不同癌別
   會落在不同祖先下：
     · 多數癌別：.flow-rec > .rec-detail（ul/li）內
     · 大腸直腸癌 COL-10 輔助化療處方（js/crc-regimens.js）、pNET／NET：
       .flow-rec > details.rx-more > .rx-stack > .rx-line，不經過 .rec-detail
     · NET／UTUC：同一組 class 甚至出現在 .flow-step 的 extra 參數裡
       （尚未作答、位於問題步驟本身的說明框，不在 .flow-rec 內）
   窮舉每一種祖先組合太容易漏（已經漏兩次），改成直接打 class 本身、
   不设祖先條件，attribute+1 class 的特異度（0,2,0）已經打得過
   cancer-staging.css 所有同名規則的最高特異度（.flow-rec.rec-idle
   .rec-detail X 系列，(0,4,0)，來源順序：本檔排在後面）——CSS 特異度
   比較不看選擇器「寫得多長」，只看 attribute／class／id 的計數，
   本檔在後述兩者特異度打平時一律勝出。.crc-supp 面板另外處理
   （見各條第二個選擇器），因為它有自己一套淺底覆寫、不吃這裡的深底假設。 ---- */
[data-ui="sentence"] .rx-h,
[data-ui="sentence"] .crc-supp .rec-detail .rx-h {
  color: var(--sentence-fg); border-bottom: 1.5px solid var(--sentence-line2); padding-bottom: 1px;
}
[data-ui="sentence"] .rx,
[data-ui="sentence"] .crc-supp .rec-detail .rx {
  color: var(--sentence-fg);
}
[data-ui="sentence"] .rx-sub,
[data-ui="sentence"] .crc-supp .rec-detail .rx-sub {
  color: var(--sentence-dim); opacity: 1;
}
[data-ui="sentence"] .rec-detail .drug, [data-ui="sentence"] .rx-line .drug, [data-ui="sentence"] .cbx-items .drug,
[data-ui="sentence"] .crc-supp .rec-detail .drug {
  font-family: var(--sentence-sans); background: var(--sentence-bg); border: 1px solid var(--sentence-line2);
  border-bottom: 2px solid var(--sentence-fg); border-radius: 0; padding: 0 6px; font-size: 12px; color: var(--sentence-fg);
}
[data-ui="sentence"] .cbx-h,
[data-ui="sentence"] .hrf-h {
  color: var(--sentence-fg); opacity: 1;
}
[data-ui="sentence"] .cbx-h .cbx-sub {
  color: var(--sentence-dim); opacity: 1;
}
[data-ui="sentence"] .rec-detail .cb, [data-ui="sentence"] .flow-step .cb {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-bottom: 2px solid var(--sentence-fg);
  color: var(--sentence-fg);
}
[data-ui="sentence"] .rec-detail .cb .cb-k, [data-ui="sentence"] .flow-step .cb .cb-k { color: var(--sentence-fg); }
[data-ui="sentence"] .rec-detail .fu-gap,
[data-ui="sentence"] .rec-note .fu-gap { color: var(--sentence-dim); opacity: 1; }

/* ---- P8. 系統性治療分層面板 .rx-panel 家族（colon／rectal／panc／hcc／sts／
   pnet／net／cervix／endo／utsarc／ovarian／utuc／rcc／bladder／prostate…
   多癌別共用，同樣是為深底設計的半透明白框，換成看得見的骨白／墨色框；
   選擇器策略同 P7 開頭說明，不設祖先條件） ---- */
[data-ui="sentence"] .rx-panel-h,
[data-ui="sentence"] .crc-supp .rx-panel-h {
  font-family: var(--sentence-mono); font-size: 12px; letter-spacing: .04em; text-transform: uppercase;
  opacity: 1; color: var(--sentence-fg); border-bottom: 1px solid var(--sentence-line2); padding-bottom: 6px;
}
[data-ui="sentence"] .rx-panel-src,
[data-ui="sentence"] .crc-supp .rx-panel-src { color: var(--sentence-dim); opacity: 1; }
[data-ui="sentence"] .rx-def,
[data-ui="sentence"] .crc-supp .rx-def {
  background: var(--sentence-bg); border: 1px dashed var(--sentence-line2); border-radius: 0; color: var(--sentence-fg2);
}
[data-ui="sentence"] .rx-warn,
[data-ui="sentence"] .crc-supp .rx-warn {
  background: color-mix(in srgb, var(--sentence-hot) 10%, var(--sentence-bg)); border: 1px solid var(--sentence-hot);
  border-radius: 0; color: var(--sentence-fg);
}
[data-ui="sentence"] .rx-line,
[data-ui="sentence"] .crc-supp .rx-line {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-left: 4px solid var(--sentence-fg);
  border-radius: 0;
}
[data-ui="sentence"] .rx-line.plain,
[data-ui="sentence"] .crc-supp .rx-line.plain { background: none; border: 0; }
[data-ui="sentence"] .rx-line.plain .rx-h {
  font-family: var(--sentence-mono); font-size: 10.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--sentence-dim); border: 0;
}
[data-ui="sentence"] .rx-items,
[data-ui="sentence"] .crc-supp .rx-items { color: var(--sentence-fg2); }
[data-ui="sentence"] .rx-more > summary,
[data-ui="sentence"] .crc-supp .rx-more > summary {
  font-family: var(--sentence-mono); font-size: 11.5px; opacity: 1; color: var(--sentence-fg);
  text-decoration: underline; text-underline-offset: 2px;
}
[data-ui="sentence"] .rx-note,
[data-ui="sentence"] .crc-supp .rx-note { color: var(--sentence-fg2); }
[data-ui="sentence"] .rx-stack { gap: 8px; }

/* ---- P8a. 補上 P7／P8 開頭坦白說明的那個缺口：.flow-rec.rec-idle 內同時
   帶這批徽章 class 的情境，現有 30 個癌別找不到真實案例（唯一「idle 且有
   內容」的 js/aml-pathway.js renderOther() 只用純 <b>），但沒有真實案例
   不代表規則本身站得住腳——4 個 class 疊出的 (0,4,0) 就是贏得了 P7／P8
   那組 (0,2,0)。這裡直接把同一批數值再寫一次到 `.flow-rec.rec-idle X`
   （attribute + 4 class，(0,4,0)，正面打贏 cancer-staging.css 同名規則,
   不必再靠「現況沒人這樣用」這種脆弱前提撐著）。數值刻意與上面 P7／P8
   完全相同——sentence 設計的 .rec-detail 文字色不分 idle／非 idle
   （見 I 段 `.flow-rec .rec-detail li` 沒有另外的 .rec-idle 版本），
   這裡純粹補特異度，不是要換一套「未作答」專用配色。 ---- */
[data-ui="sentence"] .flow-rec.rec-idle .rx-h { color: var(--sentence-fg); border-bottom: 1.5px solid var(--sentence-line2); padding-bottom: 1px; }
[data-ui="sentence"] .flow-rec.rec-idle .rx { color: var(--sentence-fg); }
[data-ui="sentence"] .flow-rec.rec-idle .rx-sub { color: var(--sentence-dim); opacity: 1; }
[data-ui="sentence"] .flow-rec.rec-idle .drug {
  font-family: var(--sentence-sans); background: var(--sentence-bg); border: 1px solid var(--sentence-line2);
  border-bottom: 2px solid var(--sentence-fg); border-radius: 0; padding: 0 6px; font-size: 12px; color: var(--sentence-fg);
}
[data-ui="sentence"] .flow-rec.rec-idle .cbx-h, [data-ui="sentence"] .flow-rec.rec-idle .hrf-h { color: var(--sentence-fg); opacity: 1; }
[data-ui="sentence"] .flow-rec.rec-idle .cbx-h .cbx-sub { color: var(--sentence-dim); opacity: 1; }
[data-ui="sentence"] .flow-rec.rec-idle .cb {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-bottom: 2px solid var(--sentence-fg); color: var(--sentence-fg);
}
[data-ui="sentence"] .flow-rec.rec-idle .cb .cb-k { color: var(--sentence-fg); }
[data-ui="sentence"] .flow-rec.rec-idle .fu-gap { color: var(--sentence-dim); opacity: 1; }
[data-ui="sentence"] .flow-rec.rec-idle .rx-panel-h {
  font-family: var(--sentence-mono); font-size: 12px; letter-spacing: .04em; text-transform: uppercase;
  opacity: 1; color: var(--sentence-fg); border-bottom: 1px solid var(--sentence-line2); padding-bottom: 6px;
}
[data-ui="sentence"] .flow-rec.rec-idle .rx-panel-src { color: var(--sentence-dim); opacity: 1; }
[data-ui="sentence"] .flow-rec.rec-idle .rx-def { background: var(--sentence-bg); border: 1px dashed var(--sentence-line2); border-radius: 0; color: var(--sentence-fg2); }
[data-ui="sentence"] .flow-rec.rec-idle .rx-warn {
  background: color-mix(in srgb, var(--sentence-hot) 10%, var(--sentence-bg)); border: 1px solid var(--sentence-hot); border-radius: 0; color: var(--sentence-fg);
}
[data-ui="sentence"] .flow-rec.rec-idle .rx-line {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-left: 4px solid var(--sentence-fg); border-radius: 0;
}
[data-ui="sentence"] .flow-rec.rec-idle .rx-items { color: var(--sentence-fg2); }
[data-ui="sentence"] .flow-rec.rec-idle .rx-note { color: var(--sentence-fg2); }

/* ---- P9. 追蹤與支持治療（.flow-fu）——使用者回報的問題 2：正式版底色／
   邊框吃的是 --box-bg／--line／--accent，未被本檔調色，在造句設計裡因此
   維持正式版外觀，跟周圍骨白墨字完全不同調。 ---- */
[data-ui="sentence"] .flow-fu {
  background: var(--sentence-bg2); border: 1px solid var(--sentence-line2); border-left: 4px solid var(--sentence-fg);
  border-radius: 0; padding: 13px 15px; margin-top: 10px;
}
[data-ui="sentence"] .flow-fu .fu-label {
  font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--sentence-fg); margin-bottom: 6px;
}
[data-ui="sentence"] .flow-fu .fu-list { color: var(--sentence-fg2); font-size: 12.5px; line-height: 1.7; }
[data-ui="sentence"] .flow-fu .fu-list b { color: var(--sentence-fg); }
[data-ui="sentence"] .flow-fu .fu-gap { color: var(--sentence-dim); }

/* ---- P10. pT1 內視鏡切除後迷你流程圖（結腸癌，.pt1-flow 家族；位於
   .flow-rec 內但不在 .rec-detail 內，另外處理）---- */
[data-ui="sentence"] .flow-rec .pt1-flow .pt1-node {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0; color: var(--sentence-fg2);
}
[data-ui="sentence"] .flow-rec .pt1-flow .pt1-root { color: var(--sentence-fg); }
[data-ui="sentence"] .flow-rec .pt1-flow .pt1-sub { color: var(--sentence-dim); }
[data-ui="sentence"] .flow-rec .pt1-flow .pt1-arrow { color: var(--sentence-dim); opacity: 1; }
[data-ui="sentence"] .flow-rec .pt1-flow .pt1-foot { color: var(--sentence-dim); opacity: 1; }
/* 三態是真正的臨床分流結果（追蹤 vs 個案討論考慮追加手術 vs 追加手術），
   套 calm／warn／hot；邊框 ＋ 終點格加粗底色 ＋ 文字（追蹤／個案討論／
   追加手術，本身已是內容）三重編碼。 */
[data-ui="sentence"] .flow-rec .pt1-flow .is-go { border-left: 4px solid var(--sentence-calm); }
[data-ui="sentence"] .flow-rec .pt1-flow .is-warn { border-left: 4px solid var(--sentence-warn); }
[data-ui="sentence"] .flow-rec .pt1-flow .is-stop { border-left: 4px solid var(--sentence-hot); }
[data-ui="sentence"] .flow-rec .pt1-flow .pt1-term.is-go { background: color-mix(in srgb, var(--sentence-calm) 16%, var(--sentence-bg)); border-left-width: 6px; font-weight: 700; }
[data-ui="sentence"] .flow-rec .pt1-flow .pt1-term.is-warn { background: color-mix(in srgb, var(--sentence-warn) 18%, var(--sentence-bg)); border-left-width: 6px; font-weight: 700; }
[data-ui="sentence"] .flow-rec .pt1-flow .pt1-term.is-stop { background: color-mix(in srgb, var(--sentence-hot) 16%, var(--sentence-bg)); border-left-width: 6px; font-weight: 700; }

/* ---- P11. T×N 術後病理分期格（結腸癌，.tn-* 家族；位於 .flow-step 之
   extra 參數內，不在 .flow-rec 內，本來就是淺底，只換色盤） ---- */
[data-ui="sentence"] .tn-cap { font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--sentence-dim); }
[data-ui="sentence"] .tn-corner { color: var(--sentence-dim); }
[data-ui="sentence"] .tn-ch, [data-ui="sentence"] .tn-rh { color: var(--sentence-fg2); font-weight: 700; }
[data-ui="sentence"] .tn-cell {
  font-family: var(--sentence-mono); border: 1px solid var(--sentence-line2); border-radius: 0;
  background: var(--sentence-bg); color: var(--sentence-fg);
}
[data-ui="sentence"] .tn-cell:hover { box-shadow: 0 0 0 1px var(--sentence-fg) inset; }
[data-ui="sentence"] .tn-cell.selected { box-shadow: 0 0 0 3px var(--sentence-fg) inset; }
[data-ui="sentence"] .tn-na { border: 1px dashed var(--sentence-line2); border-radius: 0; color: var(--sentence-dim); }
[data-ui="sentence"] .tn-lg { color: var(--sentence-fg2); }
[data-ui="sentence"] .tn-sw { border-radius: 0; border: 1px solid var(--sentence-line2); }
/* g-none/g-ii/g-low/g-high 四組＝四種決策分層。
   沿革（兩次都是使用者實機回報）：
   ① 最早是 calm→warn(18%)→warn(34%)→hot，中間兩格同色相只差濃度，分不出來。
   ② 一度改成墨綠／琥珀／靛藍／硃砂四個色相 —— 分得出來，但中間插一個藍色
      不成序列，讀起來不像分層。
   ③ 現行：**單向漸層**，墨綠 → 黃綠（--sentence-mid，calm 與 warn 的中間色）
      → 琥珀 → 硃砂，全部走造句版自己的色票，沒有外來色相。
      填色 26/30/34/38% 逐段加深，邊框粗細 1/2/2/3，維持「文字＋色相＋
      邊框粗細」三重編碼，色盲也能靠濃淡與框粗分辨。 */
[data-ui="sentence"] .tn-cell.g-none, [data-ui="sentence"] .tn-sw.g-none {
  background: color-mix(in srgb, var(--sentence-calm) 26%, var(--sentence-bg)); border-color: var(--sentence-calm); color: var(--sentence-fg);
}
[data-ui="sentence"] .tn-cell.g-ii, [data-ui="sentence"] .tn-sw.g-ii {
  background: color-mix(in srgb, var(--sentence-mid) 30%, var(--sentence-bg)); border-color: var(--sentence-mid); color: var(--sentence-fg); border-width: 2px;
}
[data-ui="sentence"] .tn-cell.g-low, [data-ui="sentence"] .tn-sw.g-low {
  background: color-mix(in srgb, var(--sentence-warn) 34%, var(--sentence-bg)); border-color: var(--sentence-warn); color: var(--sentence-fg); border-width: 2px;
}
[data-ui="sentence"] .tn-cell.g-high, [data-ui="sentence"] .tn-sw.g-high {
  background: color-mix(in srgb, var(--sentence-hot) 38%, var(--sentence-bg)); border-color: var(--sentence-hot); color: var(--sentence-fg); border-width: 3px;
}

/* ---- P11a. 流程圖最下方的「要不要驗基因」區塊 ---- */
[data-ui="sentence"] .bc-gene { border-top: 1px solid var(--sentence-line2); }
[data-ui="sentence"] .bc-gene-h {
  font-family: var(--sentence-mono); color: var(--sentence-fg2);
  border-bottom-color: var(--sentence-line2);
}
[data-ui="sentence"] .bc-gene-n { color: var(--sentence-dim); }
[data-ui="sentence"] .bc-gene .bc-gene-list { font-size: 12px; line-height: 1.72; color: var(--sentence-fg2); }
[data-ui="sentence"] .bc-gene .bc-gene-list li b { color: var(--sentence-fg); }
[data-ui="sentence"] .bc-gene .bc-gene-list li.ev { color: var(--sentence-dim); font-size: 11px; }
[data-ui="sentence"] .bc-gene .bc-gene-list li.hd { margin-left: -1.2em; }
[data-ui="sentence"] .bc-gene .bc-gene-list .rx-h {
  font-family: var(--sentence-mono); color: var(--sentence-fg); border-bottom-color: var(--sentence-line2);
}
[data-ui="sentence"] .bc-gene .bc-gene-list .rx-sub { color: var(--sentence-dim); }
[data-ui="sentence"] .bc-gene .bc-gene-list ul.rec-sub { font-size: 11.5px; }
[data-ui="sentence"] .bc-gene .bc-gene-list .drug {
  background: var(--sentence-bg2); border-color: var(--sentence-line2); color: var(--sentence-fg);
}

/* ---- P11b. 流程圖最下方的「本路徑用藥」藥卡區塊 ---- */
[data-ui="sentence"] .bc-drugbox { border-top: 1px solid var(--sentence-line2); }
[data-ui="sentence"] .bc-drugbox-h {
  font-family: var(--sentence-mono); color: var(--sentence-fg2);
  border-bottom-color: var(--sentence-line2);
}
[data-ui="sentence"] .bc-drugbox-n { color: var(--sentence-dim); }
[data-ui="sentence"] .bc-drugbox-note { color: var(--sentence-dim); }
[data-ui="sentence"] .bc-drugbox-note b { color: var(--sentence-fg2); }

/* ---- P12. 大腸直腸癌補充參考面板（.crc-supp 本身；.rec-detail 系列徽章
   已併入 P7／P8） ---- */
[data-ui="sentence"] .crc-supp { border-top: 1px solid var(--sentence-line2); padding-top: 14px; }
[data-ui="sentence"] .crc-supp-h { font-family: var(--sentence-serif); font-size: 15.5px; font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .crc-supp > details > summary { color: var(--sentence-fg); font-family: var(--sentence-sans); }
[data-ui="sentence"] .crc-supp > details > summary:hover { color: var(--sentence-dim); }
[data-ui="sentence"] .crc-supp table { border-collapse: collapse; }
[data-ui="sentence"] .crc-supp th, [data-ui="sentence"] .crc-supp td { border: 1px solid var(--sentence-line); color: var(--sentence-fg2); }
[data-ui="sentence"] .crc-supp th { background: var(--sentence-bg2); font-family: var(--sentence-mono); color: var(--sentence-fg); }

/* ---- P13. KPS 分級表／診斷細節摺疊（.kps-details／.dx-details） ---- */
[data-ui="sentence"] .kps-details table { border-collapse: collapse; font-size: 11px; }
[data-ui="sentence"] .kps-details td { border: 1px solid var(--sentence-line); padding: 3px 8px; color: var(--sentence-fg2); }
[data-ui="sentence"] .kps-details td:first-child { font-family: var(--sentence-mono); font-weight: 700; color: var(--sentence-fg); }
/* 左欄不要撐開：欄名換行沒關係，換來右欄內文可以攤開，整張表短很多 */
[data-ui="sentence"] .kps-details td:first-child { white-space: normal; width: 20%; }
[data-ui="sentence"] .flow-rec .rec-detail.rec-more > li > details { margin: 0; }
/* 觸控目標的 min-height:44px（第 961 行那條）在建議卡末尾會變成一整排空白。
   那幾條參考資料現在是一般的 li（.rec-more），行距要和其他段落一致，
   所以這裡把 min-height 收掉、行距交還給 li 本身；其他地方的 44px 不動。 */
[data-ui="sentence"] .flow-rec .rec-detail.rec-more > li > details > summary {
  min-height: 0; display: block; line-height: inherit;
}
[data-ui="sentence"] .dx-details summary { color: var(--sentence-dim); font-family: var(--sentence-mono); text-underline-offset: 2px; }
[data-ui="sentence"] .dx-details .dx-h { font-family: var(--sentence-sans); font-weight: 700; color: var(--sentence-dim); }
[data-ui="sentence"] .dx-details ul.dx-list { color: var(--sentence-dim); }
[data-ui="sentence"] .dx-details ul.dx-list b { color: var(--sentence-fg2); }

/* ---- P14. 主要文獻 References ---- */
[data-ui="sentence"] .onc-reflist { border-top: 1px solid var(--sentence-line2); margin-top: 16px; padding-top: 10px; }
[data-ui="sentence"] .onc-reflist .rl-h { font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--sentence-dim); }
[data-ui="sentence"] .onc-reflist a { color: var(--sentence-fg2); font-family: var(--sentence-mono); font-size: 11.5px; text-decoration: none; }
[data-ui="sentence"] .onc-reflist a:hover { color: var(--sentence-fg); text-decoration: underline; }
[data-ui="sentence"] .onc-reflist a:before { color: var(--sentence-dim); }

/* ── §Q4 的覆蓋徽章沿用，這裡只補 flex 基線對齊 ──────────────────────
       （本段開頭的 `/*` 原本漏掉了，於是這一整段說明被當成 CSS 解析，
         連同它後面第一條規則 `.sai-dname .cov-tag.sai-tier` 一起被丟掉。）
       顏色／線型／字級一律沿用 §Q4（`[data-ui="sentence"] button.cov-tag,
       [data-ui="sentence"] span.cov-tag` 與 `.cov-tag.sy-hi/.yes/.partial`）。
       這裡只補一件 §Q4 管不到的事：它原本長在藥卡的 `.dc-cov` 裡（block 容器），
       現在改長在 `.sai-dname` 這個 `align-items: baseline` 的 flex 容器裡。
       **沒有改任何顏色、線型或字級**——改了就不是「與藥卡上同一顆徽章」了。
       選擇器特異度 (0,4,0)（`[data-ui]` ＋ `.sai-dname` ＋ `.cov-tag`
       ＋ `.sai-tier`），高於 §Q4 的 (0,2,1)／(0,3,0)。但它**只宣告
       `align-self`** 這一個 §Q4 完全沒有寫的屬性，所以誰高誰低都不影響四級的
       顏色與線型——不必靠併入順序決勝，放哪裡都是 §Q4 說了算。

     · `.sai-covhit .sai-path` ── `.sai-covhit` 是新的修飾類別（只掛在覆蓋菌種
       命中的那幾列）。既有 §12 的 `.sai-path` 是 (0,2,0)，這裡是 (0,3,0)，
       **只加 `font-weight`**，字級／字距／行高／顏色全部沿用 §12 那一條。
       目的：麵包屑末端那句「› 涵蓋 ESBL」是這一列存在的理由（它回答「為什麼
       這顆藥會出現在這裡」），要比一般麵包屑再重一點點，但仍然是 9.5px 的
       mono 小字——主角還是下一行的學名。

   刻意沒做的事
   ──────────────────────────────────────────────────────────────────────
   · **沒有給這一組另外的底色或左邊界。** 「這一組跟藥名命中不一樣」已經由三件
     既有元件講清楚了：分組標頭（依覆蓋菌種 / BY ORGANISM COVERAGE）、分組副標
     （命中徽章：ESBL（11 種）· 只列強效／涵蓋／變異三級…）、以及每一列的
     徽章本身。再加底色是第四重編碼，只會讓清單變花。
   · **沒有改 `.sent-ask-list` 的 max-height（60vh）。** 這一組 cap 是 30 筆，
     比其他組的 12 長，但清單本來就會自己捲，而且分組標頭是 sticky 的
     （§1，1167 行），捲到第 20 筆時「現在在看依覆蓋菌種這一組」仍然看得見。
   · **沒有為窄螢幕另外收字級。** 徽章是 §Q4 的 20px 固定高 ＋ 9.5px mono，
     430×932／390×844 × 亮暗四種組合實測 overflow_x 皆為 0、console 錯誤 0
     （`.sai-dname` 本來就 flex-wrap，徽章塞不下時整顆換行，不會把清單撐寬）。
   ═══════════════════════════════════════════════════════════════════════ */

/* ── §16 覆蓋菌種命中那一列的分級徽章 ─────────────────────────────────
   `.sai-dname` 是 `display:flex; align-items:baseline`（§3，1207 行）。
   徽章是 20px 高的 inline-flex 盒子，它自己的基線比 14px 學名的基線高，
   基線對齊的結果是**學名整行被往下推**、那一行也跟著長高。

   實測（430×932 與 390×844 兩個尺寸數字相同，查詢字「厭氧」，量 6 列）：
     不加這一條： .sai-dname 20.3px、.sent-ask-item 71.8px，
                  學名 <em> 的框頂比徽章框頂低 1.5px（看得出來沒對齊）。
     加了這一條： .sai-dname 20.0px、.sent-ask-item 71.4px，
                  學名 <em> 與徽章框頂齊平（0px）。
   也就是它換到的是**齊平**，不是省高度（每列只差 0.4px）——寫清楚免得日後
   有人以為這條是在做版面壓縮而把它調大。

   `flex: none` 試過但**沒有留**：同樣兩個尺寸量下來，加或不加，徽章寬度都是
   43.4px（`變異`／`涵蓋`）與 41.4px（`強效`），一次都沒有被壓縮過——
   flex 項目的 `min-width:auto` 已經擋住了。沒有量到效果的規則不留在這裡。 */
[data-ui="sentence"] .sai-dname .cov-tag.sai-tier {
  align-self: center;
}

/* ── §17 覆蓋菌種命中那一列的麵包屑 ───────────────────────────────────
   「抗生素指引 › 藥物查詢 › 涵蓋 ESBL」。只加字重，其餘沿用 §12。 */
[data-ui="sentence"] .sai-covhit .sai-path {
  font-weight: 600;
}

/* ═══ Q1. 模式分頁列（.abx-modes／.abx-mode） ═══════════════════════════════
   打 antibiotics.css 的 `.abx-modes`(0,1,0)／`.abx-mode`(0,1,0)／
   `.abx-mode.active`(0,2,0)。視覺語彙直接沿用 J 段的 .tab-row/.tab-btn：
   2px 墨線當基線、分頁是無底色的髮絲框、選中才反白。 */
[data-ui="sentence"] .abx-modes {                      /* (0,2,0) > (0,1,0) */
  border-bottom: 2px solid var(--sentence-fg);
  gap: 5px; margin-bottom: 16px; padding-bottom: 0;
}
[data-ui="sentence"] button.abx-mode {                 /* (0,2,1) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 11.5px; letter-spacing: .04em;
  background: transparent; color: var(--sentence-dim);
  border: 1px solid var(--sentence-line2); border-bottom: none; border-radius: 0;
  padding: 0 13px; min-height: 45px; position: relative; top: 2px;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background var(--sentence-fast) var(--sentence-ease),
              color var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] button.abx-mode:hover {           /* (0,2,1)+pseudo-class */
  background: var(--sentence-shade); color: var(--sentence-fg); filter: none;
}
[data-ui="sentence"] button.abx-mode.active {          /* (0,3,1) > (0,2,0) */
  color: var(--sentence-fg); background: var(--sentence-bg2);
  border-color: var(--sentence-fg); font-weight: 700;
}
/* antibiotics.css 在 max-width:520px 另給 `.abx-mode{flex:1 1 30%; padding:9px 4px;
   font-size:11.5px}`(0,1,0)。上面那條 (0,2,1) 在窄螢幕也會贏，等於把 flex:1 1 30%
   吃掉、六顆分頁擠成一排會溢出——必須在同樣的斷點補回來。 */
@media (max-width: 520px) {
  [data-ui="sentence"] button.abx-mode {
    flex: 1 1 30%; padding: 0 4px; font-size: 11px; text-align: center;
  }
}


/* ═══ Q2. 搜尋框（.gs-*，僅這兩頁；理由見檔頭「刻意偏離」第 4 點） ═══════════
   打 styles.css 的 `.gs-field`(0,1,0)／`.gs-field .gs-input`(0,2,0)／
   `.gs-field:focus-within`(0,1,0)+pc。id 前綴讓每一條都是 (1,x,y)，穩贏。 */
[data-ui="sentence"] #view-antibiotics .gs-field,
[data-ui="sentence"] #view-drugdb .gs-field {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  padding: 0 12px; gap: 9px;
}
[data-ui="sentence"] #view-antibiotics .gs-field:focus-within,
[data-ui="sentence"] #view-drugdb .gs-field:focus-within {
  border-color: var(--sentence-fg); box-shadow: none;
  outline: 1px solid var(--sentence-fg); outline-offset: 0;
  /* offset 必須是 0，不能是 -2px：.gs-field 本體已經有 1px border，outline 再往內
     縮 2px 就變成兩圈 1px 線中間夾 1px 底色——使用者實機截圖圈出來的「兩個重疊的框」
     就是這個。offset 0 讓 outline 緊貼 border 外側、同色，合成一圈連續 2px 實線。
     不用加粗 border 是因為 border 進版面計算，聚焦當下整條會長高、底下方磚會跳。 */
}
[data-ui="sentence"] #view-antibiotics .gs-field .gs-input,
[data-ui="sentence"] #view-drugdb .gs-field .gs-input {
  font-family: var(--sentence-sans); font-size: 14px; color: var(--sentence-fg);
  padding: 0; background: transparent;
}
[data-ui="sentence"] #view-antibiotics .gs-input::placeholder,
[data-ui="sentence"] #view-drugdb .gs-input::placeholder {
  color: var(--sentence-dim); font-size: 12px;
}
[data-ui="sentence"] #view-antibiotics .gs-icon,
[data-ui="sentence"] #view-drugdb .gs-icon { color: var(--sentence-dim); font-size: 15px; }
[data-ui="sentence"] #view-antibiotics .gs-field:focus-within .gs-icon,
[data-ui="sentence"] #view-drugdb .gs-field:focus-within .gs-icon { color: var(--sentence-fg); }
[data-ui="sentence"] #view-antibiotics button.gs-clear,
[data-ui="sentence"] #view-drugdb button.gs-clear { color: var(--sentence-dim); }
[data-ui="sentence"] #view-antibiotics button.gs-clear:hover,
[data-ui="sentence"] #view-drugdb button.gs-clear:hover { color: var(--sentence-fg); }
[data-ui="sentence"] #view-antibiotics .gs-box,
[data-ui="sentence"] #view-drugdb .gs-box { margin-bottom: 10px; }


/* ═══ Q3. 藥卡本體（.drugcard／summary／.dc-body），兩頁共用 ══════════════════
   打 antibiotics.css 的 `.drugcard`(0,1,0)／`.drugcard summary`(0,1,1)／
   `.drugcard summary:before`(0,1,1)／`.drugcard[open] summary`(0,2,1)／
   `.dc-body`(0,1,0)。
   卡 → 索引列：見檔頭「刻意偏離」第 1 點。 */
[data-ui="sentence"] details.drugcard {                        /* (0,2,1) > (0,1,0) */
  background: transparent; border: 0; border-bottom: 1px solid var(--sentence-line);
  border-radius: 0; margin: 0; scroll-margin-top: 16px;
}
[data-ui="sentence"] details.drugcard[open] {                  /* (0,3,1) */
  border-left: 3px solid var(--sentence-fg); border-bottom-color: var(--sentence-fg);
  padding-left: 11px; margin: 10px 0;
}
[data-ui="sentence"] details.drugcard > summary {              /* (0,2,2) > (0,1,1) */
  padding: 8px 0; gap: 4px 8px; align-items: baseline;
  line-height: 1.35; min-height: 0;
  transition: background var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] details.drugcard > summary:hover { background: var(--sentence-shade); }
/* 展開記號：正式版是 --accent 藍綠的 ▸／▾，換成墨色。字級收到 10px、右邊距 0
   （改由 summary 的 gap 供距），一列省下 2px 寬。 */
[data-ui="sentence"] details.drugcard > summary::before {      /* (0,2,2) > (0,1,1) */
  content: "▸"; font-family: var(--sentence-mono); font-size: 10px;
  color: var(--sentence-dim); margin-right: 0;
}
[data-ui="sentence"] details.drugcard[open] > summary::before { content: "▾"; color: var(--sentence-fg); }
[data-ui="sentence"] details.drugcard[open] > summary {        /* (0,3,2) > (0,2,1) */
  border-bottom: 1px solid var(--sentence-line);
}
[data-ui="sentence"] .drugcard .dc-body { padding: 2px 0 14px; }  /* (0,3,0) > (0,1,0) */

/* 藥名三件組。`.dc-name` 是這一列真正的臨床內容，維持襯線、其餘降成輔助。 */
[data-ui="sentence"] .drugcard .dc-name {                      /* (0,3,0) > (0,1,0) */
  font-family: var(--sentence-serif); font-weight: 500; font-size: 15px;
  letter-spacing: .01em; color: var(--sentence-fg);
}
[data-ui="sentence"] .drugcard .dc-zh {
  font-family: var(--sentence-sans); font-size: 11.5px; color: var(--sentence-fg2); margin-left: 0;
}
[data-ui="sentence"] .drugcard .dc-nameen {
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
}


/* ═══ Q4. 分級徽章 .cov-tag —— 感受性燈號（本輪的重點） ══════════════════════
   打 `.cov-tag`(0,1,0)、`.dc-cov .cov-tag`(0,2,0)、`button.cov-tag`(0,1,1)。
   用 `button.cov-tag`／`span.cov-tag`(0,2,1) 一次贏過三者（見檔頭特異度說明）。

   固定 height:20px + box-sizing:border-box：四級**外框高度完全相同**，
   2px 粗框那一級不會像正式版那樣比鄰居高 2px 把整列頂開。
   padding 收到 0 6px（正式版 2px 8px），省下的橫向空間剛好給燈號立柱，
   一顆徽章的**總寬與正式版持平**——這是不讓收合列多換一行的關鍵。 */
[data-ui="sentence"] button.cov-tag,
[data-ui="sentence"] span.cov-tag {                            /* (0,2,1) */
  box-sizing: border-box; height: 20px; padding: 0 6px;
  display: inline-flex; align-items: center; gap: 4px;
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700;
  letter-spacing: .02em; line-height: 1; white-space: nowrap;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg2); opacity: 1; text-decoration: none;
  transition: background var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] button.cov-tag:hover {
  filter: none; background: var(--sentence-shade); outline: none;
}
/* 最有效那一級是實心的，hover 再疊一層 shade 會把橘底弄濁；改成壓暗一點點。 */
[data-ui="sentence"] button.cov-tag.sy-hi:hover { background: var(--susc-top); filter: brightness(.94); }
[data-ui="sentence"] button.cov-tag:focus-visible {
  outline: 2px solid var(--sentence-fg); outline-offset: 1px;
}

/* ---- 燈號立柱：4px × 11px 的「軌道 + 填充」直條。
   幾何量（填充比例）＝第一重非顏色編碼；黑白列印與色覺缺陷下仍可判讀。
   只掛在四個分級 class 上，`.cov-tag.cat`（無分級的類別標籤）不長立柱。 */
[data-ui="sentence"] .cov-tag.sy-hi::before,
[data-ui="sentence"] .cov-tag.yes::before,
[data-ui="sentence"] .cov-tag.partial::before,
[data-ui="sentence"] .cov-tag.no::before {                     /* (0,3,0)+pseudo-element */
  content: ""; flex: none; align-self: center;
  width: 4px; height: 11px;
  background: linear-gradient(to top,
              currentColor 0 var(--tier-fill),
              var(--sentence-line) var(--tier-fill) 100%);
}

/* ---- 四級。2026-09 換成色票本身的階序：**越亮＝越有效**
   （深梅 <60 → 酒紅 60–79 → 加深緋紅 80–89 → 實心橘 ≥90，見 css/styles.css 的
   --susc-*）。明度單調遞增，所以「哪一級比較好」不靠色相也讀得出來；
   立柱的填充比例仍是第一重編碼、線型是第二重，色相是第三重。
   最有效那一級**改成實心填色**：徽章的字只有 9.5px，橘 #ed893a 當字色在米白上
   只有 2.15（AA 要 4.5），反過來拿它當底、配墨字則是 6.48——而且它因此成為整條
   階序裡最亮最重的一顆，正是「最有效」該有的份量。 */
[data-ui="sentence"] .cov-tag.sy-hi {                          /* (0,3,0) > (0,2,0) */
  --tier-fill: 100%;
  color: var(--susc-top-ink); background: var(--susc-top);
  border: 2px solid var(--susc-top); font-weight: 800;
}
[data-ui="sentence"] .cov-tag.yes {                            /* (0,3,0) */
  --tier-fill: 66%;
  color: var(--susc-3); border: 1px solid currentColor;
}
[data-ui="sentence"] .cov-tag.partial {                        /* (0,3,0) */
  --tier-fill: 33%;
  color: var(--susc-2); border: 1px dashed currentColor;
}
/* `no` 的邊框用 --sentence-dim 而不是 --sentence-line2：邊框在這裡是**承重的
   分級線索**（線型是第二重編碼），適用 WCAG 1.4.11 非文字對比 ≥3:1。
   實測 line2 對骨白底只有 2.18:1（不合格），dim 是 4.27:1（合格）。
   其餘四級的邊框都是 currentColor，跟著字色走，自然過關（5.31–8.00）。 */
[data-ui="sentence"] .cov-tag.no {                             /* (0,3,0) */
  --tier-fill: 12%;
  color: var(--susc-1); border: 1px dotted currentColor;
  font-weight: 400; text-decoration: line-through; opacity: 1;
}
[data-ui="sentence"] button.cov-tag.no:hover { opacity: 1; background: var(--sentence-shade); }
/* 無分級的單一類別標籤（抗結核／抗病毒…，js 的 catBtn）：中性、不長燈號，
   免得被誤讀成某一級。
   字色用 fg2 不用 dim：dim 在亮色主題對骨白底是 4.27:1，9.5px 小字不到
   WCAG AA 的 4.5（實測值，不是估的）。這顆徽章寫的是藥物類別，是內容不是裝飾。 */
[data-ui="sentence"] .cov-tag.cat {                            /* (0,3,0) > (0,2,0) */
  color: var(--sentence-fg2); border: 1px solid var(--sentence-line2);
  letter-spacing: .08em; font-weight: 700;
}

/* ---- 徽章列容器：正式版 gap 4px / margin-top 8px，收成 3px / 5px。 */
[data-ui="sentence"] .dc-cov { gap: 3px 4px; margin-top: 5px; }        /* (0,2,0) > (0,1,0) */
[data-ui="sentence"] .cov-tags { gap: 3px 4px; margin-top: 6px; }
[data-ui="sentence"] .dc-susc { margin-top: 10px; }
[data-ui="sentence"] .dc-susc .dc-cov { margin-top: 0; }               /* (0,3,0) > (0,2,0) */
/* 感受性區的抬頭（js 印的「台大 2025 上半年在地感受性 %S · ≥90 粗框 /…」）。
   它是燈號的圖例，字要讀得到 → fg2 不用 dim。 */
[data-ui="sentence"] .dc-susc-cap {                                    /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; line-height: 1.55;
  letter-spacing: .02em; color: var(--sentence-fg2); margin-bottom: 5px;
}


/* ═══ Q5. 類別徽章 .dc-class（藥卡列首右端） ═══════════════════════════════
   打 `.dc-class`(0,1,0) 與 `button.cov-tag, button.dc-class`(0,1,1)。 */
[data-ui="sentence"] .dc-class {                               /* (0,2,0) > (0,1,1)：b 2>1 */
  box-sizing: border-box; height: 18px; padding: 0 6px; margin-left: auto;
  display: inline-flex; align-items: center;
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 400;
  letter-spacing: .04em; line-height: 1; white-space: nowrap;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg2);
}
[data-ui="sentence"] button.dc-class:hover {
  filter: none; background: var(--sentence-shade); border-color: var(--sentence-fg); outline: none;
}
[data-ui="sentence"] button.dc-class:focus-visible {
  outline: 2px solid var(--sentence-fg); outline-offset: 1px;
}


/* ═══ Q6. 藥卡展開內容：欄位、劑量條列 ═════════════════════════════════════
   打 `.dc-field`(0,1,0)／`.dc-flabel`(0,1,0)／`.dc-ftext`(0,1,0)／
   `.dose-fmt .dl-*`(0,2,0)／`.dose-fmt .dl-item::before`(0,2,1)。
   欄位標籤加一條下髮絲線：這是 04 把「標籤 / 內容」分層的固定手法
   （同 J 段 .sys-sub、P 段 .onc-sec-h），也是「這一段真的套到設計語言了」
   最直接的視覺證據。 */
[data-ui="sentence"] .drugcard .dc-field { margin-top: 12px; }         /* (0,3,0) */
[data-ui="sentence"] .drugcard .dc-field:first-child { margin-top: 6px; }
[data-ui="sentence"] .dc-flabel {                                      /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-dim);
  border-bottom: 1px solid var(--sentence-line); padding-bottom: 3px; margin-bottom: 5px;
}
[data-ui="sentence"] .dc-ftext {                                       /* (0,2,0) > (0,1,0) */
  font-size: 12.5px; line-height: 1.7; color: var(--sentence-fg2);
}
[data-ui="sentence"] .dc-ftext b, [data-ui="sentence"] .dc-ftext strong { color: var(--sentence-fg); }
[data-ui="sentence"] .dc-ftext .sub { font-family: var(--sentence-mono); color: var(--sentence-dim); }
/* 「禁忌與警示」欄：正式版 --accent2（磚紅）。這是臨床嚴重度，可以用 hot。 */
[data-ui="sentence"] .dc-ftext.dc-warn, [data-ui="sentence"] .dc-warn { color: var(--sentence-hot); }

[data-ui="sentence"] .dose-fmt .dl-head,
[data-ui="sentence"] .dose-fmt .dl-sect {                              /* (0,3,0) > (0,2,0) */
  color: var(--sentence-fg); font-weight: 600;
}
/* 給藥方式／劑量階段（.dl-stage，drug-database.css 新增）：比 .dl-sect 低一層，
   用 fg2 而不是 fg——縮排已經表達了層級，顏色再重一次就變成兩個同級標題。 */
[data-ui="sentence"] .dose-fmt .dl-stage { color: var(--sentence-fg2); font-weight: 600; }
[data-ui="sentence"] .dose-fmt .dl-sub { color: var(--sentence-dim); }
[data-ui="sentence"] .dose-fmt .dl-item::before { color: var(--sentence-fg2); }   /* (0,3,1) > (0,2,1) */
[data-ui="sentence"] .dose-fmt .dl-sub::before { color: var(--sentence-dim); }


/* ═══ Q7. 藥卡內的小徽章：懷孕分級／剝半磨粉／飲食交互作用 ══════════════════
   `.crush-tag.yes/.no`(0,2,0)、`.food-sev.hi/.mid`(0,2,0) → 補到 (0,3,0)。
   這兩組本來就自帶「可／不可」「禁忌／重大」的**文字**，非顏色編碼已經在
   字面上；本檔再補一重線型（實線 vs 虛線），黑白下也分得出來。 */
[data-ui="sentence"] .dc-preg {                                        /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10.5px; font-weight: 700;
  color: var(--sentence-fg); background: transparent;
  border: 1px solid var(--sentence-fg); border-radius: 0; padding: 1px 7px;
}
[data-ui="sentence"] .dc-pregnote { color: var(--sentence-fg2); font-size: 11.5px; }

[data-ui="sentence"] .crush-tag,
[data-ui="sentence"] .food-sev {                                       /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700;
  border-radius: 0; padding: 1px 7px; letter-spacing: .03em; background: transparent;
}
[data-ui="sentence"] .crush-tag.yes { color: var(--sentence-calm); border: 1px solid currentColor; }
[data-ui="sentence"] .crush-tag.no  { color: var(--sentence-hot);  border: 1px dashed currentColor; }
[data-ui="sentence"] .food-sev.hi   { color: var(--sentence-hot);  border: 1px solid currentColor; }
[data-ui="sentence"] .food-sev.mid  { color: var(--sentence-fg2);  border: 1px dashed var(--sentence-line2); }
[data-ui="sentence"] .crush-note, [data-ui="sentence"] .food-note {
  color: var(--sentence-fg2); font-size: 11.5px; line-height: 1.65;
}
[data-ui="sentence"] .crush-note b, [data-ui="sentence"] .food-note b,
[data-ui="sentence"] .food-name { color: var(--sentence-fg); }


/* ═══ Q8. 藥卡內的兩張小表（renal-tbl／inj-tbl） ═════════════════════════════
   **只換顏色與線型，一個幾何量都不動**——理由見檔頭「刻意偏離」第 3 點。
   沒有 display、沒有 font-size／font-family、沒有 padding／white-space，
   `td:first-child{width:34%|30%}` 由正式版那一條繼續生效（層疊逐宣告，
   本檔沒有覆蓋 width，就等於保留）。 */
[data-ui="sentence"] table.renal-tbl td,
[data-ui="sentence"] table.inj-tbl td {                        /* (0,2,2) > (0,1,2) */
  border-bottom: 1px dotted var(--sentence-line); color: var(--sentence-fg2);
}
/* 正式版這一欄是 --muted，對紙色實測 6.10:1；--sentence-dim 只有 4.27，
   換過去等於讓欄位名比正式版更難讀。用 fg2（7.90:1）。 */
[data-ui="sentence"] table.renal-tbl td:first-child,
[data-ui="sentence"] table.inj-tbl td:first-child {            /* (0,3,2) > (0,2,2) */
  color: var(--sentence-fg2);
}
[data-ui="sentence"] table.renal-tbl tr:last-child td,
[data-ui="sentence"] table.inj-tbl tr:last-child td {          /* (0,2,3) — 與正式版同特異度，
   但本檔在 antibiotics.css **之前**載入，會輸。補一個 class 到 (0,3,3)：*/
  border-bottom: none;
}
[data-ui="sentence"] table.renal-tbl tbody tr:last-child td,
[data-ui="sentence"] table.inj-tbl tbody tr:last-child td { border-bottom: none; }  /* (0,2,4) > (0,1,3) */
/* 同一支藥多列時的分隔列（drug-database.css，(0,2,3)）→ 補到 (0,3,3)。
   只換顏色，height:6px／padding:0 原樣保留。 */
[data-ui="sentence"] table.renal-tbl tr.tbl-sep td {           /* (0,3,3) > (0,2,3) */
  border-bottom: 1px solid var(--sentence-line2);
}

/* 輸注流速調整表（.dc-titr／table.titr-tbl，drug-database.css 新增）。
   與 renal-tbl 不同，這張是**五欄對照表**而不是鍵值表，所以除了顏色線型，
   表頭也要處理——正式版的表頭是 accent 藍字配 --soft-bg 藍灰底，在骨白紙上
   會變成整張表最搶眼的一條。改成 04 既有的表頭手法（同 F 段 table.ref／
   score-ref 的 th）：mono 小字、dim 灰、只留一條 line2 實線。

   目標治療區間那列照抄 F 段 `table.ref tr.ref-current` 的寫法——shade 底、
   粗體、fg 字、第一欄 ▶ 前綴。那是全站「這一列就是你要的」的固定表達，
   不另外發明；▶ 給 calm 墨綠（A 段定義的「低／安全」），與這一列的語意
   （在治療區間內、不用動）一致，而且顏色只是第四重線索（底色／粗體／
   ▶ 符號／欄內的 No change 文字本身都說得出來）。

   容器：正式版的 2px 圓角與 --box-bg 底在這裡都要收掉（--sentence-radius 是 0，
   04 不用填色盒），只留一條框線；橫向捲動的幾何量不動。 */
[data-ui="sentence"] .dc-titr-cap {                            /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .04em;
  color: var(--sentence-fg);
}
[data-ui="sentence"] .dc-titr-cap span {                       /* (0,2,1) > (0,1,1) */
  color: var(--sentence-dim);
}
[data-ui="sentence"] .dc-titr-wrap {                           /* (0,2,0) > (0,1,0) */
  background: transparent; border: 1px solid var(--sentence-line);
  border-radius: var(--sentence-radius);
}
[data-ui="sentence"] table.titr-tbl th {                       /* (0,2,2) > (0,1,2) */
  font-family: var(--sentence-mono); letter-spacing: .1em;
  color: var(--sentence-dim); background: transparent;
  border-bottom: 1px solid var(--sentence-line2);
}
[data-ui="sentence"] table.titr-tbl td {                       /* (0,2,2) > (0,1,2) */
  border-bottom: 1px dotted var(--sentence-line); color: var(--sentence-fg2);
}
[data-ui="sentence"] table.titr-tbl td:first-child,
[data-ui="sentence"] table.titr-tbl td:nth-child(2) {          /* (0,3,2) > (0,2,2) */
  font-family: var(--sentence-mono); color: var(--sentence-fg2);
}
[data-ui="sentence"] table.titr-tbl tbody tr:last-child td { border-bottom: none; }
[data-ui="sentence"] table.titr-tbl tr.titr-hi td {            /* (0,3,3) > (0,2,3) */
  background: var(--sentence-shade); font-weight: 700; color: var(--sentence-fg);
}
[data-ui="sentence"] table.titr-tbl tr.titr-hi td:first-child {  /* (0,4,3) > (0,3,3) */
  box-shadow: none; color: var(--sentence-fg);
}
[data-ui="sentence"] table.titr-tbl tr.titr-hi td:first-child::before {
  content: "▶ "; color: var(--sentence-calm);
}
[data-ui="sentence"] .dc-titr-note {                           /* (0,2,0) > (0,1,0) */
  color: var(--sentence-fg2);
}


/* ═══ Q9. 藥物資料庫：分類方磚 .db-cat ══════════════════════════════════════
   打 `.db-cat`(0,1,0)／`.db-cat.active`(0,2,0)／`.db-cat span`(0,1,1)／
   `.db-cat.active span`(0,2,1)。
   選中態用反白（同 I 段 .flow-opt.selected）——而且**裡面的品項數 <span>
   一定要改吃 inherit**：ui-sentence.css 前面那次「反白底 + 自帶顏色的子元素
   = 隱形字」的實機回報就是這樣來的，這裡不重蹈。 */
[data-ui="sentence"] .db-cats { gap: 5px; margin-bottom: 8px; }
[data-ui="sentence"] button.db-cat {                           /* (0,2,1) > (0,1,0) */
  box-sizing: border-box; height: 30px; padding: 0 10px;
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--sentence-sans); font-size: 12px; line-height: 1;
  background: transparent; color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-radius: 0;
  transition: background var(--sentence-fast) var(--sentence-ease);
}
[data-ui="sentence"] button.db-cat:hover {
  background: var(--sentence-shade); border-color: var(--sentence-fg);
}
[data-ui="sentence"] button.db-cat span {                      /* (0,2,2) > (0,1,1) */
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-fg2);
}
[data-ui="sentence"] button.db-cat.active {                    /* (0,3,1) > (0,2,0) */
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg);
  border-color: var(--sentence-inv-bg); font-weight: 600;
}
[data-ui="sentence"] button.db-cat.active span {               /* (0,3,2) > (0,2,1) */
  color: inherit; opacity: .72;
}


/* ═══ Q10. 藥物資料庫：藥理機轉籤 .db-clschip／.db-clsmore ═══════════════════ */
[data-ui="sentence"] .db-clsrow { gap: 4px; margin-bottom: 8px; }
[data-ui="sentence"] .db-cls-lbl {                             /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] button.db-clschip {                       /* (0,2,1) > (0,1,0) */
  box-sizing: border-box; height: 21px; padding: 0 8px;
  display: inline-flex; align-items: center; gap: 5px;
  font-family: var(--sentence-sans); font-size: 11px; line-height: 1;
  background: transparent; color: var(--sentence-fg2);
  border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] button.db-clschip:hover {                 /* (0,2,1)+pc > (0,2,0) */
  filter: none; background: var(--sentence-shade); border-color: var(--sentence-fg);
}
[data-ui="sentence"] button.db-clschip span {                  /* (0,2,2) > (0,1,1) */
  font-family: var(--sentence-mono); font-size: 9px; color: var(--sentence-fg2); opacity: 1;
}
[data-ui="sentence"] button.db-clschip.active {                /* (0,3,1) > (0,2,0) */
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg);
  border-color: var(--sentence-inv-bg); font-weight: 600;
}
[data-ui="sentence"] button.db-clschip.active span { color: inherit; opacity: .72; }  /* (0,3,2) */
[data-ui="sentence"] button.db-clsmore {                       /* (0,2,1) > (0,1,0) */
  box-sizing: border-box; height: 20px; padding: 0 8px;
  display: inline-flex; align-items: center;
  font-family: var(--sentence-mono); font-size: 10px; line-height: 1;
  background: transparent; color: var(--sentence-dim);
  border: 1px dashed var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] button.db-clsmore:hover {                 /* (0,2,1)+pc > (0,2,0) */
  background: var(--sentence-shade); border-color: var(--sentence-fg); color: var(--sentence-fg);
}


/* ═══ Q11. 藥物資料庫：列首小標、含量分頁、機轉徽章、頁尾、計數 ════════════ */
/* 列首的前綴小標（兒／管N／專案／《O》）與含量。兩者都可能長字串換行，
   所以**不設固定高度**，只設 line-height——固定高度會把換行的內容裁掉。 */
[data-ui="sentence"] .db-tag {                                 /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; line-height: 1.5;
  color: var(--sentence-fg2); background: transparent;
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 0 5px;
}
[data-ui="sentence"] .db-strength {                            /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; line-height: 1.5;
  color: var(--sentence-fg2); background: transparent;
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 0 5px;
}
[data-ui="sentence"] .db-moas { gap: 5px; }
[data-ui="sentence"] .db-moa {                                 /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10.5px; line-height: 1.6;
  color: var(--sentence-fg2); background: transparent;
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 0 7px;
}
/* 含量規格分頁：主要控制項，維持 M 段的 45px（見檔頭「刻意偏離」第 5 點），
   只換形狀與顏色。 */
[data-ui="sentence"] .db-vtabs { gap: 5px; margin: 12px 0 4px; }
[data-ui="sentence"] .db-vtabs-lbl {                           /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] button.db-vtab {                          /* (0,2,1) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 11px; padding: 0 11px;
  display: inline-flex; align-items: center;
  background: transparent; color: var(--sentence-fg2);
  border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] button.db-vtab:hover { filter: none; background: var(--sentence-shade); }
[data-ui="sentence"] button.db-vtab.active {                   /* (0,3,1) > (0,2,0) */
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg);
  border-color: var(--sentence-inv-bg); font-weight: 600;
}
/* 健保給付規定：可捲動的節錄框。--box-bg 換成 bg2，維持 max-height 不動。 */
[data-ui="sentence"] .db-nhi {                                 /* (0,2,0) > (0,1,0) */
  background: var(--sentence-bg2); border: 1px solid var(--sentence-line);
  border-radius: 0; font-size: 12px; line-height: 1.7; color: var(--sentence-fg2);
}
[data-ui="sentence"] .db-foot {                                /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; line-height: 1.7;
  color: var(--sentence-dim); border-top: 1px solid var(--sentence-line);
}
/* 欄位末尾的來源小字（DDInter 飲食交互作用、流速調整表）：與 .db-foot 同一件事
   ——一條分隔線加一行出處。先前漏收，兩處都還在吃正式版的 --muted-soft／--line。
   leak.py 掃不到它：藥卡要展開才有內容，那支只讀收合狀態的頁面。 */
[data-ui="sentence"] .db-food-src {                            /* (0,2,0) > (0,1,0) */
  color: var(--sentence-dim); border-top: 1px solid var(--sentence-line);
}
/* 健保給付規定欄的兩個新元件（見 js/drug-database.js 的 nhiField()）：
   .db-nhi-warn 是「這一段其實是修訂對照表」的警語，.db-nhi-src 是官方章節出處。
   兩者在正式版用 --accent2／--muted-soft，這裡各自換成造句版色票，
   否則會是 leak.py 判準第 (1) 類的漏網（藥卡要展開才有內容，那支掃不到）。 */
[data-ui="sentence"] .db-nhi-warn {                            /* (0,2,0) > (0,1,0) */
  color: var(--sentence-hot); background: var(--sentence-shade);
  border-left: 2px solid var(--sentence-hot); border-radius: 0; font-size: 11.5px;
}
[data-ui="sentence"] .db-nhi-warn b { color: var(--sentence-fg); }
[data-ui="sentence"] .db-nhi-src {                             /* (0,2,0) > (0,1,0) */
  color: var(--sentence-dim); border-top: 1px solid var(--sentence-line);
}
/* DDInter 飲食交互作用的逐項展開區（.db-food*）——整組先前都沒收，還在吃
   --ink／--muted／--muted-soft／--line／--accent，以及深色模式寫死的 #d3a86a。
   嚴重度沿用 Q7 的三段（hot／warn／dim）；「處置」那條左標線是全區唯一的
   accent，改吃 fg2——04 沒有強調色，層級由線的深淺表達。 */
[data-ui="sentence"] .db-food { border-bottom-color: var(--sentence-line); }
/* antibiotics.css 的 `.drugcard[open] summary` (0,2,1) 是後代選擇器，會一路掃到
   飲食那層的 <summary>。本檔載入在它之前，同分就輸，所以要補到 (0,3,1)。 */
[data-ui="sentence"] .drugcard .db-food > summary {            /* (0,3,1) > (0,2,1) */
  border-bottom-color: var(--sentence-line);
}
[data-ui="sentence"] .db-food > summary::after,
[data-ui="sentence"] .db-food-d { color: var(--sentence-dim); }
[data-ui="sentence"] .db-food-n { color: var(--sentence-fg); }
[data-ui="sentence"] .db-food-l {
  font-family: var(--sentence-mono); color: var(--sentence-dim);
}
[data-ui="sentence"] .db-food-t {
  color: var(--sentence-fg2); border-left-color: var(--sentence-line);
}
[data-ui="sentence"] .db-food-t.mg {                           /* (0,3,0) > (0,2,0) */
  color: var(--sentence-fg); border-left-color: var(--sentence-fg2);
}
[data-ui="sentence"] .db-food-lv { font-family: var(--sentence-mono); }
[data-ui="sentence"] .db-food-lv.lv-3 { color: var(--sentence-hot); }
[data-ui="sentence"] .db-food-lv.lv-2 { color: var(--sentence-warn); }
[data-ui="sentence"] .db-food-lv.lv-1,
[data-ui="sentence"] .db-food-lv.lv-0 { color: var(--sentence-dim); }
[data-ui="sentence"] .db-count,
[data-ui="sentence"] .abx-lookup-count {                       /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .1em;
  color: var(--sentence-fg2); margin-bottom: 7px;
}
[data-ui="sentence"] .db-empty,
[data-ui="sentence"] .db-loading,
[data-ui="sentence"] .bac-empty {                              /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 12px; color: var(--sentence-dim);
}


/* ═══ Q12. 抗生素・藥物查詢分頁專屬的列與鈕 ════════════════════════════════ */
[data-ui="sentence"] .abx-hint {                               /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .1em;
  color: var(--sentence-dim); margin: 14px 0 6px;
}
[data-ui="sentence"] .lookup-sort { gap: 5px; margin: 2px 0 6px; }
[data-ui="sentence"] .lookup-sort-lbl,
[data-ui="sentence"] .lf-lbl {                                 /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] button.abx-sortbtn {                      /* (0,2,1) > (0,1,0) */
  box-sizing: border-box; height: 21px; padding: 0 11px;
  display: inline-flex; align-items: center;
  font-family: var(--sentence-mono); font-size: 10.5px; font-weight: 700; line-height: 1;
  background: transparent; color: var(--sentence-fg2);
  border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] button.abx-sortbtn:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); }
[data-ui="sentence"] button.abx-sortbtn.active {               /* (0,3,1) > (0,2,0) */
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg);
  border-color: var(--sentence-inv-bg);
}
/* 篩選中的晶片（點徽章之後出現的「篩選 ▸ MRSA ×」）。
   `.lf-x` 是真的移除鈕，維持 M 段的 45px 熱區，不放進例外名單。 */
[data-ui="sentence"] .lf-chip {                                /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10.5px; font-weight: 700;
  color: var(--sentence-fg); background: transparent;
  border: 1px solid var(--sentence-fg); border-radius: 0; padding: 0 2px 0 10px;
}
[data-ui="sentence"] button.lf-x { color: var(--sentence-fg); }
/* 「種類」排序時的可摺疊類別標頭（button.bac-group-head，(0,1,1)）。
   div.bac-group-head（依病原菌的菌種分組）也吃同一組視覺。 */
[data-ui="sentence"] .bac-group-head {                         /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-fg2);
  border-bottom: 1px solid var(--sentence-fg); padding-bottom: 4px; margin: 16px 0 6px;
}
[data-ui="sentence"] button.bac-group-head {                   /* (0,2,1) > (0,1,1) */
  background: transparent; border: 0; border-bottom: 1px solid var(--sentence-fg);
}
[data-ui="sentence"] button.bac-group-head:hover {             /* (0,2,1)+pc > (0,1,1)+pc */
  color: var(--sentence-fg); background: var(--sentence-shade); border-bottom-color: var(--sentence-fg);
}
[data-ui="sentence"] button.bac-group-head.collapsed { color: var(--sentence-dim); }
[data-ui="sentence"] .grp-caret { color: var(--sentence-dim); }
[data-ui="sentence"] .grp-count {                              /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-fg2);
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0; padding: 0 5px;
}
[data-ui="sentence"] .grp-allctl { gap: 5px; margin: 2px 0 6px; }


/* ═══ Q13. 抗生素頁另外兩個分頁（依部位／依病原菌）的共用元件 ════════════════
   不在本輪的重點範圍，但它們與「藥物查詢」同頁、同一組藥卡，
   放著不改會變成「同一頁一半骨白一半藍綠」。只做等價換色，不動幾何量。 */
[data-ui="sentence"] .abx-crumb {                              /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10.5px; color: var(--sentence-dim);
}
[data-ui="sentence"] .abx-crumb b { color: var(--sentence-fg); }
[data-ui="sentence"] .abx-crumb .sep { color: var(--sentence-line2); }
[data-ui="sentence"] .abx-type-note { font-size: 11.5px; color: var(--sentence-fg2); }
[data-ui="sentence"] button.abx-back {                         /* (0,2,1) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 11px; padding: 0 12px;
  display: inline-flex; align-items: center;
  background: transparent; color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] button.abx-back:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); }
[data-ui="sentence"] .rgm {                                    /* (0,2,0) > (0,1,0) */
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .rgm.first { border-left: 3px solid var(--sentence-fg); }        /* (0,3,0) */
[data-ui="sentence"] .rgm.alt,
[data-ui="sentence"] .rgm.none { border-left: 3px solid var(--sentence-line2); }
[data-ui="sentence"] .rgm.special { border-left: 3px solid var(--sentence-fg2); }
[data-ui="sentence"] .rgm-role {                               /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700; letter-spacing: .12em;
  border-radius: 0; padding: 1px 8px;
}
[data-ui="sentence"] .rgm.first .rgm-role {                    /* (0,3,0) > (0,2,0) */
  color: var(--sentence-inv-fg); background: var(--sentence-inv-bg);
}
[data-ui="sentence"] .rgm.alt .rgm-role,
[data-ui="sentence"] .rgm.none .rgm-role {                     /* (0,3,0) > (0,2,0) */
  color: var(--sentence-fg2); background: transparent; border: 1px solid var(--sentence-line2);
}
[data-ui="sentence"] .rgm.special .rgm-role {
  color: var(--sentence-fg); background: transparent; border: 1px solid var(--sentence-fg);
}
[data-ui="sentence"] .rgm-label {                              /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-serif); font-weight: 500; font-size: 14px; color: var(--sentence-fg);
}
[data-ui="sentence"] button.drug-chip {                        /* (0,2,1) > (0,1,0) */
  font-family: var(--sentence-sans); font-size: 12.5px; padding: 4px 9px;
  background: transparent; color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-bottom: 2px solid var(--sentence-fg); border-radius: 0;
}
[data-ui="sentence"] button.drug-chip:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); }
[data-ui="sentence"] .drug-chip .dc-en {                       /* (0,2,0) > (0,1,1)：b 2>1 */
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
}
[data-ui="sentence"] .rgm-plus { font-family: var(--sentence-mono); color: var(--sentence-dim); }
[data-ui="sentence"] .rgm-dur {                                /* (0,2,0) > (0,1,0) */
  font-family: var(--sentence-mono); font-size: 10.5px; color: var(--sentence-fg2);
  background: transparent; border: 1px solid var(--sentence-line); border-radius: 0; padding: 3px 8px;
}
[data-ui="sentence"] .rgm-note {
  font-size: 11.5px; color: var(--sentence-fg2);
  border-top: 1px dotted var(--sentence-line);
}
[data-ui="sentence"] button.bac-item {                         /* (0,2,1) > (0,1,0) */
  background: transparent; color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-left: 3px solid var(--sentence-line2);
  border-radius: 0; margin-bottom: 5px;
}
[data-ui="sentence"] button.bac-item:hover {
  background: var(--sentence-shade); border-color: var(--sentence-fg); border-left-color: var(--sentence-fg);
}
[data-ui="sentence"] .bac-item .bi-name {                      /* (0,3,0) > (0,2,0) */
  font-family: var(--sentence-serif); font-weight: 500; font-size: 14px;
}
[data-ui="sentence"] .bac-item .bi-en {
  font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim);
}
[data-ui="sentence"] .bac-crumb-lg b { font-family: var(--sentence-serif); font-weight: 500; }


/* ================================================================
 * R. 藥卡與時間軸型內頁
 *    pathways/cardiogenic-shock.html（體重列／泡法列／五個分頁）
 *    tools/rsi.html／acs.html／pe.html／stroke.html（同一套元件的四份複本）
 *    pathways/swan-ganz.html（只用到 R6 的 .kbox／.lead／.pmid／.cor）
 * ================================================================
 * 使用者實機指出心因性休克「藥物」分頁的藥卡沒有套到本設計。查出來的根因與
 * P 段（癌症頁）同一類：這五頁的藥卡是各自 <style> 內的頁面專屬 class
 * （.dg-*／.dd-*／.tl-*／.rsi-*／.kbox），不走 A–N 段打的全站共用慣例，
 * 所以本檔對它們**一條規則都沒有**——底色、框線、強調色全部原封不動吃
 * css/styles.css 的正式版色票（--panel／--accent／--accent2／--soft-bg），
 * 疊在骨白／深墨綠的造句底色上就是一塊沒有換皮的正式版卡片。
 *
 * 這五頁的 <style> 幾乎逐行相同（藥卡元件當初是複製過去的），所以本段一律
 * 用「不設祖先條件、直接打 class 本身」的寫法，一條規則同時修五頁；
 * 只有 .cs-bar／.dg-mix／.mix-* 是心因性休克獨有（泡法換算），
 * .risk-chip／.big-num 是 acs／pe／stroke 獨有，各自標註在該小節。
 *
 * 特異度：頁面內嵌 <style> 的規則多為單一 class (0,1,0) 或 (0,2,0)，
 * 本檔一律是 [data-ui="sentence"] ＋ 同樣的 class，永遠多一個 attribute，
 * 不必靠來源順序決勝（內嵌 <style> 在 <head> 的位置比外部樣式表**後面**，
 * 同特異度時會贏——這正是不能只寫同特異度選擇器的原因）。
 *
 * 三條共通做法，與 I 段（決策流程）一致：
 *   · 面／塊一律 background: transparent 或 --sentence-bg2，零圓角、零陰影，
 *     界線交給髮絲框——正式版那些 --soft-bg／--accent-soft／--accent2-soft
 *     的淺色填充在本設計裡是雜訊，拿掉之後留白才看得出結構。
 *   · 嚴重度三重編碼：框線粗細 ＋ 文字本身 ＋ 色（hot／warn／calm）。
 *     禁忌症框 3px hot、警示 kbox 2px hot、一般框 1px 髮絲。
 *   · 觸控目標 ≥44px：體重欄、泡法欄、分頁鈕、休克勾選都補到 44。
 * ================================================================ */

/* ---- R1. 頁內設定列（體重／休克狀態）——.cs-bar 心因性休克、.rsi-bar 其餘四頁 ----
   .rsi-bar 是 position:sticky，**底色不能改成 transparent**：捲動時內容會從它
   底下穿過去，透明的貼頂列會讓字疊在字上。.cs-bar 當初已被改成不貼頂（見該頁
   註解），但兩者共用同一組樣式沒有壞處，一併給實色底。
   正式版貼頂時加 box-shadow 區隔，本設計零陰影——改用「貼頂時下緣線加粗到 2px」
   表達同一件事（層級由線寬而非陰影表示，與 A 段的 --sentence-shadow:none 一致）。 */
[data-ui="sentence"] .cs-bar,
[data-ui="sentence"] .rsi-bar {
  background: var(--sentence-bg);
  border-bottom: 1px solid var(--sentence-line2);
  padding: 9px 0 10px; margin-bottom: 14px;
}
[data-ui="sentence"] .rsi-bar.stuck {
  box-shadow: none; border-bottom-width: 2px; border-bottom-color: var(--sentence-fg);
}
[data-ui="sentence"] .cs-bar label,
[data-ui="sentence"] .rsi-bar label {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-dim);
}
/* font-size:16px 不是排版選擇，是 iOS Safari 的門檻：小於 16px 的輸入框
   在聚焦時整頁會自動放大。E 段的 .field-row input 用的也是 16px，同一個理由。 */
[data-ui="sentence"] .cs-bar input[type="number"],
[data-ui="sentence"] .rsi-bar input[type="number"] {
  width: 92px; min-height: 44px; padding: 0 10px;
  font-family: var(--sentence-mono); font-size: 16px; font-weight: 700;
  background: var(--sentence-bg); color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .cs-bar .cs-hint,
[data-ui="sentence"] .rsi-bar .rsi-hint {
  font-family: var(--sentence-mono); font-size: 10.5px; line-height: 1.6; color: var(--sentence-dim);
}
/* 休克勾選（tools/rsi.html）：勾起來代表「這個病人正在休克」，是臨床狀態
   不是裝飾，故用 hot ＋ 2px 框（框寬 ＋ 文字 ＋ 色三重編碼）。 */
[data-ui="sentence"] .rsi-shock {
  min-height: 44px; padding: 0 11px; gap: 7px;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-sans); font-size: 12.5px; color: var(--sentence-fg2);
}
[data-ui="sentence"] .rsi-shock.on {
  background: transparent; border: 2px solid var(--sentence-hot); color: var(--sentence-hot);
}
[data-ui="sentence"] .rsi-shock input { accent-color: var(--sentence-hot); }

/* ---- R2. 頁內分頁列 .rsi-tabs／.rsi-tab ----
   視覺語彙直接沿用 J 段的 .tab-row／.tab-btn（心因性休克那一頁本來就用共用的
   .tab-row，所以那頁不必再改）：2px 墨線當基線、分頁是無底色的髮絲框、選中才反白。
   四頁一致，不讓「同一種東西在不同頁面長不一樣」。 */
[data-ui="sentence"] .rsi-tabs {
  border-bottom: 2px solid var(--sentence-fg); gap: 6px; margin-bottom: 18px;
}
[data-ui="sentence"] button.rsi-tab {
  font-family: var(--sentence-mono); font-size: 11.5px; letter-spacing: .04em;
  background: transparent; color: var(--sentence-dim);
  border: 1px solid var(--sentence-line2); border-bottom: none; border-radius: 0;
  padding: 0 13px; min-height: 44px; position: relative; top: 2px;
  display: inline-flex; align-items: center; justify-content: center;
}
[data-ui="sentence"] button.rsi-tab:hover { background: var(--sentence-shade); color: var(--sentence-fg); }
[data-ui="sentence"] button.rsi-tab.on {
  color: var(--sentence-fg); background: var(--sentence-bg2);
  border-color: var(--sentence-fg); border-bottom: none; font-weight: 700;
}

/* ---- R3. 時間軸（7 Ps／到院後時序）.tl 家族 ----
   幾何完全不動：頁面內嵌那條 .tl-item:before 的 left:-6px 是依「box-sizing:border-box
   ＋ width:10px ＋ border:2px」算出來的騎線位置，改任何一項都會讓圓點偏移
   （該頁註解已寫明這件事）。這裡只換顏色與圓角：正圓 → 方點（本設計零圓角），
   外圈那 2px 由 --paper 換成 --sentence-bg（它的作用是在軸線上挖一圈空隙）。 */
[data-ui="sentence"] .tl { border-left: 2px solid var(--sentence-line2); }
[data-ui="sentence"] .tl-item:before {
  background: var(--sentence-fg); border-color: var(--sentence-bg); border-radius: 0;
}
[data-ui="sentence"] .tl-item.t0:before { background: var(--sentence-hot); }
[data-ui="sentence"] .tl-t {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .tl-item.t0 .tl-t { color: var(--sentence-hot); }
[data-ui="sentence"] .tl-h {
  font-family: var(--sentence-serif); font-size: 16px; font-weight: 500; color: var(--sentence-fg);
}
[data-ui="sentence"] .tl-h .en {
  font-family: var(--sentence-mono); font-size: 10.5px; font-weight: 400; color: var(--sentence-dim);
}
[data-ui="sentence"] .tl-b { font-size: 12.5px; line-height: 1.75; color: var(--sentence-fg2); }
[data-ui="sentence"] .tl-b b, [data-ui="sentence"] .tl-b strong { color: var(--sentence-fg); }

/* ---- R4. 藥卡 .dg 家族 ----
   卡片本體照 C 段 .card 的語彙（透明底 ＋ 髮絲框 ＋ 零圓角），但保留左側那道
   實心邊——它是「這一段是一支藥」的辨識記號，四頁的藥卡都靠它在長頁面裡分節。
   .dg.warn（非第一線／有重大警示的藥）把左邊改成 hot：色 ＋ 該卡自己的 .dg-tag
   文字 ＋ 卡內的禁忌症框，仍是三重編碼。 */
[data-ui="sentence"] .dg {
  background: transparent; border: 1px solid var(--sentence-line2);
  border-left: 4px solid var(--sentence-fg); border-radius: 0;
  padding: 13px 14px 11px; margin: 12px 0;
}
[data-ui="sentence"] .dg.warn { border-left-color: var(--sentence-hot); }
[data-ui="sentence"] .dg-head {
  gap: 9px; padding-bottom: 8px; margin-bottom: 2px;
  border-bottom: 1px solid var(--sentence-line);
}
/* 藥名是這張卡的主角：DESIGN-LANGUAGE「相鄰兩級至少差 1.3 倍」——
   19px 對 .dg-zh 的 11.5px 是 1.65 倍，對卡內內文 12px 是 1.58 倍。 */
[data-ui="sentence"] .dg-name {
  font-family: var(--sentence-serif); font-size: 19px; font-weight: 500;
  letter-spacing: .01em; color: var(--sentence-fg);
}
[data-ui="sentence"] .dg-zh { font-size: 11.5px; line-height: 1.6; color: var(--sentence-dim); }
[data-ui="sentence"] .dg-tag {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .06em;
  background: transparent; color: var(--sentence-dim);
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 2px 7px;
}
/* background 必須在這條（(0,3,0)）重申一次，不能只靠上面 .dg-tag 那條：
   頁面內嵌的 `.dg-tag.ctrl{background:var(--accent2-soft)}` 也是兩個 class，
   與 `[data-ui] .dg-tag` 同為 (0,2,0)，而 <style> 在 <head> 內排在外部樣式表
   之後——同特異度時它贏。實測漏掉這一行時，警示標籤仍頂著正式版的淺磚紅底。 */
[data-ui="sentence"] .dg-tag.ctrl {
  background: transparent;
  color: var(--sentence-hot); border-color: var(--sentence-hot); font-weight: 700;
}

/* 劑量帶：正式版是一塊 --soft-bg 的淺色填充；本設計改成上下兩條細線圍出來的
   橫帶，不塗底色。同時把 flex 換成 auto-fit 網格——心因性休克的藥卡最多同時
   列三組劑量（仿單／難治性／指引表 8-3），flex 換行後各組左緣對不齊，
   數字要互相比較就得逐行找起點。 */
[data-ui="sentence"] .dg-dose {
  background: transparent; border-radius: 0;
  border-top: 1px solid var(--sentence-line); border-bottom: 1px solid var(--sentence-line);
  padding: 10px 0 11px; margin: 10px 0 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px 22px; align-items: start;
}
[data-ui="sentence"] .dg-dose > span { min-width: 0; }
[data-ui="sentence"] .dg-dose .dd-k {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .08em;
  line-height: 1.5; color: var(--sentence-dim);
}
/* 值班的人只想看這個：本設計裡藥卡上最大的東西必須是劑量，不是藥名。
   19px 的藥名 vs 這裡的 19px——同級，但藥名是襯線體、劑量是等寬粗體，
   靠字族與字重分主副，不再往上加級（再大就會在 430px 寬把
   「70–140 mg（1.5–2 mg/kg）」這類長字串斷成三行）。 */
[data-ui="sentence"] .dg-dose .dd-v {
  font-family: var(--sentence-mono); font-size: 19px; font-weight: 700;
  line-height: 1.25; color: var(--sentence-fg); overflow-wrap: break-word;
}
[data-ui="sentence"] .dg-dose .dd-v.alt { color: var(--sentence-hot); }
[data-ui="sentence"] .dg-dose .dd-u {
  font-family: var(--sentence-mono); font-size: 11px; font-weight: 400; color: var(--sentence-dim);
}
[data-ui="sentence"] .dg-dose .dd-ml {
  font-family: var(--sentence-mono); font-size: 13px; font-weight: 700;
  color: var(--sentence-fg2); margin-top: 2px;
}

/* 泡法列（僅 pathways/cardiogenic-shock.html）：兩個可改的數字決定整張卡的
   mL/hr，屬於輸入而非閱讀，虛線框沿用正式版的語意（「這裡可以動」），
   只換成髮絲虛線與零圓角。輸入框同 R1 補到 44px／16px。 */
[data-ui="sentence"] .dg-mix {
  border: 1px dashed var(--sentence-line2); border-radius: 0;
  padding: 8px 10px; margin-top: 9px; gap: 7px;
}
[data-ui="sentence"] .dg-mix label {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .dg-mix input[type="number"] {
  width: 78px; min-height: 44px; padding: 0 9px;
  font-family: var(--sentence-mono); font-size: 16px; font-weight: 700;
  background: var(--sentence-bg); color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .dg-mix .mix-u { font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-dim); }
[data-ui="sentence"] .dg-mix .mix-c { font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-fg2); }

[data-ui="sentence"] .dg-kin {
  font-family: var(--sentence-mono); font-size: 11px; line-height: 1.7;
  color: var(--sentence-fg2); margin-top: 9px;
}
[data-ui="sentence"] .dg-kin b { color: var(--sentence-fg); }
[data-ui="sentence"] .dg-grid { gap: 10px 20px; margin-top: 11px; }
/* 優點／缺點兩欄：色只是第三重，前兩重是欄標題文字本身與 ＋／－ 記號。
   ::before 的 content 不進 innerText（本檔頂端已用 cdp.py 實測過），
   所以 parity.py 的逐字比對不會因此判定內容被改。
   正式版這兩個欄標題的綠色是寫死的 #2e6b53／#7fc7a6，不吃任何變數，
   在骨白底上偏暗、在深墨綠底上偏螢光，兩個主題都不屬於本設計的色階。 */
[data-ui="sentence"] .dg-col h4 {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; margin: 0 0 5px;
}
[data-ui="sentence"] .dg-pro h4 { color: var(--sentence-calm); }
[data-ui="sentence"] .dg-con h4 { color: var(--sentence-hot); }
[data-ui="sentence"] .dg-pro h4::before { content: "＋ "; }
[data-ui="sentence"] .dg-con h4::before { content: "－ "; }
[data-ui="sentence"] .dg-col ul { font-size: 12px; line-height: 1.72; color: var(--sentence-fg2); }
[data-ui="sentence"] .dg-col ul b, [data-ui="sentence"] .dg-col ul strong { color: var(--sentence-fg); }
[data-ui="sentence"] .dg-note {
  border-top: 1px dotted var(--sentence-line); padding-top: 7px; margin-top: 9px;
  font-size: 11.5px; line-height: 1.7; color: var(--sentence-fg2);
}
[data-ui="sentence"] .dg-note b { color: var(--sentence-hot); }

/* 禁忌症框：整張卡上唯一「不能給誰」的資訊，急迫度最高，故給最粗的框（3px）
   ——比 R6 的警示 kbox（2px）重、比 I 段的 .flow-rec.rec-urgent（4px）輕，
   全站三種粗細各有所指，不重疊。底色拿掉（正式版是 --accent2-soft 的淺磚紅），
   框 ＋ 標題 ＋ hot 色三重已經足夠，再塗一層底只會把卡片切成兩種底色。 */
[data-ui="sentence"] .dg-ci {
  background: transparent; border: 3px solid var(--sentence-hot); border-radius: 0;
  padding: 9px 11px; margin-top: 11px;
}
[data-ui="sentence"] .dg-ci-t {
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700;
  letter-spacing: .16em; text-transform: uppercase; color: var(--sentence-hot); margin-bottom: 5px;
}
[data-ui="sentence"] .dg-ci ul { font-size: 12px; line-height: 1.75; color: var(--sentence-fg2); }
[data-ui="sentence"] .dg-ci .abs { color: var(--sentence-fg); font-weight: 700; }
[data-ui="sentence"] .dg-ci .ci-k {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .04em;
  font-weight: 700; color: var(--sentence-hot);
}

/* ---- R5. 危險分層小卡 .risk-chip（tools/acs.html、tools/pe.html）----
   四級（高／中高／中低／低）原本只靠左邊那條 3px 的顏色區分，而且中／低兩級
   的色碼是寫死的 #c9902a／#7aa0b4／#2e6b53，不吃任何變數。改成「線寬 ＋ 色」
   兩重再加上卡內本來就有的等級文字（.rc-t），滿足三重編碼。 */
[data-ui="sentence"] .risk-chip {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0; padding: 9px 11px;
}
[data-ui="sentence"] .risk-chip.r-hi  { border-left: 5px solid var(--sentence-hot); }
[data-ui="sentence"] .risk-chip.r-mid,
[data-ui="sentence"] .risk-chip.r-mh  { border-left: 4px solid var(--sentence-warn); }
[data-ui="sentence"] .risk-chip.r-ml  { border-left: 3px solid var(--sentence-dim); }
[data-ui="sentence"] .risk-chip.r-lo  { border-left: 2px solid var(--sentence-calm); }
[data-ui="sentence"] .risk-chip .rc-t {
  font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .08em;
  font-weight: 700; color: var(--sentence-fg); margin-bottom: 3px;
}
[data-ui="sentence"] .risk-chip .rc-b { font-size: 11.5px; line-height: 1.6; color: var(--sentence-fg2); }
/* tools/stroke.html 的 .big-num（到院至溶栓的分鐘數之類）：正式版是 accent2，
   本設計不把一個中性的數字染成危險色，改成最重的墨色。 */
[data-ui="sentence"] .big-num { font-family: var(--sentence-mono); font-weight: 700; color: var(--sentence-fg); }

/* ---- R6. 五頁共用的通用小元件 .kbox／.lead／.pmid／.cor ---- */
[data-ui="sentence"] .kbox {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  padding: 11px 13px; margin: 12px 0; font-size: 12.5px; line-height: 1.75; color: var(--sentence-fg2);
}
[data-ui="sentence"] .kbox b, [data-ui="sentence"] .kbox strong { color: var(--sentence-fg); }
[data-ui="sentence"] .kbox.alert { border: 2px solid var(--sentence-hot); background: transparent; }
[data-ui="sentence"] .kbox-t {
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700;
  letter-spacing: .16em; text-transform: uppercase; color: var(--sentence-dim); margin-bottom: 6px;
}
[data-ui="sentence"] .kbox.alert .kbox-t { color: var(--sentence-hot); }
[data-ui="sentence"] .lead { font-size: 12.5px; line-height: 1.75; color: var(--sentence-fg2); margin: 2px 0 12px; }
[data-ui="sentence"] .lead b, [data-ui="sentence"] .lead strong { color: var(--sentence-fg); }
[data-ui="sentence"] .pmid {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .04em;
  color: var(--sentence-dim); text-decoration: underline; text-decoration-style: dotted;
  text-underline-offset: 3px;
}
[data-ui="sentence"] .pmid:hover { color: var(--sentence-fg); text-decoration-style: solid; }
/* 建議等級徽章 .cor（Class of Recommendation，心因性休克與 swan-ganz 兩頁）：
   Class III 是「不要做／有害」，是這一組裡唯一帶臨床危險的一級，給 hot ＋ 粗框；
   其餘（I／IIa／IIb）維持中性髮絲框，等級高低由徽章上的文字本身表達。 */
[data-ui="sentence"] .cor {
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700; letter-spacing: .06em;
  background: transparent; color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 2px 7px;
}
/* background 同樣要在這條重申（理由見 .dg-tag.ctrl 那段）：頁面內嵌的
   `.cor.c3{background:var(--accent2-soft)}` 與上面那條 `[data-ui] .cor`
   同為 (0,2,0)，內嵌 <style> 排在後面會贏。 */
[data-ui="sentence"] .cor.c3 {
  background: transparent; color: var(--sentence-hot); border: 2px solid var(--sentence-hot);
}

/* ---- R7. 兩個 .def-table 修飾類別 ----
   .dt-rec 的第一欄是一整句建議而不是鍵值。F 段的
   `[data-ui="sentence"] table.def-table td:first-child`（(0,3,2)）特異度高於
   頁面內嵌的 `.def-table.dt-rec td:first-child`（(0,3,1)），結果是把整句建議
   套上等寬 ＋ 粗體 ＋ **white-space:nowrap**——實測心因性休克「支持治療流程」
   分頁的建議表被撐到 1,800px 寬，只能靠 .tw 橫向捲動才看得完。
   這裡補回頁面原本的意圖，特異度 (0,4,2) 高於 F 段那條。 */
[data-ui="sentence"] table.def-table.dt-rec td:first-child {
  font-family: var(--sentence-sans); white-space: normal; font-weight: 400; color: var(--sentence-fg);
}
[data-ui="sentence"] table.def-table.dt-dose td:nth-child(n+2) {
  font-family: var(--sentence-mono); font-size: 11px; line-height: 1.6;
}

/* ---- R8. details 摺疊區的內盒 .box-inner（全站 75 頁，不限本段這五頁）----
   D 段只寫了 .box-inner 的 padding／字級／顏色，沒有碰它的底色與框線，
   於是 css/styles.css:343／378 的 `background:var(--box-bg); border:1px solid var(--line)`
   一路留到現在——外層 details 已經有本設計的框了，裡面再套一個正式版色票的
   淺色盒，就是「框中框、而且內框是另一套配色」。實測 75 個頁面命中。
   外框留給 details 自己，內盒只負責留白。 */
[data-ui="sentence"] details.def-box .box-inner,
[data-ui="sentence"] details.info-box .box-inner {
  background: transparent; border: 0; border-radius: 0; margin-top: 0;
}


/* ================================================================
 * S. 肺動脈導管／Swan-Ganz 頁（pathways/swan-ganz.html）
 * ================================================================
 * 與 R 段同一個根因（頁面內嵌 <style> 的專屬 class 不吃 A–N 段），但這一頁
 * 多了兩件別頁沒有的東西，各自的處理方式寫在下面：
 *
 *   (1) **內嵌 SVG 波形圖**（.wv／.w-*）。線條與標註的顏色是 stroke／fill，
 *       不是 color／background，本檔前面沒有任何一條規則碰得到它們。
 *       規則：波形本身＝墨色（它是內容），格線／軸＝髮絲線，
 *       量測標註＝dim（它是註解），異常波形卡（.wvc.warn）內的波形改 hot。
 *
 *   (2) **`table.sg-out` 的顏色全部寫死**（#fff／#9fb3ae／#ffb59c…）。
 *       這在正式版是對的——它住在 `.result` 裡，而 css/styles.css:406 的
 *       `.result` 是寫死的深色面板（#132126）配淺字，深底淺字自洽。
 *       但 G 段把 `.result` 換成了 `--sentence-bg2`，**亮色主題下那是骨白**，
 *       於是 `td.v{color:#fff}` 變成白字壓在骨白上——實測對比 1.06，
 *       「CI 2.1」這種算出來的數字在亮色主題整欄看不見。
 *       這是本輪掃描才發現的既有缺陷（contrast.py 掃不到它：那支只在
 *       設計**開啟**態掃，而它掃的是「沿父鏈找到的背景色」——這裡父鏈找得到
 *       正確背景，問題出在文字色本身寫死，比值確實低，但該表格預設是空的、
 *       要先輸入 CO／MAP／RA／PAWP 才會長出來，靜態掃描時它沒有內容）。
 *       整組改吃造句色票，順帶把結果數字放大到 17px（值班的人要看的就是它）。
 * ================================================================ */

/* ---- S1. 波形卡 .wvc 家族（與 R4 的 .dg 同一套語彙，維持全站一致）---- */
[data-ui="sentence"] .wvc {
  background: transparent; border: 1px solid var(--sentence-line2);
  border-left: 4px solid var(--sentence-fg); border-radius: 0; padding: 11px 13px 9px; margin: 11px 0;
}
[data-ui="sentence"] .wvc.warn { border-left-color: var(--sentence-hot); }
[data-ui="sentence"] .wvc-t { font-family: var(--sentence-serif); font-size: 15px; font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .wvc-n {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .06em;
  background: transparent; color: var(--sentence-dim);
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 2px 7px;
}
[data-ui="sentence"] .wvc.warn .wvc-n {
  background: transparent; color: var(--sentence-hot); border-color: var(--sentence-hot); font-weight: 700;
}
[data-ui="sentence"] .wvc-b { font-size: 12.5px; line-height: 1.75; color: var(--sentence-fg2); }
/* (0,2,1)：頁面內嵌的 `.wvc-b b{color:var(--ink)}` 與 A 段的 `[data-ui] b` 同為
   (0,1,1)，內嵌 <style> 靠來源順序贏——所以這一條非寫不可，不能只靠 A 段。 */
[data-ui="sentence"] .wvc-b b, [data-ui="sentence"] .wvc-b strong { color: var(--sentence-fg); }

/* ---- S2. 內嵌 SVG 波形（.w-*）----
   壓力波本身是這一頁的臨床內容，給最重的墨色；格線、軸、量測引線、標註
   一律退到髮絲線與 dim，讓波形的形狀是唯一會先被看到的東西。
   異常波形卡內的波形改 hot：卡片左邊界（S1）＋ 卡上的徽章文字 ＋ 波形顏色，
   仍是三重編碼。 */
[data-ui="sentence"] .w-tr   { stroke: var(--sentence-fg); }
[data-ui="sentence"] .wvc.warn .w-tr { stroke: var(--sentence-hot); }
[data-ui="sentence"] .w-grid { stroke: var(--sentence-line); }
[data-ui="sentence"] .w-axis { stroke: var(--sentence-line2); }
[data-ui="sentence"] .w-div  { stroke: var(--sentence-line2); }
[data-ui="sentence"] .w-ld   { stroke: var(--sentence-dim); }
[data-ui="sentence"] .w-ah   { fill: var(--sentence-dim); }
[data-ui="sentence"] .w-ax   { fill: var(--sentence-dim); font-family: var(--sentence-mono); }
[data-ui="sentence"] .w-lb   { fill: var(--sentence-fg2); font-family: var(--sentence-mono); }
[data-ui="sentence"] .w-seg  { fill: var(--sentence-fg); font-family: var(--sentence-mono); }
[data-ui="sentence"] .w-dep  { fill: var(--sentence-dim); font-family: var(--sentence-mono); }

/* ---- S3. 血行動力學輸入欄 .sg-f ---- */
[data-ui="sentence"] .sg-f label {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .sg-f input {
  min-height: 44px; padding: 0 9px; max-width: 96px;
  font-family: var(--sentence-mono); font-size: 16px; font-weight: 700;
  background: var(--sentence-bg); color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .sg-f .u { font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim); }
[data-ui="sentence"] .sg-note { font-size: 11.5px; line-height: 1.7; color: var(--sentence-fg2); }
[data-ui="sentence"] .sg-note sup { color: var(--sentence-dim); }
[data-ui="sentence"] .sg-hint {
  font-family: var(--sentence-mono); font-size: 11px; line-height: 1.7; color: var(--sentence-fg2);
}
[data-ui="sentence"] .sg-hint b { color: var(--sentence-fg); }

/* ---- S4. 衍生參數表 table.sg-out（住在 .result 裡）----
   高／低／正常三態：色 ＋ 該列 .s 欄本來就有的文字（↑／↓／正常）＋
   數值本身，維持三重。hot＝偏高、warn＝偏低、calm＝落在正常範圍。 */
[data-ui="sentence"] table.sg-out th {
  font-family: var(--sentence-mono); color: var(--sentence-dim);
  border-bottom: 1px solid var(--sentence-line2);
}
[data-ui="sentence"] table.sg-out td { border-bottom: 1px solid var(--sentence-line); }
[data-ui="sentence"] table.sg-out td.k { font-family: var(--sentence-mono); color: var(--sentence-fg2); }
[data-ui="sentence"] table.sg-out td.k span { color: var(--sentence-dim); }
[data-ui="sentence"] table.sg-out td.v {
  font-family: var(--sentence-mono); font-size: 17px; font-weight: 700; color: var(--sentence-fg);
}
[data-ui="sentence"] table.sg-out td.r { font-family: var(--sentence-mono); color: var(--sentence-dim); }
[data-ui="sentence"] table.sg-out td.s { font-family: var(--sentence-mono); color: var(--sentence-fg2); }
[data-ui="sentence"] table.sg-out tr.hi td.v,
[data-ui="sentence"] table.sg-out tr.hi td.s { color: var(--sentence-hot); }
[data-ui="sentence"] table.sg-out tr.lo td.v,
[data-ui="sentence"] table.sg-out tr.lo td.s { color: var(--sentence-warn); }
[data-ui="sentence"] table.sg-out tr.ok td.s { color: var(--sentence-calm); }
/* 窄螢幕縮字級那一組（頁面內嵌 @media max-width:560px）不必覆寫——那裡只改
   font-size 與 white-space，沒有顏色，本段的顏色照樣生效。唯一要跟上的是
   td.v 的字級：內嵌版在 560 以下降到 14px，特異度 (0,2,2) 低於本檔的
   (0,3,2)，會被上面那條 17px 蓋掉，故在此重申一次窄螢幕的降級。 */
@media (max-width: 560px) {
  [data-ui="sentence"] table.sg-out td.v { font-size: 15px; }
}
[data-ui="sentence"] table.def-table.dt-num td:nth-child(n+2) {
  font-family: var(--sentence-mono); font-size: 11px;
}


/* ================================================================
 * T. 心衰竭指引全文頁（tools/heart-failure.html）
 * ================================================================
 * 這一頁是全站唯一「整本指引」型的長文頁，內嵌 <style> 自帶了一套幾乎完整的
 * 平行設計系統：自己的分頁列（.tabbar）、自己的卡片與表格（**打的是裸標籤
 * `table` / `th,td` / `details`**，不是 class）、自己的徽章（.badge.c1…c3）、
 * 提示框（.callout）、四象限（.quad/.qbox）、支柱卡（.pillar），
 * 以及自己的流程建議色塊（.rec-blue/green/red/amber，四個寫死的深色底）。
 * 這些一條都沒被 A–S 打到，是全站漏網量最大的一頁（掃描 7,519 筆）。
 *
 * **裸標籤規則一律加上 .tab／.tabbar／.filterbar 作用域，不打成全站規則。**
 * 理由：`[data-ui="sentence"] th` 這種 (0,1,1) 的全站規則會蓋到 108 頁上每一張
 * 沒有專屬 class 的表格，而 F 段就是因為一條全站 `table{}` 弄壞了藥卡的
 * renal-tbl 才把它整條刪掉（見 F 段末的說明）。這一頁的 25 張表格、60 個
 * <details>、91 顆徽章**全部**位於 `section.tab` 之內（實測 0 個例外），
 * 而 `.tab`／`.tabbar`／`.filterbar` 三個 class 全站只有這一頁在用
 * （grep 過 tools/、pathways/、index.html、js/），所以這個作用域既夠窄也夠全。
 * ================================================================ */

/* ---- T1. 頁首版本行與頂端分頁列 ---- */
[data-ui="sentence"] .ver { font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim); }
[data-ui="sentence"] .tabbar {
  background: var(--sentence-bg); border-bottom: 2px solid var(--sentence-fg); gap: 5px; padding-top: 2px;
}
[data-ui="sentence"] .tabbar button {
  font-family: var(--sentence-mono); font-size: 11.5px; letter-spacing: .04em;
  background: transparent; color: var(--sentence-dim);
  border: 1px solid var(--sentence-line2); border-bottom: none; border-radius: 0;
  padding: 0 13px; min-height: 45px; position: relative; top: 2px;
  display: inline-flex; align-items: center;
}
[data-ui="sentence"] .tabbar button:hover { background: var(--sentence-shade); color: var(--sentence-fg); }
[data-ui="sentence"] .tabbar button.on {
  color: var(--sentence-fg); background: var(--sentence-bg2);
  border-color: var(--sentence-fg); border-bottom: none; font-weight: 700;
}

/* ---- T2. 裸標籤：表格與摺疊區（作用域 .tab，理由見本段開頭）---- */
[data-ui="sentence"] .tab th,
[data-ui="sentence"] .tab td { border: 1px solid var(--sentence-line); }
[data-ui="sentence"] .tab th {
  background: var(--sentence-bg2); font-family: var(--sentence-mono);
  font-size: 10px; letter-spacing: .06em; color: var(--sentence-dim);
}
[data-ui="sentence"] .tab td.n { font-family: var(--sentence-mono); color: var(--sentence-fg); }
[data-ui="sentence"] .tab details {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .tab details > summary { min-height: 44px; display: flex; align-items: center; }
[data-ui="sentence"] .tab details > summary::before { color: var(--sentence-dim); }
[data-ui="sentence"] .tab h3 { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .tab h4 {
  font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .12em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .tab .en,
[data-ui="sentence"] .section-title .en { font-family: var(--sentence-mono); color: var(--sentence-dim); }
[data-ui="sentence"] .tab .note { font-size: 11.5px; color: var(--sentence-dim); }
/* <mark> 交給共用層的手繪螢光筆（css/styles.css）。這一條原本用 shade 底色＋
   inset 下底線自成一套，但那是在還沒有螢光筆之前的權宜；留著會把螢光筆整條蓋掉
   （background 簡寫會把 background-image 一併重設成 none）。 */
[data-ui="sentence"] .tab mark,
[data-ui="sentence"] mark,
[data-ui="sentence"] strong,
[data-ui="sentence"] .gs-hl,
[data-ui="sentence"] .hl {
  background: var(--hl-img) no-repeat center / 100% 100%;
  color: inherit; box-shadow: none; border-radius: 0;
  padding: .04em .26em; margin: 0 -.10em;
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
}
/* 建議處置裡的粗體也上一筆螢光——那是整條流程的答案，粗體就是重點。
   **造句設計的建議面板是淺底**（只有正式版才是深色實心板），所以這裡用的是
   一般那支筆，不是 css/styles.css 給正式版深底用的濃版。 */
[data-ui="sentence"] .flow-rec b,
[data-ui="sentence"] .flow-rec strong {
  background: var(--hl-img) no-repeat center / 100% 100%;
  color: inherit; padding: .04em .26em; margin: 0 -.10em;
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
}

[data-ui="sentence"] .disclaimer { font-size: 11px; color: var(--sentence-dim); }

/* ---- T3. 建議等級徽章 .badge（ACC/AHA Class I / IIa / IIb / III）----
   四級用「框線型態 ＋ 徽章上的文字 ＋ 色」三重編碼，與 R6 的 .cor 同一套想法：
   Class I 實心墨框最重、IIa 琥珀、IIb 虛線灰（最弱）、III 硃砂粗框（不要做）。
   .new（本版新增）不是臨床等級，維持中性髮絲框，不占用嚴重度色。 */
[data-ui="sentence"] .tab .badge {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .06em;
  background: transparent; color: var(--sentence-dim);
  border: 1px solid var(--sentence-line2); border-radius: 0; padding: 2px 7px;
}
[data-ui="sentence"] .tab .badge.c1  { color: var(--sentence-fg); border: 2px solid var(--sentence-fg); font-weight: 700; }
[data-ui="sentence"] .tab .badge.c2a { color: var(--sentence-warn); border: 1px solid var(--sentence-warn); }
[data-ui="sentence"] .tab .badge.c2b { color: var(--sentence-dim); border: 1px dashed var(--sentence-line2); }
[data-ui="sentence"] .tab .badge.c3  { color: var(--sentence-hot); border: 2px solid var(--sentence-hot); font-weight: 700; }
[data-ui="sentence"] .tab .badge.new { color: var(--sentence-fg2); border: 1px solid var(--sentence-line2); }

/* ---- T4. 提示框 .callout ---- */
[data-ui="sentence"] .callout {
  background: transparent; border: 1px solid var(--sentence-line2);
  border-left: 5px solid var(--sentence-fg); border-radius: 0; padding: 11px 13px;
}
[data-ui="sentence"] .callout.warn { border-left-color: var(--sentence-hot); border-width: 1px 1px 1px 5px; }
[data-ui="sentence"] .callout .ct {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .callout.warn .ct { color: var(--sentence-hot); }

/* ---- T5. 四大支柱卡 .pillar 與 鬱血×灌流四象限 .quad/.qbox ---- */
[data-ui="sentence"] .pillar {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .pillar .pn { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .pillar .pd { color: var(--sentence-fg2); }
[data-ui="sentence"] .quad .lbl { font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .1em; color: var(--sentence-dim); }
[data-ui="sentence"] .qbox {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .qbox:hover { border-color: var(--sentence-fg); background: var(--sentence-shade); }
/* 選中態反白（同 I 段 .flow-opt.selected 的做法）。反白之後子節點一律 inherit——
   I 段的註解已經記過一次教訓：漏掉子節點就會變成同色壓同色的隱形字。 */
[data-ui="sentence"] .qbox.sel {
  background: var(--sentence-inv-bg); border-color: var(--sentence-inv-bg); color: var(--sentence-inv-fg);
}
[data-ui="sentence"] .qbox.sel .qn,
[data-ui="sentence"] .qbox.sel .qe,
[data-ui="sentence"] .qbox.sel b,
[data-ui="sentence"] .qbox.sel strong { color: inherit; }
[data-ui="sentence"] .qbox .qn { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .qbox .qe { font-family: var(--sentence-mono); font-size: 10.5px; color: var(--sentence-dim); }

/* ---- T6. 本頁自己的流程圖（class 名與 I 段只有一半重疊）----
   .flow-step／.flow-num／.flow-q／.flow-opt 已被 I 段以較高特異度接管，
   這裡只補 I 段沒有對應 class 的四件：連接符、建議框的標籤與標題
   （本頁叫 .rl／.rt，I 段叫 .rec-label／.rec-title）、以及四個寫死深色底的
   建議色塊。那四個底色（#122a3f／#123028／#3a1712／#3b2f10）配的是淺字，
   在亮色主題會變成整頁唯一的深色方塊；改成與 I 段一致的「框寬 ＋ 標籤 ＋ 色」。 */
[data-ui="sentence"] .flow-conn { color: var(--sentence-dim); font-family: var(--sentence-mono); }
[data-ui="sentence"] .flow-opt.sel {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); border-color: var(--sentence-inv-bg);
}
[data-ui="sentence"] .flow-opt.sel b, [data-ui="sentence"] .flow-opt.sel strong { color: inherit; }
[data-ui="sentence"] .flow-rec .rl {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; opacity: 1; color: var(--sentence-dim);
}
[data-ui="sentence"] .flow-rec .rt {
  font-family: var(--sentence-serif); font-weight: 500; font-size: clamp(17px, 2.9vw, 20px);
  line-height: 1.35; color: var(--sentence-fg);
}
[data-ui="sentence"] .flow-rec .rt.rt-sm { font-size: clamp(15px, 2.5vw, 17px); }
[data-ui="sentence"] .flow-rec ul { color: var(--sentence-fg2); }
[data-ui="sentence"] .flow-rec.rec-red,
[data-ui="sentence"] .flow-rec.rec-amber,
[data-ui="sentence"] .flow-rec.rec-green,
[data-ui="sentence"] .flow-rec.rec-blue,
[data-ui="sentence"] .flow-rec.rec-idle {
  background: var(--sentence-bg2); color: var(--sentence-fg);
}
[data-ui="sentence"] .flow-rec.rec-red    { border: 4px solid var(--sentence-hot); }
[data-ui="sentence"] .flow-rec.rec-amber  { border: 3px solid var(--sentence-warn); }
[data-ui="sentence"] .flow-rec.rec-green  { border: 2px solid var(--sentence-calm); }
[data-ui="sentence"] .flow-rec.rec-idle   { background: var(--sentence-bg); border: 1px dashed var(--sentence-line2); color: var(--sentence-fg2); }
[data-ui="sentence"] .flow-rec.rec-red .rl    { color: var(--sentence-hot); font-weight: 700; }
[data-ui="sentence"] .flow-rec.rec-amber .rl  { color: var(--sentence-warn); }
[data-ui="sentence"] .flow-rec.rec-green .rl  { color: var(--sentence-calm); }
[data-ui="sentence"] .flow-rec.rec-red .rl::before   { content: "▮▮▮▮ "; }
[data-ui="sentence"] .flow-rec.rec-amber .rl::before { content: "▮▮▮▯ "; }
[data-ui="sentence"] .flow-rec.rec-green .rl::before { content: "▮▮▯▯ "; }
[data-ui="sentence"] .flow-rec.rec-blue .rl::before  { content: "▮▯▯▯ "; }
[data-ui="sentence"] .flow-rec.rec-idle .rl::before  { content: "▯▯▯▯ "; }

/* ---- T7. 藥物表篩選列 .filterbar（查詢框 ＋ 分類 chip ＋ 重置鈕）---- */
[data-ui="sentence"] .filterbar .gs-field {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0; min-height: 45px;
}
[data-ui="sentence"] .filterbar .gs-field:focus-within { border-color: var(--sentence-fg); box-shadow: none; }
[data-ui="sentence"] .filterbar .gs-icon { color: var(--sentence-dim); }
[data-ui="sentence"] .filterbar .gs-field:focus-within .gs-icon { color: var(--sentence-fg); }
[data-ui="sentence"] .filterbar .gs-field .gs-input {
  color: var(--sentence-fg); font-family: var(--sentence-sans); font-size: 16px;
}
[data-ui="sentence"] .filterbar .gs-clear { color: var(--sentence-dim); }
[data-ui="sentence"] .filterbar .gs-clear:hover { color: var(--sentence-fg); }
[data-ui="sentence"] .filterbar input[type="search"],
[data-ui="sentence"] .filterbar input[type="text"] {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-size: 16px;
}
[data-ui="sentence"] .filterbar .chip {
  font-family: var(--sentence-mono); font-size: 11px;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg2); min-height: 44px; padding: 0 12px;
  display: inline-flex; align-items: center;
}
[data-ui="sentence"] .filterbar .chip.on {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); border-color: var(--sentence-inv-bg);
}
[data-ui="sentence"] .tab .btn,
[data-ui="sentence"] .filterbar .btn {
  font-family: var(--sentence-mono); font-size: 11px; letter-spacing: .08em;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); min-height: 44px; padding: 0 16px;
  display: inline-flex; align-items: center;
}
[data-ui="sentence"] .tab .btn:hover,
[data-ui="sentence"] .filterbar .btn:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); color: var(--sentence-fg); }


/* ================================================================
 * U. 抗菌譜資料庫（tools/spectrum-database.html）
 * ================================================================
 * 全站漏網量第二大的一頁（掃描 7,351 筆）。它是三張資料矩陣（酵素分類、
 * 藥物×菌種、菌種×藥物熱圖）加上一堆表頭與控制列，元件全是本頁自有的
 * sd-* class，一條都沒被 A–T 打到。
 *
 * **格子的顏色是資料，不是裝飾——但仍然換成本設計的色階。**
 * 這一頁的四級（涵蓋 s2／部分 s1／變異 s0／不涵蓋 sn）是臨床分級，
 * 正好是 DESIGN-LANGUAGE 說「紅／琥珀／綠只保留給臨床嚴重度」允許的用法，
 * 也與 Q4 段抗生素徽章的四級（sy-hi／yes／partial／no ＝ 墨綠／墨綠／琥珀／暗）
 * 同一套語意。做法不是逐格寫規則，而是**直接改寫本頁自己的語意 token**
 * （--s2/--s1/--s0/--sn 與對應的文字色 --s2t…）：
 *   · 圖例的色塊（.sd-sw.s2…）與格子（td.c2 .dot…）吃的是同一組 token，
 *     改 token 一次到位，圖例與資料永遠不會對不起來；
 *   · `:root[data-ui="sentence"]` 是 (0,2,0)，勝過本頁的 `:root`(0,1,0)
 *     與它的暗色 @media 版本（同為 (0,1,0)），不必管媒體查詢的先後。
 * 四級的**明度**也單調遞減／遞增，去色列印與色覺缺陷下仍分得出順序。
 *
 * 欄位分組的四個底色（--gA…--gD）本來就刻意是「低彩度冷灰、只靠色相微差」，
 * 換成骨白／墨色階的四個近中性色，維持原本的意圖。
 * ================================================================ */
:root[data-ui="sentence"] {
  /* 2026-09 換成色票的階序：**越亮＝越有效**。塊上文字都驗過對比（見下方數字）。 */
  --s2: #ed893a;  --s2t: #1f1f1d;      /* 強效：橘實心（6.48） */
  --s1: #c82a3c;  --s1t: #efece1;      /* 有效：緋紅加深（4.61；原色 4.44 不足） */
  --s0: #820b33;  --s0t: #efece1;      /* 變異：酒紅（8.68） */
  --sn: #40263a;  --snt: #efece1;      /* 無效：深梅（11.41） */
  /* 同一條階序的**文字版**（.sHi/.sOk/.sMid/.sLo），色塊版是上面的 --s2/--s1/--s0/--sn */
  --sh-hi: #954b00; --sh-ok: #ab0027; --sh-mid: #820b33; --sh-lo: #40263a;
  --gA: #e8e4d6; --gB: #e1e0d5; --gC: #e6e1d8; --gD: #eae3d1;
}
@media (prefers-color-scheme: dark) {
  :root[data-ui="sentence"] {
    --s2: #f6964e;  --s2t: #0a1512;
    --s1: #ed595f;  --s1t: #0a1512;
    --s0: #a33850;  --s0t: #ece6d8;
    --sn: #5e4357;  --snt: #ece6d8;
    --sh-hi: #ffb989; --sh-ok: #ff8989; --sh-mid: #e4788b; --sh-lo: #987c91;
    --gA: #132420; --gB: #141f1c; --gC: #161f24; --gD: #181f17;
  }
}

/* ---- U1. 工具列、圖例、切換鈕 ---- */
[data-ui="sentence"] .sd-legend .lg { font-size: 11px; color: var(--sentence-fg2); }
[data-ui="sentence"] .sd-sw { border-radius: 0; width: 18px; height: 18px; }
[data-ui="sentence"] .sd-btn {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg2); font-family: var(--sentence-mono); font-size: 11px;
  min-height: 44px; padding: 0 14px; display: inline-flex; align-items: center;
}
[data-ui="sentence"] .sd-btn.on {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); border-color: var(--sentence-inv-bg);
}
[data-ui="sentence"] .sd-nt { font-family: var(--sentence-mono); font-size: 10.5px; color: var(--sentence-dim); }
[data-ui="sentence"] .sd-abbr { font-size: 11px; color: var(--sentence-dim); }
[data-ui="sentence"] ul.sd-notes { font-size: 12px; color: var(--sentence-fg2); }
[data-ui="sentence"] ul.sd-notes b { color: var(--sentence-fg); }

/* ---- U2. 表一：酵素分類（.sd-amb）----
   兩個大類（Serine／Metallo-β-lactamase）原本是兩塊寫死的實色（#2f6b7d／#9c5a1e）
   配白字。它們是**分類**不是嚴重度，不該占用 hot／warn／calm；改成「實心 vs 外框」
   兩種形，形狀本身就分得開，不必靠顏色。 */
[data-ui="sentence"] .sd-amb { border: 1px solid var(--sentence-line2); border-radius: 0; }
/* .cat.ser 要寫成四個 class (0,4,0)，不能只靠 `.sd-amb .cat`(0,3,0)：頁面內嵌的
   `.sd-amb .cat.ser{background:#2f6b7d}` 同為 (0,3,0)，<style> 在後面會贏。
   實測只寫三個 class 時，絲胺酸那條橫幅仍是正式版的藍綠實色。 */
[data-ui="sentence"] .sd-amb .cat,
[data-ui="sentence"] .sd-amb .cat.ser {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); font-family: var(--sentence-mono);
}
[data-ui="sentence"] .sd-amb .cat.zn {
  background: transparent; color: var(--sentence-fg); box-shadow: inset 0 0 0 2px var(--sentence-fg);
}
[data-ui="sentence"] .sd-clsrow { border-bottom-color: var(--sentence-line); }
[data-ui="sentence"] .sd-clsname {
  background: var(--sentence-bg2); border-right-color: var(--sentence-line);
  font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg);
}
[data-ui="sentence"] .sd-clsname .zh { color: var(--sentence-dim); }
[data-ui="sentence"] .sd-e { color: var(--sentence-fg2); }
[data-ui="sentence"] .sd-e .ex { font-family: var(--sentence-mono); color: var(--sentence-dim); }
[data-ui="sentence"] .sd-e.sub { color: var(--sentence-dim); }
[data-ui="sentence"] .sd-e.sub b { color: var(--sentence-fg); }
[data-ui="sentence"] .sd-cbadge {
  background: transparent; color: var(--sentence-hot);
  border: 1px solid var(--sentence-hot); border-radius: 0; font-family: var(--sentence-mono);
}
[data-ui="sentence"] table.sd-bjm th,
[data-ui="sentence"] table.sd-bjm td { border: 1px solid var(--sentence-line); }
[data-ui="sentence"] table.sd-bjm thead th {
  background: var(--sentence-bg2); font-family: var(--sentence-mono); color: var(--sentence-dim);
}
[data-ui="sentence"] table.sd-bjm td b { font-family: var(--sentence-mono); color: var(--sentence-fg); }
@media (max-width: 560px) {
  [data-ui="sentence"] table.sd-bjm { border-color: var(--sentence-line2); border-radius: 0; }
  [data-ui="sentence"] table.sd-bjm tr { border-bottom-color: var(--sentence-line); }
  [data-ui="sentence"] table.sd-bjm td:nth-child(3) { font-family: var(--sentence-mono); color: var(--sentence-dim); }
  /* 窄螢幕的 BJM 表已改成每組一塊（表格外框＋列分隔線），格子若再各自帶框就變三層盒中盒。
     頁內 CSS 的 td{border:none} 敵不過這裡的屬性選擇器，所以要在這一段一併關掉。 */
  [data-ui="sentence"] table.sd-bjm th,
  [data-ui="sentence"] table.sd-bjm td { border: none; }
}

/* ---- U3. 表二／表三：藥物×菌種矩陣（.sd-mx）----
   黏住的表頭與列標題**底色必須是實色**（--sentence-bg／--sentence-bg2），
   不能改成 transparent：捲動時資料格會從它們底下穿過去。 */
[data-ui="sentence"] .sd-mshell,
[data-ui="sentence"] .sd-hmshell { border: 1px solid var(--sentence-line2); border-radius: 0; }
[data-ui="sentence"] table.sd-mx thead th {
  background: var(--sentence-bg2); border-bottom: 2px solid var(--sentence-fg);
}
[data-ui="sentence"] table.sd-mx thead th.corner {
  font-family: var(--sentence-mono); color: var(--sentence-dim); box-shadow: 2px 0 0 var(--sentence-line2);
}
[data-ui="sentence"] .sd-colhead .abbr { font-family: var(--sentence-mono); color: var(--sentence-fg); }
[data-ui="sentence"] th.col-hi .sd-colhead { background: var(--sentence-inv-bg); }
[data-ui="sentence"] th.col-hi .sd-colhead .abbr,
[data-ui="sentence"] th.col-hi .sd-colhead .cn { color: var(--sentence-inv-fg); }
[data-ui="sentence"] table.sd-mx thead th.gsep,
[data-ui="sentence"] table.sd-mx td.sd-cell.gsep { border-left-color: var(--sentence-line2); }
[data-ui="sentence"] table.sd-mx thead th.gend,
[data-ui="sentence"] table.sd-mx td.sd-cell.gend { border-right-color: var(--sentence-line2); }
/* 角落格 rowspan=2 掛在 grpband 那一列，且此選擇器帶 id 比 th.corner 更 specific，
   不排除的話群組帶的字體與顏色會蓋掉角落自己的設定。 */
[data-ui="sentence"] #sd-abx thead tr.grpband th:not(.corner) {
  font-family: var(--sentence-mono); color: var(--sentence-dim); border-bottom-color: var(--sentence-line);
}
[data-ui="sentence"] table.sd-mx tbody th.rowhead {
  background: var(--sentence-bg); border-bottom-color: var(--sentence-line);
  box-shadow: 2px 0 0 var(--sentence-line2);
}
[data-ui="sentence"] table.sd-mx tbody th.rowhead .rx {
  font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg);
}
[data-ui="sentence"] table.sd-mx tbody th.rowhead .cn { color: var(--sentence-dim); }
[data-ui="sentence"] tr.sd-grp th {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); font-family: var(--sentence-mono);
}
/* 群組帶裡補的那段凍結欄分隔線，顏色要跟藥名列的 box-shadow 同一支變數，否則會看得出接縫 */
[data-ui="sentence"] tr.sd-grp th::before { background: var(--sentence-line2); }
[data-ui="sentence"] td.sd-cell { border-bottom-color: var(--sentence-line); border-left-color: var(--sentence-line); }
[data-ui="sentence"] td.sd-cell.col-hi { outline-color: var(--sentence-fg); }
/* 格內那顆「率」小藥丸原本是寫死的 rgba(255,255,255,.94) 白底，文字色卻繼承自
   格子的 --s2t／--snt——本設計把 --s2t 改成骨白之後，會變成骨白字壓在白底上。
   改成頁面底色 ＋ 墨字，四級底色下都讀得到。 */
[data-ui="sentence"] .dot .sp {
  background: var(--sentence-bg); color: var(--sentence-fg); border-radius: 0;
  font-family: var(--sentence-mono);
}
/* 可點的藥名：虛線底線改吃髮絲線色，hover 才轉實線並上墨色。 */
[data-ui="sentence"] th.rowhead a.dlink .rx { border-bottom-color: var(--sentence-line2); }
[data-ui="sentence"] th.rowhead a.dlink:hover .rx,
[data-ui="sentence"] th.rowhead a.dlink:focus-visible .rx { color: var(--sentence-fg); border-bottom-color: var(--sentence-fg); }
[data-ui="sentence"] a.sd-colhead .abbr { border-bottom-color: var(--sentence-line2); }
[data-ui="sentence"] a.sd-colhead:hover .abbr,
[data-ui="sentence"] a.sd-colhead:focus-visible .abbr { filter: none; border-bottom-color: var(--sentence-fg); }
[data-ui="sentence"] a.dlink:focus-visible { outline-color: var(--sentence-fg); border-radius: 0; }

/* ---- U4. 熱圖（.sd-hm）與抗藥性重點卡（.sd-rcard）---- */
[data-ui="sentence"] table.sd-hm th.corner,
[data-ui="sentence"] table.sd-hm thead th {
  background: var(--sentence-bg2); color: var(--sentence-dim);
  font-family: var(--sentence-mono); border-bottom: 2px solid var(--sentence-fg);
}
[data-ui="sentence"] table.sd-hm tbody th {
  background: var(--sentence-bg); font-family: var(--sentence-serif); font-weight: 500;
  color: var(--sentence-fg); border-bottom-color: var(--sentence-line); box-shadow: 1px 0 0 var(--sentence-line2);
}
[data-ui="sentence"] td.sd-hc { border-bottom-color: var(--sentence-bg); border-left-color: var(--sentence-bg); }
[data-ui="sentence"] td.sd-hc .d { font-family: var(--sentence-mono); }
[data-ui="sentence"] .sd-rcard {
  background: transparent; border: 1px solid var(--sentence-line2);
  border-left: 4px solid var(--sentence-hot); border-radius: 0;
}
[data-ui="sentence"] .sd-rcard .pill {
  background: transparent; color: var(--sentence-hot);
  border: 1px solid var(--sentence-hot); border-radius: 0; font-family: var(--sentence-mono);
}
[data-ui="sentence"] .sd-rcard .nm .cn { color: var(--sentence-dim); }
[data-ui="sentence"] .sd-rcard ul { color: var(--sentence-fg2); }
[data-ui="sentence"] .sd-rcard ul b { color: var(--sentence-fg); }


/* ================================================================
 * V. 全站共用的組合式查詢欄 .gs-field（9 頁）
 * ================================================================
 * A 段只處理過它的 :focus-visible 雙重框問題，顏色一直沒接管；Q 段補過
 * 抗生素與藥物資料庫兩頁（用 `#view-antibiotics .gs-field` 這種 (1,x,y) 的
 * id 前綴），其餘七頁（菌譜、預防性抗生素、創傷抗生素、癌症、急診手術分級、
 * 心衰竭、首頁）到現在還是正式版的 --field-bg 白底配 --accent 聚焦光暈。
 * 這一段寫成不設祖先的 (0,2,0)／(0,3,0)，Q 段那兩條 id 版本仍然壓得過它，
 * 兩者不衝突。（T7 的 `.filterbar .gs-field` 是 (0,3,0)，只多宣告
 * min-height，與這裡同向、不互相打架。） */
[data-ui="sentence"] .gs-field {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0; min-height: 45px;
}
[data-ui="sentence"] .gs-field:focus-within { border-color: var(--sentence-fg); box-shadow: none; }
[data-ui="sentence"] .gs-field .gs-icon { color: var(--sentence-dim); }
[data-ui="sentence"] .gs-field:focus-within .gs-icon { color: var(--sentence-fg); }
/* font-size 16px：同 R1／S3，避開 iOS Safari 聚焦時整頁放大的門檻。 */
[data-ui="sentence"] .gs-field .gs-input {
  color: var(--sentence-fg); font-family: var(--sentence-sans); font-size: 16px;
}
[data-ui="sentence"] .gs-field .gs-input::placeholder { color: var(--sentence-dim); }
[data-ui="sentence"] .gs-field .gs-clear { color: var(--sentence-dim); }
[data-ui="sentence"] .gs-field .gs-clear:hover { color: var(--sentence-fg); }

/* 菌譜表一在窄螢幕的分隔線（U2 只改了桌機那條 border-right）。 */
@media (max-width: 560px) {
  [data-ui="sentence"] .sd-clsname { border-bottom-color: var(--sentence-line); }
}


/* ================================================================
 * W. 全站表單控制項的底層（css/styles.css:310–311 的 input／select）
 * ================================================================
 * E 段只接管了 `.field-row` 裡面的輸入框；`.meld-field`（MELD／水分缺乏／
 * 校正值等 11 頁的公式輸入列）與各計分頁自己的 select 走的是 styles.css 的
 * 裸標籤預設 `input[type=number]`(0,1,1)／`select`(0,0,1)，於是白底、
 * --line 灰框、2px 圓角一路留著。
 * 這一條寫在 (0,2,1)／(0,1,1)，比 E 段的 `.field-row input`(0,3,1) 低，
 * 也比 Q／T 段那些帶 class 的輸入框低——它只是**沒有人管的那些**的底線。
 * font-size 16px 同 R1／S3／V：iOS Safari 聚焦放大的門檻。
 * ================================================================ */
[data-ui="sentence"] input[type="number"],
[data-ui="sentence"] input[type="text"],
[data-ui="sentence"] input[type="search"] {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-mono); font-size: 16px;
}
/* 上面那條的例外：`.gs-input` 不是「沒有人管的」，它本來就住在自己畫框的
 * `.gs-field` 裡（styles.css:103 就寫了 `border:0`，只是那條是 (0,2,0)，
 * 壓不過上面的 (0,2,1)）。不排除就會在 .gs-field 的框裡再畫一個框，
 * 聚焦時外框變色又多一層——全站 9 頁 11 個查詢欄都中：
 * index、藥物資料庫、抗生素（菌種／藥物查詢兩個）、菌譜資料庫、癌症指引、
 * 腹部急症、心臟衰竭（兩個）、手術預防、創傷用藥。
 * 寫成 (0,3,0) 才壓得過 (0,2,1)——只多一層 class 的兩層選取器 (0,2,0) 不夠。
 * 只清 border／radius，字體字級仍沿用上面那條（16px 是 iOS Safari 不放大的門檻）。 */
[data-ui="sentence"] .gs-field .gs-input {
  border: 0; border-radius: 0; background: transparent;
}

[data-ui="sentence"] select {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-sans); font-size: 14px;
}
[data-ui="sentence"] .meld-field input,
[data-ui="sentence"] .meld-field select { max-width: 140px; }

/* E 段的 .pt-badge 漏了 background——styles.css:326 的
   `.pt-badge{background:var(--accent2-soft)}`(0,1,0) 沒被蓋掉，
   17 個計分頁的「本項得分」徽章至今仍是正式版的淺磚紅膠囊。 */
[data-ui="sentence"] .pt-badge { background: transparent; }


/* ================================================================
 * X. 計分工具家族的頁面專屬元件（10 頁同一套骨架、只換前綴）
 *    nutrition-risk(nu-)／vte-risk(vt-)／cha2ds2-vasc(cv-)／has-bled(hb-)／
 *    pss(ps-)／nihss(ni-)／geneva(gv-)／grace(gr-)／perc(pc-)／
 *    dose-conversion(dc-)
 * ================================================================
 * 這十頁的內嵌 <style> 是同一份骨架複製十次，只把 class 前綴換掉：
 *   .X-warn（頁首警語）／.X-grp-h + .X-grp-n + .X-grp-c（判準分組標頭）／
 *   .X-sel、.X-item（一列一個判準）／table.X-t（對照表）／
 *   .X-out（結果面板內的分段）／.X-sc、.X-box（結果面板內的小方塊）／
 *   .X-src（出處小字）／.X-band、.X-tag、.X-flag（分級徽章）。
 * 所以本段一律用「一條規則列出十個前綴」的寫法，而不是分十小節重複十次。
 *
 * **`.X-out` 與 `.X-sc`／`.X-box` 那組 rgba(255,255,255,.06~.16) 是關鍵。**
 * 它們住在 `.result` 內，而正式版的 `.result` 是寫死的深色面板（#132126），
 * 半透明白在深底上就是一條淡淡的分隔線與一塊微亮的方塊，成立。
 * G 段把 `.result` 換成 `--sentence-bg2` 之後，亮色主題那是骨白——
 * 半透明白疊在骨白上等於什麼都沒畫：實測十頁的結果面板在亮色主題下
 * 分隔線與方塊框**全部消失**，只剩幾行沒有結構的字。改吃 --sentence-line。
 * ================================================================ */

/* ---- X1. 頁首警語 .X-warn ---- */
[data-ui="sentence"] .nu-warn, [data-ui="sentence"] .vt-warn, [data-ui="sentence"] .cv-warn,
[data-ui="sentence"] .ps-warn, [data-ui="sentence"] .gr-warn, [data-ui="sentence"] .pc-warn {
  background: transparent; border: 1px solid var(--sentence-hot); border-left-width: 5px;
  border-radius: 0; color: var(--sentence-fg2);
}
/* `.dc-warn` 原本混在上面那組裡，跟著吃了 `border-left-width: 5px`。
   那條粗左邊是**頁首警語**的手法：整頁一條、橫跨版面、標示「這頁的前提」。
   但 .dc-warn 不是頁首警語——它是藥卡裡「禁忌」與「安全警訊」兩個欄位的
   內文框，一張卡就有兩個，還夾在十幾個同寬的欄位之間；粗左邊在那個密度下
   變成整張卡最重的一筆，反而把欄位的節奏打斷（使用者實機指出）。
   四邊一律 1px，強調交給硃砂框線本身。 */
[data-ui="sentence"] .dc-warn {
  background: transparent; border: 1px solid var(--sentence-hot);
  border-radius: 0; color: var(--sentence-fg2);
  /* 這個框原本 padding:0，字直接貼在硃砂框線上讀起來很壓迫（使用者實機指出）。
     禁忌與安全警訊是整張卡最需要看得下去的兩欄，字要離框遠一點。
     藥物資料庫與抗微生物藥物查詢兩頁共用這個 class，一起修好。 */
  padding: 10px 13px;
}
/* 剝半／磨粉／管餵徽章：跟抗菌覆蓋徽章講同一套顏色語彙——
   「可」用 .cov-tag.yes 的綠（--sentence-calm），「不可」用禁忌框的硃砂（--sentence-hot）。
   正式版沿用 drug-database.css 的 --accent／--accent2，不在這裡動。 */
[data-ui="sentence"] .db-crush.ok { color: var(--sentence-calm); border-color: var(--sentence-calm); }
[data-ui="sentence"] .db-crush.no { color: var(--sentence-hot); border-color: var(--sentence-hot); }
[data-ui="sentence"] .db-crush.hazard { color: var(--sentence-warm, #c08a3e); border-color: var(--sentence-warm, #c08a3e); }

[data-ui="sentence"] .nu-warn b, [data-ui="sentence"] .vt-warn b, [data-ui="sentence"] .cv-warn b,
[data-ui="sentence"] .ps-warn b, [data-ui="sentence"] .gr-warn b, [data-ui="sentence"] .pc-warn b,
[data-ui="sentence"] .dc-warn b { color: var(--sentence-fg); }
[data-ui="sentence"] .nu-warn .h, [data-ui="sentence"] .vt-warn .h, [data-ui="sentence"] .cv-warn .h,
[data-ui="sentence"] .ps-warn .h, [data-ui="sentence"] .gr-warn .h, [data-ui="sentence"] .pc-warn .h,
[data-ui="sentence"] .dc-warn .h {
  font-family: var(--sentence-mono); letter-spacing: .16em; color: var(--sentence-hot);
}

/* ---- X2. 判準分組標頭 ---- */
[data-ui="sentence"] .nu-grp-h, [data-ui="sentence"] .vt-grp-h, [data-ui="sentence"] .hb-grp {
  border-bottom: 2px solid var(--sentence-fg);
}
[data-ui="sentence"] .nu-grp-n, [data-ui="sentence"] .vt-grp-n, [data-ui="sentence"] .hb-l {
  font-family: var(--sentence-mono); letter-spacing: .14em; color: var(--sentence-fg);
}
[data-ui="sentence"] .nu-grp-c, [data-ui="sentence"] .vt-grp-c, [data-ui="sentence"] .hb-c,
[data-ui="sentence"] .nu-src, [data-ui="sentence"] .vt-src, [data-ui="sentence"] .cv-src,
[data-ui="sentence"] .ps-src {
  font-family: var(--sentence-mono); color: var(--sentence-dim);
}
[data-ui="sentence"] .hb-n { color: var(--sentence-fg2); }

/* ---- X3. 一列一個判準 ＋ 該列的下拉 ----
   `.X-sel select`／`.X-item select` 是 (0,1,1)，與 W 段的 `[data-ui] select`
   同特異度而排在後面（內嵌 <style>），所以 W 段打不到它們，必須在這裡
   用 (0,2,1) 再打一次。 */
[data-ui="sentence"] .nu-sel, [data-ui="sentence"] .vt-sel, [data-ui="sentence"] .cv-sel,
[data-ui="sentence"] .cv-item, [data-ui="sentence"] .ni-item, [data-ui="sentence"] .dc-sel {
  border-bottom: 1px dotted var(--sentence-line); min-height: 48px;
}
[data-ui="sentence"] .nu-sel select, [data-ui="sentence"] .vt-sel select,
[data-ui="sentence"] .cv-sel select, [data-ui="sentence"] .ni-item select,
[data-ui="sentence"] .dc-sel select {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-sans); font-size: 14px; min-height: 45px;
}
[data-ui="sentence"] .nu-sel .d, [data-ui="sentence"] .cv-def { color: var(--sentence-dim); }
[data-ui="sentence"] .cv-k, [data-ui="sentence"] .ni-n {
  font-family: var(--sentence-mono); color: var(--sentence-fg); font-weight: 700;
}
[data-ui="sentence"] .cv-t .en, [data-ui="sentence"] .ni-name .en {
  font-family: var(--sentence-mono); color: var(--sentence-dim);
}
/* 單項得分徽章（NIHSS 每一項的分數）：與 E 段的 .pt-badge 同一種東西，
   給同一種外觀——透明底、髮絲框；未評估（.un）改硃砂框。 */
[data-ui="sentence"] .ni-p {
  font-family: var(--sentence-mono); background: transparent; color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-radius: 0; min-height: 24px;
  display: inline-flex; align-items: center; justify-content: center;
}
[data-ui="sentence"] .ni-p.un { color: var(--sentence-hot); border-color: var(--sentence-hot); background: transparent; }
[data-ui="sentence"] .pt-badge.pt-simp { background: transparent; color: var(--sentence-fg2); }

/* ---- X4. 對照表 table.X-t ---- */
[data-ui="sentence"] table.nu-t th, [data-ui="sentence"] table.nu-t td,
[data-ui="sentence"] table.vt-t th, [data-ui="sentence"] table.vt-t td,
[data-ui="sentence"] table.cv-t2 th, [data-ui="sentence"] table.cv-t2 td,
[data-ui="sentence"] table.ps-t th, [data-ui="sentence"] table.ps-t td,
[data-ui="sentence"] table.dc-t th, [data-ui="sentence"] table.dc-t td {
  border: 1px solid var(--sentence-line); color: var(--sentence-fg2);
}
[data-ui="sentence"] table.nu-t thead th, [data-ui="sentence"] table.vt-t thead th,
[data-ui="sentence"] table.cv-t2 thead th, [data-ui="sentence"] table.ps-t thead th,
[data-ui="sentence"] table.dc-t thead th {
  background: var(--sentence-bg2); font-family: var(--sentence-mono); color: var(--sentence-dim);
}
[data-ui="sentence"] table.nu-t td:first-child, [data-ui="sentence"] table.vt-t td:first-child,
[data-ui="sentence"] table.cv-t2 td:first-child, [data-ui="sentence"] table.ps-t td:first-child,
[data-ui="sentence"] table.dc-t td:first-child,
[data-ui="sentence"] table.nu-t td.num, [data-ui="sentence"] table.vt-t td.num,
[data-ui="sentence"] table.dc-t td.num {
  font-family: var(--sentence-mono); color: var(--sentence-fg);
}
[data-ui="sentence"] table.nu-t tr.warn td { color: var(--sentence-hot); }
/* 「這一列就是你算出來的那一格」：正式版用 --accent-soft 淺底；本設計沿用
   F 段 `table.ref tr.ref-current` 的做法——墨色淡影 ＋ 加粗，不另外上色。 */
[data-ui="sentence"] table.vt-t tr.hi td, [data-ui="sentence"] table.dc-t tr.hi td {
  background: var(--sentence-shade); color: var(--sentence-fg); font-weight: 700;
}

/* ---- X5. 結果面板內的分段線與小方塊（本段開頭說明的重點）---- */
[data-ui="sentence"] .nu-out, [data-ui="sentence"] .vt-out, [data-ui="sentence"] .cv-out,
[data-ui="sentence"] .hb-out, [data-ui="sentence"] .ps-out, [data-ui="sentence"] .ni-out,
[data-ui="sentence"] .dc-out {
  border-top: 1px solid var(--sentence-line);
}
[data-ui="sentence"] .nu-box, [data-ui="sentence"] .cv-sc, [data-ui="sentence"] .gv-sc,
[data-ui="sentence"] .gr-sc {
  background: transparent; border: 1px solid var(--sentence-line); border-radius: 0;
}
/* 分數方塊裡的巨型數字沿用 G 段「畫面上最大的必須是臨床數值」的字級。 */
[data-ui="sentence"] .cv-sc-v, [data-ui="sentence"] .gv-sc-v, [data-ui="sentence"] .gr-sc-v {
  font-family: var(--sentence-serif); color: var(--sentence-fg);
}
[data-ui="sentence"] .cv-sc-n, [data-ui="sentence"] .gv-sc-n, [data-ui="sentence"] .gr-sc-n,
[data-ui="sentence"] .cv-sc-m, [data-ui="sentence"] .gv-sc-m, [data-ui="sentence"] .gr-sc-m,
[data-ui="sentence"] .nu-box-n {
  font-family: var(--sentence-mono); letter-spacing: .12em; opacity: 1; color: var(--sentence-dim);
}
[data-ui="sentence"] .nu-out-h, [data-ui="sentence"] .vt-out-h, [data-ui="sentence"] .cv-out-h,
[data-ui="sentence"] .dc-out-h {
  font-family: var(--sentence-mono); letter-spacing: .16em; opacity: 1; color: var(--sentence-dim);
}
[data-ui="sentence"] .nu-out-v, [data-ui="sentence"] .vt-out-v, [data-ui="sentence"] .cv-out-v,
[data-ui="sentence"] .dc-out-v { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .nu-out-d, [data-ui="sentence"] .vt-out-d, [data-ui="sentence"] .cv-out-d,
[data-ui="sentence"] .hb-d, [data-ui="sentence"] .ni-d, [data-ui="sentence"] .dc-out-d {
  opacity: 1; color: var(--sentence-fg2);
}

/* ---- X6. 分級徽章 .X-band／.X-tag／.X-flag ／ HAS-BLED 的可矯正註記 ----
   一律「透明底 ＋ 髮絲框 ＋ 零圓角」，等級由本來就有的 .risk-band.b0…b3
   （G 段已做成格數 ＋ 色的三重編碼）或徽章文字本身表達。
   .cv-tag 的三態（yes／mid／no）在正式版是三塊寫死的深色膠囊
   （#1b3d2e／#4a3a15／#22323a），亮色主題下是頁面上唯三的深色塊。 */
[data-ui="sentence"] .hb-band, [data-ui="sentence"] .ni-band, [data-ui="sentence"] .nu-tag,
[data-ui="sentence"] .vt-band, [data-ui="sentence"] .dc-flag, [data-ui="sentence"] .ps-band,
[data-ui="sentence"] .cv-tag {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-mono);
}
[data-ui="sentence"] .cv-tag.yes { color: var(--sentence-calm); border-color: var(--sentence-calm); background: transparent; }
[data-ui="sentence"] .cv-tag.mid { color: var(--sentence-warn); border-color: var(--sentence-warn); background: transparent; }
[data-ui="sentence"] .cv-tag.no  { color: var(--sentence-dim);  border-color: var(--sentence-line2); background: transparent; }
[data-ui="sentence"] .hb-mod {
  font-family: var(--sentence-mono); color: var(--sentence-warn);
  border: 1px solid var(--sentence-warn); border-radius: 0;
}

/* ---- X7. PERC 的門檻閘與判定框（tools/perc.html）----
   .pc-verdict 三態原本是三塊寫死的深底（綠／紅／--ink）配 #fff 白字。
   亮色主題下三塊深色方塊突兀，而且 idle 態的 `background:var(--ink)`
   在**暗色**主題是 #e7e4db 淺底——配 `.pc-v-t{color:#fff}` 就是白字壓淺底，
   實測對比 1.1，「請先回答上方 8 項」那行整段看不見。改成 I 段的
   「框寬 ＋ 標籤 ＋ 色」，底色一律回到面板底色。 */
[data-ui="sentence"] .pc-gate {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .pc-gate-t {
  font-family: var(--sentence-mono); letter-spacing: .16em; color: var(--sentence-dim);
}
[data-ui="sentence"] .pc-lockmsg { font-family: var(--sentence-mono); color: var(--sentence-hot); }
[data-ui="sentence"] .pc-verdict {
  background: var(--sentence-bg2); border-radius: 0;
  border: 1px solid var(--sentence-line2); color: var(--sentence-fg);
}
[data-ui="sentence"] .pc-verdict.neg { border: 2px solid var(--sentence-calm); }
[data-ui="sentence"] .pc-verdict.pos { border: 4px solid var(--sentence-hot); }
[data-ui="sentence"] .pc-verdict.idle { background: var(--sentence-bg); border: 1px dashed var(--sentence-line2); }
[data-ui="sentence"] .pc-v-l {
  font-family: var(--sentence-mono); letter-spacing: .16em; opacity: 1; color: var(--sentence-dim);
}
[data-ui="sentence"] .pc-verdict.neg .pc-v-l { color: var(--sentence-calm); }
[data-ui="sentence"] .pc-verdict.pos .pc-v-l { color: var(--sentence-hot); font-weight: 700; }
[data-ui="sentence"] .pc-v-l::before { content: "▮▮▯▯ "; }
[data-ui="sentence"] .pc-verdict.pos .pc-v-l::before { content: "▮▮▮▮ "; }
[data-ui="sentence"] .pc-verdict.idle .pc-v-l::before { content: "▯▯▯▯ "; }
[data-ui="sentence"] .pc-v-t {
  font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg);
  font-size: clamp(17px, 2.9vw, 20px);
}
[data-ui="sentence"] .pc-v-b { color: var(--sentence-fg2); }
[data-ui="sentence"] .pc-v-b b { color: var(--sentence-fg); }
[data-ui="sentence"] .pc-fail { color: var(--sentence-hot); }
[data-ui="sentence"] .pc-fail b { color: var(--sentence-hot); font-weight: 700; }


/* ================================================================
 * Y. 三個「可展開清單」型查閱頁
 *    surgical-prophylaxis(sp-)／periop-anticoag(pa-)／trauma-abx(tr-, tt-)
 * ================================================================
 * 共同骨架：頂部計算／篩選列 → 分組標頭 → 一列一台刀／一種傷的可展開卡
 * （.sp-op／.tr-inj，展開後是 .sp-fld／.tr-fld 的鍵值格）→ 對照表。
 * 三頁都有一組把「本設計開啟後才會壞」的寫死色：
 *   · tools/trauma-abx.html 的 `.tt-out`（決策樹結論面板）整塊是寫死的
 *     深底 #132126 配 #f4f2ec／#9fb3ae／#8fd3b4 淺字，理由與 S4 的
 *     table.sg-out 相同（它抄的是正式版 .result 的深色面板）。本設計的
 *     結論面板在**亮色主題是骨白**，那批淺字疊上去對比不到 1.5——
 *     「建議給 / 不建議」那兩行 18px 的結論字會整段消失。
 *   · tools/periop-anticoag.html 的停藥日曆 `.pa-cal-c` 用
 *     rgba(255,255,255,.07~.2) 當格底、`.op` 用 #f4f2ec 當「手術當日」的
 *     highlight，同樣是為深色面板設計的，亮色主題下整張日曆看不出格線。
 * ================================================================ */

/* ---- Y1. 頂部計算／輸入區（.sp-calc、.pa-crcl）---- */
[data-ui="sentence"] .sp-calc,
[data-ui="sentence"] .pa-crcl {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .sp-calc-lbl,
[data-ui="sentence"] .pa-crcl-f label,
[data-ui="sentence"] .pa-crcl-out .k {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .sp-wt,
[data-ui="sentence"] .pa-crcl-f input,
[data-ui="sentence"] .pa-crcl-f select {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-mono); font-size: 16px; min-height: 45px;
}
[data-ui="sentence"] .sp-calc-hint,
[data-ui="sentence"] .pa-crcl-out .n,
[data-ui="sentence"] .sp-count, [data-ui="sentence"] .tr-count,
[data-ui="sentence"] .sp-refs, [data-ui="sentence"] .pa-src, [data-ui="sentence"] .tr-src {
  font-family: var(--sentence-mono); color: var(--sentence-dim);
}
[data-ui="sentence"] .tr-src a { color: var(--sentence-fg); }
[data-ui="sentence"] .pa-crcl-out { border-top: 1px dashed var(--sentence-line2); }
[data-ui="sentence"] .pa-crcl-out .v { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .sp-dose {
  background: transparent; border: 1px solid var(--sentence-line2);
  border-left: 4px solid var(--sentence-fg); border-radius: 0;
}
[data-ui="sentence"] .sp-dose .dn { font-family: var(--sentence-mono); letter-spacing: .1em; color: var(--sentence-dim); }
[data-ui="sentence"] .sp-dose .dv { font-family: var(--sentence-mono); font-weight: 700; color: var(--sentence-fg); }
[data-ui="sentence"] .sp-dose .dr { color: var(--sentence-dim); }
[data-ui="sentence"] .sp-tag {
  background: transparent; color: var(--sentence-fg2);
  border: 1px solid var(--sentence-line2); border-radius: 0; font-family: var(--sentence-mono);
}
[data-ui="sentence"] .sp-rules li { border-bottom: 1px dotted var(--sentence-line); }
[data-ui="sentence"] .sp-rules li::before { font-family: var(--sentence-mono); color: var(--sentence-dim); }
[data-ui="sentence"] .sp-rules b { color: var(--sentence-fg); }

/* ---- Y2. 篩選 chip 與分組標頭 ---- */
[data-ui="sentence"] .sp-chip {
  font-family: var(--sentence-mono); font-size: 11px;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg2); min-height: 44px; padding: 0 13px;
  display: inline-flex; align-items: center;
}
[data-ui="sentence"] .sp-chip:hover { background: var(--sentence-shade); color: var(--sentence-fg); }
[data-ui="sentence"] .sp-chip.on {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); border-color: var(--sentence-inv-bg);
}
[data-ui="sentence"] .sp-dept-head, [data-ui="sentence"] .tr-grp { border-bottom: 2px solid var(--sentence-fg); }
[data-ui="sentence"] .sp-dept-zh { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .sp-dept-en, [data-ui="sentence"] .sp-dept-n,
[data-ui="sentence"] .sp-op-en, [data-ui="sentence"] .tr-en, [data-ui="sentence"] .tr-caret,
[data-ui="sentence"] .sp-caret { font-family: var(--sentence-mono); color: var(--sentence-dim); }
[data-ui="sentence"] .tr-grp { font-family: var(--sentence-mono); letter-spacing: .14em; color: var(--sentence-fg); }

/* ---- Y3. 可展開卡 .sp-op／.tr-inj ---- */
[data-ui="sentence"] .sp-op, [data-ui="sentence"] .tr-inj {
  background: transparent; border: 1px solid var(--sentence-line2);
  border-left: 4px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .sp-op.open, [data-ui="sentence"] .tr-inj.open { border-left-color: var(--sentence-fg); }
[data-ui="sentence"] .sp-op-head, [data-ui="sentence"] .tr-inj-head {
  color: var(--sentence-fg); font-family: var(--sentence-sans); min-height: 48px;
}
[data-ui="sentence"] .sp-op-head:hover, [data-ui="sentence"] .tr-inj-head:hover { background: var(--sentence-shade); }
[data-ui="sentence"] .sp-op-zh, [data-ui="sentence"] .tr-zh {
  font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg);
}
[data-ui="sentence"] .sp-op-rec { font-family: var(--sentence-mono); color: var(--sentence-fg2); }
[data-ui="sentence"] .tr-one { color: var(--sentence-fg2); }
[data-ui="sentence"] .sp-op-body, [data-ui="sentence"] .tr-body { border-top: 1px dashed var(--sentence-line2); }
[data-ui="sentence"] .sp-fld, [data-ui="sentence"] .tr-fld { border-bottom: 1px dotted var(--sentence-line); }
[data-ui="sentence"] .sp-fld .k, [data-ui="sentence"] .tr-fld .k {
  font-family: var(--sentence-mono); letter-spacing: .12em; color: var(--sentence-dim);
}
[data-ui="sentence"] .sp-fld .v b, [data-ui="sentence"] .tr-fld .v b { font-family: var(--sentence-mono); color: var(--sentence-fg); }
[data-ui="sentence"] .tr-fld .v em { color: var(--sentence-hot); }
[data-ui="sentence"] .sp-alt, [data-ui="sentence"] .sp-fnref { color: var(--sentence-hot); }
[data-ui="sentence"] .tr-cav, [data-ui="sentence"] .tr-nm {
  background: transparent; border-left: 3px solid var(--sentence-line2); border-radius: 0; color: var(--sentence-fg2);
}
[data-ui="sentence"] .tr-cav { border-left-color: var(--sentence-hot); }
[data-ui="sentence"] .tr-nm .lbl { font-family: var(--sentence-mono); letter-spacing: .14em; color: var(--sentence-dim); }

/* ---- Y4. 分級徽章 ----
   .sp-cls（傷口分類 clean／clean-contaminated）、.sp-src（資料來源）、
   .tr-rec（建議強度四級）三組原本都是寫死的實色膠囊。
   來源徽章是**出處**不是嚴重度，不占用 hot／warn／calm，改用實心 vs 虛線兩種形。
   .tr-rec 四級沿用 Q4 的語彙：實心墨綠 → 墨綠外框 → 琥珀外框 → 實心硃砂。 */
[data-ui="sentence"] .sp-cls, [data-ui="sentence"] .sp-src, [data-ui="sentence"] .tr-rec {
  border-radius: 0; font-family: var(--sentence-mono);
}
[data-ui="sentence"] .sp-cls.c1 { color: var(--sentence-calm); background: transparent; border: 1px solid var(--sentence-calm); }
[data-ui="sentence"] .sp-cls.c2 { color: var(--sentence-warn); background: transparent; border: 1px solid var(--sentence-warn); }
[data-ui="sentence"] .sp-src.ntuh { color: var(--sentence-inv-fg); background: var(--sentence-inv-bg); border: 1px solid var(--sentence-inv-bg); }
[data-ui="sentence"] .sp-src.supp { color: var(--sentence-fg2); background: transparent; border: 1px dashed var(--sentence-line2); }
[data-ui="sentence"] .tr-rec.r3 { color: var(--sentence-inv-fg); background: var(--sentence-calm); border: 1px solid var(--sentence-calm); }
[data-ui="sentence"] .tr-rec.r2 { color: var(--sentence-calm); background: transparent; border: 1px solid var(--sentence-calm); }
[data-ui="sentence"] .tr-rec.r1 { color: var(--sentence-warn); background: transparent; border: 1px solid var(--sentence-warn); }
[data-ui="sentence"] .tr-rec.r0 { color: var(--sentence-inv-fg); background: var(--sentence-hot); border: 1px solid var(--sentence-hot); }
[data-ui="sentence"] .tr-legend .lg { color: var(--sentence-fg2); }
[data-ui="sentence"] .pa-vasc-res {
  font-family: var(--sentence-mono); color: var(--sentence-fg);
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .pa-flag {
  font-family: var(--sentence-mono); color: var(--sentence-fg);
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}

/* ---- Y5. 表格與空狀態 ---- */
[data-ui="sentence"] table.sp-rd th, [data-ui="sentence"] table.sp-rd td,
[data-ui="sentence"] table.pa-cmp th, [data-ui="sentence"] table.pa-cmp td,
[data-ui="sentence"] table.tt-tbl th, [data-ui="sentence"] table.tt-tbl td {
  border: 1px solid var(--sentence-line); color: var(--sentence-fg2);
}
[data-ui="sentence"] table.sp-rd thead th, [data-ui="sentence"] table.pa-cmp thead th,
[data-ui="sentence"] table.tt-tbl thead th {
  background: var(--sentence-bg2); font-family: var(--sentence-mono); color: var(--sentence-dim);
}
[data-ui="sentence"] table.sp-rd td:first-child,
[data-ui="sentence"] table.pa-cmp td:first-child,
[data-ui="sentence"] table.pa-cmp td.num { font-family: var(--sentence-mono); color: var(--sentence-fg); }
[data-ui="sentence"] table.sp-rd td.na, [data-ui="sentence"] table.tt-tbl td.n { color: var(--sentence-dim); }
[data-ui="sentence"] table.tt-tbl td.y { color: var(--sentence-calm); }
[data-ui="sentence"] .sp-empty, [data-ui="sentence"] .tr-empty {
  background: transparent; border: 1px dashed var(--sentence-line2); border-radius: 0; color: var(--sentence-dim);
}
[data-ui="sentence"] .sp-hl { background: var(--sentence-shade); border-radius: 0; box-shadow: inset 0 -1px 0 var(--sentence-fg); }
[data-ui="sentence"] .sp-rf-col {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .sp-rf-h {
  font-family: var(--sentence-mono); letter-spacing: .14em; color: var(--sentence-dim);
  border-bottom: 1px solid var(--sentence-line);
}
[data-ui="sentence"] .sp-notes li, [data-ui="sentence"] .tr-myth li { border-bottom: 1px dotted var(--sentence-line); }
[data-ui="sentence"] .sp-notes .lt { font-family: var(--sentence-mono); color: var(--sentence-hot); }

/* ---- Y6. 停藥日曆 .pa-cal（住在 .result 內；本段開頭說明的第二個寫死色）----
   三態：照常服藥（.on）／停藥（.off）／手術當日（.op）。
   底色一律回到面板色系，狀態靠「框 ＋ 填 ＋ 字重」表達；
   .op 反白（整張日曆上唯一的一格），.off 琥珀實心，.on 淡影。 */
[data-ui="sentence"] .pa-cal-c {
  background: transparent; border: 1px solid var(--sentence-line); border-radius: 0;
  opacity: 1; color: var(--sentence-dim);
}
[data-ui="sentence"] .pa-cal-c.on { background: var(--sentence-shade); color: var(--sentence-fg2); }
[data-ui="sentence"] .pa-cal-c.off { background: var(--sentence-warn); border-color: var(--sentence-warn); color: var(--sentence-inv-fg); }
[data-ui="sentence"] .pa-cal-c.op { background: var(--sentence-inv-bg); border-color: var(--sentence-inv-bg); color: var(--sentence-inv-fg); }
[data-ui="sentence"] .pa-cal-lbl { opacity: 1; color: var(--sentence-dim); letter-spacing: .1em; }

/* ---- Y7. 創傷抗生素決策樹的結論面板 .tt-out（本段開頭說明的第一個寫死色）---- */
[data-ui="sentence"] .tt-lbl { font-family: var(--sentence-mono); letter-spacing: .14em; color: var(--sentence-dim); }
[data-ui="sentence"] .tt-opt {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); min-height: 48px;
}
[data-ui="sentence"] .tt-opt:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); }
[data-ui="sentence"] .tt-opt.on {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); border-color: var(--sentence-inv-bg); font-weight: 400;
}
[data-ui="sentence"] .tt-opt.on small { color: inherit; opacity: .8; }
[data-ui="sentence"] .tt-opt small { color: var(--sentence-dim); }
[data-ui="sentence"] .tt-out {
  background: var(--sentence-bg2); color: var(--sentence-fg);
  border: 2px solid var(--sentence-fg); border-radius: 0;
}
[data-ui="sentence"] .tt-out .h {
  font-family: var(--sentence-mono); letter-spacing: .16em; color: var(--sentence-dim);
}
[data-ui="sentence"] .tt-line { border-bottom: 1px solid var(--sentence-line); }
[data-ui="sentence"] .tt-line .n { font-family: var(--sentence-mono); color: var(--sentence-dim); }
[data-ui="sentence"] .tt-yes { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-calm); }
[data-ui="sentence"] .tt-no  { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-hot); }
[data-ui="sentence"] .tt-det, [data-ui="sentence"] .tt-note { color: var(--sentence-fg2); }
[data-ui="sentence"] .tt-note { border-top: 1px solid var(--sentence-line); }

/* ---- Y8. periop-anticoag 漏收的一組（.pa-warn／.pa-row 與該列的下拉）----
   X1／X3 那兩條長長的前綴清單當初漏了 pa-，補在這裡而不是回頭改上面那條：
   分開寫才看得出「這是補的」，也不會讓 X 段的清單長到看不出哪一頁沒收。 */
[data-ui="sentence"] .pa-warn {
  background: transparent; border: 1px solid var(--sentence-hot); border-left-width: 5px;
  border-radius: 0; color: var(--sentence-fg2);
}
[data-ui="sentence"] .pa-warn b { color: var(--sentence-fg); }
[data-ui="sentence"] .pa-warn .h {
  font-family: var(--sentence-mono); letter-spacing: .16em; color: var(--sentence-hot);
}
[data-ui="sentence"] .pa-row { border-bottom: 1px dotted var(--sentence-line); min-height: 48px; }
[data-ui="sentence"] .pa-row > label.pa-k {
  font-family: var(--sentence-mono); letter-spacing: .12em; color: var(--sentence-dim);
}
[data-ui="sentence"] .pa-row select {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-sans); font-size: 14px; min-height: 45px;
}
[data-ui="sentence"] .pa-sub { color: var(--sentence-dim); }
[data-ui="sentence"] .pa-out-h { font-family: var(--sentence-mono); letter-spacing: .16em; opacity: 1; color: var(--sentence-dim); }
[data-ui="sentence"] .pa-out-v { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .pa-out-d { opacity: 1; color: var(--sentence-fg2); }

/* ---- Y9. surgical-prophylaxis 欄位值裡的行內註解 ----
   那 70 個 span 是**寫在 HTML 裡的 inline style**（`style="color:var(--muted-soft)"`，
   共 5 處樣板、渲染成 70 個節點），inline style 的優先序高於任何選擇器，
   選擇器再怎麼提高特異度都打不過它。唯一的例外是 `!important`——
   本檔到這裡為止一個 !important 都沒用過，這是第一個，理由寫在這裡：
   要嘛改 tools/surgical-prophylaxis.html 把 inline style 拿掉（會動到正式版的
   外觀，不在本輪範圍），要嘛用 !important。選後者，並限定在 .sp-fld .v 之內，
   不做成全站規則。 */
[data-ui="sentence"] .sp-fld .v span[style*="--muted-soft"] { color: var(--sentence-dim) !important; }
[data-ui="sentence"] .sp-fld .v { color: var(--sentence-fg2); }


/* ================================================================
 * Z. ACLS 圖鑑頁（tools/acls.html）
 * ================================================================
 * 這一頁有兩層東西，處理方式不同：
 *
 *  (1) **心電圖圖鑑本體**（.ekg-*／.eg-*，四個頁面層級變數 --ekg-paper／
 *      --ekg-minor／--ekg-major／--ekg-trace／--ekg-label）。**不動。**
 *      那是心電圖紙（亮色＝米白底粉紅格黑筆）與床邊監視器（暗色＝深底青綠描跡）
 *      的專業視覺語彙，不是頁面配色的一部分——就像 U 段不改抗菌譜格子的四級色。
 *      頁面自己的註解已經寫明「除這四個以外不另外寫死顏色」，本段照這條線走：
 *      只換圖框、圖說與旁邊的說明盒，圖裡的一筆一畫都保持原樣。
 *
 *  (2) 其餘全部是一般 chrome：頂部的多層導覽鈕（.navwrap）、流程圖方塊
 *      （.fd-box／.fd-col／.fd-tag／.fd-arrow）、資料表（table.data）、
 *      可逆病因兩欄（.ht-col）、改版差異（.chg）。這些接管。
 * ================================================================ */

/* ---- Z1. 頂部多層導覽 ---- */
[data-ui="sentence"] .navwrap { border-bottom: 1px solid var(--sentence-line2); }
[data-ui="sentence"] .ng-label {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .14em; color: var(--sentence-dim);
}
[data-ui="sentence"] .navwrap button {
  font-family: var(--sentence-mono); font-size: 11.5px;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg2); min-height: 44px; padding: 0 12px;
  display: inline-flex; align-items: center;
}
[data-ui="sentence"] .navwrap button:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); color: var(--sentence-fg); }
[data-ui="sentence"] .navwrap button.on {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg); border-color: var(--sentence-inv-bg); font-weight: 700;
}
[data-ui="sentence"] .sub .pill {
  font-family: var(--sentence-mono); background: transparent; color: var(--sentence-fg2);
  border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .view-head .vh-t { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .view-head .vh-s { font-family: var(--sentence-mono); color: var(--sentence-dim); }

/* ---- Z2. 導言盒與流程圖方塊 ---- */
[data-ui="sentence"] .intro-box {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0; color: var(--sentence-fg2);
}
[data-ui="sentence"] .intro-box .ib-t {
  font-family: var(--sentence-mono); letter-spacing: .16em; color: var(--sentence-dim);
}
[data-ui="sentence"] .intro-box b { font-family: var(--sentence-mono); color: var(--sentence-fg); }
[data-ui="sentence"] .fd-box {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0; color: var(--sentence-fg2);
}
[data-ui="sentence"] .fd-box .fd-h { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg); }
[data-ui="sentence"] .fd-box b { font-family: var(--sentence-mono); color: var(--sentence-fg); }
[data-ui="sentence"] .fd-box.start { border-left: 4px solid var(--sentence-fg); }
/* 「這一格是要你回答的問題」：正式版用 --accent-soft 淺底表示；本設計不塗底，
   改成整格 2px 墨框（同 I 段「問題比選項重、但比結論輕」的層級）。 */
[data-ui="sentence"] .fd-box.q { background: transparent; border: 2px solid var(--sentence-fg); }
[data-ui="sentence"] .fd-box.q .fd-h { color: var(--sentence-fg); }
[data-ui="sentence"] .fd-box.warn { border-left: 4px solid var(--sentence-hot); }
[data-ui="sentence"] .fd-arrow { color: var(--sentence-dim); }
[data-ui="sentence"] .fd-arrow .lbl {
  font-family: var(--sentence-mono); color: var(--sentence-dim);
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .fd-col {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0; color: var(--sentence-fg2);
}
[data-ui="sentence"] .fd-col b { font-family: var(--sentence-mono); color: var(--sentence-fg); }
/* 是／否／替代三個分岔標籤：border 用的是 currentColor，改字色就等於同時改框色。
   是＝墨綠、否＝硃砂、替代＝灰——三者都是臨床分流結果，用得起嚴重度色階。 */
[data-ui="sentence"] .fd-tag { border-radius: 0; font-family: var(--sentence-mono); }
[data-ui="sentence"] .fd-tag.yes { color: var(--sentence-calm); }
[data-ui="sentence"] .fd-tag.no  { color: var(--sentence-hot); }
[data-ui="sentence"] .fd-tag.alt { color: var(--sentence-dim); }
[data-ui="sentence"] .fd-cap { font-family: var(--sentence-serif); font-weight: 500; color: var(--sentence-fg); }

/* ---- Z3. 資料表、可逆病因、改版差異 ---- */
[data-ui="sentence"] table.data th,
[data-ui="sentence"] table.data td { border: 1px solid var(--sentence-line); color: var(--sentence-fg2); }
[data-ui="sentence"] table.data th {
  background: var(--sentence-bg2); font-family: var(--sentence-mono);
  font-size: 10px; letter-spacing: .06em; color: var(--sentence-dim);
}
[data-ui="sentence"] table.data td.mono, [data-ui="sentence"] table.data .mono {
  font-family: var(--sentence-mono); color: var(--sentence-fg);
}
[data-ui="sentence"] .ht-col h4 {
  font-family: var(--sentence-mono); letter-spacing: .14em; color: var(--sentence-dim);
}
[data-ui="sentence"] .ht-col li b { font-family: var(--sentence-mono); color: var(--sentence-fg); }
[data-ui="sentence"] .chg { border-left: 4px solid var(--sentence-line2); color: var(--sentence-fg2); }
[data-ui="sentence"] .chg .chg-t { color: var(--sentence-fg); font-family: var(--sentence-sans); }
[data-ui="sentence"] .chg .chg-tag { font-family: var(--sentence-mono); color: var(--sentence-dim); }

/* ---- Z4. 心電圖圖鑑的外框與周邊（圖本身不動，見本段開頭）---- */
[data-ui="sentence"] .ekg-wrap { border: 1px solid var(--sentence-line2); border-radius: 0; }
[data-ui="sentence"] .ekg-cap { font-family: var(--sentence-mono); color: var(--sentence-dim); }
[data-ui="sentence"] .ekg-cal {
  font-family: var(--sentence-mono); color: var(--sentence-fg2);
  background: transparent; border: 1px dashed var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .ekg-gist {
  background: transparent; border-left: 4px solid var(--sentence-fg);
  border-radius: 0; color: var(--sentence-fg2);
}
[data-ui="sentence"] .ekg-gist b { color: var(--sentence-fg); }
[data-ui="sentence"] .ekg-flag {
  /* 2026-09-06：正文回墨色；紅只留邊框與開頭的 ⚑——加深緋紅只表達臨床嚴重度，這一段是教學提醒 */
  color: var(--sentence-fg); border: 1px dashed var(--sentence-hot); border-radius: 0;
}
[data-ui="sentence"] .ekg-flag::first-letter { color: var(--sentence-hot); }
[data-ui="sentence"] .ekg-flag b { color: var(--sentence-fg); }


/* ================================================================
 * AA. 剩下的兩個 pathway 專屬元件 ＋ 全站 inline style 的兜底
 * ================================================================ */

/* ---- AA1. 癲癇的三階段給藥表（pathways/seizure.html）----
   整段色值寫死（#9fb3ae／#8ec8bd／#fff／#24363a…），頁面註解寫的理由是
   「.result 面板恆為深色，故色值與該面板同組」——在正式版成立，在本設計不成立：
   G 段的 .result 亮色主題是骨白。實測亮色下 `.sz-dose{color:#fff}`
   （每一階段唯一要抄進醫囑的那個劑量數字）白字壓骨白，對比 1.06，整欄消失。 */
[data-ui="sentence"] .sz-lead { font-family: var(--sentence-mono); color: var(--sentence-dim); }
[data-ui="sentence"] .sz-row { border-top: 1px solid var(--sentence-line); }
[data-ui="sentence"] .sz-nm { font-family: var(--sentence-mono); color: var(--sentence-fg2); }
[data-ui="sentence"] .sz-nm .sz-route { color: var(--sentence-dim); letter-spacing: .1em; }
[data-ui="sentence"] .sz-dose { font-family: var(--sentence-mono); color: var(--sentence-fg); }
[data-ui="sentence"] .sz-dose .sz-arrow { color: var(--sentence-dim); }
[data-ui="sentence"] .sz-dose .sz-unit { color: var(--sentence-fg2); }
[data-ui="sentence"] .sz-cap {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-mono); color: var(--sentence-fg2);
}
[data-ui="sentence"] .sz-det { color: var(--sentence-fg2); }
[data-ui="sentence"] .sz-det b { color: var(--sentence-fg); }
[data-ui="sentence"] .sz-warn { color: var(--sentence-hot); }
[data-ui="sentence"] .sz-sub { color: var(--sentence-dim); border-left: 2px solid var(--sentence-line); }

/* ---- AA2. Björck 腹腔開放分級矩陣（pathways/iah-acs.html）---- */
[data-ui="sentence"] .bj-matrix th,
[data-ui="sentence"] .bj-matrix td { border-bottom: 1px solid var(--sentence-line); color: var(--sentence-fg2); }
[data-ui="sentence"] .bj-matrix thead th {
  font-family: var(--sentence-mono); letter-spacing: .14em;
  color: var(--sentence-dim); border-bottom: 2px solid var(--sentence-fg);
}
[data-ui="sentence"] .bj-matrix thead th:first-child { color: var(--sentence-dim); }
[data-ui="sentence"] .bj-g { font-family: var(--sentence-mono); color: var(--sentence-fg2); }
[data-ui="sentence"] .bj-d { color: var(--sentence-fg); }
[data-ui="sentence"] .bj-n, [data-ui="sentence"] .bj-na { color: var(--sentence-dim); font-family: var(--sentence-mono); }
[data-ui="sentence"] .bj-code {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  font-family: var(--sentence-mono); color: var(--sentence-fg);
}
/* 4 級（凍結腹腔）是這張表上唯一「回不去」的一格，給 hot 粗框、不塗底。 */
[data-ui="sentence"] .bj-g4 {
  background: transparent; border: 1px solid var(--sentence-hot);
  border-left-width: 5px; border-radius: 0;
}
[data-ui="sentence"] .bj-g4 .bj-code { border-color: var(--sentence-hot); color: var(--sentence-hot); background: transparent; }
[data-ui="sentence"] .bj-foot { border-left: 2px solid var(--sentence-line); color: var(--sentence-fg2); }

/* ---- AA3. HTML 內 inline style 的 --muted／--muted-soft 兜底 ----
   全站只有 4 頁共約 20 個節點把次要文字色寫在 style 屬性裡
   （acls 16、surgical-prophylaxis 2、spectrum-database 2、geneva 1）。
   inline style 贏過任何選擇器，只能用 !important——這是本檔第二處，
   與 Y9 同一個理由：另一條路是去改那 4 頁的 HTML，但那會同時改動正式版。
   只宣告 color，不碰其他屬性；attribute 選擇器限定在真的寫了這個變數的節點上。 */
[data-ui="sentence"] [style*="var(--muted)"] { color: var(--sentence-fg2) !important; }
[data-ui="sentence"] [style*="var(--muted-soft)"] { color: var(--sentence-dim) !important; }


/* ================================================================
 * AB. 收尾：全站共用的零星元件 ＋ 頁面自己的最後幾個
 * ================================================================ */

/* ---- AB1. 全站共用（css/styles.css 定義、每頁都有的三件）---- */
[data-ui="sentence"] .to-top {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg);
}
[data-ui="sentence"] .to-top:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); color: var(--sentence-fg); }
[data-ui="sentence"] .to-top:focus-visible { outline-color: var(--sentence-fg); }
[data-ui="sentence"] .home-divider { color: var(--sentence-dim); }
[data-ui="sentence"] .home-divider:before,
[data-ui="sentence"] .home-divider:after { background: var(--sentence-line); }
[data-ui="sentence"] footer.tool-footer { border-top-color: var(--sentence-line); }
[data-ui="sentence"] .disclaimer { border-top-color: var(--sentence-line); }

/* ---- AB2. 升壓劑換算（tools/vasopressor.html）與 SOFA 的升壓劑小算盤 ---- */
[data-ui="sentence"] .vaso-row {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .vaso-remove { color: var(--sentence-hot); }
[data-ui="sentence"] .vaso-dose-out {
  font-family: var(--sentence-mono); background: transparent; color: var(--sentence-fg);
  border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .vaso-dose-val { color: var(--sentence-fg); font-weight: 700; }
[data-ui="sentence"] .vaso-dose-unit { color: var(--sentence-dim); }
/* .btn-add 在正式版是 accent 實心配 #fff 白字。本設計把它改成反白（墨底骨字）——
   不能只把底色換掉留著 #fff：暗色主題的 --sentence-inv-bg 是骨白，白字會消失。 */
[data-ui="sentence"] button.btn-add {
  background: var(--sentence-inv-bg); color: var(--sentence-inv-fg);
  border: 1px solid var(--sentence-inv-bg); border-radius: 0;
  font-family: var(--sentence-mono); min-height: 45px; padding: 0 18px;
}
[data-ui="sentence"] .drug-calc {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
}
[data-ui="sentence"] .drug-calc-title {
  font-family: var(--sentence-mono); letter-spacing: .14em; color: var(--sentence-dim);
}
[data-ui="sentence"] .drug-calc-details > summary { color: var(--sentence-fg2); }

/* ---- AB3. 藥物資料庫的來源篩選鈕（css/drug-database.css 的 .db-src-btn）----
   M-1 段刻意不管 db-* 的**密度**，但顏色沒人接手；這兩顆是該頁唯二還在用
   正式版色票的控制項。 */
[data-ui="sentence"] button.db-src-btn {
  background: transparent; border-color: var(--sentence-line2); border-radius: 0; color: var(--sentence-fg2);
}
[data-ui="sentence"] button.db-src-btn span { color: var(--sentence-dim); opacity: 1; }
[data-ui="sentence"] button.db-src-btn.active {
  border-color: var(--sentence-fg); color: var(--sentence-fg); background: var(--sentence-shade);
}
[data-ui="sentence"] button.db-src-btn.active span { color: var(--sentence-fg2); }

/* ---- AB4. 各頁最後一個 ---- */
[data-ui="sentence"] .eg-used {                       /* tools/egfr.html：算式來源標籤 */
  background: transparent; color: var(--sentence-fg2);
  border: 1px solid var(--sentence-line2); border-radius: 0; font-family: var(--sentence-mono);
}
[data-ui="sentence"] .cv-def span { color: var(--sentence-fg2); }
[data-ui="sentence"] table.score-ref td { color: var(--sentence-fg2); }
[data-ui="sentence"] table.score-ref td:last-child { color: var(--sentence-fg); }
[data-ui="sentence"] .pa-row input {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-mono); font-size: 16px; min-height: 45px;
}

/* ---- AB5. inline style 的最後兩類（同 AA3 的理由：inline 只能用 !important）----
   `style="color:var(--accent)"`／`style="border-left:3px solid var(--accent2)"`
   這兩種寫法散在 6 頁共 12 處。子字串比對刻意寫成含右括號的
   `color:var(--accent)`，才不會連 `color:var(--accent2)` 一起吃掉
   （後者要走下面那條，對應的是硃砂而不是墨色）。 */
[data-ui="sentence"] [style*="color:var(--accent)"],
[data-ui="sentence"] [style*="color: var(--accent)"] { color: var(--sentence-fg2) !important; }
[data-ui="sentence"] [style*="color:var(--accent2)"],
[data-ui="sentence"] [style*="color: var(--accent2)"] { color: var(--sentence-hot) !important; }
[data-ui="sentence"] [style*="solid var(--accent)"] { border-left-color: var(--sentence-fg) !important; }
[data-ui="sentence"] [style*="solid var(--accent2)"] { border-left-color: var(--sentence-hot) !important; }

/* ---- AB6. 最後六個節點：全部是寫在 HTML style 屬性裡的顏色 ----
   分佈：periop-anticoag 的 4F-PCC 體重欄（整組輸入框樣式寫在 style 屬性裡）、
   wassmer 的重點卡（`border-color:var(--accent); background:var(--soft-bg)`）、
   pulp 的分隔線、index 頁尾的上緣線、sofa 的 .drug-out。
   前四者只能 !important（理由同 AA3／AB5）；.drug-out 是 css/styles.css:398
   寫死的 `background:#132126; color:#fff` 深色小方塊，正常改。 */
[data-ui="sentence"] input[style*="var(--field-bg)"] {
  background: var(--sentence-bg) !important; border-color: var(--sentence-line2) !important;
  color: var(--sentence-fg) !important; border-radius: 0 !important; font-size: 16px !important;
}
[data-ui="sentence"] [style*="var(--soft-bg)"] { background: transparent !important; }
[data-ui="sentence"] [style*="border-color:var(--accent)"] { border-color: var(--sentence-fg) !important; }
[data-ui="sentence"] [style*="solid var(--line)"] { border-color: var(--sentence-line) !important; }
[data-ui="sentence"] .drug-out {
  background: var(--sentence-bg2); color: var(--sentence-fg); border-radius: 0;
  border: 1px solid var(--sentence-line2); font-family: var(--sentence-mono);
}
[data-ui="sentence"] .drug-out span { color: var(--sentence-fg2); }

/* ---- AB7. 結果面板內兩個寫死的深底專用色（掃描時才發現，非本輪改動造成）----
   `#f0a875`（apache／radial／wassmer 的預估死亡率、parc 的係數）與
   `#c9c4b4`（apache 的死亡率註解）都寫在 HTML 的 style 屬性裡，配的是正式版
   `.result` 的深色面板。G 段把面板換成骨白之後，實測亮色主題對比 1.53／1.35
   ——「4%」「約30–40%」這類**預估死亡率**在亮色主題下幾乎看不見。
   死亡率給 hot（那是這一頁最該被看見的數字），註解回 fg2。 */
[data-ui="sentence"] [style*="#f0a875"] { color: var(--sentence-hot) !important; }
[data-ui="sentence"] [style*="#c9c4b4"] { color: var(--sentence-fg2) !important; }

/* ═══════════════════════════════════════════════════════════════════════
   AC. 2026-08 新增的四頁：CRRT／節律器模式／血管活性藥物／電解質失衡
   ═══════════════════════════════════════════════════════════════════════
   四頁都在自己的 <style> 裡另立了一批 class，若不在這裡打一次，就會原封不動
   吃正式版色票——這正是 §「頁面專屬 class」那一輪記下的漏網情形，這次是新頁
   一開始就補上，不再事後掃。

   涵蓋範圍：
     AC1 CRRT 處方計算器（.rxbox／.rx-*）與模式示意（.modefig）
     AC2 GRADE 徽章 .gr（CRRT ＋ 電解質共用）
     AC3 節律器 NBG 編碼器（.nbg／.nbg-*）
     AC4 節律器模式卡（.mc／.mc-*）
     AC5 血管活性藥物的血行動力學矩陣（.hemo／.ar／.hemo-key）與體重列（.va-*）
     AC6 藥卡的兩個新修飾（.dg.na 院內開不到／.dg-tag.off）
     AC7 電解質的參考值列（.refbar）、高低段標頭（.dirhead）、鑑別步驟（.steps）
     AC8 兩個表格修飾（.dt-cor 短碼欄置中／.dt-wrap 全欄可換行）

   **特異度**：頁面內嵌 <style> 在 <head> 內排在本檔之後，同特異度時它贏。
   所以凡是頁面寫成 `.x.modifier`（兩個 class）的，這裡一律要寫成
   `[data-ui="sentence"] .x.modifier`（三段）才壓得過，不能只寫 `[data-ui] .x`。 */

/* ---- AC1. CRRT 處方計算器 ----
   輸入區走「透明底＋髮絲框」，輸出面板比照 G 段的 .result：骨白底＋2px 墨框，
   而不是頁面原本寫死的 #132126 深塊（那是正式版的語彙）。 */
[data-ui="sentence"] .rxbox {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  padding: 13px 14px; margin: 12px 0 14px;
}
[data-ui="sentence"] .rxbox-t {
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700;
  letter-spacing: .16em; text-transform: uppercase; color: var(--sentence-dim); margin-bottom: 10px;
}
[data-ui="sentence"] .rx-row label { font-size: 12.5px; color: var(--sentence-fg); line-height: 1.45; }
[data-ui="sentence"] .rx-row label .rx-en {
  /* 2026-09-06：拿掉 uppercase——這一行放的是單位（mL/min/1.73m²、mmHg、mmol/L），
     SI 單位大小寫有意義（m／M、mL）；字級提到 10px 下限。 */
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .04em;
  color: var(--sentence-dim);
}
[data-ui="sentence"] .rx-row .rx-u { font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim); }
[data-ui="sentence"] .rx-row input[type=number] {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-mono); font-weight: 700;
  /* 16px：iOS 聚焦時字級 <16px 會自動放大整頁（全站輸入框同一條，見 AA 段） */
  font-size: 16px; width: 86px; padding: 5px 7px;
}
[data-ui="sentence"] .rx-out {
  background: var(--sentence-bg2); color: var(--sentence-fg);
  border: 2px solid var(--sentence-fg); border-radius: 0; padding: 13px 14px; margin-top: 13px;
}
[data-ui="sentence"] .rx-metric .rx-lab {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .rx-metric .rx-val {
  font-family: var(--sentence-serif); font-size: 24px; font-weight: 600; color: var(--sentence-fg); line-height: 1.2;
}
[data-ui="sentence"] .rx-metric .rx-val small {
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 400; color: var(--sentence-dim);
}
/* 三段語意色：偏離目標＝硃砂、落在目標＝墨綠。兩者都要壓過頁面的 .rx-val.warn／.ok */
[data-ui="sentence"] .rx-metric .rx-val.warn { color: var(--sentence-hot); }
[data-ui="sentence"] .rx-metric .rx-val.ok   { color: var(--sentence-calm); }
[data-ui="sentence"] .rx-flag {
  font-family: var(--sentence-mono); font-size: 11px; line-height: 1.8; color: var(--sentence-fg2);
  margin-top: 10px; padding-top: 9px; border-top: 1px solid var(--sentence-line);
}
[data-ui="sentence"] .rx-flag .f-bad { color: var(--sentence-hot); }
[data-ui="sentence"] .rx-flag .f-ok  { color: var(--sentence-calm); }
[data-ui="sentence"] .rx-note { font-size: 11.5px; line-height: 1.75; color: var(--sentence-fg2); margin-top: 10px; }
[data-ui="sentence"] .rx-note b { color: var(--sentence-fg); }

/* 模式示意那一行（血液 →［濾器］→ 回血）：等寬、髮絲框、無底色 */
[data-ui="sentence"] .modefig {
  background: transparent; border: 1px solid var(--sentence-line); border-radius: 0;
  font-family: var(--sentence-mono); font-size: 11px; line-height: 2; color: var(--sentence-fg2);
  padding: 10px 12px;
}
[data-ui="sentence"] .modefig b { color: var(--sentence-fg); }
[data-ui="sentence"] .modefig i { color: var(--sentence-hot); }

/* ---- AC2. GRADE 徽章 .gr（1B／2C／2026 草案）----
   與 .cor 同一個處理原則：徽章本身中性，靠字面表達強弱；
   .gr.w（草案／尚未定稿）改虛線框，讓「這條還不算數」在版面上看得出來。 */
[data-ui="sentence"] .gr {
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700; letter-spacing: .06em;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg2); padding: 1px 5px;
}
/* background 必須在這兩條（(0,3,0)）各自重申一次，不能只靠上面 `[data-ui] .gr`：
   頁面的 `.gr.w{background:var(--accent2-soft)}` 也是兩個 class，與 `[data-ui] .gr`
   同為 (0,2,0)，而內嵌 <style> 排在本檔之後 → 頁面贏。leak.py 掃出來的就是這一格。 */
[data-ui="sentence"] .gr.w {
  background: transparent; border-style: dashed;
  border-color: var(--sentence-warn); color: var(--sentence-warn);
}
[data-ui="sentence"] .gr.d {
  background: transparent; border-style: dotted;
  border-color: var(--sentence-line); color: var(--sentence-dim);
}

/* ---- AC3. 節律器 NBG 編碼器 ----
   輸出面板同 AC1 的邏輯（骨白＋墨框）。代碼本身是這一區唯一該最大的東西。 */
[data-ui="sentence"] .nbg {
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0; padding: 14px;
}
[data-ui="sentence"] .nbg-t {
  font-family: var(--sentence-mono); font-size: 10px; font-weight: 700;
  letter-spacing: .16em; text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .nbg-slot label {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .1em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .nbg-slot label b { color: var(--sentence-fg); font-size: 10.5px; }
[data-ui="sentence"] .nbg-slot select {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-mono); font-size: 16px; padding: 6px 7px;
}
[data-ui="sentence"] .nbg-out {
  background: var(--sentence-bg2); border: 2px solid var(--sentence-fg); border-radius: 0; padding: 14px;
}
[data-ui="sentence"] .nbg-code {
  font-family: var(--sentence-mono); font-size: 34px; font-weight: 700;
  letter-spacing: .12em; color: var(--sentence-fg);
}
[data-ui="sentence"] .nbg-name { font-family: var(--sentence-serif); font-size: 16px; color: var(--sentence-calm); }
[data-ui="sentence"] .nbg-read { font-size: 12.5px; line-height: 1.8; color: var(--sentence-fg2); }
[data-ui="sentence"] .nbg-read b { color: var(--sentence-fg); }
[data-ui="sentence"] .nbg-warn {
  font-size: 12px; line-height: 1.8; color: var(--sentence-hot);
  border-top: 1px solid var(--sentence-line); padding-top: 9px; margin-top: 10px;
}
[data-ui="sentence"] .nbg-warn b { color: var(--sentence-fg); }

/* ---- AC4. 節律器模式卡 .mc ----
   結構與藥卡 .dg 同源（左緣色條分主／警），色票沿用 R4 那一套。 */
[data-ui="sentence"] .mc {
  background: transparent; border: 1px solid var(--sentence-line);
  border-left: 3px solid var(--sentence-fg); border-radius: 0; padding: 12px 14px; margin: 11px 0;
}
[data-ui="sentence"] .mc.warn { border-left-color: var(--sentence-hot); }
[data-ui="sentence"] .mc-code {
  font-family: var(--sentence-mono); font-size: 19px; font-weight: 700;
  letter-spacing: .08em; color: var(--sentence-fg);
}
[data-ui="sentence"] .mc-zh { font-size: 12px; color: var(--sentence-dim); }
[data-ui="sentence"] .mc-tag {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .06em;
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg2); padding: 1px 5px;
}
/* 三段選擇器：頁面寫的是 `.mc-tag.bad`（0,2,0），與 `[data-ui] .mc-tag` 同分且排在後面 */
[data-ui="sentence"] .mc-tag.bad { border-color: var(--sentence-hot); color: var(--sentence-hot); background: transparent; }
[data-ui="sentence"] .mc-body { font-size: 12.5px; line-height: 1.8; color: var(--sentence-fg2); }
[data-ui="sentence"] .mc-body b, [data-ui="sentence"] .mc-body strong { color: var(--sentence-fg); }

/* ---- AC5. 血管活性藥物：血行動力學矩陣 ----
   這張表是本頁的賣點，箭頭要一眼分得出方向：升＝硃砂、降＝墨綠、不變＝灰。
   （不是「升＝壞」的意思——是讓兩個方向在單色底上分得開，圖例寫在表下。） */
[data-ui="sentence"] .hemo th, [data-ui="sentence"] .hemo td {
  border: 1px solid var(--sentence-line); padding: 6px 7px;
}
[data-ui="sentence"] .hemo thead th {
  font-family: var(--sentence-mono); font-size: 10.5px; letter-spacing: .06em;
  background: var(--sentence-shade); color: var(--sentence-fg); border-bottom-color: var(--sentence-line2);
}
[data-ui="sentence"] .hemo thead th .hz { font-size: 10px; color: var(--sentence-dim); font-weight: 400; }
[data-ui="sentence"] .hemo tbody th {
  font-family: var(--sentence-mono); font-size: 10.5px; background: transparent; color: var(--sentence-fg);
}
[data-ui="sentence"] .hemo tbody th .hz { font-size: 10px; color: var(--sentence-dim); font-weight: 400; }
[data-ui="sentence"] .hemo tr.hr-txt td { font-size: 11px; line-height: 1.7; color: var(--sentence-fg2); }
[data-ui="sentence"] .hemo tr.hr-txt td b { color: var(--sentence-fg); }
[data-ui="sentence"] .ar { font-family: var(--sentence-mono); font-size: 15px; font-weight: 700; }
[data-ui="sentence"] .ar.up  { color: var(--sentence-hot); }
[data-ui="sentence"] .ar.dn  { color: var(--sentence-calm); }
[data-ui="sentence"] .ar.eq  { color: var(--sentence-dim); }
[data-ui="sentence"] .ar.mix { color: var(--sentence-fg2); }
[data-ui="sentence"] .ar sub { color: var(--sentence-dim); }
[data-ui="sentence"] .hemo-key { font-family: var(--sentence-mono); font-size: 10.5px; line-height: 1.9; color: var(--sentence-dim); }
[data-ui="sentence"] .hemo-key b { color: var(--sentence-fg); }

/* 體重列：與心因性休克的 .cs-bar 同一件事，色票同 R 段 */
[data-ui="sentence"] .va-bar { background: transparent; border-bottom: 1px solid var(--sentence-line); }
[data-ui="sentence"] .va-bar label {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--sentence-dim);
}
[data-ui="sentence"] .va-bar input[type=number] {
  background: var(--sentence-bg); border: 1px solid var(--sentence-line2); border-radius: 0;
  color: var(--sentence-fg); font-family: var(--sentence-mono); font-weight: 700; font-size: 16px;
}
[data-ui="sentence"] .va-bar .va-hint { font-family: var(--sentence-mono); font-size: 10.5px; color: var(--sentence-dim); }

/* ---- AC6. 藥卡的兩個新修飾（R4 的 .dg 家族本來就已收斂，這裡只補新的兩個）----
   .dg.na＝台大處方集查無的品項：不是「危險」而是「這裡開不到」，所以走虛線框＋
   降一階的字色，與 .dg.warn（硃砂實線）在語意上分開。 */
[data-ui="sentence"] .dg.na {
  background: transparent; border-style: dashed; border-color: var(--sentence-line2);
  border-left: 3px dashed var(--sentence-dim);
}
[data-ui="sentence"] .dg.na .dg-name { color: var(--sentence-fg2); }
[data-ui="sentence"] .dg-tag.off {
  background: transparent; border: 1px dashed var(--sentence-line2); color: var(--sentence-dim);
}

/* ---- AC7. 電解質失衡 ----
   參考值列（台大檢驗醫學部的單位與區間）：一整頁都要靠它校正單位，
   所以給 shade 底而不是透明，讓它在六個分頁裡都是同一個固定錨點。 */
[data-ui="sentence"] .refbar {
  background: var(--sentence-shade); border: 1px solid var(--sentence-line);
  border-left: 3px solid var(--sentence-fg); border-radius: 0; padding: 9px 12px;
}
[data-ui="sentence"] .refbar .rb { font-family: var(--sentence-mono); font-size: 11.5px; color: var(--sentence-fg); }
[data-ui="sentence"] .refbar .rb b { color: var(--sentence-fg); font-weight: 700; }
[data-ui="sentence"] .refbar .rb i { color: var(--sentence-dim); }
[data-ui="sentence"] .refbar .rb-src { font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim); }

/* 高／低兩端的段標頭：低端中性、高端硃砂——一頁十二段，這是唯一的方位感 */
[data-ui="sentence"] .dirhead { border-bottom: 1px solid var(--sentence-line2); }
[data-ui="sentence"] .dirhead .dh-n { font-family: var(--sentence-serif); font-size: 19px; color: var(--sentence-fg); }
[data-ui="sentence"] .dirhead .dh-e { font-family: var(--sentence-mono); font-size: 11px; color: var(--sentence-dim); }
[data-ui="sentence"] .dirhead.hi { border-bottom-color: var(--sentence-hot); }
[data-ui="sentence"] .dirhead.hi .dh-n { color: var(--sentence-hot); }

/* 鑑別步驟：序號只是等寬數字，不做圓底（實心圓點在一頁六組的密度下太吵） */
[data-ui="sentence"] .step { font-size: 12.5px; line-height: 1.8; color: var(--sentence-fg2); }
[data-ui="sentence"] .step b, [data-ui="sentence"] .step strong { color: var(--sentence-fg); }
[data-ui="sentence"] .step:before {
  background: none; border-radius: 0; width: auto; height: auto; display: inline;
  font-family: var(--sentence-mono); font-size: 12px; font-weight: 700;
  color: var(--sentence-dim); margin-top: 0;
}
[data-ui="sentence"] .step.alt:before { color: var(--sentence-hot); }
[data-ui="sentence"] .step .sq { color: var(--sentence-fg); font-weight: 700; }

/* ---- AC8. 兩個表格修飾 ----
   .dt-cor：第 2 欄以後是 Class／Level 這種短碼，置中不換行。
   .dt-wrap：全欄都是文字，第一欄也要能換行（不加這條，第一欄會被 .def-table
   的 `td:first-child{white-space:nowrap}` 逼成一字一行——2026-08 實機踩過）。 */
[data-ui="sentence"] .def-table.dt-cor th:nth-child(n+2),
[data-ui="sentence"] .def-table.dt-cor td:nth-child(n+2) { text-align: center; white-space: nowrap; }
[data-ui="sentence"] .def-table.dt-wrap td:first-child { white-space: normal; }
[data-ui="sentence"] .def-table.dt-wrap td,
[data-ui="sentence"] .def-table.dt-wrap th { vertical-align: top; }

/* ---- AD. 凍結第一欄的表格（table.fz-tbl）----
   輸液營養的成分對照總表與血管活性的兩張血行動力學矩陣共用同一個 class。

   為什麼非收在這裡不可：sticky 的格子需要不透明底色與自己的框線，而頁面 <style>
   用的是正式版 token（--paper／--soft-bg／--line）。造句設計下那組 token 不存在
   對應語意（骨白 vs 深墨），不覆蓋的話手機橫捲時，凍結欄會頂著正式版底色出現。
   **background 與 border 都必須在這裡重申**——頁面內嵌樣式排在外部樣式表之後，
   同特異度時它贏；只寫 position/z-index 而不寫底色，底色仍舊是 --paper。

   選擇器一律寫 `table.fz-tbl`（0,2,2）而不是 `.fz-tbl`（0,2,1）：
   要壓過同檔前面的 `[data-ui="sentence"] table.def-table th`（也是 0,2,2），
   靠的是「同分而本段在後」，少一個 table 就打不過。 */
/* border-collapse 也得在這裡重申：前面的
   `[data-ui="sentence"] table.def-table`（0,2,2）壓得過頁面的 `table.fz-tbl`（0,1,2），
   只在頁面寫 separate 是不會生效的（實測 computed 仍是 collapse）。 */
[data-ui="sentence"] table.fz-tbl { border-collapse: separate; border-spacing: 0; }
[data-ui="sentence"] table.fz-tbl th,
[data-ui="sentence"] table.fz-tbl td {
  border: 0;
  border-left: 1px solid var(--sentence-line);
  border-top: 1px solid var(--sentence-line);
}
[data-ui="sentence"] table.fz-tbl tr > *:last-child { border-right: 1px solid var(--sentence-line); }
[data-ui="sentence"] table.fz-tbl tbody tr:last-child > * { border-bottom: 1px solid var(--sentence-line); }
[data-ui="sentence"] table.fz-tbl tr > *:first-child {
  background: var(--sentence-bg);
  box-shadow: 1px 0 0 var(--sentence-line);
}
/* 表頭那一格的底色不能直接用 --sentence-shade：那是 **7% 的墨**，半透明，
   捲動時後面的欄位會從底下透出來（正是使用者回報「左邊露出後面的內容」的另一半）。
   疊一層 gradient 當作不透明底：上層鋪 shade、下層是實色 --sentence-bg。 */
[data-ui="sentence"] table.fz-tbl thead tr > *:first-child {
  background: linear-gradient(var(--sentence-shade), var(--sentence-shade)), var(--sentence-bg);
}

/* 靜脈營養液表（.pn-tbl）：品名連結、容量欄與配方註記。
   頁面寫的是正式版的 --ink／--accent／--muted，造句設計下這三個 token 不同調，
   要整組換掉（leak.py 掃出 37 筆：連結字色 11、連結底線 11、容量欄 11、配方註記 4）。
   選擇器寫 `table.def-table` 前綴是為了壓過同檔前面的 def-table 規則。 */
[data-ui="sentence"] table.def-table td.pn-n a {
  color: var(--sentence-fg);
  border-bottom-color: var(--sentence-hot);
}
[data-ui="sentence"] table.def-table td.pn-n a:hover { color: var(--sentence-hot); }
[data-ui="sentence"] table.def-table td.pn-v {
  font-family: var(--sentence-mono);
  color: var(--sentence-dim);
}
[data-ui="sentence"] table.def-table .pn-sub {
  font-family: var(--sentence-sans);
  color: var(--sentence-dim);
}

/* ================================================================
 * 第 P20 段 — 造句本身的動態（共用層在 css/styles.css 的「動態系統 Motion」）
 * ================================================================
 * 這一套設計的信條是「句子即狀態」，那麼**句子改變**就是整個產品最重要的一件事，
 * 而它原本是無聲的：renderRow()／renderPointer() 都是 innerHTML 整塊重畫，
 * 節點每次都是新的，所以上面掛的 transition 在狀態切換時永遠不會觸發。
 * 能動的只有新節點上的 @keyframes——這一段就是那些 @keyframes。
 *
 * 觸發時機由 js/sentence-nav.js 判斷（moPrev／moPrevN），**只有真的變了的那一格**
 * 才帶 is-landed／is-changed。不加這個判斷的話，退掉一個詞會讓沒被動到的另外兩格
 * 也跟著閃，那是雜訊不是回饋。
 */

/* ---- 詞落格：由左而右上墨，順著讀的方向 ----
   裁切的是整個詞塊，所以那條標示面向的下底線（實線／虛線／雙線／點線）
   會跟著字一起被畫出來——「這一格是哪個面向」和「這一格填好了」是同一筆。 */
@keyframes sent-chip-land { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
[data-ui="sentence"] .sent-chip.is-landed {
  animation: sent-chip-land var(--sentence-slow) var(--sentence-ease);
}

/* ---- 指向的件數：手繪螢光筆 ＋ 變動時重新畫過 ----
   「這句話目前指向 N 件事」是全站唯一的收斂讀數，150 → 20 是使用者做對了事情的證據。
   這個數字**常駐**帶著螢光筆（全站標重點就是這一枝筆）；件數真的變了的時候，
   那一筆會從左到右重新畫過去——與詞落格的「上墨」是同一條語言，方向也一樣。
   只動 background-size，不動字級與行高：這一行的基準位置被 baseline 對過
   （.sent-point-n 與 .sent-point-hint 只差 3px），縱向一格都不能跑。 */
[data-ui="sentence"] .sent-point-n b {
  background-image: var(--hl-img);
  background-repeat: no-repeat;
  background-position: left center;
  background-size: 100% 100%;
  padding: .04em .28em; margin: 0 -.10em;
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
}
@keyframes sent-count-mark { from { background-size: 0% 100%; } to { background-size: 100% 100%; } }
[data-ui="sentence"] .sent-point-n.is-changed b {
  animation: sent-count-mark 380ms var(--sentence-ease);
}

/* 關掉動態效果：詞不再用裁切的方式畫出來（那是位移型的揭露），改成純淡入；
   件數那道螢光保留——它是「你剛剛把範圍縮小了」的證據，不是裝飾。 */
@media (prefers-reduced-motion: reduce) {
  @keyframes sent-chip-land { from { opacity: 0; } to { opacity: 1; } }
}


/* ================================================================
 * AD. 2026-09-06 美化批次（使用者核准 18 項中屬造句設計層的部分）
 *     貓咪主題即將廢止，這一段只顧 [data-ui="sentence"]。每條前面寫它對應的發現編號。
 * ================================================================ */

/* #10 頂端 56px 是正式版頂欄（三橫槓）的留位；造句設計全站收掉側邊欄與頂欄，
   這條留白只替一條不存在的欄位佔著首屏 7%。 */
html[data-ui="sentence"].has-nav body { padding-top: 20px; }

/* #6 輸入列：手機上 label 160 ＋ 輸入框 120 ＋ 單位 ≈60 剛好超過 362px，單位掉到下一行
   變成孤兒；縮 label 的基準寬、單位不拆行，四列讀起來同一個節奏。 */
[data-ui="sentence"] .field-row .unit { white-space: nowrap; }
@media (max-width: 430px) {
  [data-ui="sentence"] .field-row label { flex-basis: 112px; }
  [data-ui="sentence"] .field-row input[type="number"] { flex: 0 1 108px; min-width: 88px; }
}

/* #11 分頁列換行後最後一列被拉成半寬、每顆寬度隨字數跳：每列填滿。 */
[data-ui="sentence"] .tab-row .tab-btn,
[data-ui="sentence"] .rsi-tabs .rsi-tab,
[data-ui="sentence"] .navwrap button { flex: 1 1 auto; text-align: center; }
/* 抗生素頁八顆模式鈕：純 auto 填滿會變成 6＋2（最後兩顆被拉到 160–200px），改固定四顆一列。 */
[data-ui="sentence"] .abx-modes .abx-mode { flex: 1 1 calc(25% - 6px); text-align: center; }
/* 心電圖頁的分組標籤在手機上自成一列，底下的按鈕才能整列平分（否則標籤旁只塞得下一顆） */
@media (max-width: 480px) {
  [data-ui="sentence"] .navgroup .ng-label { flex-basis: 100%; min-width: 0; margin-bottom: 2px; }
}

/* #13 糖尿病／高血壓的選項群組小標（.dm-grp／.ht-grp）改用共用區段標題的字法。 */
[data-ui="sentence"] .dm-grp, [data-ui="sentence"] .ht-grp {
  font-family: var(--sentence-mono); font-size: 10px; letter-spacing: .2em; text-transform: uppercase;
  color: var(--sentence-dim); border-bottom: 1px solid var(--sentence-fg); padding-bottom: 7px; margin: 14px 0 10px;
}

/* #9 藥物資料庫的分類／機轉晶片維持 30px 密度（使用者兩度指名），命中區用偽元素撐到 44px。 */
[data-ui="sentence"] button.db-cat, [data-ui="sentence"] button.db-clschip { position: relative; }
[data-ui="sentence"] button.db-cat::before, [data-ui="sentence"] button.db-clschip::before {
  content: ""; position: absolute; inset: -7px -2px;
}

/* #16 癌別方磚的標籤原本用 text-shadow 做光暈，是零陰影系統裡唯一的陰影；改成墨色實心色帶。 */
[data-ui="sentence"] .onc-card .oc-name, [data-ui="sentence"] .onc-card .oc-en, [data-ui="sentence"] .onc-card .oc-count {
  text-shadow: none; color: #efece1; background: rgba(31,31,29,.86);
}
[data-ui="sentence"] .onc-card .oc-name { padding: 2px 9px; }
[data-ui="sentence"] .onc-card .oc-en { padding: 1px 6px; max-width: 92%; }
[data-ui="sentence"] .onc-card .oc-count { border-color: rgba(239,236,225,.55); }

/* #17 藥物資料庫搜尋欄的範例從 placeholder 移到欄位下方 */
[data-ui="sentence"] .db-hint { font-family: var(--sentence-mono); font-size: 10px; color: var(--sentence-dim); margin: -6px 0 10px 2px; }

/* #5 內頁造句軌跡：提示與誠實聲明收進「改句子」展開區，首屏只留「這句話目前指向 N 件事」 */
[data-ui="sentence"] .st-full .sent-point-hint,
[data-ui="sentence"] .st-full .st-honest { display: block; font-size: 10px; color: var(--sentence-dim); margin: 6px 0 0; }

/* #7 SOFA 藥物流速換算器的摺疊區：與同頁「＋ 查看評分區間」同一套外觀 */
[data-ui="sentence"] details.drug-calc-details {
  border: 1px solid var(--sentence-line2); background: var(--sentence-bg2); margin: 14px 0;
}
[data-ui="sentence"] details.drug-calc-details > summary {
  min-height: 48px; padding: 9px 12px; margin: 0; cursor: pointer; display: flex; align-items: center; gap: 8px; list-style: none;
  font-family: var(--sentence-sans); font-size: 12.5px; font-weight: 700; letter-spacing: .03em; color: var(--sentence-fg);
}
[data-ui="sentence"] details.drug-calc-details > summary::before { content: "＋"; font-family: var(--sentence-mono); color: var(--sentence-dim); flex: none; }
[data-ui="sentence"] details.drug-calc-details[open] > summary::before { content: "－"; }
[data-ui="sentence"] details.drug-calc-details > .drug-calc { padding: 0 12px 12px; }

/* #8 藥物資料庫清單：學名固定另起一行，每列都是「▸ 商品名 標籤 中文名 ／ 學名 機轉 燈號」兩行的節奏 */
[data-ui="sentence"] .drugcard .dc-nameen { flex-basis: 100%; }
[data-ui="sentence"] button.db-more {
  display: block; width: 100%; min-height: 48px; margin: 14px 0 6px; padding: 0 12px;
  font-family: var(--sentence-mono); font-size: 12px; letter-spacing: .04em; color: var(--sentence-fg);
  background: transparent; border: 1px solid var(--sentence-line2); border-radius: 0; cursor: pointer;
}
[data-ui="sentence"] button.db-more:hover { background: var(--sentence-shade); border-color: var(--sentence-fg); }
