@import "tailwindcss"; @import url("https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap") layer(base); @import "./styles/tokens.css"; @keyframes slide-in-right { from { opacity: 0; transform: translateX(100%); } to { opacity: 1; transform: translateX(0); } } .animate-slide-in-right { animation: slide-in-right 0.3s ease-out; } @custom-variant dark (&:is(.dark *)); @theme { /* Fonts */ --font-outfit: Outfit, sans-serif; --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; /* Breakpoints */ --breakpoint-2xsm: 375px; --breakpoint-xsm: 425px; --breakpoint-sm: 640px; --breakpoint-md: 768px; --breakpoint-lg: 1024px; --breakpoint-xl: 1280px; --breakpoint-2xl: 1536px; --breakpoint-3xl: 2000px; /* Typography */ --text-title-2xl: 72px; --text-title-2xl--line-height: 90px; --text-title-xl: 60px; --text-title-xl--line-height: 72px; --text-title-lg: 48px; --text-title-lg--line-height: 60px; --text-title-md: 36px; --text-title-md--line-height: 44px; --text-title-sm: 30px; --text-title-sm--line-height: 38px; --text-theme-xl: 20px; --text-theme-xl--line-height: 30px; --text-theme-sm: 14px; --text-theme-sm--line-height: 20px; --text-theme-xs: 12px; --text-theme-xs--line-height: 18px; /* Base Colors */ --color-current: currentColor; --color-transparent: transparent; --color-white: #ffffff; --color-black: #101828; /* Brand Colors */ --color-brand-25: color-mix(in srgb, var(--color-primary) 3%, white); --color-brand-50: color-mix(in srgb, var(--color-primary) 8%, white); --color-brand-100: color-mix(in srgb, var(--color-primary) 15%, white); --color-brand-200: color-mix(in srgb, var(--color-primary) 25%, white); --color-brand-300: color-mix(in srgb, var(--color-primary) 40%, white); --color-brand-400: color-mix(in srgb, var(--color-primary) 60%, white); --color-brand-500: var(--color-primary); --color-brand-600: var(--color-primary-dark); --color-brand-700: color-mix(in srgb, var(--color-primary-dark) 85%, black); --color-brand-800: color-mix(in srgb, var(--color-primary-dark) 70%, black); --color-brand-900: color-mix(in srgb, var(--color-primary-dark) 55%, black); --color-brand-950: color-mix(in srgb, var(--color-primary-dark) 35%, black); /* Gray Scale */ --color-gray-25: #fcfcfd; --color-gray-50: #f9fafb; --color-gray-100: #f2f4f7; --color-gray-200: #e4e7ec; --color-gray-300: #d0d5dd; --color-gray-400: #98a2b3; --color-gray-500: #667085; --color-gray-600: #475467; --color-gray-700: #344054; --color-gray-800: #1d2939; --color-gray-900: #101828; --color-gray-950: #0c111d; --color-gray-dark: #1a2231; /* Success */ --color-success-25: color-mix(in srgb, var(--color-success) 2%, white); --color-success-50: color-mix(in srgb, var(--color-success) 6%, white); --color-success-100: color-mix(in srgb, var(--color-success) 15%, white); --color-success-200: color-mix(in srgb, var(--color-success) 30%, white); --color-success-300: color-mix(in srgb, var(--color-success) 50%, white); --color-success-400: color-mix(in srgb, var(--color-success) 75%, white); --color-success-500: var(--color-success); --color-success-600: var(--color-success-dark); --color-success-700: color-mix(in srgb, var(--color-success-dark) 85%, black); --color-success-800: color-mix(in srgb, var(--color-success-dark) 65%, black); --color-success-900: color-mix(in srgb, var(--color-success-dark) 50%, black); --color-success-950: color-mix(in srgb, var(--color-success-dark) 35%, black); /* Error */ --color-error-25: color-mix(in srgb, var(--color-danger) 2%, white); --color-error-50: color-mix(in srgb, var(--color-danger) 5%, white); --color-error-100: color-mix(in srgb, var(--color-danger) 10%, white); --color-error-200: color-mix(in srgb, var(--color-danger) 20%, white); --color-error-300: color-mix(in srgb, var(--color-danger) 40%, white); --color-error-400: color-mix(in srgb, var(--color-danger) 65%, white); --color-error-500: var(--color-danger); --color-error-600: var(--color-danger-dark); --color-error-700: color-mix(in srgb, var(--color-danger-dark) 80%, black); --color-error-800: color-mix(in srgb, var(--color-danger-dark) 65%, black); --color-error-900: color-mix(in srgb, var(--color-danger-dark) 50%, black); --color-error-950: color-mix(in srgb, var(--color-danger-dark) 30%, black); /* Warning */ --color-warning-25: color-mix(in srgb, var(--color-warning) 2%, white); --color-warning-50: color-mix(in srgb, var(--color-warning) 4%, white); --color-warning-100: color-mix(in srgb, var(--color-warning) 10%, white); --color-warning-200: color-mix(in srgb, var(--color-warning) 20%, white); --color-warning-300: color-mix(in srgb, var(--color-warning) 40%, white); --color-warning-400: color-mix(in srgb, var(--color-warning) 65%, white); --color-warning-500: var(--color-warning); --color-warning-600: var(--color-warning-dark); --color-warning-700: color-mix(in srgb, var(--color-warning-dark) 80%, black); --color-warning-800: color-mix(in srgb, var(--color-warning-dark) 65%, black); --color-warning-900: color-mix(in srgb, var(--color-warning-dark) 50%, black); --color-warning-950: color-mix(in srgb, var(--color-warning-dark) 30%, black); /* Purple */ --color-purple-25: color-mix(in srgb, var(--color-purple) 2%, white); --color-purple-50: color-mix(in srgb, var(--color-purple) 8%, white); --color-purple-100: color-mix(in srgb, var(--color-purple) 15%, white); --color-purple-200: color-mix(in srgb, var(--color-purple) 25%, white); --color-purple-300: color-mix(in srgb, var(--color-purple) 40%, white); --color-purple-400: color-mix(in srgb, var(--color-purple) 60%, white); --color-purple-500: var(--color-purple); --color-purple-600: var(--color-purple-dark); --color-purple-700: color-mix(in srgb, var(--color-purple-dark) 85%, black); --color-purple-800: color-mix(in srgb, var(--color-purple-dark) 70%, black); --color-purple-900: color-mix(in srgb, var(--color-purple-dark) 55%, black); --color-purple-950: color-mix(in srgb, var(--color-purple-dark) 35%, black); /* Shadows */ --shadow-theme-xs: 0px 1px 2px 0px rgba(16, 24, 40, 0.05); --shadow-theme-sm: 0px 1px 3px 0px rgba(16, 24, 40, 0.1), 0px 1px 2px 0px rgba(16, 24, 40, 0.06); --shadow-theme-md: 0px 4px 8px -2px rgba(16, 24, 40, 0.1), 0px 2px 4px -2px rgba(16, 24, 40, 0.06); --shadow-theme-lg: 0px 12px 16px -4px rgba(16, 24, 40, 0.08), 0px 4px 6px -2px rgba(16, 24, 40, 0.03); --shadow-theme-xl: 0px 20px 24px -4px rgba(16, 24, 40, 0.08), 0px 8px 8px -4px rgba(16, 24, 40, 0.03); --drop-shadow-4xl: 0 35px 35px rgba(0, 0, 0, 0.25), 0 45px 65px rgba(0, 0, 0, 0.15); /* Z-Index */ --z-index-1: 1; --z-index-9: 9; --z-index-99: 99; --z-index-999: 999; --z-index-9999: 9999; --z-index-99999: 99999; --z-index-999999: 999999; } @layer base { *,::after,::before,::backdrop,::file-selector-button { border-color: var(--color-gray-200, currentColor); } button:not(:disabled),[role="button"]:not(:disabled) { cursor: pointer; } body { @apply relative font-normal font-outfit z-1 bg-gray-50; } } @utility menu-item { @apply relative flex items-center w-full gap-3.5 px-4 py-3 font-medium rounded-lg text-theme-sm; } @utility menu-item-active { @apply bg-brand-50 text-brand-500 dark:bg-brand-500/[0.12] dark:text-brand-400; } @utility menu-item-inactive { @apply text-gray-700 hover:bg-gray-100 group-hover:text-gray-700 dark:text-gray-300 dark:hover:bg-white/5 dark:hover:text-gray-300; } /* Menu icon sizing - consistent across sidebar */ @utility menu-item-icon-size { @apply w-6 h-6 flex-shrink-0; /* Force SVG icons to inherit parent size */ & svg { width: 100%; height: 100%; } } @utility menu-item-icon-active { @apply text-brand-500; } @utility menu-item-icon-inactive { @apply text-gray-500 group-hover:text-gray-700; } /* Dropdown menu items - increased spacing */ @utility menu-dropdown-item { @apply block px-3.5 py-2.5 text-theme-sm font-medium rounded-md transition-colors; } @utility menu-dropdown-item-active { @apply text-brand-600 bg-brand-50; } @utility menu-dropdown-item-inactive { @apply text-gray-600 hover:text-gray-900 hover:bg-gray-50; } @utility menu-dropdown-badge { @apply px-1.5 py-0.5 text-xs font-medium rounded; } @utility menu-dropdown-badge-active { @apply bg-brand-100 text-brand-700; } @utility menu-dropdown-badge-inactive { @apply bg-gray-100 text-gray-600; } @layer utilities { input[type="date"]::-webkit-inner-spin-button, input[type="time"]::-webkit-inner-spin-button, input[type="date"]::-webkit-calendar-picker-indicator, input[type="time"]::-webkit-calendar-picker-indicator { display: none; -webkit-appearance: none; } } .tableCheckbox:checked ~ span span { @apply opacity-100; } .tableCheckbox:checked ~ span { @apply border-brand-500 bg-brand-500; } .apexcharts-legend-text { @apply !text-gray-700 dark:!text-gray-400; } .apexcharts-text { @apply !fill-gray-700 dark:!fill-gray-400; } .apexcharts-tooltip.apexcharts-theme-light { @apply gap-1 !rounded-lg !border-gray-200 p-3 !shadow-theme-sm dark:!border-gray-800 dark:!bg-gray-900; } .apexcharts-tooltip-marker { margin-right: 6px; height: 6px; width: 6px; } .apexcharts-legend-text { @apply !pl-5 !text-gray-700 dark:!text-gray-400; } .apexcharts-tooltip-series-group { @apply !p-0; } .apexcharts-tooltip-y-group { @apply !p-0; } .apexcharts-tooltip-title { @apply !mb-0 !border-b-0 !bg-transparent !p-0 !text-[10px] !leading-4 !text-gray-800 dark:!text-white/90; } .apexcharts-tooltip-text { @apply !text-theme-xs !text-gray-700 dark:!text-white/90; } .apexcharts-tooltip-text-y-value { @apply !font-medium; } .apexcharts-gridline { @apply !stroke-gray-100 dark:!stroke-gray-800; } #chartTwo .apexcharts-datalabels-group { @apply !-translate-y-24; } #chartTwo .apexcharts-datalabels-group .apexcharts-text { @apply !fill-gray-800 !font-semibold dark:!fill-white/90; } #chartDarkStyle .apexcharts-datalabels-group .apexcharts-text { @apply !fill-gray-800 !font-semibold dark:!fill-white/90; } #chartSixteen .apexcharts-legend { @apply !p-0 !pl-6; } .jvectormap-container { @apply !bg-gray-50 dark:!bg-gray-900; } .jvectormap-region.jvectormap-element { @apply !fill-gray-300 hover:!fill-brand-500 dark:!fill-gray-700 dark:hover:!fill-brand-500; } .jvectormap-marker.jvectormap-element { @apply !stroke-gray-200 dark:!stroke-gray-800; } .jvectormap-tip { @apply !bg-brand-500 !border-none !px-2 !py-1; } .jvectormap-zoomin,.jvectormap-zoomout { @apply !bg-brand-500; } .task-item + .task-item { @apply !border-t-gray-200 dark:!border-t-gray-700; } .custom-input-date input::-webkit-calendar-picker-indicator { background-position: center; background-repeat: no-repeat; background-size: 20px; cursor: pointer; } .no-scrollbar::-webkit-scrollbar { display: none; } .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } .chat-height { height: calc(100vh - 8.125rem); } .inbox-height { height: calc(100vh - 8.125rem); } /* =================================================================== IGNY8 ACTIVE UTILITY CLASSES Migrated from igny8-colors.css - these are actively used in components =================================================================== */ /* === Styled Dropdown/Select === */ .igny8-select-styled { background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L6 6L11 1' stroke='%23647085' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important; background-repeat: no-repeat !important; background-position: right 12px center !important; padding-right: 36px !important; } .dark .igny8-select-styled { background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L6 6L11 1' stroke='%2398A2B3' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important; } /* === Header Metrics Bar (compact, right-aligned) === */ .igny8-header-metrics { display: flex; align-items: center; gap: 6px; padding: 6px 12px; background: transparent; border-radius: 6px; box-shadow: 0 2px 6px 3px rgba(0, 0, 0, 0.08); } .dark .igny8-header-metrics { background: transparent; box-shadow: 0 2px 6px 3px rgba(0, 0, 0, 0.08); } .igny8-header-metric { display: flex; align-items: center; gap: 8px; } .igny8-header-metric-separator { width: 1px; height: 16px; background: rgb(203 213 225); opacity: 0.4; } .dark .igny8-header-metric-separator { background: rgb(148 163 184); opacity: 0.3; } .igny8-header-metric-label { font-size: 13px; font-weight: 500; text-transform: capitalize; letter-spacing: 0.3px; color: rgb(100 116 139); } .dark .igny8-header-metric-label { color: rgb(148 163 184); } .igny8-header-metric-value { font-size: 16px; font-weight: 700; color: rgb(30 41 59); margin-left: 4px; } .igny8-header-metric-value-credits { font-size: 13px; } .dark .igny8-header-metric-value { color: white; } .igny8-header-metric-accent { width: 4px; height: 20px; border-radius: 5px; } .igny8-header-metric-accent.blue { background: var(--color-primary); } .igny8-header-metric-accent.green { background: var(--color-success); } .igny8-header-metric-accent.amber { background: var(--color-warning); } .igny8-header-metric-accent.purple { background: var(--color-purple); } /* === Table Compact Styles === */ .igny8-table-compact th { padding: 12px 16px !important; font-size: 14px !important; font-weight: 600 !important; color: var(--color-gray-600) !important; text-align: left !important; background-color: var(--color-gray-50) !important; border-bottom: 2px solid var(--color-gray-200) !important; text-transform: capitalize; letter-spacing: 0.3px; } .dark .igny8-table-compact th { color: var(--color-gray-200) !important; background-color: rgba(15, 23, 42, 0.5) !important; border-bottom-color: rgba(255, 255, 255, 0.1) !important; } .igny8-table-compact td { padding: 8px 12px !important; font-size: 14px !important; border-bottom: 1px solid var(--color-gray-200) !important; } .dark .igny8-table-compact td { border-bottom-color: rgba(255, 255, 255, 0.05) !important; } .igny8-table-compact th.text-center { text-align: center !important; } .igny8-table-compact td.text-center { text-align: center !important; } /* === Smooth Table Height Transitions === */ .igny8-table-container { min-height: 500px; transition: min-height 0.8s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; will-change: min-height; } .igny8-table-container.loading { min-height: 500px; overflow: hidden !important; contain: layout style paint; } .igny8-table-container.loaded { min-height: auto; overflow: visible; transition: min-height 0.8s cubic-bezier(0.4, 0, 0.2, 1); animation: fadeInContainer 0.3s ease-out; } @keyframes fadeInContainer { from { opacity: 0.95; } to { opacity: 1; } } .igny8-table-wrapper { width: 100%; position: relative; overflow-x: hidden; overflow-y: hidden; scrollbar-width: thin; scrollbar-color: rgba(148, 163, 184, 0.3) transparent; transition: opacity 0.4s ease-in-out; contain: layout; } .igny8-table-container.loading .igny8-table-wrapper { overflow-x: hidden !important; overflow-y: hidden !important; scrollbar-width: none; -ms-overflow-style: none; } .igny8-table-container.loading .igny8-table-wrapper::-webkit-scrollbar { display: none !important; width: 0 !important; height: 0 !important; } .igny8-table-container.loaded .igny8-table-wrapper { overflow-x: auto; overflow-y: hidden; animation: showScrollbar 0.4s ease-out 0.3s both; } @keyframes showScrollbar { from { scrollbar-width: none; } to { scrollbar-width: thin; } } .igny8-table-smooth { width: 100%; table-layout: fixed; min-width: 100%; transition: opacity 0.5s ease-in-out; contain: layout; } .igny8-table-container.loading .igny8-table-smooth { opacity: 0.8; visibility: visible; } .igny8-table-container.loaded .igny8-table-smooth { opacity: 1; table-layout: auto; transition: opacity 0.5s ease-in-out, table-layout 0.1s ease-out; } .igny8-table-body { position: relative; min-height: 450px; transition: min-height 0.8s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.5s ease-in-out; contain: layout; } .igny8-table-container.loading .igny8-table-body { min-height: 450px; opacity: 1; height: auto; } .igny8-table-container.loaded .igny8-table-body { min-height: 0; opacity: 1; transition: min-height 0.8s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.5s ease-in-out; } .igny8-table-container.loading .igny8-table-body > tr:not(.igny8-skeleton-row) { display: none !important; visibility: hidden; } .igny8-table-container.loaded .igny8-table-body > tr.igny8-skeleton-row { display: none !important; visibility: hidden; opacity: 0; pointer-events: none; } .igny8-data-row { animation: fadeInRow 0.6s ease-out forwards; opacity: 0; transform: translateY(8px); } @keyframes fadeInRow { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } .igny8-skeleton-row { animation: none !important; opacity: 1 !important; transform: none !important; display: table-row !important; } .igny8-table-container.loading * { backface-visibility: hidden; perspective: 1000px; } /* === Filter Bar === */ .igny8-filter-bar { display: flex; align-items: center; gap: 8px; } /* === Difficulty Badge Special Styling === */ .difficulty-badge { border-radius: 3px !important; min-width: 28px !important; display: inline-flex !important; justify-content: center !important; align-items: center !important; } .difficulty-badge.difficulty-very-hard { background-color: var(--color-error-600) !important; color: white !important; } .dark .difficulty-badge.difficulty-very-hard { background-color: var(--color-error-600) !important; color: white !important; }