@import "tailwindcss"; /* Light theme tokens (future-ready) */ :root[data-theme="light"] { --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; --color-background-primary: #f6f9fc; --color-background-secondary: #ffffff; --color-background-card: #ffffff; --color-surface-elevated: #f8fbff; --color-text-primary: #0f172a; --color-text-secondary: #475569; --color-text-muted: #64748b; --color-border: #d2dcec; --color-border-strong: #aec0de; --color-card-background: #ffffff; --color-card-foreground: #0f172a; --color-card-muted: #475569; --color-card-border: #d2dcec; --color-badge-default-bg: #edf3fb; --color-badge-default-fg: #1e293b; --color-badge-default-border: #c9d8ec; --color-badge-success-bg: #e6f7ef; --color-badge-success-fg: #14532d; --color-badge-success-border: #98d8b5; --color-badge-warning-bg: #fff4df; --color-badge-warning-fg: #92400e; --color-badge-warning-border: #f6c88b; --color-badge-danger-bg: #ffe8e8; --color-badge-danger-fg: #991b1b; --color-badge-danger-border: #f2b0b0; --color-purpose-consultation-bg: #f1eafe; --color-purpose-consultation-fg: #5b21b6; --color-purpose-consultation-border: #cfb8f7; --color-purpose-filling-bg: #fff1e5; --color-purpose-filling-fg: #9a3412; --color-purpose-filling-border: #f8c9a6; --color-purpose-endo-bg: #ffe9e9; --color-purpose-endo-fg: #991b1b; --color-purpose-endo-border: #f4b6b6; --color-purpose-visit-bg: #e7f4ff; --color-purpose-visit-fg: #0c4a6e; --color-purpose-visit-border: #abd8f3; --color-purpose-hygiene-bg: #effadf; --color-purpose-hygiene-fg: #3f6212; --color-purpose-hygiene-border: #cbe9a1; --color-primary: #009cae; --color-primary-contrast: #031014; --color-primary-soft: rgba(0, 156, 174, 0.16); --color-icon: #e1bc72; /* Realistic tooth: white–blue crown, soft pink root */ --tooth-crown-hi: #ffffff; --tooth-crown-mid: #e0f2fe; --tooth-crown-shade: #93c5fd; --tooth-root-hi: #f6efe6; --tooth-root-mid: #e4d4bf; --tooth-root-shade: #c9b396; --tooth-stroke: #94a3b8; --tooth-hover: #cfe0f5; --web-opacity: 0.12; --web-line: rgba(0, 188, 255, 0.32); --web-glow: rgba(0, 188, 255, 0.42); } /* Dark theme tokens */ :root[data-theme="dark"] { --color-background-primary: #000c1c; --color-background-secondary: #0b1a2b; --color-background-card: #14253d; --color-surface-elevated: #1b2f4e; --color-text-primary: #f5f9ff; --color-text-secondary: #b6c6dd; --color-text-muted: #8ea3bf; --color-border: #29456a; --color-border-strong: #3b5f8f; --color-card-background: #14253d; --color-card-foreground: #f5f9ff; --color-card-muted: #b6c6dd; --color-card-border: #29456a; --color-badge-default-bg: rgba(27, 47, 78, 0.32); --color-badge-default-fg: #9eb1cb; --color-badge-default-border: rgba(59, 95, 143, 0.32); --color-badge-success-bg: rgba(6, 78, 59, 0.22); --color-badge-success-fg: #7dd3a8; --color-badge-success-border: rgba(34, 100, 68, 0.28); --color-badge-warning-bg: rgba(120, 53, 15, 0.22); --color-badge-warning-fg: #dfc06a; --color-badge-warning-border: rgba(146, 88, 20, 0.28); --color-badge-danger-bg: rgba(127, 29, 29, 0.22); --color-badge-danger-fg: #e4a6a6; --color-badge-danger-border: rgba(153, 50, 50, 0.28); --color-purpose-consultation-bg: rgba(139, 92, 246, 0.25); --color-purpose-consultation-fg: #ddd6fe; --color-purpose-consultation-border: rgba(167, 139, 250, 0.5); --color-purpose-filling-bg: rgba(249, 115, 22, 0.25); --color-purpose-filling-fg: #fed7aa; --color-purpose-filling-border: rgba(251, 146, 60, 0.5); --color-purpose-endo-bg: rgba(239, 68, 68, 0.25); --color-purpose-endo-fg: #fecaca; --color-purpose-endo-border: rgba(248, 113, 113, 0.5); --color-purpose-visit-bg: rgba(14, 165, 233, 0.25); --color-purpose-visit-fg: #bae6fd; --color-purpose-visit-border: rgba(56, 189, 248, 0.5); --color-purpose-hygiene-bg: rgba(132, 204, 22, 0.2); --color-purpose-hygiene-fg: #d9f99d; --color-purpose-hygiene-border: rgba(163, 230, 53, 0.45); --color-primary: #09a9bc; --color-primary-contrast: #001117; --color-primary-soft: rgba(9, 169, 188, 0.2); --color-icon: #e1bc72; --tooth-crown-hi: #ffffff; --tooth-crown-mid: #dbeafe; --tooth-crown-shade: #7dd3fc; --tooth-root-hi: #f3ebe0; --tooth-root-mid: #dcc9ae; --tooth-root-shade: #bba280; --tooth-stroke: #94a3b8; --tooth-hover: #bdd0e0; } /* Default theme = dark */ :root { --radius-sm: 4px; --radius-md: 6px; --radius-lg: 8px; --today-grid-unit: 5.75rem; --color-background-primary: #000c1c; --color-background-secondary: #0a1520; --color-background-card: #14253d; --color-surface-elevated: #1b2f4e; --color-text-primary: #f5f9ff; --color-text-secondary: #b6c6dd; --color-text-muted: #8ea3bf; --color-border: #29456a; --color-border-strong: #3b5f8f; --color-card-background: #14253d; --color-card-foreground: #f5f9ff; --color-card-muted: #b6c6dd; --color-card-border: #29456a; --color-badge-default-bg: rgba(27, 47, 78, 0.32); --color-badge-default-fg: #9eb1cb; --color-badge-default-border: rgba(59, 95, 143, 0.32); --color-badge-success-bg: rgba(6, 78, 59, 0.22); --color-badge-success-fg: #7dd3a8; --color-badge-success-border: rgba(34, 100, 68, 0.28); --color-badge-warning-bg: rgba(120, 53, 15, 0.22); --color-badge-warning-fg: #dfc06a; --color-badge-warning-border: rgba(146, 88, 20, 0.28); --color-badge-danger-bg: rgba(127, 29, 29, 0.22); --color-badge-danger-fg: #e4a6a6; --color-badge-danger-border: rgba(153, 50, 50, 0.28); --color-purpose-consultation-bg: rgba(139, 92, 246, 0.25); --color-purpose-consultation-fg: #ddd6fe; --color-purpose-consultation-border: rgba(167, 139, 250, 0.5); --color-purpose-filling-bg: rgba(249, 115, 22, 0.25); --color-purpose-filling-fg: #fed7aa; --color-purpose-filling-border: rgba(251, 146, 60, 0.5); --color-purpose-endo-bg: rgba(239, 68, 68, 0.25); --color-purpose-endo-fg: #fecaca; --color-purpose-endo-border: rgba(248, 113, 113, 0.5); --color-purpose-visit-bg: rgba(14, 165, 233, 0.25); --color-purpose-visit-fg: #bae6fd; --color-purpose-visit-border: rgba(56, 189, 248, 0.5); --color-purpose-hygiene-bg: rgba(132, 204, 22, 0.2); --color-purpose-hygiene-fg: #d9f99d; --color-purpose-hygiene-border: rgba(163, 230, 53, 0.45); --color-primary: #09a9bc; --color-primary-contrast: #001117; --color-primary-soft: rgba(9, 169, 188, 0.2); --color-icon: #f3bb4b; --tooth-crown-hi: #ffffff; --tooth-crown-mid: #dbeafe; --tooth-crown-shade: #7dd3fc; --tooth-root-hi: #f3ebe0; --tooth-root-mid: #dcc9ae; --tooth-root-shade: #bba280; --tooth-stroke: #94a3b8; --tooth-hover: #bdd0e0; --web-opacity: 0.14; --web-line: rgba(59, 153, 220, 0.34); --web-line-strong: rgba(73, 214, 255, 0.78); --web-glow: rgba(48, 204, 255, 0.55); } @theme inline { --color-background-primary: var(--color-background-primary); --color-background-secondary: var(--color-background-secondary); --color-background-card: var(--color-background-card); --color-surface-elevated: var(--color-surface-elevated); --color-text-primary: var(--color-text-primary); --color-text-secondary: var(--color-text-secondary); --color-text-muted: var(--color-text-muted); --color-border: var(--color-border); --color-border-strong: var(--color-border-strong); --color-card: var(--color-card-background); --color-card-foreground: var(--color-card-foreground); --color-card-muted: var(--color-card-muted); --color-card-border: var(--color-card-border); --color-badge-default-bg: var(--color-badge-default-bg); --color-badge-default-fg: var(--color-badge-default-fg); --color-badge-default-border: var(--color-badge-default-border); --color-badge-success-bg: var(--color-badge-success-bg); --color-badge-success-fg: var(--color-badge-success-fg); --color-badge-success-border: var(--color-badge-success-border); --color-badge-warning-bg: var(--color-badge-warning-bg); --color-badge-warning-fg: var(--color-badge-warning-fg); --color-badge-warning-border: var(--color-badge-warning-border); --color-badge-danger-bg: var(--color-badge-danger-bg); --color-badge-danger-fg: var(--color-badge-danger-fg); --color-badge-danger-border: var(--color-badge-danger-border); --color-purpose-consultation-bg: var(--color-purpose-consultation-bg); --color-purpose-consultation-fg: var(--color-purpose-consultation-fg); --color-purpose-consultation-border: var(--color-purpose-consultation-border); --color-purpose-filling-bg: var(--color-purpose-filling-bg); --color-purpose-filling-fg: var(--color-purpose-filling-fg); --color-purpose-filling-border: var(--color-purpose-filling-border); --color-purpose-endo-bg: var(--color-purpose-endo-bg); --color-purpose-endo-fg: var(--color-purpose-endo-fg); --color-purpose-endo-border: var(--color-purpose-endo-border); --color-purpose-visit-bg: var(--color-purpose-visit-bg); --color-purpose-visit-fg: var(--color-purpose-visit-fg); --color-purpose-visit-border: var(--color-purpose-visit-border); --color-purpose-hygiene-bg: var(--color-purpose-hygiene-bg); --color-purpose-hygiene-fg: var(--color-purpose-hygiene-fg); --color-purpose-hygiene-border: var(--color-purpose-hygiene-border); --color-primary: var(--color-primary); --color-primary-contrast: var(--color-primary-contrast); --color-primary-soft: var(--color-primary-soft); } html, body { padding: 0; margin: 0; } html { color-scheme: dark; } html[data-theme='light'] { color-scheme: light; } /* Minimal RTL layer — refine incrementally. */ html[dir='rtl'] body { direction: rtl; } /* Sidebar: don't rely on Tailwind rtl: variants. */ html[dir='rtl'] .app-sidebar { border-right: 0; border-left: 1px solid var(--color-border); } /* Mobile drawer only — desktop sidebar follows flex + document direction. */ @media (max-width: 1023px) { html[dir='rtl'] .app-sidebar { left: auto; right: 0; } } /* Treatment rail: align header text to the right in RTL. */ html[dir='rtl'] .treatment-rail-section > button { text-align: right; } body { background-color: var(--color-background-primary); color: var(--color-text-primary); font-family: var(--font-sans, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif); } select.form-select, select { color: var(--color-text-primary); background-color: var(--color-background-card); font-size: 1rem; } /* Shared chevron for all `.form-select` — symmetric inset matches `ps-3` text padding. */ select.form-select:not(.form-select-no-chevron) { appearance: none; -webkit-appearance: none; text-align: start; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-size: 1rem 1rem; background-position: right 0.75rem center; } html[dir='rtl'] select.form-select:not(.form-select-no-chevron) { background-position: left 0.75rem center; } select.form-select.form-select-no-chevron { background-image: none; } @media (min-width: 640px) { select.form-select, select { font-size: 0.875rem; } } select option { color: var(--color-text-primary); background-color: var(--color-background-secondary); } :root[data-theme='dark'] select.form-select, :root[data-theme='dark'] select, :root:not([data-theme='light']) select.form-select, :root:not([data-theme='light']) select { color-scheme: dark; } .surface-card { background: color-mix(in srgb, var(--color-card-background) 92%, transparent); border: 1px solid var(--color-card-border); color: var(--color-card-foreground); border-radius: var(--radius-lg); } @media (min-width: 1024px) { .today-dashboard-grid .today-dashboard-cell { grid-column: var(--today-gc); grid-row: var(--today-gr); } } :root[data-theme='dark'] .surface-card, :root:not([data-theme='light']) .surface-card { background: color-mix(in srgb, var(--color-card-background) 82%, var(--color-background-primary)); } .surface-panel { background: color-mix(in srgb, var(--color-background-secondary) 96%, transparent); border: 1px solid var(--color-border); border-radius: var(--radius-md); } .icon-flat { stroke-width: 1.9; fill: none; stroke-linecap: round; stroke-linejoin: round; } /* Global icon color override (easy to revert) */ .lucide { color: var(--color-icon); stroke: currentColor; } /* Opt out when an icon sits on a primary/filled control (Send, etc.) */ .lucide.lucide-on-primary { color: #fff; stroke: currentColor; } @keyframes task-row-complete-exit { 0% { opacity: 1; transform: translateX(0); max-height: 9rem; } 40% { opacity: 1; transform: translateX(0); background-color: color-mix(in srgb, var(--color-badge-success-bg) 75%, transparent); } 100% { opacity: 0; transform: translateX(0.75rem); max-height: 0; overflow: hidden; } } .task-row-complete-exit { animation: task-row-complete-exit 0.55s ease-in forwards; pointer-events: none; overflow: hidden; }