/* ============================================================
 *  styles.css  —  完整獨立樣式表（無需 Tailwind CDN）
 *  ============================================================
 *
 *  【使用方式】
 *  在 HTML <head> 中引入此檔案即可，無需載入 Tailwind CDN：
 *    <link rel="stylesheet" href="styles.css">
 *
 *  【設計系統來源】
 *  顏色 Token 來自 Tailwind config，以 Material Design 3 色彩命名。
 *  字型：
 *    - Plus Jakarta Sans  → body / label 系列
 *    - Space Grotesk      → headline / display / data-metric 系列
 *
 *  【區段索引】
 *  Section 0  — 說明頭部（本注解）
 *  Section 1  — Google Fonts @import
 *  Section 2  — CSS Custom Properties（設計 Token）
 *  Section 3  — Base Reset
 *  Section 4  — @keyframes 動畫
 *  Section 5  — 字型系統（Typography）
 *  Section 6  — 顏色工具類別
 *  Section 7  — Layout 工具類別
 *  Section 8  — Hover / Focus / Active / Disabled 狀態類別
 *  Section 9  — Group Hover
 *  Section 10 — Responsive Breakpoints
 *  Section 11 — 常用複合元件樣式
 *
 *  【版本】1.0.0
 *  【最後更新】2026-10-03
 * ============================================================ */


/* ============================================================
 *  Section 1 — Google Fonts @import
 *  引入 Plus Jakarta Sans、Space Grotesk 及 Material Symbols
 * ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;600;700&family=Space+Grotesk:wght@600;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap');


/* ============================================================
 *  Section 2 — CSS Custom Properties（設計 Token）
 *  所有顏色以 --c-{name} 格式定義，連字號保留不轉換
 * ============================================================ */

:root {
  /* 主色系 Primary */
  --c-primary:                    #9d4300;
  --c-on-primary:                 #ffffff;
  --c-primary-container:          #1e40af;
  --c-on-primary-container:       #ffffff;
  --c-primary-fixed:              #dde1ff;
  --c-on-primary-fixed:           #001453;
  --c-primary-fixed-dim:          #b8c4ff;
  --c-on-primary-fixed-variant:   #173bab;
  --c-inverse-primary:            #b8c4ff;

  /* 次色系 Secondary */
  --c-secondary:                  #9d4300;
  --c-on-secondary:               #ffffff;
  --c-secondary-container:        #fd761a;
  --c-on-secondary-container:     #5c2400;
  --c-secondary-fixed:            #ffdbca;
  --c-on-secondary-fixed:         #341100;
  --c-secondary-fixed-dim:        #ffb690;
  --c-on-secondary-fixed-variant: #783200;

  /* 三色系 Tertiary */
  --c-tertiary:                   #443200;
  --c-on-tertiary:                #ffffff;
  --c-tertiary-container:         #604700;
  --c-on-tertiary-container:      #eab307;
  --c-tertiary-fixed:             #ffdf9a;
  --c-on-tertiary-fixed:          #251a00;
  --c-tertiary-fixed-dim:         #f7be1d;
  --c-on-tertiary-fixed-variant:  #5a4300;

  /* 錯誤色 Error */
  --c-error:                      #ba1a1a;
  --c-on-error:                   #ffffff;
  --c-error-container:            #ffdad6;
  --c-on-error-container:         #93000a;

  /* 表面色 Surface */
  --c-surface:                    #faf8ff;
  --c-on-surface:                 #131b2e;
  --c-surface-variant:            #dae2fd;
  --c-on-surface-variant:         #444653;
  --c-surface-bright:             #faf8ff;
  --c-surface-dim:                #d2d9f4;
  --c-surface-container-lowest:   #ffffff;
  --c-surface-container-low:      #f2f3ff;
  --c-surface-container:          #eaedff;
  --c-surface-container-high:     #e2e7ff;
  --c-surface-container-highest:  #dae2fd;
  --c-inverse-surface:            #283044;
  --c-inverse-on-surface:         #eef0ff;

  /* 背景 Background */
  --c-background:                 #faf8ff;
  --c-on-background:              #131b2e;

  /* 輪廓 Outline */
  --c-outline:                    #757684;
  --c-outline-variant:            #c4c5d5;

  /* 表面色調 Surface Tint */
  --c-surface-tint:               #3755c3;
}


/* ============================================================
 *  Section 3 — Base Reset
 *  基礎重置樣式，統一各瀏覽器預設行為
 * ============================================================ */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
}

body {
  overscroll-behavior: none;
  font-family: 'Plus Jakarta Sans', sans-serif;
  color: var(--c-on-surface);
  background-color: var(--c-surface);
}

/* 主要內容區塊：移除首尾元素的多餘間距 */
main > :first-child { margin-top: 0 !important; }
main > :last-child  { margin-bottom: 0 !important; }

/* 全域捲軸樣式（細緻可見，取代隱藏） */
::-webkit-scrollbar             { width: 6px; height: 8px; }
::-webkit-scrollbar-track       { background: transparent; }
::-webkit-scrollbar-thumb       { background: rgba(0,0,0,0.18); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.32); }
*                               { scrollbar-width: thin; scrollbar-color: rgba(0,0,0,0.18) transparent; }


/* ============================================================
 *  Section 4 — @keyframes 動畫
 * ============================================================ */

/* 脈動效果：用於 loading 或即時狀態指示 */
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.5; }
}

/* 向外擴散消失：用於通知圓點等 */
@keyframes ping {
  75%, 100% {
    transform: scale(2);
    opacity: 0;
  }
}

