:root {
    --primary: #3b82f6;
    --primary-hover: #2563eb;
    --primary-light: #eff6ff;
    --secondary: #8b5cf6;
    --secondary-hover: #7c3aed;
    --secondary-light: #f5f3ff;
    --success: #10b981;
    --danger: #ef4444;
    --warning: #f59e0b;
    --info: #06b6d4;
    --font-family-base: Inter, sans-serif;
    --font-size-base: 1rem;
    --line-height-base: 1.5;
    --bg-body: #f5f8fa;
    --container-max-width: 1400px;
    --grid-gutter: 1.5rem;
    --cursor-type: default;
    --button-radius: 0.5rem;
    --input-padding-y: 0.5rem;
    --slider-color: #3b82f6;
    --switch-bg-on: #3b82f6;
    --input-radius: 0.5rem;
    --button-size-sm: 0.375rem 0.75rem;
    --button-size-md: 0.625rem 1rem;
    --button-size-lg: 0.75rem 1.5rem;
    --navbar-bg: #ffffff;
    --bg-sidebar: #111827;
    --bg-header: #ffffff;
    --sidebar-width: 280px;
    --spacing-sidebar-width: 280px;
    --spacing-header-height: 70px;
    --tab-active-color: var(--primary);
    --card-bg: #ffffff;
    --card-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
    --table-header-bg: #f8fafc;
    --avatar-size: 40px;
    --card-radius: 0.75rem;
    --alert-radius: 0.5rem;
    --modal-backdrop-blur: 4px;
    --progress-height: 8px;
    --ai-chat-bubble-bg: #eff6ff;
    --ai-code-theme: monokai;
    --ai-generator-primary: #8b5cf6;
    --chart-primary-color: #3b82f6;
    --easing-base: cubic-bezier(0.4, 0, 0.2, 1);
}

[data-bs-theme="dark"] {
    --bg-body: #020617;
    --bg-sidebar: #020617;
    --bg-header: #020617;
}

/* --- FOUNDATIONS & UTILITIES --- */

.text-primary { color: var(--primary) !important; }
.bg-primary { background-color: var(--primary) !important; }
.bg-primary-light { background-color: var(--primary-light) !important; color: var(--primary) !important; }
.text-secondary { color: var(--secondary) !important; }
.bg-secondary { background-color: var(--secondary) !important; }
.bg-secondary-light { background-color: var(--secondary-light) !important; color: var(--secondary) !important; }
.text-success { color: var(--success) !important; }
.bg-success { background-color: var(--success) !important; }
.bg-success-light { background-color: var(--success-light) !important; color: var(--success) !important; }
.text-danger { color: var(--danger) !important; }
.bg-danger { background-color: var(--danger) !important; }
.bg-danger-light { background-color: var(--danger-light) !important; color: var(--danger) !important; }
.text-warning { color: var(--warning) !important; }
.bg-warning { background-color: var(--warning) !important; }
.bg-warning-light { background-color: var(--warning-light) !important; color: var(--warning) !important; }
.text-info { color: var(--info) !important; }
.bg-info { background-color: var(--info) !important; }
.bg-info-light { background-color: var(--info-light) !important; color: var(--info) !important; }
.container-custom { max-width: var(--container-max-width); margin: 0 auto; width: 100%; }
.gutter-custom { gap: var(--grid-gutter); }
body { font-family: var(--font-family-base); font-size: var(--font-size-base); line-height: var(--line-height-base); }
/* --- COMPONENT STYLES --- */

.btn-custom {
    border-radius: var(--button-radius);
    transition: all 0.2s ease;
    display: inline-flex; align-items: center; justify-content: center;
}

.card-custom {
    background-color: var(--card-bg);
    box-shadow: var(--card-shadow);
    border-radius: var(--card-radius, 0.75rem);
    overflow: hidden;
}

.input-custom {
    padding: var(--input-padding-y) 1rem;
    border: 1px solid var(--gray-200);
    border-radius: var(--input-radius, 0.5rem);
    width: 100%;
}

.ai-chat-bubble {
    background-color: var(--ai-chat-bubble-bg);
    padding: 1rem; border-radius: 1rem;
}

