| :root { |
| |
| --bg: #0e1015; |
| --bg-accent: #13151b; |
| --bg-elevated: #191c24; |
| --bg-hover: #1f2330; |
| --bg-muted: #1f2330; |
|
|
| |
| --card: #161920; |
| --card-foreground: #f0f0f2; |
| --card-highlight: rgba(255, 255, 255, 0.04); |
| --popover: #191c24; |
| --popover-foreground: #f0f0f2; |
|
|
| |
| --panel: #0e1015; |
| --panel-strong: #191c24; |
| --panel-hover: #1f2330; |
| --chrome: rgba(14, 16, 21, 0.96); |
| --chrome-strong: rgba(14, 16, 21, 0.98); |
|
|
| |
| --text: #d4d4d8; |
| --text-strong: #f4f4f5; |
| --chat-text: #d4d4d8; |
| --muted: #636370; |
| --muted-strong: #4e4e5a; |
| --muted-foreground: #636370; |
|
|
| |
| --border: #1e2028; |
| --border-strong: #2e3040; |
| --border-hover: #3e4050; |
| --input: #1e2028; |
| --ring: #ff5c5c; |
|
|
| |
| --accent: #ff5c5c; |
| --accent-hover: #ff7070; |
| --accent-muted: #ff5c5c; |
| --accent-subtle: rgba(255, 92, 92, 0.1); |
| --accent-foreground: #fafafa; |
| --accent-glow: rgba(255, 92, 92, 0.2); |
| --primary: #ff5c5c; |
| --primary-foreground: #ffffff; |
|
|
| |
| --secondary: #161920; |
| --secondary-foreground: #f0f0f2; |
| --accent-2: #14b8a6; |
| --accent-2-muted: rgba(20, 184, 166, 0.7); |
| --accent-2-subtle: rgba(20, 184, 166, 0.1); |
|
|
| |
| --ok: #22c55e; |
| --ok-muted: rgba(34, 197, 94, 0.75); |
| --ok-subtle: rgba(34, 197, 94, 0.08); |
| --destructive: #ef4444; |
| --destructive-foreground: #fafafa; |
| --warn: #f59e0b; |
| --warn-muted: rgba(245, 158, 11, 0.75); |
| --warn-subtle: rgba(245, 158, 11, 0.08); |
| --danger: #ef4444; |
| --danger-muted: rgba(239, 68, 68, 0.75); |
| --danger-subtle: rgba(239, 68, 68, 0.08); |
| --info: #3b82f6; |
|
|
| |
| --focus: rgba(255, 92, 92, 0.2); |
| --focus-ring: 0 0 0 2px var(--bg), 0 0 0 3px color-mix(in srgb, var(--ring) 60%, transparent); |
| --focus-glow: 0 0 0 2px var(--bg), 0 0 0 3px var(--ring), 0 0 16px var(--accent-glow); |
|
|
| |
| --grid-line: rgba(255, 255, 255, 0.03); |
|
|
| |
| --theme-switch-x: 50%; |
| --theme-switch-y: 50%; |
|
|
| |
| --mono: |
| "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace; |
| --font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; |
| --font-display: var(--font-body); |
|
|
| |
| --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.25); |
| --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.3); |
| --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.4); |
| --shadow-xl: 0 24px 48px rgba(0, 0, 0, 0.5); |
| --shadow-glow: 0 0 24px var(--accent-glow); |
|
|
| |
| --radius-sm: 6px; |
| --radius-md: 10px; |
| --radius-lg: 14px; |
| --radius-xl: 20px; |
| --radius-full: 9999px; |
| --radius: 10px; |
|
|
| |
| --ease-out: cubic-bezier(0.16, 1, 0.3, 1); |
| --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); |
| --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); |
| --duration-fast: 100ms; |
| --duration-normal: 180ms; |
| --duration-slow: 300ms; |
|
|
| color-scheme: dark; |
| } |
|
|
| |
| :root[data-theme-mode="light"] { |
| --bg: #f8f9fa; |
| --bg-accent: #f1f3f5; |
| --bg-elevated: #ffffff; |
| --bg-hover: #eceef0; |
| --bg-muted: #eceef0; |
| --bg-content: #f1f3f5; |
|
|
| --card: #ffffff; |
| --card-foreground: #1a1a1e; |
| --card-highlight: rgba(0, 0, 0, 0.02); |
| --popover: #ffffff; |
| --popover-foreground: #1a1a1e; |
|
|
| --panel: #f8f9fa; |
| --panel-strong: #f1f3f5; |
| --panel-hover: #e6e8eb; |
| --chrome: rgba(248, 249, 250, 0.96); |
| --chrome-strong: rgba(248, 249, 250, 0.98); |
|
|
| --text: #3c3c43; |
| --text-strong: #1a1a1e; |
| --chat-text: #3c3c43; |
| --muted: #8e8e93; |
| --muted-strong: #636366; |
| --muted-foreground: #8e8e93; |
|
|
| --border: #e5e5ea; |
| --border-strong: #d1d1d6; |
| --border-hover: #aeaeb2; |
| --input: #e5e5ea; |
|
|
| --accent: #dc2626; |
| --accent-hover: #ef4444; |
| --accent-muted: #dc2626; |
| --accent-subtle: rgba(220, 38, 38, 0.08); |
| --accent-foreground: #ffffff; |
| --accent-glow: rgba(220, 38, 38, 0.1); |
| --primary: #dc2626; |
| --primary-foreground: #ffffff; |
|
|
| --secondary: #f1f3f5; |
| --secondary-foreground: #3c3c43; |
| --accent-2: #0d9488; |
| --accent-2-muted: rgba(13, 148, 136, 0.75); |
| --accent-2-subtle: rgba(13, 148, 136, 0.08); |
|
|
| --ok: #16a34a; |
| --ok-muted: rgba(22, 163, 74, 0.75); |
| --ok-subtle: rgba(22, 163, 74, 0.08); |
| --destructive: #dc2626; |
| --destructive-foreground: #fafafa; |
| --warn: #d97706; |
| --warn-muted: rgba(217, 119, 6, 0.75); |
| --warn-subtle: rgba(217, 119, 6, 0.08); |
| --danger: #dc2626; |
| --danger-muted: rgba(220, 38, 38, 0.75); |
| --danger-subtle: rgba(220, 38, 38, 0.08); |
| --info: #2563eb; |
|
|
| --focus: rgba(220, 38, 38, 0.15); |
| --focus-ring: 0 0 0 2px var(--bg), 0 0 0 3px color-mix(in srgb, var(--ring) 50%, transparent); |
| --focus-glow: 0 0 0 2px var(--bg), 0 0 0 3px var(--ring), 0 0 12px var(--accent-glow); |
|
|
| --grid-line: rgba(0, 0, 0, 0.04); |
|
|
| |
| --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04); |
| --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.06); |
| --shadow-lg: 0 12px 28px rgba(0, 0, 0, 0.08); |
| --shadow-xl: 0 24px 48px rgba(0, 0, 0, 0.1); |
| --shadow-glow: 0 0 20px var(--accent-glow); |
|
|
| color-scheme: light; |
| } |
|
|
| |
| :root[data-theme="openknot"] { |
| --ring: #14b8a6; |
| --accent: #14b8a6; |
| --accent-hover: #2dd4bf; |
| --accent-muted: #14b8a6; |
| --accent-subtle: rgba(20, 184, 166, 0.12); |
| --accent-glow: rgba(20, 184, 166, 0.22); |
| --primary: #14b8a6; |
| } |
|
|
| :root[data-theme="openknot-light"] { |
| --ring: #0d9488; |
| --accent: #0d9488; |
| --accent-hover: #0f766e; |
| --accent-muted: #0d9488; |
| --accent-subtle: rgba(13, 148, 136, 0.1); |
| --accent-glow: rgba(13, 148, 136, 0.14); |
| --primary: #0d9488; |
| } |
|
|
| :root[data-theme="dash"] { |
| --ring: #3b82f6; |
| --accent: #3b82f6; |
| --accent-hover: #60a5fa; |
| --accent-muted: #3b82f6; |
| --accent-subtle: rgba(59, 130, 246, 0.14); |
| --accent-glow: rgba(59, 130, 246, 0.22); |
| --primary: #3b82f6; |
| } |
|
|
| :root[data-theme="dash-light"] { |
| --ring: #2563eb; |
| --accent: #2563eb; |
| --accent-hover: #1d4ed8; |
| --accent-muted: #2563eb; |
| --accent-subtle: rgba(37, 99, 235, 0.1); |
| --accent-glow: rgba(37, 99, 235, 0.14); |
| --primary: #2563eb; |
| } |
|
|
| * { |
| box-sizing: border-box; |
| } |
|
|
| html, |
| body { |
| height: 100%; |
| } |
|
|
| body { |
| margin: 0; |
| font: 400 13.5px/1.55 var(--font-body); |
| letter-spacing: -0.01em; |
| background: var(--bg); |
| color: var(--text); |
| -webkit-font-smoothing: antialiased; |
| -moz-osx-font-smoothing: grayscale; |
| } |
|
|
| |
| @keyframes theme-circle-transition { |
| 0% { |
| clip-path: circle(0% at var(--theme-switch-x, 50%) var(--theme-switch-y, 50%)); |
| } |
| 100% { |
| clip-path: circle(150% at var(--theme-switch-x, 50%) var(--theme-switch-y, 50%)); |
| } |
| } |
|
|
| html.theme-transition { |
| view-transition-name: theme; |
| } |
|
|
| html.theme-transition::view-transition-old(theme) { |
| mix-blend-mode: normal; |
| animation: none; |
| z-index: 1; |
| } |
|
|
| html.theme-transition::view-transition-new(theme) { |
| mix-blend-mode: normal; |
| z-index: 2; |
| animation: theme-circle-transition 0.4s var(--ease-out) forwards; |
| } |
|
|
| @media (prefers-reduced-motion: reduce) { |
| html.theme-transition::view-transition-old(theme), |
| html.theme-transition::view-transition-new(theme) { |
| animation: none !important; |
| } |
| } |
|
|
| openclaw-app { |
| display: block; |
| position: relative; |
| z-index: 1; |
| min-height: 100vh; |
| } |
|
|
| a { |
| color: var(--accent); |
| text-decoration: none; |
| } |
|
|
| a:hover { |
| text-decoration: underline; |
| } |
|
|
| button, |
| input, |
| textarea, |
| select { |
| font: inherit; |
| color: inherit; |
| } |
|
|
| ::selection { |
| background: var(--accent-subtle); |
| color: var(--text-strong); |
| } |
|
|
| |
| ::-webkit-scrollbar { |
| width: 6px; |
| height: 6px; |
| } |
|
|
| ::-webkit-scrollbar-track { |
| background: transparent; |
| } |
|
|
| ::-webkit-scrollbar-thumb { |
| background: rgba(255, 255, 255, 0.08); |
| border-radius: var(--radius-full); |
| } |
|
|
| ::-webkit-scrollbar-thumb:hover { |
| background: rgba(255, 255, 255, 0.14); |
| } |
|
|
| |
| @keyframes rise { |
| from { |
| opacity: 0; |
| transform: translateY(8px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
|
|
| @keyframes fade-in { |
| from { |
| opacity: 0; |
| } |
| to { |
| opacity: 1; |
| } |
| } |
|
|
| @keyframes scale-in { |
| from { |
| opacity: 0; |
| transform: scale(0.95); |
| } |
| to { |
| opacity: 1; |
| transform: scale(1); |
| } |
| } |
|
|
| @keyframes dashboard-enter { |
| from { |
| opacity: 0; |
| transform: translateY(12px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
|
|
| @keyframes shimmer { |
| 0% { |
| background-position: -200% 0; |
| } |
| 100% { |
| background-position: 200% 0; |
| } |
| } |
|
|
| |
| .skeleton { |
| background: linear-gradient(90deg, var(--bg-muted) 25%, var(--bg-hover) 50%, var(--bg-muted) 75%); |
| background-size: 200% 100%; |
| animation: shimmer 1.5s ease-in-out infinite; |
| border-radius: var(--radius-md); |
| } |
|
|
| .skeleton-line { |
| height: 14px; |
| border-radius: var(--radius-sm); |
| } |
|
|
| .skeleton-line--short { |
| width: 40%; |
| } |
|
|
| .skeleton-line--medium { |
| width: 65%; |
| } |
|
|
| .skeleton-line--long { |
| width: 85%; |
| } |
|
|
| .skeleton-stat { |
| height: 28px; |
| width: 60px; |
| border-radius: var(--radius-sm); |
| } |
|
|
| .skeleton-block { |
| height: 48px; |
| border-radius: var(--radius-md); |
| } |
|
|
| @keyframes pulse-subtle { |
| 0%, |
| 100% { |
| opacity: 1; |
| } |
| 50% { |
| opacity: 0.7; |
| } |
| } |
|
|
| @keyframes glow-pulse { |
| 0%, |
| 100% { |
| box-shadow: 0 0 0 rgba(255, 92, 92, 0); |
| } |
| 50% { |
| box-shadow: 0 0 20px var(--accent-glow); |
| } |
| } |
|
|
| |
| .stagger-1 { |
| animation-delay: 0ms; |
| } |
| .stagger-2 { |
| animation-delay: 50ms; |
| } |
| .stagger-3 { |
| animation-delay: 100ms; |
| } |
| .stagger-4 { |
| animation-delay: 150ms; |
| } |
| .stagger-5 { |
| animation-delay: 200ms; |
| } |
| .stagger-6 { |
| animation-delay: 250ms; |
| } |
|
|
| |
| :focus-visible { |
| outline: none; |
| box-shadow: var(--focus-ring); |
| } |
|
|