/**
 * Effects Utility Classes
 * Shadow, border, and visual effect utilities
 */

/* Box Shadow */
.shadow-none { box-shadow: none; }
.shadow-sm { box-shadow: var(--shadow-sm); }
.shadow { box-shadow: var(--shadow-base); }
.shadow-md { box-shadow: var(--shadow-md); }
.shadow-lg { box-shadow: var(--shadow-lg); }
.shadow-xl { box-shadow: var(--shadow-xl); }
.shadow-2xl { box-shadow: var(--shadow-2xl); }

/* Drop Shadow */
.drop-shadow-sm { filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.05)); }
.drop-shadow { filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1)) drop-shadow(0 1px 1px rgba(0, 0, 0, 0.06)); }
.drop-shadow-md { filter: drop-shadow(0 4px 3px rgba(0, 0, 0, 0.07)) drop-shadow(0 2px 2px rgba(0, 0, 0, 0.06)); }
.drop-shadow-lg { filter: drop-shadow(0 10px 8px rgba(0, 0, 0, 0.04)) drop-shadow(0 4px 3px rgba(0, 0, 0, 0.1)); }
.drop-shadow-xl { filter: drop-shadow(0 20px 13px rgba(0, 0, 0, 0.03)) drop-shadow(0 8px 5px rgba(0, 0, 0, 0.08)); }
.drop-shadow-2xl { filter: drop-shadow(0 25px 25px rgba(0, 0, 0, 0.15)); }
.drop-shadow-none { filter: drop-shadow(0 0 #0000); }

/* Border Radius */
.rounded-none { border-radius: var(--radius-none); }
.rounded-sm { border-radius: var(--radius-sm); }
.rounded { border-radius: var(--radius-base); }
.rounded-md { border-radius: var(--radius-md); }
.rounded-lg { border-radius: var(--radius-lg); }
.rounded-xl { border-radius: var(--radius-xl); }
.rounded-2xl { border-radius: var(--radius-2xl); }
.rounded-full { border-radius: var(--radius-full); }

/* Border Radius - Individual Corners */
.rounded-t-none { border-top-left-radius: var(--radius-none); border-top-right-radius: var(--radius-none); }
.rounded-t-sm { border-top-left-radius: var(--radius-sm); border-top-right-radius: var(--radius-sm); }
.rounded-t { border-top-left-radius: var(--radius-base); border-top-right-radius: var(--radius-base); }
.rounded-t-md { border-top-left-radius: var(--radius-md); border-top-right-radius: var(--radius-md); }
.rounded-t-lg { border-top-left-radius: var(--radius-lg); border-top-right-radius: var(--radius-lg); }
.rounded-t-xl { border-top-left-radius: var(--radius-xl); border-top-right-radius: var(--radius-xl); }
.rounded-t-2xl { border-top-left-radius: var(--radius-2xl); border-top-right-radius: var(--radius-2xl); }
.rounded-t-full { border-top-left-radius: var(--radius-full); border-top-right-radius: var(--radius-full); }

.rounded-r-none { border-top-right-radius: var(--radius-none); border-bottom-right-radius: var(--radius-none); }
.rounded-r-sm { border-top-right-radius: var(--radius-sm); border-bottom-right-radius: var(--radius-sm); }
.rounded-r { border-top-right-radius: var(--radius-base); border-bottom-right-radius: var(--radius-base); }
.rounded-r-md { border-top-right-radius: var(--radius-md); border-bottom-right-radius: var(--radius-md); }
.rounded-r-lg { border-top-right-radius: var(--radius-lg); border-bottom-right-radius: var(--radius-lg); }
.rounded-r-xl { border-top-right-radius: var(--radius-xl); border-bottom-right-radius: var(--radius-xl); }
.rounded-r-2xl { border-top-right-radius: var(--radius-2xl); border-bottom-right-radius: var(--radius-2xl); }
.rounded-r-full { border-top-right-radius: var(--radius-full); border-bottom-right-radius: var(--radius-full); }

.rounded-b-none { border-bottom-right-radius: var(--radius-none); border-bottom-left-radius: var(--radius-none); }
.rounded-b-sm { border-bottom-right-radius: var(--radius-sm); border-bottom-left-radius: var(--radius-sm); }
.rounded-b { border-bottom-right-radius: var(--radius-base); border-bottom-left-radius: var(--radius-base); }
.rounded-b-md { border-bottom-right-radius: var(--radius-md); border-bottom-left-radius: var(--radius-md); }
.rounded-b-lg { border-bottom-right-radius: var(--radius-lg); border-bottom-left-radius: var(--radius-lg); }
.rounded-b-xl { border-bottom-right-radius: var(--radius-xl); border-bottom-left-radius: var(--radius-xl); }
.rounded-b-2xl { border-bottom-right-radius: var(--radius-2xl); border-bottom-left-radius: var(--radius-2xl); }
.rounded-b-full { border-bottom-right-radius: var(--radius-full); border-bottom-left-radius: var(--radius-full); }

.rounded-l-none { border-top-left-radius: var(--radius-none); border-bottom-left-radius: var(--radius-none); }
.rounded-l-sm { border-top-left-radius: var(--radius-sm); border-bottom-left-radius: var(--radius-sm); }
.rounded-l { border-top-left-radius: var(--radius-base); border-bottom-left-radius: var(--radius-base); }
.rounded-l-md { border-top-left-radius: var(--radius-md); border-bottom-left-radius: var(--radius-md); }
.rounded-l-lg { border-top-left-radius: var(--radius-lg); border-bottom-left-radius: var(--radius-lg); }
.rounded-l-xl { border-top-left-radius: var(--radius-xl); border-bottom-left-radius: var(--radius-xl); }
.rounded-l-2xl { border-top-left-radius: var(--radius-2xl); border-bottom-left-radius: var(--radius-2xl); }
.rounded-l-full { border-top-left-radius: var(--radius-full); border-bottom-left-radius: var(--radius-full); }

/* Border Width */
.border-0 { border-width: 0px; }
.border { border-width: 1px; }
.border-2 { border-width: 2px; }
.border-4 { border-width: 4px; }
.border-8 { border-width: 8px; }

.border-t-0 { border-top-width: 0px; }
.border-t { border-top-width: 1px; }
.border-t-2 { border-top-width: 2px; }
.border-t-4 { border-top-width: 4px; }
.border-t-8 { border-top-width: 8px; }

.border-r-0 { border-right-width: 0px; }
.border-r { border-right-width: 1px; }
.border-r-2 { border-right-width: 2px; }
.border-r-4 { border-right-width: 4px; }
.border-r-8 { border-right-width: 8px; }

.border-b-0 { border-bottom-width: 0px; }
.border-b { border-bottom-width: 1px; }
.border-b-2 { border-bottom-width: 2px; }
.border-b-4 { border-bottom-width: 4px; }
.border-b-8 { border-bottom-width: 8px; }

.border-l-0 { border-left-width: 0px; }
.border-l { border-left-width: 1px; }
.border-l-2 { border-left-width: 2px; }
.border-l-4 { border-left-width: 4px; }
.border-l-8 { border-left-width: 8px; }

/* Border Style */
.border-solid { border-style: solid; }
.border-dashed { border-style: dashed; }
.border-dotted { border-style: dotted; }
.border-double { border-style: double; }
.border-hidden { border-style: hidden; }
.border-none { border-style: none; }

/* Opacity */
.opacity-0 { opacity: 0; }
.opacity-5 { opacity: 0.05; }
.opacity-10 { opacity: 0.1; }
.opacity-20 { opacity: 0.2; }
.opacity-25 { opacity: 0.25; }
.opacity-30 { opacity: 0.3; }
.opacity-40 { opacity: 0.4; }
.opacity-50 { opacity: 0.5; }
.opacity-60 { opacity: 0.6; }
.opacity-70 { opacity: 0.7; }
.opacity-75 { opacity: 0.75; }
.opacity-80 { opacity: 0.8; }
.opacity-90 { opacity: 0.9; }
.opacity-95 { opacity: 0.95; }
.opacity-100 { opacity: 1; }

/* Backdrop Blur */
.backdrop-blur-none { backdrop-filter: blur(0); }
.backdrop-blur-sm { backdrop-filter: blur(4px); }
.backdrop-blur { backdrop-filter: blur(8px); }
.backdrop-blur-md { backdrop-filter: blur(12px); }
.backdrop-blur-lg { backdrop-filter: blur(16px); }
.backdrop-blur-xl { backdrop-filter: blur(24px); }
.backdrop-blur-2xl { backdrop-filter: blur(40px); }
.backdrop-blur-3xl { backdrop-filter: blur(64px); }

/* Backdrop Brightness */
.backdrop-brightness-0 { backdrop-filter: brightness(0); }
.backdrop-brightness-50 { backdrop-filter: brightness(.5); }
.backdrop-brightness-75 { backdrop-filter: brightness(.75); }
.backdrop-brightness-90 { backdrop-filter: brightness(.9); }
.backdrop-brightness-95 { backdrop-filter: brightness(.95); }
.backdrop-brightness-100 { backdrop-filter: brightness(1); }
.backdrop-brightness-105 { backdrop-filter: brightness(1.05); }
.backdrop-brightness-110 { backdrop-filter: brightness(1.1); }
.backdrop-brightness-125 { backdrop-filter: brightness(1.25); }
.backdrop-brightness-150 { backdrop-filter: brightness(1.5); }
.backdrop-brightness-200 { backdrop-filter: brightness(2); }

/* Backdrop Contrast */
.backdrop-contrast-0 { backdrop-filter: contrast(0); }
.backdrop-contrast-50 { backdrop-filter: contrast(.5); }
.backdrop-contrast-75 { backdrop-filter: contrast(.75); }
.backdrop-contrast-100 { backdrop-filter: contrast(1); }
.backdrop-contrast-125 { backdrop-filter: contrast(1.25); }
.backdrop-contrast-150 { backdrop-filter: contrast(1.5); }
.backdrop-contrast-200 { backdrop-filter: contrast(2); }

/* Backdrop Grayscale */
.backdrop-grayscale-0 { backdrop-filter: grayscale(0); }
.backdrop-grayscale { backdrop-filter: grayscale(100%); }

/* Backdrop Hue Rotate */
.backdrop-hue-rotate-0 { backdrop-filter: hue-rotate(0deg); }
.backdrop-hue-rotate-15 { backdrop-filter: hue-rotate(15deg); }
.backdrop-hue-rotate-30 { backdrop-filter: hue-rotate(30deg); }
.backdrop-hue-rotate-60 { backdrop-filter: hue-rotate(60deg); }
.backdrop-hue-rotate-90 { backdrop-filter: hue-rotate(90deg); }
.backdrop-hue-rotate-180 { backdrop-filter: hue-rotate(180deg); }

/* Backdrop Invert */
.backdrop-invert-0 { backdrop-filter: invert(0); }
.backdrop-invert { backdrop-filter: invert(100%); }

/* Backdrop Opacity */
.backdrop-opacity-0 { backdrop-filter: opacity(0); }
.backdrop-opacity-5 { backdrop-filter: opacity(0.05); }
.backdrop-opacity-10 { backdrop-filter: opacity(0.1); }
.backdrop-opacity-20 { backdrop-filter: opacity(0.2); }
.backdrop-opacity-25 { backdrop-filter: opacity(0.25); }
.backdrop-opacity-30 { backdrop-filter: opacity(0.3); }
.backdrop-opacity-40 { backdrop-filter: opacity(0.4); }
.backdrop-opacity-50 { backdrop-filter: opacity(0.5); }
.backdrop-opacity-60 { backdrop-filter: opacity(0.6); }
.backdrop-opacity-70 { backdrop-filter: opacity(0.7); }
.backdrop-opacity-75 { backdrop-filter: opacity(0.75); }
.backdrop-opacity-80 { backdrop-filter: opacity(0.8); }
.backdrop-opacity-90 { backdrop-filter: opacity(0.9); }
.backdrop-opacity-95 { backdrop-filter: opacity(0.95); }
.backdrop-opacity-100 { backdrop-filter: opacity(1); }

/* Backdrop Saturate */
.backdrop-saturate-0 { backdrop-filter: saturate(0); }
.backdrop-saturate-50 { backdrop-filter: saturate(.5); }
.backdrop-saturate-100 { backdrop-filter: saturate(1); }
.backdrop-saturate-150 { backdrop-filter: saturate(1.5); }
.backdrop-saturate-200 { backdrop-filter: saturate(2); }

/* Backdrop Sepia */
.backdrop-sepia-0 { backdrop-filter: sepia(0); }
.backdrop-sepia { backdrop-filter: sepia(100%); }

/* Transitions */
.transition-none { transition-property: none; }
.transition-all { 
  transition-property: all; 
  transition-timing-function: var(--ease-out); 
  transition-duration: var(--duration-fast); 
}
.transition { 
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; 
  transition-timing-function: var(--ease-out); 
  transition-duration: var(--duration-fast); 
}
.transition-colors { 
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; 
  transition-timing-function: var(--ease-out); 
  transition-duration: var(--duration-fast); 
}
.transition-opacity { 
  transition-property: opacity; 
  transition-timing-function: var(--ease-out); 
  transition-duration: var(--duration-fast); 
}
.transition-shadow { 
  transition-property: box-shadow; 
  transition-timing-function: var(--ease-out); 
  transition-duration: var(--duration-fast); 
}
.transition-transform { 
  transition-property: transform; 
  transition-timing-function: var(--ease-out); 
  transition-duration: var(--duration-fast); 
}

/* Transition Duration */
.duration-75 { transition-duration: 75ms; }
.duration-100 { transition-duration: 100ms; }
.duration-150 { transition-duration: var(--duration-fast); }
.duration-200 { transition-duration: 200ms; }
.duration-300 { transition-duration: var(--duration-normal); }
.duration-500 { transition-duration: var(--duration-slow); }
.duration-700 { transition-duration: 700ms; }
.duration-1000 { transition-duration: 1000ms; }

/* Transition Timing Function */
.ease-linear { transition-timing-function: var(--ease-linear); }
.ease-in { transition-timing-function: var(--ease-in); }
.ease-out { transition-timing-function: var(--ease-out); }
.ease-in-out { transition-timing-function: var(--ease-in-out); }

/* Transform */
.transform { transform: var(--transform); }
.transform-none { transform: none; }
.transform-gpu { transform: translate3d(0, 0, 0); }

/* Scale */
.scale-0 { transform: scale(0); }
.scale-50 { transform: scale(.5); }
.scale-75 { transform: scale(.75); }
.scale-90 { transform: scale(.9); }
.scale-95 { transform: scale(.95); }
.scale-100 { transform: scale(1); }
.scale-105 { transform: scale(1.05); }
.scale-110 { transform: scale(1.1); }
.scale-125 { transform: scale(1.25); }
.scale-150 { transform: scale(1.5); }

/* Rotate */
.rotate-0 { transform: rotate(0deg); }
.rotate-1 { transform: rotate(1deg); }
.rotate-2 { transform: rotate(2deg); }
.rotate-3 { transform: rotate(3deg); }
.rotate-6 { transform: rotate(6deg); }
.rotate-12 { transform: rotate(12deg); }
.rotate-45 { transform: rotate(45deg); }
.rotate-90 { transform: rotate(90deg); }
.rotate-180 { transform: rotate(180deg); }

/* Translate */
.translate-x-0 { transform: translateX(0px); }
.translate-x-1 { transform: translateX(0.25rem); }
.translate-x-2 { transform: translateX(0.5rem); }
.translate-x-3 { transform: translateX(0.75rem); }
.translate-x-4 { transform: translateX(1rem); }
.translate-x-5 { transform: translateX(1.25rem); }
.translate-x-6 { transform: translateX(1.5rem); }
.translate-x-8 { transform: translateX(2rem); }
.translate-x-10 { transform: translateX(2.5rem); }
.translate-x-12 { transform: translateX(3rem); }
.translate-x-16 { transform: translateX(4rem); }
.translate-x-20 { transform: translateX(5rem); }
.translate-x-24 { transform: translateX(6rem); }
.translate-x-1\/2 { transform: translateX(50%); }
.translate-x-full { transform: translateX(100%); }

.translate-y-0 { transform: translateY(0px); }
.translate-y-1 { transform: translateY(0.25rem); }
.translate-y-2 { transform: translateY(0.5rem); }
.translate-y-3 { transform: translateY(0.75rem); }
.translate-y-4 { transform: translateY(1rem); }
.translate-y-5 { transform: translateY(1.25rem); }
.translate-y-6 { transform: translateY(1.5rem); }
.translate-y-8 { transform: translateY(2rem); }
.translate-y-10 { transform: translateY(2.5rem); }
.translate-y-12 { transform: translateY(3rem); }
.translate-y-16 { transform: translateY(4rem); }
.translate-y-20 { transform: translateY(5rem); }
.translate-y-24 { transform: translateY(6rem); }
.translate-y-1\/2 { transform: translateY(50%); }
.translate-y-full { transform: translateY(100%); }

/* Skew */
.skew-x-0 { transform: skewX(0deg); }
.skew-x-1 { transform: skewX(1deg); }
.skew-x-2 { transform: skewX(2deg); }
.skew-x-3 { transform: skewX(3deg); }
.skew-x-6 { transform: skewX(6deg); }
.skew-x-12 { transform: skewX(12deg); }

.skew-y-0 { transform: skewY(0deg); }
.skew-y-1 { transform: skewY(1deg); }
.skew-y-2 { transform: skewY(2deg); }
.skew-y-3 { transform: skewY(3deg); }
.skew-y-6 { transform: skewY(6deg); }
.skew-y-12 { transform: skewY(12deg); }

/* Transform Origin */
.origin-center { transform-origin: center; }
.origin-top { transform-origin: top; }
.origin-top-right { transform-origin: top right; }
.origin-right { transform-origin: right; }
.origin-bottom-right { transform-origin: bottom right; }
.origin-bottom { transform-origin: bottom; }
.origin-bottom-left { transform-origin: bottom left; }
.origin-left { transform-origin: left; }
.origin-top-left { transform-origin: top left; }

/* Cursor */
.cursor-auto { cursor: auto; }
.cursor-default { cursor: default; }
.cursor-pointer { cursor: pointer; }
.cursor-wait { cursor: wait; }
.cursor-text { cursor: text; }
.cursor-move { cursor: move; }
.cursor-help { cursor: help; }
.cursor-not-allowed { cursor: not-allowed; }
.cursor-none { cursor: none; }
.cursor-context-menu { cursor: context-menu; }
.cursor-progress { cursor: progress; }
.cursor-cell { cursor: cell; }
.cursor-crosshair { cursor: crosshair; }
.cursor-vertical-text { cursor: vertical-text; }
.cursor-alias { cursor: alias; }
.cursor-copy { cursor: copy; }
.cursor-no-drop { cursor: no-drop; }
.cursor-grab { cursor: grab; }
.cursor-grabbing { cursor: grabbing; }
.cursor-all-scroll { cursor: all-scroll; }
.cursor-col-resize { cursor: col-resize; }
.cursor-row-resize { cursor: row-resize; }
.cursor-n-resize { cursor: n-resize; }
.cursor-e-resize { cursor: e-resize; }
.cursor-s-resize { cursor: s-resize; }
.cursor-w-resize { cursor: w-resize; }
.cursor-ne-resize { cursor: ne-resize; }
.cursor-nw-resize { cursor: nw-resize; }
.cursor-se-resize { cursor: se-resize; }
.cursor-sw-resize { cursor: sw-resize; }
.cursor-ew-resize { cursor: ew-resize; }
.cursor-ns-resize { cursor: ns-resize; }
.cursor-nesw-resize { cursor: nesw-resize; }
.cursor-nwse-resize { cursor: nwse-resize; }
.cursor-zoom-in { cursor: zoom-in; }
.cursor-zoom-out { cursor: zoom-out; }

/* User Select */
.select-none { user-select: none; }
.select-text { user-select: text; }
.select-all { user-select: all; }
.select-auto { user-select: auto; }

/* Pointer Events */
.pointer-events-none { pointer-events: none; }
.pointer-events-auto { pointer-events: auto; }

/* Resize */
.resize-none { resize: none; }
.resize-y { resize: vertical; }
.resize-x { resize: horizontal; }
.resize { resize: both; }

/* Scroll Behavior */
.scroll-auto { scroll-behavior: auto; }
.scroll-smooth { scroll-behavior: smooth; }

/* Scroll Margin */
.scroll-m-0 { scroll-margin: 0px; }
.scroll-m-1 { scroll-margin: 0.25rem; }
.scroll-m-2 { scroll-margin: 0.5rem; }
.scroll-m-3 { scroll-margin: 0.75rem; }
.scroll-m-4 { scroll-margin: 1rem; }
.scroll-m-5 { scroll-margin: 1.25rem; }
.scroll-m-6 { scroll-margin: 1.5rem; }
.scroll-m-8 { scroll-margin: 2rem; }
.scroll-m-10 { scroll-margin: 2.5rem; }
.scroll-m-12 { scroll-margin: 3rem; }
.scroll-m-16 { scroll-margin: 4rem; }
.scroll-m-20 { scroll-margin: 5rem; }
.scroll-m-24 { scroll-margin: 6rem; }

/* Scroll Padding */
.scroll-p-0 { scroll-padding: 0px; }
.scroll-p-1 { scroll-padding: 0.25rem; }
.scroll-p-2 { scroll-padding: 0.5rem; }
.scroll-p-3 { scroll-padding: 0.75rem; }
.scroll-p-4 { scroll-padding: 1rem; }
.scroll-p-5 { scroll-padding: 1.25rem; }
.scroll-p-6 { scroll-padding: 1.5rem; }
.scroll-p-8 { scroll-padding: 2rem; }
.scroll-p-10 { scroll-padding: 2.5rem; }
.scroll-p-12 { scroll-padding: 3rem; }
.scroll-p-16 { scroll-padding: 4rem; }
.scroll-p-20 { scroll-padding: 5rem; }
.scroll-p-24 { scroll-padding: 6rem; }