* { box-sizing: border-box; }
html { color-scheme: light; scroll-behavior: auto; /* 導覽是固定在上緣的懸浮膠囊（約 72px，含上緣 12px）。沒有這個 padding，跳至主要內容與任何 #id 錨點都會把目標壓在導覽下面。 */ scroll-padding-top: 8.125rem; }
body { margin: 0; font-family: var(--font-body); font-size: 1rem; line-height: 1.8; color: var(--ink); background: var(--paper); overflow-wrap: anywhere; }
a { color: var(--action); text-underline-offset: .22em; }
a:hover { color: var(--ink); }
/* 全站焦點環統一：3px 實線、間距 3px；淺底用行動藍（對白底 5.7:1），深底元件在 chrome.css／motion.css／各頁群改色為 --soft（亮藍，對 --deeper 11:1）。 */
:focus-visible { outline: 3px solid var(--action); outline-offset: 3px; }
button, input, textarea, select { font: inherit; }
img { max-width: 100%; height: auto; }
/* 方向 A（WI-19／#78，Task 5）：原廠頁頁首的 Logo 框——原型的 .vendor-logo 方框，不套 CSS filter（§12.1）。 */
.partner-logo-frame { display: inline-flex; align-items: center; justify-content: center; margin-block: 1rem; padding: 1rem 1.5rem; border: 1px solid var(--line); border-radius: var(--radius-m); background: var(--wash); }
.card-image { display: block; width: 100%; max-width: 100%; aspect-ratio: 16 / 9; height: auto; object-fit: cover; border-radius: var(--radius-m); margin-block-end: 1rem; }
/* 2026-09-29（WI-02／#91）：按鈕改為靜態審稿樣板的樣式——6px 圓角矩形（不是藥丸）、min-height 48px、
   字重 650。主要按鈕實心行動色配白字（5.72:1），hover 走深一階 --action-hover（8.14:1）。
   樣板的 .button 另帶 1px 同色邊框，讓實心與空心兩種按鈕的外框尺寸一致，這裡照做。 */
.nav-cta { display: inline-flex; gap: .75rem; align-items: center; justify-content: center; background: var(--action); color: var(--paper); border: 1px solid var(--action); padding: .8125rem 1.4375rem; border-radius: var(--radius-s); font-size: .9375rem; font-weight: 650; line-height: 1.5; text-decoration: none; min-height: 48px; transition: background .15s, border-color .15s; }
.nav-cta:hover { background: var(--action-hover); border-color: var(--action-hover); color: var(--paper); }
/* issue 118：樣板 .container 為 max-width 1240、左右內距 24px（≥1300px 為 32px，≤600px 為 20px），內容寬 1192／1176。 */
.breadcrumb a { color: var(--muted); text-decoration: none; }
.breadcrumb a:hover, .breadcrumb a:focus-visible { text-decoration: underline; text-underline-offset: 5px; }
.breadcrumb ol { display: flex; flex-wrap: wrap; list-style: none; gap: .6rem; padding: 0; }
.breadcrumb li + li::before { content: '/'; margin-right: .6rem; color: var(--muted); }
/* 方向 A（WI-19／#78）：內頁頁首（麵包屑＋h1＋導言）。整個帶子貼齊視口寬度只留一條底線；
   內含的 .breadcrumb／h1／.lead 各自照 main 的作法置中收窄到 1200px。 */
/* Task 13b round 2：.page-head 本來就在 1200px 的 main 裡，h1／導言不再各自縮窄置中（那會比麵包屑多縮
   一次）。頁首是單欄格線：麵包屑第 1 列、eyebrow 第 2 列、h1 第 3 列——eyebrow 由 Catalog 的 pageHeader
   section 輸出、原始碼在 _Layout 的 h1 之後，視覺順序交給列號；其餘子節點依原始碼順序排在後面。 */
/* issue 118：樣板 .hero 為上 68px／下 48px，麵包屑在它上方 22px；分隔線由下一個 .section 的上框線提供，頁首自己不畫線。 */
.page-head { display: grid; grid-template-columns: minmax(0, 1fr); justify-items: start; padding-block: 1.375rem 3rem; }
.page-head > .breadcrumb { grid-row: 1; width: auto; margin-inline: 0; margin-bottom: 4.25rem; padding-top: 0; justify-self: stretch; }
/* issue 118：樣板的目錄頁頁首（.directory-title）沒有導言：h1 32px（≤600px 27px）、上 38px／下 28px。 */
/* issue 118：樣板 .with-image .lede 為 17px；頁首有圖時導言縮一階。 */
/* issue 118：樣板的導言下距與按鈕上距會疊合成 28px；格線不疊合，所以扣掉導言的 18px。 */
.page-head > .page-image { justify-self: stretch; }
/* issue 193（v83）：頁首大標的強調詞（headingLines 裡成對星號包住的字）——品牌強調色（h1 帶 data-accent），沒有品牌色時用深色底的亮藍。 */
.page-head h1 em { font-style: normal; color: var(--accent-dark, var(--soft)); }
.page-badges { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1rem; }
.page-badges .badge { margin: 0; }
/* 原廠頁（原型 .vendor-head）：Logo 框左欄、名稱／合作型態／標語右欄；900px 以下單欄、Logo 在 h1 之上。 */
@media (min-width: 900px) {
  .page-head:has(> .partner-logo-frame) > .partner-logo-frame { grid-column: 1; grid-row: 2 / span 4; align-self: center; justify-self: stretch; min-height: 8rem; margin: 0; }
  /* 有 eyebrow 時右欄仍是 eyebrow → h1：明確列號（寫在歸零規則之後），其餘子節點自動排在第 4 列起。 */
}
/* 字級越大，行高與字距要越緊；維持 1.35／normal 會讓大標散掉（#74）。 */
/* 2026-09-29（#94）：標題排版對齊靜態審稿樣板——行高 1.3（原 1.22）、字距 -.03em（原 -.02em）。
   樣板的標題比我們原本鬆，中文在小字級下也比較好讀。 */
h1, h2, h3 { line-height: 1.3; letter-spacing: -.03em; }
h2 { font-size: clamp(1.5625rem, 3vw, 2.25rem); line-height: 1.3; letter-spacing: -.03em; margin: 0; }
h3 { font-size: 1.4375rem; letter-spacing: -.03em; margin: .75rem 0; }
/* 樣板的 .lede：19px、行高 1.95、最寬 780px。行高比內文還鬆，是刻意的——導言字級大，行距要跟著放。 */
.lead { font-size: 1.1875rem; line-height: 1.95; max-width: 780px; color: var(--muted); margin-bottom: 1.75rem; }
/* 樣板的 .eyebrow：11px、字距 .16em、全大寫。比我們原本小、更開，英文短標才像標籤而不像小標題。
   text-transform 只影響顯示，不改內容——中文不受影響。 */
.eyebrow { color: var(--action); font-size: .6875rem; letter-spacing: .16em; font-weight: 700; text-transform: uppercase; }
.capabilities { background: var(--ink); color: var(--paper); padding: clamp(1.5rem, 4vw, 3rem); border-radius: var(--radius-l); margin-bottom: 4rem; }
.capabilities ul { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); gap: 1.5rem; list-style: none; padding: 0; margin: 2rem 0 0; }
.capabilities li { border-top: 1px solid var(--on-dark-line); padding-top: 1rem; }
/* 方向 A（WI-19／#78）：目錄卡片的固定欄數修飾詞，搭配既有 .catalog-grid（auto-fit）與 .catalog-card。 */
.catalog-grid--2 { grid-template-columns: 1fr; }
.catalog-grid--4 { grid-template-columns: 1fr; }
@media (min-width: 1020px) {
  .catalog-grid--4 { grid-template-columns: repeat(4, 1fr); }
}
.catalog-card { padding: clamp(1.5rem, 3vw, 2.5rem); background: var(--wash); border: 1px solid var(--line); border-radius: var(--radius-m); min-width: 0; box-shadow: var(--elevation-card); transition: transform .2s ease, box-shadow .2s ease; }
.catalog-card:hover { transform: translateY(-2px); box-shadow: var(--elevation-raised); }
.catalog-card a { text-decoration: none; }
/* issue 118：樣板 .card h3 為 25px，標題連結沿用內文墨色（不是強調藍）。 */
/* ---------- 方向 A（WI-19／#78）：1px 格線拼接磚，搭配既有卡片格線（trust／phases／scope 等區塊共用）---------- */
/* Task 13b：格線改由每格自己的 1px 外擴陰影畫在 1px gap 裡，容器底色與磚面同色——項目數不是欄數
   的倍數時，最後一排沒佔用的格子只會是磚面色，不再露出一大塊格線色；邊緣格子的陰影落在容器邊框上，
   被 overflow: hidden 裁掉。欄數修飾詞（--2～--5）只改 grid-template-columns。 */