/* 上下彈跳：用於強調提示 */
@keyframes bounce {
  0%, 100% {
    transform: translateY(-25%);
    animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
  }
  50% {
    transform: none;
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
}


/* ============================================================
 *  Section 5 — 字型系統（Typography）
 * ============================================================ */

/* ── 字型家族設定（font-family only） ── */

/* Body / Label 系列：Plus Jakarta Sans */
.font-body-sm,
.font-body-md,
.font-body-lg,
.font-label-sm,
.font-label-md,
.font-label-lg {
  font-family: 'Plus Jakarta Sans', sans-serif;
}

/* Headline / Display / Data-metric 系列：Space Grotesk */
.font-headline-sm,
.font-headline-md,
.font-headline-lg,
.font-headline-lg-mobile,
.font-data-metric,
.font-display-lg,
.font-display-lg-mobile {
  font-family: 'Space Grotesk', sans-serif;
}

/* ── 字型尺度（font-size + line-height + font-weight） ── */

/* Body 系列 */
.text-body-sm  { font-size: 14px; line-height: 20px; font-weight: 400; }
.text-body-md  { font-size: 16px; line-height: 24px; font-weight: 400; }
.text-body-lg  { font-size: 18px; line-height: 28px; font-weight: 400; }

/* Label 系列 */
.text-label-sm { font-size: 12px; line-height: 16px; font-weight: 600; letter-spacing: 0.04em; }
.text-label-md { font-size: 14px; line-height: 20px; font-weight: 600; }
.text-label-lg { font-size: 16px; line-height: 24px; font-weight: 600; }

/* Headline 系列 */
.text-headline-sm        { font-size: 20px; line-height: 28px; font-weight: 600; }
.text-headline-md        { font-size: 24px; line-height: 32px; font-weight: 600; }
.text-headline-lg        { font-size: 32px; line-height: 40px; font-weight: 700; letter-spacing: -0.01em; }
.text-headline-lg-mobile { font-size: 24px; line-height: 32px; font-weight: 700; }

/* Display 系列 */
.text-display-lg        { font-size: 48px; line-height: 56px; font-weight: 700; letter-spacing: -0.02em; }
.text-display-lg-mobile { font-size: 32px; line-height: 40px; font-weight: 700; letter-spacing: -0.01em; }

/* 數據指標 */
.text-data-metric { font-size: 28px; line-height: 32px; font-weight: 700; letter-spacing: -0.02em; }

/* ── 任意字型大小（font-size only） ── */
.text-\[10px\] { font-size: 10px; }
.text-\[11px\] { font-size: 11px; }
.text-\[12px\] { font-size: 12px; }
.text-\[13px\] { font-size: 13px; }
.text-\[14px\] { font-size: 14px; }
.text-\[15px\] { font-size: 15px; }
.text-\[16px\] { font-size: 16px; }
.text-\[18px\] { font-size: 18px; }
.text-\[20px\] { font-size: 20px; }
.text-\[22px\] { font-size: 22px; }
.text-\[24px\] { font-size: 24px; }
.text-\[28px\] { font-size: 28px; }
.text-\[36px\] { font-size: 36px; }

/* 語意化字型大小（Tailwind 標準名稱） */
.text-xs   { font-size: 12px; }
.text-sm   { font-size: 14px; }
.text-base { font-size: 16px; }
.text-lg   { font-size: 18px; }

/* ── Font Weight ── */
.font-normal  { font-weight: 400; }
.font-medium  { font-weight: 500; }
.font-semibold { font-weight: 600; }
.font-bold    { font-weight: 700; }

/* ── Text Align ── */
.text-left   { text-align: left; }
.text-center { text-align: center; }
.text-right  { text-align: right; }

/* ── Letter Spacing（字距） ── */
.tracking-tight   { letter-spacing: -0.025em; }
.tracking-normal  { letter-spacing: 0; }
.tracking-wide    { letter-spacing: 0.025em; }
.tracking-wider   { letter-spacing: 0.05em; }
.tracking-widest  { letter-spacing: 0.1em; }

/* ── Line Height（行高） ── */
.leading-none    { line-height: 1; }
.leading-tight   { line-height: 1.25; }
.leading-snug    { line-height: 1.375; }
.leading-relaxed { line-height: 1.625; }

/* ── Text Transform / Decoration ── */
.uppercase       { text-transform: uppercase; }
.italic          { font-style: italic; }
.underline       { text-decoration: underline; }

/* ── 文字截斷與換行 ── */
.truncate        { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.whitespace-nowrap { white-space: nowrap; }

/* ── 數字等寬排版 ── */
.tabular-nums    { font-variant-numeric: tabular-nums; }

/* ── 行數限制（Line Clamp） ── */
.line-clamp-1 {
  -webkit-line-clamp: 1;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.line-clamp-2 {
  -webkit-line-clamp: 2;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
}


/* ============================================================
 *  Section 6 — 顏色工具類別
 * ============================================================ */

/* ── 文字顏色（color） ── */
.text-primary                  { color: var(--c-primary); }
.text-on-primary               { color: var(--c-on-primary); }
.text-primary-container        { color: var(--c-primary-container); }
.text-on-primary-container     { color: var(--c-on-primary-container); }
.text-primary-fixed            { color: var(--c-primary-fixed); }
.text-on-primary-fixed         { color: var(--c-on-primary-fixed); }
.text-primary-fixed-dim        { color: var(--c-primary-fixed-dim); }
.text-on-primary-fixed-variant { color: var(--c-on-primary-fixed-variant); }
.text-secondary                { color: var(--c-secondary); }
.text-on-secondary             { color: var(--c-on-secondary); }
.text-secondary-container      { color: var(--c-secondary-container); }
.text-on-secondary-container   { color: var(--c-on-secondary-container); }
.text-secondary-fixed          { color: var(--c-secondary-fixed); }
.text-on-secondary-fixed       { color: var(--c-on-secondary-fixed); }
.text-secondary-fixed-dim      { color: var(--c-secondary-fixed-dim); }
.text-on-secondary-fixed-variant { color: var(--c-on-secondary-fixed-variant); }
.text-tertiary                 { color: var(--c-tertiary); }
.text-on-tertiary              { color: var(--c-on-tertiary); }
.text-tertiary-container       { color: var(--c-tertiary-container); }
.text-on-tertiary-container    { color: var(--c-on-tertiary-container); }
.text-tertiary-fixed           { color: var(--c-tertiary-fixed); }
.text-on-tertiary-fixed        { color: var(--c-on-tertiary-fixed); }
.text-error                    { color: var(--c-error); }
.text-on-error                 { color: var(--c-on-error); }
.text-on-error-container       { color: var(--c-on-error-container); }
.text-on-surface               { color: var(--c-on-surface); }
.text-on-surface-variant       { color: var(--c-on-surface-variant); }
.text-on-background            { color: var(--c-on-background); }
.text-outline                  { color: var(--c-outline); }
.text-outline-variant          { color: var(--c-outline-variant); }
.text-inverse-on-surface       { color: var(--c-inverse-on-surface); }
.text-inverse-primary          { color: var(--c-inverse-primary); }
.text-surface-bright           { color: var(--c-surface-bright); }
.text-surface-container-high   { color: var(--c-surface-container-high); }
.text-surface-container-highest { color: var(--c-surface-container-highest); }
.text-surface-container-lowest { color: var(--c-surface-container-lowest); }
.text-white                    { color: #ffffff; }

/* ── 背景顏色（background-color）── */
.bg-primary                  { background-color: var(--c-primary); }
.bg-primary-container        { background-color: var(--c-primary-container); }
.bg-primary-fixed            { background-color: var(--c-primary-fixed); }
.bg-primary-fixed-dim        { background-color: var(--c-primary-fixed-dim); }
.bg-secondary                { background-color: var(--c-secondary); }
.bg-secondary-container      { background-color: var(--c-secondary-container); }
.bg-secondary-fixed          { background-color: var(--c-secondary-fixed); }
.bg-secondary-fixed-dim      { background-color: var(--c-secondary-fixed-dim); }
.bg-tertiary                 { background-color: var(--c-tertiary); }
.bg-tertiary-container       { background-color: var(--c-tertiary-container); }
.bg-tertiary-fixed           { background-color: var(--c-tertiary-fixed); }
.bg-error                    { background-color: var(--c-error); }
.bg-error-container          { background-color: var(--c-error-container); }
.bg-surface                  { background-color: var(--c-surface); }
.bg-surface-bright           { background-color: var(--c-surface-bright); }
.bg-surface-dim              { background-color: var(--c-surface-dim); }
.bg-surface-variant          { background-color: var(--c-surface-variant); }
.bg-surface-container        { background-color: var(--c-surface-container); }
.bg-surface-container-low    { background-color: var(--c-surface-container-low); }
.bg-surface-container-high   { background-color: var(--c-surface-container-high); }
.bg-surface-container-highest { background-color: var(--c-surface-container-highest); }
.bg-surface-container-lowest { background-color: var(--c-surface-container-lowest); }
.bg-inverse-surface          { background-color: var(--c-inverse-surface); }
.bg-outline                  { background-color: var(--c-outline); }
.bg-outline-variant          { background-color: var(--c-outline-variant); }
.bg-surface-tint             { background-color: var(--c-surface-tint); }
.bg-transparent              { background-color: transparent; }

/* ── 帶透明度背景色（rgba 計算） ── */

/* primary: #00288e → rgb(0, 40, 142) */
.bg-primary\/5  { background-color: rgba(0, 40, 142, 0.05); }
.bg-primary\/10 { background-color: rgba(0, 40, 142, 0.10); }

/* on-primary: #ffffff → rgb(255, 255, 255) */
.bg-on-primary\/15 { background-color: rgba(255, 255, 255, 0.15); }

/* primary-fixed: #dde1ff → rgb(221, 225, 255) */
.bg-primary-fixed\/50 { background-color: rgba(221, 225, 255, 0.50); }

/* secondary-container: #fd761a → rgb(253, 118, 26) */
.bg-secondary-container\/10 { background-color: rgba(253, 118, 26, 0.10); }
.bg-secondary-container\/15 { background-color: rgba(253, 118, 26, 0.15); }
.bg-secondary-container\/20 { background-color: rgba(253, 118, 26, 0.20); }

/* surface: #faf8ff → rgb(250, 248, 255) */
.bg-surface\/90 { background-color: rgba(250, 248, 255, 0.90); }

/* surface-container: #eaedff → rgb(234, 237, 255) */
.bg-surface-container\/20 { background-color: rgba(234, 237, 255, 0.20); }
.bg-surface-container\/40 { background-color: rgba(234, 237, 255, 0.40); }

/* surface-container-high: #e2e7ff → rgb(226, 231, 255) */
.bg-surface-container-high\/60 { background-color: rgba(226, 231, 255, 0.60); }

/* surface-container-low: #f2f3ff → rgb(242, 243, 255) */
.bg-surface-container-low\/20 { background-color: rgba(242, 243, 255, 0.20); }
.bg-surface-container-low\/50 { background-color: rgba(242, 243, 255, 0.50); }
.bg-surface-container-low\/60 { background-color: rgba(242, 243, 255, 0.60); }

/* surface-container-lowest: #ffffff → rgb(255, 255, 255) */
.bg-surface-container-lowest\/10 { background-color: rgba(255, 255, 255, 0.10); }
.bg-surface-container-lowest\/15 { background-color: rgba(255, 255, 255, 0.15); }
.bg-surface-container-lowest\/80 { background-color: rgba(255, 255, 255, 0.80); }
.bg-surface-container-lowest\/95 { background-color: rgba(255, 255, 255, 0.95); }

/* error-container: #ffdad6 → rgb(255, 218, 214) */
.bg-error-container\/20 { background-color: rgba(255, 218, 214, 0.20); }

/* tertiary-fixed: #ffdf9a → rgb(255, 223, 154) */
.bg-tertiary-fixed\/20 { background-color: rgba(255, 223, 154, 0.20); }

/* inverse-surface: #283044 → rgb(40, 48, 68) */
.bg-inverse-surface\/60 { background-color: rgba(40, 48, 68, 0.60); }

/* ── 邊框顏色 ── */
.border-surface-container { border-color: var(--c-surface-container); }

/* 分隔線（相鄰兄弟元素頂部邊線） */
.divide-surface-container > * + *     { border-top: 1px solid var(--c-surface-container); }
.divide-surface-container-low > * + * { border-top: 1px solid var(--c-surface-container-low); }

/* ── Ring（focus 輪廓，使用 box-shadow 模擬） ── */
.ring-2                  { box-shadow: 0 0 0 2px var(--ring-color, var(--c-primary)); }
.ring-primary            { --ring-color: var(--c-primary); }
.ring-secondary-container { --ring-color: var(--c-secondary-container); }
.ring-tertiary-fixed-dim  { --ring-color: var(--c-tertiary-fixed-dim); }

/* ── 漸層（Gradient） ── */
/* 提示：複雜漸層建議直接以 style 屬性撰寫 linear-gradient() */
.bg-gradient-to-b { background-image: linear-gradient(to bottom, var(--tw-gradient-stops, transparent)); }
.bg-gradient-to-t { background-image: linear-gradient(to top,   var(--tw-gradient-stops, transparent)); }


/* ============================================================
 *  Section 7 — Layout 工具類別
 * ============================================================ */

/* ── Display ── */
.block        { display: block; }
.inline-block { display: inline-block; }
.flex         { display: flex; }
.inline-flex  { display: inline-flex; }
.grid         { display: grid; }
.hidden       { display: none; }

/* ── Position ── */
.relative { position: relative; }
.absolute { position: absolute; }
.fixed    { position: fixed; }
.sticky   { position: sticky; }

/* ── Flex ── */
.flex-col  { flex-direction: column; }
.flex-wrap { flex-wrap: wrap; }
.flex-1    { flex: 1 1 0%; }
.shrink-0  { flex-shrink: 0; }

/* ── Align / Justify ── */
.items-start    { align-items: flex-start; }
.items-center   { align-items: center; }
.items-end      { align-items: flex-end; }
.items-stretch  { align-items: stretch; }
.items-baseline { align-items: baseline; }
.justify-start   { justify-content: flex-start; }
.justify-center  { justify-content: center; }
.justify-end     { justify-content: flex-end; }
.justify-between { justify-content: space-between; }

/* ── Gap ── */
.gap-1   { gap: 0.25rem; }
.gap-1\.5 { gap: 0.375rem; }
.gap-2   { gap: 0.5rem; }
.gap-2\.5 { gap: 0.625rem; }
.gap-3   { gap: 0.75rem; }
.gap-3\.5 { gap: 0.875rem; }
.gap-4   { gap: 1rem; }
.gap-5   { gap: 1.25rem; }
.gap-6   { gap: 1.5rem; }
.gap-8   { gap: 2rem; }

/* ── Grid Columns ── */
.grid-cols-1  { grid-template-columns: repeat(1,  minmax(0, 1fr)); }
.grid-cols-2  { grid-template-columns: repeat(2,  minmax(0, 1fr)); }
.grid-cols-3  { grid-template-columns: repeat(3,  minmax(0, 1fr)); }
.grid-cols-4  { grid-template-columns: repeat(4,  minmax(0, 1fr)); }
.grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }

/* ── Col Span ── */
.col-span-1  { grid-column: span 1  / span 1; }
.col-span-2  { grid-column: span 2  / span 2; }
.col-span-3  { grid-column: span 3  / span 3; }
.col-span-4  { grid-column: span 4  / span 4; }
.col-span-5  { grid-column: span 5  / span 5; }
.col-span-7  { grid-column: span 7  / span 7; }
.col-span-8  { grid-column: span 8  / span 8; }
.col-span-12 { grid-column: span 12 / span 12; }

/* ── Width ── */
.w-1\.5 { width: 0.375rem; }
.w-2    { width: 0.5rem; }
.w-2\.5 { width: 0.625rem; }
.w-3    { width: 0.75rem; }
.w-4    { width: 1rem; }
.w-5    { width: 1.25rem; }
.w-6    { width: 1.5rem; }
.w-7    { width: 1.75rem; }
.w-8    { width: 2rem; }
.w-9    { width: 2.25rem; }
.w-10   { width: 2.5rem; }
.w-11   { width: 2.75rem; }
.w-12   { width: 3rem; }
.w-16   { width: 4rem; }
.w-20   { width: 5rem; }
.w-24   { width: 6rem; }
.w-28   { width: 7rem; }
.w-64   { width: 16rem; }
.w-80   { width: 20rem; }
.w-96   { width: 24rem; }
.w-px   { width: 1px; }
.w-full { width: 100%; }
.w-fit  { width: fit-content; }
.w-max  { width: max-content; }

/* ── Height ── */
.h-1\.5 { height: 0.375rem; }
.h-2    { height: 0.5rem; }
.h-2\.5 { height: 0.625rem; }
.h-3    { height: 0.75rem; }
.h-4    { height: 1rem; }
.h-5    { height: 1.25rem; }
.h-6    { height: 1.5rem; }
.h-7    { height: 1.75rem; }
.h-8    { height: 2rem; }
.h-9    { height: 2.25rem; }
.h-10   { height: 2.5rem; }
.h-11   { height: 2.75rem; }
.h-12   { height: 3rem; }
.h-16   { height: 4rem; }
.h-20   { height: 5rem; }
.h-24   { height: 6rem; }
.h-28   { height: 7rem; }
.h-64   { height: 16rem; }
.h-80   { height: 20rem; }
.h-96   { height: 24rem; }
.h-full { height: 100%; }

/* 任意高度 */
.max-h-\[90vh\]                   { max-height: 90vh; }
.min-h-\[calc\(100vh-80px\)\]    { min-height: calc(100vh - 80px); }

/* Min / Max Width */
.min-w-0         { min-width: 0; }
.min-w-\[130px\] { min-width: 130px; }
.min-w-\[240px\] { min-width: 240px; }
.max-w-md        { max-width: 28rem; }
.max-w-lg        { max-width: 32rem; }
.max-w-xl        { max-width: 36rem; }
.max-w-2xl       { max-width: 42rem; }
.max-w-7xl       { max-width: 80rem; }

/* ── Padding ── */
.p-1    { padding: 0.25rem; }
.p-1\.5 { padding: 0.375rem; }
.p-2    { padding: 0.5rem; }
.p-3    { padding: 0.75rem; }
.p-3\.5 { padding: 0.875rem; }
.p-4    { padding: 1rem; }
.p-5    { padding: 1.25rem; }
.p-6    { padding: 1.5rem; }
.p-8    { padding: 2rem; }

.px-1    { padding-left: 0.25rem;  padding-right: 0.25rem; }
.px-1\.5 { padding-left: 0.375rem; padding-right: 0.375rem; }
.px-2    { padding-left: 0.5rem;   padding-right: 0.5rem; }
.px-2\.5 { padding-left: 0.625rem; padding-right: 0.625rem; }
.px-3    { padding-left: 0.75rem;  padding-right: 0.75rem; }
.px-3\.5 { padding-left: 0.875rem; padding-right: 0.875rem; }
.px-4    { padding-left: 1rem;     padding-right: 1rem; }
.px-5    { padding-left: 1.25rem;  padding-right: 1.25rem; }
.px-6    { padding-left: 1.5rem;   padding-right: 1.5rem; }

.py-0\.5 { padding-top: 0.125rem; padding-bottom: 0.125rem; }
.py-1    { padding-top: 0.25rem;  padding-bottom: 0.25rem; }
.py-1\.5 { padding-top: 0.375rem; padding-bottom: 0.375rem; }
.py-2    { padding-top: 0.5rem;   padding-bottom: 0.5rem; }
.py-2\.5 { padding-top: 0.625rem; padding-bottom: 0.625rem; }
.py-3    { padding-top: 0.75rem;  padding-bottom: 0.75rem; }
.py-3\.5 { padding-top: 0.875rem; padding-bottom: 0.875rem; }
.py-4    { padding-top: 1rem;     padding-bottom: 1rem; }
.py-8    { padding-top: 2rem;     padding-bottom: 2rem; }
.py-10   { padding-top: 2.5rem;   padding-bottom: 2.5rem; }
.py-12   { padding-top: 3rem;     padding-bottom: 3rem; }
.py-16   { padding-top: 4rem;     padding-bottom: 4rem; }

.pl-2   { padding-left: 0.5rem; }
.pl-9   { padding-left: 2.25rem; }
.pl-10  { padding-left: 2.5rem; }

.pr-2   { padding-right: 0.5rem; }
.pr-3   { padding-right: 0.75rem; }
.pr-4   { padding-right: 1rem; }

.pt-2   { padding-top: 0.5rem; }
.pt-3   { padding-top: 0.75rem; }
.pt-4   { padding-top: 1rem; }
.pt-6   { padding-top: 1.5rem; }
.pt-8   { padding-top: 2rem; }
.pt-12  { padding-top: 3rem; }
.pt-20  { padding-top: 5rem; }

.pb-1   { padding-bottom: 0.25rem; }
.pb-2   { padding-bottom: 0.5rem; }
.pb-4   { padding-bottom: 1rem; }
.pb-5   { padding-bottom: 1.25rem; }
.pb-6   { padding-bottom: 1.5rem; }
.pb-8   { padding-bottom: 2rem; }
.pb-10  { padding-bottom: 2.5rem; }
.pb-12  { padding-bottom: 3rem; }
.pb-16  { padding-bottom: 4rem; }

/* ── Margin ── */
.mt-0\.5 { margin-top: 0.125rem; }
.mt-1    { margin-top: 0.25rem; }
.mt-1\.5 { margin-top: 0.375rem; }
.mt-2    { margin-top: 0.5rem; }
.mt-3    { margin-top: 0.75rem; }
.mt-4    { margin-top: 1rem; }
.mt-6    { margin-top: 1.5rem; }
.mt-8    { margin-top: 2rem; }
.-mt-1   { margin-top: -0.25rem; }
.-mt-3   { margin-top: -0.75rem; }

.mb-1    { margin-bottom: 0.25rem; }
.mb-1\.5 { margin-bottom: 0.375rem; }
.mb-2    { margin-bottom: 0.5rem; }
.mb-3    { margin-bottom: 0.75rem; }
.mb-4    { margin-bottom: 1rem; }
.mb-6    { margin-bottom: 1.5rem; }
.mb-8    { margin-bottom: 2rem; }
.-mb-5   { margin-bottom: -1.25rem; }
.-mb-6   { margin-bottom: -1.5rem; }

.ml-2    { margin-left: 0.5rem; }
.ml-auto { margin-left: auto; }

.mx-auto { margin-left: auto; margin-right: auto; }
.mx-6    { margin-left: 1.5rem; margin-right: 1.5rem; }
.-mx-5   { margin-left: -1.25rem; margin-right: -1.25rem; }
.-mx-6   { margin-left: -1.5rem;  margin-right: -1.5rem; }

/* ── 定位偏移 ── */
.inset-0     { inset: 0; }
.top-0       { top: 0; }
.top-2\.5    { top: 0.625rem; }
.top-3       { top: 0.75rem; }
.top-24      { top: 6rem; }
.-top-12     { top: -3rem; }
.bottom-3    { bottom: 0.75rem; }
.bottom-4    { bottom: 1rem; }
.bottom-6    { bottom: 1.5rem; }
.left-0      { left: 0; }
.left-3      { left: 0.75rem; }
.left-3\.5   { left: 0.875rem; }
.left-4      { left: 1rem; }
.left-6      { left: 1.5rem; }
.left-1\/4   { left: 25%; }
.right-0     { right: 0; }
.right-2\.5  { right: 0.625rem; }
.right-4     { right: 1rem; }
.right-6     { right: 1.5rem; }
.right-10    { right: 2.5rem; }
.-right-12   { right: -3rem; }

/* ── Z-index ── */
.-z-10 { z-index: -10; }
.z-10  { z-index: 10; }
.z-40  { z-index: 40; }
.z-50  { z-index: 50; }

/* ── Overflow ── */
.overflow-hidden  { overflow: hidden; }
.overflow-x-auto  { overflow-x: auto; }
.overflow-y-auto  { overflow-y: auto; }

/* ── Border ── */
.border-b-0     { border-bottom-width: 0; }
.border-t-0     { border-top-width: 0; }
.border-t       { border-top: 1px solid var(--c-outline-variant); }
.border-collapse { border-collapse: collapse; }

/* 分隔線（兄弟元素之間加頂部邊線） */
.divide-y > * + *   { border-top-width: 1px; border-top-style: solid; }
.divide-y-0 > * + * { border-top-width: 0; }

/* ── Border Radius（圓角） ── */
.rounded         { border-radius: 0.25rem; }
.rounded-md      { border-radius: 0.375rem; }
.rounded-lg      { border-radius: 0.5rem; }
.rounded-xl      { border-radius: 0.75rem; }
.rounded-2xl     { border-radius: 1rem; }
.rounded-full    { border-radius: 9999px; }
.rounded-l-lg    { border-top-left-radius: 0.5rem; border-bottom-left-radius: 0.5rem; }
.rounded-r-lg    { border-top-right-radius: 0.5rem; border-bottom-right-radius: 0.5rem; }
.rounded-b-xl    { border-bottom-left-radius: 0.75rem; border-bottom-right-radius: 0.75rem; }
.rounded-bl-full { border-bottom-left-radius: 9999px; }

/* ── Box Shadow ── */
.shadow-sm  { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); }
.shadow     { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.10), 0 1px 2px rgba(0, 0, 0, 0.06); }
.shadow-md  { box-shadow: 0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.06); }
.shadow-xl  { box-shadow: 0 20px 25px rgba(0, 0, 0, 0.10), 0 10px 10px rgba(0, 0, 0, 0.04); }
.shadow-inner { box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.06); }
.shadow-\[0_1px_8px_rgba\(0\,0\,0\,0\.04\)\] { box-shadow: 0 1px 8px rgba(0, 0, 0, 0.04); }

