:root {
	/* ===== COLORS (Base) ===== */
	--color-primary: hsl(220, 80%, 50%);
	--color-error: hsl(0, 80%, 50%);
	--color-warning: hsl(45, 100%, 50%);
	--color-caution: hsl(30, 80%, 50%);
	--color-success: hsl(120, 80%, 50%);
	--color-accent: hsl(200, 80%, 50%);
	--color-muted: hsl(210, 10%, 50%);
	--color-highlighted: hsl(220, 80%, 70%);
	--color-text: hsl(0, 0%, 0%);
	--color-bg: hsl(0, 0%, 100%);
	--color-border: hsl(0, 0%, 90%);

	/* ===== LIGHT/DARK MODE ===== */
	--color-text-dark: hsl(0, 0%, 0%);
	--color-text-light: hsl(0, 0%, 100%);
	--color-bg-dark: hsl(0, 0%, 10%);
	--color-bg-light: hsl(0, 0%, 95%);
	--color-border-dark: hsl(0, 0%, 20%);
	--color-border-light: hsl(0, 0%, 90%);

	/* ===== SHADES (Lighten/Darken) ===== */
	--shade-50: oklch(from var(--color-primary) l c h / 0.05);
	--shade-100: oklch(from var(--color-primary) l c h / 0.1);
	--shade-200: oklch(from var(--color-primary) l c h / 0.2);
	--shade-300: oklch(from var(--color-primary) l c h / 0.3);
	--shade-400: oklch(from var(--color-primary) l c h / 0.4);
	--shade-500: oklch(from var(--color-primary) l c h / 0.5);
	--shade-600: oklch(from var(--color-primary) l c h / 0.6);
	--shade-700: oklch(from var(--color-primary) l c h / 0.7);
	--shade-800: oklch(from var(--color-primary) l c h / 0.8);
	--shade-900: oklch(from var(--color-primary) l c h / 0.9);

	/* ===== DARK MODE OVERRIDES ===== */
	--color-text: var(--color-text-light);
	--color-bg: var(--color-bg-dark);
	--color-border: var(--color-border-dark);
}

/* ===== DARK MODE TOGGLE (Optional) ===== */
@media (prefers-color-scheme: dark) {
	:root {
		--color-text: var(--color-text-dark);
		--color-bg: var(--color-bg-dark);
		--color-border: var(--color-border-dark);
	}
}

/* ===== UTILITY CLASSES ===== */