.tile-grid { display: grid; gap: 1px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius-l); overflow: hidden; }
.tile-grid > * { min-width: 0; background: var(--paper); box-shadow: 0 0 0 1px var(--line); padding: clamp(1.375rem, 2.2vw, 1.875rem); }
/* 方向 A（WI-19／#78，Task 2）：.tile-grid 有時直接套在 <ol>／<ul> 上（首頁作業流程／信任帶，步驟
   本身有順序，保留清單語意），這裡重置瀏覽器預設的項目符號與內距，磚格才不會多一層縮排。 */
ol.tile-grid, ul.tile-grid { list-style: none; margin: 0; padding: 0; }
.tile-grid--dark { background: var(--deep); border-color: var(--on-dark-line); }
.tile-grid--dark > * { background: var(--deep); box-shadow: 0 0 0 1px var(--on-dark-line); }
.tile-grid--5 { grid-template-columns: 1fr; }
@media (min-width: 560px) {
  .tile-grid--5 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 640px) {
  .tile-grid--2, .tile-grid--3, .tile-grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
  .tile-grid--5 { grid-template-columns: repeat(5, 1fr); }
}
@media (min-width: 1020px) {
  .tile-grid--3 { grid-template-columns: repeat(3, 1fr); }
  .tile-grid--4 { grid-template-columns: repeat(4, 1fr); }
}
/* ---------- 方向 A（WI-19／#78）：深色面板共用配色 ----------
   --action 在 --ink／漸層兩端都只有 2.92:1（見 DesignTokenContrastTests），深色面板一律改用
   --evidence-accent（eyebrow／連結）與 --muted-on-dark（次要文字），兩者對三種深色背景都 ≥4.5:1。
   .topic-card--lead a:not([class])／.cta-band a:not([class]) 刻意排除已帶 class 的按鈕
   （如 .nav-cta／.secondary-cta），那些按鈕自己成對指定前景背景，不該被這裡的通用規則蓋掉。 */
.band-dark .eyebrow, .tile-grid--dark .eyebrow, .band-dark a:not([class]), .tile-grid--dark a:not([class]), .cta-band a:not([class]) {
  color: var(--evidence-accent);
}
/* issue 118：樣板 .cta-band .eyebrow 的專用亮藍。 */
.cta-band .eyebrow { color: var(--on-dark-eyebrow); }
.band-dark { padding: clamp(1.5rem, 4vw, 3rem); background: var(--deep); border-radius: var(--radius-l); }
.sources { margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--line); }
/* issue 118：樣板 .section 為上下 54px＋上框線，.section-head 下距 30px。 */
.scope-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 1.5rem; }
.scope-grid > div { padding: 1.5rem; border-top: 3px solid var(--action); background: var(--wash); min-width: 0; }
/* 方向 A（WI-19／#78，Task 3）：責任邊界三欄套三色標題——包含／不包含／可另議分別沿用既有 token
   （--action／--ink／--muted），不新增 hex。 */
.plan-add-ons ul { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 1.25rem; list-style: none; padding: 0; }
.plan-add-ons li { min-width: 0; padding: 1.25rem; border: 1px solid var(--line); border-radius: var(--radius-m); background: var(--wash); }
.evidence-samples ul { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 1.25rem; list-style: none; padding: 0; }
.evidence-samples li { min-width: 0; padding: 1.25rem; border-left: 3px solid var(--evidence-accent); background: var(--wash); }
.evidence-samples h3 { font-size: 1.1rem; margin: 0 0 .5rem; }
.procurement-notes ul { max-width: 78ch; }
.report-sample-image { width: 100%; height: auto; border: 1px solid var(--line); border-radius: var(--radius-m); }
.report-sample figcaption { margin-top: .6rem; color: var(--muted); font-size: .9rem; }
/* issue 173：固定 16:9 比例框，海報與影片比例不同時補深色邊，載入前後高度不變。 */
.catalog-video-player { display: block; width: 100%; max-width: 960px; aspect-ratio: 16 / 9; object-fit: contain; background: var(--ink); border: 1px solid var(--line); border-radius: var(--radius-m); }
.audiences, .security-tier-list, .solution-area-list, .partner-role-links { display: flex; flex-wrap: wrap; gap: 1rem; list-style: none; padding: 0; }
.audiences li, .security-tier-list li, .solution-area-list li { padding: .3rem 1rem; border: 1px solid var(--line); border-radius: 2rem; }
.related-links { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 1.5rem; }
.related-links li { min-width: 0; border-top: 1px solid var(--line); }
.related-links a { text-decoration: none; display: inline-block; min-height: 44px; padding-block: .25rem; }
.related-links p { color: var(--muted); }
.directory-filter { display: flex; flex-wrap: wrap; gap: 1rem; align-items: end; margin-block: 1.5rem; }
.directory-filter > div { display: grid; flex: 1 1 180px; min-width: 0; gap: .35rem; }
.directory-filter input, .directory-filter select { font: inherit; color: var(--ink); background: var(--paper); border: 1px solid var(--field-border); border-radius: var(--radius-s); min-height: 44px; padding: .5rem .7rem; width: 100%; }
.directory-filter button { font: inherit; cursor: pointer; border: 0; min-height: 44px; background: var(--action); color: var(--paper); border-radius: var(--radius-s); padding: .6rem 1.5rem; }
/* 方向 A（WI-19／#78）：篩選膠囊按鈕。只比對 [type="button"]，不動既有送出按鈕（上面那條
   .directory-filter button，維持原生 GET 表單的送出鍵樣式）；選取態用 [aria-current="true"]，
   跟站內其餘導覽項目（見 _NavItem.cshtml）同一套標記慣例。 */
