Ambient Glass
环境玻璃视频自己的颜色化成模糊的环境光,内容浮在磨砂玻璃岛上。
The video's own colours melt into a blurred ambient field; content floats on frosted glass islands.
Ambient Glass
把长视频读成一篇文章
好的界面不抢内容。环境光取自视频,其余交给留白。
开始使用了解更多
本月进度62%12:04 · 1,280 字
Palette
Type
标题 Display 永正文 Body — 好的界面不抢内容 1234567890Previews use your installed fonts; webfonts are not bundled.
| Display | -apple-system, "SF Pro Display", "PingFang SC", "Noto Sans SC", system-ui, sans-serif |
|---|---|
| Body | -apple-system, "SF Pro Text", "PingFang SC", "Noto Sans SC", system-ui, sans-serif |
| title | 28px / 1.25, weight 600 |
| article | 17px / 1.75 |
| ui | 15px / 1.5 |
| label | 13px / 1.4 |
DeepSeek-like reading typography: one clean sans for CJK and Latin, generous line-height, no serif.
Shape & surface
| radius · control | 14px |
|---|---|
| radius · island | 22px |
| radius · island large | 24px |
| shadow | 0 1px 0 rgb(255 255 255 / .06) inset, 0 20px 40px -24px rgb(0 0 0 / .6) |
| glass | 28px blur · rgb(28 31 40 / .55) |
backdrop-filter: blur(28px) saturate(160%); 1px inner edge rgb(255 255 255/.10). Ambient layer: 3 radial gradients from sampled video colours, blur(80px), opacity .45.
Motion
- Ambient colours cross-fade over ~1.5s when the video scene changes; never faster.
- Islands do not move; only the field behind them breathes.
- prefers-reduced-motion and prefers-reduced-transparency fall back to the solid Brass Reading surfaces.
Do / Don't
Do
- Sample 3 colours from the current video frame and keep them desaturated enough that text stays ≥ 7:1.
- Keep the reading column on a glass island, never directly on the gradient.
- Keep brass 金句 marks from Brass Reading so meaning carries over.
Don't
- Don't animate the field on every frame; it should feel like room light, not a visualiser.
- Don't stack glass on glass.
- Don't drop the solid fallback for browsers without backdrop-filter.
Used in
- readvideo (proposal, sibling restyle in progress)
Sources
Proposal from the lead's brief, 2026-10-13; tokens are a starting point until the restyle lands.
Updated 2026-10-13
Export
/* Ambient Glass / 环境玻璃 — The video's own colours melt into a blurred ambient field; content floats on frosted glass islands. */
:root {
--readvideo-ambient-glass-bg: #0d0f14;
--readvideo-ambient-glass-surface: rgb(28 31 40 / .55);
--readvideo-ambient-glass-ink: #f4f5f7;
--readvideo-ambient-glass-muted: #a7adbb;
--readvideo-ambient-glass-accent: #f4f5f7;
--readvideo-ambient-glass-accent-ink: #0d0f14;
--readvideo-ambient-glass-line: rgb(255 255 255 / .10);
--readvideo-ambient-glass-highlight: #dcc28a;
--readvideo-ambient-glass-highlight-wash: color-mix(in oklab, #dcc28a 14%, transparent);
--readvideo-ambient-glass-pal-base: #0d0f14;
--readvideo-ambient-glass-pal-ambient-a-sampled: #3b5bdb;
--readvideo-ambient-glass-pal-ambient-b-sampled: #c2410c;
--readvideo-ambient-glass-pal-ambient-c-sampled: #0f766e;
--readvideo-ambient-glass-pal-glass-fill: #1c1f28;
--readvideo-ambient-glass-pal-ink: #f4f5f7;
--readvideo-ambient-glass-pal-muted: #a7adbb;
--readvideo-ambient-glass-pal-edge: #ffffff;
--readvideo-ambient-glass-pal-brass: #dcc28a;
--readvideo-ambient-glass-font-display: -apple-system, "SF Pro Display", "PingFang SC", "Noto Sans SC", system-ui, sans-serif;
--readvideo-ambient-glass-font-body: -apple-system, "SF Pro Text", "PingFang SC", "Noto Sans SC", system-ui, sans-serif;
--readvideo-ambient-glass-text-title: 28px / 1.25, weight 600;
--readvideo-ambient-glass-text-article: 17px / 1.75;
--readvideo-ambient-glass-text-ui: 15px / 1.5;
--readvideo-ambient-glass-text-label: 13px / 1.4;
--readvideo-ambient-glass-radius-control: 14px;
--readvideo-ambient-glass-radius-island: 22px;
--readvideo-ambient-glass-radius-island-large: 24px;
--readvideo-ambient-glass-glass-blur: 28px;
--readvideo-ambient-glass-glass-fill: rgb(28 31 40 / .55);
--readvideo-ambient-glass-shadow: 0 1px 0 rgb(255 255 255 / .06) inset, 0 20px 40px -24px rgb(0 0 0 / .6);
}/* Tailwind v4 — paste into your main CSS after @import "tailwindcss"; */
@theme {
--color-bg: #0d0f14;
--color-surface: rgb(28 31 40 / .55);
--color-ink: #f4f5f7;
--color-muted: #a7adbb;
--color-accent: #f4f5f7;
--color-accent-ink: #0d0f14;
--color-line: rgb(255 255 255 / .10);
--color-highlight: #dcc28a;
--font-display: -apple-system, "SF Pro Display", "PingFang SC", "Noto Sans SC", system-ui, sans-serif;
--font-sans: -apple-system, "SF Pro Text", "PingFang SC", "Noto Sans SC", system-ui, sans-serif;
--radius-control: 14px;
--radius-island: 22px;
--radius-island-large: 24px;
--shadow-look: 0 1px 0 rgb(255 255 255 / .06) inset, 0 20px 40px -24px rgb(0 0 0 / .6);
--blur-glass: 28px;
}
// Tailwind v3 — tailwind.config.js
export default {
theme: {
extend: {
colors: {
"bg": "#0d0f14",
"surface": "rgb(28 31 40 / .55)",
"ink": "#f4f5f7",
"muted": "#a7adbb",
"accent": "#f4f5f7",
"accent-ink": "#0d0f14",
"line": "rgb(255 255 255 / .10)",
"highlight": "#dcc28a",
},
fontFamily: {
display: ["-apple-system, \"SF Pro Display\", \"PingFang SC\", \"Noto Sans SC\", system-ui, sans-serif"],
sans: ["-apple-system, \"SF Pro Text\", \"PingFang SC\", \"Noto Sans SC\", system-ui, sans-serif"],
},
borderRadius: {
"control": "14px",
"island": "22px",
"island-large": "24px",
},
backdropBlur: { glass: "28px" },
},
},
};