/* stylelint-disable-next-line at-rule-no-unknown */ @tailwind base; /* stylelint-disable-next-line at-rule-no-unknown */ @tailwind components; /* stylelint-disable-next-line at-rule-no-unknown */ @tailwind utilities; :root { --text-size: 16px; --line-height: 1.6; --content-width: 800px; } [data-text-size='small'] { --text-size: 14px; } [data-text-size='medium'] { --text-size: 16px; } [data-text-size='large'] { --text-size: 18px; } [data-line-spacing='tight'] { --line-height: 1.4; } [data-line-spacing='normal'] { --line-height: 1.6; } [data-line-spacing='loose'] { --line-height: 1.8; } [data-content-width='narrow'] { --content-width: 600px; } [data-content-width='medium'] { --content-width: 800px; } [data-content-width='wide'] { --content-width: 1200px; } /* Automatically set content width to narrow on mobile screens */ @media (max-width: 768px) { :root { --content-width: 600px; } /* Override any user preference on mobile */ [data-content-width='narrow'], [data-content-width='medium'], [data-content-width='wide'] { --content-width: 600px; } } body { font-size: var(--text-size); line-height: var(--line-height); background-color: #f1f5f9; color: #475569; /* WCAG AA compliant: 5.2:1 contrast ratio */ transition: background-color 0.3s ease, color 0.3s ease; } /* Dark mode body styles */ .dark body { background-color: #0f172a; color: #cbd5e1; /* WCAG AA compliant: 13.5:1 contrast ratio */ } /* Fog aesthetic base styles */ .bg-fog { background-color: #f1f5f9; } .dark .bg-fog { background-color: #0f172a; } .bg-fog-surface { background-color: #f8fafc; } .dark .bg-fog-surface { background-color: #1e293b; } /* Anon aesthetic: Pure gray to slightly bluish tints for profile pics */ /* Profile pictures - all instances */ img.profile-picture, .profile-badge img, .profile-picture, img[alt*="profile" i], img[alt*="avatar" i], img[src*="avatar" i], img[src*="profile" i] { filter: grayscale(100%) sepia(10%) hue-rotate(200deg) saturate(30%) !important; transition: filter 0.3s ease; } .dark img.profile-picture, .dark .profile-badge img, .dark .profile-picture, .dark img[alt*="profile" i], .dark img[alt*="avatar" i], .dark img[src*="avatar" i], .dark img[src*="profile" i] { filter: grayscale(100%) sepia(12%) hue-rotate(200deg) saturate(35%) !important; } /* Emoji images - grayscale like profile pics */ .emoji, [class*="emoji"], img[alt*="emoji" i], img[src*="emoji" i] { filter: grayscale(100%) sepia(15%) hue-rotate(200deg) saturate(60%) brightness(0.95); display: inline-block; } .dark .emoji, .dark [class*="emoji"], .dark img[alt*="emoji" i], .dark img[src*="emoji" i] { filter: grayscale(100%) sepia(20%) hue-rotate(200deg) saturate(70%) brightness(0.9); } /* Apply grayscale filter to reaction buttons containing emojis */ /* But exclude emoji menu items - they should be full color */ .reaction-btn:not(.reaction-menu-item), .Feed-reaction-buttons button:not(.reaction-menu-item) { filter: grayscale(100%) sepia(15%) hue-rotate(200deg) saturate(60%) brightness(0.95); } .dark .reaction-btn:not(.reaction-menu-item), .dark .Feed-reaction-buttons button:not(.reaction-menu-item) { filter: grayscale(100%) sepia(20%) hue-rotate(200deg) saturate(70%) brightness(0.9); } /* Content images should be prominent - no grayscale filters */ .markdown-content img, .markdown-content video, .markdown-content audio, .anon-content img { filter: none !important; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }