:root { /* Colors - Dark Theme */ --color-bg-primary: #1a1a2e; --color-bg-secondary: #1e1e2e; --color-bg-tertiary: #252538; --color-bg-viewport: #1a1a2e; --color-border: #2a2a3e; --color-border-light: #3a3a4e; --color-text-primary: #e0e0e0; --color-text-secondary: #a0a0a0; --color-text-muted: #666; --color-accent: #4a90d9; --color-accent-hover: #5aa0e9; --color-accent-active: #3a80c9; --color-success: #4caf50; --color-warning: #ff9800; --color-error: #f44336; /* Spacing */ --space-xs: 4px; --space-sm: 8px; --space-md: 16px; --space-lg: 24px; --space-xl: 32px; /* Typography */ --font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; --font-family-mono: 'SF Mono', 'Fira Code', 'Consolas', monospace; --font-size-xs: 11px; --font-size-sm: 12px; --font-size-md: 14px; --font-size-lg: 16px; --font-size-xl: 18px; --font-size-2xl: 24px; --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-bold: 600; --line-height-tight: 1.2; --line-height-normal: 1.5; /* Layout */ --header-height: 48px; --sidebar-width: 240px; /* Borders */ --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; /* Transitions */ --transition-fast: 0.15s ease; --transition-normal: 0.25s ease; } /* Base styles */ *, *::before, *::after { box-sizing: border-box; } html, body { margin: 0; padding: 0; overflow: hidden; background-color: var(--color-bg-primary); color: var(--color-text-primary); font-family: var(--font-family); font-size: var(--font-size-md); line-height: var(--line-height-normal); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #app { width: 100vw; height: 100vh; } /* Typography */ h1, h2, h3, h4, h5, h6 { margin: 0; font-weight: var(--font-weight-medium); line-height: var(--line-height-tight); } h1 { font-size: var(--font-size-xl); } h2 { font-size: var(--font-size-lg); } h3 { font-size: var(--font-size-md); } /* Links */ a { color: var(--color-accent); text-decoration: none; } a:hover { color: var(--color-accent-hover); } /* Buttons */ button { font-family: inherit; font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); padding: var(--space-sm) var(--space-md); border: 1px solid var(--color-border); border-radius: var(--radius-md); background-color: var(--color-bg-tertiary); color: var(--color-text-primary); cursor: pointer; transition: background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast); } button:hover { background-color: var(--color-bg-secondary); border-color: var(--color-border-light); } button:active { background-color: var(--color-bg-primary); } button:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; } /* Form inputs */ input, select, textarea { font-family: inherit; font-size: var(--font-size-sm); padding: var(--space-sm); border: 1px solid var(--color-border); border-radius: var(--radius-sm); background-color: var(--color-bg-tertiary); color: var(--color-text-primary); } input:focus, select:focus, textarea:focus { outline: none; border-color: var(--color-accent); } /* Scrollbar styling */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--color-bg-primary); } ::-webkit-scrollbar-thumb { background: var(--color-border-light); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--color-text-muted); }