.directory-filter a, .directory-filter button[type="button"] {
  display: inline-flex; align-items: center; justify-content: center; gap: .35rem;
  min-height: 44px; padding: .5rem 1.1rem; border-radius: 999px;
  border: 1px solid var(--line); background: var(--paper); color: var(--muted);
  font-weight: 600; text-decoration: none; cursor: pointer;
  transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.directory-filter a:hover, .directory-filter button[type="button"]:hover { color: var(--ink); border-color: var(--ink); }
.directory-filter a[aria-current="true"], .directory-filter button[aria-current="true"] { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.table-scroll { overflow-x: auto; max-width: 100%; margin: 1.5625rem 0 2.8125rem; border: 1px solid var(--line); border-radius: .75rem; }
.data-table { width: 100%; min-width: 820px; border-collapse: collapse; text-align: left; }
.data-table th, .data-table td { padding: 1.25rem; border-top: 1px solid var(--line); vertical-align: top; }
/* issue 118：樣板的表頭是淺底墨字（不是深藍底白字），表身字色另有 token，且沒有斑馬紋。 */
.data-table thead { background: var(--table-head-bg); color: var(--ink); }
.data-table a { display: inline-flex; min-height: 44px; align-items: center; }
/* issue 110：服務範圍表沿用 .table-scroll＋.data-table，欄少所以最小寬度收小；窄版仍在容器內捲動。 */
/* issue 118：MDR 雙軌照樣板 .split——純文字兩欄，序號用灰色小字。 */
.service-track-list { margin: 0; padding: 0; list-style: none; }
.service-track p:not(.number) { margin: 0 0 1.125rem; color: var(--muted); }
/* issue 110：資料流三欄。窄版直排（預設），≥761px 並排；箭頭是 CSS 產生的裝飾，
   alt 語法（content: "→" / ""）讓支援的讀屏不念出來，不支援的瀏覽器退回上一行、由 aria 無法影響但內容不在 DOM。 */
.dataflow { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2.5rem; margin: 0; padding: 0; list-style: none; }
.dataflow > li { position: relative; padding: 1.5rem; border: 1px solid var(--line); border-radius: .75rem; background: var(--paper); }
/* issue 118：樣板 .dataflow h3 21px、p 14px 次要色。 */
.dataflow > li:not(:last-child)::after {
  content: "↓";
  content: "↓" / "";
  position: absolute; left: 50%; bottom: -2.25rem; transform: translateX(-50%);
  color: var(--action); font-size: 1.5rem; line-height: 2rem;
}
@media (min-width: 761px) {
  /* issue 118：樣板是 1fr 26px 1fr 26px 1fr、gap 15px；箭頭畫在間隙裡，所以間隙取 26＋2×15＝56px。 */
  .dataflow > li:not(:last-child)::after {
      content: "→";
      content: "→" / "";
      left: auto; right: -2.25rem; width: 1.5rem; text-align: center; bottom: auto; top: 50%; transform: translateY(-50%);
    }
}
/* 方向 A（WI-19／#78，Task 6）：資格與三步驟改用共用的 .tile-grid（見上方「1px 格線拼接磚」），取代
   原本各自的格線／邊框／編號 CSS；.procurement-qualifications／.purchase-steps 只留 section 層級的
   class 供測試選取，磚格外觀交給 .tile-grid 統一負責。 */
.procurement-notice, .security-tier-notice { max-width: 78ch; padding: 1rem 1.25rem; border-left: 3px solid var(--muted); color: var(--muted); }
/* 方向 A（WI-19／#78，Task 6）：下載目錄改用清單卡片（原型 v-downloads 的 .dl-list），取代原本的
   .data-table；每一列本身有好幾個各自獨立的連結（標題、原廠、產品、取得／索取），卡片比表格更適合，
   也不需要橫向捲動。 */
.download-list { list-style: none; margin: 1.5rem 0 0; padding: 0; display: grid; gap: 1rem; }
.download-item { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 1.5rem; padding: 1.25rem clamp(1.25rem, 3vw, 1.75rem); border: 1px solid var(--line); border-radius: var(--radius-m); background: var(--paper); }
.download-summary { min-width: 0; flex: 1 1 320px; }
/* Task 13b：目錄清單緊接在 .page-head 的 h1 之後，每份文件標題改為 h2（原本 h3 跳過一層標題）；字級維持原本 h3 的大小。 */
.download-meta { display: flex; flex-wrap: wrap; gap: .35rem 1.25rem; font-size: .8125rem; color: var(--muted); margin: 0; }
.contract-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 1rem; }
.contract-facts dt { color: var(--muted); }
/* 方向 A（WI-19／#78）：兩欄定義表（key/value），跟 .contract-facts 一樣用 div 包一組 dt/dd
   （dl 底下允許直接包 div），但排成兩欄而不是卡片格。 */
.definition-list { border-top: 1px solid var(--line); margin: 0; }
.definition-list > div { display: grid; gap: .25rem 1.5rem; padding-block: 1rem; border-bottom: 1px solid var(--line); }
@media (min-width: 720px) {
  .definition-list > div { grid-template-columns: 200px 1fr; }
}
.definition-list dd { margin: 0; font-size: .9375rem; }
/* 最終審查修正：情境頁「服務邊界說明」是編輯輸入的多行純文字，保留換行。 */
.scope-notes { white-space: pre-line; overflow-wrap: anywhere; }
/* 情境方案總覽的磚標題是頁面 h1 下的第一層（h2），字級沿用磚格 h3 的尺寸（同 .download-summary h2 的做法）。 */
.catalog-directory .tile-grid > li h2 { font-size: 1.4375rem; line-height: 1.3; letter-spacing: -.03em; margin: .75rem 0; }
/* issue 112：有目錄區段 h2 時磚標題降為 h3，尺寸與 h2 版相同；eyebrow 在標題上方。 */
.catalog-directory .tile-grid > li h3 { font-size: 1.4375rem; line-height: 1.3; letter-spacing: -.03em; margin: .75rem 0; }
/* issue 118：樣板 .scenario-grid 的標題連結沿用墨色、內文與 eyebrow 用次要文字色（不是強調藍）。 */
/* issue 126：情境解決方案總覽照樣板 .scenario-grid——2 欄、欄距 0 36px、卡片無外框無底色、上下 28px、只留底線；
   600px 以下單欄（寫在下方 ≤600px 區塊）。沿用 .tile-grid 只為了共用卡片內文字樣式，外框與底色在這裡拿掉。 */
/* 樣板的 .button.outline：透明底、墨色字、淺邊框。邊框色不照抄樣板那個淺灰——它對白底只有約 2.2:1，
   低於 WCAG 2.2 AA 對 UI 邊框的 3:1；改用 --action（邊框同時也是這顆按鈕唯一的可見輪廓）。 */
.secondary-cta { display: inline-flex; align-items: center; justify-content: center; gap: .75rem; background: transparent; color: var(--ink); border: 1px solid var(--action); padding: .8125rem 1.4375rem; border-radius: var(--radius-s); font-size: .9375rem; font-weight: 650; line-height: 1.5; min-height: 48px; margin: 0; text-decoration: none; transition: background .15s; }
.secondary-cta:hover { background: var(--wash); color: var(--ink); text-decoration: none; }
.faq p { white-space: pre-line; margin: 0; padding: 0 .5rem 1.5rem; }
/* 2026-09-29（WI-02／#91）：作業流程改成靜態審稿樣板的 .split——左欄是區段標題，右欄是編號流程。
   取代了方向 B 的 .flow-layout／.flow-rail／.flow-steps（釘選導軌），那組規則一併移除，不留死樣式：
   導軌列的是步驟標題，和右欄重複，而樣板的左欄放的是區段說明。編號仍由 CSS 計數器產生，不寫進標記。 */
.split { display: grid; gap: 1.625rem; }
/* #98：樣板的 .split 自 601px 起就是兩欄，gap 在 851px 以上 50px、以下 26px。 */
@media (min-width: 601px) {
  .split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}
@media (min-width: 851px) {
  .split { gap: 3.125rem; }
}
/* ---------- 情境卡（樣板 .scenario-grid）：兩欄 ---------- */
.scenario-grid { display: grid; gap: 0 2.25rem; margin: 0; padding: 0; list-style: none; }
.scenario-grid > li { padding-block: 1.75rem; border-bottom: 1px solid var(--line); }
.scenario-grid h3 a:hover, .scenario-grid h3 a:focus-visible { color: var(--action); text-decoration: underline; text-underline-offset: 5px; }
/* ---------- 代理品牌牆（樣板 .brand-cards）：兩欄圖片卡，含主題標籤 ---------- */
.brand-card { border: 1px solid var(--line); border-radius: var(--radius-xl); overflow: hidden; min-width: 0; background: var(--paper); }
/* #98：樣板的 .card-image 是固定高度 210px（≤600px 185px），不是比例框。用 aspect-ratio 時
   1440px 下欄寬約 577px、圖高會長到 346px，四張卡各多 136px，是整頁最大的一處差距。 */
.brand-card h3 a:hover, .brand-card h3 a:focus-visible { color: var(--action); text-decoration: underline; text-underline-offset: 5px; }
.brand-card p { margin: 0; color: var(--muted); font-size: .9375rem; }
/* 主題標籤膠囊（樣板 .tags）：與 .taxonomy-terms 同一種形態，但這裡不是連結，統一用 --ink（見 #88）。 */
.tags { display: flex; flex-wrap: wrap; gap: .375rem; margin: 1.25rem 0; padding: 0; list-style: none; }
.tags li {
  border: 1px solid var(--line); background: var(--wash); color: var(--tag-text);
  font-size: .6875rem; padding: .25rem .625rem; border-radius: 99px;
}
/* #94：樣板的文字連結靜止時沒有底線，hover／focus 才出現。原本繼承全站 a 的底線，
   在品牌卡上與樣板明顯不同（使用者以左右對照截圖指出）。 */
.text-link { display: inline-block; line-height: 1.7; font-weight: 650; text-decoration: none; }
.brand-card .text-link { font-size: .875rem; }
.text-link:hover, .text-link:focus-visible { text-decoration: underline; text-underline-offset: 5px; }
/* #98：樣板的 .section 是「54px 上下內距＋一條上框線」，區段之間因此是 108px 並看得見分隔。
   我方原本靠 margin 塌陷成單一 88px，既比樣板窄、也沒有線。--space-section 不動，內頁還在用它。 */
.post-thumb { position: relative; display: grid; place-items: center; aspect-ratio: 16 / 9; background: var(--dark-gradient-end); background-image: linear-gradient(to right, color-mix(in srgb, var(--paper) 5%, transparent) 1px, transparent 1px), linear-gradient(to bottom, color-mix(in srgb, var(--paper) 5%, transparent) 1px, transparent 1px); background-size: 1.625rem 1.625rem; }
.post-thumb span { font-size: .75rem; font-weight: 700; letter-spacing: .14em; color: var(--evidence-accent); }
.evidence-sample { margin: 0; }
.evidence-image { width: 100%; height: auto; border-radius: var(--radius-m); border: 1px solid var(--line); }
.evidence-sample figcaption { margin-top: .6rem; font-size: .9rem; }
/* 方向 A（WI-19／#78）：結尾 CTA 帶改成深色漸層（原本與 .home-cta 共用淺底 --wash）。首頁已改用自己的結尾 CTA（home.css），這裡只服務內頁；padding／border-radius／
   background 全部交給 .cta-band，這裡不再重複設定、也不留下會蓋在深色漸層上的淺色邊框。 */
/* issue 135：結尾 CTA 帶全站照樣板 .cta-band 用純色 --navy，不再用漸層。 */
.cta-band p { max-width: 48rem; margin-top: 0; }
/* issue 118：樣板 .cta-band h2 為 28px（≤600px 為 25px）、說明文字 margin 0；內頁的結尾 CTA 帶與首頁共用。 */
/* issue 118：樣板 .cta-band 是 flex 一列——文字在左、按鈕在右，垂直置中，間距 30px；≤850px 改直排。
   內頁的文字節點（eyebrow／h2／p 或 .section-heading）是 .cta-band 的直接子節點，所以用格線把它們疊在左欄。 */
@media (min-width: 851px) {
  .cta-band { display: grid; justify-content: space-between; grid-template-columns: auto auto; grid-template-rows: repeat(3, auto); column-gap: 1.875rem; align-items: center; align-content: center; }
  .cta-band > * { grid-column: 1; }
  .cta-band > .cta-group, .cta-band > .nav-cta { grid-column: 2; grid-row: 1 / span 3; margin: 0; }
}
/* issue 118：樣板的 .button.light——白底、--navy 字。--action 在深色面板上只有 2.92:1，內頁 CTA 帶的主要按鈕改用它。 */
.cta-band .nav-cta:hover { background: var(--wash); color: var(--navy); border-color: var(--wash); }
/* Task 2：.secondary-cta 自己帶 class，不吃得到上面「深色面板共用配色」那組
   a:not([class]) 規則（那條刻意排除已帶 class 的按鈕）。預設沿用全站 `a { color: var(--action) }`，
   --action 對 CTA 漸層兩端都不到 3:1（見 DesignTokenContrastTests），這裡比照同一組深色面板改用
   --evidence-accent（該 token 對兩端漸層都已在 DesignTokenContrastTests 鎖住 ≥4.5:1）。 */
.cta-band .secondary-cta { color: var(--evidence-accent); }
.cta-group { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1rem; }
.campaign-period { margin: 0 0 .75rem; font-variant-numeric: tabular-nums; }
.secondary-nav ul { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; list-style: none; padding: 0; margin: 0 0 2rem; }
.secondary-nav a { display: inline-flex; align-items: center; min-height: 44px; }
.taxonomy-groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 1rem 1.5rem; margin: 0; }
.taxonomy-groups dt { font-weight: 700; margin-bottom: .4rem; }
.taxonomy-groups dd { margin: 0; }
.taxonomy-terms { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
/* #88：原本只設版面沒設 color，於是有連結的詞繼承全站 a { color: var(--action) }（藍）、
   沒連結的 span 繼承 --ink，同一排膠囊深淺交錯。兩者同色，可辨識性靠 hover 與焦點。 */
.taxonomy-terms a, .taxonomy-terms span { display: inline-flex; align-items: center; min-height: 44px; padding: .3rem .85rem; border: 1px solid var(--line); border-radius: 2rem; color: var(--ink); }
@media (max-width: 760px) {
  html { scroll-padding-top: 5rem; }
}
/* 減少動態：卡片與 details 不做過場。導覽與頁尾的動態在 chrome.css／motion.css 各自處理。 */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .catalog-card, details { transition: none; animation: none; }
}
.contact-entrances a { display: flex; align-items: center; min-height: 48px; padding: .6rem 1rem; border: 1px solid var(--line); border-radius: var(--radius-m); text-decoration: none; }
.article-reading, .article-intro { max-width: 40em; min-width: 0; overflow-wrap: anywhere; }
.article-layout { display: grid; grid-template-columns: minmax(0, 40em) minmax(0, 1fr); gap: 3rem; align-items: start; }
.article-teasers p { font-size: 1rem; line-height: 1.75; }
.article-teasers a, .article-directory-links a { display: inline-flex; align-items: center; min-height: 44px; padding-block: .4rem; }
.article-directory-links { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; font-size: 1rem; }
.article-pagination { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin-block: 2rem; }
.article-pagination a { display: inline-flex; align-items: center; min-height: 48px; padding: .6rem 1rem; border: 1px solid var(--line); border-radius: var(--radius-s); }
.article-section p, .article-reading .faq p { white-space: pre-line; }
.contact-layout { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 3rem; }
.contact-main, .contact-aside, .lead-field { min-width: 0; overflow-wrap: anywhere; }
.lead-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.lead-field { display: grid; gap: .4rem; align-content: start; }
/* #88：基礎 .nav-cta 已統一設好底色、內距、圓角，這裡不再 border: 0——那會把邊框清掉而基礎規則本來就沒有邊框。
   只留 <button> 需要而 <a> 不需要的兩項：游標與與表單欄位的間距。 */
