/* ═══════════════════════════════════════════════════════════════ 重譯文本分析系統 Agent — Refined Dark Academic Dashboard Palette: Sky-500 (#0ea5e9) + Indigo-400 (#818cf8) on Slate-950 Typography: Inter (UI) + JetBrains Mono (data) + Crimson Pro (headings) WCAG AA compliant (4.5:1+) ═══════════════════════════════════════════════════════════════ */ @import url('https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@400;600;700&display=swap'); /* ── 1. TOKENS & RESET ─────────────────────────────────────────── */ /* 預設淺色;系統設定為深色模式時(或明確帶 .dark class)自動切換深色 */ /* 底色體系(2026-08-12 三修):千卉回報「純黑或純白背景面積很大,視覺壓力 也變大」。量過三層才確定抱怨的來源不只對話欄——淺色的頁面底 #f8fafc 幾乎 等於白,而真正的大面積純白是 --c-surface(表格資料列+所有 Gradio 區塊); 深色則是 #020617 近乎純黑。改成三層結構,淺深共用同一套邏輯: 底(--c-bg) 淡藍/帶藍深色,鋪滿頁面、canvas、導覽、對話欄 浮起物(--c-bubble-bg)比底亮一階,對話氣泡 資料紙張(--c-surface)淺色維持純白當表格底(資料密集區可讀性優先), 深色跟著抬亮 淺色氣泡「比欄底亮一階、浮在上面」是千卉選的方案 2,剛好與深色本來就有的 關係(氣泡比欄底亮)一致,兩個主題不再各講各的。 */ :root { --c-bg: #f3f8fd; --c-surface: #ffffff; --c-surface2: #eef5fc; --c-surface3: #ffffff; --c-surface3-border: #e2e8f0; --c-border: rgba(2,132,199,.16); --c-border-hover: rgba(2,132,199,.35); /* 2026-08-12(業主回報淺色對比不足):淺色的 --c-border 疊在白/近白底上 只有約 1.2:1,遠低於 WCAG 1.4.11 對「UI 元件邊界」要求的 3:1,區塊外框 跟水平分界線在淺色模式下等於看不見(深色當初已針對 .app-header/欄邊框/ 標題底線個別補過 rgba(148,163,184,.28),淺色從沒補)。這裡改成兩級線條, 之後新增元件挑其中一級,不要再直接用 --c-border 畫可見邊界: --c-border-strong 結構線(區塊外框、欄位分隔、水平分界) --c-divider 細線(表格資料列線、對話氣泡邊框) 深色值直接沿用原本散在各選擇器的硬寫值,深色外觀零改變。 2026-08-12 二修(千卉看實機截圖後回饋「線條對比好高、蠻醜」): 結構線從 #7c8798(對白 3.64:1)柔化到 #a3aebd(2.25:1)。取捨要 講明白——2.25:1 沒有達到 WCAG 1.4.11 對「UI 元件邊界」的 3:1 門檻, 是刻意的視覺決定;但比改版前的 1.2:1 高近一倍,業主回報的「看不清楚 區塊」在這個亮度差已經解決。文字對比不受這條影響,仍全數通過 AA。 細線 --c-divider 淺色 #b6c0cd 對氣泡底 1.64:1、對欄底 1.76:1, 跟深色 rgba(148,163,184,.28) 疊 #0d1526 算出來的 1.67:1 幾乎相同, 這就是「深淺兩個模式的氣泡邊框看起來一樣淡」的依據(用量測對齊, 不是各自挑一個看起來順眼的值)。 2026-08-12 四修(千卉指定:邊線與水平線改成跟「重新選擇研究情境」 按鈕的邊框同一個色):結構線淺色改成 rgba(2,132,199,.30),也就是 button.secondary 用的那個值,全站線條與次要按鈕從此同一個來源。 疊在新的淺底 #f3f8fd 上約 1.46:1,比三修的 2.3:1 再淡一階——這是 第三次往柔和方向調,已經明確離 WCAG 1.4.11 的 3:1 很遠,屬業主拍板 的視覺取捨(文字對比不受影響,仍全數通過 AA)。 2026-08-12 三修(千卉:淺色系的邊框不要太深,要維持亮麗的淺藍): #a3aebd/#b6c0cd 是中性灰藍,配上這輪的淡藍底會顯灰、顯髒。改走 sky 相:結構線 #6ba3d6、細線 #a9cbe8、輸入框 #7fb0d9。**亮度級距 不動**(結構線仍約 2.3:1、氣泡邊框仍約 1.6:1,跟前一輪柔化後的手感 相同),換的是色相不是輕重——這樣既維持千卉要的柔和度,也讓線條跟 底色同屬一個藍色家族。 --c-border 本身維持原值不動:它還餵給 --block-border-color/ --border-color-primary 這兩個 Gradio 原生元件用的變數,動了會牽連 一整批沒盤點過的元件。 */ --c-border-strong: rgba(2,132,199,.30); --c-divider: #a9cbe8; /* 對話氣泡邊框獨立一個 token:前一版讓它共用 --c-divider,結果深淺兩邊 對不齊——淺色的 #a9cbe8 是對著「結構線那一級的深色值(alpha .28)」 挑的,但深色的 --c-divider 其實是更淡的 .18,實測深色氣泡邊框只有 1.37:1、淺色 1.61:1,兩個模式看起來不一樣。分成獨立 token 之後兩邊 各自對齊到 1.61:1,--c-divider 也回歸單一用途(表格資料列細線)。 */ --c-bubble-border: #a9cbe8; /* 表格表頭底色與對話氣泡底色改成獨立 token(原本借用 --c-surface2/ --c-surface):淺色時兩者疊在自己的鄰接底色上都只有 1.03–1.07:1, 業主回報「表頭跟文字黏在一起」「看不清楚區塊的顏色」就是這個。 */ --c-thead-bg: #d8e8f6; --c-bubble-bg: #ffffff; --c-accent: #0284c7; --c-accent-strong: #0369a1; --c-accent2: #4f46e5; --c-accent2-strong: #4338ca; --c-accent3: #9333ea; --c-accent-rgb: 2,132,199; --c-accent2-rgb: 79,70,229; --c-accent3-rgb: 147,51,234; --c-bg-rgb: 255,255,255; --c-text: #1e293b; --c-text-soft: #334155; --c-text-muted: #475569; --c-text-subtle: #64748b; --c-success: #047857; --c-success-rgb: 4,120,87; --c-warn: #b45309; --c-user-bg: #dcfce7; --c-user-border: #86efac; --c-user-text: #166534; --c-code-bg: #e0f2fe; --c-code-text: #b45309; --c-input-bg: #ffffff; /* 2026-08-12:原本 rgba(2,132,199,.22) 疊白只有約 1.3:1,輸入框邊界同樣 受 1.4.11 的 3:1 規範;語料 metadata 表單「欄位看不清楚」有一半是這條。 */ --c-input-border: #7fb0d9; --c-link-hover: #075985; --c-scrollbar: #cbd5e1; --c-scrollbar-hover: #94a3b8; --font-size-base: 0.875rem; --body-background-fill: var(--c-bg) !important; --background-fill-primary: var(--c-surface) !important; --background-fill-secondary: #dfeaf6 !important; --block-background-fill: var(--c-surface) !important; --block-border-color: var(--c-border) !important; --border-color-primary: var(--c-border) !important; --color-accent: var(--c-accent) !important; --color-accent-soft: rgba(2,132,199,.08) !important; --body-text-color: var(--c-text) !important; --block-label-text-color: var(--c-text-muted) !important; --block-title-text-color: var(--c-text-soft) !important; --input-background-fill: var(--c-input-bg) !important; --input-border-color: var(--c-input-border) !important; --button-primary-background-fill: var(--c-accent) !important; --button-primary-text-color: #fff !important; --shadow-drop: 0 1px 3px rgba(15,23,42,.10) !important; } /* 注意:系統深色模式的 @media 覆寫改放在 launch(head=...) 注入的獨立