/* PIIS custom styles — keep minimal; prefer Bootstrap utilities (D-010 / D-045). */
.piis-footer { font-size: .85rem; }

/* L15 — My Orders sidebar timeline (pure CSS vertical timeline, no JS/build).
   脊＝容器 ::before 的 2px 直條；圓點＝每 <li>::before；分支＝縮排＋換色的
   <li>（case_ref 判定，非字串比對）。用 Bootstrap CSS 變數承接主題色。 */
.piis-timeline { list-style: none; margin: 0; padding-left: 1.25rem; position: relative; }
.piis-timeline::before { content: ""; position: absolute; left: .4rem; top: 0; bottom: 0; width: 2px; background: var(--bs-border-color); }
.piis-tl-node { position: relative; padding: .35rem 0 .35rem .75rem; }
.piis-tl-node::before { content: ""; position: absolute; left: -1rem; top: .6rem; width: .6rem; height: .6rem; border-radius: 50%; background: var(--bs-secondary); }
.piis-tl-branch { margin-left: 1rem; }               /* 分支段縮排＝更長的那條線 */
.piis-tl-branch::before { background: var(--bs-warning); }
.piis-tl-correction .piis-tl-note { font-style: italic; color: var(--bs-danger); }
.piis-tl-when { font-size: .8rem; color: var(--bs-secondary); }
.piis-tl-note { color: var(--bs-body-color); }

/* L29.1（D-247(e)）— 瀏覽器列印：A4 portrait。全庫首見之 @media print。
   版面隱藏一律用 Bootstrap 之 d-print-*（其規則帶 !important，自寫 CSS 不會誤覆蓋）；
   此處只補工具類表達不了的。
   **刻意不加 a[href]::after { content: attr(href) } 一類規則**——實核 vendored
   Bootstrap 5 之 @media print 區塊【只有】d-print-* 顯示工具類，瀏覽器亦不預設
   追加 URL；加它是 Bootstrap 3/4 時代的 cargo cult。 */
/* protocol 正文之排版（螢幕與紙共用）。
   正文 HTML 由 Markdown 產生，**帶不了 class**——`render_protocol_html` 之
   `mark_safe` 緊接 `nh3.clean`，中間不得插入任何字串操作（那是安全邊界的全部
   價值）。故一切外觀只能由**後代選擇器**承擔，不能靠加 Bootstrap 之 .table。 */
.protocol-doc table { width: 100%; border-collapse: collapse; margin: .8rem 0;
                      table-layout: fixed; }
/* table-layout: fixed ＋ overflow-wrap: anywhere 是這裡的關鍵一對。
   預設的 auto 佈局遇到「整欄都是 80 字元不可斷的路徑」時，會把該欄撐到過半、
   把其餘欄擠成兩三個字寬，且溢出的字直接被裁在頁緣（實測：走查所印之 38 頁
   附錄甲，第二欄內容被切成 `qr_svg_inline(t`）。 */
.protocol-doc th, .protocol-doc td { border: 1px solid #adb5bd; padding: .3rem .5rem;
                                     vertical-align: top; text-align: left;
                                     overflow-wrap: anywhere; }
.protocol-doc thead th { background: var(--bs-tertiary-bg); }
.protocol-doc pre { background: var(--bs-tertiary-bg); padding: .5rem .6rem;
                    border-radius: .25rem; overflow-x: auto; }
/* Markdown 之 h1 會落在 Bootstrap 的 2.5rem——那是頁面標題的尺寸，而正文標題
   之上還有一個真的頁面標題（登記項的 title）。逐級收斂，避免正文喧賓奪主。 */
.protocol-doc h1 { font-size: 1.4rem; }
.protocol-doc h2 { font-size: 1.2rem; }
.protocol-doc h3 { font-size: 1.05rem; }
.protocol-doc h4, .protocol-doc h5, .protocol-doc h6 { font-size: 1rem; }

/* L29.1（D-247(e)）— 瀏覽器列印：A4 portrait。全庫首見之 @media print。
   版面隱藏一律用 Bootstrap 之 d-print-*（其規則帶 !important，自寫 CSS 不會誤覆蓋）；
   此處只補工具類表達不了的：版心寬度、紙面字級、表格跨頁行為。
   **刻意不加 a[href]::after { content: attr(href) } 一類規則**——實核 vendored
   Bootstrap 5 之 @media print 區塊【只有】d-print-* 顯示工具類，瀏覽器亦不預設
   追加 URL；加它是 Bootstrap 3/4 時代的 cargo cult。 */