.lead-honeypot { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
@media (max-width: 640px) {
  .lead-fields { grid-template-columns: minmax(0, 1fr); }
}
/* ---------- 方向 A（WI-19／#78）：數字用等寬數字；捲動進場與數字滾動已搬到 motion.css／motion.js（issue 174） ---------- */
/* === Task 7: articles (direction A) === */
/* WI-19／#78：文章總覽與文章頁對齊方向 A。以下全部是「疊在既有規則之後」的覆寫，靠原生
   層疊順序生效，不回頭改前面既有的 .article-* 規則本體（同一個選擇器再宣告一次，後者贏，
   合併時衝突面最小）。
   - 總覽卡片：.article-results／.article-result 這兩個既有測試釘住的 class 不動，
     另外疊上共用元件 .catalog-grid／.catalog-grid--3／.catalog-card（跟原型 v-insights 的
     .grid.g3 對齊），標籤沿用既有 .article-meta，再疊 .eyebrow 取用既有的 kicker 樣式。
   - 文章內文欄寬：原型 .article 沒有硬性數字，但本任務指定「約 44rem」；.article-layout 第一欄
     原本是 minmax(0, 40em)，這裡覆寫成 44rem，.article-reading 的 max-width 一併跟著改，
     兩者要一起改否則欄寬會被 grid 軌道卡在原本的 40em。
   - AI 協助標示：文字沿用既有字典鍵（不含供應商／模型名稱），改成藥丸徽章（對齊原型 .ai-flag），
     配色沿用 --action on --wash（DesignTokenContrastTests 已鎖定 ≥4.5:1，不必新增色階）。
   - 來源列：.article-source 疊加橫向排列與上下分隔線（對齊原型 .src），沿用既有純文字內容。
   - 一句話回答框：.answer-summary 已經是左框線＋--wash 底色的框（既有規則，本任務未動），
     跟原型 .answer 的視覺已經一致，這裡不重複宣告。
   - 標籤／相關連結：段落結尾的 related-services／solutions／products／partners 沿用既有
     .related-links 卡片式清單（跨頁共用，本任務不改共用 partial），視覺上已經是方向 A 的
     卡片＋分隔線語彙，故不再另外疊一層 pill 樣式。
   - Fix round 1（review）：文章頁本身不消費 Taxonomy／_TaxonomyTerms.cshtml（只有 Campaign 頁的
     Model.Taxonomy 會用到；Article.cshtml 完全沒有引用），所以「文章標籤改成 pill」這條沒有
     可以改的標的，維持不動——related-* 卡片區塊本來就照原樣保留（不拆摘要／圖片）。
   - Fix round 1（review）：.article-layout／.article-reading 的 44rem 覆寫原本沒有媒體查詢，
     在任何寬度都會贏過 site.css:331 的 @media (max-width: 1024px) 單欄收合（層疊只看選擇器特異度
     與宣告順序，跟宣告是否包在 @media 裡無關），手機版會被撐開成雙欄。改成疊在對稱的
     @media (min-width: 1025px) 裡，1024px 以下維持既有單欄收合。 */
.article-meta .ai-flag {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .8125rem;
  font-weight: 700;
  padding: .3rem .75rem;
  border-radius: 999px;
  background: var(--wash);
  color: var(--action);
}
.article-source {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .35rem 1.25rem;
  padding-block: .85rem;
  margin-block: 1.25rem;
  border-block: 1px solid var(--line);
  font-variant-numeric: tabular-nums;
}
/* === end Task 7 === */
/* === Task 8: contact (direction A) === */
/* WI-19／#78：入口膠囊比照 .directory-filter 的篩選膠囊（pill）造型，取代舊版方框；選取態沿用上面既有
   的 .contact-entrances a[aria-current="page"] 規則，這裡只覆寫形狀與預設（非選取）配色。 */
.contact-entrances a {
  border-radius: 999px;
  border-color: var(--line);
  color: var(--muted);
  font-weight: 600;
  transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.contact-entrances a:hover { color: var(--ink); border-color: var(--ink); }
/* 表單（左）／側欄卡片（右）改成 ~1.35fr／1fr，比舊版 2fr／1fr 窄，側欄卡片才有寬度立成卡片，
   不會被擠成一條細長欄。 */
/* 側欄改成三張卡片（其他聯絡方式／資安事件通報／漏洞揭露），取代舊版單一 <h2> + 條列段落；
   分隔改由卡片自己的邊框負責，蓋掉上面舊的 .contact-aside 左側分隔線（下方 960px 以下同理蓋掉頂線）。 */
.contact-aside { display: grid; gap: 1.25rem; border-left: 0; padding-left: 0; }
.aside-card p { margin: 0; }
/* 欄位無效態：邊框加粗且改用 --ink，跟一般邊框的 --muted 拉出對比——沿用既有語意色，不新增紅／
   綠色票（本站的錯誤／成功一律靠邊框、粗細與位置區分，不靠色相，見下方 .form-status）。 */
/* 表單狀態框：兩種狀態都收成圓角卡片；成功態原本只加粗文字，這裡補上跟錯誤態對稱的底色／左邊框，
   一樣不新增色票——用 --ink 跟錯誤態的 --action 區分。 */
.evidence-meta { display: flex; flex-wrap: wrap; gap: .5rem 1rem; font-size: .8125rem; color: var(--muted); }
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .875rem; margin-top: 2rem; }
/* #99：樣板的 CTA 帶在 850px 以下改直排，按鈕退到文字下方 24px。 */
/* #97：≤600px 的字級降階，逐條對齊 2026-09-28 靜態審稿樣板的同一個斷點。
   放在檔案最後是刻意的——這些都是 max-width 覆寫，必須贏過前面的基礎宣告；
   前面已有的 760／640 斷點管的是版面（欄數、間距），與這裡的字級不重疊。 */
@media (max-width: 600px) {
  /* issue 126：樣板 ≤600px .scenario-grid 單欄。 */
  .lead { font-size: 1.0625rem; }
  /* 樣板的 .actions .button 在這個寬度滿寬排列；按鈕字級一併降到 14px。
       刻意寫成 > a 而不是點名 .nav-cta——HomeHeroTests 守著「Hero 按鈕不得再有 .hero-actions … .nav-cta 覆寫」，
       那條守的是配色回流，而這裡只動尺寸；用子選擇器兩件事都成立。 */
  .hero-actions > a { width: 100%; font-size: .875rem; }
  /* #98：樣板在同一個斷點把每一段間距也降一階。 */
}
/* issue 130：樣板的 section.hero.with-image——有頁首圖片時左文右圖兩欄（1.05fr / 1fr、間距 42px），
   麵包屑仍在左欄最上方（跨兩欄的第 1 列）；≤850px 改回單欄、圖片在文字下方且最高 320px。
   原廠頁若同時有 Logo 框，維持既有的 Logo 左欄版型。沒有 HeroImage 的頁面不含 .page-image，選擇器都不命中，版面完全不變。 */
@media (min-width: 851px) {
  .page-head:has(> .page-image):not(:has(> .partner-logo-frame)) { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); column-gap: 2.625rem; align-items: center; }
}
@media (max-width: 850px) {
  .page-head > .page-image { max-height: 20rem; }
}
/* issue 128：原廠頁與產品頁的能力區塊改為樣板的一欄勾選清單（.checks）。 */
.checks li::marker { color: var(--action); }
/* issue 129：品牌頁與產品頁尾端的共用區段（樣板 .section + .split）。區段上緣一條分隔線、上下 54px（≤600px 為 35px）；
   卡片標題 23px、說明用次要文字色、連結沿用 .text-link；兩欄斷點沿用上方 .split 規則，320px 單欄不溢出。 */
