@import "tailwindcss"; /* Dark mode is driven by a `.dark` class on (see ThemeProvider). */ @custom-variant dark (&:where(.dark, .dark *)); /* ────────────────────────────────────────────────────────────────────────── Palette Warm, paper-toned surfaces with a terracotta accent. Every semantic token below points at one of these raw values so that light/dark is a single swap of the `--c-*` layer. ────────────────────────────────────────────────────────────────────────── */ :root { /* Surfaces */ --c-canvas: #faf9f5; --c-panel: #f0eee6; --c-surface: #ffffff; --c-surface-hover: #f5f4ee; --c-surface-sunken: #f2f1ea; /* Ink */ --c-fg: #1f1e1d; --c-fg-muted: #6c6a63; --c-fg-subtle: #97948b; --c-fg-inverted: #faf9f5; /* Lines */ --c-line: #e6e3d9; --c-line-strong: #d5d1c3; /* Accent — Claude terracotta */ --c-accent: #d97757; --c-accent-hover: #c25f3f; --c-accent-fg: #ffffff; --c-accent-ink: #a44a2c; /* Secondary brand tones */ --c-kraft: #d4a27f; --c-manilla: #ebdbbc; /* Status */ --c-danger: #b4432c; --c-danger-hover: #9a3623; --c-success: #4f7a52; --c-live: #d1453b; /* Elevation */ --c-shadow: 30 27 20; --shadow-ambient: 0 1px 2px rgb(var(--c-shadow) / 0.05), 0 1px 1px rgb(var(--c-shadow) / 0.04); --shadow-raised: 0 2px 4px rgb(var(--c-shadow) / 0.05), 0 8px 24px rgb(var(--c-shadow) / 0.07); --shadow-overlay: 0 4px 8px rgb(var(--c-shadow) / 0.06), 0 16px 40px rgb(var(--c-shadow) / 0.14); color-scheme: light; } .dark { --c-canvas: #262624; --c-panel: #1f1e1d; --c-surface: #30302e; --c-surface-hover: #3a3a37; --c-surface-sunken: #242422; --c-fg: #f5f4ee; --c-fg-muted: #a5a29a; --c-fg-subtle: #7d7a72; --c-fg-inverted: #1f1e1d; --c-line: #403f3b; --c-line-strong: #55534d; --c-accent: #d97757; --c-accent-hover: #e58e70; --c-accent-fg: #1f1e1d; --c-accent-ink: #e9a184; --c-kraft: #c99268; --c-manilla: #b7a887; --c-danger: #e0705a; --c-danger-hover: #ec8672; --c-success: #7aa87d; --c-live: #e5544a; --c-shadow: 0 0 0; --shadow-ambient: 0 1px 2px rgb(var(--c-shadow) / 0.24); --shadow-raised: 0 2px 4px rgb(var(--c-shadow) / 0.2), 0 8px 24px rgb(var(--c-shadow) / 0.28); --shadow-overlay: 0 4px 8px rgb(var(--c-shadow) / 0.28), 0 16px 40px rgb(var(--c-shadow) / 0.45); color-scheme: dark; } /* ────────────────────────────────────────────────────────────────────────── Design tokens exposed to Tailwind ────────────────────────────────────────────────────────────────────────── */ @theme inline { --font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif; --font-serif: "Source Serif 4", ui-serif, Georgia, Cambria, "Times New Roman", serif; --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; --color-canvas: var(--c-canvas); --color-panel: var(--c-panel); --color-surface: var(--c-surface); --color-surface-hover: var(--c-surface-hover); --color-sunken: var(--c-surface-sunken); --color-fg: var(--c-fg); --color-muted: var(--c-fg-muted); --color-subtle: var(--c-fg-subtle); --color-inverted: var(--c-fg-inverted); --color-line: var(--c-line); --color-line-strong: var(--c-line-strong); --color-accent: var(--c-accent); --color-accent-hover: var(--c-accent-hover); --color-accent-fg: var(--c-accent-fg); --color-accent-ink: var(--c-accent-ink); --color-kraft: var(--c-kraft); --color-manilla: var(--c-manilla); --color-danger: var(--c-danger); --color-danger-hover: var(--c-danger-hover); --color-success: var(--c-success); --color-live: var(--c-live); --shadow-ambient: var(--shadow-ambient); --shadow-raised: var(--shadow-raised); --shadow-overlay: var(--shadow-overlay); --breakpoint-3xl: 1920px; --ease-fluid: cubic-bezier(0.3, 0, 0, 1); --ease-snappy: cubic-bezier(0.2, 0, 0, 1); --animate-rise: rise 0.35s cubic-bezier(0.3, 0, 0, 1) both; --animate-fade: fade 0.25s ease-out both; --animate-pop: pop 0.16s cubic-bezier(0.2, 0, 0, 1) both; --animate-shimmer: shimmer 1.6s ease-in-out infinite; } @keyframes rise { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } } @keyframes fade { from { opacity: 0; } to { opacity: 1; } } @keyframes pop { from { opacity: 0; transform: scale(0.96) translateY(-4px); } to { opacity: 1; transform: none; } } @keyframes shimmer { 0%, 100% { opacity: 0.45; } 50% { opacity: 0.8; } } /* ────────────────────────────────────────────────────────────────────────── Base ────────────────────────────────────────────────────────────────────────── */ @layer base { * { border-color: var(--c-line); } html { font-family: var(--font-sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; font-synthesis-weight: none; } body { background-color: var(--c-canvas); color: var(--c-fg); line-height: 1.5; font-feature-settings: "cv11", "ss01"; font-variation-settings: "opsz" 32; } h1, h2, h3 { letter-spacing: -0.018em; } ::selection { background-color: color-mix(in oklab, var(--c-accent) 26%, transparent); color: var(--c-fg); } :focus-visible { outline: 2px solid var(--c-accent); outline-offset: 2px; border-radius: 4px; } /* Scrollbars — thin and unobtrusive, warm-toned */ * { scrollbar-width: thin; scrollbar-color: var(--c-line-strong) transparent; } ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background-color: var(--c-line-strong); border-radius: 999px; border: 3px solid transparent; background-clip: content-box; } ::-webkit-scrollbar-thumb:hover { background-color: var(--c-fg-subtle); } } /* ────────────────────────────────────────────────────────────────────────── Form controls ────────────────────────────────────────────────────────────────────────── */ @layer components { .field { width: 100%; border-radius: 0.625rem; border: 1px solid var(--c-line-strong); background-color: var(--c-surface); color: var(--c-fg); padding: 0.5rem 0.75rem; font-size: 0.875rem; line-height: 1.4rem; transition: border-color 150ms, box-shadow 150ms, background-color 150ms; } .field::placeholder { color: var(--c-fg-subtle); } .field:hover:not(:disabled):not(:focus) { border-color: color-mix(in oklab, var(--c-fg-subtle) 60%, var(--c-line-strong)); } .field:focus { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 3px color-mix(in oklab, var(--c-accent) 18%, transparent); } .field:disabled { background-color: var(--c-surface-sunken); color: var(--c-fg-subtle); cursor: not-allowed; } select.field { appearance: none; background-image: url("data:image/svg+xml;utf8,"); background-repeat: no-repeat; background-position: right 0.6rem center; padding-right: 2rem; } .dark select.field { background-image: url("data:image/svg+xml;utf8,"); } /* Native range inputs (volume, scrub) */ .slider { -webkit-appearance: none; appearance: none; background: transparent; cursor: pointer; height: 1rem; } .slider::-webkit-slider-runnable-track { height: 4px; border-radius: 999px; background: color-mix(in oklab, var(--c-fg) 14%, transparent); } .slider::-moz-range-track { height: 4px; border-radius: 999px; background: color-mix(in oklab, var(--c-fg) 14%, transparent); } .slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; margin-top: -4px; height: 12px; width: 12px; border-radius: 999px; background: var(--c-accent); border: none; transition: transform 120ms; } .slider::-moz-range-thumb { height: 12px; width: 12px; border: none; border-radius: 999px; background: var(--c-accent); } .slider:hover::-webkit-slider-thumb { transform: scale(1.25); } .slider:active::-webkit-slider-thumb { transform: scale(1.35); } /* Light-on-dark variant used over video */ .slider-onvideo::-webkit-slider-runnable-track { background: rgb(255 255 255 / 0.28); } .slider-onvideo::-moz-range-track { background: rgb(255 255 255 / 0.28); } .slider-onvideo::-webkit-slider-thumb { background: #fff; } .slider-onvideo::-moz-range-thumb { background: #fff; } } /* react-range-slider-input — trim range on the clip editor */ #range-slider { height: 8px; border-radius: 999px; background: color-mix(in oklab, var(--c-fg) 10%, transparent); border: none; } #range-slider .range-slider__range { background: var(--c-accent); } #range-slider .range-slider__thumb { width: 16px; height: 16px; background: var(--c-surface); border: 3px solid var(--c-accent); box-shadow: var(--shadow-ambient); transition: transform 120ms cubic-bezier(0.2, 0, 0, 1); } #range-slider .range-slider__thumb:hover, #range-slider .range-slider__thumb[data-active="true"] { transform: translate(-50%, -50%) scale(1.15); } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }