|
| 1 | +/* |
| 2 | + * MiroTalk P2P — Shared design tokens. |
| 3 | + * |
| 4 | + * Common values (colors, spacing, radius, shadows, motion, z-index) |
| 5 | + * used across all pages. Tokens are prefixed with `--ds-` so they |
| 6 | + * don't clash with existing CSS variables. |
| 7 | + */ |
| 8 | + |
| 9 | +:root { |
| 10 | + /* Colors */ |
| 11 | + --ds-brand-50: #eef3ff; |
| 12 | + --ds-brand-100: #d9e3ff; |
| 13 | + --ds-brand-300: #8aa9ff; |
| 14 | + --ds-brand-500: #4678f9; |
| 15 | + --ds-brand-600: #376df9; |
| 16 | + --ds-brand-700: #2a5ad6; |
| 17 | + |
| 18 | + --ds-neutral-0: #ffffff; |
| 19 | + --ds-neutral-50: #f9faff; |
| 20 | + --ds-neutral-100: #e8ecf1; |
| 21 | + --ds-neutral-300: #b0b6c2; |
| 22 | + --ds-neutral-500: #6a6f82; |
| 23 | + --ds-neutral-700: #292b32; |
| 24 | + --ds-neutral-800: #1d2026; |
| 25 | + --ds-neutral-900: #0f1117; |
| 26 | + |
| 27 | + --ds-success: #22c55e; |
| 28 | + --ds-warning: #ffc107; |
| 29 | + --ds-danger: #e74c3c; |
| 30 | + --ds-info: #5a8aff; |
| 31 | + |
| 32 | + /* Spacing (4px base) */ |
| 33 | + --ds-space-1: 4px; |
| 34 | + --ds-space-2: 8px; |
| 35 | + --ds-space-3: 12px; |
| 36 | + --ds-space-4: 16px; |
| 37 | + --ds-space-5: 20px; |
| 38 | + --ds-space-6: 24px; |
| 39 | + --ds-space-7: 32px; |
| 40 | + --ds-space-8: 40px; |
| 41 | + --ds-space-9: 48px; |
| 42 | + --ds-space-10: 64px; |
| 43 | + |
| 44 | + /* Border radius */ |
| 45 | + --ds-radius-xs: 4px; |
| 46 | + --ds-radius-sm: 6px; |
| 47 | + --ds-radius-md: 10px; |
| 48 | + --ds-radius-lg: 14px; |
| 49 | + --ds-radius-xl: 20px; |
| 50 | + --ds-radius-full: 999px; |
| 51 | + |
| 52 | + /* Shadows */ |
| 53 | + --ds-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.18); |
| 54 | + --ds-shadow-md: 0 6px 18px rgba(0, 0, 0, 0.22); |
| 55 | + --ds-shadow-lg: 0 20px 48px rgba(0, 0, 0, 0.32); |
| 56 | + --ds-shadow-focus: 0 0 0 2px var(--ds-brand-500), 0 0 0 4px rgba(70, 120, 249, 0.28); |
| 57 | + |
| 58 | + /* Stacking order (use these instead of raw z-index values) */ |
| 59 | + --ds-z-base: 1; |
| 60 | + --ds-z-grid: 5; |
| 61 | + --ds-z-toolbar: 20; |
| 62 | + --ds-z-popover: 40; |
| 63 | + --ds-z-panel: 60; |
| 64 | + --ds-z-overlay: 80; |
| 65 | + --ds-z-modal: 100; |
| 66 | + --ds-z-toast: 200; |
| 67 | + --ds-z-tooltip: 300; |
| 68 | + |
| 69 | + /* Motion */ |
| 70 | + --ds-ease-out: cubic-bezier(0.22, 0.61, 0.36, 1); |
| 71 | + --ds-ease-in: cubic-bezier(0.55, 0.06, 0.68, 0.19); |
| 72 | + --ds-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); |
| 73 | + --ds-duration-fast: 120ms; |
| 74 | + --ds-duration-base: 180ms; |
| 75 | + --ds-duration-slow: 240ms; |
| 76 | + |
| 77 | + /* Minimum touch target size */ |
| 78 | + --ds-touch-min: 44px; |
| 79 | + |
| 80 | + /* Typography */ |
| 81 | + --ds-font-sans: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; |
| 82 | + --ds-font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace; |
| 83 | +} |
| 84 | + |
| 85 | +/* Visible focus ring when navigating with keyboard. */ |
| 86 | +:where(button, [role='button'], a, input, select, textarea, summary, [tabindex]):focus-visible { |
| 87 | + outline: 2px solid var(--ds-brand-500); |
| 88 | + outline-offset: 2px; |
| 89 | + box-shadow: 0 0 0 4px rgba(70, 120, 249, 0.28); |
| 90 | + border-radius: var(--ds-radius-sm); |
| 91 | +} |
| 92 | + |
| 93 | +/* Honor the user's "reduce motion" system preference. */ |
| 94 | +@media (prefers-reduced-motion: reduce) { |
| 95 | + *, |
| 96 | + *::before, |
| 97 | + *::after { |
| 98 | + animation-duration: 0.001ms !important; |
| 99 | + animation-iteration-count: 1 !important; |
| 100 | + transition-duration: 0.001ms !important; |
| 101 | + scroll-behavior: auto !important; |
| 102 | + } |
| 103 | +} |
0 commit comments