/* ===== SPACING ===== */
.margin-0 { margin: 0 !important; }
.margin-1 { margin: 0.25rem !important; }
.margin-2 { margin: 0.5rem !important; }
.margin-3 { margin: 0.75rem !important; }
.margin-4 { margin: 1rem !important; }
.margin-5 { margin: 1.5rem !important; }
.margin-6 { margin: 2rem !important; }
.margin-7 { margin: 3rem !important; }
.margin-8 { margin: 4rem !important; }
.margin-0 { margin: 0 !important; }
.margin-top-1 { margin-top: 0.25rem !important; }
.margin-top-2 { margin-top: 0.5rem !important; }
.margin-top-3 { margin-top: 0.75rem !important; }
.margin-top-4 { margin-top: 1rem !important; }
.margin-top-5 { margin-top: 1.5rem !important; }
.margin-top-6 { margin-top: 2rem !important; }
.margin-top-7 { margin-top: 3rem !important; }
.margin-top-8 { margin-top: 4rem !important; }
.margin-bottom-1 { margin-bottom: 0.25rem !important; }
.margin-bottom-2 { margin-bottom: 0.5rem !important; }
.margin-bottom-3 { margin-bottom: 0.75rem !important; }
.margin-bottom-4 { margin-bottom: 1rem !important; }
.margin-bottom-5 { margin-bottom: 1.5rem !important; }
.margin-bottom-6 { margin-bottom: 2rem !important; }
.margin-bottom-7 { margin-bottom: 3rem !important; }
.margin-bottom-8 { margin-bottom: 4rem !important; }
.margin-left-1 { margin-left: 0.25rem !important; }
.margin-left-2 { margin-left: 0.5rem !important; }
.margin-left-3 { margin-left: 0.75rem !important; }
.margin-left-4 { margin-left: 1rem !important; }
.margin-left-5 { margin-left: 1.5rem !important; }
.margin-left-6 { margin-left: 2rem !important; }
.margin-left-7 { margin-left: 3rem !important; }
.margin-left-8 { margin-left: 4rem !important; }
.margin-right-1 { margin-right: 0.25rem !important; }
.margin-right-2 { margin-right: 0.5rem !important; }
.margin-right-3 { margin-right: 0.75rem !important; }
.margin-right-4 { margin-right: 1rem !important; }
.margin-right-5 { margin-right: 1.5rem !important; }
.margin-right-6 { margin-right: 2rem !important; }
.margin-right-7 { margin-right: 3rem !important; }
.margin-right-8 { margin-right: 4rem !important; }
.margin-x-auto { margin-left: auto !important; margin-right: auto !important; }
.margin-x-0 { margin-left: 0 !important; margin-right: 0 !important; }
.margin-x-1 { margin-left: 0.25rem !important; margin-right: 0.25rem !important; }
.margin-x-2 { margin-left: 0.5rem !important; margin-right: 0.5rem !important; }
.margin-x-3 { margin-left: 0.75rem !important; margin-right: 0.75rem !important; }
.margin-x-4 { margin-left: 1rem !important; margin-right: 1rem !important; }
.margin-x-5 { margin-left: 1.5rem !important; margin-right: 1.5rem !important; }
.margin-x-6 { margin-left: 2rem !important; margin-right: 2rem !important; }
.margin-x-7 { margin-left: 3rem !important; margin-right: 3rem !important; }
.margin-x-8 { margin-left: 4rem !important; margin-right: 4rem !important; }
.margin-y-0 { margin-top: 0 !important; margin-bottom: 0 !important; }
.margin-y-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; }
.margin-y-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; }
.margin-y-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; }
.margin-y-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; }
.margin-y-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; }
.margin-y-6 { margin-top: 2rem !important; margin-bottom: 2rem !important; }
.margin-y-7 { margin-top: 3rem !important; margin-bottom: 3rem !important; }
.margin-y-8 { margin-top: 4rem !important; margin-bottom: 4rem !important; }