/* ── Object Fit / Background ── */
.object-cover  { object-fit: cover; }
.bg-cover      { background-size: cover; }
.bg-center     { background-position: center; }

/* ── Opacity ── */
.opacity-0  { opacity: 0; }
.opacity-40 { opacity: 0.4; }
.opacity-60 { opacity: 0.6; }
.opacity-80 { opacity: 0.8; }
.opacity-90 { opacity: 0.9; }

/* ── Cursor ── */
.cursor-pointer     { cursor: pointer; }
.cursor-not-allowed { cursor: not-allowed; }

/* ── Pointer Events ── */
.pointer-events-none { pointer-events: none; }

/* ── Appearance ── */
.appearance-none {
  appearance: none;
  -webkit-appearance: none;
}

/* ── Accent Color ── */
.accent-primary { accent-color: var(--c-primary); }

/* ── Backdrop Filter（模糊效果） ── */
.backdrop-blur-sm {
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.backdrop-blur-md {
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.backdrop-blur-xl {
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
}

/* ── Filter ── */
.grayscale  { filter: grayscale(100%); }
.grayscale-0 { filter: grayscale(0); }
.blur-3xl   { filter: blur(64px); }

/* ── Transform ── */
.transform           { transform: translateZ(0); }
.-translate-y-1\/2   { transform: translateY(-50%); }
.translate-y-20      { transform: translateY(5rem); }
.scale-95            { transform: scale(0.95); }

/* ── Transition ── */
.transition-all       { transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1); }
.transition-colors    { transition: color 150ms, background-color 150ms, border-color 150ms; }
.transition-shadow    { transition: box-shadow 150ms; }
.transition-transform { transition: transform 150ms; }
.duration-300         { transition-duration: 300ms; }
.duration-500         { transition-duration: 500ms; }

/* ── Animation ── */
.animate-pulse  { animation: pulse  2s cubic-bezier(0.4, 0, 0.6, 1) infinite; }
.animate-ping   { animation: ping   1s cubic-bezier(0, 0, 0.2, 1) infinite; }
.animate-bounce { animation: bounce 1s infinite; }

/* ── Space（兄弟元素間距） ── */
.-space-x-2 > * + * { margin-left: -0.5rem; }
.space-y-1\.5 > * + * { margin-top: 0.375rem; }
.space-y-2  > * + * { margin-top: 0.5rem; }
.space-y-3  > * + * { margin-top: 0.75rem; }


/* ============================================================
 *  Section 8 — Hover / Focus / Active / Disabled 狀態類別
 * ============================================================ */

/* ── Hover：背景色 ── */
.hover\:bg-primary:hover                  { background-color: var(--c-primary); }
.hover\:bg-primary-container:hover        { background-color: var(--c-primary-container); }
.hover\:bg-surface-container:hover        { background-color: var(--c-surface-container); }
.hover\:bg-surface-container-high:hover   { background-color: var(--c-surface-container-high); }
.hover\:bg-surface-container-low:hover    { background-color: var(--c-surface-container-low); }
.hover\:bg-surface-variant:hover          { background-color: var(--c-surface-variant); }
.hover\:bg-surface-container-highest:hover { background-color: var(--c-surface-container-highest); }

/* Hover：帶透明度背景色 */
.hover\:bg-surface-container\/40:hover       { background-color: rgba(234, 237, 255, 0.40); }
.hover\:bg-surface-container-low\/40:hover   { background-color: rgba(242, 243, 255, 0.40); }
.hover\:bg-surface-container-low\/50:hover   { background-color: rgba(242, 243, 255, 0.50); }
.hover\:bg-surface-container-lowest\/80:hover { background-color: rgba(255, 255, 255, 0.80); }

/* Hover：濾鏡 */
.hover\:brightness-110:hover { filter: brightness(1.1); }
.hover\:grayscale-0:hover    { filter: grayscale(0); }

/* Hover：陰影 */
.hover\:shadow-md:hover { box-shadow: 0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.06); }

