@charset "UTF-8";

/* ==========================================================================
   style.css —— 全站共用一份，所有頁面都 link 這個檔案
   --------------------------------------------------------------------------
   結構：1. 變數 → 2. Reset → 3. 基礎排版 → 4. 版面容器/格線
         → 5. 共用元件 → 6. 頁面專屬 → 7. 工具類別 → 8. RWD 斷點
   --------------------------------------------------------------------------
   ★ 新增樣式時要放哪一節？
     多個頁面會用到（header / banner / 卡片 / 按鈕…）→ 第 5 節
     只有某一頁會用到                                 → 第 6 節，放在該頁的小標下
   ★ 順序不可調換（由 cascade 決定，不是美觀問題）：
     Reset 要在元件前、工具類別和斷點必須在最後，否則會被蓋掉。
   ========================================================================== */

/* ==========================================================================
   1. 變數（Design Tokens）
   ========================================================================== */
/* ★ 唯一還留在全域的變數。
   <html> 的 scroll-padding-top 需要 header 高度，而 html 在 .cf-site 外面，
   讀不到 wrapper 內部的變數 —— 所以這一個只能放全域。名字加了 cf- 前綴，
   避免跟 WordPress 主題或 Elementor 撞名。
   改 header 高度改這一行就好，下面 .cf-site 的 --header-h 會跟著它走。 */
:root {
  --cf-header-h: 60px;
}

/* 原本這一整段寫在 :root 上。:root 就是 <html>，是全域的 ——
   搬進 .cf-site 之後，變數只在 wrapper 內部繼承，不會外洩到 Elementor footer
   或主題的其他頁面。wrapper 裡的子元素照樣拿得到，求值行為完全不變。 */
.cf-site {
  /* 色彩 */
  --color-bg: #f5f5f5;
  --color-surface: #ffffff;
  --color-text: #222222;
  --color-text-muted: #666666;
  --color-border: #e0e0e0;
  --color-primary: #2563eb;
  --color-primary-hover: #1d4ed8;

  /* HEADER 專用（改這幾個就能換整個 header） */
  --header-h: var(--cf-header-h);           /* header 高度，banner 會扣掉這個值。
                                               數值在最上面的 :root（<html> 也要用） */
  --header-bg: #000000;                     /* 黑底 */
  --header-text: #ffffff;
  --header-border: rgba(255, 255, 255, 0.12);
  /* 邊框在黑底上必須用淺色 —— 原本的 rgba(0,0,0,.08) 是深色，
     疊在黑底上等於完全看不見，而底下的 banner 也是深色底圖，
     沒有這條線的話 header 會整片融進 banner 裡分不出來。 */
  --menu-gap: 12px;                         /* 下拉面板與 header 底部的距離。
                                               面板是從「導覽項目」的底部起算，而 .site-header
                                               有 4px 的 padding-block，所以眼睛看到的空隙
                                               ＝這個值 - 4px。也用在兩層面板之間的縫。 */
  --menu-pad: var(--space-3);               /* 面板內距。也決定第二層的垂直對齊，
                                               兩者共用同一個值才會剛好對齊面板頂端 */

  /* 字體 */
  --font-sans: -apple-system, BlinkMacSystemFont, "Helvetica Neue",
    "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", sans-serif;

  /* 字級：clamp(最小, 流動值, 最大) —— 不用斷點就能隨螢幕縮放 */
  --fs-h1: clamp(1.75rem, 5vw, 3rem);
  --fs-h2: clamp(1.5rem, 3.5vw, 2.25rem);
  --fs-h3: clamp(1.25rem, 2.5vw, 1.5rem);
  --fs-body: clamp(0.95rem, 1.6vw, 1.0625rem);
  --fs-small: 0.875rem;

  /* 大標字級：首頁 banner 與各產品頁 hero 共用，改這一行兩邊一起變 */
  --fs-display: clamp(2.5rem, 7vw, 5rem);   /* 手機 40px → 桌機 80px */

  /* 小標與大標之間的「視覺」距離（全站每個區塊共用，改這一行就全部連動）
     註：目標視覺 25px。小字行高底部 ~5px + 大字字體頂部內建留白 ~10px
     是看不見但存在的空白，所以 margin 要扣掉它們才會「看起來」是 25px。 */
  --gap-eyebrow: 20px;

  /* 間距（8px 為基準） */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 1rem;
  --space-4: 1.5rem;
  --space-5: 2rem;
  --space-6: 3rem;
  --space-7: 4rem;

  /* 版面 */
  --container-max: 1280px;
  --gutter: var(--space-3);
  --radius: 8px;

  /* 卡片外觀（.info-card 和 .steps 共用，改這兩行兩邊一起變）
     線色刻意用「不透明」的值：半透明邊框會疊在元素自己的背景上，
     .steps 的背景本身就是線色，會疊成兩層而變深，跟 .info-card 對不起來。 */
  --card-line: #ededed;                       /* 外框與分隔線的顏色 */
  --card-radius: 14px;                        /* 圓角 */
  --shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.04);
}

/* 2026-08-26：拿掉了深色模式的 @media (prefers-color-scheme: dark) 覆寫。
   設計稿沒有深色版本，留著的後果是「系統跑深色模式的人看到的是一個沒人設計過
   的版本」——使用者自己的 Chrome 就是深色模式，所以一直看到跟設計稿不同的畫面。
   （這也是為什麼每個區塊都得記得「寫死背景色 → 同時寫死文字色」那條鐵律；
   整段刪掉之後，那條鐵律就不再是必要的，新增區塊也不會再踩到這個坑。
   既有區塊那些寫死的顏色留著不動，它們本來就是設計稿的顏色。）
   不管使用者系統是什麼模式，永遠顯示上面 :root 裡定義的這一組顏色。 */

/* ==========================================================================
   2. Reset
   ========================================================================== */
.cf-site, .cf-site *,
.cf-site *::before,
.cf-site *::after{
  box-sizing: border-box;
}

html{
  -webkit-text-size-adjust: 100%; /* 防止 iOS 橫向時自動放大字 */
  scroll-behavior: smooth;
  /* 捲到錨點時預留 header 的高度，否則區塊標題會被 sticky header 蓋住。
     只影響「點連結捲動」的落點，完全不參與版面計算。 */
  /* ★ 用最上面 :root 的 --cf-header-h，不是 .cf-site 裡的 --header-h ——
     html 在 wrapper 外面，讀不到裡面的變數。 */
  scroll-padding-top: var(--cf-header-h);
}

/* ★ body 的 margin 歸零只能寫在 body 上 —— 它在 wrapper 外面，.cf-site 管不到。
   瀏覽器預設給 body 8px margin，不歸零整頁會有一圈白邊（2026-09-02 diff 抓到的）。
   這是第二條留在全域的規則，但完全無害：每個 WordPress 主題自己都會做這件事，
   搬過去之後這三行可以直接刪掉。 */
body {
  margin: 0;
}

.cf-site,
.cf-site h1, .cf-site h2, .cf-site h3, .cf-site h4, .cf-site h5, .cf-site h6,
.cf-site p, .cf-site figure, .cf-site blockquote, .cf-site dl, .cf-site dd, .cf-site ul, .cf-site ol{
  margin: 0;
}

.cf-site ul[class],
.cf-site ol[class]{
  padding: 0;
  list-style: none;
}

/* 圖片、影音一律不撐破容器 —— RWD 最重要的一條 */
.cf-site img,
.cf-site picture,
.cf-site video,
.cf-site canvas,
.cf-site svg,
.cf-site iframe{
  display: block;
  max-width: 100%;
  height: auto;
}

.cf-site input,
.cf-site button,
.cf-site textarea,
.cf-site select{
  font: inherit;
  color: inherit;
}

/* 長字串／網址不會撐破版面 */
.cf-site p, .cf-site h1, .cf-site h2, .cf-site h3, .cf-site h4, .cf-site li, .cf-site a{
  overflow-wrap: break-word;
}

