@import url('https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,400;0,500;0,600;1,400&family=Plus+Jakarta+Sans:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&display=swap'); @import "tailwindcss"; @theme { /* Earthy palette from reference */ --color-earthy-bg: #F9F7F2; --color-earthy-muted-green: #6B705C; --color-earthy-soft-brown: #A5A58D; --color-earthy-dark-brown: #3D405B; --color-earthy-coral: #E07A5F; --color-earthy-sage: #B7B7A4; /* Semantic aliases (accent = coral for focus/selection) */ --color-primary: #6B705C; --color-accent: #E07A5F; --color-neu-bg: #F9F7F2; --color-workspace-bg: #F9F7F2; --color-sidebar-border: #B7B7A4; --font-display: "Plus Jakarta Sans", sans-serif; --font-sans: "Plus Jakarta Sans", sans-serif; --font-story: "Crimson Pro", serif; /* Softer shadows for earthy theme */ --shadow-neu-flat: 4px 4px 10px rgba(183, 183, 164, 0.25), -4px -4px 10px rgba(255, 255, 255, 0.8); --shadow-neu-pressed: inset 3px 3px 6px rgba(183, 183, 164, 0.2), inset -3px -3px 6px rgba(255, 255, 255, 0.6); --shadow-neu-btn: 3px 3px 8px rgba(183, 183, 164, 0.2), -3px -3px 8px rgba(255, 255, 255, 0.7); --shadow-neu-btn-hover: 2px 2px 5px rgba(183, 183, 164, 0.2), -2px -2px 5px rgba(255, 255, 255, 0.6); } /* Material Symbols - ensure they load and look sharp. */ .material-symbols-outlined { font-family: 'Material Symbols Outlined' !important; font-weight: normal; font-style: normal; font-size: 24px; line-height: 1; letter-spacing: normal; text-transform: none; display: inline-block; white-space: nowrap; word-wrap: normal; direction: ltr; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; font-feature-settings: 'liga'; font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24; } /* Story/content font class */ .story-font { font-family: var(--font-story); } /* Custom Utilities (earthy) */ @utility neu-icon-btn { background-color: var(--color-neu-bg); box-shadow: var(--shadow-neu-btn); transition: all 0.2s; border: 1px solid var(--color-earthy-sage); &:hover { box-shadow: var(--shadow-neu-btn-hover); transform: translateY(0.5px); } &:active, &.active { box-shadow: var(--shadow-neu-pressed); color: var(--color-earthy-coral); } } @utility neu-circle-btn { @apply w-12 h-12 rounded-full flex items-center justify-center neu-icon-btn; } @utility neu-square-btn { @apply w-12 h-12 rounded-xl flex items-center justify-center neu-icon-btn; } @utility nm-flat { background-color: var(--color-neu-bg); box-shadow: var(--shadow-neu-flat); } @utility nm-inset { background-color: var(--color-neu-bg); box-shadow: var(--shadow-neu-pressed); } @utility status-led { @apply absolute bottom-1 right-1 w-2.5 h-2.5 rounded-full border-2; border-color: var(--color-earthy-bg); } /* Load model button: spinning indicator while model is loading */ @keyframes load-btn-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .load-btn-spin { animation: load-btn-spin 1s linear infinite; } /* Custom scrollbar (earthy-sage) */ ::-webkit-scrollbar { width: 4px; height: 4px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--color-earthy-sage); border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: var(--color-earthy-soft-brown); } .custom-scrollbar::-webkit-scrollbar { width: 4px; } .custom-scrollbar::-webkit-scrollbar-track { background: transparent; } .custom-scrollbar::-webkit-scrollbar-thumb { background: var(--color-earthy-sage); border-radius: 10px; } .abstract-wave { mask-image: linear-gradient(to right, transparent, black 15%, black 85%, transparent); } /* Global resets for the theme */ body { background-color: var(--color-earthy-bg); font-family: var(--font-sans); color: var(--color-earthy-dark-brown); -webkit-font-smoothing: antialiased; margin: 0; padding: 0; } code, pre, .font-mono { font-family: 'JetBrains Mono', monospace; } /* Waveform animation */ @keyframes wave { 0%, 100% { height: 10%; opacity: 0.5; } 50% { height: 100%; opacity: 1; } } .waveform-bar-anim { animation: wave 1.2s ease-in-out infinite; } ::selection { background-color: var(--color-earthy-coral); color: white; } .transition-glass { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } @keyframes pulse-gentle { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .animate-pulse-gentle { animation: pulse-gentle 2s ease-in-out infinite; } /* Debug panel adjustable settings: earthy track + dark handle */ .debug-slider { -webkit-appearance: none; appearance: none; background: transparent; } .debug-slider::-webkit-slider-runnable-track { height: 8px; border-radius: 999px; background: var(--color-earthy-sage); opacity: 0.4; } .debug-slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 18px; height: 18px; border-radius: 50%; background: var(--color-earthy-muted-green); border: 1px solid var(--color-earthy-dark-brown); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); margin-top: -5px; cursor: pointer; } .debug-slider::-moz-range-track { height: 8px; border-radius: 999px; background: var(--color-earthy-sage); opacity: 0.4; } .debug-slider::-moz-range-thumb { width: 18px; height: 18px; border-radius: 50%; background: var(--color-earthy-muted-green); border: 1px solid var(--color-earthy-dark-brown); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); cursor: pointer; } /* Settings panel: slide in from the right, no full-screen block */ .settings-panel-slide { transform: translateX(100%); transition: transform 0.3s ease-out; box-shadow: -4px 0 24px rgba(0, 0, 0, 0.08); } .settings-panel-slide--open { transform: translateX(0); }