@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
/* Override Tailwind's list-style: none reset for post content */
div.post-content li {
display: list-item !important;
}
/* Hide Quill's ql-ui span elements that create duplicate markers */
div.post-content .ql-ui {
display: none !important;
}
/* Quill wraps BOTH ordered and unordered lists in
tags! */
/* For lists WITH data-list attributes, remove container styling and use li styling */
div.post-content ol:has(li[data-list]),
div.post-content ul:has(li[data-list]) {
list-style-type: none !important;
}
/* Ordered lists - li elements control the style */
div.post-content li[data-list="ordered"] {
list-style-type: decimal !important;
}
/* Bullet lists - li elements control the style */
div.post-content li[data-list="bullet"] {
list-style-type: disc !important;
}
/* For standard HTML lists WITHOUT data-list attributes, use traditional styling */
div.post-content ol:not(:has(li[data-list])) {
list-style-type: decimal !important;
}
div.post-content ul:not(:has(li[data-list])) {
list-style-type: disc !important;
}
/* Quill editor - proper list styling */
.ql-editor ol,
.ql-editor ul {
padding-left: 1.5em;
list-style-position: outside;
}
/* Quill wraps BOTH ordered and unordered lists in tags! */
/* Remove list styling from containers that have data-list children */
.ql-editor ol:has(li[data-list]),
.ql-editor ul:has(li[data-list]) {
list-style-type: none;
list-style: none;
}
/* Hide Quill's ql-ui span elements that create duplicate markers */
.ql-editor .ql-ui {
display: none !important;
}
/* Ordered lists - target li with data-list */
.ql-editor li[data-list="ordered"] {
list-style-type: decimal;
padding-left: 0;
}
/* Bullet lists - target li with data-list */
.ql-editor li[data-list="bullet"],
.ql-editor ol > li[data-list="bullet"] {
list-style-type: disc;
padding-left: 0;
}
.ql-editor li {
display: list-item;
}
/* Ensure standard ol/ul also work (without data-list attributes) */
.ql-editor ol:not(:has(li[data-list])) {
list-style-type: decimal;
}
.ql-editor ul:not(:has(li[data-list])) {
list-style-type: disc;
}
}
@source '../../vendor/namu/wirechat/resources/views/**/*.blade.php';
@source '../../vendor/namu/wirechat/src/Livewire/**/*.php';
/* Dynamic Theme System - CSS Custom Properties generated by theme_css_vars() */
/* Theme-aware utility classes */
@layer utilities {
.text-theme-primary {
color: rgb(var(--color-text-primary));
}
.text-theme-secondary {
color: rgb(var(--color-text-secondary));
}
.text-theme-light {
color: rgb(var(--color-text-light));
}
.placeholder-theme-light::placeholder {
color: rgb(var(--color-text-light));
}
/* Primary color utilities - all shades */
.bg-theme-primary {
background-color: rgb(var(--color-primary-500));
}
.bg-theme-primary-50 {
background-color: rgb(var(--color-primary-50));
}
.bg-theme-primary-100 {
background-color: rgb(var(--color-primary-100));
}
.bg-theme-primary-200 {
background-color: rgb(var(--color-primary-200));
}
.bg-theme-primary-300 {
background-color: rgb(var(--color-primary-300));
}
.bg-theme-primary-400 {
background-color: rgb(var(--color-primary-400));
}
.bg-theme-primary-500 {
background-color: rgb(var(--color-primary-500));
}
.bg-theme-primary-600 {
background-color: rgb(var(--color-primary-600));
}
.bg-theme-primary-700 {
background-color: rgb(var(--color-primary-700));
}
.bg-theme-primary-800 {
background-color: rgb(var(--color-primary-800));
}
.bg-theme-primary-900 {
background-color: rgb(var(--color-primary-900));
}
.text-theme-primary-50 {
color: rgb(var(--color-primary-50));
}
.text-theme-primary-100 {
color: rgb(var(--color-primary-100));
}
.text-theme-primary-200 {
color: rgb(var(--color-primary-200));
}
.text-theme-primary-300 {
color: rgb(var(--color-primary-300));
}
.text-theme-primary-400 {
color: rgb(var(--color-primary-400));
}
.text-theme-primary-500 {
color: rgb(var(--color-primary-500));
}
.text-theme-primary-600 {
color: rgb(var(--color-primary-600));
}
.text-theme-primary-700 {
color: rgb(var(--color-primary-700));
}
.text-theme-primary-800 {
color: rgb(var(--color-primary-800));
}
.text-theme-primary-900 {
color: rgb(var(--color-primary-900));
}
.border-theme-primary-300 {
border-color: rgb(var(--color-primary-300));
}
.border-theme-primary-400 {
border-color: rgb(var(--color-primary-400));
}
.border-theme-primary-900 {
border-color: rgb(var(--color-primary-900));
}
.hover\:bg-theme-primary-500:hover {
background-color: rgb(var(--color-primary-500));
}
.hover\:bg-theme-primary-700:hover {
background-color: rgb(var(--color-primary-700));
}
.hover\:text-theme-primary-100:hover {
color: rgb(var(--color-primary-100));
}
.hover\:text-theme-primary-200:hover {
color: rgb(var(--color-primary-200));
}
.active\:bg-theme-primary-900:active {
background-color: rgb(var(--color-primary-900));
}
.focus\:border-theme-primary-900:focus {
border-color: rgb(var(--color-primary-900));
}
.focus\:ring-theme-primary-200:focus {
--tw-ring-color: rgb(var(--color-primary-200));
}
/* Secondary, accent, brand utilities */
.bg-theme-secondary {
background-color: rgb(var(--color-secondary));
}
.text-theme-secondary-color {
color: rgb(var(--color-secondary));
}
.bg-theme-accent {
background-color: rgb(var(--color-accent));
}
.text-theme-accent {
color: rgb(var(--color-accent));
}
.bg-theme-accent-dark {
background-color: rgb(var(--color-accent_dark));
}
.text-theme-accent-dark {
color: rgb(var(--color-accent_dark));
}
.bg-theme-brand {
background-color: rgb(var(--color-brand));
}
.profile-photo {
background-color: rgb(var(--color-brand));
}
.text-theme-brand {
color: rgb(var(--color-brand));
}
.text-theme-reaction {
color: rgb(var(--color-reaction));
}
.text-theme-reaction-hover {
color: rgb(var(--color-reaction-hover));
}
.fill-theme-logo {
fill: rgb(var(--color-logo));
}
.text-theme-logo {
color: rgb(var(--color-logo));
}
.bg-theme-background {
background-color: rgb(var(--color-background));
}
.bg-theme-surface {
background-color: rgb(var(--color-surface));
}
.bg-theme-surface-alt {
background-color: rgb(var(--color-surface_alt));
}
.bg-theme-surface-dark {
background-color: rgb(var(--color-surface_dark));
}
/* Success, warning, info utilities */
.bg-theme-success {
background-color: rgb(var(--color-success));
}
.text-theme-success {
color: rgb(var(--color-success));
}
.bg-theme-warning {
background-color: rgb(var(--color-warning));
}
.text-theme-warning {
color: rgb(var(--color-warning));
}
.bg-theme-info {
background-color: rgb(var(--color-info));
}
.text-theme-info {
color: rgb(var(--color-info));
}
/* Danger color utilities */
.bg-theme-danger-dark {
background-color: rgb(var(--color-danger-dark));
}
.bg-theme-danger {
background-color: rgb(var(--color-danger));
}
.bg-theme-danger-light {
background-color: rgb(var(--color-danger-light));
}
.text-theme-danger-dark {
color: rgb(var(--color-danger-dark));
}
.text-theme-danger {
color: rgb(var(--color-danger));
}
.text-theme-danger-light {
color: rgb(var(--color-danger-light));
}
/* Neutral colors (yellow theme) */
.bg-theme-neutral-dark {
background-color: rgb(var(--color-neutral-dark));
}
.bg-theme-neutral-light {
background-color: rgb(var(--color-neutral-light));
}
.bg-theme-neutral-medium {
background-color: rgb(var(--color-neutral-medium));
}
.text-theme-neutral-dark {
color: rgb(var(--color-neutral-dark));
}
.text-theme-neutral-light {
color: rgb(var(--color-neutral-light));
}
.text-theme-neutral-medium {
color: rgb(var(--color-neutral-medium));
}
.text-theme-inverse {
color: rgb(var(--color-text-inverse));
}
/* Border utilities */
.border-theme-primary {
border-color: rgb(var(--color-primary-300));
}
.border-theme-border {
border-color: rgb(var(--color-border));
}
.border-theme-muted {
border-color: rgb(var(--color-primary-400));
}
.border-theme-accent {
border-color: rgb(var(--color-accent));
}
.border-theme-danger-dark {
border-color: rgb(var(--color-danger-dark));
}
.border-theme-danger {
border-color: rgb(var(--color-danger));
}
/* Focus state utilities */
.focus\:border-theme-danger-dark:focus {
border-color: rgb(var(--color-danger-dark));
}
.focus\:ring-theme-danger-light:focus {
--tw-ring-color: rgb(var(--color-danger-light));
}
.focus\:ring-theme-accent:focus {
--tw-ring-color: rgb(var(--color-accent));
}
/* Hover state utilities */
.hover\:bg-theme-danger:hover {
background-color: rgb(var(--color-danger));
}
.hover\:bg-theme-accent:hover {
background-color: rgb(var(--color-accent));
}
.hover\:bg-theme-brand:hover {
background-color: rgb(var(--color-brand));
}
.hover\:text-theme-accent:hover {
color: rgb(var(--color-accent));
}
/* Active state utilities */
.active\:bg-theme-danger:active {
background-color: rgb(var(--color-danger));
}
.active\:bg-theme-accent:active {
background-color: rgb(var(--color-accent));
}
.font-theme-body {
font-family: var(--font-family-body);
}
.font-theme-heading {
font-family: var(--font-family-heading);
}
}
/* Post content styling */
/* Header styling */
.post-content h1 {
font-size: x-large !important;
margin-top: 2.5rem !important;
margin-bottom: 1.5rem !important;
line-height: 1.2 !important;
color: rgb(var(--color-text-primary)) !important;
}
.post-content h2 {
font-size: x-large !important;
margin-top: 2rem !important;
margin-bottom: 1.25rem !important;
line-height: 1.3 !important;
color: rgb(var(--color-text-primary)) !important;
}
.post-content h3 {
font-size: x-large !important;
margin-top: 1.75rem !important;
margin-bottom: 1rem !important;
line-height: 1.4 !important;
color: rgb(var(--color-text-primary)) !important;
}
.post-content h4 {
font-size: x-large !important;
margin-top: 1.5rem !important;
margin-bottom: 0.875rem !important;
line-height: 1.4 !important;
color: rgb(var(--color-text-primary)) !important;
}
.post-content h5 {
font-size: x-large !important;
margin-top: 1.25rem !important;
margin-bottom: 0.75rem !important;
line-height: 1.5 !important;
color: rgb(var(--color-text-primary)) !important;
}
.post-content h6 {
font-size: x-large !important;
margin-top: 1rem !important;
margin-bottom: 0.5rem !important;
line-height: 1.5 !important;
color: rgb(var(--color-text-primary)) !important;
}
/* Link styling */
.post-content a {
text-decoration: underline !important;
color: rgb(var(--color-text-primary)) !important;
}
.post-content a:hover {
color: rgb(var(--color-text-secondary)) !important;
}
/* List styling - !important to override Tailwind preflight reset */
/* General list container styles */
div.post-content ul,
div.post-content ol,
.post-content > ul,
.post-content > ol {
list-style-position: outside !important;
margin-left: 2.5rem !important;
margin-top: 1rem !important;
margin-bottom: 1rem !important;
padding-left: 0 !important;
}
/* Default list item styles */
div.post-content ul li,
div.post-content ol li,
.post-content > ul > li,
.post-content > ol > li {
display: list-item !important;
margin-top: 0.25rem !important;
margin-bottom: 0.25rem !important;
padding-left: 0.5rem !important;
margin-left: 0 !important;
}
/* Quill uses data-list attributes on li elements - these must override defaults */
/* Quill wraps BOTH ordered and unordered lists in tags! */
/* Remove list styling from containers that have data-list children */
div.post-content ol:has(li[data-list]),
div.post-content ul:has(li[data-list]),
.post-content > ol:has(li[data-list]),
.post-content > ul:has(li[data-list]) {
list-style-type: none !important;
list-style: none !important;
}
/* Ordered lists from Quill - the li element controls the style */
div.post-content li[data-list="ordered"],
.post-content > ol > li[data-list="ordered"] {
list-style-type: decimal !important;
}
/* Bullet lists from Quill - the li element controls the style */
div.post-content li[data-list="bullet"],
.post-content > ul > li[data-list="bullet"],
.post-content > ol > li[data-list="bullet"] {
list-style-type: disc !important;
}
/* Standard HTML lists (without data-list) - fallback styles */
div.post-content ul:not(:has(li[data-list])),
.post-content > ul:not(:has(li[data-list])) {
list-style: disc !important;
list-style-type: disc !important;
}
div.post-content ul:not(:has(li[data-list])) li,
.post-content > ul:not(:has(li[data-list])) > li {
list-style-type: disc !important;
}
div.post-content ol:not(:has(li[data-list])),
.post-content > ol:not(:has(li[data-list])) {
list-style: decimal !important;
list-style-type: decimal !important;
}
div.post-content ol:not(:has(li[data-list])) li,
.post-content > ol:not(:has(li[data-list])) > li {
list-style-type: decimal !important;
}
/* Nested list styles */
.post-content ul ul {
list-style-type: circle !important;
margin-top: 0.5rem !important;
margin-bottom: 0.5rem !important;
}
.post-content ul ul ul {
list-style-type: square !important;
}
.post-content ol ol {
list-style-type: lower-alpha !important;
margin-top: 0.5rem !important;
margin-bottom: 0.5rem !important;
}
.post-content ol ol ol {
list-style-type: lower-roman !important;
}
/* Nested list combinations */
.post-content ul ol,
.post-content ol ul {
margin-top: 0.5rem !important;
margin-bottom: 0.5rem !important;
}
/* Tagify focus styles - use theme-accent color */
tags.tagify.tagify--focus {
--tagify-dd-color-primary: rgb(var(--color-accent)) !important;
border-color: rgb(var(--color-accent)) !important;
box-shadow: 0 0 0 1px rgb(var(--color-accent)) !important;
}