.shared-section .shared-cards > div { min-width: 0; }
.shared-section .shared-cards h3 { font-size: 1.4375rem; margin: 0 0 1.25rem; overflow-wrap: anywhere; }
.shared-section .shared-cards p { margin: 0 0 1.125rem; color: var(--muted); }
.shared-section .shared-cards .shared-link { margin-bottom: 0; }
.shared-section .shared-cards .shared-link + .shared-link { margin-top: .5rem; }
/* issue 134：樣板產品頁內文下方的「原廠技術參考」一行小字（.source-links）。 */
.source-links { font-size: 12px; color: var(--muted); margin: -1.5rem 0 3rem; max-width: 800px; }
/* issue 131：原廠頁的產品卡區（樣板 .cards.products 與 .card）。三欄（≤600px 單欄）、間距 22px；
   白底卡、1px 邊、圓角 18px、內距 28px（≤600px 為 24px）；類型小標 11px 行動色、標題 25px 墨色、標語 15px 次要色、連結 14px。 */
.product-card { min-width: 0; padding: 1.75rem; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius-xl); overflow: hidden; }
.product-card h3 a { color: var(--ink); text-decoration: none; }
.product-card p:where(:not(.eyebrow)) { color: var(--muted); font-size: .9375rem; }
.product-card .text-link { font-size: .875rem; }
/* issue 132：品牌頁與產品頁的「範圍說明」提示框（樣板 .notice：左 4px 琥珀邊條、淡黃底、內距 22px 26px、外距 24px 0 48px、14px）。
   ≤600px 內距 20px（樣板同）。 */
.scope-notice { border-left: 4px solid var(--notice-accent); background: var(--notice-bg); padding: 1.375rem 1.625rem; margin: 1.5rem 0 3rem; font-size: .875rem; color: var(--notice-text); }
.scope-notice p { margin: .375rem 0 0; color: inherit; overflow-wrap: anywhere; }
/* issue 133：產品頁「選型前，一起確認三件事」照樣板 .numbered-list——三欄、欄距 24px；每欄上下 25px、上緣 2px 青線；
   編號 12px 行動色（由 CSS 計數器產生 01、02、03，不進資料）；h3 20px、上邊距 16px；≤600px 單欄、欄距 5px、每欄上下 18px。 */
.scoping-checks .numbered-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; counter-reset: scoping; }
.scoping-checks .numbered-list > div { min-width: 0; padding: 1.5625rem 0; border-top: 2px solid var(--numbered-rule); counter-increment: scoping; }
.scoping-checks .numbered-list-no::before { content: counter(scoping, decimal-leading-zero); }
@media (max-width: 600px) {
  .scoping-checks .numbered-list { grid-template-columns: 1fr; gap: .3125rem; }
}
/* issue 136：資源總覽頁的 AVAILABLE NOW 文件卡與 VENDOR DOWNLOADS 規劃表（樣板 .cards.products／.card.pad／.table-wrap）。
   卡片三欄、gap 22px（≤1100px 兩欄、≤600px 單欄）；卡片內距 28px（≤600px 24px）、圓角 18px、標題 25px、說明 15px、連結 14px。
   規劃表沿用 .table-scroll＋.data-table，樣板最小寬度 680px；第一欄是列標題但字重與樣板 td 相同，品牌連結為藍色底線。 */
.document-card { min-width: 0; padding: 1.75rem; border: 1px solid var(--line); border-radius: var(--radius-xl); overflow: hidden; }
.document-card p { margin: 0 0 1.125rem; color: var(--muted); font-size: .9375rem; }
.document-card .text-link { font-size: .875rem; }
/* issue 135b：代理與夥伴總覽／DevaEye 總覽／政府採購／MDR／接管條件五頁的內容區，逐項對齊靜態樣板。
   全部限定在這五個頁型的 .catalog-content，不影響首頁、情境頁、品牌頁、產品頁。 */
/* 結尾 CTA 帶：樣板是純 --navy 底（不是漸層）；eyebrow 下距 20px、說明段落下距 0（版面由 flex 一列的格線模擬）。 */
.catalog-content:is([data-page-kind="partnerOverviewPage"], [data-page-kind="devaEyeCsaasPage"], [data-page-kind="procurementPage"], [data-page-kind="serviceCategoryPage"], [data-page-kind="servicePlanPage"]) .cta-band .eyebrow { margin-bottom: 1.25rem; }
.catalog-content:is([data-page-kind="partnerOverviewPage"], [data-page-kind="devaEyeCsaasPage"], [data-page-kind="procurementPage"], [data-page-kind="serviceCategoryPage"], [data-page-kind="servicePlanPage"]) .cta-band > p { margin-bottom: 0; }
/* 代理品牌／技術合作夥伴卡：樣板 .card p 的下距 18px（沒有標籤的卡片，說明與「品牌與產品」連結之間才有間距）。 */
.catalog-content[data-page-kind="partnerOverviewPage"] .brand-card-body > p:not(.eyebrow) { margin-bottom: 1.125rem; }
/* DevaEye 總覽的服務卡：樣板 .cards.products 三欄（≤1100px 兩欄、≤600px 單欄），gap 22px；
   .card.pad 內距 28px（≤600px 24px）、18px 圓角、無底色無陰影，h3 25px 下距 20px、p 15px 下距 18px。 */