/* Hover：文字顏色 */
.hover\:text-error:hover                  { color: var(--c-error); }
.hover\:text-on-primary:hover             { color: var(--c-on-primary); }
.hover\:text-on-surface:hover             { color: var(--c-on-surface); }
.hover\:text-primary:hover                { color: var(--c-primary); }
.hover\:text-primary-container:hover      { color: var(--c-primary-container); }
.hover\:text-inverse-on-surface:hover     { color: var(--c-inverse-on-surface); }
.hover\:text-surface-container-lowest:hover { color: var(--c-surface-container-lowest); }

/* Hover：裝飾 */
.hover\:underline:hover   { text-decoration: underline; }
.hover\:scale-105:hover   { transform: scale(1.05); }

/* ── Focus：背景色 ── */
.focus\:bg-surface-container:focus        { background-color: var(--c-surface-container); }
.focus\:bg-surface-container-high:focus   { background-color: var(--c-surface-container-high); }
.focus\:bg-surface-container-lowest:focus { background-color: var(--c-surface-container-lowest); }

/* Focus：輪廓 */
.focus\:outline-none:focus { outline: none; }
.focus\:ring-2:focus       { box-shadow: 0 0 0 2px var(--c-primary); }
.focus\:shadow-md:focus    { box-shadow: 0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.06); }