.pad-0 { padding: 0 !important; }
.pad-1 { padding: 0.25rem !important; }
.pad-2 { padding: 0.5rem !important; }
.pad-3 { padding: 0.75rem !important; }
.pad-4 { padding: 1rem !important; }
.pad-5 { padding: 1.5rem !important; }
.pad-6 { padding: 2rem !important; }
.pad-7 { padding: 3rem !important; }
.pad-8 { padding: 4rem !important; }
.pad-0 { padding: 0 !important; }
.pad-top-1 { padding-top: 0.25rem !important; }
.pad-top-2 { padding-top: 0.5rem !important; }
.pad-top-3 { padding-top: 0.75rem !important; }
.pad-top-4 { padding-top: 1rem !important; }
.pad-top-5 { padding-top: 1.5rem !important; }
.pad-top-6 { padding-top: 2rem !important; }
.pad-top-7 { padding-top: 3rem !important; }
.pad-top-8 { padding-top: 4rem !important; }
.pad-bottom-1 { padding-bottom: 0.25rem !important; }
.pad-bottom-2 { padding-bottom: 0.5rem !important; }
.pad-bottom-3 { padding-bottom: 0.75rem !important; }
.pad-bottom-4 { padding-bottom: 1rem !important; }
.pad-bottom-5 { padding-bottom: 1.5rem !important; }
.pad-bottom-6 { padding-bottom: 2rem !important; }
.pad-bottom-7 { padding-bottom: 3rem !important; }
.pad-bottom-8 { padding-bottom: 4rem !important; }
.pad-left-1 { padding-left: 0.25rem !important; }
.pad-left-2 { padding-left: 0.5rem !important; }
.pad-left-3 { padding-left: 0.75rem !important; }
.pad-left-4 { padding-left: 1rem !important; }
.pad-left-5 { padding-left: 1.5rem !important; }
.pad-left-6 { padding-left: 2rem !important; }
.pad-left-7 { padding-left: 3rem !important; }
.pad-left-8 { padding-left: 4rem !important; }
.pad-right-1 { padding-right: 0.25rem !important; }
.pad-right-2 { padding-right: 0.5rem !important; }
.pad-right-3 { padding-right: 0.75rem !important; }
.pad-right-4 { padding-right: 1rem !important; }
.pad-right-5 { padding-right: 1.5rem !important; }
.pad-right-6 { padding-right: 2rem !important; }
.pad-right-7 { padding-right: 3rem !important; }
.pad-right-8 { padding-right: 4rem !important; }
.pad-x-0 { padding-left: 0 !important; padding-right: 0 !important; }
.pad-x-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
.pad-x-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
.pad-x-3 { padding-left: 0.75rem !important; padding-right: 0.75rem !important; }
.pad-x-4 { padding-left: 1rem !important; padding-right: 1rem !important; }
.pad-x-5 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
.pad-x-6 { padding-left: 2rem !important; padding-right: 2rem !important; }
.pad-x-7 { padding-left: 3rem !important; padding-right: 3rem !important; }
.pad-x-8 { padding-left: 4rem !important; padding-right: 4rem !important; }
.pad-y-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
.pad-y-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
.pad-y-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
.pad-y-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; }
.pad-y-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
.pad-y-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
.pad-y-6 { padding-top: 2rem !important; padding-bottom: 2rem !important; }
.pad-y-7 { padding-top: 3rem !important; padding-bottom: 3rem !important; }
.pad-y-8 { padding-top: 4rem !important; padding-bottom: 4rem !important; }

/* ===== BORDERS ===== */
.border { border: 1px solid var(--color-border) !important; }
.border-right { border-right: 1px solid var(--color-border) !important; }
.border-left { border-left: 1px solid var(--color-border) !important; }
.border-top { border-top: 1px solid var(--color-border) !important; }
.border-bottom { border-bottom: 1px solid var(--color-border) !important; }

.border-0 { border: none !important; }

.border-color-primary { border-color: var(--color-primary) !important; }
.border-color-error { border-color: var(--color-error) !important; }
.border-color-warning { border-color: var(--color-warning) !important; }
.border-color-success { border-color: var(--color-success) !important; }
.border-color-accent { border-color: var(--color-accent) !important; }

.border-rounded { border-radius: 0.25rem !important; }
.border-rounded-lg { border-radius: 0.5rem !important; }
.border-rounded-full { border-radius: 9999px !important; }

/* ===== FLEX & GRID ===== */
.align-center { align-content: center !important; }
.flex { display: flex !important; }
.flex-col { flex-direction: column !important; }
.flex-row { flex-direction: row !important; }
.flex-wrap { flex-wrap: wrap !important; }
.flex-center { justify-content: center !important; align-items: center !important; }
.flex-start { justify-content: flex-start !important; align-items: flex-start !important; }
.flex-end { justify-content: flex-end !important; align-items: flex-end !important; }
.grid { display: grid !important; }
.grid-cols-1 { grid-template-columns: repeat(1, 1fr) !important; }
.grid-cols-2 { grid-template-columns: repeat(2, 1fr) !important; }
.grid-cols-3 { grid-template-columns: repeat(3, 1fr) !important; }
.grid-cols-4 { grid-template-columns: repeat(4, 1fr) !important; }

/* ===== TYPOGRAPHY ===== */
.text-sm { font-size: 0.875rem !important; }
.text-md { font-size: 1rem !important; }
.text-lg { font-size: 1.125rem !important; }
.text-xl { font-size: 1.25rem !important; }
.text-bold { font-weight: bold !important; }
.text-italic { font-style: italic !important; }
.text-center { text-align: center !important; }
.text-left { text-align: left !important; }
.text-right { text-align: right !important; }
.undecorated { text-decoration: none !important; }