@page { size: A4 portrait; margin: 18mm 15mm; }
@media print {
  /* A4 扣掉 @page 的 15mm 邊距後可用寬＝180mm＝680 CSS px，**恰落在 Bootstrap
     的 sm 斷點（≥576px）** ⇒ .container 被鎖在 max-width:540px，左右各再吃掉
     18.6mm。實際版心因此只剩 143mm／210mm＝68%。斷點是為視窗寬度設計的，
     紙張寬度固定，於紙上一律放開。
     **只放開 max-width，不動 padding**——.row 帶 -12px 負邊距，與欄的 12px
     padding 是成對的；單獨歸零其一，整塊內容會左移出血（實測：標題被切成
     `ysis buffer`、表格右緣越出版心）。 */
  .container { max-width: none !important; }

  /* 紙上沒有側欄（它帶 d-print-none），但 col-lg-8 仍只佔 8/12 ⇒ 右三分之一
     整頁全空。紙是文件不是網頁，版心該吃滿。 */
  .protocol-main { flex: 0 0 100% !important; max-width: 100% !important; }

  body { font-size: 10.5pt; line-height: 1.45; }

  /* `min-vh-100`（base.html 之 body）在紙上＝**每份文件至少一整頁高**，加上
     `main.py-4` 的上下內距即可能溢出成一頁空白次頁。@page 的 18mm 已是版心留白，
     不需要再加。
     **誠實邊界**：走查所印之 PR-2026-001 出現空白第 2 頁，此為最可能之成因，
     但本機無頭環境重現不出該現象（同一份 HTML 在此恆為 1 頁）⇒ **未經證實**，
     待下次實印確認。 */
  body { min-height: 0 !important; }
  main.container { padding-top: 0 !important; }

  .protocol-doc table { font-size: 9.5pt; }
  .protocol-doc thead { display: table-header-group; }   /* 跨頁重複表頭 */
  .protocol-doc tr, .protocol-doc pre { break-inside: avoid; }
  /* 舊規則是對整個 <table> 下 break-inside: avoid——表格一旦高過一頁即無法遵守，
     只會把整張表推到次頁而留下大片空白。正確粒度是 <tr>。 */
  .protocol-doc th, .protocol-doc td { border-color: #000; }
  .protocol-doc thead th { background: transparent; border-bottom: 2px solid #000; }
  /* Bootstrap 的 code 預設是粉紅（--bs-code-color）；黑白雷射印出來是淺灰，
     而 protocol 正文裡的行內 code 常常正是關鍵值。 */
  .protocol-doc code, .protocol-doc pre { color: #000; }
  .protocol-doc pre { background: transparent; border: 1px solid #666; }
  .protocol-doc h1, .protocol-doc h2, .protocol-doc h3,
  .protocol-doc h4, .protocol-doc h5, .protocol-doc h6 { break-after: avoid; }
  .protocol-doc p, .protocol-doc li { orphans: 2; widows: 2; }

  /* QR 區塊：**寬度恰等於 QR 本身**（22mm，由 segno 之 unit="mm" 決定），
     故 QR 與說明左緣對齊、整塊右緣齊版心。原先給了 46mm 又置中，QR 浮在寬欄
     中央、下方三行小字各自置中 ⇒ 參差，且該塊比左側 meta 高出一截、頁首因此
     高達五公分。QR 本體尺寸不動。 */
  .protocol-print-qr { width: 22mm; flex: 0 0 auto; }
  .protocol-qr-caption { font-size: 6.5pt; line-height: 1.3; margin-top: 1mm; }

  /* 瀏覽器列印預設不印背景色 ⇒ text-bg-* 的 chip 在紙上只剩黑字。
     轉為黑框黑字，不用 print-color-adjust（強制印背景既耗碳粉又依瀏覽器而異）。
     `.alert` 同理——不處理的話，那句「metadata 是現行的、正文是當時的」在紙上
     會變成一段沒有框的深黃色字，看起來像排版壞掉而不像提示。 */
  .protocol-state-chip,
  .protocol-main .alert { color: #000 !important; background: transparent !important;
                          border: 1px solid #000; }
  .protocol-print-head { border-bottom: 1px solid #000; padding-bottom: 4mm;
                         margin-bottom: 6mm; }
}

/* L29.3（D-257⑤／style guide §五）— user-guide 排版尺度（.docs-page 作用域）。
   修 h2/h3 全套 h6 的平層級根因：三級可辨（h1≈h4 級、h2≈h5 級、h3≈h6 級）。
   行寬 measure 由 col-lg-8 承載；列印沿 L29.1 A4 規則（同檔上方 @page）。 */
.docs-page h1 { font-size: 1.5rem;  font-weight: 600; margin-bottom: .75rem; }
.docs-page h2 { font-size: 1.17rem; font-weight: 600;
                border-bottom: 1px solid var(--bs-border-color);
                padding-bottom: .2rem; margin-top: 1.75rem; }
.docs-page h3 { font-size: 1rem;    font-weight: 600; margin-top: 1.25rem; }
.docs-page p, .docs-page li { line-height: 1.55; }
.docs-page ol.steps > li { margin-bottom: .4rem; }
.docs-page .guide-callout { border-left: 3px solid var(--bs-secondary);
                            background: var(--bs-tertiary-bg);
                            padding: .5rem .75rem; margin: 1rem 0;
                            font-size: .9rem; }
.docs-page .guide-callout .callout-tag { font-weight: 600;
                                         font-size: .75rem;
                                         text-transform: uppercase;
                                         letter-spacing: .03em; }
@media print {
  .docs-page h2 { break-after: avoid; }
  .docs-page .guide-callout { border: 1px solid #000; background: transparent; }
}