/* Focus：文字顏色 */
.focus\:text-primary:focus { color: var(--c-primary); }

/* ── Active ── */
.active\:scale-95:active { transform: scale(0.95); }

/* ── Disabled ── */
.disabled\:opacity-50:disabled { opacity: 0.5; }


/* ============================================================
 *  Section 9 — Group Hover
 *  說明：
 *  原 Tailwind 的 group / group-hover: 需父元素有 .group class，
 *  子元素以 .group-hover\:xxx 等 class 定義當父元素 hover 時的樣式。
 *  純 CSS 實作：父元素 .group:hover 選取子元素來控制。
 *
 *  使用範例：
 *    <div class="group">
 *      <img class="group-hover\:scale-105" ...>
 *    </div>
 * ============================================================ */

.group:hover .group-hover\:scale-105  { transform: scale(1.05); }
.group:hover .group-hover\:scale-110  { transform: scale(1.10); }
.group:hover .group-hover\:grayscale-0 { filter: grayscale(0); }


/* ============================================================
 *  Section 10 — Responsive Breakpoints
 *  sm: 640px、md: 768px、lg: 1024px、xl: 1280px
 * ============================================================ */

/* ── sm: (min-width: 640px) ── */
@media (min-width: 640px) {
  .sm\:flex         { display: flex; }
  .sm\:flex-none    { flex: none; }
  .sm\:flex-row     { flex-direction: row; }
  .sm\:gap-4        { gap: 1rem; }
  .sm\:grid-cols-2  { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sm\:grid-cols-3  { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .sm\:inline       { display: inline; }
  .sm\:inline-flex  { display: inline-flex; }
  .sm\:items-center { align-items: center; }
  .sm\:mt-0         { margin-top: 0; }
  .sm\:p-5          { padding: 1.25rem; }
  .sm\:p-8          { padding: 2rem; }
  .sm\:px-6         { padding-left: 1.5rem; padding-right: 1.5rem; }
  .sm\:w-72         { width: 18rem; }
  .sm\:w-auto       { width: auto; }
}

/* ── md: (min-width: 768px) ── */
@media (min-width: 768px) {
  .md\:col-span-2  { grid-column: span 2 / span 2; }
  .md\:flex        { display: flex; }
  .md\:flex-row    { flex-direction: row; }
  .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .md\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .md\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .md\:h-96        { height: 24rem; }
  .md\:inline      { display: inline; }
  .md\:items-center { align-items: center; }
  .md\:items-end   { align-items: flex-end; }
}

/* ── lg: (min-width: 1024px) ── */
@media (min-width: 1024px) {
  .lg\:col-span-1  { grid-column: span 1  / span 1; }
  .lg\:col-span-2  { grid-column: span 2  / span 2; }
  .lg\:col-span-3  { grid-column: span 3  / span 3; }
  .lg\:col-span-4  { grid-column: span 4  / span 4; }
  .lg\:col-span-5  { grid-column: span 5  / span 5; }
  .lg\:col-span-7  { grid-column: span 7  / span 7; }
  .lg\:col-span-8  { grid-column: span 8  / span 8; }
  .lg\:flex        { display: flex; }
  .lg\:flex-row    { flex-direction: row; }
  .lg\:grid-cols-2  { grid-template-columns: repeat(2,  minmax(0, 1fr)); }
  .lg\:grid-cols-3  { grid-template-columns: repeat(3,  minmax(0, 1fr)); }
  .lg\:grid-cols-4  { grid-template-columns: repeat(4,  minmax(0, 1fr)); }
  .lg\:grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .lg\:items-center { align-items: center; }
  .lg\:items-end    { align-items: flex-end; }
  .lg\:p-7          { padding: 1.75rem; }
  .lg\:p-8          { padding: 2rem; }
  .lg\:p-10         { padding: 2.5rem; }
  .lg\:pb-0         { padding-bottom: 0; }
  .lg\:px-12        { padding-left: 3rem; padding-right: 3rem; }
  .lg\:py-14        { padding-top: 3.5rem; padding-bottom: 3.5rem; }
  .lg\:w-auto       { width: auto; }
}

/* ── xl: (min-width: 1280px) ── */
@media (min-width: 1280px) {
  .xl\:flex { display: flex; }
}


/* ============================================================
 *  Section 11 — 常用複合元件樣式
 *  語義化元件 class，提供快速套用的複合樣式
 * ============================================================ */

/* ── 頁面容器（置中 + 最大寬度 + 側邊距） ── */
.page-container {
  max-width: 80rem;       /* max-w-7xl */
  margin-left: auto;
  margin-right: auto;
  padding-left: 1.5rem;   /* px-6 */
  padding-right: 1.5rem;
}
@media (min-width: 1024px) {
  .page-container {
    padding-left: 3rem;   /* lg:px-12 */
    padding-right: 3rem;
  }
}

/* ── 卡片（白底、圓角、陰影） ── */
.card {
  background-color: var(--c-surface-container-lowest);
  border-radius: 0.75rem;
  padding: 1.5rem;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

/* 次級卡片（淡色背景） */
.card-section {
  background-color: var(--c-surface-container-low);
  border-radius: 0.75rem;
  padding: 1.5rem;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

/* ── 按鈕基礎樣式 ── */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.625rem 1.25rem;
  border-radius: 0.5rem;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 14px;
  font-weight: 600;
  line-height: 20px;
  cursor: pointer;
  border: none;
  transition: all 150ms;
  text-decoration: none;
}

/* 主要按鈕 */
.btn-primary {
  background-color: var(--c-primary);
  color: var(--c-on-primary);
}
.btn-primary:hover { background-color: var(--c-primary-container); }

/* 次要按鈕（橙色） */
.btn-secondary {
  background-color: var(--c-secondary-container);
  color: var(--c-on-primary);
}
.btn-secondary:hover { filter: brightness(1.1); }

/* 幽靈按鈕（淡色背景） */
.btn-ghost {
  background-color: var(--c-surface-container);
  color: var(--c-on-surface);
}
.btn-ghost:hover { background-color: var(--c-surface-container-high); }

/* ── 徽章（Badge） ── */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.125rem 0.625rem;
  border-radius: 0.25rem;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.badge-primary   { background-color: var(--c-primary);                color: var(--c-on-primary); }
.badge-secondary { background-color: var(--c-secondary-container);    color: var(--c-on-secondary-container); }
.badge-error     { background-color: var(--c-error);                  color: var(--c-on-error); }
.badge-surface   { background-color: var(--c-surface-container-high); color: var(--c-on-surface); }
.badge-pill      { border-radius: 9999px; }

/* ── 導覽連結 ── */
.nav-link {
  display: block;
  padding: 0.5rem 0.75rem;
  border-radius: 0.5rem;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 14px;
  font-weight: 600;
  color: var(--c-on-surface-variant);
  text-decoration: none;
  transition: all 150ms;
}
.nav-link:hover {
  background-color: var(--c-surface-container-high);
  color: var(--c-on-surface);
}
/* 啟用（當前頁面）狀態 */
.nav-link.active {
  background-color: var(--c-primary-container);
  color: var(--c-on-primary-container);
}

/* ── 輸入框 ── */
.input-field {
  width: 100%;
  padding: 0.625rem 0.875rem;
  background-color: var(--c-surface-container-low);
  color: var(--c-on-surface);
  border: none;
  border-radius: 0.75rem;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 14px;
  line-height: 20px;
  outline: none;
  transition: all 150ms;
}
.input-field::placeholder { color: var(--c-outline); }
.input-field:focus {
  background-color: var(--c-surface-container-lowest);
  box-shadow: 0 0 0 2px var(--c-primary);
}

/* ── 網站頂部固定導覽列 ── */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 50;
  height: 5rem;
  background-color: rgba(250, 248, 255, 0.90);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  box-shadow: 0 1px 8px rgba(0, 0, 0, 0.04);
}

/* 導覽列內容區（置中對齊） */
.site-header-inner {
  max-width: 80rem;
  margin: 0 auto;
  height: 100%;
  padding: 0 1.5rem;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 1rem;
}
@media (min-width: 1024px) {
  .site-header-inner { padding: 0 3rem; }
}

/* ── 主要內容區（補足 Header 高度偏移） ── */
.main-content {
  padding-top: 5rem;                   /* 等同 Header 高度 */
  min-height: calc(100vh - 80px);
  background-color: var(--c-surface);
}

/* ── 水平分隔線 ── */
.divider {
  border: none;
  border-top: 1px solid var(--c-outline-variant);
  margin: 0;
}

/* ── 狀態指示圓點 ── */
.status-dot {
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 9999px;
  background-color: var(--c-secondary-container);
}
/* 即時狀態（動態脈動） */
.status-dot.live { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; }

/* ── 進度條 ── */
.progress-bar-track {
  width: 100%;
  height: 0.375rem;
  background-color: var(--c-surface-container-highest);
  border-radius: 9999px;
  overflow: hidden;
}
.progress-bar-fill {
  height: 100%;
  border-radius: 9999px;
  background-color: var(--c-primary);
  transition: width 500ms;
}

/* ── 即時標籤（LIVE badge） ── */
.live-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.25rem 0.625rem;
  border-radius: 0.25rem;
  background-color: rgba(253, 118, 26, 0.15);
  color: var(--c-secondary);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
}

/* ── Placeholder 顏色 ── */
.placeholder\:text-outline::placeholder { color: var(--c-outline); }

/* ── File Input 樣式 ── */
.file\:bg-surface-container::file-selector-button  { background-color: var(--c-surface-container); }
.file\:border-0::file-selector-button              { border: 0; }
.file\:cursor-pointer::file-selector-button        { cursor: pointer; }
.file\:mr-2::file-selector-button                  { margin-right: 0.5rem; }
.file\:px-3::file-selector-button                  { padding-left: 0.75rem; padding-right: 0.75rem; }
.file\:py-2::file-selector-button                  { padding-top: 0.5rem; padding-bottom: 0.5rem; }
.file\:rounded-lg::file-selector-button            { border-radius: 0.5rem; }
.file\:text-on-surface::file-selector-button       { color: var(--c-on-surface); }

/* ── 完全隱藏捲軸（元素層級） ── */
.scrollbar-none                     { scrollbar-width: none; }
.scrollbar-none::-webkit-scrollbar  { display: none; }


/* ============================================================
 *  Section 12 — 首頁導覽列、手機選單、頁面專用元件
 * ============================================================ */

/* xl 斷點補充：styles.css 原本只有 xl:flex，補上 xl:hidden */
@media (min-width: 1280px) {
  .xl\:hidden { display: none !important; }
}

/* ── 網站標題主文字 ── */
.site-title {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 24px;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.01em;
  color: #9d4300;
}

/* ── Logo 連結區（響應式） ── */
.site-logo-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  min-width: 0;          /* 允許縮小 */
  overflow: hidden;
  flex-shrink: 1;        /* 空間不足時可縮 */
}