.catalog-content[data-page-kind="devaEyeCsaasPage"] .catalog-card:hover { transform: none; box-shadow: none; }
.catalog-content[data-page-kind="devaEyeCsaasPage"] .catalog-card p { margin: 0 0 1.125rem; font-size: .9375rem; }
/* MDR 雙軌：序號在樣板是行內小字，落在 28.8px 的行框裡，標題緊接其後（上距 0）。 */
/* MDR 資料流：樣板 .dataflow > div 內最後一段說明仍有 18px 下距。 */
.catalog-content[data-page-kind="serviceCategoryPage"] .dataflow > li p:last-child { margin-bottom: 1.125rem; }
/* 表格（服務範圍表、接管條件表、政府採購契約表）：樣板 table 最小寬 680px；分隔線畫在儲存格下緣、最後一列不畫、
   表頭上緣不畫（外框已有）；表頭底色只給 thead；caption 12px、內距 14px 20px、淺藍底；儲存格內連結是行內文字連結。 */
/* 品牌卡圖片是行內元素，底下多出約 10px 的基線空隙；樣板圖片是區塊。 */
/* 頁首按鈕圓角：樣板 .button 為 6px。 */
/* 手機版（≤600px）：樣板 .section 上下 35px、.section-head 下距 22px。 */
/* MDR 資料流直排（≤760px）：樣板卡與卡之間是 gap 15px＋26px 箭頭列（28.8px）＋gap 15px ≈ 58.8px，箭頭在正中。 */
/* 區段小標的上緣：樣板 .eyebrow 的上距為 0（我方繼承段落預設的 1em）。 */
/* 標籤膠囊與資料流徽章的底色（樣板同）、資料流說明文字上距 0。 */
.catalog-content[data-page-kind="serviceCategoryPage"] .dataflow > li p:not(.badge) { margin-top: 0; }
/* issue 137：品牌頁的優勢圖示卡（樣板 .trellix-benefits／.feature-icon／.source-links）。兩欄、欄距 24px（≤600px 單欄）；
   卡片內距 26px、1px 邊、圓角 14px、底色取樣板 --paper（本站的 --surface-sunken）；圖示方框 52px、圓角 13px、圖示 28px；
   h3 23px、上下外距 18px／12px、p 次要色無外距；卡片下方的原廠技術參考 12px、上外距 24px，覆寫產品頁用的負外距。 */
.advantage-cards > article { min-width: 0; padding: 1.625rem; border: 1px solid var(--line); border-radius: .875rem; background: var(--surface-sunken); }
.advantage-cards p { margin: 0; color: var(--muted); }
.feature-icon { display: flex; width: 3.25rem; height: 3.25rem; border-radius: .8125rem; align-items: center; justify-content: center; background: var(--feature-icon-bg); color: var(--feature-icon-fg); }
.feature-icon svg { width: 1.75rem; height: 1.75rem; }
/* 樣板 p { margin: 0 0 18px }；.scenario-grid 內文沿用（首頁與總覽卡片）。 */
/* 樣板 img { display: block }：品牌卡圖片是行內元素時底下多出約 10px 的基線空隙。 */
.catalog-content[data-page-kind="homePage"] .brand-card-image { display: block; }
/* 總覽頁樣板的 .scenario-grid 卡片沒有編號，只有 eyebrow → h3 → 內文；eyebrow 下距 20px。 */
/* 樣板 .section：上框線＋上下內距 54px（≤600px 35px），.section-head 的 eyebrow 上距 0。 */
/* 樣板 .cta-band：eyebrow 下距 20px、說明文字為區塊最後一段（下距 0）。 */
.catalog-content:is([data-page-kind="homePage"], [data-page-kind="solutionOverviewPage"], [data-page-kind="solutionPage"]) .cta-band .eyebrow { margin: 0 0 1.25rem; }
.catalog-content:is([data-page-kind="homePage"], [data-page-kind="solutionOverviewPage"], [data-page-kind="solutionPage"]) .cta-band p:not(.eyebrow) { margin-bottom: 0; }
/* 樣板情境頁 .wide-copy：20px、次要文字色、最寬 920px（≤600px 18px）。對應我方情境頁「風險情境」內文段落。 */
.catalog-content[data-page-kind="solutionPage"] .solution-context .prose { max-width: 57.5rem; }
.catalog-content[data-page-kind="solutionPage"] .solution-context .prose p { font-size: 1.25rem; color: var(--muted); }
@media (max-width: 600px) {
  .catalog-content[data-page-kind="solutionPage"] .solution-context .prose p { font-size: 1.125rem; }
  /* 樣板 .section ≤600px 上下內距 35px（不含結尾 CTA 帶，它有自己的內距）。 */
}
/* issue 135c：樣板的色彩（淺框線、深色面板為純 --navy、淺色大卡底、標籤底、空心按鈕框）。
   :root 的 --line 等 token 不動（其他頁型與對比測試依賴它），這裡只在首頁與情境頁的內容區範圍內改用樣板值。 */
.catalog-content:is([data-page-kind="homePage"], [data-page-kind="solutionOverviewPage"], [data-page-kind="solutionPage"]) { --line: var(--line-template); }
.catalog-content[data-page-kind="homePage"] .tags li { background: var(--tag-bg); }
/* 樣板 .breadcrumb：項目間距 10px，分隔符是全形「／」，後面再空 10px。 */
.breadcrumb ol { gap: .625rem; }
.breadcrumb li + li::before { content: '／'; margin-right: .625rem; }
/* 樣板 .breadcrumb 在 header 下方只留 22px（margin-top），main 本身沒有上下內距（頁尾前的 70px 是結尾 CTA 帶的 margin-bottom）；內頁頁首自己有 22px 上內距，
   所以 main 的上內距要歸零（原本 clamp(2.5rem,6vw,6rem) 讓麵包屑離頁首底線約 85px）。 */
/* 樣板 h1 不做 text-wrap: balance（會把一行拆成兩半、比樣板窄）；無圖頁首的文字欄最寬 900px（.hero-copy）。 */
/* 樣板 .button.outline：邊框用 --button-outline-line、圓角 6px；hover 底沿用 --wash 不另立。 */
/* 樣板 .hero.with-image 用 align-items:center 讓「左欄文字」相對「右欄圖」垂直置中。這裡文字是 .page-head 的直接子節點、
   各佔一列，圖跨列，多出的高度會被平均攤進文字列而不是置中。改用兩條 1fr 的空列夾住文字列：
   第 1 列麵包屑、第 2 列上墊、第 3–11 列文字（自動排入）、第 12 列下墊；圖從第 2 列跨到第 12 列。
   eyebrow 在原始碼裡排在 h1 之後，靠 order 拉回最前面。（用範圍語法寫斷點，避免與上方 issue 130 的 min-width: 851px 區塊被規則測試當成同一塊。） */
@media (width >= 851px) {
  .page-head:has(> .page-image):not(:has(> .partner-logo-frame)) { grid-template-rows: auto minmax(0, 1fr) repeat(9, auto) minmax(0, 1fr); }
  .page-head:has(> .page-image):not(:has(> .partner-logo-frame))::before { content: ''; grid-column: 1; grid-row: 2; }
  .page-head:has(> .page-image):not(:has(> .partner-logo-frame))::after { content: ''; grid-column: 1; grid-row: 12; }
}
.page-head > h1, .page-head > .eyebrow { justify-self: stretch; }
@media (max-width: 600px) {
  /* 樣板 ≤600px：目錄頁頁首 h1 27px；按鈕列滿寬（.hero-actions 在單欄格線裡要拉滿，按鈕 width:100% 才有依據）。 */
  .page-head > .hero-actions { justify-self: stretch; }
}
/* issue 139：樣板 figure.hero-image——頁首圖有圖說時包成 figure.page-figure（img 仍是 .page-image，樣式與無圖說時相同）。
   figure 取代圖片在 .page-head 格線的位置（規則與上方 issue 130／135 的 .page-image 版本逐條對應）；
   figcaption 照樣板 .hero-image figcaption：11px、--muted、上內距 8px。 */
