/* Tailwind CSS directives - required for framework */ @tailwind base; @tailwind components; @tailwind utilities; @layer base { :root { --bg-primary: #1a1b26; --bg-secondary: #16161e; --text-primary: #a9b1d6; --text-secondary: #565f89; --accent: #7aa2f7; --border: #414868; } .theme-tokyo-night { --bg-primary: #1a1b26; --bg-secondary: #16161e; --text-primary: #c0caf5; --text-secondary: #c0caf5; --accent: #7aa2f7; --border: #414868; } .theme-dracula { --bg-primary: #282a36; --bg-secondary: #21222c; --text-primary: #f8f8f2; --text-secondary: #6272a4; --accent: #bd93f9; --border: #44475a; } .theme-nord { --bg-primary: #2e3440; --bg-secondary: #3b4252; --text-primary: #eceff4; --text-secondary: #5e81ac; --accent: #88c0d0; --border: #4c566a; } .theme-solarized-dark { --bg-primary: #002b36; --bg-secondary: #073642; --text-primary: #93a1a1; --text-secondary: #586e75; --accent: #2aa198; --border: #586e75; } .theme-monokai { --bg-primary: #272822; --bg-secondary: #3e3d32; --text-primary: #f8f8f2; --text-secondary: #75715e; --accent: #a6e22e; --border: #49483e; } .theme-one-dark-pro { --bg-primary: #282c34; --bg-secondary: #21252b; --text-primary: #abb2bf; --text-secondary: #5c6370; --accent: #61dafb; --border: #3e4451; } .theme-material-dark { --bg-primary: #263238; --bg-secondary: #37474f; --text-primary: #eeffff; --text-secondary: #546e7a; --accent: #80cbc4; --border: #455a64; } .theme-catppuccin-mocha { --bg-primary: #1e1e2e; --bg-secondary: #181825; --text-primary: #cdd6f4; --text-secondary: #bac2de; --accent: #f38ba8; --border: #313244; } .theme-catppuccin-macchiato { --bg-primary: #24273a; --bg-secondary: #1e2030; --text-primary: #cad3f5; --text-secondary: #b8c0e0; --accent: #f0c6c6; --border: #363a4f; } .theme-catppuccin-frappe { --bg-primary: #303446; --bg-secondary: #292c3c; --text-primary: #c6d0f5; --text-secondary: #b5bfe2; --accent: #f2d5cf; --border: #414559; } .theme-catppuccin-latte { --bg-primary: #eff1f5; --bg-secondary: #e6e9ef; --text-primary: #4c4f69; --text-secondary: #5c5f77; --accent: #d20f39; --border: #bcc0cc; } body { background-color: var(--bg-primary); color: var(--text-primary); } /* Header component styles */ .header-nav { position: sticky; top: 0; } /* Make header sticky only on docs pages */ body:not(.page-docs) .header-nav { position: static; } /* Add class to body on docs pages */ .page-docs .header-nav { position: sticky; top: 0; z-index: 50; } .card { background-color: var(--bg-secondary); border-color: var(--border); } .btn-primary { background-color: var(--accent); color: var(--bg-primary); } .btn-primary:hover { opacity: 0.8; } } @layer components { /* TriState Button for has_cover filter */ /* Base input button style */ .tristate-btn { background-color: var(--bg-primary); border-width: 1px; /* Ensure 1px border like other inputs */ border-style: solid; } .tristate-btn.state-null { border-color: var(--border); color: var(--text-secondary); } .tristate-btn.state-true { border-color: var(--border); background-color: color-mix(in srgb, var(--accent) 15%, var(--bg-primary)); color: var(--accent); } .tristate-btn.state-false { border-color: var(--border); background-color: color-mix( in srgb, var(--text-secondary) 10%, var(--bg-primary) ); color: var(--text-secondary); } .tristate-btn:hover { opacity: 0.8; } .loading-spinner { display: inline-block; width: 40px; height: 40px; border: 4px solid var(--border); border-top-color: var(--accent); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .status-pending { background-color: #f59e0b; color: white; } .status-processing { background-color: #3b82f6; color: white; } .status-completed { background-color: #10b981; color: white; } .status-failed { background-color: #ef4444; color: white; } .priority-1 { background-color: #ef4444; color: white; } .priority-2 { background-color: #f97316; color: white; } .priority-3 { background-color: #f59e0b; color: white; } .priority-5 { background-color: #10b981; color: white; } .priority-7 { background-color: #6b7280; color: white; } .priority-10 { background-color: #9ca3af; color: white; } /* Override highlight.js hardcoded colors for code blocks */ .prose pre code.hljs { background-color: transparent !important; } .prose code.hljs { background-color: #1a1b26 !important; padding: 0.2em 0.4em; } .prose pre { background-color: #16161e !important; } .prose .hljs { background-color: transparent !important; color: #c0caf5 !important; } /* Active/inactive states for theme and wood paneling buttons */ .bg-theme-active, .bg-wood-active { background-color: var(--bg-primary) !important; } /* Wood background positioning for seamless alignment */ .bg-wood-dark, .bg-wood-light, .bg-wood-mahogany { background-attachment: fixed; background-position: center; background-size: cover; } /* Ensure body and container align perfectly */ body.bg-wood-dark, body.bg-wood-light, body.bg-wood-mahogany, #collections-container.bg-wood-dark, #collections-container.bg-wood-light, #collections-container.bg-wood-mahogany { background-attachment: fixed; background-position: center; background-size: cover; } .bg-theme-inactive, .bg-wood-inactive { background-color: var(--bg-secondary) !important; } /* Smart text colors for wood paneling backgrounds */ /* Wood Light - needs dark text for contrast */ #collections-container[data-wood="wood-light"] { --wood-text-primary: #1a1a1a; --wood-text-secondary: #4a4a4a; --wood-border: #8b5a2b; } /* Wood Dark - needs light text */ #collections-container[data-wood="wood-dark"] { --wood-text-primary: #f5f5f5; --wood-text-secondary: #c0c0c0; --wood-border: #7a5228; } /* Wood Mahogany - needs light text (darkest background) */ #collections-container[data-wood="wood-mahogany"] { --wood-text-primary: #f5f5f5; --wood-text-secondary: #c0c0c0; --wood-border: #8b3a3a; } /* Apply wood-specific text colors to all text within collections container */ #collections-container[data-wood] h1, #collections-container[data-wood] h2, #collections-container[data-wood] h3, #collections-container[data-wood] p, #collections-container[data-wood] span, #collections-container[data-wood] a, #collections-container[data-wood] button { color: var(--wood-text-primary) !important; } #collections-container[data-wood] .text-secondary { color: var(--wood-text-secondary) !important; } /* Links on wood-light need darker color for visibility */ #collections-container[data-wood="wood-light"] a { color: #0066cc !important; } /* Links on dark woods use lighter color */ #collections-container[data-wood="wood-dark"] a, #collections-container[data-wood="wood-mahogany"] a { color: #66ccff !important; } /* Wood Light - use darker gradient */ #collections-container[data-wood="wood-light"] .carousel-nav-left { background: linear-gradient(to right, rgba(0, 0, 0, 0.6), transparent); } #collections-container[data-wood="wood-light"] .carousel-nav-right { background: linear-gradient(to left, rgba(0, 0, 0, 0.6), transparent); } /* Wood Dark/Mahogany - use subtle white/transparent gradient */ #collections-container[data-wood="wood-dark"] .carousel-nav-left, #collections-container[data-wood="wood-mahogany"] .carousel-nav-left { background: linear-gradient(to right, rgba(0, 0, 0, 0.3), transparent); } #collections-container[data-wood="wood-dark"] .carousel-nav-right, #collections-container[data-wood="wood-mahogany"] .carousel-nav-right { background: linear-gradient(to left, rgba(0, 0, 0, 0.3), transparent); } /* Add subtle borders to book cards on wood backgrounds */ #collections-container[data-wood] .book-card { border: 1px solid var(--wood-border); } }