{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "tokens",
  "type": "registry:file",
  "title": "Stealth UI tokens",
  "description": "Colour, shadow, easing, layering and keyframe tokens. Import styles/stealth.css after Tailwind in your global CSS.",
  "files": [
    {
      "path": "styles/stealth.css",
      "content": "/* Stealth UI tokens. Import once, after Tailwind:\n *   @import \"tailwindcss\";\n *   @import \"./stealth.css\";\n * Dark by default; set data-theme=\"light\" on <html> for light. */\n@custom-variant dark (&:where([data-theme=\"dark\"], [data-theme=\"dark\"] *));\n\n:root,\n[data-theme=\"dark\"] {\n  --page: #080808;\n  --frame: #0d0d0d;\n  --raised: #141414;\n  --hover: #161616;\n  --line: #1c1c1c;\n  --line-2: #262626;\n  --fg: #ededed;\n  --fg-2: #9b9b9b;\n  --fg-3: #6b6b6b;\n  --fg-4: #454545;\n  --shadow: 0 1px 0 rgba(255, 255, 255, 0.04) inset, 0 12px 40px -12px rgba(0, 0, 0, 0.9);\n  --overlay: rgba(0, 0, 0, 0.6);\n  --danger: #e5646a;\n  --danger-soft: rgba(229, 100, 106, 0.12);\n  --success: #5fc992;\n  --success-soft: rgba(95, 201, 146, 0.12);\n  --warning: #e0a85a;\n  --warning-soft: rgba(224, 168, 90, 0.12);\n  --info: #7aa7e8;\n  --info-soft: rgba(122, 167, 232, 0.12);\n  --pop: 0 1px 0 rgba(255, 255, 255, 0.05) inset, 0 0 0 1px rgba(0, 0, 0, 0.4), 0 16px 48px -16px rgba(0, 0, 0, 0.95);\n  color-scheme: dark;\n}\n[data-theme=\"light\"] {\n  --page: #f2f2f0;\n  --frame: #fbfbfa;\n  --raised: #ffffff;\n  --hover: #f1f1ef;\n  --line: #ebebe8;\n  --line-2: #dcdcd8;\n  --fg: #151515;\n  --fg-2: #5f5f5c;\n  --fg-3: #8d8d89;\n  --fg-4: #b8b8b3;\n  --shadow: 0 1px 0 rgba(255, 255, 255, 0.9) inset, 0 12px 32px -14px rgba(0, 0, 0, 0.18);\n  --overlay: rgba(20, 20, 18, 0.28);\n  --danger: #d23f45;\n  --danger-soft: rgba(210, 63, 69, 0.09);\n  --success: #1f9a5c;\n  --success-soft: rgba(31, 154, 92, 0.09);\n  --warning: #b87514;\n  --warning-soft: rgba(184, 117, 20, 0.1);\n  --info: #2f6fce;\n  --info-soft: rgba(47, 111, 206, 0.09);\n  --pop: 0 1px 0 rgba(255, 255, 255, 0.9) inset, 0 0 0 1px rgba(0, 0, 0, 0.04), 0 16px 40px -14px rgba(0, 0, 0, 0.22);\n  color-scheme: light;\n}\n\n@theme inline {\n  --color-page: var(--page);\n  --color-frame: var(--frame);\n  --color-raised: var(--raised);\n  --color-hover: var(--hover);\n  --color-line: var(--line);\n  --color-line-2: var(--line-2);\n  --color-fg: var(--fg);\n  --color-fg-2: var(--fg-2);\n  --color-fg-3: var(--fg-3);\n  --color-fg-4: var(--fg-4);\n  --font-sans: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;\n  --font-mono: var(--font-geist-mono), ui-monospace, monospace;\n  --font-pixel: var(--font-geist-pixel-square), var(--font-geist-mono), monospace;\n  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);\n  --ease-in-out-quart: cubic-bezier(0.76, 0, 0.24, 1);\n  --text-2xs: 10.5px;\n  --text-2xs--line-height: 14px;\n  --color-overlay: var(--overlay);\n  --color-danger: var(--danger);\n  --color-danger-soft: var(--danger-soft);\n  --color-success: var(--success);\n  --color-success-soft: var(--success-soft);\n  --color-warning: var(--warning);\n  --color-warning-soft: var(--warning-soft);\n  --color-info: var(--info);\n  --color-info-soft: var(--info-soft);\n  --shadow-soft: var(--shadow);\n  --shadow-pop: var(--pop);\n  --ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);\n  --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);\n  --animate-spin-slow: spin 1.2s linear infinite;\n  --animate-shimmer: shimmer 2.4s linear infinite;\n  --animate-pulse-soft: pulse-soft 2.5s ease-in-out infinite;\n  --animate-caret: caret 1.06s steps(1, end) infinite;\n  --animate-marquee: marquee var(--marquee-duration, 30s) linear infinite;\n  --animate-marquee-y: marquee-y var(--marquee-duration, 30s) linear infinite;\n  --animate-indeterminate: indeterminate 1.4s var(--ease-in-out-quart) infinite;\n  --animate-ping-soft: ping-soft 1.8s cubic-bezier(0, 0, 0.2, 1) infinite;\n  --animate-dot-wave: dot-wave 1.2s ease-in-out infinite;\n  --animate-shine: shine 2s linear infinite;\n\n  @keyframes shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }\n  @keyframes pulse-soft { 0%, 100% { opacity: 1; } 50% { opacity: 0.55; } }\n  @keyframes caret { 0%, 49% { opacity: 1; } 50%, 100% { opacity: 0; } }\n  @keyframes marquee { from { transform: translateX(0); } to { transform: translateX(calc(-100% - var(--marquee-gap, 0px))); } }\n  @keyframes marquee-y { from { transform: translateY(0); } to { transform: translateY(calc(-100% - var(--marquee-gap, 0px))); } }\n  @keyframes indeterminate { 0% { transform: translateX(-100%) scaleX(0.4); } 50% { transform: translateX(30%) scaleX(0.6); } 100% { transform: translateX(100%) scaleX(0.4); } }\n  @keyframes ping-soft { 0% { transform: scale(1); opacity: 0.55; } 80%, 100% { transform: scale(2.4); opacity: 0; } }\n  @keyframes dot-wave { 0%, 60%, 100% { transform: translateY(0); opacity: 0.45; } 30% { transform: translateY(-3px); opacity: 1; } }\n  @keyframes shine { from { background-position: 150% 0; } to { background-position: -50% 0; } }\n}\n\nhtml {\n  background: var(--page);\n  color: var(--fg);\n  -webkit-font-smoothing: antialiased;\n  text-rendering: optimizeLegibility;\n  font-feature-settings: \"ss01\", \"cv11\";\n  transition: background-color 0.4s var(--ease-out-expo);\n}\nbody {\n  font-family: var(--font-sans);\n  font-size: 13px;\n  line-height: 1.45;\n  letter-spacing: -0.003em;\n}\n::selection { background: var(--fg); color: var(--frame); }\n/* Layering scale. Anything above 50 is a bug. */\n:root { --z-sticky: 10; --z-dropdown: 20; --z-overlay: 30; --z-dialog: 31; --z-popover: 40; --z-toast: 45; --z-tooltip: 50; }\n\n@layer base { :focus-visible { outline: 1px solid var(--fg-2); outline-offset: 2px; border-radius: 4px; } }\n.tabular { font-variant-numeric: tabular-nums; }\n\n@media (prefers-reduced-motion: reduce) {\n  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }\n}\n",
      "type": "registry:file",
      "target": "styles/stealth.css"
    }
  ]
}
