@tailwind base; @tailwind components; @tailwind utilities; :root { --carbon-950: #000000; --carbon-900: #0a0a0a; --carbon-800: #1a1a1a; --carbon-700: #2a2a2a; --carbon-600: #666666; --carbon-500: #808080; --carbon-400: #a0a0a0; --carbon-300: #c0c0c0; --carbon-200: #e0e0e0; --carbon-100: #f0f0f0; --carbon-50: #f8f8f8; --mulberry-950: #0b0213; --mulberry-900: #1a1426; --mulberry-800: #2a2639; --mulberry-700: #3a384c; --mulberry-600: #4a4a5f; --mulberry-500: #5a5c72; --mulberry-400: #7a7e95; --mulberry-300: #9aa0b8; --mulberry-200: #bac2db; --mulberry-100: #dae4fe; --mulberry-50: #f0f4ff; --walnut-950: #1E1815; --walnut-900: #403730; --walnut-800: #504743; --walnut-700: #605756; --walnut-600: #706769; --walnut-500: #80777c; --walnut-400: #90878f; --walnut-300: #a09aa2; --walnut-200: #b0adb5; --walnut-100: #c0c0c8; --walnut-50: #d0d3db; --walnut-25: #e0e6ee; --nickel-950: #171717; --nickel-900: #2a2a2a; --nickel-800: #3d3d3d; --nickel-700: #505050; --nickel-600: #636363; --nickel-500: #767676; --nickel-400: #c1bfb1; --nickel-300: #d4d2c6; --nickel-200: #e7e5db; --nickel-100: #faf8f0; --nickel-50: #fdfcf8; --ocean-950: #2a3441; --ocean-900: #3a4654; --ocean-800: #4a5867; --ocean-700: #5a6c80; --ocean-600: #6a7e99; --ocean-500: #7a90b2; --ocean-400: #8ba3c4; --ocean-300: #9bb6d6; --ocean-200: #abc9e8; --ocean-100: #bbdcfa; --ocean-50: #cbefff; --eucalyptus-950: #2a3330; --eucalyptus-900: #3a4540; --eucalyptus-800: #4a5750; --eucalyptus-700: #515d54; --eucalyptus-600: #5a6964; --eucalyptus-500: #6a7974; --eucalyptus-400: #7a8a7f; --eucalyptus-300: #8a9b8f; --eucalyptus-200: #9aac9f; --eucalyptus-100: #aabdaf; --eucalyptus-50: #bacfbf; --sand-950: #8E7B5E; --sand-900: #99886E; --sand-800: #A4957E; --sand-700: #AFA28E; --sand-600: #BAAF9F; --sand-500: #C5BCAF; --sand-400: #D0C9BF; --sand-300: #DBD6CF; --sand-200: #E6E3DF; --sand-100: #F1F0EF; --sand-50: #F1F0EF; --coral-950: #6A4A48; --coral-900: #7B5D5A; --coral-800: #8C706C; --coral-700: #9D8380; --coral-600: #AE9693; --coral-500: #BFAAA7; --coral-400: #D0BDBB; --coral-300: #E1D1CF; --coral-200: #F2E4E3; --coral-100: #9e979c; --coral-50: #aea7ac; } /* --font-sans: ['Inter Tight', 'Inter', 'system-ui', 'sans-serif'], --font-mono: ['Inconsolata', 'ui-monospace', 'monospace'], --font-logo: ['Exo', 'Inter Tight', 'sans-serif'] }, spacing: { 'chorus-xxs': '0.854rem', 'chorus-xs': '0.945rem', 'chorus-sm': '1.0rem', 'chorus-base': '1.25rem', 'chorus-md': '1.953rem', 'chorus-lg': '2.441rem', 'chorus-xl': '3.052rem', 'chorus-xxl': '6.1rem', }, // CHORUS Proportional Typography System (Major Third - 1.25 ratio) fontSize: { // Base scale using Minor Third (1.20) ratio for harmonious proportions 'xs': ['0.854rem', { lineHeight: '1.00rem', fontWeight: '600' }], // 10.24px 'sm': ['0.954rem', { lineHeight: '1.10rem', fontWeight: '500' }], // 12.8px 'base': ['1rem', { lineHeight: '1.50rem', fontWeight: '400' }], // 16px (foundation) 'lg': ['1.25rem', { lineHeight: '1.75rem', fontWeight: '400' }], // 20px 'xl': ['1.563rem', { lineHeight: '2.00rem', fontWeight: '400' }], // 25px '2xl': ['1.953rem', { lineHeight: '2.50rem', fontWeight: '300' }], // 31.25px '3xl': ['2.441rem', { lineHeight: '3.00rem', fontWeight: '200' }], // 39px '4xl': ['3.052rem', { lineHeight: '3.50rem', fontWeight: '100' }], // 48.8px '5xl': ['3.815rem', { lineHeight: '4.00rem', fontWeight: '100' }], // 61px // Semantic heading sizes for easier usage 'h7': ['1.000rem', { lineHeight: '1.25rem', fontWeight: '400' }], // 14px 'h6': ['1.250rem', { lineHeight: '1.563rem', fontWeight: '500' }], // 16px 'h5': ['1.563rem', { lineHeight: '1.953rem', fontWeight: '500' }], // 20px 'h4': ['1.953rem', { lineHeight: '2.441rem', fontWeight: '600' }], // 25px 'h3': ['2.441rem', { lineHeight: '3.052rem', fontWeight: '600' }], // 31.25px 'h2': ['3.052rem', { lineHeight: '4.768rem', fontWeight: '700' }], // 39px 'h1': ['4.768rem', { lineHeight: '6.96rem', fontWeight: '700' }], // 76.3px // Display sizes for hero sections 'display-sm': ['3.815rem', { lineHeight: '4rem', fontWeight: '800' }], // 61px 'display-md': ['4.768rem', { lineHeight: '5rem', fontWeight: '800' }], // 76.3px 'display-lg': ['5.96rem', { lineHeight: '6rem', fontWeight: '800' }], // 95.4px }, // Extended rem-based sizing for complete system consistency width: { 'rem-xs': '0.640rem', 'rem-sm': '0.800rem', 'rem-base': '1.000rem', 'rem-lg': '1.250rem', 'rem-xl': '1.563rem', 'rem-2xl': '1.953rem', 'rem-3xl': '2.441rem', 'rem-4xl': '3.052rem', 'rem-5xl': '3.815rem', }, height: { 'rem-xs': '0.640rem', 'rem-sm': '0.800rem', 'rem-base': '1.000rem', 'rem-lg': '1.250rem', 'rem-xl': '1.563rem', 'rem-2xl': '1.953rem', 'rem-3xl': '2.441rem', 'rem-4xl': '3.052rem', 'rem-5xl': '3.815rem', }, // Border radius using proportional scale borderRadius: { 'none': '0', 'micro': '0.125rem', // 2px 'sm': '0.25rem', // 4px 'base': '0.375rem', // 6px 'md': '0.5rem', // 8px 'lg': '0.75rem', // 12px 'xl': '1rem', // 16px 'full': '9999px', } */ /* === Teaser-aligned Global Foundation === */ /* CHORUS Proportional Typography System - 16px Base */ html { font-size: 16px; } /* CHORUS Brand CSS Variables (8-color semantic system) */ :root { /* Core Brand Colors */ --color-carbon: #000000; --color-mulberry: #3a384c; --color-walnut: #605756; --color-nickel: #505050; --color-sand: #6a5c46; --color-coral: #9D8380; --color-ocean: #5a6c80; --color-eucalyptus:#515d54; /* Semantic Tokens */ --chorus-primary: #0b0213; /* mulberry */ --chorus-secondary: #000000; /* carbon */ --chorus-accent: #403730; /* walnut */ --chorus-neutral: #c1bfb1; /* nickel */ --chorus-info: #5a6c80; /* ocean-700 */ --chorus-success: #2a3330; /* eucalyptus-950 */ --chorus-warning: #6a5c46; /* sand-900 */ --chorus-danger: #2e1d1c; /* coral-950 */ /* Theme Surfaces (dark default) */ --bg-primary: #0b0213; /* carbon-950 */ --bg-secondary: #1a1426; /* mulberry-950 */ --bg-tertiary: #2a2639; /* mulberry-900 */ --bg-accent: #5b3d77; /* mulberry-600 */ /* Text */ --text-primary: #FFFFFF; --text-secondary: #f0f4ff; --text-tertiary: #dae4fe; --text-subtle: #9aa0b8; --text-ghost: #7a7e95; /* Borders */ --border-invisible: #0a0a0a; --border-subtle: #1a1a1a; --border-defined: #2a2a2a; --border-emphasis: #666666; } /* Light Theme Variables (apply when html has class 'light') */ html.light { --bg-primary: #FFFFFF; --bg-secondary: #f8f8f8; --bg-tertiary: #f0f0f0; --bg-accent: #cbefff; --text-primary: #000000; --text-secondary: #1a1a1a; --text-tertiary: #2a2a2a; --text-subtle: #666666; --text-ghost: #808080; --border-invisible: #f8f8f8; --border-subtle: #f0f0f0; --border-defined: #e0e0e0; --border-emphasis: #c0c0c0; } /* Base Styles */ body { font-family: 'Inter Tight', system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif; background-color: var(--bg-primary); color: var(--text-primary); margin: 0; padding: 0; line-height: 1.6; font-size: 1rem; font-weight: 400; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @layer base { html { font-family: 'Inter Tight', system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif; } body { @apply transition-colors duration-200; } } @layer components { /* Ultra-Minimalist Button System */ .btn-primary { @apply text-white font-semibold py-3 px-6 rounded-md transition-all duration-300 disabled:opacity-40 disabled:cursor-not-allowed; /* Light mode: warm sand gradient */ background: linear-gradient(135deg, var(--chorus-warning) 0%, var(--chorus-neutral) 100%); border: 2px solid var(--chorus-warning); } .btn-secondary { @apply bg-transparent text-current font-medium py-3 px-6 rounded-md transition-all duration-300 disabled:opacity-40 disabled:cursor-not-allowed; border: 2px solid var(--border-emphasis); } .btn-primary:hover { transform: translateY(-2px); } .btn-secondary:hover { transform: translateY(-2px); border-color: var(--text-primary); } /* Dark mode: Mulberry mid-tone for stronger contrast */ html.dark .btn-primary { background: #5b3d77; /* approx mulberry-500 */ border-color: #5b3d77; box-shadow: 0 4px 12px rgba(11, 2, 19, 0.35); } html.dark .btn-primary:hover { filter: brightness(1.08); } /* Teaser-aligned Form Elements */ .form-input { background: var(--bg-tertiary); color: var(--text-primary); border: 2px solid var(--border-defined); padding: 0.875rem 1rem; font-size: 1rem; width: 100%; border-radius: 0.375rem; transition: all 300ms ease-out; } .form-input:focus { outline: none; border-color: var(--chorus-primary); box-shadow: 0 0 0 3px rgba(11,2,19,0.1); background: var(--bg-secondary); } .form-input::placeholder { color: var(--text-subtle); } .btn-outline { @apply border border-chorus-primary text-chorus-primary hover:bg-chorus-primary hover:text-white font-medium py-3 px-6 rounded-md transition-all duration-200; } .btn-text { @apply bg-transparent text-chorus-secondary hover:text-white font-medium py-2 px-0 border-none transition-colors duration-200; } /* Clean Card System */ .card { @apply bg-chorus-white border border-chorus-border-subtle p-8 rounded-lg transition-colors duration-200; } .card-elevated { @apply bg-chorus-warm border border-chorus-border-invisible p-8 rounded-lg transition-colors duration-200; } /* Form Elements */ .input-field { @apply block w-full border p-3 rounded-sm focus:outline-none transition-colors duration-200; background-color: var(--bg-secondary); border-color: var(--border-defined); color: var(--text-primary); } .input-field:focus { border-color: var(--chorus-accent); background-color: var(--bg-primary); ring: 0; } /* Fix form inputs for dark theme */ input[type="checkbox"], input[type="radio"], input[type="text"], input[type="email"], input[type="password"], textarea, select { background-color: var(--bg-secondary) !important; border-color: var(--border-defined) !important; color: var(--text-primary) !important; } input[type="checkbox"]:focus, input[type="radio"]:focus, input[type="text"]:focus, input[type="email"]:focus, input[type="password"]:focus, textarea:focus, select:focus { border-color: var(--chorus-accent) !important; background-color: var(--bg-primary) !important; } .label { @apply block text-sm font-medium mb-2; color: var(--text-primary); } .error-text { @apply text-red-400 text-sm mt-1; } .success-text { @apply text-eucalyptus-600 text-sm mt-1; } /* Status System */ .status-indicator { @apply text-xs font-medium; } .status-online { @apply status-indicator text-chorus-secondary; } .status-offline { @apply status-indicator text-chorus-text-subtle; } .status-pending { @apply status-indicator text-chorus-brown; } .setup-progress { @apply border transition-all duration-200; } .agreement { background-color: var(--sand-400) !important; } html.dark .agreement { background-color: var(--mulberry-800) !important; } /* Progress Elements */ .progress-step { @apply p-3 rounded-md border transition-all duration-200; } .progress-step-current { background-color: var(--bg-tertiary) !important; border-color: var(--bg-secondary) !important; color: var(--text-primary) !important; } .progress-step-completed { background-color: var(--bg-primary) !important; border-color: var(--bg-secondary) !important; color: var(--text-primary) !important; } .progress-step-accessible { @apply border-chorus-border-defined hover:border-chorus-border-emphasis text-chorus-text-secondary; background-color: var(--bg-secondary); border-color: var(--border-defined); color: var(--text-secondary); } .progress-step-accessible:hover { background-color: var(--bg-accent); border-color: var(--border-emphasis); color: var(--text-primary); } .progress-step-disabled { @apply cursor-not-allowed; background-color: var(--bg-subtle); border-color: var(--border-subtle); color: var(--text-subtle); } /* Typography Hierarchy */ .heading-hero { @apply text-3xl font-semibold text-chorus-text-primary tracking-tight; } .heading-section { @apply text-2xl font-semibold text-chorus-text-primary; } .heading-subsection { @apply text-lg font-medium text-chorus-text-primary; } .text-body { @apply text-base text-chorus-text-secondary leading-relaxed; } .text-small { @apply text-sm text-chorus-text-subtle; } .text-ghost { @apply text-sm text-gray-500 dark:text-gray-500; } } /* Brand Panel Components */ @layer components { .panel { @apply rounded-lg p-4 border; } /* Info (Ocean) */ .panel-info { @apply border-ocean-200 bg-ocean-50; } .panel-info .panel-title { @apply text-ocean-800; } .panel-info .panel-body { @apply text-ocean-700; } html.dark .panel-info { @apply border-ocean-700; background-color: rgba(58,70,84,0.20) !important; } html.dark .panel-info .panel-title { @apply text-ocean-300; } html.dark .panel-info .panel-body { @apply text-ocean-300; } /* Note (Nickel / Neutral) */ .panel-note { background-color: #f5f4f1; border-color: #e0ddd7; } .panel-note .panel-title { @apply text-chorus-text-primary; } .panel-note .panel-body { @apply text-chorus-text-secondary; } html.dark .panel-note { background-color: rgba(11,2,19,0.20) !important; border-color: var(--border-defined) !important; } html.dark .panel-note .panel-title { @apply text-chorus-text-primary; } html.dark .panel-note .panel-body { @apply text-chorus-text-secondary; } /* Warning (Sand) */ .panel-warning { @apply bg-sand-100 border-sand-900; } .panel-warning .panel-title { @apply text-sand-900; } .panel-warning .panel-body { @apply text-sand-900; } html.dark .panel-warning { background-color: rgba(106,92,70,0.20) !important; @apply border-sand-900; } /* Fallback to white/neutral for readability in dark */ html.dark .panel-warning .panel-title { @apply text-white; } html.dark .panel-warning .panel-body { color: #F1F0EF !important; } /* Error (Coral) */ .panel-error { @apply bg-coral-50 border-coral-950; } .panel-error .panel-title { @apply text-coral-950; } .panel-error .panel-body { @apply text-coral-950; } html.dark .panel-error { background-color: rgba(46,29,28,0.20) !important; @apply border-coral-950; } html.dark .panel-error .panel-title { @apply text-white; } html.dark .panel-error .panel-body { color: #ffd6d6 !important; } /* Success (Eucalyptus) */ .panel-success { @apply bg-eucalyptus-50 border-eucalyptus-600; } .panel-success .panel-title { @apply text-eucalyptus-600; } .panel-success .panel-body { @apply text-eucalyptus-600; } html.dark .panel-success { background-color: rgba(42,51,48,0.20) !important; @apply border-eucalyptus-400; } html.dark .panel-success .panel-title { @apply text-white; } html.dark .panel-success .panel-body { color: #bacfbf !important; } } /* Teaser-aligned color aliases */ @layer utilities { /* 8 standard color families - key shades */ /* Ocean */ /* Ocean scale aliases (selected commonly used steps) */ .bg-ocean-700 { background-color: #5a6c80 !important; } .text-ocean-700 { color: #5a6c80 !important; } .border-ocean-700 { border-color: #5a6c80 !important; } .bg-ocean-600 { background-color: #6a7e99 !important; } .text-ocean-600 { color: #6a7e99 !important; } .border-ocean-600 { border-color: #6a7e99 !important; } .bg-ocean-500 { background-color: #7a90b2 !important; } .text-ocean-500 { color: #7a90b2 !important; } .border-ocean-500 { border-color: #7a90b2 !important; } .bg-ocean-900 { background-color: #3a4654 !important; } .text-ocean-900 { color: #3a4654 !important; } .border-ocean-900 { border-color: #3a4654 !important; } .text-ocean-800 { color: #4a5867 !important; } .border-ocean-800 { border-color: #4a5867 !important; } .text-ocean-300 { color: #9bb6d6 !important; } .border-ocean-300 { border-color: #9bb6d6 !important; } .border-ocean-200 { border-color: #abc9e8 !important; } .bg-ocean-50 { background-color: #cbefff !important; } .text-ocean-50 { color: #cbefff !important; } .border-ocean-50 { border-color: #cbefff !important; } /* Mulberry */ .bg-mulberry-950 { background-color: #0b0213 !important; } .text-mulberry-950 { color: #0b0213 !important; } .border-mulberry-950 { border-color: #0b0213 !important; } /* Carbon */ .bg-carbon-950 { background-color: #000000 !important; } .text-carbon-950 { color: #000000 !important; } .border-carbon-950 { border-color: #000000 !important; } /* Walnut */ .bg-walnut-900 { background-color: #403730 !important; } .text-walnut-900 { color: #403730 !important; } .border-walnut-900 { border-color: #403730 !important; } /* Nickel */ .bg-nickel-500 { background-color: #c1bfb1 !important; } .text-nickel-500 { color: #c1bfb1 !important; } .border-nickel-500 { border-color: #c1bfb1 !important; } /* Coral */ .bg-coral-950 { background-color: #2e1d1c !important; } .bg-coral-50 { background-color: #ffd6d6 !important; } .text-coral-950 { color: #2e1d1c !important; } .border-coral-950 { border-color: #2e1d1c !important; } /* Sand */ .bg-sand-900 { background-color: #6a5c46 !important; } .bg-sand-100 { background-color: #F1F0EF !important; } .text-sand-900 { color: #6a5c46 !important; } .border-sand-900 { border-color: #6a5c46 !important; } /* Eucalyptus */ .bg-eucalyptus-950 { background-color: #2a3330 !important; } .bg-eucalyptus-800 { background-color: #3a4843 !important; } .bg-eucalyptus-600 { background-color: #5a7060 !important; } .bg-eucalyptus-500 { background-color: #6b8570 !important; } .bg-eucalyptus-400 { background-color: #7c9a80 !important; } .bg-eucalyptus-50 { background-color: #bacfbf !important; } .text-eucalyptus-950 { color: #2a3330 !important; } .text-eucalyptus-800 { color: #3a4843 !important; } .text-eucalyptus-600 { color: #5a7060 !important; } .text-eucalyptus-500 { color: #6b8570 !important; } .text-eucalyptus-400 { color: #7c9a80 !important; } .border-eucalyptus-950 { border-color: #2a3330 !important; } .border-eucalyptus-800 { border-color: #3a4843 !important; } .border-eucalyptus-600 { border-color: #5a7060 !important; } .border-eucalyptus-500 { border-color: #6b8570 !important; } .border-eucalyptus-400 { border-color: #7c9a80 !important; } /* Utility text/border fallbacks for theme tokens */ .text-chorus-primary { color: var(--text-primary) !important; } .text-chorus-secondary { color: var(--text-secondary) !important; } .text-chorus-text-primary { color: var(--text-primary) !important; } .text-chorus-text-secondary { color: var(--text-secondary) !important; } .text-chorus-text-tertiary { color: var(--text-tertiary) !important; } .text-chorus-text-subtle { color: var(--text-subtle) !important; } .text-chorus-text-ghost { color: var(--text-ghost) !important; } .bg-chorus-primary { background-color: var(--bg-primary) !important; } .bg-chorus-white { background-color: var(--bg-secondary) !important; } .bg-chorus-warm { background-color: var(--bg-tertiary) !important; } .border-chorus-border-subtle { border-color: var(--border-subtle) !important; } .border-chorus-border-defined { border-color: var(--border-defined) !important; } .border-chorus-border-invisible { border-color: var(--border-invisible) !important; } } /* CHORUS Typography utilities (subset) */ .text-h1 { font-size: 4.268rem; line-height: 6.96rem; font-weight: 100; letter-spacing: -0.02em; } .text-h2 { font-size: 3.052rem; line-height: 4.768rem; font-weight: 700; } .text-h3 { font-size: 2.441rem; line-height: 3.052rem; font-weight: 600; } .text-h4 { font-size: 1.953rem; line-height: 2.441rem; font-weight: 600; } .text-h5 { font-size: 1.563rem; line-height: 1.953rem; font-weight: 500; } .text-h6 { font-size: 1.25rem; line-height: 1.563rem; font-weight: 500; } /* Motion */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { opacity: 0; transform: translateY(2rem); } to { opacity: 1; transform: translateY(0); } } .animate-fade-in { animation: fadeIn 0.6s ease-out; } .animate-slide-up { animation: slideUp 0.8s ease-out; } /* Dark-mode heading contrast: make headings white unless panel overrides apply */ @layer base { html.dark h1:not(.panel-title), html.dark h2:not(.panel-title), html.dark h3:not(.panel-title), html.dark h4:not(.panel-title), html.dark h5:not(.panel-title), html.dark h6:not(.panel-title) { color: #ffffff !important; } } @layer utilities { html.dark .text-h1, html.dark .text-h2, html.dark .text-h3, html.dark .text-h4, html.dark .text-h5, html.dark .text-h6 { color: #ffffff !important; } }