/* ===== COLORS (Background, Text, etc.) ===== */
.bg-primary { background-color: var(--color-primary) !important; }
.bg-primary-50 { background-color: var(--shade-50) !important; }
.bg-primary-100 { background-color: var(--shade-100) !important; }
.bg-error { background-color: var(--color-error) !important; }
.bg-warning { background-color: var(--color-warning) !important; }
.bg-success { background-color: var(--color-success) !important; }
.bg-accent { background-color: var(--color-accent) !important; }
.bg-muted { background-color: var(--color-muted) !important; }
.bg-highlighted { background-color: var(--color-highlighted) !important; }
.bg-transparent { background-color: transparent !important; }

.text-primary { color: var(--color-primary) !important; }
.text-error { color: var(--color-error) !important; }
.text-warning { color: var(--color-warning) !important; }
.text-success { color: var(--color-success) !important; }
.text-accent { color: var(--color-accent) !important; }
.text-muted { color: var(--color-muted) !important; }
.text-highlighted { color: var(--color-highlighted) !important; }

/* ===== EFFECTS ===== */
.shadow { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important; }
.shadow-sm { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05) !important; }
.shadow-md { box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1) !important; }
.shadow-lg { box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1) !important; }
.opacity-0 { opacity: 0 !important; }
.opacity-25 { opacity: 0.25 !important; }
.opacity-50 { opacity: 0.5 !important; }
.opacity-75 { opacity: 0.75 !important; }
.opacity-100 { opacity: 1 !important; }
.transition { transition: all 0.2s ease-in-out !important; }
.transition-fast { transition: all 0.1s ease-in-out !important; }
.transition-slow { transition: all 0.5s ease-in-out !important; }

/* ===== POSITIONING ===== */
.abs { position: absolute !important; }
.rel { position: relative !important; }
.sticky { position: sticky !important; }
.top-0 { top: 0 !important; }
.bottom-0 { bottom: 0 !important; }
.left-0 { left: 0 !important; }
.right-0 { right: 0 !important; }
.z-0 { z-index: 0 !important; }
.z-10 { z-index: 10 !important; }
.z-20 { z-index: 20 !important; }
.z-30 { z-index: 30 !important; }
.z-40 { z-index: 40 !important; }
.z-50 { z-index: 50 !important; }

/* === GENERICS === */
.transparent { opacity: 0 !important; }
.pointer { cursor: pointer !important; }
.hideoverflow { overflow: hidden !important; }

.scroll-x { overflow-x: scroll !important; }
.scroll-y { overflow-y: scroll !important; }

.box-xxs { width: 1rem; height: 1rem; }
.box-xs { width: 2rem; height: 2rem; }
.box-sm { width: 3rem; height: 3rem; }
.box-md { width: 4.5rem; height: 4.5rem; }
.box-lg { width: 6rem; height: 6rem; }
.box-xl { width: 9rem; height: 9rem; }
.box-xxl { width: 12rem; height: 12rem; }

/* === REM WIDTHS === */
.width-0 { width: 0 !important; }
.width-1 { width: 1rem !important; }
.width-2 { width: 2rem !important; }
.width-3 { width: 3rem !important; }
.width-4 { width: 4rem !important; }
.width-5 { width: 5rem !important; }
.width-6 { width: 6rem !important; }
.width-7 { width: 7rem !important; }
.width-8 { width: 8rem !important; }
.width-9 { width: 9rem !important; }
.width-10 { width: 10rem !important; }
.width-11 { width: 11rem !important; }
.width-12 { width: 12rem !important; }
.width-13 { width: 13rem !important; }
.width-14 { width: 14rem !important; }
.width-15 { width: 15rem !important; }
.width-16 { width: 16rem !important; }
.width-20 { width: 20rem !important; }
.width-24 { width: 24rem !important; }
.width-28 { width: 28rem !important; }
.width-32 { width: 32rem !important; }

.width-100 { width: 100% !important; }
.height-100 { height: 100% !important; }
