openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
177 lines (153 loc) • 5.51 kB
CSS
/* CRT palette; selected by index.html and app/theme.ts. */
/* Terminal shape: the whole console is near-square. Radius tokens flatten the
var(--radius-*) chain and the scale factor flattens the fixed px * scale
corner rules; --radius-full is untouched so avatars and pills stay round.
The attribute selector outscores the :root capability flip to 1.25. */
:root[data-theme="crt"],
:root[data-theme="crt-light"] {
--radius-sm: 2px;
--radius-md: 3px;
--radius-lg: 4px;
--radius-xl: 6px;
--radius: 3px;
--openclaw-corner-radius-scale: 0.25;
}
:root[data-theme="crt"] {
/*
* Accent — monochrome white phosphor on tube black, amber as the cursor
* accent. Phosphor owns the green tube; CRT is the white one (the third
* classic phosphor, amber, stays in --accent-2).
*
* WCAG 2.1 AA audit (bg = #090a09, relative luminance ≈ 0.0030):
* --accent #e8e8e8 contrast ≈ 16.2:1 AAA ✓
* --primary-foreground / --accent-foreground #111111 on #e8e8e8: 15.5:1 ✓
* --destructive-foreground (base #fafafa) on #d0342d button: 4.7:1 AA ✓
* body text --text #c6c6c6: 11.6:1 ✓
* worst text pairing --muted on --bg-muted: 6.3:1 ✓
*/
--ring: #e8e8e8;
--accent: #e8e8e8;
--accent-hover: #ffffff;
--accent-muted: #e8e8e8;
--accent-subtle: rgba(232, 232, 232, 0.1);
--accent-glow: rgba(232, 232, 232, 0.16);
--primary: #e8e8e8;
--primary-hover: #ffffff;
--primary-foreground: #111111;
/* Base :root inherits #fafafa ink for accent fills, which vanishes on the
white accent (1.17:1) — e.g. the selected default-accent swatch check.
First built-in theme to override; light mode keeps base white ink over
its near-black accent. */
--accent-foreground: #111111;
--destructive: #d0342d;
--destructive-hover: #b92d27;
--focus: rgba(232, 232, 232, 0.18);
--focus-ring: 0 0 0 2px var(--bg), 0 0 0 3px color-mix(in srgb, var(--ring) 75%, transparent);
--focus-glow: 0 0 0 2px var(--bg), 0 0 0 3px var(--ring), 0 0 16px var(--accent-glow);
--bg: #090a09;
--bg-accent: #0e0e0e;
--bg-elevated: #131313;
--bg-hover: #191919;
--bg-muted: #171717;
--card: #0e0e0e;
--card-foreground: #ececec;
--card-highlight: rgba(235, 235, 235, 0.04);
--popover: #131313;
--popover-foreground: #ececec;
--panel: #090a09;
--panel-strong: #131313;
--panel-hover: #191919;
--chrome: rgba(9, 10, 9, 0.96);
--chrome-strong: rgba(9, 10, 9, 0.98);
--text: #c6c6c6;
--text-strong: #ececec;
--chat-text: #c6c6c6;
--muted: #999999;
--muted-strong: #ababab;
--muted-foreground: #999999;
--border: #232323;
--border-strong: #343434;
--border-hover: #4a4a4a;
--input: #232323;
--secondary: #0e0e0e;
--secondary-foreground: #ececec;
--accent-2: #ffcf5c;
--accent-2-muted: rgba(255, 207, 92, 0.7);
--accent-2-subtle: rgba(255, 207, 92, 0.12);
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.45);
--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.55);
--shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.65);
--overlay-shadow: var(--shadow-md);
--grid-line: rgba(235, 235, 235, 0.04);
/* One face for the whole console, prose included — same opt-in character
decision as Phosphor; the mono choice is why this theme is not a default. */
--mono:
"JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace;
--font-body: var(--mono);
--font-chat: var(--mono);
}
:root[data-theme="crt-light"] {
/*
* Accent — printed ink on neutral paper: the monochrome console in daylight.
*
* WCAG 2.1 AA audit (bg = #f5f5f4, relative luminance ≈ 0.911):
* --accent #1f1f1f contrast ≈ 15.1:1 AAA ✓
* --primary-foreground #ffffff on #1f1f1f button: 16.5:1 ✓
* body text --text #373737: 10.4:1 ✓
* worst text pairing --muted on --bg-muted: 5.3:1 ✓
*/
--ring: #1f1f1f;
--accent: #1f1f1f;
--accent-hover: #000000;
--accent-muted: #1f1f1f;
--accent-subtle: rgba(31, 31, 31, 0.07);
--accent-glow: rgba(31, 31, 31, 0.12);
--primary: #1f1f1f;
--primary-foreground: #ffffff;
--bg: #f5f5f4;
--bg-accent: #ededed;
--bg-elevated: #ffffff;
--bg-hover: #e4e4e4;
--bg-muted: #eaeaea;
--bg-content: #f0f0f0;
--card: #ffffff;
--card-foreground: #1b1b1b;
--card-highlight: rgba(20, 20, 20, 0.02);
--popover: #ffffff;
--popover-foreground: #1b1b1b;
--session-hovercard-surface: var(--card);
--session-hovercard-progress-surface: color-mix(
in srgb,
var(--card) 52%,
var(--panel-strong) 48%
);
--panel: #f5f5f4;
--panel-strong: #ededed;
--panel-hover: #dedede;
--chrome: rgba(245, 245, 244, 0.96);
--chrome-strong: rgba(245, 245, 244, 0.98);
--text: #373737;
--text-strong: #1b1b1b;
--chat-text: #373737;
--muted: #5f5f5f;
--muted-strong: #4d4d4d;
--muted-foreground: #5f5f5f;
--border: #dddddd;
--border-strong: #c2c2c2;
--border-hover: #9c9c9c;
--input: #dddddd;
--secondary: #ededed;
--secondary-foreground: #373737;
--accent-2: #7a5d10;
--accent-2-muted: rgba(122, 93, 16, 0.75);
--accent-2-subtle: rgba(122, 93, 16, 0.08);
--shadow-sm: 0 1px 2px rgba(20, 20, 20, 0.05);
--shadow-md: 0 4px 12px rgba(20, 20, 20, 0.07);
--shadow-lg: 0 12px 28px rgba(20, 20, 20, 0.09);
--overlay-shadow: var(--shadow-md);
--grid-line: rgba(20, 20, 20, 0.04);
--mono:
"JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace;
--font-body: var(--mono);
--font-chat: var(--mono);
}