/* Logo 圖片：手機版縮小 */
.site-logo-img {
  height: 2rem;          /* 手機預設 32px */
  width: auto;
  display: block;
  flex-shrink: 0;
}
@media (min-width: 480px) {
  .site-logo-img { height: 2.5rem; }  /* ≥ 480px：40px */
}
@media (min-width: 640px) {
  .site-logo-img { height: 3rem; }    /* ≥ 640px：48px（原始大小） */
}

/* Logo 文字欄 */
.site-logo-text {
  display: flex;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
}

/* 網站標題：手機版縮小 */
.site-logo-link .site-title {
  font-size: 15px;       /* 手機預設 */
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
@media (min-width: 400px) {
  .site-logo-link .site-title { font-size: 17px; }
}
@media (min-width: 480px) {
  .site-logo-link .site-title { font-size: 20px; }
}
@media (min-width: 640px) {
  .site-logo-link .site-title { font-size: 24px; } /* 原始大小 */
}

/* 副標題（系統名稱） */
.site-subtitle {
  display: block;
  font-size: 10px;
  line-height: 1.3;
  margin-top: 0.15rem;
  letter-spacing: 0.05em;
  color: var(--c-on-surface-variant);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
@media (min-width: 480px) {
  .site-subtitle { font-size: 11px; }
}
/* 極小螢幕（< 360px）隱藏副標題以節省空間 */
@media (max-width: 359px) {
  .site-subtitle { display: none; }
}


/* ── 導覽按鈕（桌機橫向選單）── */
.nav-btn {
  display: inline-flex;
  align-items: center;
  padding: 0.5rem 0.75rem;
  border-radius: 0.5rem;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 16px;
  font-weight: 600;
  line-height: 20px;
  color: var(--c-on-surface);
  background-color: transparent;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 150ms;
}
.nav-btn:hover {
  background-color: rgba(228, 103, 18, 0.12); /* 淡橘色 */
  color: var(--c-on-surface);
  text-decoration: none;
}
.nav-btn.active {
  background-color: #e46712;
  color: #fff;
}
.nav-btn.active:hover {
  filter: brightness(1.08);
  background-color: #e46712;
}

/* ── 手機展開選單 ── */
#mobile-menu {
  display: none;
}
#mobile-menu.open {
  display: flex;
  position: fixed;                /* 脫離 header 高度限制，獨立定位 */
  top: 5rem;                      /* 緊接在 header 下方 */
  left: 0;
  right: 0;
  z-index: 49;                    /* 低於 header(50) 一層 */
  max-height: calc(100vh - 5rem); /* 不超出視窗底部 */
  overflow-y: auto;               /* 選項過多時可向下滑動 */
}
@media (min-width: 1280px) {
  /* xl 以上強制隱藏手機選單和漢堡按鈕 */
  #mobile-menu,
  #mobile-menu.open   { display: none !important; }
  #btn-menu-toggle    { display: none !important; }
}