.page-head > .page-figure { margin: 2rem 0; justify-self: stretch; }
@media (width >= 851px) {
  .page-head:has(> .page-figure):not(:has(> .partner-logo-frame)) { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); column-gap: 2.625rem; align-items: center; grid-template-rows: auto minmax(0, 1fr) repeat(9, auto) minmax(0, 1fr); }
  .page-head:has(> .page-figure):not(:has(> .partner-logo-frame))::before { content: ''; grid-column: 1; grid-row: 2; }
  .page-head:has(> .page-figure):not(:has(> .partner-logo-frame))::after { content: ''; grid-column: 1; grid-row: 12; }
}
@media (max-width: 850px) {
  .page-figure > .page-image { max-height: 20rem; }
}
/* issue 140：情境頁的 CONTROL FRAMEWORK、AI & API 串連橫條、EXPECTED FIRST DELIVERABLE（樣板 .framework／.chain／.wide-copy）。
   .framework：兩欄、間距 20px；卡片內距 30px、1px --line 邊、圓角 12px、底色取樣板 --paper（本站 --surface-sunken）；
   小標 --blue（本站 --action）下距 20px、h3 23px 下距 20px、說明次要色下距 18px。≤600px 單欄。
   .chain：內距 32px、間距 20px、垂直置中、深色 --navy 底、白字、圓角 12px、下距 20px；節點 19px、副標 12px 淡藍、箭頭亮青；
   ≤850px 內距 24px、間距 12px、節點 16px；≤600px 改直排並拉滿，箭頭轉 90 度置中、節點回 19px。
   .wide-copy：20px、次要色、最寬 920px（≤600px 18px）。 */
.framework > article { min-width: 0; padding: 1.875rem; border: 1px solid var(--line); border-radius: .75rem; background: var(--surface-sunken); }
.chain { display: flex; gap: 1.25rem; align-items: center; margin-bottom: 1.25rem; padding: 2rem; border-radius: .75rem; background: var(--navy); color: var(--paper); }
.chain > b { color: var(--chain-arrow); }
.solution-chain > .small { margin: 0 0 1.125rem; font-size: .8125rem; }
@media (max-width: 600px) {
  .chain > b { transform: rotate(90deg); text-align: center; }
}
/* issue 141：產品頁深入說明區塊（樣板 Trellix 產品頁的 .section 內 .trellix-benefits／.table-wrap／figure.architecture／.source-links）。
   圖示卡沿用 issue 137 的 .advantage-cards；區段上下內距 54px（≤600px 35px）。
   資料表：外框 1px、圓角 12px、外距 25px 0 45px（沿用 .table-scroll）；表格最小寬 680px、字級 14px、儲存格內距 20px、分隔線畫在下緣且最後一列不畫；
   表頭與列首底色 --table-head-bg、儲存格字色 --table-cell-text、列首字重粗體；caption 12px、內距 14px 20px、淺藍底。
   示意流程：深藍底白字、內距 28px、外距 28px 0、圓角 14px；圖說 13px 下距 22px；步驟橫排 gap 28px，步與步之間以 → 相連（≤600px 直排、gap 32px、改 ↓）；
   粗體行 17px、小字行 12px；附註左側 3px 青色線、內距 12px 20px、淺灰底。佔位卡 .empty-state：內距 30px、圓角 12px、淺灰底。 */
.deep-section > p { margin: 0 0 1.125rem; }
.data-table-block .data-table td a, .data-table-block .data-table tbody th a { display: inline; min-height: 0; color: var(--action); text-decoration: underline; }
.architecture { padding: 1.75rem; margin: 1.75rem 0; background: var(--navy); color: var(--paper); border-radius: .875rem; }
.architecture figcaption { font-size: .8125rem; color: var(--architecture-caption); margin-bottom: 1.375rem; }
.architecture ol { list-style: none; display: flex; gap: 1.75rem; margin: 0; padding: 0; }
.architecture li { flex: 1; min-width: 0; position: relative; font-size: .875rem; }
.architecture li + li::before { content: '→'; position: absolute; left: -1.375rem; color: var(--architecture-arrow); }
.architecture small { display: block; color: var(--architecture-sub); font-size: .75rem; }
.architecture strong { font-size: 1.0625rem; }
.deep-section .architecture-note { border-left: 3px solid var(--numbered-rule); padding: .75rem 1.25rem; background: var(--surface-sunken); }
@media (max-width: 600px) {
  .architecture ol { flex-direction: column; gap: 2rem; }
  .architecture li + li::before { content: '↓'; left: 0; top: -1.75rem; }
}
/* issue 142：DevaEye 總覽的服務組合卡與交付原則、接管條件頁的評估表與雙欄勾選條列、範圍說明提示框（樣板 .cards.products／.badge／.checks／.split／table-wrap／.notice）。
   卡片版面（三欄、內距 28px、圓角 18px、h3 25px、p 15px）沿用 issue 135b 對 .catalog-card 的規則；這裡只補徽章（11px、內距 4px 10px、膠囊、下距 16px；
   muted 為灰底灰字）與卡片連結（14px、強調藍）。勾選條列沿用 issue 128 的 .checks（縮排 22px、項目上下 9px、標記為強調藍）；
   雙欄沿用 .split 的斷點與欄距，欄標題 h3 23px、下距 20px。評估表沿用 .table-scroll＋.data-table（issue 135b 已把最小寬度、分隔線、表頭底色對齊樣板），
   第一欄是列標題但字重與樣板 td 相同。範圍說明提示框沿用 issue 132 的 .scope-notice，本次只是放寬頁型，不新增樣式。 */
.portfolio-section .text-link { color: var(--action); font-size: .875rem; }
.checklist-section > h3 { margin: 0 0 1.25rem; }
/* issue 147：政府採購頁的契約分類表照樣板 table——第一欄與其他儲存格同為一般字重、無表頭底色；表格外距 25px 0 45px。 */
/* issue 148：MDR 服務範圍表首欄在樣板是一般 td（無底色、一般字重、內文字色）；這裡保留 th scope=row 的語意，外觀明確對齊。 */
/* issue 150：頁面清單頁的 PAGE INVENTORY 兩欄格線（樣板 .page-inventory）——欄距 30px、列距 10px；每項上下 14px 加底線 --line，
   名稱下方是網址路徑 code（--muted、11px；樣板全站 code 為 12px 且可斷行，這裡直接用 11px）。手機（≤600px）改單欄；用範圍語法 width <= 600px 是因為導覽斷點測試以「最後一個 max-width: 600px 區塊」為準，不能被這段蓋掉。 */
.page-inventory { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .625rem 1.875rem; }
.page-inventory > a { display: flex; flex-direction: column; padding-block: .875rem; border-bottom: 1px solid var(--line); }
/* issue 149：全站區段小標上緣。樣板 p{margin:0 0 18px} 讓 .eyebrow 上距為 0；我方 p.eyebrow 沿用瀏覽器預設 1em（11px），
   使每個區段小標多出 11px。一條全站規則修掉（specificity 0,1,0，後出現；所有指定 margin 的既有 eyebrow 規則具名更高或本來就是 0）。 */
/* issue 149：品牌頁／產品頁 CTA 帶——樣板 .cta-band .eyebrow 下距 20px、說明段落是最後一段（下距 0）。 */
.catalog-content:is([data-page-kind="partnerPage"], [data-page-kind="partnerProductPage"]) .cta-band .eyebrow { margin: 0 0 1.25rem; }
.catalog-content:is([data-page-kind="partnerPage"], [data-page-kind="partnerProductPage"]) .cta-band p:not(.eyebrow) { margin-bottom: 0; }
/* issue 149：品牌頁優勢區的原廠技術參考行——樣板 p 預設下距 18px（.source-links 只改上距 24px），區段下內距在其後。 */
/* issue 149：產品卡內距。樣板 h1,h2,h3{margin:0 0 20px}、p{margin:0 0 18px}（.card 只改字級）；我方 h3 是 .75rem 上下、p 是 1em 上下。 */
.product-card p:where(:not(.eyebrow)) { margin: 0 0 1.125rem; }
/* issue 149：樣板 .numbered-list 的編號 span 是行內元素（落在 div 的 28.8px 行盒裡）；我方 display:block 讓該行只有 21.6px，每欄矮 7px。 */
/* issue 149：Check Point 佔位卡。樣板 h3 下距 20px（上距 0）、p 下距 18px（上距 0）；我方 h3 .75rem 上下、p 1em 上下，卡片多 6px。 */
.empty-state h3 { margin: 0 0 1.25rem; }
.empty-state p { margin: 0 0 1.125rem; }
/* issue 149：頁首主按鈕的箭頭。樣板是文字節點「提出選型需求 →」（一個空白字元寬），我方箭頭是獨立的 flex 子項並隔 12px gap，按鈕寬 163 vs 156，
   連帶把次按鈕推右 7px。歸零 gap，箭頭前補一個不換行空白（與樣板同一個空白字元寬）；箭頭 span 為 aria-hidden，不影響朗讀。 */