/* 尊重使用者的「減少動態效果」設定 */
@media (prefers-reduced-motion: reduce) {
  html{
    scroll-behavior: auto;
  }
  .cf-site, .cf-site *,
  .cf-site *::before,
  .cf-site *::after{
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ==========================================================================
   3. 基礎排版
   ========================================================================== */
.cf-site{
  /* ★ min-height 移到下面用 :has() 限定 */ /* 手機瀏覽器動態工具列的正確高度 */
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.7;
  background-color: var(--color-bg);
  color: var(--color-text);
  -webkit-font-smoothing: antialiased;
}

/* ★ 2026-09-03：min-height 只給「包住整頁的」那個 wrapper。
   footer 有自己獨立的 .cf-site（見 footer.php），無條件套的話
   footer 的 wrapper 也會被撐成一整個螢幕高
   （實測內容 407px、wrapper 卻 907px，下面多出 500px 空白）。
   :has(> main) 只命中首頁和產品頁那個 header+main 的 wrapper。 */
.cf-site:has(> main){
  min-height: 100vh;
  min-height: 100dvh;
}

.cf-site h1{ font-size: var(--fs-h1); line-height: 1.2; }
.cf-site h2{ font-size: var(--fs-h2); line-height: 1.25; }
.cf-site h3{ font-size: var(--fs-h3); line-height: 1.3; }

.cf-site h1, .cf-site h2, .cf-site h3{
  margin-bottom: var(--space-3);
  font-weight: 700;
  text-wrap: balance; /* 標題換行更平均 */
}

.cf-site p{
  margin-bottom: var(--space-3);
  max-width: 70ch; /* 可讀行長上限 */
}

.cf-site a{
  color: var(--color-primary);
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}

.cf-site a:hover{
  color: var(--color-primary-hover);
}

.cf-site :focus-visible{
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

/* ==========================================================================
   4. 版面容器 / 格線
   ========================================================================== */
.cf-site .container{
  width: 100%;
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.cf-site .section{
  padding-block: var(--space-6);
}

/* 自動換行格線：欄寬不足 260px 就自動掉到下一行，不需要寫 media query */
.cf-site .grid{
  display: grid;
  gap: var(--space-4);
  grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
}

/* 固定欄數版本（配合下方斷點使用） */
.cf-site .grid--2,
.cf-site .grid--3,
.cf-site .grid--4{
  display: grid;
  gap: var(--space-4);
  grid-template-columns: 1fr; /* 手機一律單欄 */
}

.cf-site .flex{
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}

/* ==========================================================================
   5. 共用元件（兩頁以上會用到的都放這裡）
   --------------------------------------------------------------------------
   5-1 HEADER           5-2 BANNER（首頁）     5-3 PRODUCT HERO（產品頁）
   5-4 FEATURE SCROLL   5-5 SHOWCASE           5-6 WIDE VISUAL
   5-7 FEATURE SPLIT    5-8 PERFORMANCE        5-9 SPEC TABLE
   5-10 產品區塊         5-11 卡片               5-12 CTA
   5-13 FOOTER
   ========================================================================== */

/* --------------------------------------------------------------------------
   5-1. HEADER
   -------------------------------------------------------------------------- */
.cf-site .site-header{
  position: sticky;
  top: 0;
  z-index: 100;              /* 要比所有區塊內容都高，不然會被蓋住 */
  height: var(--header-h);   /* 固定 header 高度，值在第 1 節 */
  padding-block: var(--space-1);
  border-bottom: 1px solid var(--header-border);
  background-color: var(--header-bg);
  color: var(--header-text);
}

/* 兩端對齊：Logo 貼 container 左緣、導覽貼右緣，中間自動留白。
   （原本是 grid 三格「左 Logo｜中導覽｜右按鈕」，按鈕拿掉後導覽會變成偏中間，
     所以改成 flex + space-between。左右的內縮由 .container 的 max-width 決定，
     跟全站其他區塊共用同一條對齊線。） */
.cf-site .site-header .container{
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100%;
  gap: var(--space-3);
}

/* Logo：SVG 原始尺寸 217 x 34，靠 height 縮放（width 自動等比）。
   ※ 這個 SVG 的 12 條路徑全部是 fill="white"，所以 header 底色必須是深色。 */
.cf-site .site-header__logo{
  flex-shrink: 0;          /* 不准被導覽擠扁 */
  display: flex;
  align-items: center;
}

.cf-site .site-header__logo img{
  height: 24px;            /* ← Logo 大小只改這一個數字 */
  width: auto;
}

/* 導覽本體。
   手機：整組收在漢堡裡，展開後是一片蓋在 header 下方的滿寬面板（手風琴）。
   平板以上：回到水平一列、下拉改成浮動面板 —— 見第 8 節斷點。 */
.cf-site .nav{
  display: none;                    /* 手機預設收起來 */
  position: absolute;
  top: 100%;                        /* 貼在 header 底下（.site-header 是 sticky，
                                       本身就是定位基準，不用另外設 position） */
  left: 0;
  right: 0;
  padding: var(--space-3) var(--gutter) var(--space-4);
  background-color: var(--header-bg);
  border-bottom: 1px solid var(--header-border);
  /* 選項多到超過一螢幕時面板自己捲，不會把整頁撐長 */
  max-height: calc(100vh - var(--header-h));
  max-height: calc(100dvh - var(--header-h));
  overflow-y: auto;
}

/* 漢堡打開 → 面板出現。狀態的唯一來源是按鈕的 aria-expanded（見下方說明） */
.cf-site .site-header__toggle[aria-expanded="true"] + .nav{
  display: block;
}

.cf-site .nav__list{
  display: flex;
  flex-direction: column;           /* 手機直排 */
}

/* 連結和按鈕長得一樣 —— 有下拉的項目是 <button>，沒下拉的是 <a>，
   但視覺上不該有差別，所以樣式寫在一起。
   （button 的 font / color 已經在第 2 節 Reset 繼承過了，這裡只要拿掉外框和底色） */
.cf-site .nav a,
.cf-site .nav button{
  display: flex;
  align-items: center;
  width: 100%;
  padding-block: var(--space-2);    /* 手機的觸控高度 */
  /* 這行是必要的，不是為了美觀：Chrome 給 <button> 的預設 padding-inline 是 6px，
     只寫 padding-block 蓋不掉它，於是有下拉的項目（<button>）會比沒下拉的（<a>）
     往右偏 6px —— 面板裡的 Case Fan 就是這樣跟 Holo float / zephyr 對不齊的。 */
  padding-inline: 0;
  border: 0;
  background: none;
  text-align: left;
  text-decoration: none;
  color: inherit; /* 跟著 .site-header 的 --header-text 走，不自己指定顏色 */
  opacity: 0.85;
  transition: opacity 0.2s ease;
  font-size: 0.9375rem;
  cursor: pointer;
}

.cf-site .nav a:hover,
.cf-site .nav button:hover{
  color: inherit;
  opacity: 1; /* 深色 header 上用透明度做 hover，比換色安全 */
}

/* 第一層（header bar 上那一排）的字級與字重。
   只套 .nav__link，所以「下拉面板裡的項目」不受影響，維持 0.9375rem。
   要讓面板內也一起變大，把這兩行複製到 .nav__menu a / .nav__menu button 上。 */
.cf-site .nav__link{
  font-size: 1.25rem;   /* ← 20px */
  font-weight: 700;     /* ← 粗體 */
}

/* 小三角。兩層都固定方向，不隨開合狀態改變（第一層維持朝下 ▾，第二層朝右 ▸）。 */
.cf-site .nav__caret{
  margin-left: auto;                /* 手機：推到最右邊 */
  padding-left: 0.6em;
  /* ← 三角形大小。用的是 U+25BC (▼) / U+25B6 (▶) 標準尺寸字元；
     不要換成 U+25BE / U+25B8，那兩個是 Unicode 的「small」變體，
     再乘上這個倍率就會縮成一個看不見的點。
     用 calc(0.6em + 3px) 而不是直接調大 em 倍率，是因為這個 class 同時用在
     header 那排（20px 字級）和面板裡的 Case Fan（15px 字級）兩種情境，
     兩邊的字級不一樣、0.6em 算出來的 px 也不一樣 —— 用 + 3px 才能保證
     「兩邊都比原本大 3px」，而不是兩邊放大的量不一樣。 */
  font-size: calc(0.6em + 3px);
  line-height: 1;
}

/* ---- 下拉面板 ---------------------------------------------------------------
   **開合狀態的唯一來源是觸發按鈕的 `aria-expanded`。**
   CSS 直接讀那個屬性決定顯示與否，JS 只負責切換它 —— 不用額外的 class，
   而且「螢幕閱讀器看到的狀態」和「眼睛看到的狀態」不可能不同步。

   選擇器用相鄰兄弟 `+`，所以 HTML 裡面板**必須緊接在按鈕後面**，中間不能插東西。

   手機：面板照文件流往下推開（手風琴），只用左邊內距做層級縮排。
   平板以上：改成浮動面板 —— 見第 8 節斷點。
   ---------------------------------------------------------------------------- */
.cf-site .nav__menu,
.cf-site .nav__submenu{
  display: none;
}

.cf-site button[aria-expanded="true"] + .nav__menu,
.cf-site button[aria-expanded="true"] + .nav__submenu{
  display: block;
}

.cf-site .nav__menu{
  padding-left: var(--space-3);     /* ← 手機的層級縮排 */
}

.cf-site .nav__submenu{
  padding-left: var(--space-3);
}

/* ---- 漢堡按鈕（只有手機看得到，≥768px 在第 8 節隱藏）---- */
.cf-site .site-header__toggle{
  flex-shrink: 0;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  margin-right: calc(var(--space-2) * -1);  /* 視覺上對齊 container 右緣
                                               （按鈕的觸控範圍比圖示大） */
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  cursor: pointer;
}

/* 兩個圖示疊在同一個位置，靠 aria-expanded 決定顯示哪一個 */
.cf-site .site-header__toggle[aria-expanded="false"] .site-header__toggle-icon--close,
.cf-site .site-header__toggle[aria-expanded="true"] .site-header__toggle-icon--open{
  display: none;
}


/* --------------------------------------------------------------------------
   5-2. BANNER（全版面）
   .banner 本身不設 max-width → 寬度 100%，背景色/底圖通到螢幕左右兩邊；
   內層 .container 才把文字收在 1200px 內並置中。
   -------------------------------------------------------------------------- */
.cf-site .banner{
  /* 底圖是深色，所以文字色也一起寫死，不跟系統深色模式跑 */
  --color-text-muted: rgba(255, 255, 255, 0.78);
  position: relative;                         /* 給遮罩當定位基準 */
  width: 100%;
  display: flex;
  align-items: stretch;                       /* 讓 container 撐滿高度 */
  /* 滿版：螢幕高度扣掉 header，打開網站時 banner 剛好佔滿可視範圍 */
  min-height: calc(100vh - var(--header-h));  /* 舊瀏覽器用這行 */
  min-height: calc(100dvh - var(--header-h)); /* 手機用這行（會蓋掉上一行） */
  padding-block: var(--space-6);
  color: #ffffff;
  text-align: left;
  /* 底圖：路徑從 CSS 檔的位置算起，../ 表示先跳出 CSS 資料夾 */
  background-color: #0b0f16;                  /* 圖載入前／失敗時的底色 */
  background-image: url("../img/Coolify_banner.png");
  background-size: cover;
  background-position: center;
}

/* 暗色遮罩：左邊暗、右邊透明，保證白字在任何底圖上都讀得到 */
.cf-site .banner::before{
  content: "";
  position: absolute;
  inset: 0;                                   /* 等於 top/right/bottom/left 全部 0 */
  background: linear-gradient(
    90deg,
    rgba(0, 0, 0, 0.7) 0%,
    rgba(0, 0, 0, 0.35) 45%,
    rgba(0, 0, 0, 0) 75%
  );
}

/* 內容層：撐滿高度、垂直居中，並疊在遮罩之上 */
.cf-site .banner .container{
  position: relative;
  z-index: 1;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

/* 大標：設計稿是細字重，不是預設的粗體 */
.cf-site .banner h1{
  max-width: 18ch;   /* 全大寫字比較寬，留一點餘裕避免多餘斷行 */
  margin-bottom: var(--space-4);
  font-size: var(--fs-display);   /* 值在第 1 節，與產品頁 hero 共用 */
  font-weight: 300;
  line-height: 1.05;
  letter-spacing: -0.02em;
  text-wrap: initial;                       /* 取消 balance，讓它照 max-width 自然斷行 */
}

.cf-site .banner p{
  /* 2026-09-03 美術檢閱：3 行→ 2 行。整句排一行需 795px，取一半留餘裕。 */
  max-width: 50ch;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* 小標也是 <p>，會被上面的 margin-bottom: 0 誤傷 ——
   用更高權重（兩個 class）把它救回來，跟其他區塊一起吃 --gap-eyebrow */
.cf-site .banner .eyebrow{
  margin-bottom: var(--gap-eyebrow);

  /* 2026-09-03 美術檢閱：NEXT-GEN DISPLAY TECHNOLOGY 要維持一行。
     ※ 断行原因不是 white-space，是上面 .banner p 的 max-width
       （小標也是 <p>，所以被限制到只有 285px）。 */
  max-width: none;
  white-space: nowrap;
}

/* --------------------------------------------------------------------------
   5-3. PRODUCT HERO —— 產品頁進站第一眼的 hero（各產品頁共用）
   滿版底圖，做法跟首頁 .banner 一樣（CSS 背景圖 + cover）。
   每一頁的底圖不同，圖片路徑寫在第 6 節各頁的小節裡。
   -------------------------------------------------------------------------- */
.cf-site .product-hero{
  /* 2026-08-26：文字色改成白色（底圖是深色照片）。
     ※ 連帶必須把下面的 background-color 也一起改成深色 ——
       那是「圖片還沒載入／載入失敗／還沒放圖」時的底色，
       原本是白色，只改文字不改底色就會變成白底白字、整段看不見。
       （目前這頁的 background-image 還是 none，所以現在看到的就是這個底色。）*/
  --color-text: #ffffff;
  --color-text-muted: rgba(255, 255, 255, 0.78);
  --color-border: rgba(255, 255, 255, 0.18);
  position: relative;
  display: flex;
  align-items: center;
  min-height: calc(100vh - var(--header-h));
  min-height: calc(100dvh - var(--header-h));
  padding-block: var(--space-6);
  color: var(--color-text);
  /* 滿版底圖的機制（圖片本身在第 6 節指定） */
  background-color: #0b0f16;                   /* 圖載入前／失敗時的底色，
                                                  跟首頁 .banner 用同一個深色 */
  background-size: cover;                      /* 填滿區塊，超出的裁掉 */
  background-position: center;
  background-repeat: no-repeat;
}

/* 內容層疊在底圖之上 */
.cf-site .product-hero .container{
  position: relative;
  z-index: 1;
}

/* 產品名直接用共用的 .eyebrow（字級、字距、間距都跟首頁一致），
   所以這裡不另外寫 .product-hero__label */

/* 大標：字級、字重、行距全部跟首頁 banner 一致 */
.cf-site .product-hero__title{
  max-width: 14ch;
  margin-bottom: var(--space-4);
  font-size: var(--fs-display);   /* 值在第 1 節，與首頁 banner 共用 */
  font-weight: 300;
  line-height: 1.05;
  letter-spacing: -0.02em;
  text-wrap: initial;
}

.cf-site .product-hero__text{
  max-width: 58ch;
  color: var(--color-text-muted);
}

/* 按鈕列：手機自動換行 */
.cf-site .product-hero__actions{
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-5);
}

/* --------------------------------------------------------------------------
   5-4. FEATURE SCROLL —— 標題區 + 可橫向滑動的特色卡（各產品頁共用）
   卡片列的左緣對齊 .container，右側刻意出血到螢幕外，暗示還能往右滑。
   圖框先用 aspect-ratio 佔位，設計師的圖放進來不會跳版。
   -------------------------------------------------------------------------- */
.cf-site .feature-scroll{
  /* 背景寫死白色，文字色也一起寫死（不跟系統深色模式跑） */
  --accent: #2b7fff;
  --color-text: #14181f;
  --color-text-muted: #4b5563;
  --color-border: rgba(0, 0, 0, 0.12);
  padding-block: var(--space-6);
  background-color: #ffffff;
  color: var(--color-text);
}

/* 這一區的小標是藍色的 */
.cf-site .feature-scroll .eyebrow{
  color: var(--accent);
}

.cf-site .feature-scroll__intro{
  max-width: 58ch;
  color: var(--color-text-muted);
}

/* 卡片列的外框：滿版寬度，當箭頭的定位基準
   --edge 算出「container 左側留白有多寬」，卡片列和左箭頭都靠它對齊標題左緣 */
.cf-site .feature-scroll__viewport{
  --arrow-top: 35%;                           /* ← 箭頭的垂直位置（相對卡片列高度） */
  --edge: max(
    var(--gutter),
    (100vw - var(--container-max)) / 2 + var(--gutter)
  );
  position: relative;
}

/* 左右箭頭：白色圓角方塊 + 柔和陰影，疊在卡片上
   手機隱藏（觸控直接滑比較快），平板以上才出現 → 見第 8 節 */
.cf-site .feature-scroll__arrow{
  display: none;
  position: absolute;
  top: var(--arrow-top);
  margin-top: -20px;                          /* 自身高度的一半，做垂直居中 */
  z-index: 2;
  place-items: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: 10px;                        /* ← 方塊圓角 */
  background-color: #ffffff;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.10), 0 10px 24px rgba(0, 0, 0, 0.12);
  color: #14181f;                             /* chevron 用 currentColor，跟著這個走 */
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
}

/* 左箭頭跟著 container 左緣，右箭頭貼螢幕右邊 */
.cf-site .feature-scroll__arrow--prev{ left: calc(var(--edge) + var(--space-3)); }
.cf-site .feature-scroll__arrow--next{ right: var(--space-3); }

.cf-site .feature-scroll__arrow:hover{
  transform: scale(1.06);
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.12), 0 14px 30px rgba(0, 0, 0, 0.16);
}

/* 滑到頭／滑到底時，該側箭頭變淡且不能點（disabled 由 JS 切換） */
.cf-site .feature-scroll__arrow:disabled{
  opacity: 0.35;
  cursor: default;
  transform: none;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}

/* 卡片列：橫向排列 + 可滑動。三個邊界各用不同手法處理：
   margin-left  ── 元素從 container 左緣才開始，所以左邊界就是裁切線
                   → 往左滑的卡片直接消失，不會跑進左側留白（不出血）
   （右邊不設）  ── margin-left 之後寬度自動撐到螢幕右緣（出血）
   padding-right ── 捲動區內側預留一段，滑到底時最後一張剛好停在 container 右緣

   卡片寬度：可見寬度 = 內容寬(100%) + --edge，扣掉間距後除以想顯示的張數。
   手機 1⅓ 張、平板以上 2⅓ 張 —— 露出的那 ⅓ 就是右側的出血。 */
.cf-site .feature-scroll__track{
  --card-gap: var(--space-4);                 /* ← 卡片間距 */
  display: grid;
  grid-auto-flow: column;                     /* 子元素往右排，不換行 */
  /* 手機顯示 1⅓ 張 → 卡寬 = (可見寬度 - 1個間距) × 3/4 */
  grid-auto-columns: calc(
    (100% + var(--edge) - var(--card-gap)) * 3 / 4
  );
  gap: var(--card-gap);
  margin-top: var(--space-6);
  margin-left: var(--edge);                   /* 左緣對齊標題，且成為裁切線 */
  padding-right: var(--edge);                 /* 滑到底時右緣對齊 container */
  padding-bottom: var(--space-2);
  overflow-x: auto;
  scroll-snap-type: x proximity;              /* 滑動時輕微對齊卡片邊緣 */
  overscroll-behavior-x: contain;             /* 滑到底不會連帶捲動整頁 */
  /* 隱藏原生橫向捲軸，改用下方的點點指示器 */
  scrollbar-width: none;                      /* Firefox */
  -ms-overflow-style: none;                   /* 舊版 Edge */
}

.cf-site .feature-scroll__track::-webkit-scrollbar{
  display: none;                              /* Chrome / Safari */
}

/* 點點指示器：靠左下，對齊卡片左緣
   互動邏輯（亮哪一顆、點了跳到哪）在 JS/main.js */
.cf-site .feature-scroll__dots{
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-4);
}

.cf-site .feature-scroll__dot{
  display: grid;
  place-items: center;
  width: 24px;
  height: 20px;                               /* 觸控範圍，比視覺上的線條大 */
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
  transition: width 0.25s ease;
}

/* 真正看到的那條線用 ::before 畫，按鈕本身只負責觸控範圍 */
.cf-site .feature-scroll__dot::before{
  content: "";
  display: block;
  width: 100%;
  height: 6px;                                /* ← 線條粗細（藥丸感） */
  border-radius: 999px;
  background-color: var(--color-border);
  transition: background-color 0.25s ease;
}

.cf-site .feature-scroll__dot.is-active{
  width: 46px;                                /* 目前這張的線條變長 */
}

.cf-site .feature-scroll__dot.is-active::before{
  background-color: var(--color-text);
}

.cf-site .feature-card{
  scroll-snap-align: start;
}

/* 圖框：aspect-ratio 先把空間佔住（4:3） */
.cf-site .feature-card__media{
  aspect-ratio: 4 / 3;                        /* ← 圖片比例 */
  margin-bottom: var(--space-3);
  overflow: hidden;
  border-radius: 12px;                        /* ← 圓角 */
  background-color: #eef1f5;                  /* 沒圖時的佔位底色 */
  border: 1px solid var(--color-border);
}

.cf-site .feature-card__media img{
  width: 100%;
  height: 100%;
  object-fit: cover;                          /* 填滿圖框又不變形 */
}

/* 內文：編號掛在左邊，標題和說明對齊同一條線 */
.cf-site .feature-card__body{
  display: grid;
  grid-template-columns: auto 1fr;            /* 編號寬度自動 | 其餘 */
  column-gap: var(--space-2);
}

.cf-site .feature-card__num{
  margin-bottom: 0;
  font-size: var(--fs-small);
  font-weight: 500;
  color: var(--accent);
}

.cf-site .feature-card__title{
  margin-bottom: var(--space-2);
  font-size: 1.375rem;
  font-weight: 400;
  line-height: 1.3;
}

.cf-site .feature-card__text{
  grid-column: 2;                             /* 對齊標題，不對齊編號 */
  margin-bottom: 0;
  font-size: 0.9375rem;
  line-height: 1.6;
  color: var(--color-text-muted);
}

/* --------------------------------------------------------------------------
   5-5. SHOWCASE —— 開頭說明 + 圖文左右交叉的橫列（各產品頁共用）
   跟 5-10 的 .product 不同：這裡不是滿版一螢幕，而是可以連續堆疊很多列。
   左右交叉是自動的（奇數列圖在左、偶數列圖在右），不用手動加 class。
   -------------------------------------------------------------------------- */
.cf-site .showcase{
  /* 背景寫死淺色，文字色也一起寫死（不跟系統深色模式跑） */
  --accent: #2b7fff;
  --color-text: #14181f;
  --color-text-muted: #4b5563;
  --color-border: rgba(0, 0, 0, 0.12);
  padding-block: var(--space-7);
  color: var(--color-text);
  background-color: #f6fafe;
  /* 右下方一圈很淡的藍色光暈 */
  background-image: radial-gradient(
    60% 50% at 78% 62%,
    rgba(120, 180, 255, 0.20) 0%,
    rgba(120, 180, 255, 0) 70%
  );
}

/* 小標只有編號是藍的，後面文字維持灰色 */
.cf-site .showcase .eyebrow span{
  color: var(--accent);
}

.cf-site .showcase__lead{
  max-width: 58ch;   /* ← 限寬，控制斷行位置 */
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* 開頭說明與下方橫列之間的分隔線 */
.cf-site .showcase__intro{
  padding-bottom: var(--space-7);             /* ← 文字到線的距離 */
  border-bottom: 1px solid var(--color-border);
}

/* 橫列容器：控制「開頭說明」到第一列、以及列與列之間的距離 */
.cf-site .showcase__rows{
  display: grid;
  gap: var(--space-7);                        /* ← 列與列的距離 */
  margin-top: var(--space-7);                 /* ← 線到第一列的距離 */
}

/* 單一橫列：手機上下堆疊，平板以上左右並排 → 見第 8 節斷點 */
.cf-site .showcase__row{
  display: grid;
  grid-template-columns: 1fr;
  align-items: center;
  gap: var(--space-5);
}

/* 圖框：先用 aspect-ratio 佔位，圖片放進來不會跳版 */
.cf-site .showcase__media{
  aspect-ratio: 4 / 3;                        /* ← 圖片比例 */
  overflow: hidden;
  border-radius: 16px;                        /* ← 圓角 */
  background-color: #eaeff5;                  /* 沒圖時的佔位底色 */
  border: 1px solid var(--color-border);
}

.cf-site .showcase__media img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cf-site .showcase__title{
  margin-bottom: var(--space-3);
  font-size: clamp(1.75rem, 3.2vw, 2.5rem);   /* 28px → 40px */
  font-weight: 400;
  line-height: 1.15;
  letter-spacing: -0.01em;
}

.cf-site .showcase__text{
  max-width: 44ch;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* 規格數字（可選）：大數字在上、小標籤在下，左側一條藍線。
   跟首頁 .specs 的上下順序相反，所以另外做一組。 */
.cf-site .showcase__stats{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));   /* ← 幾組並排 */
  gap: var(--space-4);
  margin-top: var(--space-5);                 /* ← 離上面段落的距離 */
}

.cf-site .showcase__stat{
  padding-left: var(--space-3);
  border-left: 2px solid var(--accent);       /* ← 左側藍線 */
}

.cf-site .showcase__stat-num{
  margin-bottom: var(--space-1);
  max-width: none;
  font-size: clamp(1.75rem, 3vw, 2.25rem);    /* 28px → 36px */
  font-weight: 400;
  line-height: 1.1;
  color: var(--color-text);
}

.cf-site .showcase__stat-label{
  margin-bottom: 0;
  max-width: none;
  font-size: 0.75rem;                         /* 12px */
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

/* 附註（可選）：段落下方的藍色小字，全大寫、字距拉開。
   哪一列需要就加 <p class="showcase__note">，不需要就不放。 */
.cf-site .showcase__note{
  max-width: none;
  margin-top: var(--space-4);                 /* ← 離上面段落的距離 */
  margin-bottom: 0;
  font-size: 0.8125rem;                       /* 13px */
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent);
}

/* 附註的灰色版（同樣式但不搶眼，用在補充資料而非賣點時） */
.cf-site .showcase__note--muted{
  color: var(--color-text-muted);
}

/* --------------------------------------------------------------------------
   5-6. WIDE VISUAL —— 收在 container 內的 16:9 大圖（各產品頁共用）
   兩種用法，共用同一個 .wide-visual__frame：
   A. 文字壓在圖上（左下角）  → 圖上蓋暗色漸層，白字才讀得到，做法同 5-2 BANNER
   B. 文字在圖上方、圖片純展示 → 圖框加 .wide-visual__frame--plain 取消遮罩
   這一節也包含用法 B 底部會用到的 .spec-list / .spec-notes（兩欄規格清單）。
   （同一區塊底部的四格步驟卡 .steps 在 5-11 卡片小節裡）
   -------------------------------------------------------------------------- */
.cf-site .wide-visual{
  /* 背景寫死淺色，文字色也一起寫死（不跟系統深色模式跑） */
  --accent: #2b7fff;
  --color-text: #14181f;
  --color-text-muted: #4b5563;
  --color-border: rgba(0, 0, 0, 0.12);
  padding-block: var(--space-7);
  background-color: #f6fafe;                  /* 接續 SHOWCASE 的底色 */
  color: var(--color-text);
}

/* 用法 B：圖上方的文字區 */
.cf-site .wide-visual__intro{
  margin-bottom: var(--space-6);              /* ← 文字到圖片的距離 */
}

.cf-site .wide-visual__lead{
  max-width: 58ch;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* 圖框：aspect-ratio 16/9 先把空間佔住，圖片放進來不會跳版 */
.cf-site .wide-visual__frame{
  position: relative;
  display: flex;
  align-items: flex-start;                    /* ← 文字靠上（改 center 就變垂直居中，改 flex-end 回到靠下） */
  aspect-ratio: 16 / 9;                       /* ← 1280 × 720 的比例 */
  overflow: hidden;
  border-radius: 16px;                        /* ← 圓角 */
  background-color: #0b0f16;                  /* 沒圖時的底色 */
}

.cf-site .wide-visual__frame img{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 暗色遮罩：左邊暗、右邊透明（同 .banner::before 的手法）
   只有「文字壓在圖上」時才需要 */
.cf-site .wide-visual__frame::after{
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(0, 0, 0, 0.65) 0%,
    rgba(0, 0, 0, 0.28) 45%,
    rgba(0, 0, 0, 0) 75%
  );
}

/* 用法 B：純展示的圖片，圖上沒有文字 → 取消遮罩，並換成淺色佔位底 */
.cf-site .wide-visual__frame--plain{
  background-color: #eaeff5;
}

.cf-site .wide-visual__frame--plain::after{
  content: none;
}

/* ---- 用法 C：軟體介面截圖展示 ----
   holo-fan.html 的 COOLIFY STUDIO / CUSTOMIZE YOUR VISUALS 兩區在用。
   跟用法 A/B 的差別，都是為了「介面截圖」這個內容特性：

   1. 底色改純白 —— 接在 .tabs-display 後面，用元件預設的 #f6fafe
      會在交界處看到一條淡淡的接縫。

   2. **圖片填滿容器寬度、高度按比例自然長，完全不裁切。**
      用法 A/B 的圖框是固定比例 + object-fit: cover，會把圖片裁到剛好填滿；
      但 app 介面截圖被裁掉就是切掉 UI，使用者看不到完整畫面。

   3. **不限制區塊高度。** 2026-08-26 設計師確認：圖片底部超出畫面、
      需要往下滑才看得到也沒關係。所以這裡刻意不寫 height / min-height，
      區塊高度完全由「標題文字 + 圖片按比例的高度」決定。

   ※ 這一節 2026-08-26 改過三輪，留個脈絡免得以後又繞回去：
     第一輪 固定 3:2 圖框 + object-fit: contain
       → 圓角無效（border-radius 裁的是元素外框，contain 之後圖片縮在框中間，
         四個角落在左右空白裡，裁不到看得見的部分）
     第二輪 限制成剛好一螢幕（height + flex 壓縮）+ max-width/max-height
       → 圓角正常了，但圖片被壓得比較小
     第三輪（現在）圖片填滿容器寬度、高度自然長、不限制區塊高度
       → 圖片最大、圓角正常，代價是區塊會超過一螢幕（設計師說可以） */
.cf-site .wide-visual--shot{
  background-color: #ffffff;
}

/* 圖框只是個容器，高度完全由裡面的圖片決定。
   ※ 沒有圖片時給一個佔位比例，版面才不會塌成一條線。 */
.cf-site .wide-visual--shot .wide-visual__frame{
  display: block;          /* 蓋掉用法 A/B 的 flex（那是給疊在圖上的文字用的） */
  aspect-ratio: 3 / 2;     /* 只在「還沒放圖」時生效，見下面 :has(img) */
}

.cf-site .wide-visual--shot .wide-visual__frame:has(img){
  aspect-ratio: auto;              /* 有圖了就取消佔位比例，高度交給圖片 */
  background-color: transparent;   /* 佔位灰底也拿掉，不然圖片周圍會有灰色 */
}

/* 圖片：填滿容器寬度、高度按比例自然長。
   ※ 只寫 width: 100% 搭配 height: auto，圖片才會等比放大不變形。
   ※ 元素外框剛好等於圖片本身，所以 border-radius 裁得到看得見的四個角
     —— 這是用 object-fit: contain 做不到的（見上面第一輪的說明）。 */
.cf-site .wide-visual--shot .wide-visual__frame img{
  position: static;        /* 蓋掉用法 A/B 的 absolute + inset: 0 */
  width: 100%;
  height: auto;
  border-radius: 16px;     /* ← 圓角大小 */
}

/* 小標不斷行（2026-08-26）。
   元件預設 .wide-visual__lead 有 max-width: 58ch（限制成 58 個字元寬），
   那是為了「一行不要太長、好閱讀」的通用設定，但這兩區的小標比較短，
   被 58ch 切成兩行反而難看。這裡放寬限制讓它一行排完。
   ※ 只改 --shot 這個修飾，不動元件預設值 —— 其他地方用 .wide-visual__lead
     還是會有 58ch 的閱讀寬度保護。
   ※ 螢幕真的很窄時（手機）還是會自然換行，這是應該的，不需要也不該阻止。 */
.cf-site .wide-visual--shot .wide-visual__lead{
  max-width: none;
}

/* 文字置中版本（CUSTOMIZE YOUR VISUALS 在用）。
   .wide-visual__lead 有 max-width，光加 text-align 只會讓文字在那個偏左的
   窄框裡置中、整體看起來還是偏左，所以 margin-inline: auto 那行不能省。 */
.cf-site .wide-visual--center .wide-visual__intro{
  text-align: center;
}

.cf-site .wide-visual--center .wide-visual__lead{
  margin-inline: auto;
}

/* 文字層：疊在遮罩之上，壓在左下角 */
.cf-site .wide-visual__caption{
  --color-text-muted: rgba(255, 255, 255, 0.82);
  position: relative;
  z-index: 1;
  max-width: 34ch;
  padding: var(--space-5);                    /* ← 離圖框邊緣的距離 */
  color: #ffffff;
}

/* 2026-08-25 新增：滿版貼邊版本（跟首頁 banner 同款），holo-fan.html 的
   "BUILT FOR YOUR PC" 在用。跟預設「收在 container 裡」的版本差異：
   - 圖框不設圓角（貼邊的圖通常不用圓角，跟首頁 banner 一致）
   - 圖框直接貼滿整個 section 寬度（HTML 那邊把外層 .container 拿掉了）
   - 文字改成包在圖框「裡面」的 .container 負責水平留白，
     所以 .wide-visual__caption 自己的水平 padding 要拿掉，
     不然會疊加兩層留白、文字位置跟其他區塊對不齊
   - 2026-08-26 補：上下內距也要歸零。元件預設有 padding-block: 64px（那是給
     「收在容器裡」的版本，圖框上下需要留白），但貼邊版的圖框是滿版的，
     再留 64px 就會在圖框上下各露出一條淺藍底色（#f6fafe）的橫帶。 */
.cf-site .wide-visual--bleed{
  padding-block: 0;
}

.cf-site .wide-visual--bleed .wide-visual__frame{
  border-radius: 0;
}

.cf-site .wide-visual--bleed .wide-visual__frame > .container{
  width: 100%;
}

.cf-site .wide-visual--bleed .wide-visual__caption{
  padding-inline: 0;
  /* 文字上緣離圖框頂端的距離。用 vw 而不是固定 px 是刻意的：
     圖框是 aspect-ratio 16/9，高度＝寬度 × 9/16，所以用 vw 當單位時
     「padding 佔圖框高度的比例」在任何螢幕寬度下都固定是 8 / 56.25 ≈ 14%，
     剛好對上設計稿量到的位置。改成固定 px 的話，螢幕一窄比例就跑掉。 */
  padding-block: clamp(var(--space-5), 8vw, 8rem) var(--space-5);
}

/* 標題：設計稿的字級接近第 1 區塊 banner 的大標，所以直接沿用同一個
   --fs-display（40px → 80px），不再用 .wide-visual__title 預設那個
   小一階的 clamp（28px → 44px）——那是給「收在 container 內」的版本用的。 */
.cf-site .wide-visual--bleed .wide-visual__title{
  margin-bottom: var(--space-6);   /* ← 標題到內文的距離（設計稿約 50px） */
  font-size: var(--fs-display);
}

.cf-site .wide-visual--bleed .wide-visual__text{
  font-size: 1.25rem;              /* ← 內文字級，比全站預設大一階 */
}

.cf-site .wide-visual__title{
  margin-bottom: var(--space-3);
  font-size: clamp(1.75rem, 3.4vw, 2.75rem);  /* 28px → 44px */
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -0.01em;
}

.cf-site .wide-visual__text{
  max-width: none;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* ---- 兩欄規格清單（每一項上方一條細線）---- */
.cf-site .spec-list{
  display: grid;
  grid-template-columns: 1fr;                 /* 手機單欄，兩欄化見第 8 節斷點 */
  column-gap: var(--space-6);
  margin-top: var(--space-7);                 /* ← 離上面內容的距離 */
}

/* 線畫在每一項的上緣，所以線只有該欄的寬度（欄與欄之間會斷開） */
.cf-site .spec-list__item{
  padding-block: var(--space-5);              /* ← 每一項的上下間距 */
  border-top: 1px solid var(--card-line);
}

.cf-site .spec-list__title{
  margin-bottom: var(--space-2);
  font-size: 1.5rem;                          /* 24px */
  font-weight: 400;
  line-height: 1.25;
}

.cf-site .spec-list__text{
  max-width: 46ch;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* ---- 底部附註（SYSTEM / CONNECTION）：上方一條全寬的線 ---- */
.cf-site .spec-notes{
  display: grid;
  grid-template-columns: 1fr;                 /* 手機單欄，兩欄化見第 8 節斷點 */
  column-gap: var(--space-6);
  row-gap: var(--space-5);
  margin-top: var(--space-6);
  padding-top: var(--space-6);
  border-top: 1px solid var(--card-line);     /* 這條線跨越兩欄 */
}

.cf-site .spec-notes__label{
  margin-bottom: var(--space-2);
  font-size: 0.75rem;                         /* 12px */
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #98a2b0;                             /* ← 比正文更淺的灰 */
}

.cf-site .spec-notes__text{
  max-width: 52ch;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* --------------------------------------------------------------------------
   5-7. FEATURE SPLIT —— 左邊文字（含標籤列）+ 右邊大圖（各產品頁共用）
   跟 5-5 SHOWCASE 的差別：這裡只有一組、標題是「區塊級」的大標，
   而且文字下方有一列標籤。所以另外做，不硬套 showcase 的橫列。
   -------------------------------------------------------------------------- */
.cf-site .feature-split{
  /* 背景寫死淺色，文字色也一起寫死（不跟系統深色模式跑） */
  --accent: #2b7fff;
  --color-text: #14181f;
  --color-text-muted: #4b5563;
  --color-border: rgba(0, 0, 0, 0.12);
  /* 2026-08-26：滿版一螢幕，同 .product / .industries / .cta / .spec 等。
     內容垂直居中（跟 .spec 那種「靠上排、下面留白」的處理相反）。 */
  display: flex;
  align-items: center;
  min-height: calc(100vh - var(--header-h));
  min-height: calc(100dvh - var(--header-h));
  padding-block: var(--space-7);
  background-color: #f8fafc;
  color: var(--color-text);
}

/* section 變成 flex 之後，.container 會被當成 flex 項目而縮到內容寬度，
   要補 width: 100% 才會撐滿 —— 同 .product / .industries / .cta 的處理。 */
.cf-site .feature-split .container{
  width: 100%;
}

/* 兩欄骨架：手機上下堆疊，平板以上左右並排 → 見第 8 節斷點 */
.cf-site .feature-split__grid{
  display: grid;
  grid-template-columns: 1fr;
  align-items: center;
  gap: var(--space-6);
}

/* 小標只有編號是藍的 */
.cf-site .feature-split .eyebrow span{
  color: var(--accent);
}

/* 大標限寬，讓它斷成兩行 */
.cf-site .feature-split .section__title{
  max-width: 26ch;                  /* ← 標題限寬，數字看實際標題長度調
                                        （原本 16ch 是給更短的舊標題用的） */
}

.cf-site .feature-split__lead{
  max-width: 46ch;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* 標籤列下方那行小字（支援格式說明） */
.cf-site .feature-split__note{
  max-width: none;
  margin-top: var(--space-4);
  margin-bottom: 0;
  font-size: 0.9375rem;
  color: var(--color-text-muted);
}

/* 2026-08-25：新增這三個子元件（副標題／段落列表／小圖示列），給
   holo-fan.html 的 "The Next Generation" 區塊用。跟原本的 .tag-list／
   .feature-split__note 不衝突，同一個 .feature-split 底下可以自由混用。 */

/* 副標題：比 .section__title 小一階，比正文粗，用來分隔「開場說明」
   跟下面的「條列式重點」 */
.cf-site .feature-split__subtitle{
  margin-top: var(--space-6);                 /* ← 跟上一段的距離 */
  margin-bottom: var(--space-3);
  font-size: 1.125rem;
  font-weight: 700;
}

/* 一段「粗體標籤 + 說明」，跟著文字一起流動斷行（不是兩欄對齊表格） */
.cf-site .feature-split__item{
  max-width: none;
  margin-bottom: var(--space-3);              /* ← 段與段的距離 */
  color: var(--color-text-muted);
}

.cf-site .feature-split__item strong{
  color: var(--color-text);
}

/* 四個小方塊圖示，一排排開，超出寬度會自動換行 */
.cf-site .feature-split__icons{
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-5);
}

.cf-site .feature-split__icon{
  width: 56px;                                /* ← 方塊大小 */
  height: 56px;
  padding: 0;
  border-radius: var(--radius);
  background-color: #eaeff5;                  /* 沒圖時的佔位底色，跟圖框同色 */
  /* 縮圖由 JS 依 data-image 塞進 background-image（見 main.js）。
     這裡負責讓它填滿方塊：cover 會裁到剛好填滿，小縮圖裁切沒關係
     （跟大圖不同——大圖是介面截圖不能裁，小方塊只是給人辨識用的縮圖）。 */
  background-size: cover;
  background-position: center;
  border: 1px solid var(--color-border);
  cursor: pointer;
  overflow: hidden;                           /* 讓縮圖不超出圓角 */
}

/* 選中狀態：只用邊框標示，不動底色。
   2026-08-26：原本還會蓋一層淡藍底色，但小方塊改成顯示縮圖之後，
   底色會被縮圖蓋住、根本看不到，所以拿掉那行改成加粗邊框 —— 有縮圖的情況下
   邊框才是唯一看得出「選中」的地方。
   點擊切換的邏輯在 JS/main.js（找 .feature-split__icon 那一段）。 */
.cf-site .feature-split__icon.is-active{
  border-color: var(--accent);
  border-width: 2px;
}

.cf-site .feature-split__icon img{
  width: 100%;
  height: 100%;
  object-fit: contain;                        /* 圖示通常有留白，用 contain 不裁切 */
  padding: var(--space-2);
}

.cf-site .feature-split__cta{
  margin-top: var(--space-5);
}

/* 圖框：aspect-ratio 先把空間佔住 */
.cf-site .feature-split__media{
  aspect-ratio: 1 / 1;                        /* ← 圖片比例（這次設計稿接近正方形，
                                                    跟原本 4:3 不同，改這個數字就好） */
  overflow: hidden;
  border-radius: 16px;                        /* ← 圓角 */
  background-color: #eaeff5;                  /* 沒圖時的佔位底色 */
  background-size: cover;                     /* 點選圖示切換的圖片走這兩行，
                                                   跟下面 img 標籤的 cover 邏輯一致 */
  background-position: center;
  border: 1px solid var(--color-border);
}

.cf-site .feature-split__media img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ---- 共用小元件：藥丸標籤（哪裡要列一排關鍵字都可以用）---- */
.cf-site .tag-list{
  display: flex;
  flex-wrap: wrap;                            /* 放不下會自動換行 */
  gap: var(--space-2);
  margin-top: var(--space-5);
}

.cf-site .tag{
  padding: 0.45em 0.95em;
  border: 1px solid rgba(43, 127, 255, 0.35); /* ← 外框顏色 */
  border-radius: 999px;                       /* 藥丸形 */
  font-size: 0.75rem;                         /* 12px */
  letter-spacing: 0.1em;
  text-transform: uppercase;
  white-space: nowrap;                        /* 標籤內部不斷行 */
  color: var(--accent);
}

/* --------------------------------------------------------------------------
   5-8. PERFORMANCE —— 說明 + 一排大數字規格（各產品頁共用）
   數字之間的直線用「1px 縫隙透出容器底色」做，跟 5-11 的 .steps 同一招：
   欄數怎麼換，直線橫線都會自動出現在對的位置。
   這一區底部的「圖左文右」橫列直接重用 5-5 SHOWCASE 的 .showcase__row，
   所以下面的變數要把 --color-border 也定義好（.showcase__media 的圖框會用到）。
   -------------------------------------------------------------------------- */
.cf-site .performance{
  /* 背景寫死白色，文字色也一起寫死（不跟系統深色模式跑） */
  --accent: #2b7fff;
  --color-text: #14181f;
  --color-text-muted: #4b5563;
  --color-border: rgba(0, 0, 0, 0.12);
  padding-block: var(--space-7);
  background-color: #ffffff;
  color: var(--color-text);
}

/* 小標只有編號是藍的 */
.cf-site .performance .eyebrow span{
  color: var(--accent);
}

.cf-site .performance__lead{
  max-width: 58ch;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* 一排大數字：手機兩欄，平板以上四欄 → 見第 8 節斷點 */
.cf-site .perf-stats{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;                                   /* ← 分隔線粗細 */
  margin-top: var(--space-7);                 /* ← 離上面段落的距離 */
  background-color: var(--card-line);         /* 縫隙露出來就是分隔線 */
}

.cf-site .perf-stat{
  padding: var(--space-2) var(--space-5);     /* ← 決定分隔線的長度（上下內距） */
  background-color: #ffffff;                  /* 蓋住容器底色，只留 1px 縫隙 */
}

/* 第一欄的文字要對齊 container 左緣，所以左邊不留內距 */
.cf-site .perf-stat:first-child{
  padding-left: 0;
}

.cf-site .perf-stat__value{
  max-width: none;
  margin-bottom: 0;
  font-size: clamp(2.25rem, 4.5vw, 3.5rem);   /* 36px → 56px */
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -0.02em;
}

/* 單位用 em 綁在數字上：數字放大縮小，單位自動等比跟著變 */
.cf-site .perf-stat__unit{
  margin-left: 0.12em;
  font-size: 0.42em;
  letter-spacing: 0;
}

.cf-site .perf-stat__label{
  max-width: none;
  margin-top: var(--space-3);
  margin-bottom: 0;
  font-size: 0.75rem;                         /* 12px */
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--accent);
}

/* 數字下方那行補充說明 */
.cf-site .perf-note{
  max-width: none;
  margin-top: var(--space-5);
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* --------------------------------------------------------------------------
   5-9. SPECIFICATION —— 左：分類清單／右：規格內容
   2026-08-26 整節改寫。舊版是「白卡片 + 圓角 + 斑馬紋」的規格表，
   新設計改成「細線分隔 + 左側分類欄」，而且舊版當時已經沒有任何頁面在用
   （`.spec` / `.spec-group` / `.spec-table` 都是被刪掉的舊區塊留下來的），
   所以直接改寫、不另外開一組元件。

   用 <dl> 做：dt 是規格名稱、dd 是值，語意剛好對應「名詞 / 說明」。
   一個 .spec-group ＝一個分類（標題 + 一張表），要幾個分類就疊幾個。

   線的分佈（照設計稿）：分類內容上緣一條、每一列上緣一條、整張表最下面一條。
   所以是 .spec-group 的 border-top ＋ 每列的 border-top ＋ .spec-table 的
   border-bottom 三者組合出來的，不是每列都畫上下兩條（那樣會疊成雙線）。
   -------------------------------------------------------------------------- */
.cf-site .spec{
  --accent: #2b7fff;
  /* 滿版一螢幕，同 .banner / .product / .industries / .cta / .feature-bleed。
     ※ 這一區刻意「不」加 display: flex + align-items: center ——
       其他滿版區塊是把內容垂直居中，但設計稿上規格表是靠上排、
       下面留一大片白，所以維持一般文件流讓內容自然待在頂端就對了。 */
  min-height: calc(100vh - var(--header-h));
  min-height: calc(100dvh - var(--header-h));
  padding-block: var(--space-7);
  background-color: #ffffff;
}

.cf-site .spec__title{
  /* 比 .section__title（最大 48px）再大一階 —— 設計稿上這個標題明顯是
     整頁最大的，量起來約 60px。 */
  margin-bottom: var(--space-7);              /* ← 大標到下面兩欄的距離 */
  font-size: clamp(2.25rem, 6vw, 3.5rem);     /* 36px → 56px */
  font-weight: 400;
  letter-spacing: -0.01em;
}

/* 兩欄骨架：手機上下堆疊，平板以上「左分類、右內容」→ 見第 8 節斷點 */
.cf-site .spec__layout{
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-5);
}

.cf-site .spec__nav{
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

/* 分類項目：左側一條豎線，選中時變成重點色。
   沒選中時線是透明的（保留寬度，選到時文字才不會左右位移）。 */
.cf-site .spec__nav-item{
  padding: 0;
  padding-left: var(--space-3);
  border: 0;
  border-left: 3px solid transparent;
  background: none;
  text-align: left;
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-text-muted);
  cursor: pointer;
}

.cf-site .spec__nav-item.is-active{
  border-left-color: var(--accent);
  color: var(--color-text);
}

/* 一個分類的內容：上緣一條線 */
.cf-site .spec-group{
  padding-top: var(--space-4);                /* ← 線到分類標題的距離 */
  border-top: 1px solid var(--card-line);
}

/* 第二個分類開始，上面要留距離 */
.cf-site .spec-group + .spec-group{
  margin-top: var(--space-6);                 /* ← 分類之間的距離 */
}

.cf-site .spec-group__title{
  margin-bottom: var(--space-4);              /* ← 分類標題到第一列的距離 */
  font-size: 1.75rem;                         /* 28px */
  font-weight: 700;
}

/* 整張表最下面補一條線（每一列只畫上緣，不然列與列之間會疊成雙線） */
.cf-site .spec-table{
  border-bottom: 1px solid var(--card-line);
}

/* 每一列：手機上下堆疊，平板以上「左名稱、右值」→ 見第 8 節斷點 */
.cf-site .spec-table__row{
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-1);
  padding-block: var(--space-4);              /* ← 每列的高度靠這個調 */
  border-top: 1px solid var(--card-line);
}

.cf-site .spec-table dt{
  color: var(--color-text-muted);
}

.cf-site .spec-table dd{
  margin: 0;
  color: var(--color-text);
}

/* 整份規格表最下方的備註 */
.cf-site .spec-note{
  max-width: none;
  margin-top: var(--space-6);                 /* ← 離最後一張表的距離 */
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* --------------------------------------------------------------------------
   5-10. 產品區塊（左文字 + 右圖卡）
   2026-09-03：使用者取消「滿版一螢幕」的要求（Holo Float / Holo Orb 這兩區，
   目前是 .product 唯一的用戶）—— 拿掉 min-height，高度改成跟內容一樣高。
   兩區之間的距離另外在 6-1 節用 #holo-float / #holo-orb 調近，見那邊的說明。
   -------------------------------------------------------------------------- */
.cf-site .product{
  /* 背景寫死白色，所以文字色也一起寫死，不跟系統深色模式跑 */
  --color-text: #14181f;
  --color-text-muted: #5b6472;
  --color-border: rgba(0, 0, 0, 0.14);
  display: flex;
  align-items: center;
  padding-block: var(--space-6);
  background-color: #ffffff;
  color: var(--color-text);
  --accent: #4c9aff;        /* ← 這一區的重點色（跟 Holo Fan 的藍一致） */
}

.cf-site .product .container{
  width: 100%;
}

/* 兩欄骨架：手機單欄（上下堆疊），平板以上左右並排 → 見第 8 節斷點 */
.cf-site .product__grid{
  display: grid;
  grid-template-columns: 1fr;
  align-items: center;
  gap: var(--space-5);
}

/* 小標（業界叫 eyebrow / kicker）：01 · PRODUCT */
.cf-site .eyebrow{
  margin-bottom: var(--gap-eyebrow);   /* 小標到大標的距離：值在第 1 節 */
  font-size: var(--fs-small);
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

/* 大標：第一句深色，第二句用 <span> 轉淺灰（設計稿的兩段色） */
/* 大標配方（產品區塊、區塊標題列共用）：第一句深色，<span> 內轉淺灰 */
.cf-site .product__title,
.cf-site .section__title{
  margin-bottom: var(--space-4);
  font-size: clamp(2rem, 5vw, 3.5rem);
  font-weight: 300;
  line-height: 1.1;
  letter-spacing: -0.02em;
}

.cf-site .product__title span,
.cf-site .section__title span{
  color: var(--color-text-muted);
}

/* 產品區塊的大標：第二句另起一行（span 從行內改成區塊就會自己換行） */
.cf-site .product__title span{
  display: block;
}

.cf-site .product__text{
  /* 2026-09-04 美術檢閱：「your desk.」掛到第三行，要收成兩行。
     46ch = 469px，實測兩行最少需 484px —— 差 15px。
     52ch（約 530px）留餘裕，區塊可用寬 568px 塑得下。
     text-wrap: balance 讓兩行長度平均，不會一行滿一行短。 */
  max-width: 52ch;
  text-wrap: balance;
  color: var(--color-text-muted);
}

/* 產品區塊的按鈕：跟上面內容的距離在這裡調 */
.cf-site .product__cta{
  margin-top: var(--space-6);
}

/* 底部規格條：左側細直線 + 標題/說明 */
.cf-site .specs{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
  margin-top: var(--space-5);
}

/* 左側那條排版用的直線 */
.cf-site .specs > div{
  padding-left: var(--space-3);
  border-left: 2px solid var(--accent);   /* ← 直線顏色 */
}

/* 標籤：Full-color / Wireless / POV Display... */
.cf-site .specs dt{
  font-size: var(--fs-small);
  font-weight: 700;
  color: var(--accent);                   /* ← 標籤顏色 */
}

/* 說明：10-bit HDR projection / USB-C · Wi-Fi 6... */
.cf-site .specs dd{
  margin: 0;
  font-size: var(--fs-small);
  color: var(--color-text-muted);          /* ← 說明維持灰色 */
}

/* 右側圖卡：目前留空，aspect-ratio 先把位置佔好，圖片放進來不會跳版 */
.cf-site .product__visual{
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 24px;
  box-shadow: var(--shadow);
  font-size: var(--fs-small);
  color: var(--color-text-muted);
}

/* 之後放圖：把 <img> 放進 .product__visual，這條讓它填滿又不變形 */
.cf-site .product__visual img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 左右對調版本：加 class product--reverse。
   實際的 order 寫在第 8 節斷點裡（手機是上下堆疊，沒有左右可對調） */


/* 深色變體：只覆寫變數，子元件的顏色會自己跟著翻 */
.cf-site .product--dark{
  --accent: #4c9aff;                              /* 藍色重點 */
  --color-text: #ffffff;                          /* 蓋掉 .product 的深色 */
  --color-text-muted: rgba(255, 255, 255, 0.6);   /* 次要文字轉淺 */
  --color-border: rgba(255, 255, 255, 0.18);      /* 分隔線轉淺 */
  --color-surface: transparent;                   /* 圖卡底色拿掉 */
  background-color: #080c12;
  color: #ffffff;
}

/* 深色底上圖卡不用外框和陰影 */
.cf-site .product--dark .product__visual{
  border-color: transparent;
  box-shadow: none;
  border-radius: 4px;
}

/* 規格標籤轉藍色 */
.cf-site .product--dark .specs dt{
  color: var(--accent);
}

/* NEW 標籤（藥丸） */
.cf-site .badge{
  display: inline-block;
  margin-left: var(--space-2);
  padding: 0.15em 0.55em;
  border-radius: 999px;
  background-color: var(--accent, var(--color-primary));
  color: #ffffff;
  font-size: 0.6875rem;
  letter-spacing: 0.08em;
  vertical-align: 0.1em;
}

/* --------------------------------------------------------------------------
   5-11. 卡片（各種卡片變體都放這裡）
   排版一律重用第 4 節的 .grid--3：手機 1 欄 → md 2 欄 → lg 3 欄（見第 8 節斷點）
   ├─ .card            基礎卡（白底、細框、淡陰影）
   ├─ .card--industry  首頁產業卡（漸層底 + 圓形箭頭，整張可點）
   ├─ .info-card       純文字說明卡（藍色小標 + 標題 + 說明，不可點）
   └─ .steps           連成一整塊的步驟卡（中間用細線分隔）
   -------------------------------------------------------------------------- */
.cf-site .card{
  padding: var(--space-4);
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

/* ---- 純文字說明卡（SOLO / SYNC / FUSION 那三張）---- */
.cf-site .info-cards{
  padding-bottom: var(--space-7);
  background-color: #f6fafe;                  /* 跟上面 WIDE VISUAL 同底色，讀起來是同一區 */
}

.cf-site .info-card{
  /* 背景寫死淺色，文字色也一起寫死（不跟系統深色模式跑） */
  --accent: #2b7fff;
  --color-text: #14181f;
  --color-text-muted: #4b5563;
  padding: var(--space-5);
  padding-bottom: var(--space-7);             /* ← 下方刻意留多一點空白 */
  background-color: #ffffff;
  border: 1px solid var(--card-line);         /* 值在第 1 節，與 .steps 共用 */
  border-radius: var(--card-radius);
  color: var(--color-text);
}

.cf-site .info-card__label{
  margin-bottom: var(--space-4);              /* ← 小標到標題的距離 */
  font-size: 0.75rem;                         /* 12px */
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent);
}

.cf-site .info-card__title{
  margin-bottom: var(--space-3);
  font-size: 1.375rem;                        /* 22px */
  font-weight: 400;
  line-height: 1.3;
}

.cf-site .info-card__text{
  max-width: none;
  margin-bottom: 0;
  font-size: 0.9375rem;                       /* 15px */
  line-height: 1.6;
  color: var(--color-text-muted);
}

/* ---- 步驟卡（STEP 01 ~ 04）----
   四格連成一整塊，中間有細線分隔。做法：容器用 1px 的 gap，
   容器底色設成線的顏色，每一格自己蓋白底 —— 縫隙就露出成分隔線。
   這樣不管幾欄、斷點怎麼換，橫線直線都會自動正確。 */
.cf-site .steps{
  display: grid;
  grid-template-columns: 1fr;                 /* 手機單欄，欄數變化見第 8 節斷點 */
  gap: 1px;                                   /* ← 分隔線粗細 */
  margin-top: var(--space-6);                 /* ← 離上面圖片的距離 */
  /* 外框、分隔線、圓角都吃第 1 節的卡片變數，跟 .info-card 保持一致 */
  background-color: var(--card-line);         /* 縫隙露出來就是分隔線 */
  border: 1px solid var(--card-line);
  border-radius: var(--card-radius);
  overflow: hidden;                           /* 讓分隔線不超出圓角 */
}

.cf-site .steps__item{
  padding: var(--space-4) var(--space-5);     /* ← 上下 24px、左右 32px */
  background-color: #ffffff;                  /* 蓋住容器底色，只留 1px 縫隙 */
}

.cf-site .steps__label{
  margin-bottom: var(--space-3);
  font-size: 0.75rem;                         /* 12px */
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--accent);
}

.cf-site .steps__title{
  margin-bottom: var(--space-2);
  font-size: 1.5rem;                          /* 24px */
  font-weight: 400;
  line-height: 1.25;
}

.cf-site .steps__text{
  max-width: none;
  margin-bottom: 0;
  font-size: 0.9375rem;                       /* 15px */
  line-height: 1.6;
  color: var(--color-text-muted);
}

/* 步驟卡下方那行流程文字：UPLOAD → PREVIEW → ARRANGE → PLAY */
.cf-site .steps__flow{
  max-width: none;
  margin-top: var(--space-5);
  margin-bottom: 0;
  font-size: 0.75rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

/* 產業區塊外框：淺藍漸層底 + 這一區的重點色
   背景寫死淺色，所以文字色也要寫死，不能跟著系統深色模式跑 */
.cf-site .industries{
  --accent: #2b7fff;
  --color-text: #10233c;
  --color-text-muted: #4a5b72;
  --color-border: rgba(16, 42, 74, 0.12);
  display: flex;
  align-items: center;
  /* 滿版一螢幕，跟 .banner / .product / .cta 同一個算法。
     兩行都要寫：第一行是舊瀏覽器的 fallback，第二行的 dvh 應對手機網址列。
     必須扣掉 header 高度，否則會多出一小截捲軸。
     內容比一螢幕矮的時候，靠上面的 align-items: center 垂直置中。 */
  min-height: calc(100vh - var(--header-h));
  min-height: calc(100dvh - var(--header-h));
  padding-block: var(--space-6);
  background: linear-gradient(180deg, #eef6ff 0%, #e3eefb 100%);
  color: var(--color-text);
}

.cf-site .industries .container{
  width: 100%;
}

/* 標題區（2026-09-02 改版）：小標 → 大標 → 說明 → 按鈕，單欄靠左堆疊。
   舊的 .section__head 是「左標題、右連結」的兩端對齊，設計稿不用了。 */
.cf-site .industries__head{
  margin-bottom: var(--space-6);   /* 48px：標題區 → 卡片 */
}

/* 小標：設計稿是「首字大寫」，跟共用 .eyebrow 的全大寫不一樣
   （跟前面幾區同樣的處理）。顏色直接吃這一區的 --accent。 */
.cf-site .industries .eyebrow{
  text-transform: none;
  letter-spacing: 0;
  color: var(--accent);
}

/* 大標到說明文字的距離。共用 .section__title 是 24px，設計稿貼得更近。 */
.cf-site .industries__head .section__title{
  margin-bottom: var(--space-2);   /* 8px */
}

/* 說明文字：一段長句，限制寬度避免在寬螢幕上拉成一整條難讀 */
.cf-site .industries__lead{
  max-width: 62ch;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* 按鈕：外觀走共用的 .btn--pill（5-11 節），這裡只管跟說明文字的距離 */
.cf-site .industries__head .btn{
  margin-top: var(--space-4);      /* 24px */
}

/* 標題列：手機上下堆疊，寬螢幕左右兩端對齊 */
.cf-site .section__head{
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  justify-content: space-between;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

.cf-site .section__head .section__title{
  margin-bottom: 0;
}

/* 全站所有 .section__title 的最終字級 —— 注意選擇器沒有限定 .industries，
   所以這是「全站覆寫」而不是只改產業區：首頁 CTA、產品頁的 Showcase /
   Feature Split / Performance / Spec 的大標全部吃這一條（蓋掉 5-10 的共用值）。
   要讓某一區不一樣，另外寫 `.那一區 .section__title`，不要動這一條。 */
.cf-site .section__title{
  font-size: clamp(2rem, 5.5vw, 3.5rem); /* 2026-09-04：48 → 56px（跟產品大標同級） */
  font-weight: 300;                      /* ← 字重：300 細體 / 400 一般 / 700 粗體 */
}

.cf-site .section__link{
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--color-text);
  text-decoration: none;
  white-space: nowrap;
}

.cf-site .section__link:hover{
  color: var(--accent);
}

/* 產業卡：蓋掉 .card 的底色和圓角 */
.cf-site .card--industry{
  display: flex;
  flex-direction: column;
  padding: var(--space-4);
  border-radius: 16px;
  background: linear-gradient(160deg, rgba(255, 255, 255, 0.92), rgba(228, 240, 255, 0.7));
  border: 1px solid rgba(255, 255, 255, 0.9);
  box-shadow: 0 1px 2px rgba(16, 42, 74, 0.04), 0 8px 24px rgba(16, 42, 74, 0.06);
  color: inherit;
  text-decoration: none;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.cf-site .card--industry:hover{
  transform: translateY(-2px);
  box-shadow: 0 2px 4px rgba(16, 42, 74, 0.06), 0 14px 32px rgba(16, 42, 74, 0.1);
}

/* 卡片標題（6 張一起）—— 有自己的規則，改這裡不會動到其他區塊的 h3 */
.cf-site .card--industry h3{
  margin-bottom: var(--space-5);
  font-size: 1.175rem;   /* ← 字大小 */
  line-height: 1.3;      /* ← 行距 */
  font-weight: 400;      /* ← 字重：設計稿不是粗體 */
}

/* 卡片編號：2026-09-02 改版後跟標題排在同一行（舊版是自己一列、右邊還有箭頭）。
   它在 <h3> 裡面，所以字級跟著標題走，只換顏色。 */
.cf-site .card__num{
  margin-right: var(--space-1);   /* 編號與名稱之間的距離 */
  color: #9dc0e8;                 /* ← 編號顏色（比 --accent 淺，設計稿的樣子） */
}

/* 卡片說明文字（6 張一起）
   用 > 只抓直接子元素，不會影響 .card__top 裡的編號 */
.cf-site .card--industry > p{
  margin-bottom: 0;
  font-size: 0.9375rem;  /* ← 字大小 */
  line-height: 1.6;      /* ← 行距 */
  color: var(--color-text-muted);
}

/* 卡片頂端：編號靠左、箭頭靠右 */
.cf-site .card__top{
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  margin-bottom: var(--space-8);
}

.cf-site .card__top .eyebrow{
  margin-bottom: 0;
  color: var(--accent);   /* 卡片裡的編號轉藍 */
}

/* 圓形箭頭 */
.cf-site .card__arrow{
  flex-shrink: 0;         /* 不准被文字擠扁 */
  display: grid;
  place-items: center;    /* grid 的置中捷徑：水平垂直一起 */
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid rgba(16, 42, 74, 0.12);
  background-color: rgba(255, 255, 255, 0.75);
  color: var(--accent);
  transition: transform 0.2s ease, background-color 0.2s ease;
}

.cf-site .card--industry:hover .card__arrow{
  transform: translateX(3px);
  background-color: #ffffff;
}


/* 共用：按鈕（banner / 各區塊都可用） */
.cf-site .btn{
  /* 2026-09-04 美術檢閱：字級改 14px，字重 semibold。 */
  font-size: 14px;
  font-weight: 600;

  display: inline-block;
  padding: var(--space-2) var(--space-4);
  min-height: 44px; /* 觸控目標最小尺寸 */
  line-height: 28px;
  border: 1px solid transparent;
  border-radius: var(--radius);
  background-color: var(--color-primary);
  color: #fff;
  text-decoration: none;
  text-align: center;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

/* 【目前未使用】新版 header 沒有 CTA 按鈕（設計稿上第四項 Where to buy 就是
   一個普通導覽連結）。CSS 先留著不刪，之後若要把按鈕加回來直接套 class 就好。 */
.cf-site .btn--header{
  background-color: #000000;
  color: #ffffff;
  height: 32px;
  min-height: unset;     /* 取消 .btn 的 min-height: 44px */
  padding: 0 1rem;
  font-size: 0.75rem;
  border-radius: 20px;
  margin-left: auto;
  display: flex;
  align-items: center;
  justify-content: center;
}


.cf-site .btn--header:hover{
  background-color: #1a1a1a;
}

/* 通用按鈕變體：黑色藥丸 / 白底外框藥丸（CTA 區塊用） */
.cf-site .btn--dark{
  padding-inline: var(--space-5);
  border-radius: 999px;
  background-color: #14181f;
  color: #ffffff;
}

.cf-site .btn--dark:hover{
  background-color: #2b323f;
  color: #ffffff;
}

.cf-site .btn--ghost{
  padding-inline: var(--space-5);
  border-radius: 999px;
  background-color: transparent;
  border-color: var(--color-border);
  color: var(--color-text);
}

.cf-site .btn--ghost:hover{
  background-color: rgba(0, 0, 0, 0.04);
  color: var(--color-text);
}

/* 淺藍小藥丸（2026-09-02 新增）——首頁 HOLO FLOAT / HOLO ORB / HOLO FAN 三區共用。
   ※ 比共用 .btn 小一號：min-height 從 44px 降到 36px。44px 是「手指觸控目標」的
     建議下限，不是排版需求，縮小的代價是手機上比較難點準（設計稿要求）。
   ※ 底色淺、文字深 —— 淺藍底配白字看不清楚，這是實際踩過的。 */
.cf-site .btn--pill{
  min-height: 36px;
  line-height: 36px;          /* 要跟 min-height 一致，文字才會垂直置中 */
  padding: 0 var(--space-4);  /* 左右內距 24px */
  letter-spacing: 0.08em;
  border-radius: 999px;
  background-color: #b9d7f7;  /* 按鈕底色 */
  color: #14181f;             /* 按鈕文字 */
}

.cf-site .btn--pill:hover{
  background-color: #a3c9f2;
  color: #14181f;             /* 不寫的話會被 .btn--dark:hover 之類的規則帶走 */
}

/* --------------------------------------------------------------------------
   5-12. CTA（聯絡／行動呼籲）—— 文字置中，滿版一螢幕
   背景寫死淺色，所以文字色也一起寫死，不跟系統深色模式跑
   -------------------------------------------------------------------------- */
.cf-site .cta{
  --color-text: #14181f;
  --color-text-muted: #5b6472;
  --color-border: rgba(0, 0, 0, 0.16);
  display: flex;
  align-items: center;
  min-height: calc(100vh - var(--header-h));
  min-height: calc(100dvh - var(--header-h));
  padding-block: var(--space-6);
  background-color: #ffffff;
  color: var(--color-text);
  text-align: center;
}

.cf-site .cta .container{
  width: 100%;
}

/* CTA 的大標：兩句各自一行（span 從行內改成區塊就會自己換行） */
.cf-site .cta .section__title span{
  display: block;
}

/* 置中的段落：p 有 max-width，要靠 auto 邊距才會真的居中 */
.cf-site .cta p{
  margin-inline: auto;
  max-width: 46ch;
  color: var(--color-text-muted);
}

/* 按鈕列：手機會自動換行 */
.cf-site .cta__actions{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-3);
  margin-top: var(--space-5);
}

/* --------------------------------------------------------------------------
   5-13. FOOTER
   -------------------------------------------------------------------------- */
/* ★ 2026-09-03 移除。這條舊 footer 樣式的選擇器跟 chrome.css 的新版完全一樣，
   而 coolify.css 在 chrome.css 之後載入，所以會蓋採新版 ——
   症狀是首頁和產品頁的 footer 文字變灰黑、置中、字級偏小，
   其他頁面卻正常（那些頁面不載入 coolify.css）。
   footer 樣式現在只有 chrome.css 一個來源。 */

/* --------------------------------------------------------------------------
   5-14. TABS DISPLAY —— 分頁籤切換（SOLO／SYNC／FUSION，holo-fan.html 用）
   2026-08-25 新增，放在第 5 節最後面，不影響前面 5-1～5-13 的編號。

   三個分頁籤、三張圖片、三組標題+說明是「同一組狀態」，只是分開寫在三個
   地方（tabs、.tabs-display__media、.tabs-display__caption），JS 負責讓
   三邊同步。原理跟輪播、Header 下拉一樣：畫面上永遠只有一個 is-active，
   JS 只負責搬這個 class，不負責畫面長什麼樣子（那是 CSS 的事）。
   -------------------------------------------------------------------------- */
.cf-site .tabs-display{
  /* 2026-08-26（第二次調整）：整區改成深底白字、滿版一螢幕。
     深底上的顏色都要跟著翻，所以這裡把幾個變數重新指定，
     底下的 .eyebrow / 分頁籤 / 說明文字都寫 var(...)，會自動跟著變。 */
  --accent: #4d9bff;                          /* ← 深底上的藍，比淺底版本亮一階
                                                  （小標文字＋選中的分頁籤底線都吃這個） */
  --color-text: #ffffff;
  --color-text-muted: rgba(255, 255, 255, 0.78);
  --color-border: rgba(255, 255, 255, 0.4);   /* ← 未選中的分頁籤底線 */

  /* 滿版一螢幕，同 .banner / .product / .spec / .feature-bleed */
  min-height: calc(100vh - var(--header-h));
  min-height: calc(100dvh - var(--header-h));

  /* flex 直排：上面「標題＋分頁籤」用自然高度，下面圖片區吃掉剩下的所有高度
     （見 .tabs-display__viewport 的 flex: 1）。這樣不管螢幕多高，
     圖片都會剛好填到底，不會留一條白邊或超出去。 */
  display: flex;
  flex-direction: column;

  /* 只留上方內距 —— 圖片要一路貼到螢幕底部，所以下方不留 */
  padding-block: var(--space-7) 0;
  background-color: #0b0f16;                   /* 同 .banner / .wide-visual__frame 的深底 */
  color: var(--color-text);
}

.cf-site .tabs-display__head{
  max-width: 60ch;
  margin-inline: auto;
  text-align: center;
}

/* 這個小標整段都是重點色，跟 Showcase／Performance 那種「只有編號變色」
   不一樣（那些是靠 .eyebrow span 只挑一部分變色），這裡整句都是同一個顏色，
   所以直接蓋掉 .eyebrow 的顏色，不用另外包 <span> */
.cf-site .tabs-display .eyebrow{
  color: var(--accent);
}

.cf-site .tabs-display__lead{
  margin-inline: auto;
  color: var(--color-text-muted);
}

/* 分頁籤：文字顏色不變，只有底線變色標示選中／未選中 */
.cf-site .tabs-display__tabs{
  display: flex;
  justify-content: center;
  gap: var(--space-6);
  margin-top: var(--space-6);
}

.cf-site .tabs-display__tab{
  padding: 0;
  padding-bottom: var(--space-2);
  border: 0;
  border-bottom: 2px solid var(--color-border);   /* ← 未選中的底線顏色 */
  background: none;
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--color-text);
  cursor: pointer;
}

.cf-site .tabs-display__tab.is-active{
  border-bottom-color: var(--accent);             /* ← 選中的底線顏色 */
}

/* 圖片區：三張圖疊在同一個位置（position: absolute），用 display 決定
   顯示哪一張。外層 .tabs-display__viewport 給一個固定比例撐出高度——
   三張圖都是 absolute 之後不會自己撐出高度，一定要有人負責這件事。 */
.cf-site .tabs-display__viewport{
  position: relative;                 /* 圖片、箭頭、底部文字的定位基準 */
  /* 2026-08-26（第二次調整）：改成「吃掉區塊剩下的所有高度」。
     原本是 aspect-ratio: 5/2 的固定比例（那時候整區不是滿版的），
     現在整區滿版一螢幕，圖片高度改由「螢幕高 - 標題區高度」決定，
     所以固定比例要取消，不然會跟 flex 的高度打架。 */
  flex: 1;
  min-height: 0;                      /* flex 子元素預設 min-height: auto，
                                          不歸零的話螢幕變矮時它不肯縮、會超出畫面 */
  margin-top: var(--space-6);         /* ← 分頁籤到圖片的距離 */
  background-color: #0b0f16;          /* 沒有任何一張圖片時的底色（跟區塊同色，
                                          不像之前用淺灰 #d9d9d9 會在深底上很突兀） */
  overflow: hidden;
  /* 滿版貼邊、直角：不設 border-radius，也不包在 .container 裡（見 HTML） */
}

.cf-site .tabs-display__media{
  position: absolute;
  inset: 0;
  display: none;
}

.cf-site .tabs-display__media.is-active{
  display: block;
}

/* 圖片和影片都支援（2026-08-26 補上 video）——這一區實際放的是 MP4，
   但保留 img 讓兩種內容可以混用，之後某一個分頁想換回圖片不用改 CSS。
   object-fit: cover 讓內容填滿框又不變形，超出的部分裁掉。 */
.cf-site .tabs-display__media img,
.cf-site .tabs-display__media video{
  width: 100%;
  height: 100%;
  object-fit: cover;

  /* ↓↓↓ 微調「影片在框裡露出哪一部分」就改這一行 ↓↓↓
     容器、版面、影片大小都不會變，只有「裁掉之後保留哪一塊」會變。

     寫法是「水平 垂直」兩個值，可以用關鍵字或百分比：
       center center   ← 預設，正中間
       center top      往上移（露出影片上半部）
       center bottom   往下移（露出影片下半部）
       left center     往左移
       right center    往右移
       center 30%      垂直方向微調 —— 0% 最上、50% 正中、100% 最下
       40% 60%         兩個方向同時微調

     百分比比關鍵字好用，因為可以慢慢試：想往上一點就從 50% 改 40%、35%…
     （方向不直覺的地方：數字「變小」= 露出更上面的部分） */
  object-position: center 80%;
}

/* 左右箭頭：跟輪播（.carousel__arrow）同一套白底圓形＋純 CSS 三角形，
   全站已經用過兩次，這裡沿用第三次，風格統一。
   設計稿上是淺藍色圓圈，先照現有元件的顏色做，如果淺藍是刻意設計的，
   之後只要改這裡的 background-color / border-color 兩個值就好。 */
.cf-site .tabs-display__arrow{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background-color: #ffffff;
  box-shadow: var(--shadow);
  cursor: pointer;
}

.cf-site .tabs-display__arrow::before{
  content: "";
  width: 0;
  height: 0;
  margin-left: 2px;
  border-style: solid;
  border-width: 6px 0 6px 10px;
  border-color: transparent transparent transparent #14181f;
}

.cf-site .tabs-display__arrow--prev{
  left: var(--space-4);
}

.cf-site .tabs-display__arrow--prev::before{
  margin-left: -2px;
  margin-right: 2px;
  transform: rotate(180deg);
}

.cf-site .tabs-display__arrow--next{
  right: var(--space-4);
}

/* 圖片下方的標題＋說明：跟圖片一樣用 display 切換，同一時間只顯示一組。
   文字疊在圖片上、靠底部置中。外層這個容器負責定位，
   裡面三組 .tabs-display__caption 只負責顯示／隱藏。

   2026-08-26：整區改深底之後，文字色自動就是白色了（吃區塊上面重新指定的
   --color-text / --color-text-muted），設計稿上也是白字。
   先前那個「深色字疊在深色圖上會看不清楚」的隱憂就不存在了。 */
.cf-site .tabs-display__captions{
  position: absolute;
  left: 0;
  right: 0;
  z-index: 1;
  padding-inline: var(--gutter);      /* 手機上文字不要貼到螢幕邊 */

  /* ↓↓↓ 微調三組說明文字的上下位置就改這一行 ↓↓↓
     這是「離圖片底部的距離」，所以：
       數字變大 → 文字往上移
       數字變小 → 文字往下移

     直接寫 px 最好調（想上一點就 64px → 80px → 96px 慢慢試）：
       32px    很貼底
       48px    目前的值（＝var(--space-6)）
       80px    往上一些
       120px   明顯往上
       25%     用百分比＝圖片高度的 25%，螢幕高度變化時比例會跟著走

     ※ SOLO / SYNC / FUSION 三組文字共用這一個定位容器，
       所以改這裡三組會一起動（它們本來就該在同一個位置，
       切換時文字才不會上下跳）。 */
  bottom: 26px;
}

.cf-site .tabs-display__caption{
  display: none;
  text-align: center;
}

.cf-site .tabs-display__caption.is-active{
  display: block;
}

.cf-site .tabs-display__caption-title{
  margin-bottom: var(--space-1);
  font-size: 1.125rem;
  font-weight: 700;
}

.cf-site .tabs-display__caption-text{
  max-width: 46ch;
  margin-inline: auto;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* --------------------------------------------------------------------------
   5-15. FEATURE DUO —— 兩欄並排，每欄「細線＋標題＋說明＋大圖」
   2026-08-26 新增，holo-fan.html 的 POWERFUL AIRFLOW / QUIETER OPERATION 在用。

   版面本身不自己寫，直接用第 4 節的 .grid--2（手機 1 欄 → md 以上 2 欄），
   這裡只負責欄位「裡面」長什麼樣子。要變三欄就把 HTML 的 .grid--2 換成
   .grid--3，這一節完全不用改。

   ※ 深色模式覆寫已經在 2026-08-26 整段刪掉了，所以這一節不用像早期那些區塊
     一樣寫死 --color-text / --color-text-muted（那條鐵律已經不適用）。
   -------------------------------------------------------------------------- */
.cf-site .feature-duo{
  padding-block: var(--space-7);
  background-color: #ffffff;        /* 接續上一區的白底，中間不留接縫 */
}

/* .grid--2 預設的 gap 是 24px，設計稿量到約 32px，這裡加大一點 */
.cf-site .feature-duo__grid{
  gap: var(--space-5);              /* ← 兩欄之間的距離 */
}

/* 標題上方那條細線：畫在每一欄自己的上緣，所以線只有該欄的寬度、
   欄與欄之間會斷開（跟設計稿一致）。 */
.cf-site .feature-duo__item{
  padding-top: var(--space-4);      /* ← 線到標題的距離 */
  border-top: 1px solid var(--card-line);
  /* flex 直排，搭配下面 .feature-duo__media 的 margin-top: auto，
     讓兩欄的圖片上緣一定對齊 —— 不然文字行數不一樣時（例如左欄一行、
     右欄兩行），圖片會被文字推成一高一低。設計稿上兩張圖是齊平的。 */
  display: flex;
  flex-direction: column;
}

.cf-site .feature-duo__title{
  margin-bottom: var(--space-2);    /* ← 標題到說明文字的距離 */
  font-size: clamp(1.375rem, 2.2vw, 1.75rem);   /* 22px → 28px（照設計稿估的） */
  font-weight: 700;
}

/* 說明文字：字級不另外設，用全站預設的 --fs-body（最大 17px），
   量設計稿的結果剛好對得上。 */
.cf-site .feature-duo__text{
  max-width: none;
  margin-bottom: var(--space-5);    /* ← 說明文字到圖片的距離 */
  color: var(--color-text-muted);
}

/* 圖框：直角、無圓角（照設計稿）。這裡的圖是產品照，用 cover 裁到統一比例
   是刻意的——兩欄的圖高度要一致畫面才整齊；跟上面 COOLIFY STUDIO 那種
   「介面截圖不能裁」的情況不一樣。 */
.cf-site .feature-duo__media{
  aspect-ratio: 8 / 7;              /* ← 圖片比例（照設計稿估的，約 1.13:1） */
  margin-top: auto;                 /* 推到欄位底部 → 兩欄圖片上緣自動對齊
                                        （grid 讓同一列的欄位等高，圖片又同寬同比例，
                                        所以「底部對齊」等於「上緣也對齊」） */
  overflow: hidden;
  background-color: #d9d9d9;        /* 沒圖時的佔位底色 */
}

.cf-site .feature-duo__media img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* --------------------------------------------------------------------------
   5-16. FEATURE BLEED —— 左圖出血到螢幕左緣 + 右文字
   2026-08-26 新增，holo-fan.html 的 MODULAR DESIGN 在用。

   跟 5-7 FEATURE SPLIT 的差別：FEATURE SPLIT 兩欄都收在 .container 裡、
   左右都有留白；這裡的圖是「出血」的，直接貼到螢幕左邊沒有留白，
   所以整個 section 不能包 .container（見 HTML）。

   右邊文字的右緣仍然要跟其他區塊的內容對齊，靠 --edge 這個算式做到：
   它算出「.container 的內容右緣到螢幕右緣的距離」，拿來當 padding-right。
   （同一個算式 5-4 FEATURE SCROLL 也在用。）
   -------------------------------------------------------------------------- */
.cf-site .feature-bleed{
  --edge: max(
    var(--gutter),
    (100vw - var(--container-max)) / 2 + var(--gutter)
  );
  display: grid;
  grid-template-columns: 1fr;       /* 手機：圖上、文字下 */
  /* 滿版一螢幕，跟 .banner / .product / .industries / .cta 同一個算法。
     兩行都要寫：100vh 是舊瀏覽器的 fallback，100dvh 是手機網址列的正確高度
     （會蓋掉上一行）。扣掉 --header-h 是因為 header 是 sticky 的，
     不扣就會多出一小截捲軸。 */
  min-height: calc(100vh - var(--header-h));
  min-height: calc(100dvh - var(--header-h));
  background-color: #ffffff;
}

.cf-site .feature-bleed__media{
  aspect-ratio: 4 / 3;              /* ← 圖片比例（照設計稿估的） */
  overflow: hidden;
  background-color: #d9d9d9;        /* 沒圖時的佔位底色 */
}

.cf-site .feature-bleed__media img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 手機（單欄）時文字左右都要有留白；平板以上左邊改成跟圖片的間距，
   右邊改成 --edge 對齊 container → 見第 8 節斷點 */
.cf-site .feature-bleed__body{
  padding: var(--space-6) var(--gutter);
}

.cf-site .feature-bleed__subtitle{
  max-width: none;
  margin-bottom: var(--space-4);    /* ← 副標到內文的距離 */
  font-size: 1.375rem;              /* 22px */
  font-weight: 700;
}

.cf-site .feature-bleed__text{
  max-width: 46ch;
  margin-bottom: 0;
  color: var(--color-text-muted);
}

/* ==========================================================================
   6. 頁面專屬樣式
   --------------------------------------------------------------------------
   只有單一頁面會用到的規則放這裡，每一頁一個 6-N 小節。
   規則：
     1. 新增一頁 → 在最後面加一個新的 6-N 小節，標明對應的 .html 檔名
     2. 寫在這裡的東西「只有那一頁」會用到；若後來第二頁也要用，
        就往上搬到第 5 節，並在這裡刪掉
     3. 這一節在第 5 節之後 → 可以覆寫共用元件（例如只換底圖）
        但在第 8 節斷點之前 → RWD 仍由斷點統一管理
   ========================================================================== */

/* --------------------------------------------------------------------------
   6-1. index.html（首頁）
   -------------------------------------------------------------------------- */
/* 第 2 區 HOLO FLOAT 改版（2026-09-02 依設計稿）
   骨架仍然是 5-10 的 .product，這裡只覆寫「跟第 3 區 HOLO FAN 不一樣」的部分。
   ※ 每一條都限定在 .product--new 底下，所以第 3 區完全不受影響。
   ※ 之後第 3 區若也改成同一個樣子，把這一整段往上搬到 5-10 改成共用寫法。 */

.cf-site .product--new{
  /* 小標的藍色，HOLO FLOAT 和 HOLO ORB 兩區共用，改這行兩區一起變。
     這兩區是白底，所以要用「深一點的藍」才讀得清楚；
     HOLO FAN 是深色底圖，用的是另一個淺藍 #bce1ff（見下面 .banner--fan）。
     按鈕的顏色不在這裡 —— 三區共用 .btn--pill（5-11 節）。 */
  --new-blue: #1a73e8;
}

/* 小標：設計稿是「首字大寫 + 淺藍 + 兩行」，跟共用 .eyebrow 的
   「全大寫 + 灰色 + 字距 0.18em」不一樣。共用那條全站都在用，不能動，
   所以在這裡覆寫成這一區要的樣子。 */
.cf-site .product--new .eyebrow{
  text-transform: none;          /* 取消共用 .eyebrow 的全大寫 */
  letter-spacing: 0;             /* 共用的 0.18em 是為全大寫設計的，首字大寫用不到 */
  color: var(--new-blue);

  /* 2026-09-04 美術檢閱：19px 太大，改 16px；字重 medium。
     ※ 副標 .product__sub 是 18px，要比這個眉毛大 —— 改這裡記得一起看那邊。 */
  font-size: calc(var(--fs-small) + 2px);   /* 14 → 16px */
  font-weight: 500;                          /* medium */
  line-height: 1.35;
  white-space: nowrap;
}

/* 大標：副標從「大標的第二句」變成獨立一行，所以間距要收窄
   （共用的 --space-4 是 24px，兩句大標之間才需要那麼開） */
.cf-site .product--new .product__title{
  margin-bottom: var(--space-2);   /* 8px：大標 → 副標 */
}

/* 副標：全大寫 + 粗體 + 深色的一行小字。
   跟舊的 .product__title span 完全不同（那個是「大標第二句」的配方：
   跟大標同字級、淺灰、font-weight 300），所以另外開一個元素而不是沿用。 */
.cf-site .product--new .product__sub{
  margin-bottom: var(--space-3);   /* 16px：副標 → 內文 */

  /* 2026-09-04 美術檢閱：18px，粗體維持。
     ※ 要比上面的眉毛（16px）大一階，這是設計師指定的層級關係。 */
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 0.01em;
  color: var(--color-text);
}

/* 按鈕：外觀已經抽成全站共用的 .btn--pill（5-11 節，三個區塊共用），
   這裡只管「內文到按鈕的距離」這件跟版面有關的事。 */
.cf-site .product--new .product__cta{
  margin-top: var(--space-5);      /* 32px：內文 → 按鈕（共用 .product__cta 是 48px） */
}

/* 2026-09-03：Holo Float 跟 Holo Orb 兩區之間的距離調近（使用者指示）。
   兩區都吃共用 .product 的 padding-block（上下各 48px），拿掉滿版高度限制後，
   中間的視覺間距＝ Float 的下內距 48px + Orb 的上內距 48px＝96px。
   這裡只改「面對面」的那兩側，Float 上緣（接 Banner）、Orb 下緣（接 Holo Fan）
   維持共用值不動——只調中間，不影響上下相鄰區塊的距離。
   ※ 想再更近／更遠：改下面兩個數字（兩個都要改，只改一個會不對稱）。 */
.cf-site #holo-float{
  padding-bottom: 24px;
}

.cf-site #holo-orb{
  padding-top: 24px;
}


/* 第 5 區 HOLO FAN 改版（2026-09-02 依設計稿）
   從「左文字 + 右圖卡」（.product）改成「滿版底圖 + 文字疊在左邊」，
   骨架直接沿用 5-2 的 .banner —— 那個元件已經處理好滿版、左暗右透明的遮罩、
   文字垂直置中，這裡只覆寫「跟首頁第 1 區 Banner 不一樣」的部分。 */

.cf-site .banner--fan{
  /* 底圖：2026-09-03 放上使用者提供的 HoloFan2hp.png。
     ※ 這行一定要寫（就算之後想拿掉圖也要留著、改回 none）——
       不寫的話會繼承 .banner 的底圖（首頁第 1 區那張）。 */
  background-image: url("../img/HoloFan2hp.png");
  background-color: #0b0f16;   /* 圖載入前／失敗時的底色 */
}

/* 小標：設計稿是「首字大寫 + 淺藍」，跟共用 .eyebrow 的
   「全大寫 + 字距 0.18em」不一樣（跟前兩區 .product--new 的處理相同）。 */
.cf-site .banner--fan .eyebrow{
  text-transform: none;   /* 取消共用 .eyebrow 的全大寫 */
  letter-spacing: 0;      /* 共用的 0.18em 是為全大寫設計的 */
  color: #bce1ff;

  /* 2026-09-04 美術檢閱：跟 New Product 同樣 —— 16px / medium。 */
  font-size: calc(var(--fs-small) + 2px);   /* 14 → 16px */
  font-weight: 500;                          /* medium */
  line-height: 1.35;
  white-space: nowrap;
}

/* 大標：這一區是 <h2>（整頁的 <h1> 已經給第 1 區 Banner 用了），
   所以 5-2 的 .banner h1 不會套到，字級要在這裡自己指定一次。 */
.cf-site .banner--fan .banner__title{
  max-width: 20ch;
  margin-bottom: var(--space-6);   /* 48px：大標 → 內文 */
  font-size: var(--fs-display);    /* 值在第 1 節，跟第 1 區大標同一個刻度 */
  font-weight: 300;
  line-height: 1.15;
  letter-spacing: -0.02em;
}

/* 大標裡的藍字（設計稿把「Holo Fan 2」挑出來上色） */
.cf-site .banner--fan .banner__title span{
  color: #bce1ff;
}

/* 內文有兩段，段與段之間要留空。
   5-2 的 .banner p 寫了 margin-bottom: 0（第 1 區只有一段），這裡要補回來。
   最後一段不留，才不會跟按鈕的 margin-top 疊成兩倍距離。 */
.cf-site .banner--fan p{
  margin-bottom: var(--space-3);   /* 16px：段落之間 */
}

.cf-site .banner--fan p:last-of-type{
  margin-bottom: 0;
}

/* 按鈕：外觀走共用的 .btn--pill（5-11 節），這裡只管跟內文的距離。
   align-self: flex-start 是必要的 —— .banner .container 是直向 flex，
   子元素預設會被拉成整列寬，按鈕會變成一條橫幅。 */
.cf-site .banner--fan .btn{
  align-self: flex-start;
  margin-top: var(--space-6);      /* 48px：內文 → 按鈕 */
}


/* --------------------------------------------------------------------------
   6-2. holo-fan.html（HOLO FAN 2 產品頁；2026-08-24 前檔名是 holo-float.html，
        內容其實一直是這個產品，已更名對齊。2026-08-25 版本號從 3 改成 2）
   -------------------------------------------------------------------------- */
/* hero 的滿版底圖。骨架是 5-3 的 .product-hero，這裡只換圖片。
   路徑從 CSS 檔算起，所以要 ../ 先跳出 CSS 資料夾。
   換圖：把檔案放進 img/ 再改下面的 url()，例如 url("../img/holo-fan-hero.jpg")。
   ※ 不可以寫 url("") —— 空字串會被當成「這份 HTML 自己的網址」，瀏覽器會把
     網頁自己抓回來當圖片載入（註定失敗，但請求照發）。沒圖的時候要寫 none。 */
.cf-site .product-hero--float{
  background-image: url("../img/HoloFanb1.png");
}


/* ==========================================================================
   7. 工具類別
   ========================================================================== */
.cf-site .text-center{ text-align: center; }
.cf-site .text-muted{ color: var(--color-text-muted); }
.cf-site .mx-auto{ margin-inline: auto; }
.cf-site .mt-4{ margin-top: var(--space-4); }
.cf-site .mb-0{ margin-bottom: 0; }

/* 螢幕閱讀器可讀、視覺隱藏 */
.cf-site .sr-only{
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.cf-site .hide-mobile{ display: none; }   /* 預設在手機隱藏，平板以上顯示 */

/* ==========================================================================
   8. RWD 斷點（mobile-first：先寫手機樣式，再往上加）
   ---------------------------------------------------------------------------
   sm  ≥ 480px   大手機
   md  ≥ 768px   平板 / 直立
   lg  ≥ 1024px  平板橫向 / 小筆電
   xl  ≥ 1280px  桌機
   ========================================================================== */

/* ---- sm：≥ 480px ---- */
@media (min-width: 480px) {
  .cf-site{
    --gutter: var(--space-4);
  }
}

/* ---- md：≥ 768px ---- */
@media (min-width: 768px) {
  .cf-site{
    --gutter: var(--space-5);
  }

  /* ---- HEADER：導覽回到水平一列，下拉變成浮動面板 ---- */

  /* 漢堡收起來，導覽永遠顯示（不再由 aria-expanded 控制） */
  .cf-site .site-header__toggle{
    display: none;
  }

  .cf-site .nav,
  .cf-site .site-header__toggle[aria-expanded="true"] + .nav{
    display: block;
    position: static;               /* 回到文件流，不再是蓋在下面的面板 */
    align-self: stretch;            /* 撐滿 header 高度，讓下拉的 top:100% 對到 header 底部 */
    padding: 0;
    border: 0;
    background: none;
    max-height: none;
    overflow: visible;              /* 浮動面板要能超出邊界 */
  }

  .cf-site .nav__list{
    flex-direction: row;
    align-items: stretch;
    height: 100%;
    gap: var(--space-5);            /* ← 選項之間的距離 */
  }

  /* 每一項撐滿 header 高度 → 下拉面板的 top: 100% 才會落在 header 底部，
     而且滑鼠移到選項上下方的空白也還算在觸發範圍內 */
  .cf-site .nav__item{
    position: relative;             /* 下拉面板的定位基準 */
    display: flex;
    align-items: center;
  }

  .cf-site .nav a,
  .cf-site .nav button{
    width: auto;
    padding-block: 0;
    white-space: nowrap;            /* 導覽項目不換行 */
  }

  .cf-site .nav__caret{
    margin-left: 0;                 /* 桌機不需要推到最右邊，緊跟文字就好 */
    padding-left: 0.4em;
  }

  /* 第一層面板：左緣對齊觸發項目的左緣（設計稿是這樣） */
  .cf-site .nav__menu{
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 1;
    min-width: 11rem;
    padding: var(--menu-pad);
    margin-top: var(--menu-gap);    /* ← 離 header 的距離（實際空隙見第 1 節的說明） */
    border-radius: var(--radius);
    background-color: var(--header-bg);
  }

  .cf-site .nav__sublist{
    display: flex;
    flex-direction: column;
  }

  .cf-site .nav__subitem{
    position: relative;             /* 第二層的定位基準 */
  }

  /* 第二層：往右飛出。
     top 往上退一個 --menu-pad，是為了讓第一項的第二層剛好跟第一層面板「頂端對齊」
     （設計稿就是這個效果）；第二、三項則會出現在自己那一列稍微偏上的位置。
     left 要跨過「這一列的寬度 + 面板的右內距 + 兩塊面板之間的縫」才會落在面板外面。 */
  .cf-site .nav__submenu{
    position: absolute;
    top: calc(var(--menu-pad) * -1);
    left: calc(100% + var(--menu-pad) + var(--menu-gap));
    min-width: 10rem;
    padding: var(--menu-pad);
    border-radius: var(--radius);
    background-color: var(--header-bg);
  }

  /* hover 展開的必要配套 ——
     面板與 header 之間、兩塊面板之間都有「看得見的空隙」，那段空隙不屬於任何元素，
     滑鼠穿過去就會觸發 mouseleave 把選單關掉（選單會在半路上消失、很難點中）。
     解法：用一個**透明的 ::before** 把空隙補成面板自己的一部分，
     滑鼠在視覺上雖然走在空白處，但實際上一直待在面板裡面，hover 不會中斷。
     這兩塊是純粹的滑鼠命中區，沒有任何視覺效果。 */
  .cf-site .nav__menu::before{
    content: "";
    position: absolute;
    top: calc(var(--menu-gap) * -1);   /* 往上補到 header 底部 */
    left: 0;
    right: 0;
    height: var(--menu-gap);
  }

  .cf-site .nav__submenu::before{
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    /* 往左補回第一層的右內距 + 兩塊面板之間的縫，跟 left 的算式對應 */
    left: calc((var(--menu-pad) + var(--menu-gap)) * -1);
    width: calc(var(--menu-pad) + var(--menu-gap));
  }

  /* 面板內的每一列：拿掉手機的縮排，改用列的上下內距做行距 */
  .cf-site .nav__menu a,
  .cf-site .nav__menu button{
    padding-block: var(--space-2);
  }

  .cf-site .grid--2,
  .cf-site .grid--3,
  .cf-site .grid--4{
    grid-template-columns: repeat(2, 1fr);
  }

  /* 特色卡：顯示 2⅓ 張 —— 2.333 張卡 + 2 個間距 = 可見寬度
     → 卡寬 = (可見寬度 - 2個間距) × 3/7（因為 7/3 = 2.333） */
  .cf-site .feature-scroll__track{
    grid-auto-columns: calc(
      (100% + var(--edge) - 2 * var(--card-gap)) * 3 / 7
    );
  }

  /* 左右箭頭：平板以上才出現（手機用手指滑就好） */
  .cf-site .feature-scroll__arrow{
    display: grid;
  }

  /* SHOWCASE 橫列：左右並排 */
  .cf-site .showcase__row{
    grid-template-columns: 1fr 1fr;
    gap: var(--space-6);
  }

  /* FEATURE SPLIT：左文字、右圖並排
     2026-08-25：改成 stretch——文字變長之後比圖片還高，如果保持 center，
     圖片會停在文字的正中間，上下都留白，天地對不齊。改 stretch 讓圖框
     的高度撐滿跟文字一樣高，圖框裡的圖片再用 height: 100% 填滿那個高度，
     這樣文字跟圖片的頂部、底部才會剛好對齊。
     （手機單欄堆疊時用不到這個，圖框維持第 5 節的 aspect-ratio: 1/1）*/
  .cf-site .feature-split__grid{
    grid-template-columns: 1fr 1fr;
    align-items: stretch;
  }

  .cf-site .feature-split__media{
    aspect-ratio: auto;      /* 取消正方形比例限制，改讓高度跟著文字欄走 */
    height: 100%;
  }

  /* 步驟卡：兩欄 */
  .cf-site .steps{
    grid-template-columns: repeat(2, 1fr);
  }

  /* 規格清單與底部附註：兩欄 */
  .cf-site .spec-list,
  .cf-site .spec-notes{
    grid-template-columns: repeat(2, 1fr);
  }

  /* 大數字規格：四欄連成一排 */
  .cf-site .perf-stats{
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  /* FEATURE BLEED：左圖右文並排。
     圖片維持出血（左邊不留白），文字的右緣用 --edge 對齊 container，
     左邊只留跟圖片之間的間距。 */
  .cf-site .feature-bleed{
    grid-template-columns: 1fr 1fr;
    align-items: center;
  }

  .cf-site .feature-bleed__media{
    height: 100%;                     /* 撐滿欄位高度 = 整個滿版區塊的高度 */
    aspect-ratio: auto;               /* 高度改由欄位決定，取消固定比例 */
    /* 原本這裡有一條 min-height: 32rem 用來「沒圖時撐出高度」，
       改成滿版一螢幕之後 section 自己就保證了高度，那行已經多餘、拿掉。 */
  }

  .cf-site .feature-bleed__body{
    padding-block: var(--space-7);
    padding-inline: var(--space-6) var(--edge);
  }

  /* SPECIFICATION：左分類欄、右內容（手機是上下堆疊） */
  .cf-site .spec__layout{
    grid-template-columns: 260px 1fr;   /* ← 左側分類欄的寬度 */
    gap: var(--space-6);
  }

  /* 規格列：左名稱、右值。2026-08-26 改版——舊版是 `1fr auto` ＋ 值靠右對齊
     （配合舊的卡片式表格），新設計兩欄都靠左，所以改成固定的名稱欄寬度。 */
  .cf-site .spec-table__row{
    grid-template-columns: 280px 1fr;   /* ← 規格名稱欄的寬度 */
    align-items: baseline;
    gap: var(--space-4);
  }

  /* 左右交叉：第 1、3、5… 列圖在左，第 2、4、6… 列維持圖在右（HTML 原本的順序）
     手機是上下堆疊，沒有左右可分，所以這條只在平板以上生效 */
  .cf-site .showcase__row:nth-child(odd) .showcase__media{
    order: -1;
  }

  /* 產品區塊：左右並排，間距加大 */
  .cf-site .product__grid{
    grid-template-columns: 1fr 1fr;
    gap: var(--space-6);
  }

  /* 圖左文右：只在有左右可分的寬度才對調（手機維持文字在上） */
  .cf-site .product--reverse .product__visual{
    order: -1;
  }

  .cf-site .section{
    padding-block: var(--space-7);
  }

  .cf-site .hide-mobile{
    display: block;
  }
}

/* ---- lg：≥ 1024px ---- */
@media (min-width: 1024px) {
  .cf-site .grid--3{
    grid-template-columns: repeat(3, 1fr);
  }

  .cf-site .grid--4{
    grid-template-columns: repeat(4, 1fr);
  }

  /* 步驟卡：四欄連成一排 */
  .cf-site .steps{
    grid-template-columns: repeat(4, 1fr);
  }
}

/* ---- xl：≥ 1280px ---- */
@media (min-width: 1280px) {
  .cf-site{
    --gutter: var(--space-6);
  }
}

/* ---- 列印 ---- */
@media print {
  .cf-site .site-header,
  .cf-site .site-footer,
  .cf-site .btn{
    display: none;
  }

  .cf-site{
    background: #fff;
    color: #000;
  }
}