#mobile-menu a {
  display: block;
  padding: 0.625rem 1rem;
  border-radius: 0.5rem;
  background-color: #fff;
  color: var(--c-on-surface) !important;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  transition: background-color 150ms;
}
#mobile-menu a:hover {
  background-color: rgba(228, 103, 18, 0.12);
  text-decoration: none;
}
#mobile-menu a.active-mobile {
  background-color: #e46712;
  color: #fff !important;
}
#mobile-menu a.active-mobile:hover {
  filter: brightness(1.08);
}

/* ── 行事資訊卡片左側橘線 ── */
.info-card {
  border-left: 3px solid var(--c-secondary-container);
}

/* ── Hero 全寬背景圖（突破父容器寬度限制） ── */
.hero-fullbleed {
  /* 使用 100vw + 負 margin 技術讓背景圖撐滿視窗全寬 */
  position: relative;
  width: 100vw;
  left: 50%;
  right: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
  min-height: 300px;
  overflow: hidden;
  /* 背景圖由 inline style 提供 url()，此處統一其他屬性 */
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* ── 報名統計頁面：卡片標頭（深色背景，呈現階層上層） ── */
.stat-card-header {
  padding: 0.75rem 1.25rem;          /* py-3 px-5 */
  display: flex;
  align-items: center;
  justify-content: space-between;
  background-color: rgba(157,67,0, 0.08);
  border-bottom: 2px solid rgba(228, 103, 18, 0.2);
}
.stat-card-header span {
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 16px;
  font-weight: 700;
  color: #7a3200;
}

/* ── 報名統計頁面：表格標頭列（淺色背景，呈現階層下層） ── */
.stat-thead-row {
  background-color: rgba(157, 67, 0, 0.04);
}
.stat-thead-row th {
  color: #9d4300;
  font-weight: 700;
  border-bottom: 2px solid rgba(216, 219, 227, 0.3);
  white-space: nowrap;
}

/* ── 報名統計頁面：表格第二層標頭列（更淺，sub-header 用） ── */
.stat-thead-row-sub {
  background-color: rgba(157, 67, 0, 0.02);
}
.stat-thead-row-sub th {
  color: #9d4300;
  font-weight: 600;
  border-bottom: 2px solid rgba(216, 219, 227, 0.3);
}