main:has(> .catalog-content:is([data-page-kind="partnerPage"], [data-page-kind="partnerProductPage"])) > .page-head .hero-actions > a:not(.secondary-cta) { gap: 0; }
main:has(> .catalog-content:is([data-page-kind="partnerPage"], [data-page-kind="partnerProductPage"])) > .page-head .hero-actions > a:not(.secondary-cta) > span[aria-hidden]::before { content: "\00a0"; }
/* issue 149：手機版（樣板 @media max-width:600px .section{padding:35px 0}）。品牌頁的「內容主軸」「產品卡」與產品頁的「能力清單」原本沒有手機版內距，仍是 54px。 */
/* issue 149：兩欄頁首在 ≤850px 收成單欄後，圖與文字的間距。樣板 .with-image 在 ≤1100px 為 gap 26px，單欄時圖的上下都沒有外距（下方靠 .hero 的 padding-bottom 40px）；
   我方 figure 有 2rem 上下外距，圖上多 6px、圖下多 32px。 */
@media (width <= 850px) {
  main:has(> .catalog-content:is([data-page-kind="partnerPage"], [data-page-kind="partnerProductPage"])) > .page-head > .page-figure { margin-block: 1.625rem 0; }
}
/* issue 156：聯絡頁照樣板 contact/index.html。起點卡沿用樣板 .cards.products／.card.pad：三欄（≤1100px 兩欄、≤600px 單欄）、gap 22px、內距 28px（≤600px 24px）、
   18px 圓角、h3 25px 下距 20px、連結 14px；條列沿用 issue 128 的 .checks。表單區沿用樣板 .form-preview：最大寬 720px、fieldset 邊框 --line／內距 28px（≤600px 18px）／12px 圓角，
   label 區塊、下距 16px，輸入框內距 12px、14px 字、上距 6px、6px 圓角、寬 100%，textarea 最小高 100px；單欄欄位（不是 lab 原本的兩欄）。輸入框外框用 --field-border（WCAG 1.4.11）。 */
.contact-start-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.375rem; }
.contact-start-card { min-width: 0; padding: 1.75rem; border: 1px solid var(--line); border-radius: var(--radius-xl); overflow: hidden; scroll-margin-top: 6rem; }
.contact-start-card .text-link { font-size: .875rem; }
.contact-form-lead { margin: 0 0 1.125rem; }
.lead-fieldset { margin: 0; min-width: 0; padding: 1.75rem; border: 1px solid var(--line); border-radius: .75rem; }
.contact-form-section .lead-field { gap: 0; margin-bottom: 1rem; }
@media (width <= 1100px) {
  .contact-start-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (width <= 600px) {
  .contact-start-cards { grid-template-columns: 1fr; }
}
/* issue 157：逐頁截圖比對後的收尾。每條註明對應的樣板規則。
   （首頁相關的條目已隨 issue 175 的改版移除，只留內頁仍在用的規則。） */

/* 頁首主按鈕的箭頭：樣板是文字節點「提出選型需求 →」（一個空白字元寬），不是 12px gap。issue 149 只對品牌頁與產品頁做了，這裡擴到所有內頁頁首。 */
.page-head .hero-actions > a:not(.secondary-cta) > span[aria-hidden]::before { content: "\00a0"; }
/* MDR 資料流（樣板 .dataflow：1fr 26px 1fr 26px 1fr、gap 15px；.flow-arrow 16px 藍色 →，≤850px 單欄、箭頭旋轉 90deg 置中、上下各 gap 15px）。
   我方箭頭是 li 的 ::after：樣板的箭頭 16px（我方 24px），在 26px 欄裡靠左（我方置中），直排時是旋轉的 → 而不是 ↓；斷點是 850px（我方 760px）。 */
.catalog-content[data-page-kind="serviceCategoryPage"] .service-dataflow .dataflow > li:not(:last-child)::after {
  content: "→"; content: "→" / ""; font-size: 1rem; font-weight: 400; line-height: 1.8; width: 1.625rem; text-align: left;
}
@media (width <= 850px) {
  .catalog-content[data-page-kind="serviceCategoryPage"] .service-dataflow .dataflow > li:not(:last-child)::after {
      left: 50%; right: auto; top: calc(100% + 1rem); bottom: auto; width: auto; transform: translateX(-50%) rotate(90deg);
    }
}
@media (width >= 851px) {
  .catalog-content[data-page-kind="serviceCategoryPage"] .service-dataflow .dataflow { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3.5rem; }
  .catalog-content[data-page-kind="serviceCategoryPage"] .service-dataflow .dataflow > li:not(:last-child)::after {
      left: calc(100% + 1rem); right: auto; top: 50%; bottom: auto; transform: translateY(-50%);
    }
}
/* MDR「從你目前的狀態開始」：序號在樣板是行內 span（view 已由 p 改成 span），行高繼承 1.8，不再用 1.8rem 的區塊行高。 */
/* 樣板 td a 是一般行內連結（WCAG 2.5.8 的行內連結例外）；.data-table a 的 inline-flex＋44px 讓資源頁的規劃表每列 85px（樣板 66px）。
   issue 135b 只對採購／MDR／接管條件三種頁型做過，這裡擴到所有 .data-table。 */
/* 樣板只有 h1～h3 與 code 設 overflow-wrap:anywhere，表格儲存格是 normal；body 的 anywhere 讓 auto 版面的最小欄寬趨近 0，
   窄螢幕上「SentinelOne」被壓成 97px 斷成兩行（樣板 126px 不換行）。 */
.data-table th, .data-table td { overflow-wrap: normal; }
/* 樣板 .breadcrumb{display:flex;gap:10px} 的每一項是獨立的 span；我方 li 內的 ::before「／」與文字之間夾著原始碼的空白字元（約 4px）。
   li 改成 flex 容器後，空白不再成為行內內容。 */
.breadcrumb li + li { display: flex; }
/* 樣板 .page-inventory > a：名稱 var(--ink)、無底線（全站 a 的規則：color:inherit、hover 才底線）；我方被全站連結樣式染成藍色底線。 */
.page-inventory > a:hover { text-decoration: underline; text-underline-offset: .3125rem; }
/* 資源頁規劃表（樣板 th,td{border-bottom:1px solid var(--line)}、最後一列無底線）：我方 .data-table 預設是上框線，整張多 1px（thead 66.2px、樣板 65.7px）。
   採購／MDR／接管條件三種頁型已在 issue 135b 改成底線，這裡補上資源頁。 */
/* 頁面清單頁手機版：樣板 @media max-width:600px 的 .section{padding:35px 0}；我方沒有這一頁的手機版內距，區段上下各多 19px（54px）。 */
/* issue 158：收件未開放時的停用欄位預覽（樣板 .form-preview button{opacity:.7;cursor:not-allowed}）。 */
/* issue 175：停用的預覽按鈕不再用 opacity: .7（白字對比掉到 3.12:1）；改用實色 --muted 底配白字（約 6:1），仍看得出是停用。 */
.lead-form-preview input[disabled], .lead-form-preview textarea[disabled] { cursor: not-allowed; }

/* 結尾 CTA 圓形遮罩轉場（issue 195）：結尾行動帶（內頁 .cta-band、頁面區塊 .pp-section--cta；首頁的結尾 CTA 在 home.css 同一套）進入視窗時，以圓形遮罩從下方中央展開，播完等同原狀；
   只在減少動態與暫停動態都沒開、瀏覽器支援捲動時間軸與 @property 時播放，其餘一律直接是完整畫面。 */
@property --cta-r { syntax: "<percentage>"; inherits: false; initial-value: 150%; }
@keyframes cta-iris { to { --cta-r: 150%; } }
@supports (animation-timeline: view()) and (mask-image: radial-gradient(circle, black, transparent)) {
  @media (prefers-reduced-motion: no-preference) {
    html:not([data-motion="off"]) :is(.cta-band, .pp-section--cta) { --cta-r: 0%; -webkit-mask-image: radial-gradient(circle at 50% 100%, black var(--cta-r), transparent calc(var(--cta-r) + .5%)); mask-image: radial-gradient(circle at 50% 100%, black var(--cta-r), transparent calc(var(--cta-r) + .5%)); animation: cta-iris linear both; animation-timeline: view(); animation-range: entry 0% cover 28%; }
  }
}

/* reCAPTCHA 標誌：Google 允許隱藏的前提是表單按鈕下方有隱私權政策與服務條款告知（見 .cf-recaptcha-notice）。 */
.grecaptcha-badge { visibility: hidden; }
