:root { --brand-primary: #0F766E; --brand-primary-hover: #115E59; --brand-accent: #B45309; --app-bg: #F7F8F7; --surface: #FFFFFF; --surface-muted: #F1F5F4; --surface-raised: #FFFFFF; --border: #DDE5E2; --border-strong: #B9C8C3; --text-primary: #17211F; --text-muted: #64706D; --text-soft: #8B9894; --focus-ring: rgba(15, 118, 110, 0.24); --status-success-bg: #DFF6EE; --status-success-text: #0F766E; --status-warning-bg: #FEF3D2; --status-warning-text: #9A5B00; --status-danger-bg: #FCE4E1; --status-danger-text: #B42318; --sidebar-bg: #19211F; --sidebar-muted: #A5B2AE; --sidebar-active: rgba(15, 118, 110, 0.22); --sidebar-border: rgba(221, 229, 226, 0.12); --radius-sm: 0.375rem; --radius-md: 0.5rem; --radius-lg: 0.5rem; --shadow-card: 0 1px 2px rgba(23, 33, 31, 0.06), 0 12px 28px rgba(23, 33, 31, 0.045); --shadow-popover: 0 18px 44px rgba(23, 33, 31, 0.18); } html.dark { --brand-primary: #5EEAD4; --brand-primary-hover: #2DD4BF; --brand-accent: #FCD34D; --app-bg: #101614; --surface: #18201E; --surface-muted: #202A27; --surface-raised: #1B2522; --border: #2E3B37; --border-strong: #43524D; --text-primary: #F4F7F6; --text-muted: #B4C0BC; --text-soft: #889692; --focus-ring: rgba(94, 234, 212, 0.28); --status-success-bg: rgba(45, 212, 191, 0.16); --status-success-text: #99F6E4; --status-warning-bg: rgba(252, 211, 77, 0.16); --status-warning-text: #FDE68A; --status-danger-bg: rgba(248, 113, 113, 0.16); --status-danger-text: #FCA5A5; --sidebar-bg: #111816; --sidebar-muted: #9DACA7; --sidebar-active: rgba(94, 234, 212, 0.15); --sidebar-border: rgba(221, 229, 226, 0.12); --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.34); --shadow-popover: 0 18px 50px rgba(0, 0, 0, 0.42); color-scheme: dark; } html, body { font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background-color: var(--app-bg); color: var(--text-primary); scrollbar-gutter: stable; font-size: 15px; letter-spacing: 0; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } body.tts-sidebar-open { overflow: hidden; } * { scrollbar-width: thin; scrollbar-color: rgba(100, 116, 139, 0.72) transparent; } *::-webkit-scrollbar { width: 10px; height: 10px; } *::-webkit-scrollbar-track { background: transparent; } *::-webkit-scrollbar-thumb { background-color: rgba(100, 116, 139, 0.72); border: 2px solid transparent; border-radius: 999px; background-clip: content-box; min-height: 40px; } *::-webkit-scrollbar-thumb:hover { background-color: rgba(71, 85, 105, 0.92); background-clip: content-box; } *::-webkit-scrollbar-corner { background: transparent; } a, .btn-link { color: var(--brand-primary); } .btn-primary { color: #fff; background-color: var(--brand-primary); border-color: var(--brand-primary); } .btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { box-shadow: 0 0 0 0.1rem var(--surface), 0 0 0 0.25rem var(--focus-ring); } .content { padding-top: 1.1rem; } h1:focus { outline: none; } .valid.modified:not([type=checkbox]) { outline: 1px solid #111827; } .invalid { outline: 1px solid #991B1B; } .validation-message { color: #991B1B; } .blazor-error-boundary { background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC51NDUgOTIuNzk1IDI5MC5hNTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNjg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyICcuODc5IDY5LjMxNzkgMjY3LjgyOSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA5Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #240046; padding: 1rem 1rem 1rem 3.7rem; color: white; } .blazor-error-boundary::after { content: "An error has occurred." } .darker-border-checkbox.form-check-input { border-color: #929292; } html.dark a, html.dark .btn-link { color: #93C5FD; } html.dark, html.dark body { background-color: var(--app-bg); color: var(--text-primary); scrollbar-color: rgba(148, 163, 184, 0.82) rgba(15, 23, 42, 0.9); } html.dark *::-webkit-scrollbar-track { background: rgba(15, 23, 42, 0.9); } html.dark *::-webkit-scrollbar-thumb { background-color: rgba(148, 163, 184, 0.82); } html.dark *::-webkit-scrollbar-thumb:hover { background-color: rgba(226, 232, 240, 0.9); } html.dark .bg-white, html.dark .bg-card, html.dark .bg-popover { background-color: #111827 !important; } html.dark .bg-slate-50, html.dark .bg-slate-50\/50, html.dark .bg-slate-50\/60, html.dark .bg-slate-50\/70, html.dark .bg-muted { background-color: #1E293B !important; } html.dark .bg-background, html.dark .bg-slate-100, html.dark .bg-slate-100\/50, html.dark .bg-slate-200, html.dark .bg-slate-300 { background-color: #334155 !important; } html.dark .bg-slate-400, html.dark .bg-slate-500 { background-color: #475569 !important; } html.dark .bg-slate-800, html.dark .bg-slate-900, html.dark .bg-slate-950 { background-color: #0F172A !important; } html.dark .text-foreground, html.dark .text-card-foreground, html.dark .text-popover-foreground, html.dark .text-primary, html.dark .text-slate-950, html.dark .text-slate-900, html.dark .text-slate-800, html.dark .text-slate-700 { color: #F8FAFC !important; } html.dark .text-slate-600, html.dark .text-slate-500 { color: #CBD5E1 !important; } html.dark .text-muted-foreground, html.dark .text-muted, html.dark .text-slate-400, html.dark .text-slate-300 { color: #94A3B8 !important; } html.dark .border-slate-100, html.dark .border-slate-200, html.dark .border-slate-300, html.dark .border-slate-800, html.dark .border-border, html.dark .divide-slate-100, html.dark .divide-slate-200 { border-color: #334155 !important; } html.dark .border-red-500, html.dark .border-rose-500 { border-color: #FB7185 !important; } html.dark .border-violet-500, html.dark .border-violet-600, html.dark .border-indigo-500, html.dark .border-indigo-600 { border-color: #93C5FD !important; } html.dark input, html.dark select, html.dark textarea, html.dark .form-control, html.dark .form-select { background-color: #0F172A !important; color: #F8FAFC !important; border-color: #334155 !important; } html.dark input::placeholder, html.dark textarea::placeholder { color: #94A3B8 !important; } html.dark input[type="checkbox"], html.dark input[type="radio"] { accent-color: #2563EB; } html.dark .btn-primary, html.dark .bg-primary, html.dark .bg-violet-500, html.dark .bg-violet-600, html.dark .bg-purple-500, html.dark .bg-purple-600, html.dark .bg-indigo-500, html.dark .bg-indigo-600 { background-color: #2563EB !important; border-color: #4338CA !important; color: #FFFFFF !important; } html.dark .bg-violet-700, html.dark .bg-purple-700, html.dark .bg-indigo-700 { background-color: #4338CA !important; color: #FFFFFF !important; } html.dark .bg-violet-400, html.dark .bg-purple-400, html.dark .bg-indigo-400 { background-color: #93C5FD !important; } html.dark .bg-violet-50, html.dark .bg-violet-50\/40, html.dark .bg-violet-50\/70, html.dark .bg-violet-100, html.dark .bg-violet-200, html.dark .bg-purple-50, html.dark .bg-purple-100, html.dark .bg-indigo-100 { background-color: rgba(129, 140, 248, 0.18) !important; } html.dark .text-violet-500, html.dark .text-violet-600, html.dark .text-violet-700, html.dark .text-purple-600, html.dark .text-purple-700, html.dark .text-indigo-600, html.dark .text-indigo-700 { color: #93C5FD !important; } html.dark .bg-rose-50, html.dark .bg-rose-100, html.dark .bg-rose-500\/10, html.dark .bg-red-50, html.dark .bg-red-100 { background-color: rgba(244, 63, 94, 0.18) !important; } html.dark .text-rose-500, html.dark .text-rose-600, html.dark .text-rose-700, html.dark .text-red-500, html.dark .text-red-600, html.dark .text-red-700 { color: #FDA4AF !important; } html.dark .bg-amber-50, html.dark .bg-amber-100, html.dark .bg-amber-500\/10, html.dark .bg-yellow-50, html.dark .bg-yellow-100, html.dark .bg-orange-50, html.dark .bg-orange-100 { background-color: rgba(245, 158, 11, 0.18) !important; } html.dark .text-amber-500, html.dark .text-amber-600, html.dark .text-amber-700, html.dark .text-amber-800, html.dark .text-yellow-600, html.dark .text-yellow-700, html.dark .text-orange-600, html.dark .text-orange-700 { color: #FCD34D !important; } html.dark .bg-emerald-50, html.dark .bg-emerald-100, html.dark .bg-emerald-500\/10, html.dark .bg-green-50, html.dark .bg-green-100 { background-color: rgba(16, 185, 129, 0.18) !important; } html.dark .text-emerald-500, html.dark .text-emerald-600, html.dark .text-emerald-700, html.dark .text-green-500, html.dark .text-green-600, html.dark .text-green-700 { color: #6EE7B7 !important; } html.dark .bg-blue-50, html.dark .bg-blue-100, html.dark .bg-sky-50, html.dark .bg-cyan-50, html.dark .bg-teal-50 { background-color: rgba(14, 165, 233, 0.18) !important; } html.dark .text-blue-600, html.dark .text-blue-700, html.dark .text-sky-600, html.dark .text-cyan-600, html.dark .text-teal-600 { color: #7DD3FC !important; } html.dark .hover\:bg-white:hover, html.dark .hover\:bg-slate-50:hover, html.dark .hover\:bg-slate-50\/50:hover, html.dark .hover\:bg-slate-50\/60:hover, html.dark .hover\:bg-slate-100:hover { background-color: #1E293B !important; } html.dark .hover\:bg-violet-500:hover, html.dark .hover\:bg-violet-600:hover, html.dark .hover\:bg-violet-700:hover, html.dark .hover\:bg-purple-700:hover, html.dark .hover\:bg-indigo-100:hover { background-color: #4338CA !important; color: #FFFFFF !important; } html.dark .hover\:bg-violet-50:hover { background-color: rgba(129, 140, 248, 0.22) !important; } html.dark .hover\:bg-amber-50:hover { background-color: rgba(245, 158, 11, 0.22) !important; } html.dark .hover\:bg-rose-50:hover, html.dark .hover\:bg-red-50:hover { background-color: rgba(244, 63, 94, 0.22) !important; } html.dark .hover\:text-slate-600:hover, html.dark .hover\:text-slate-700:hover, html.dark .hover\:text-slate-800:hover, html.dark .hover\:text-slate-900:hover { color: #F8FAFC !important; } html.dark .hover\:text-violet-500:hover, html.dark .hover\:text-violet-600:hover, html.dark .hover\:text-violet-700:hover, html.dark .hover\:text-violet-800:hover { color: #93C5FD !important; } html.dark .hover\:text-amber-600:hover { color: #FCD34D !important; } html.dark .hover\:text-rose-500:hover, html.dark .hover\:text-rose-600:hover, html.dark .hover\:text-red-600:hover { color: #FDA4AF !important; } html.dark .focus\:ring-slate-400:focus, html.dark .focus\:ring-slate-900:focus, html.dark .focus\:ring-violet-600:focus, html.dark .focus\:ring-red-500:focus { --tw-ring-color: #93C5FD !important; } html.dark .shadow-sm { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35) !important; } html.dark .shadow-lg, html.dark .shadow-lg { box-shadow: 0 18px 50px rgba(0, 0, 0, 0.28) !important; } html.dark .flatpickr-calendar { background: #111827; border-color: #334155; box-shadow: 0 18px 50px rgba(0, 0, 0, 0.35); } html.dark .flatpickr-months, html.dark .flatpickr-weekdays, html.dark .flatpickr-current-month, html.dark .flatpickr-weekday, html.dark .flatpickr-day { color: #E2E8F0; } html.dark .flatpickr-day:hover, html.dark .flatpickr-day:focus { background: #1E293B; border-color: #334155; } html.dark .flatpickr-day.selected, html.dark .flatpickr-day.startRange, html.dark .flatpickr-day.endRange { background: var(--brand-primary); border-color: var(--brand-primary); color: #FFFFFF; } /* Taskify UI system */ .app-shell { --app-sidebar-width: 18rem; display: flex; min-height: 100vh; background: var(--app-bg); color: var(--text-primary); overflow: hidden; } .app-sidebar { position: relative; display: flex; width: var(--app-sidebar-width); min-height: 100vh; flex-shrink: 0; flex-direction: column; overflow: hidden; border-right: 1px solid var(--sidebar-border); background: var(--sidebar-bg); color: #FFFFFF; } .app-sidebar::before { position: absolute; inset: 0; pointer-events: none; content: ""; background: transparent; } .app-sidebar > * { position: relative; z-index: 1; } .app-sidebar-brand { display: flex; min-height: 4.75rem; align-items: center; gap: 0.75rem; padding: 1rem 1.25rem; } .app-sidebar-logo { display: inline-flex; height: 2.4rem; width: 2.4rem; align-items: center; justify-content: center; border-radius: var(--radius-lg); background: var(--brand-primary); color: #FFFFFF; box-shadow: 0 10px 28px rgba(37, 99, 235, 0.28); } .app-sidebar-title { display: flex; flex-direction: column; line-height: 1.15; } .app-sidebar-title strong { font-size: 1.1rem; letter-spacing: 0; } .app-sidebar-title span { margin-top: 0.15rem; color: var(--sidebar-muted); font-size: 0.72rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; } .app-sidebar-user { flex-shrink: 0; border-top: 1px solid var(--sidebar-border); padding: 0.875rem; } .app-main { display: flex; min-width: 0; flex: 1; flex-direction: column; } .app-topbar { display: flex; min-height: 4rem; align-items: center; justify-content: space-between; gap: 1rem; border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--surface) 92%, transparent); padding: 0 1.5rem; backdrop-filter: blur(12px); } .app-topbar-title { min-width: 0; } .app-topbar-title h1 { margin: 0; color: var(--text-primary); font-size: 1.05rem; font-weight: 750; letter-spacing: 0; } .app-topbar-title p { margin: 0.1rem 0 0; color: var(--text-muted); font-size: 0.78rem; font-weight: 500; } .app-content { flex: 1; overflow-y: auto; padding: clamp(1rem, 2vw, 2rem); } @media (min-width: 960px) { .app-shell { height: 100dvh; min-height: 100dvh; padding-left: var(--app-sidebar-width); } .app-shell .app-sidebar { position: fixed; inset: 0 auto 0 0; height: 100dvh; min-height: 100dvh; transform: translateX(0) !important; width: var(--app-sidebar-width) !important; } .app-main { height: 100dvh; min-height: 100dvh; } } /* Tiered responsive scaling for laptops & smaller screens (e.g. 13.3" HP EliteBook G6) */ @media (min-width: 1366px) and (max-width: 1536px) { :root { font-size: 13.75px; } .app-shell { --app-sidebar-width: 15.75rem; } .app-content { padding: 1.25rem !important; } } @media (min-width: 1150px) and (max-width: 1365px) { :root { font-size: 13px; } .app-shell { --app-sidebar-width: 14.75rem; } .app-content { padding: 1rem !important; } .app-topbar { min-height: 3.5rem !important; padding: 0 1.25rem !important; } .app-sidebar-brand { min-height: 4rem !important; padding: 0.75rem 1rem !important; } } /* Compact scaling for 13.3" displays with 150% scaling or 960px-1149px viewports */ @media (min-width: 960px) and (max-width: 1149px) { :root { font-size: 12.25px; } .app-shell { --app-sidebar-width: 13.75rem; } .app-content { padding: 0.85rem !important; } .app-topbar { min-height: 3.25rem !important; padding: 0 1rem !important; } .app-topbar-title h1 { font-size: 0.95rem !important; } .app-sidebar-brand { min-height: 3.75rem !important; padding: 0.65rem 0.85rem !important; } .app-sidebar-logo { height: 2rem !important; width: 2rem !important; } main td, main th { padding-top: 0.45rem !important; padding-bottom: 0.45rem !important; } } .mobile-sidebar-toggle, .mobile-sidebar-close { display: none; } .sidebar-scrim { display: none; } .control-button { display: inline-flex; height: 2.35rem; min-width: 2.35rem; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); color: var(--text-muted); box-shadow: var(--shadow-card); transition: background-color 0.16s ease, border-color 0.16s ease, color 0.16s ease, box-shadow 0.16s ease; } .control-button:hover { border-color: var(--border-strong); background: var(--surface-muted); color: var(--brand-primary); } .control-button:focus-visible { outline: none; box-shadow: 0 0 0 4px var(--focus-ring); } .surface-panel { border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); box-shadow: var(--shadow-card); } .page-kicker { color: var(--brand-primary); font-size: 0.74rem; font-weight: 750; letter-spacing: 0.08em; text-transform: uppercase; } .text-balance { text-wrap: balance; } main :is(input, select, textarea, .form-control, .form-select) { border-color: var(--border) !important; border-radius: var(--radius-lg) !important; background-color: var(--surface) !important; color: var(--text-primary) !important; } main :is(input, select, textarea, .form-control, .form-select):focus { border-color: var(--brand-primary) !important; outline: none !important; box-shadow: 0 0 0 4px var(--focus-ring) !important; } main :is(input, textarea)::placeholder { color: var(--text-soft) !important; } main table { width: 100%; border-collapse: separate; border-spacing: 0; } main thead tr { background: var(--surface-muted) !important; } main th { color: var(--text-muted) !important; white-space: nowrap; } main td { vertical-align: middle; } main tbody tr { transition: background-color 0.14s ease; } main tbody tr:hover { background: var(--surface-muted) !important; } main .shadow-\[0_18px_50px_rgba\(15\,23\,42\,0\.08\)\], main .shadow-\[0_18px_50px_rgba\(15\,23\,42\,0\.12\)\] { box-shadow: var(--shadow-card) !important; } main .rounded-\[32px\], main .rounded-\[28px\], main .rounded-\[24px\] { border-radius: var(--radius-lg) !important; } .flatpickr-calendar { border-color: var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-popover); } html.dark a, html.dark .btn-link, html.dark .text-violet-500, html.dark .text-violet-600, html.dark .text-violet-700, html.dark .text-purple-600, html.dark .text-purple-700, html.dark .text-indigo-600, html.dark .text-indigo-700 { color: var(--brand-primary) !important; } html.dark .bg-white, html.dark .bg-card, html.dark .bg-popover { background-color: var(--surface) !important; } html.dark .bg-slate-50, html.dark .bg-slate-50\/40, html.dark .bg-slate-50\/50, html.dark .bg-slate-50\/60, html.dark .bg-slate-50\/70, html.dark .bg-muted { background-color: var(--surface-muted) !important; } html.dark .border-slate-100, html.dark .border-slate-200, html.dark .border-slate-300, html.dark .border-border, html.dark .divide-slate-100, html.dark .divide-slate-200 { border-color: var(--border) !important; } html.dark .text-slate-950, html.dark .text-slate-900, html.dark .text-slate-800, html.dark .text-slate-700, html.dark .text-foreground, html.dark .text-card-foreground, html.dark .text-popover-foreground { color: var(--text-primary) !important; } html.dark .text-slate-600, html.dark .text-slate-500, html.dark .text-muted, html.dark .text-muted-foreground { color: var(--text-muted) !important; } html.dark .text-slate-400, html.dark .text-slate-300 { color: var(--text-soft) !important; } html.dark .btn-primary, html.dark .bg-primary, html.dark .bg-violet-500, html.dark .bg-violet-600, html.dark .bg-violet-700, html.dark .bg-purple-500, html.dark .bg-purple-600, html.dark .bg-indigo-500, html.dark .bg-indigo-600 { background-color: var(--brand-primary) !important; border-color: var(--brand-primary) !important; color: #FFFFFF !important; } html.dark .hover\:bg-violet-600:hover, html.dark .hover\:bg-violet-700:hover, html.dark .hover\:bg-purple-700:hover, html.dark .hover\:bg-indigo-100:hover { background-color: var(--brand-primary-hover) !important; color: #FFFFFF !important; } @media (max-width: 959px) { .app-shell { display: block; min-height: 100vh; overflow: auto; padding-left: 0 !important; } .app-sidebar { position: fixed; inset: 0 auto 0 0; z-index: 60; width: min(18rem, calc(100vw - 3rem)) !important; transform: translateX(-100%); transition: transform 0.22s ease; } body.tts-sidebar-open .app-sidebar { transform: translateX(0) !important; } .sidebar-scrim { position: fixed; inset: 0; z-index: 50; display: none; border: 0; background: rgba(15, 23, 42, 0.48); } body.tts-sidebar-open .sidebar-scrim { display: block; } .mobile-sidebar-toggle, .mobile-sidebar-close { display: inline-flex !important; } .app-main { min-height: 100vh; } .app-topbar { min-height: 3.5rem; padding: 0 1rem; } .app-content { padding: 1rem !important; } .app-topbar-title p { display: none; } } @media (max-width: 640px) { html, body { font-size: 14px; } .app-content { padding: 0.875rem; } main table { min-width: 760px; } } /* ========================================== UNIVERSAL DARK MODE OVERRIDES ========================================== */ html.dark, html.dark body, html.dark .app-shell, html.dark .app-main, html.dark .app-content { background-color: #0B1120 !important; color: #F8FAFC !important; } html.dark .bg-white, html.dark .bg-card, html.dark .bg-popover, html.dark [class*="bg-white"] { background-color: #111827 !important; color: #F8FAFC !important; } html.dark .bg-slate-50, html.dark .bg-slate-50\/40, html.dark .bg-slate-50\/50, html.dark .bg-slate-50\/60, html.dark .bg-slate-50\/70, html.dark .bg-slate-50\/95, html.dark .bg-slate-100, html.dark .bg-slate-100\/50, html.dark .bg-muted { background-color: #182235 !important; color: #F8FAFC !important; } html.dark .bg-slate-200, html.dark .bg-slate-300 { background-color: #263449 !important; } html.dark .text-slate-950, html.dark .text-slate-900, html.dark .text-slate-800, html.dark .text-slate-700, html.dark .text-foreground, html.dark .text-card-foreground, html.dark .text-popover-foreground { color: #F8FAFC !important; } html.dark .text-slate-600, html.dark .text-slate-500, html.dark .text-muted, html.dark .text-muted-foreground { color: #CBD5E1 !important; } html.dark .text-slate-400, html.dark .text-slate-300 { color: #94A3B8 !important; } html.dark .border-slate-100, html.dark .border-slate-200, html.dark .border-slate-300, html.dark .border-border, html.dark .divide-slate-100, html.dark .divide-slate-200 { border-color: #263449 !important; } html.dark .shadow-slate-200\/60, html.dark .shadow-slate-200\/50, html.dark .shadow-slate-200\/70, html.dark .shadow-sm, html.dark .shadow-md, html.dark .shadow-lg { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.45) !important; } html.dark svg line[stroke="#e2e8f0"], html.dark svg line[stroke="#E2E8F0"] { stroke: #263449 !important; } html.dark input, html.dark select, html.dark textarea, html.dark .form-control, html.dark .form-select { background-color: #111827 !important; color: #F8FAFC !important; border-color: #263449 !important; } /* ========================================== PROFESSIONAL UI REFRESH ========================================== */ body { background: var(--app-bg); } ::selection { background: rgba(15, 118, 110, 0.18); color: var(--text-primary); } .app-shell { background: var(--app-bg); } .app-shell .app-sidebar { background: var(--sidebar-bg); } .app-sidebar::before { background: transparent; } .app-sidebar-logo { background: #0F766E; box-shadow: 0 12px 28px rgba(15, 118, 110, 0.24); } .app-topbar { background: color-mix(in srgb, var(--surface) 94%, transparent); } .app-content { background: transparent; } .control-button, main button, main a[class*="inline-flex"], main .btn { border-radius: var(--radius-lg) !important; } .control-button { background: color-mix(in srgb, var(--surface) 96%, var(--brand-primary) 4%); } .btn-primary, main .bg-violet-500, main .bg-violet-600, main .bg-violet-700, main .bg-purple-500, main .bg-purple-600, main .bg-indigo-500, main .bg-indigo-600, main .bg-blue-600 { background-color: #0F766E !important; border-color: #0F766E !important; color: #FFFFFF !important; } .btn-primary:hover, main .hover\:bg-violet-500:hover, main .hover\:bg-violet-600:hover, main .hover\:bg-violet-700:hover, main .hover\:bg-purple-700:hover, main .hover\:bg-blue-600:hover, main .hover\:bg-blue-700:hover { background-color: #115E59 !important; border-color: #115E59 !important; color: #FFFFFF !important; } main .text-violet-500, main .text-violet-600, main .text-violet-700, main .text-purple-600, main .text-purple-700, main .text-indigo-600, main .text-indigo-700, main .text-blue-600, main .text-blue-700 { color: #0F766E !important; } main .hover\:text-violet-500:hover, main .hover\:text-violet-600:hover, main .hover\:text-violet-700:hover, main .hover\:text-violet-800:hover, main .hover\:text-blue-600:hover, main .hover\:text-blue-700:hover { color: #115E59 !important; } main .bg-violet-50, main .bg-violet-50\/10, main .bg-violet-50\/40, main .bg-violet-50\/60, main .bg-violet-50\/70, main .bg-violet-100, main .bg-purple-50, main .bg-purple-100, main .bg-indigo-50, main .bg-indigo-100, main .bg-blue-50, main .bg-blue-100 { background-color: #E6F4F1 !important; } main .border-violet-100, main .border-violet-200, main .border-violet-300, main .border-indigo-100, main .border-indigo-200, main .border-blue-100, main .border-blue-200 { border-color: #B7DAD4 !important; } main .focus\:ring-violet-100:focus, main .focus\:ring-violet-500:focus, main .focus\:ring-violet-600:focus, main .focus\:ring-slate-900:focus { --tw-ring-color: var(--focus-ring) !important; } main .focus\:border-violet-400:focus, main .focus\:border-violet-600:focus { border-color: var(--brand-primary) !important; } main .accent-violet-600, html.dark main .accent-violet-600 { accent-color: #0F766E !important; } main .bg-white, main .bg-card, main .bg-popover { background-color: var(--surface) !important; color: var(--text-primary) !important; } main .bg-slate-50, main .bg-slate-50\/40, main .bg-slate-50\/50, main .bg-slate-50\/60, main .bg-slate-50\/70, main .bg-slate-50\/95, main .bg-muted { background-color: var(--surface-muted) !important; } main .border-slate-100, main .border-slate-200, main .border-slate-300, main .border-border, main .divide-slate-100, main .divide-slate-200 { border-color: var(--border) !important; } main .text-slate-950, main .text-slate-900, main .text-slate-800, main .text-slate-700, main .text-foreground, main .text-card-foreground, main .text-popover-foreground { color: var(--text-primary) !important; } main .text-slate-600, main .text-slate-500, main .text-muted, main .text-muted-foreground { color: var(--text-muted) !important; } main .text-slate-400, main .text-slate-300 { color: var(--text-soft) !important; } main .shadow-sm, main .shadow-md, main .shadow-lg, main .shadow-slate-200\/50, main .shadow-slate-200\/60, main .shadow-slate-200\/70 { box-shadow: var(--shadow-card) !important; } main :is(.rounded-xl, .rounded-2xl, .rounded-3xl, .rounded-\[24px\], .rounded-\[28px\], .rounded-\[32px\]) { border-radius: var(--radius-lg) !important; } main :is(table, .surface-panel), main :is(.border-slate-200.bg-white, .border-slate-100.bg-white) { box-shadow: var(--shadow-card); } main thead tr { background: color-mix(in srgb, var(--surface-muted) 88%, var(--brand-primary) 12%) !important; } main th { font-size: 0.72rem !important; letter-spacing: 0.06em !important; } main tbody tr:hover { background: color-mix(in srgb, var(--surface-muted) 84%, var(--brand-primary) 16%) !important; } main :is(input, select, textarea, .form-control, .form-select) { min-height: 2.45rem; } main label { color: var(--text-muted) !important; font-weight: 650; } main [class*="bg-emerald-100"], main [class*="bg-green-100"] { background-color: var(--status-success-bg) !important; color: var(--status-success-text) !important; } main [class*="bg-amber-100"], main [class*="bg-yellow-100"], main [class*="bg-orange-100"] { background-color: var(--status-warning-bg) !important; color: var(--status-warning-text) !important; } main [class*="bg-red-100"], main [class*="bg-rose-100"] { background-color: var(--status-danger-bg) !important; color: var(--status-danger-text) !important; } main svg line[stroke="#e2e8f0"], main svg line[stroke="#E2E8F0"] { stroke: var(--border) !important; } main svg path[stroke="#2563eb"], main svg path[stroke="#3b82f6"] { stroke: var(--brand-primary) !important; } main svg circle[fill="#2563eb"], main svg circle[fill="#3b82f6"] { fill: var(--brand-primary) !important; } html.dark, html.dark body, html.dark .app-shell, html.dark .app-main, html.dark .app-content { background-color: var(--app-bg) !important; color: var(--text-primary) !important; } html.dark body { background: var(--app-bg); } html.dark .app-shell { background: var(--app-bg); } html.dark main .bg-white, html.dark main .bg-card, html.dark main .bg-popover, html.dark main [class*="bg-white"] { background-color: var(--surface) !important; color: var(--text-primary) !important; } html.dark main .bg-slate-50, html.dark main .bg-slate-50\/40, html.dark main .bg-slate-50\/50, html.dark main .bg-slate-50\/60, html.dark main .bg-slate-50\/70, html.dark main .bg-slate-50\/95, html.dark main .bg-slate-100, html.dark main .bg-slate-100\/50, html.dark main .bg-muted { background-color: var(--surface-muted) !important; color: var(--text-primary) !important; } html.dark main .bg-slate-200, html.dark main .bg-slate-300 { background-color: #2E3B37 !important; } html.dark main .text-slate-950, html.dark main .text-slate-900, html.dark main .text-slate-800, html.dark main .text-slate-700, html.dark main .text-foreground, html.dark main .text-card-foreground, html.dark main .text-popover-foreground { color: var(--text-primary) !important; } html.dark main .text-slate-600, html.dark main .text-slate-500, html.dark main .text-muted, html.dark main .text-muted-foreground { color: var(--text-muted) !important; } html.dark main .text-slate-400, html.dark main .text-slate-300 { color: var(--text-soft) !important; } html.dark main .border-slate-100, html.dark main .border-slate-200, html.dark main .border-slate-300, html.dark main .border-border, html.dark main .divide-slate-100, html.dark main .divide-slate-200 { border-color: var(--border) !important; } html.dark main .bg-violet-50, html.dark main .bg-violet-50\/10, html.dark main .bg-violet-50\/40, html.dark main .bg-violet-50\/60, html.dark main .bg-violet-50\/70, html.dark main .bg-violet-100, html.dark main .bg-purple-50, html.dark main .bg-purple-100, html.dark main .bg-indigo-50, html.dark main .bg-indigo-100, html.dark main .bg-blue-50, html.dark main .bg-blue-100 { background-color: rgba(94, 234, 212, 0.13) !important; } html.dark main .text-violet-500, html.dark main .text-violet-600, html.dark main .text-violet-700, html.dark main .text-purple-600, html.dark main .text-purple-700, html.dark main .text-indigo-600, html.dark main .text-indigo-700, html.dark main .text-blue-600, html.dark main .text-blue-700 { color: var(--brand-primary) !important; } html.dark main .btn-primary, html.dark main .bg-primary, html.dark main .bg-violet-500, html.dark main .bg-violet-600, html.dark main .bg-violet-700, html.dark main .bg-purple-500, html.dark main .bg-purple-600, html.dark main .bg-indigo-500, html.dark main .bg-indigo-600, html.dark main .bg-blue-600 { background-color: #0F766E !important; border-color: #0F766E !important; color: #FFFFFF !important; } html.dark input, html.dark select, html.dark textarea, html.dark .form-control, html.dark .form-select { background-color: var(--surface-raised) !important; color: var(--text-primary) !important; border-color: var(--border) !important; } /* ========================================== SHELL + DASHBOARD QUALITY GUARD Loaded after Tailwind so layout-critical rules always win. ========================================== */ :root { --app-sidebar-width: 16.25rem; --chart-primary: #0F766E; --chart-secondary: #38BDF8; --chart-success: #10B981; --chart-warning: #B45309; --chart-danger: #DC2626; } html, body { width: 100%; min-width: 0; overflow-x: hidden; } body.tts-sidebar-open { overflow: auto; } .app-shell { display: flex !important; gap: 1rem !important; min-width: 0 !important; width: 100% !important; background: var(--app-bg) !important; } .app-shell .app-sidebar { position: sticky !important; inset: 0 auto auto 0 !important; z-index: 40 !important; width: var(--app-sidebar-width) !important; height: 100dvh !important; min-height: 100dvh !important; max-width: var(--app-sidebar-width) !important; transform: translateX(0) !important; background: var(--sidebar-bg) !important; } .app-main { min-width: 0 !important; width: 100% !important; flex: 1 1 auto !important; margin-left: 1rem !important; } .app-topbar { position: sticky; top: 0; z-index: 30; min-height: 4.1rem !important; background: color-mix(in srgb, var(--surface) 96%, transparent) !important; } .app-topbar > div:last-child { position: relative; z-index: 45; pointer-events: auto; } .app-topbar .control-button, .app-topbar [data-theme-toggle] { position: relative; z-index: 46; cursor: pointer; pointer-events: auto !important; } .app-content { width: 100% !important; min-width: 0 !important; padding: clamp(1.25rem, 1.8vw, 1.75rem) !important; } .mobile-sidebar-toggle, .mobile-sidebar-close, .sidebar-scrim { display: none !important; } main > .space-y-8, main > .space-y-6 { max-width: 96rem; margin-right: auto; margin-left: auto; } main :is(.grid) { min-width: 0; } main :is(.rounded-xl.border, .rounded-lg.border, .surface-panel) { border-color: var(--border) !important; } main :is(.rounded-xl.border.border-slate-200.bg-white, .rounded-lg.border.border-slate-200.bg-white) { background: var(--surface) !important; } main :is(h2, h3) { letter-spacing: 0 !important; } main .page-kicker, main .uppercase.tracking-\[0\.08em\], main .uppercase.tracking-wider { color: var(--brand-primary) !important; } main a, main button { touch-action: manipulation; } main button, main a[class*="inline-flex"] { min-height: 2.75rem; } main svg [stroke="#2563eb"], main svg [stroke="#3b82f6"], main svg [stroke="#06b6d4"] { stroke: var(--chart-primary) !important; } main svg [fill="#2563eb"], main svg [fill="#3b82f6"], main svg [fill="#06b6d4"] { fill: var(--chart-primary) !important; } main svg stop[stop-color="#2563eb"], main svg stop[stop-color="#3b82f6"] { stop-color: var(--chart-primary) !important; } main svg [stroke="#ef4444"], main svg [fill="#ef4444"] { stroke: var(--chart-danger) !important; fill: var(--chart-danger) !important; } @media (min-width: 960px) { body.tts-sidebar-open { overflow: auto !important; } .app-shell { height: 100dvh !important; min-height: 100dvh !important; padding-left: 0 !important; overflow: hidden !important; gap: 1rem !important; } .app-main { height: 100dvh !important; min-height: 100dvh !important; } .app-content { overflow-y: auto !important; } } @media (min-width: 1366px) and (max-width: 1536px) { :root { --app-sidebar-width: 15rem; } } @media (min-width: 1150px) and (max-width: 1365px) { :root { --app-sidebar-width: 14.25rem; } } @media (min-width: 960px) and (max-width: 1149px) { :root { --app-sidebar-width: 13.25rem; } } @media (max-width: 959px) { body.tts-sidebar-open { overflow: hidden !important; } .app-shell { display: block !important; min-height: 100dvh !important; padding-left: 0 !important; overflow: auto !important; gap: 0 !important; } .app-sidebar { width: min(18rem, calc(100vw - 3rem)) !important; transform: translateX(-100%) !important; transition: transform 0.22s ease !important; } body.tts-sidebar-open .app-sidebar { transform: translateX(0) !important; } .sidebar-scrim { position: fixed !important; inset: 0 !important; z-index: 50 !important; display: none !important; border: 0 !important; background: rgba(16, 22, 20, 0.54) !important; } body.tts-sidebar-open .sidebar-scrim { display: block !important; } .mobile-sidebar-toggle, .mobile-sidebar-close { display: inline-flex !important; } .app-main { min-height: 100dvh !important; margin-left: 0 !important; } .app-topbar { min-height: 3.6rem !important; } }