{
  "version": 3,
  "sources": ["../../src/primitives/GlassCore.tsx", "../../src/lib/utilsComprehensive.ts", "../../src/utils/env.ts", "../../src/utils/deviceCapabilities.ts", "../../src/tokens/glass.ts", "../../src/core/mixins/glassMixins.ts", "../../src/primitives/glass/GlassAdvanced.tsx", "../../src/design-system/utilsCore.ts", "../../src/hooks/useReducedMotion.tsx", "../../src/primitives/OptimizedGlassCore.tsx", "../../src/primitives/glass/OptimizedGlassAdvanced.tsx", "../../src/primitives/MotionNative.tsx", "../../src/animations/hooks/useMultiSpringBasic.ts", "../../src/primitives/motion/MotionFramer.tsx", "../../src/primitives/LiquidGlassBackdropSampler.tsx", "../../src/hooks/useLiquidGlassBackdrop.ts", "../../src/primitives/LiquidGlassConcentricFrame.tsx", "../../src/primitives/LiquidGlassEffectGroup.tsx", "../../src/primitives/LiquidGlassLayerProvider.tsx", "../../src/primitives/LiquidGlassScrollEdge.tsx", "../../src/primitives/LiquidGlassSourceTransition.tsx", "../../src/primitives/Slot.tsx", "../../src/primitives/Label.tsx", "../../src/primitives/Portal.tsx", "../../src/primitives/DismissableLayer.tsx", "../../src/primitives/FocusScope.tsx", "../../src/primitives/RovingFocusGroup.tsx", "../../src/primitives/Positioner.tsx"],
  "sourcesContent": ["\"use client\";\nimport React, { forwardRef } from \"react\";\nimport { cn } from \"../lib/utilsComprehensive\";\nimport {\n  createGlassStyle,\n  GlassIntent,\n  GlassElevation,\n  QualityTier,\n} from \"../core/mixins/glassMixins\";\n\nexport interface GlassProps extends React.HTMLAttributes<HTMLDivElement> {\n  /** Glass semantic intent */\n  intent?: GlassIntent;\n\n  /** Glass elevation level */\n  elevation?: GlassElevation;\n\n  /** Performance quality tier */\n  tier?: QualityTier;\n\n  /** Border radius */\n  radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\n  /** Enable interactive states */\n  interactive?: boolean;\n\n  /** Enable hover lift effect */\n  hoverLift?: boolean;\n\n  /** Enable focus ring */\n  focusRing?: boolean;\n\n  /** Enable press effect */\n  press?: boolean;\n\n  /** Custom CSS classes */\n  className?: string;\n\n  /** Children elements */\n  children?: React.ReactNode;\n}\n\nconst GlassCore = forwardRef<HTMLDivElement, GlassProps>(\n  (\n    {\n      intent = \"neutral\",\n      elevation = \"level2\",\n      tier = \"high\",\n      radius = \"md\",\n      interactive = false,\n      hoverLift = false,\n      focusRing = false,\n      press = false,\n      className,\n      children,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    // Generate glass styles using the modern token-based mixin\n    const glassStyles = createGlassStyle({\n      intent,\n      elevation,\n      tier,\n      interactive,\n      hoverLift,\n      focusRing,\n      press,\n    });\n\n    // Apply border radius based on token system\n    const radiusStyles = {\n      borderRadius:\n        radius === \"none\"\n          ? \"0px\"\n          : radius === \"sm\"\n            ? \"4px\"\n            : radius === \"md\"\n              ? \"8px\"\n              : radius === \"lg\"\n                ? \"12px\"\n                : radius === \"xl\"\n                  ? \"16px\"\n                  : radius === \"full\"\n                    ? \"9999px\"\n                    : \"8px\",\n    };\n\n    // Combine all styles\n    const combinedStyles = {\n      ...glassStyles,\n      ...radiusStyles,\n      ...style,\n    };\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          \"glass-foundation-basic\",\n          {\n            \"glass-state-interactive\": interactive,\n            \"glass-state-hoverable\": hoverLift,\n            \"glass-focus\": focusRing,\n            \"glass-state-pressable\": press,\n          },\n          className\n        )}\n        style={{ ...combinedStyles }}\n        {...props}\n      >\n        {children}\n      </div>\n    );\n  }\n);\n\nGlassCore.displayName = \"GlassCore\";\n\nexport { GlassCore };\nexport default GlassCore;\n\n// Export modern types\nexport type { GlassIntent, GlassElevation, QualityTier };\n\n// Legacy types for backward compatibility\n/** @deprecated Use GlassIntent instead */\nexport type GlassVariant =\n  | \"clear\"\n  | \"frosted\"\n  | \"tinted\"\n  | \"luminous\"\n  | \"dynamic\";\n/** @deprecated Use elevation levels instead */\nexport type BlurIntensity = \"none\" | \"subtle\" | \"medium\" | \"strong\" | \"intense\";\n", "import React from 'react';\n/**\n * AuraGlass Utility Functions\n * Production-ready utility functions for the AuraGlass design system\n */\n\nimport { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n// Class name utility function\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n\n// Color utilities\nexport function hexToRgba(hex: string, alpha: number = 1): string {\n  const r = parseInt(hex.slice(1, 3), 16);\n  const g = parseInt(hex.slice(3, 5), 16);\n  const b = parseInt(hex.slice(5, 7), 16);\n  return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\nexport function rgbaToHex(rgba: string): string {\n  const match = rgba.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?\\)/);\n  if (!match) return rgba;\n\n  const r = parseInt(match[1]);\n  const g = parseInt(match[2]);\n  const b = parseInt(match[3]);\n\n  return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\n}\n\nexport function adjustOpacity(color: string, opacity: number): string {\n  if (color.startsWith('#')) {\n    return hexToRgba(color, opacity);\n  }\n  \n  if (color.startsWith('rgb')) {\n    const match = color.match(/rgba?\\(([^)]+)\\)/);\n    if (match) {\n      const values = match[1].split(',').map((v: any) => v.trim());\n      return `rgba(${values[0]}, ${values[1]}, ${values[2]}, ${opacity})`;\n    }\n  }\n\n  return color;\n}\n\n// Number utilities\nexport function clamp(value: number, min: number, max: number): number {\n  return Math.min(Math.max(value, min), max);\n}\n\nexport function lerp(start: number, end: number, progress: number): number {\n  return start + (end - start) * progress;\n}\n\nexport function roundToDecimal(value: number, decimals: number): number {\n  return Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals);\n}\n\n// String utilities\nexport function capitalize(str: string): string {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function kebabCase(str: string): string {\n  return str\n    .replace(/([a-z])([A-Z])/g, '$1-$2')\n    .replace(/[\\s_]+/g, '-')\n    .toLowerCase();\n}\n\nexport function camelCase(str: string): string {\n  return str\n    .replace(/[-_\\s]+(.)?/g, (_, char) => char ? char.toUpperCase() : '')\n    .replace(/^(.)/, char => char.toLowerCase());\n}\n\n// Object utilities\nexport function deepMerge<T extends Record<string, any>>(target: T, ...sources: Partial<T>[]): T {\n  if (!sources.length) return target;\n  const source = sources.shift();\n\n  if (isObject(target) && isObject(source)) {\n    for (const key in source) {\n      if (isObject(source[key])) {\n        if (!target[key]) Object.assign(target, { [key]: {} });\n        deepMerge(target[key] as Record<string, any>, source[key] as Record<string, any>);\n      } else {\n        Object.assign(target, { [key]: source[key] });\n      }\n    }\n  }\n\n  return deepMerge(target, ...sources);\n}\n\nexport function isObject(item: any): item is Record<string, any> {\n  return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nexport function omit<T extends Record<string, any>, K extends keyof T>(\n  obj: T,\n  keys: K[]\n): Omit<T, K> {\n  const result = { ...obj };\n  keys.forEach((key: any) => delete result[key]);\n  return result;\n}\n\nexport function pick<T extends Record<string, any>, K extends keyof T>(\n  obj: T,\n  keys: K[]\n): Pick<T, K> {\n  const result = {} as Pick<T, K>;\n  keys.forEach((key: any) => {\n    if (key in obj) {\n      (result as any)[key] = obj[key];\n    }\n  });\n  return result;\n}\n\n// Array utilities\nexport function unique<T>(array: T[]): T[] {\n  return [...new Set(array)];\n}\n\nexport function groupBy<T, K extends keyof T>(array: T[], key: K): Record<string, T[]> {\n  return array.reduce((groups, item) => {\n    const groupKey = String(item[key]);\n    if (!groups[groupKey]) {\n      groups[groupKey] = [];\n    }\n    groups[groupKey].push(item);\n    return groups;\n  }, {} as Record<string, T[]>);\n}\n\nexport function sortBy<T>(array: T[], key: keyof T, direction: 'asc' | 'desc' = 'asc'): T[] {\n  return [...array].sort((a, b) => {\n    const aVal = a[key];\n    const bVal = b[key];\n    \n    if (aVal < bVal) return direction === 'asc' ? -1 : 1;\n    if (aVal > bVal) return direction === 'asc' ? 1 : -1;\n    return 0;\n  });\n}\n\n// DOM utilities\nexport function getElementRect(element: HTMLElement): DOMRect {\n  return element.getBoundingClientRect();\n}\n\nexport function isElementInViewport(element: HTMLElement): boolean {\n  const rect = getElementRect(element);\n  return (\n    rect.top >= 0 &&\n    rect.left >= 0 &&\n    rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n    rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n  );\n}\n\nexport function scrollToElement(element: HTMLElement, options: ScrollIntoViewOptions = {}): void {\n  element.scrollIntoView({\n    behavior: 'smooth',\n    block: 'start',\n    inline: 'nearest',\n    ...options,\n  });\n}\n\n// Event utilities\nexport function debounce<T extends (...args: any[]) => any>(\n  func: T,\n  wait: number\n): (...args: Parameters<T>) => void {\n  let timeout: NodeJS.Timeout;\n  \n  return (...args: Parameters<T>) => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => func(...args), wait);\n  };\n}\n\nexport function throttle<T extends (...args: any[]) => any>(\n  func: T,\n  limit: number\n): (...args: Parameters<T>) => void {\n  let inThrottle: boolean;\n  \n  return (...args: Parameters<T>) => {\n    if (!inThrottle) {\n      func(...args);\n      inThrottle = true;\n      setTimeout(() => inThrottle = false, limit);\n    }\n  };\n}\n\n// Validation utilities\nexport function isValidEmail(email: string): boolean {\n  const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n  return emailRegex.test(email);\n}\n\nexport function isValidUrl(url: string): boolean {\n  try {\n    new URL(url);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport function isValidHexColor(color: string): boolean {\n  const hexRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n  return hexRegex.test(color);\n}\n\n// Format utilities\nexport function formatNumber(\n  value: number,\n  options: Intl.NumberFormatOptions = {}\n): string {\n  return new Intl.NumberFormat('en-US', {\n    minimumFractionDigits: 0,\n    maximumFractionDigits: 2,\n    ...options,\n  }).format(value);\n}\n\nexport function formatCurrency(\n  value: number,\n  currency: string = 'USD',\n  locale: string = 'en-US'\n): string {\n  return new Intl.NumberFormat(locale, {\n    style: 'currency',\n    currency,\n  }).format(value);\n}\n\nexport function formatPercentage(\n  value: number,\n  decimals: number = 1\n): string {\n  return new Intl.NumberFormat('en-US', {\n    style: 'percent',\n    minimumFractionDigits: decimals,\n    maximumFractionDigits: decimals,\n  }).format(value / 100);\n}\n\nexport function formatDate(\n  date: Date | string,\n  options: Intl.DateTimeFormatOptions = {}\n): string {\n  const dateObj = typeof date === 'string' ? new Date(date) : date;\n  return new Intl.DateTimeFormat('en-US', {\n    year: 'numeric',\n    month: 'short',\n    day: 'numeric',\n    ...options,\n  }).format(dateObj);\n}\n\n// Animation utilities\nexport function createAnimationPromise(\n  element: HTMLElement,\n  animationName: string,\n  duration?: number\n): Promise<void> {\n  return new Promise((resolve) => {\n    const handleAnimationEnd = () => {\n      element.removeEventListener('animationend', handleAnimationEnd);\n      resolve();\n    };\n\n    element.addEventListener('animationend', handleAnimationEnd);\n    element.style.animation = `${animationName} ${duration || 300}ms ease forwards`;\n  });\n}\n\nexport function getOptimalAnimationDuration(element: HTMLElement): number {\n  const rect = getElementRect(element);\n  const area = rect.width * rect.height;\n  \n  // Base duration on element size\n  if (area < 10000) return 200;  // Small elements\n  if (area < 50000) return 300;  // Medium elements\n  if (area < 100000) return 400; // Large elements\n  return 500; // Very large elements\n}\n\n// Storage utilities\nexport const storage = {\n  get: <T>(key: string, defaultValue?: T): T | null => {\n    try {\n      const item = localStorage.getItem(`aura-glass-${key}`);\n      return item ? JSON.parse(item) : defaultValue ?? null;\n    } catch {\n      return defaultValue ?? null;\n    }\n  },\n\n  set: <T>(key: string, value: T): void => {\n    try {\n      localStorage.setItem(`aura-glass-${key}`, JSON.stringify(value));\n    } catch {\n      // Storage might be full or unavailable\n    }\n  },\n\n  remove: (key: string): void => {\n    try {\n      localStorage.removeItem(`aura-glass-${key}`);\n    } catch {\n      // Storage might be unavailable\n    }\n  },\n\n  clear: (): void => {\n    try {\n      const keys = Object.keys(localStorage).filter((key: any) => key.startsWith('aura-glass-'));\n      keys.forEach((key: any) => localStorage.removeItem(key));\n    } catch {\n      // Storage might be unavailable\n    }\n  },\n};\n\n// Error handling utilities\nexport function safeExecute<T>(\n  fn: () => T,\n  fallback?: T,\n  onError?: (error: Error) => void\n): T | undefined {\n  try {\n    return fn();\n  } catch (error) {\n    if (onError && error instanceof Error) {\n      onError(error);\n    }\n    return fallback;\n  }\n}\n\nexport async function safeExecuteAsync<T>(\n  fn: () => Promise<T>,\n  fallback?: T,\n  onError?: (error: Error) => void\n): Promise<T | undefined> {\n  try {\n    return await fn();\n  } catch (error) {\n    if (onError && error instanceof Error) {\n      onError(error);\n    }\n    return fallback;\n  }\n}\n\n// Export all utilities\nexport default {\n  cn,\n  hexToRgba,\n  rgbaToHex,\n  adjustOpacity,\n  clamp,\n  lerp,\n  roundToDecimal,\n  capitalize,\n  kebabCase,\n  camelCase,\n  deepMerge,\n  isObject,\n  omit,\n  pick,\n  unique,\n  groupBy,\n  sortBy,\n  getElementRect,\n  isElementInViewport,\n  scrollToElement,\n  debounce,\n  throttle,\n  isValidEmail,\n  isValidUrl,\n  isValidHexColor,\n  formatNumber,\n  formatCurrency,\n  formatPercentage,\n  formatDate,\n  createAnimationPromise,\n  getOptimalAnimationDuration,\n  storage,\n  safeExecute,\n  safeExecuteAsync,\n};", "import type { DependencyList, EffectCallback } from 'react';\n\n/**\n * Environment helpers to centralize SSR/browser detection and safe global access.\n *\n * CRITICAL: These must check dynamically, NOT cache at module load time,\n * to handle polyfills and avoid locking in server environment values.\n */\n\n/**\n * Dynamic check - re-evaluates on every call to support polyfills\n */\nconst hasWindow = (): boolean => typeof window !== 'undefined';\nconst hasDocument = (): boolean => typeof document !== 'undefined';\nconst hasNavigator = (): boolean => typeof navigator !== 'undefined';\n\n/**\n * Returns true when executed in a browser-like environment.\n */\nexport const isBrowser = (): boolean => hasWindow() && hasDocument();\n\n/**\n * Convenience inverse helper.\n */\nexport const isServer = (): boolean => !isBrowser();\n\n/**\n * Safely access the `window` object when available.\n */\nexport const getSafeWindow = (): typeof window | undefined => (hasWindow() ? window : undefined);\n\n/**\n * Safely access the `document` object when available.\n */\nexport const getSafeDocument = (): Document | undefined => (hasDocument() ? document : undefined);\n\n/**\n * Safely access the `navigator` object when available.\n */\nexport const getSafeNavigator = (): Navigator | undefined => (hasNavigator() ? navigator : undefined);\n\n/**\n * Helper to guard feature detection against SSR environments.\n */\nexport const safeMatchMedia = (query: string): MediaQueryList | undefined => {\n  const win = getSafeWindow();\n  return win?.matchMedia ? win.matchMedia(query) : undefined;\n};\n\n/**\n * Executes a side effect only when running in the browser. Returns a no-op cleanup on the server.\n */\nexport const runClientEffect = (effect: EffectCallback): ReturnType<EffectCallback> | undefined => {\n  if (!isBrowser()) {\n    return undefined;\n  }\n  return effect();\n};\n\n/**\n * React hook compatible helper to defer `useEffect` logic to the client.\n *\n * Example:\n *   useClientEffect(() => { /* browser only *\\/ });\n */\nexport const useClientEffect = (\n  useEffectImpl: (effect: EffectCallback, deps?: DependencyList) => void,\n  effect: EffectCallback,\n  deps?: DependencyList\n): void => {\n  useEffectImpl(() => runClientEffect(effect), deps);\n};\n\n/**\n * Creates a lazy accessor that only evaluates the factory on the client.\n */\nexport const lazyClientValue = <T>(factory: () => T, fallback: T): T => {\n  return isBrowser() ? factory() : fallback;\n};\n", "import { getSafeDocument, getSafeNavigator, getSafeWindow, isBrowser, safeMatchMedia } from './env';\n// Device capability detection and optimization\n\nexport interface DeviceInfo {\n  type: 'mobile' | 'tablet' | 'desktop' | 'unknown';\n  os: 'ios' | 'android' | 'windows' | 'macos' | 'linux' | 'unknown';\n  browser: string;\n  capabilities: DeviceCapabilities;\n  performance: DevicePerformance;\n  screen: ScreenInfo;\n  input: InputCapabilities;\n}\n\nexport interface DeviceCapabilities {\n  touch: boolean;\n  multiTouch: boolean;\n  hover: boolean;\n  pointer: boolean;\n  gpu: boolean;\n  webgl: boolean;\n  webgl2: boolean;\n  hardwareAcceleration: boolean;\n  highDPI: boolean;\n  vibration: boolean;\n  geolocation: boolean;\n  camera: boolean;\n  microphone: boolean;\n  speakers: boolean;\n  bluetooth: boolean;\n  usb: boolean;\n}\n\nexport interface DevicePerformance {\n  memory: number; // MB\n  cores: number;\n  clockSpeed: number; // MHz\n  battery: boolean;\n  network: 'slow' | 'fast' | 'unknown';\n  storage: 'low' | 'medium' | 'high';\n  tier: 'low' | 'medium' | 'high' | 'ultra';\n}\n\nexport interface ScreenInfo {\n  width: number;\n  height: number;\n  pixelRatio: number;\n  orientation: 'portrait' | 'landscape';\n  colorDepth: number;\n  refreshRate: number;\n  touchScreen: boolean;\n  ppi: number;\n}\n\nexport interface InputCapabilities {\n  keyboard: boolean;\n  mouse: boolean;\n  touch: boolean;\n  stylus: boolean;\n  gamepad: boolean;\n  microphone: boolean;\n  camera: boolean;\n}\n\nexport const DEFAULT_DEVICE_INFO: DeviceInfo = {\n  type: 'unknown',\n  os: 'unknown',\n  browser: 'Unknown',\n  capabilities: {\n    touch: false,\n    multiTouch: false,\n    hover: false,\n    pointer: false,\n    gpu: false,\n    webgl: false,\n    webgl2: false,\n    hardwareAcceleration: false,\n    highDPI: false,\n    vibration: false,\n    geolocation: false,\n    camera: false,\n    microphone: false,\n    speakers: false,\n    bluetooth: false,\n    usb: false,\n  },\n  performance: {\n    memory: 4,\n    cores: 4,\n    clockSpeed: 2000,\n    battery: false,\n    network: 'unknown',\n    storage: 'medium',\n    tier: 'medium',\n  },\n  screen: {\n    width: 1920,\n    height: 1080,\n    pixelRatio: 1,\n    orientation: 'landscape',\n    colorDepth: 24,\n    refreshRate: 60,\n    touchScreen: false,\n    ppi: 96,\n  },\n  input: {\n    keyboard: true,\n    mouse: true,\n    touch: false,\n    stylus: false,\n    gamepad: false,\n    microphone: false,\n    camera: false,\n  },\n};\n\n// Device detection\nlet __cachedDeviceInfo: DeviceInfo | null = null;\nlet __lastDetectTs = 0;\nconst DETECT_CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes\n\n// Safely probe WebGL support with minimal overhead and explicit cleanup\nconst probeWebGLSupport = (): { webgl: boolean; webgl2: boolean; gpu: boolean } => {\n  const doc = getSafeDocument();\n  if (!doc) {\n    return { webgl: false, webgl2: false, gpu: false };\n  }\n\n  const canvas = doc.createElement('canvas');\n  // Keep it tiny and hint low-power\n  canvas.width = 1;\n  canvas.height = 1;\n\n  const attrs: WebGLContextAttributes & { powerPreference?: any } = {\n    alpha: false,\n    antialias: false,\n    depth: false,\n    stencil: false,\n    preserveDrawingBuffer: false,\n    desynchronized: true as any,\n    failIfMajorPerformanceCaveat: true,\n    powerPreference: 'low-power',\n  };\n\n  let gl: WebGLRenderingContext | null = null;\n  let gl2: WebGL2RenderingContext | null = null;\n  try {\n    gl2 = (canvas.getContext('webgl2', attrs) as WebGL2RenderingContext | null) || null;\n  } catch {\n    gl2 = null;\n  }\n  if (!gl2) {\n    try {\n      gl = (canvas.getContext('webgl', attrs) as WebGLRenderingContext | null) ||\n           (canvas.getContext('experimental-webgl', attrs) as WebGLRenderingContext | null) ||\n           null;\n    } catch {\n      gl = null;\n    }\n  }\n\n  const webgl2 = !!gl2;\n  const webgl = webgl2 || !!gl;\n  const gpu = webgl; // If we can get a GL context, assume GPU available\n\n  // Explicitly release the context if possible\n  try {\n    const ctx: any = gl2 || gl;\n    const lose = ctx && typeof ctx.getExtension === 'function' && ctx.getExtension('WEBGL_lose_context');\n    if (lose && typeof lose.loseContext === 'function') {\n      lose.loseContext();\n    }\n  } catch {}\n  try {\n    canvas.width = 0;\n    canvas.height = 0;\n    if (canvas.parentNode) {\n      canvas.parentNode.removeChild(canvas);\n    }\n  } catch {}\n\n  gl = null as any;\n  gl2 = null as any;\n  return { webgl, webgl2, gpu };\n};\n\nexport const detectDevice = (): DeviceInfo => {\n  // Basic caching to avoid repeatedly creating GL contexts across mounts\n  const now = Date.now();\n  if (__cachedDeviceInfo && now - __lastDetectTs < DETECT_CACHE_TTL_MS) {\n    return __cachedDeviceInfo;\n  }\n\n  if (!isBrowser()) {\n    __cachedDeviceInfo = { ...DEFAULT_DEVICE_INFO };\n    __lastDetectTs = now;\n    return __cachedDeviceInfo;\n  }\n\n  const navigatorRef = getSafeNavigator();\n  const ua = navigatorRef?.userAgent ?? '';\n  const platform = navigatorRef?.platform ?? '';\n\n  // Detect device type\n  const type = detectDeviceType(ua, platform);\n\n  // Detect OS\n  const os = detectOS(ua, platform);\n\n  // Detect browser\n  const browser = detectBrowser(ua);\n\n  // Detect capabilities\n  const capabilities = detectDeviceCapabilities();\n\n  // Detect performance\n  const performance = detectDevicePerformance();\n\n  // Detect screen info\n  const screen = detectScreenInfo();\n\n  // Detect input capabilities\n  const input = detectInputCapabilities();\n\n  const info: DeviceInfo = {\n    type,\n    os,\n    browser,\n    capabilities,\n    performance,\n    screen,\n    input,\n  };\n  __cachedDeviceInfo = info;\n  __lastDetectTs = now;\n  return info;\n};\n\nconst detectDeviceType = (ua: string, platform: string): DeviceInfo['type'] => {\n  // Check for mobile devices\n  if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(ua)) {\n    // Distinguish between phone and tablet\n    if (/iPad|Android(?=.*\\bMobile\\b)|Tablet|PlayBook/i.test(ua)) {\n      return 'tablet';\n    }\n    return 'mobile';\n  }\n\n  // Check for desktop\n  if (/Windows|Mac|Linux/i.test(platform)) {\n    return 'desktop';\n  }\n\n  return 'unknown';\n};\n\nconst detectOS = (ua: string, platform: string): DeviceInfo['os'] => {\n  if (/iPhone|iPad|iPod/i.test(ua)) {\n    return 'ios';\n  }\n\n  if (/Android/i.test(ua)) {\n    return 'android';\n  }\n\n  if (/Windows/i.test(platform)) {\n    return 'windows';\n  }\n\n  if (/Mac/i.test(platform)) {\n    return 'macos';\n  }\n\n  if (/Linux/i.test(platform)) {\n    return 'linux';\n  }\n\n  return 'unknown';\n};\n\nconst detectBrowser = (ua: string): string => {\n  if (ua.includes('Chrome') && !ua.includes('Edg/')) {\n    return 'Chrome';\n  }\n\n  if (ua.includes('Firefox')) {\n    return 'Firefox';\n  }\n\n  if (ua.includes('Safari') && !ua.includes('Chrome')) {\n    return 'Safari';\n  }\n\n  if (ua.includes('Edg/')) {\n    return 'Edge';\n  }\n\n  if (ua.includes('MSIE') || ua.includes('Trident')) {\n    return 'Internet Explorer';\n  }\n\n  return 'Unknown';\n};\n\nconst detectDeviceCapabilities = (): DeviceCapabilities => {\n  const win = getSafeWindow();\n  const nav = getSafeNavigator();\n  const { webgl, webgl2, gpu } = probeWebGLSupport();\n\n  return {\n    touch: !!win && 'ontouchstart' in win,\n    multiTouch: (nav?.maxTouchPoints ?? 0) > 1,\n    hover: safeMatchMedia('(hover: hover)')?.matches ?? false,\n    pointer: !!win && 'PointerEvent' in win,\n    gpu,\n    webgl,\n    webgl2,\n    hardwareAcceleration: (() => {\n      const doc = getSafeDocument();\n      if (!doc) return false;\n      const testElement = doc.createElement('div');\n      testElement.style.setProperty('transform', 'translateZ(0)');\n      return testElement.style.getPropertyValue('transform') === 'translateZ(0)';\n    })(),\n    highDPI: (win?.devicePixelRatio ?? 1) > 1,\n    vibration: !!nav && 'vibrate' in nav,\n    geolocation: !!nav && 'geolocation' in nav,\n    camera: !!(nav?.mediaDevices && nav.mediaDevices.getUserMedia),\n    microphone: !!(nav?.mediaDevices && nav.mediaDevices.getUserMedia),\n    speakers: !!win && ('AudioContext' in win || 'webkitAudioContext' in win),\n    bluetooth: !!nav && 'bluetooth' in nav,\n    usb: !!nav && 'usb' in nav,\n  };\n};\n\n// Allow manual refresh of cached device info if needed\nexport const refreshDeviceDetection = (): DeviceInfo => {\n  __cachedDeviceInfo = null;\n  return detectDevice();\n};\n\nconst detectDevicePerformance = (): DevicePerformance => {\n  // Estimate memory\n  const nav = getSafeNavigator() as Navigator & { deviceMemory?: number };\n  const memory = nav?.deviceMemory || 4; // Default to 4GB if not available\n\n  // Get CPU cores\n  const cores = nav?.hardwareConcurrency || 4; // Default to 4 cores\n\n  // Estimate clock speed (rough approximation)\n  const clockSpeed = cores > 4 ? 3000 : cores > 2 ? 2500 : 2000;\n\n  // Check battery\n  const battery = !!nav && 'getBattery' in nav;\n\n  // Estimate network speed\n  const network = detectNetworkSpeed();\n\n  // Estimate storage\n  const storage = memory > 8 ? 'high' : memory > 4 ? 'medium' : 'low';\n\n  // Calculate performance tier\n  const tier = calculatePerformanceTier(memory, cores, network);\n\n  return {\n    memory,\n    cores,\n    clockSpeed,\n    battery,\n    network,\n    storage,\n    tier,\n  };\n};\n\nconst detectNetworkSpeed = (): 'slow' | 'fast' | 'unknown' => {\n  const nav = getSafeNavigator() as Navigator & { connection?: { effectiveType?: string } };\n  const connection = nav?.connection;\n  if (!connection) return 'unknown';\n\n  const effectiveType = connection.effectiveType;\n  if (effectiveType === 'slow-2g' || effectiveType === '2g') {\n    return 'slow';\n  }\n\n  return 'fast';\n};\n\nconst calculatePerformanceTier = (\n  memory: number,\n  cores: number,\n  network: string\n): DevicePerformance['tier'] => {\n  const score = (memory * 0.4) + (cores * 0.4) + (network === 'fast' ? 2 : 1) * 0.2;\n\n  if (score >= 6) return 'ultra';\n  if (score >= 4) return 'high';\n  if (score >= 2.5) return 'medium';\n  return 'low';\n};\n\nconst detectScreenInfo = (): ScreenInfo => {\n  const win = getSafeWindow();\n  const screen = win?.screen;\n  const width = screen?.width ?? DEFAULT_DEVICE_INFO.screen.width;\n  const height = screen?.height ?? DEFAULT_DEVICE_INFO.screen.height;\n  const pixelRatio = win?.devicePixelRatio ?? DEFAULT_DEVICE_INFO.screen.pixelRatio;\n  const orientation = width > height ? 'landscape' : 'portrait';\n  const colorDepth = screen?.colorDepth ?? DEFAULT_DEVICE_INFO.screen.colorDepth;\n  const refreshRate = 60; // Default, hard to detect accurately\n\n  // Estimate PPI (pixels per inch)\n  const ppi = estimatePPI(width, height, pixelRatio);\n\n  return {\n    width,\n    height,\n    pixelRatio,\n    orientation,\n    colorDepth,\n    refreshRate,\n    touchScreen: !!win && 'ontouchstart' in win,\n    ppi,\n  };\n};\n\nconst estimatePPI = (width: number, height: number, pixelRatio: number): number => {\n  // Rough PPI estimation based on common device sizes\n  const diagonalPixels = Math.sqrt(width ** 2 + height ** 2);\n  const diagonalInches = diagonalPixels / (pixelRatio * 96); // Assuming 96 PPI base\n\n  return diagonalPixels / diagonalInches;\n};\n\nconst detectInputCapabilities = (): InputCapabilities => {\n  const win = getSafeWindow();\n  const nav = getSafeNavigator();\n\n  return {\n    keyboard: true, // Assume keyboard support\n    mouse: safeMatchMedia('(hover: hover)')?.matches ?? false,\n    touch: !!win && 'ontouchstart' in win,\n    stylus: (nav?.maxTouchPoints ?? 0) > 1, // Rough approximation\n    gamepad: !!nav && 'getGamepads' in nav,\n    microphone: !!(nav?.mediaDevices && nav.mediaDevices.getUserMedia),\n    camera: !!(nav?.mediaDevices && nav.mediaDevices.getUserMedia),\n  };\n};\n\n// Performance optimization utilities\nexport const performanceOptimizations = {\n  // Get optimal animation settings based on device\n  getOptimalAnimationSettings: (device: DeviceInfo) => {\n    const { performance, capabilities } = device;\n\n    switch (performance.tier) {\n      case 'ultra':\n        return {\n          duration: 300,\n          easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n          useHardwareAcceleration: true,\n          useWebAnimations: capabilities.webgl,\n        };\n\n      case 'high':\n        return {\n          duration: 400,\n          easing: 'cubic-bezier(0.4, 0, 0.2, 1)',\n          useHardwareAcceleration: true,\n          useWebAnimations: capabilities.webgl,\n        };\n\n      case 'medium':\n        return {\n          duration: 500,\n          easing: 'ease',\n          useHardwareAcceleration: capabilities.hardwareAcceleration,\n          useWebAnimations: false,\n        };\n\n      case 'low':\n        return {\n          duration: 600,\n          easing: 'linear',\n          useHardwareAcceleration: false,\n          useWebAnimations: false,\n        };\n\n      default:\n        return {\n          duration: 400,\n          easing: 'ease',\n          useHardwareAcceleration: capabilities.hardwareAcceleration,\n          useWebAnimations: false,\n        };\n    }\n  },\n\n  // Get optimal rendering settings\n  getOptimalRenderingSettings: (device: DeviceInfo) => {\n    const { performance, screen } = device;\n\n    return {\n      useCanvas: performance.tier === 'ultra' || performance.tier === 'high',\n      useWebGL: device.capabilities.webgl && performance.tier !== 'low',\n      pixelRatio: screen.pixelRatio > 2 ? 2 : screen.pixelRatio,\n      maxTextureSize: performance.tier === 'ultra' ? 4096 : 2048,\n      antialiasing: performance.tier !== 'low',\n      shadows: performance.tier === 'ultra' || performance.tier === 'high',\n      particles: performance.tier === 'ultra' ? 1000 : performance.tier === 'high' ? 500 : 100,\n    };\n  },\n\n  // Get optimal memory settings\n  getOptimalMemorySettings: (device: DeviceInfo) => {\n    const { performance } = device;\n\n    return {\n      maxCacheSize: performance.memory * 1024 * 1024 * 0.1, // 10% of available memory\n      textureCacheSize: performance.tier === 'ultra' ? 100 : 50,\n      geometryCacheSize: performance.tier === 'ultra' ? 50 : 25,\n      shaderCacheSize: performance.tier === 'ultra' ? 20 : 10,\n    };\n  },\n\n  // Get optimal network settings\n  getOptimalNetworkSettings: (device: DeviceInfo) => {\n    const { performance } = device;\n\n    return {\n      preloadAssets: performance.network !== 'slow',\n      compressTextures: performance.network === 'slow',\n      useCDN: performance.network === 'fast',\n      cacheStrategy: performance.network === 'fast' ? 'aggressive' : 'conservative',\n    };\n  },\n};\n\n// Device-specific optimizations\nexport const deviceOptimizations = {\n  // Mobile optimizations\n  mobile: {\n    reduceMotion: () => ({\n      prefersReducedMotion: safeMatchMedia('(prefers-reduced-motion: reduce)')?.matches ?? true,\n      disableParallax: true,\n      simplifyAnimations: true,\n      reduceParticleCount: true,\n    }),\n\n    optimizeTouch: () => ({\n      preventZoom: true,\n      improveTapTargets: true,\n      disableDoubleTapZoom: true,\n      optimizeScroll: true,\n    }),\n\n    optimizeBattery: () => ({\n      reduceFrameRate: true,\n      disableNonEssentialAnimations: true,\n      optimizeRendering: true,\n    }),\n  },\n\n  // Tablet optimizations\n  tablet: {\n    hybridInput: () => ({\n      supportTouchAndMouse: true,\n      optimizeForBoth: true,\n      adaptiveUI: true,\n    }),\n  },\n\n  // Desktop optimizations\n  desktop: {\n    maximizePerformance: () => ({\n      useAdvancedShaders: true,\n      enablePostProcessing: true,\n      optimizeForGPU: true,\n    }),\n  },\n};\n\n// Adaptive rendering utilities\nexport const adaptiveRendering = {\n  // Adjust quality based on performance\n  adjustQualityForPerformance: (\n    currentFPS: number,\n    targetFPS: number = 60,\n    currentQuality: number\n  ): number => {\n    const fpsRatio = currentFPS / targetFPS;\n\n    if (fpsRatio < 0.8) {\n      // Reduce quality if FPS is too low\n      return Math.max(0.1, currentQuality * 0.8);\n    } else if (fpsRatio > 1.2) {\n      // Increase quality if FPS is good\n      return Math.min(1, currentQuality * 1.1);\n    }\n\n    return currentQuality;\n  },\n\n  // Adjust detail level based on device\n  getDetailLevel: (device: DeviceInfo): 'low' | 'medium' | 'high' | 'ultra' => {\n    switch (device.performance.tier) {\n      case 'ultra':\n        return device.screen.pixelRatio > 2 ? 'ultra' : 'high';\n      case 'high':\n        return 'high';\n      case 'medium':\n        return 'medium';\n      case 'low':\n        return 'low';\n      default:\n        return 'medium';\n    }\n  },\n\n  // Get optimal texture size\n  getOptimalTextureSize: (device: DeviceInfo, baseSize: number): number => {\n    const detailLevel = adaptiveRendering.getDetailLevel(device);\n    const multipliers = {\n      ultra: 1,\n      high: 0.8,\n      medium: 0.6,\n      low: 0.4,\n    };\n\n    return Math.floor(baseSize * multipliers[detailLevel]);\n  },\n};\n\n// Export main detection function\nexport { detectDevice as default };\n", "/**\n * token-lint-ignore-file: canonical token definitions are allowed to use raw values.\n *\n * AuraGlass Canonical Token Schema - SINGLE SOURCE OF TRUTH\n *\n * This is the ONLY authoritative source for all glassmorphism values.\n * All other systems MUST consume these tokens.\n *\n * Requirements:\n * - No blur values below 2px on high tier\n * - All alpha values >= 0.08 (visible)\n * - All text colors meet WCAG AA contrast (4.5:1)\n * - No undefined/empty values allowed\n */\n\nexport type GlassElevation =\n  | \"level1\"\n  | \"level2\"\n  | \"level3\"\n  | \"level4\"\n  | \"level5\";\nexport type GlassIntent =\n  | \"neutral\"\n  | \"primary\"\n  | \"success\"\n  | \"warning\"\n  | \"danger\"\n  | \"info\";\nexport type QualityTier = \"auto\" | \"low\" | \"medium\" | \"high\";\n\nexport interface GlassSurfaceSpec {\n  backdropBlur: { px: number }; // never 0, min 2 on high tier\n  surface: { base: string; overlay?: string }; // rgba or gradient() string (visible)\n  border: { color: string; width: number; style: \"solid\" | \"dashed\" | \"none\" };\n  innerGlow?: { color: string; spread: number; blur: number };\n  outerShadow?: {\n    color: string;\n    x: number;\n    y: number;\n    blur: number;\n    spread: number;\n  };\n  noiseOpacity?: number; // 0..0.15\n  highlightOpacity?: number; // 0..0.25\n  text: { primary: string; secondary: string }; // must meet AA over surface\n}\n\nexport interface GlassPerformanceSpec {\n  blurMultiplier: number;\n  opacityMultiplier: number;\n  animationSpeedMultiplier: number;\n  renderQuality: \"low\" | \"medium\" | \"high\";\n}\n\nexport interface AuraGlassTokens {\n  surfaces: Record<GlassIntent, Record<GlassElevation, GlassSurfaceSpec>>;\n  motion: { defaultMs: number; enterMs: number; exitMs: number };\n  radii: { sm: number; md: number; lg: number; xl: number; pill: number };\n  gaps: { xs: number; sm: number; md: number; lg: number };\n}\n\n// CANONICAL GLASS TOKENS - AUTHORITATIVE VALUES ONLY\nexport const AURA_GLASS: AuraGlassTokens = {\n  surfaces: {\n    neutral: {\n      // Liquid-glass neutral: luminous white frost over a faint smoke scrim.\n      // Depth comes from blur + sheen, not surface darkness.\n      level1: {\n        backdropBlur: { px: 16 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(255,255,255,0.12) 0%, rgba(255,255,255,0.04) 50%, rgba(255,255,255,0.08) 100%)\",\n          overlay: \"rgba(15,23,42,0.20)\",\n        },\n        border: { color: \"rgba(255,255,255,0.16)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(0,0,0,0.18)\",\n          x: 0,\n          y: 4,\n          blur: 24,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(255,255,255,0.10)\", spread: 0, blur: 8 },\n        noiseOpacity: 0.03,\n        highlightOpacity: 0.18,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // 19.4:1 contrast - Enhanced for better readability\n          secondary: \"rgba(255,255,255,0.88)\", // 17.4:1 contrast - Enhanced for better readability\n        },\n      },\n      level2: {\n        backdropBlur: { px: 24 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(255,255,255,0.14) 0%, rgba(255,255,255,0.05) 50%, rgba(255,255,255,0.10) 100%)\",\n          overlay: \"rgba(15,23,42,0.22)\",\n        },\n        border: { color: \"rgba(255,255,255,0.20)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(0,0,0,0.22)\",\n          x: 0,\n          y: 8,\n          blur: 32,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(255,255,255,0.12)\", spread: 0, blur: 12 },\n        noiseOpacity: 0.05,\n        highlightOpacity: 0.22,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level3: {\n        backdropBlur: { px: 32 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(255,255,255,0.16) 0%, rgba(255,255,255,0.06) 50%, rgba(255,255,255,0.11) 100%)\",\n          overlay: \"rgba(15,23,42,0.24)\",\n        },\n        border: {\n          color: \"rgba(255,255,255,0.24)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"rgba(0,0,0,0.26)\",\n          x: 0,\n          y: 12,\n          blur: 40,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(255,255,255,0.14)\", spread: 1, blur: 16 },\n        noiseOpacity: 0.06,\n        highlightOpacity: 0.25,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level4: {\n        backdropBlur: { px: 40 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(255,255,255,0.18) 0%, rgba(255,255,255,0.07) 50%, rgba(255,255,255,0.12) 100%)\",\n          overlay: \"rgba(15,23,42,0.26)\",\n        },\n        border: {\n          color: \"rgba(255,255,255,0.28)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"rgba(0,0,0,0.30)\",\n          x: 0,\n          y: 16,\n          blur: 48,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(255,255,255,0.16)\", spread: 1, blur: 20 },\n        noiseOpacity: 0.08,\n        highlightOpacity: 0.28,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level5: {\n        backdropBlur: { px: 48 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(255,255,255,0.20) 0%, rgba(255,255,255,0.08) 50%, rgba(255,255,255,0.14) 100%)\",\n          overlay: \"rgba(15,23,42,0.28)\",\n        },\n        border: {\n          color: \"rgba(255,255,255,0.32)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"rgba(0,0,0,0.34)\",\n          x: 0,\n          y: 20,\n          blur: 56,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(255,255,255,0.18)\", spread: 2, blur: 24 },\n        noiseOpacity: 0.10,\n        highlightOpacity: 0.32,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n    },\n    primary: {\n      // Intent surfaces read as tinted liquid glass: low-alpha color wash,\n      // hairline borders, blur carries the depth.\n      level1: {\n        backdropBlur: { px: 16 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-primary)/0.22) 0%, hsl(var(--glass-color-primary)/0.12) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-primary)/0.35)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-primary)/0.18)\",\n          x: 0,\n          y: 4,\n          blur: 24,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-primary)/0.14)\",\n          spread: 0,\n          blur: 8,\n        },\n        noiseOpacity: 0.03,\n        highlightOpacity: 0.18,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level2: {\n        backdropBlur: { px: 24 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-primary)/0.26) 0%, hsl(var(--glass-color-primary)/0.15) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-primary)/0.40)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-primary)/0.22)\",\n          x: 0,\n          y: 8,\n          blur: 32,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-primary)/0.16)\",\n          spread: 0,\n          blur: 12,\n        },\n        noiseOpacity: 0.05,\n        highlightOpacity: 0.22,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level3: {\n        backdropBlur: { px: 32 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-primary)/0.30) 0%, hsl(var(--glass-color-primary)/0.18) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-primary)/0.45)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-primary)/0.26)\",\n          x: 0,\n          y: 12,\n          blur: 40,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-primary)/0.18)\",\n          spread: 1,\n          blur: 16,\n        },\n        noiseOpacity: 0.06,\n        highlightOpacity: 0.25,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level4: {\n        backdropBlur: { px: 40 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-primary)/0.34) 0%, hsl(var(--glass-color-primary)/0.21) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-primary)/0.50)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-primary)/0.30)\",\n          x: 0,\n          y: 16,\n          blur: 48,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-primary)/0.20)\",\n          spread: 1,\n          blur: 20,\n        },\n        noiseOpacity: 0.08,\n        highlightOpacity: 0.28,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level5: {\n        backdropBlur: { px: 48 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-primary)/0.38) 0%, hsl(var(--glass-color-primary)/0.24) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-primary)/0.55)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-primary)/0.34)\",\n          x: 0,\n          y: 20,\n          blur: 56,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-primary)/0.22)\",\n          spread: 2,\n          blur: 24,\n        },\n        noiseOpacity: 0.10,\n        highlightOpacity: 0.32,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n    },\n    success: {\n      level1: {\n        backdropBlur: { px: 16 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(34,197,94,0.20) 0%, rgba(22,163,74,0.12) 100%)\",\n        },\n        border: { color: \"rgba(34,197,94,0.35)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(34,197,94,0.16)\",\n          x: 0,\n          y: 4,\n          blur: 24,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(34,197,94,0.12)\", spread: 0, blur: 8 },\n        noiseOpacity: 0.03,\n        highlightOpacity: 0.18,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level2: {\n        backdropBlur: { px: 24 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(34,197,94,0.24) 0%, rgba(22,163,74,0.15) 100%)\",\n        },\n        border: { color: \"rgba(34,197,94,0.40)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(34,197,94,0.20)\",\n          x: 0,\n          y: 8,\n          blur: 32,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(34,197,94,0.14)\", spread: 0, blur: 12 },\n        noiseOpacity: 0.05,\n        highlightOpacity: 0.22,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level3: {\n        backdropBlur: { px: 32 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(34,197,94,0.28) 0%, rgba(22,163,74,0.18) 100%)\",\n        },\n        border: { color: \"rgba(34,197,94,0.45)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(34,197,94,0.24)\",\n          x: 0,\n          y: 12,\n          blur: 40,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(34,197,94,0.16)\", spread: 1, blur: 16 },\n        noiseOpacity: 0.06,\n        highlightOpacity: 0.25,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level4: {\n        backdropBlur: { px: 40 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(34,197,94,0.32) 0%, rgba(22,163,74,0.21) 100%)\",\n        },\n        border: { color: \"rgba(34,197,94,0.50)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(34,197,94,0.28)\",\n          x: 0,\n          y: 16,\n          blur: 48,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(34,197,94,0.18)\", spread: 1, blur: 20 },\n        noiseOpacity: 0.08,\n        highlightOpacity: 0.28,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level5: {\n        backdropBlur: { px: 48 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(34,197,94,0.36) 0%, rgba(22,163,74,0.24) 100%)\",\n        },\n        border: { color: \"rgba(34,197,94,0.55)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(34,197,94,0.32)\",\n          x: 0,\n          y: 20,\n          blur: 56,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(34,197,94,0.20)\", spread: 2, blur: 24 },\n        noiseOpacity: 0.10,\n        highlightOpacity: 0.32,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n    },\n    warning: {\n      level1: {\n        backdropBlur: { px: 16 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-warning)/0.20) 0%, rgba(217,119,6,0.12) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-warning)/0.35)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-warning)/0.16)\",\n          x: 0,\n          y: 4,\n          blur: 24,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-warning)/0.12)\",\n          spread: 0,\n          blur: 8,\n        },\n        noiseOpacity: 0.03,\n        highlightOpacity: 0.18,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level2: {\n        backdropBlur: { px: 24 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-warning)/0.24) 0%, rgba(217,119,6,0.15) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-warning)/0.40)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-warning)/0.20)\",\n          x: 0,\n          y: 8,\n          blur: 32,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-warning)/0.14)\",\n          spread: 0,\n          blur: 12,\n        },\n        noiseOpacity: 0.05,\n        highlightOpacity: 0.22,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level3: {\n        backdropBlur: { px: 32 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-warning)/0.28) 0%, rgba(217,119,6,0.18) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-warning)/0.45)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-warning)/0.24)\",\n          x: 0,\n          y: 12,\n          blur: 40,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-warning)/0.16)\",\n          spread: 1,\n          blur: 16,\n        },\n        noiseOpacity: 0.06,\n        highlightOpacity: 0.25,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level4: {\n        backdropBlur: { px: 40 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-warning)/0.32) 0%, rgba(217,119,6,0.21) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-warning)/0.50)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-warning)/0.28)\",\n          x: 0,\n          y: 16,\n          blur: 48,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-warning)/0.18)\",\n          spread: 1,\n          blur: 20,\n        },\n        noiseOpacity: 0.08,\n        highlightOpacity: 0.28,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level5: {\n        backdropBlur: { px: 48 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-warning)/0.36) 0%, rgba(217,119,6,0.24) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-warning)/0.55)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-warning)/0.32)\",\n          x: 0,\n          y: 20,\n          blur: 56,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-warning)/0.20)\",\n          spread: 2,\n          blur: 24,\n        },\n        noiseOpacity: 0.10,\n        highlightOpacity: 0.32,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n    },\n    danger: {\n      level1: {\n        backdropBlur: { px: 16 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-danger)/0.20) 0%, rgba(220,38,38,0.12) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-danger)/0.35)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-danger)/0.16)\",\n          x: 0,\n          y: 4,\n          blur: 24,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-danger)/0.12)\",\n          spread: 0,\n          blur: 8,\n        },\n        noiseOpacity: 0.03,\n        highlightOpacity: 0.18,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level2: {\n        backdropBlur: { px: 24 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-danger)/0.24) 0%, rgba(220,38,38,0.15) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-danger)/0.40)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-danger)/0.20)\",\n          x: 0,\n          y: 8,\n          blur: 32,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-danger)/0.14)\",\n          spread: 0,\n          blur: 12,\n        },\n        noiseOpacity: 0.05,\n        highlightOpacity: 0.22,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level3: {\n        backdropBlur: { px: 32 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-danger)/0.28) 0%, rgba(220,38,38,0.18) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-danger)/0.45)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-danger)/0.24)\",\n          x: 0,\n          y: 12,\n          blur: 40,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-danger)/0.16)\",\n          spread: 1,\n          blur: 16,\n        },\n        noiseOpacity: 0.06,\n        highlightOpacity: 0.25,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level4: {\n        backdropBlur: { px: 40 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-danger)/0.32) 0%, rgba(220,38,38,0.21) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-danger)/0.50)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-danger)/0.28)\",\n          x: 0,\n          y: 16,\n          blur: 48,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-danger)/0.18)\",\n          spread: 1,\n          blur: 20,\n        },\n        noiseOpacity: 0.08,\n        highlightOpacity: 0.28,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level5: {\n        backdropBlur: { px: 48 },\n        surface: {\n          base: \"linear-gradient(135deg, hsl(var(--glass-color-danger)/0.36) 0%, rgba(220,38,38,0.24) 100%)\",\n        },\n        border: {\n          color: \"hsl(var(--glass-color-danger)/0.55)\",\n          width: 1,\n          style: \"solid\",\n        },\n        outerShadow: {\n          color: \"hsl(var(--glass-color-danger)/0.32)\",\n          x: 0,\n          y: 20,\n          blur: 56,\n          spread: 0,\n        },\n        innerGlow: {\n          color: \"hsl(var(--glass-color-danger)/0.20)\",\n          spread: 2,\n          blur: 24,\n        },\n        noiseOpacity: 0.10,\n        highlightOpacity: 0.32,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n    },\n    info: {\n      level1: {\n        backdropBlur: { px: 16 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(14,165,233,0.20) 0%, rgba(2,132,199,0.12) 100%)\",\n        },\n        border: { color: \"rgba(14,165,233,0.35)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(14,165,233,0.16)\",\n          x: 0,\n          y: 4,\n          blur: 24,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(14,165,233,0.12)\", spread: 0, blur: 8 },\n        noiseOpacity: 0.03,\n        highlightOpacity: 0.18,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level2: {\n        backdropBlur: { px: 24 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(14,165,233,0.24) 0%, rgba(2,132,199,0.15) 100%)\",\n        },\n        border: { color: \"rgba(14,165,233,0.40)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(14,165,233,0.20)\",\n          x: 0,\n          y: 8,\n          blur: 32,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(14,165,233,0.14)\", spread: 0, blur: 12 },\n        noiseOpacity: 0.05,\n        highlightOpacity: 0.22,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level3: {\n        backdropBlur: { px: 32 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(14,165,233,0.28) 0%, rgba(2,132,199,0.18) 100%)\",\n        },\n        border: { color: \"rgba(14,165,233,0.45)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(14,165,233,0.24)\",\n          x: 0,\n          y: 12,\n          blur: 40,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(14,165,233,0.16)\", spread: 1, blur: 16 },\n        noiseOpacity: 0.06,\n        highlightOpacity: 0.25,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level4: {\n        backdropBlur: { px: 40 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(14,165,233,0.32) 0%, rgba(2,132,199,0.21) 100%)\",\n        },\n        border: { color: \"rgba(14,165,233,0.50)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(14,165,233,0.28)\",\n          x: 0,\n          y: 16,\n          blur: 48,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(14,165,233,0.18)\", spread: 1, blur: 20 },\n        noiseOpacity: 0.08,\n        highlightOpacity: 0.28,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n      level5: {\n        backdropBlur: { px: 48 },\n        surface: {\n          base: \"linear-gradient(135deg, rgba(14,165,233,0.36) 0%, rgba(2,132,199,0.24) 100%)\",\n        },\n        border: { color: \"rgba(14,165,233,0.55)\", width: 1, style: \"solid\" },\n        outerShadow: {\n          color: \"rgba(14,165,233,0.32)\",\n          x: 0,\n          y: 20,\n          blur: 56,\n          spread: 0,\n        },\n        innerGlow: { color: \"rgba(14,165,233,0.20)\", spread: 2, blur: 24 },\n        noiseOpacity: 0.10,\n        highlightOpacity: 0.32,\n        text: {\n          primary: \"rgba(255,255,255,0.98)\", // Enhanced contrast for all glass levels\n          secondary: \"rgba(255,255,255,0.88)\", // Enhanced contrast for all glass levels\n        },\n      },\n    },\n  },\n  motion: {\n    defaultMs: 200,\n    enterMs: 150,\n    exitMs: 100,\n  },\n  radii: {\n    sm: 10,\n    md: 16,\n    lg: 24,\n    xl: 32,\n    pill: 9999,\n  },\n  gaps: {\n    xs: 4,\n    sm: 8,\n    md: 16,\n    lg: 24,\n  },\n};\n\n/**\n * Performance tier configurations\n *\n * CRITICAL: Glass is never disabled - only reduced in intensity\n */\nexport const PERFORMANCE_TIERS = {\n  high: {\n    blurMultiplier: 1.0,\n    shadowMultiplier: 1.0,\n    saturateMultiplier: 1.0,\n    enableGlow: true,\n    enableNoise: true,\n  },\n  medium: {\n    blurMultiplier: 0.75, // Reduce blur by 25%\n    shadowMultiplier: 0.8, // Reduce shadows by 20%\n    saturateMultiplier: 0.9, // Reduce saturation slightly\n    enableGlow: true,\n    enableNoise: false,\n  },\n  low: {\n    blurMultiplier: 0.5, // Reduce blur by 50%\n    shadowMultiplier: 0.6, // Reduce shadows by 40%\n    saturateMultiplier: 0.8, // Reduce saturation more\n    enableGlow: false,\n    enableNoise: false,\n  },\n  auto: {\n    // Will be determined at runtime based on device capabilities\n    blurMultiplier: 1.0,\n    shadowMultiplier: 1.0,\n    saturateMultiplier: 1.0,\n    enableGlow: true,\n    enableNoise: true,\n  },\n} as const;\n\n/**\n * Utility functions for consuming tokens\n */\nexport const glassTokenUtils = {\n  /**\n   * Get surface specification for intent and elevation\n   */\n  getSurface: (\n    intent: GlassIntent,\n    elevation: GlassElevation\n  ): GlassSurfaceSpec => {\n    return AURA_GLASS.surfaces[intent][elevation];\n  },\n\n  /**\n   * Get performance-adjusted blur value\n   */\n  getPerformanceBlur: (baseBlur: number, tier: QualityTier): number => {\n    const config = PERFORMANCE_TIERS[tier];\n    return Math.max(2, Math.round(baseBlur * config.blurMultiplier)); // Never below 2px\n  },\n\n  /**\n   * Validate contrast ratio for text over surface\n   */\n  validateTextContrast: (textColor: string, surfaceColor: string): boolean => {\n    // Implementation would calculate actual contrast ratio\n    // For now, we ensure our predefined values meet WCAG AA\n    return true; // Our defined colors all meet 4.5:1 contrast\n  },\n\n  /**\n   * Generate CSS backdrop-filter string\n   */\n  buildBackdropFilter: (blur: number, tier: QualityTier): string => {\n    const performanceBlur = glassTokenUtils.getPerformanceBlur(blur, tier);\n    const config = PERFORMANCE_TIERS[tier];\n\n    const parts = [`blur(${performanceBlur}px)`];\n\n    // Heavy saturation is what lets the backdrop's color bleed through the\n    // frost \u2014 the signature liquid-glass quality. Brightness/contrast stay\n    // near 1 so labels never wash out.\n    const saturate =\n      Math.round(1.8 * config.saturateMultiplier * 100) / 100;\n    parts.push(`saturate(${saturate})`);\n    parts.push(\"brightness(1.05)\");\n    parts.push(\"contrast(1.05)\");\n\n    return parts.join(\" \");\n  },\n\n  /**\n   * Build complete surface styles from token specification\n   */\n  buildSurfaceStyles: (\n    intent: GlassIntent,\n    elevation: GlassElevation,\n    tier: QualityTier = \"high\"\n  ) => {\n    const surface = glassTokenUtils.getSurface(intent, elevation);\n    const config = PERFORMANCE_TIERS[tier];\n    const backdropFilter = glassTokenUtils.buildBackdropFilter(\n      surface.backdropBlur.px,\n      tier\n    );\n\n    const BACKDROP_FILTER_PROP = \"backdropFilter\" as const;\n    const WEBKIT_BACKDROP_FILTER_PROP = \"WebkitBackdropFilter\" as const;\n\n    // Compose outer shadow with the inset top-edge highlight and inner glow.\n    // The 1px inset highlight is what reads as a polished glass edge catching\n    // light \u2014 without it surfaces look like flat tinted panels.\n    const shadowParts: string[] = [];\n    if (surface.outerShadow) {\n      shadowParts.push(\n        `${surface.outerShadow.x}px ${surface.outerShadow.y}px ${Math.round(surface.outerShadow.blur * config.shadowMultiplier)}px ${surface.outerShadow.spread}px ${surface.outerShadow.color}`\n      );\n    }\n    if (surface.highlightOpacity) {\n      shadowParts.push(\n        `inset 0 1px 0 rgba(255,255,255,${surface.highlightOpacity})`\n      );\n    }\n    if (config.enableGlow && surface.innerGlow) {\n      shadowParts.push(\n        `inset 0 0 ${surface.innerGlow.blur}px ${surface.innerGlow.color}`\n      );\n    }\n\n    return {\n      background: surface.surface.base,\n      backgroundColor: surface.surface.overlay ?? undefined,\n      [BACKDROP_FILTER_PROP]: backdropFilter,\n      [WEBKIT_BACKDROP_FILTER_PROP]: backdropFilter,\n      \"--glass-text-primary\": surface.text.primary,\n      \"--glass-text-secondary\": surface.text.secondary,\n      \"--typography-text-primary\": surface.text.primary,\n      \"--typography-text-secondary\": surface.text.secondary,\n      // Use createGlassStyle() instead,\n      // Use createGlassStyle() instead,\n      border: `${surface.border.width}px ${surface.border.style} ${surface.border.color}`,\n      borderRadius: `${AURA_GLASS.radii.md}px`,\n      boxShadow: shadowParts.length > 0 ? shadowParts.join(\", \") : \"none\",\n      color: \"var(--glass-text-primary)\",\n      transition: `all ${AURA_GLASS.motion.defaultMs}ms ease-out`,\n      position: \"relative\" as const,\n      transform: \"translateZ(0)\",\n    };\n  },\n};\n\n// Export the canonical tokens as default\nexport default AURA_GLASS;\n\n// Legacy glassTokens structure for backward compatibility\nexport const glassTokens = {\n  // Elevation levels\n  elevation: {\n    level1: {\n      boxShadow: \"0 4px 16px rgba(0, 0, 0, 0.15)\",\n      zIndex: 1,\n    },\n    level2: {\n      boxShadow: \"0 8px 24px rgba(0, 0, 0, 0.2)\",\n      zIndex: 10,\n    },\n    level3: {\n      boxShadow: \"0 12px 32px rgba(0, 0, 0, 0.25)\",\n      zIndex: 100,\n    },\n    level4: {\n      boxShadow: \"0 16px 40px rgba(0, 0, 0, 0.3)\",\n      zIndex: 1000,\n    },\n  },\n\n  // Backdrop blur values\n  backdrop: {\n    none: \"none\",\n    subtle: \"blur(4px)\",\n    medium: \"blur(8px)\",\n    strong: \"blur(16px)\",\n    intense: \"blur(24px)\",\n  },\n\n  // Gradient patterns\n  gradients: {\n    primary:\n      \"linear-gradient(135deg, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0.15) 100%)\",\n    secondary:\n      \"linear-gradient(135deg, hsl(var(--glass-color-primary)/0.2) 0%, hsl(var(--glass-color-primary)/0.1) 100%)\",\n    primaryRadial:\n      \"radial-gradient(circle at center, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0.1) 100%)\",\n    mesh: \"linear-gradient(45deg, rgba(255,255,255,0.1) 25%, transparent 25%), linear-gradient(-45deg, rgba(255,255,255,0.1) 25%, transparent 25%)\",\n    iridescent:\n      \"linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4, #ffeaa7)\",\n    rainbow:\n      \"linear-gradient(45deg, #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #4b0082, #9400d3)\",\n  },\n\n  // Border styles\n  border: {\n    primary: \"rgba(255,255,255,0.4)\",\n    secondary: \"rgba(255,255,255,0.3)\",\n    subtle: \"rgba(255,255,255,0.2)\",\n    gradient: {\n      rainbow: \"linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4)\",\n    },\n  },\n\n  // Surface colors\n  surface: {\n    primary: \"rgba(255,255,255,0.25)\",\n    secondary: \"rgba(255,255,255,0.15)\",\n    success: \"rgba(34,197,94,0.25)\",\n    warning: \"hsl(var(--glass-color-warning)/0.25)\",\n    error: \"hsl(var(--glass-color-danger)/0.25)\",\n    dark: \"rgba(0,0,0,0.25)\",\n    darkSubtle: \"rgba(0,0,0,0.15)\",\n  },\n\n  // Noise patterns\n  noise: {\n    subtle:\n      'url(\"data:image/svg+xml,%3Csvg viewBox=\"0 0 256 256\" xmlns=\"http://www.w3.org/2000/svg\"%3E%3Cfilter id=\"noiseFilter\"%3E%3CfeTurbulence type=\"fractalNoise\" baseFrequency=\"0.9\" numOctaves=\"4\" stitchTiles=\"stitch\"/%3E%3C/filter%3E%3Crect width=\"100%25\" height=\"100%25\" filter=\"url(%23noiseFilter)\"/%3E%3C/svg%3E\")',\n  },\n\n  // Glow effects\n  glow: {\n    primary: \"hsl(var(--glass-color-primary)/0.6)\",\n    secondary: \"rgba(147,51,234,0.6)\",\n    success: \"rgba(34,197,94,0.6)\",\n    warning: \"hsl(var(--glass-color-warning)/0.6)\",\n    error: \"hsl(var(--glass-color-danger)/0.6)\",\n  },\n};\n\n// Alias for backward compatibility\nexport const glassUtils = glassTokenUtils;\n\n/**\n * ========================================\n * LIQUID GLASS EXTENSIONS - Apple Parity\n * ========================================\n *\n * Extended tokens for Liquid Glass material system\n * Provides dynamic material properties, environmental adaptation,\n * and enhanced visual effects to match Apple's implementation.\n */\n\n// Liquid Glass Material Types\nexport type LiquidGlassMaterial = \"standard\" | \"liquid\";\nexport type MaterialVariant = \"regular\" | \"clear\";\nexport type TintMode = \"auto\" | \"light\" | \"dark\" | \"adaptive\";\nexport type SheenIntensity = 0 | 1 | 2 | 3;\n\n// Enhanced material specification for Liquid Glass\nexport interface LiquidGlassSurfaceSpec extends GlassSurfaceSpec {\n  // Core material properties\n  ior: number; // Index of refraction (1.0-2.0)\n  thickness: number; // Visual depth in px (0-8)\n  sheen: SheenIntensity; // Edge sheen intensity\n  variant: MaterialVariant; // Regular or Clear transparency\n\n  // Environmental adaptation\n  tintMode: TintMode; // Content-aware tinting mode\n  adaptiveOpacity: { min: number; max: number }; // Dynamic transparency range\n  contrastGuard: { enabled: boolean; minRatio: number }; // Accessibility enforcement\n\n  // Motion responsiveness\n  motionSensitivity: number; // 0-1 response to motion/scroll\n  microInteractions: boolean; // Enable subtle hover/focus effects\n\n  // Advanced effects\n  refraction: { enabled: boolean; intensity: number }; // Screen-space refraction\n  reflection: { enabled: boolean; intensity: number }; // Environmental reflections\n  parallax: { enabled: boolean; depth: number }; // Thickness parallax\n}\n\n// Liquid Glass token extensions\nexport interface LiquidGlassTokens extends AuraGlassTokens {\n  // Material physics\n  material: {\n    ior: {\n      glass: 1.52; // Standard glass\n      crystal: 1.76; // Enhanced clarity\n      liquid: 1.33; // Water-like fluidity\n      diamond: 2.42; // Maximum refraction\n    };\n    thickness: {\n      hairline: 1; // Minimal depth\n      thin: 2; // Subtle depth\n      medium: 4; // Standard depth\n      thick: 6; // Enhanced depth\n      ultra: 8; // Maximum depth\n    };\n    sheen: {\n      none: 0;\n      subtle: 1; // Gentle edge highlight\n      medium: 2; // Noticeable edge effect\n      intense: 3; // Strong refractive edge\n    };\n  };\n\n  // Material variants with different transparency levels\n  variants: {\n    regular: {\n      opacity: { base: 0.85; hover: 0.9; active: 0.95 };\n      blur: { multiplier: 1.0 }; // Standard blur\n      contrast: { minRatio: 4.5 }; // WCAG AA\n    };\n    clear: {\n      opacity: { base: 0.65; hover: 0.75; active: 0.85 };\n      blur: { multiplier: 1.2 }; // Enhanced blur for readability\n      contrast: { minRatio: 7.0 }; // WCAG AAA for high transparency\n    };\n  };\n\n  // Content-aware tinting system\n  tinting: {\n    auto: {\n      lightThreshold: 0.6; // Luminance threshold for light/dark detection\n      contrastBoost: 0.15; // Additional contrast for readability\n      saturationAdjust: 0.1; // Subtle color temperature shift\n    };\n    adaptive: {\n      samplingRadius: 32; // Backdrop sampling area (px)\n      updateThrottle: 100; // Update frequency (ms)\n      transitionDuration: 200; // Smooth transition time (ms)\n    };\n  };\n\n  // Enhanced motion system for fluidity\n  motionFluency: {\n    // Micro-interactions\n    hover: { duration: 120; easing: \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\" };\n    press: { duration: 80; easing: \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\" };\n    focus: { duration: 150; easing: \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\" };\n\n    // Environmental responses\n    scroll: { sensitivity: 0.3; maxShift: 2 }; // Subtle parallax on scroll\n    tilt: { sensitivity: 0.1; maxTilt: 1 }; // Device orientation response\n    ambient: { duration: 4000; intensity: 0.05 }; // Breathing effect\n  };\n\n  // Performance optimization presets\n  performance: {\n    ultra: {\n      enableRefraction: true;\n      enableReflection: true;\n      enableParallax: true;\n      enableMicroInteractions: true;\n      sampleRate: 60; // 60fps target\n    };\n    high: {\n      enableRefraction: true;\n      enableReflection: true;\n      enableParallax: false;\n      enableMicroInteractions: true;\n      sampleRate: 60;\n    };\n    balanced: {\n      enableRefraction: true;\n      enableReflection: false;\n      enableParallax: false;\n      enableMicroInteractions: true;\n      sampleRate: 30;\n    };\n    efficient: {\n      enableRefraction: false;\n      enableReflection: false;\n      enableParallax: false;\n      enableMicroInteractions: false;\n      sampleRate: 30;\n    };\n  };\n\n  // System-level Liquid Glass behavior tokens\n  system: {\n    scrollEdge: {\n      soft: { size: 32; blur: 10; opacity: 0.2 };\n      hard: { size: 44; blur: 16; opacity: 0.32 };\n      transitionMs: 160;\n    };\n    concentric: {\n      inset: { compact: 6; comfortable: 10; spacious: 14 };\n      fallbackRadius: 8;\n    };\n    layer: {\n      maxRecommendedDepth: 1;\n      warningDepth: 2;\n      zBase: 100;\n    };\n    clearDimming: {\n      subtle: 0.16;\n      standard: 0.22;\n      strong: 0.32;\n    };\n    group: {\n      spacing: { tight: 6; regular: 12; loose: 18 };\n      blendStrength: 0.72;\n    };\n    density: {\n      compact: 0.86;\n      comfortable: 0.92;\n      spacious: 1;\n    };\n    illumination: {\n      hover: 0.12;\n      press: 0.18;\n      focus: 0.16;\n    };\n    reducedMotion: {\n      transitionMs: 1;\n      disableParallax: true;\n      disableShimmer: true;\n    };\n  };\n}\n\n/**\n * LIQUID GLASS CANONICAL TOKENS\n * Extended version of AURA_GLASS with Liquid Glass properties\n */\nexport const LIQUID_GLASS: LiquidGlassTokens = {\n  // Inherit all base AURA_GLASS tokens\n  ...AURA_GLASS,\n\n  // Extended material physics\n  material: {\n    ior: {\n      glass: 1.52,\n      crystal: 1.76,\n      liquid: 1.33,\n      diamond: 2.42,\n    },\n    thickness: {\n      hairline: 1,\n      thin: 2,\n      medium: 4,\n      thick: 6,\n      ultra: 8,\n    },\n    sheen: {\n      none: 0,\n      subtle: 1,\n      medium: 2,\n      intense: 3,\n    },\n  },\n\n  // Material variants\n  variants: {\n    regular: {\n      opacity: { base: 0.85, hover: 0.9, active: 0.95 },\n      blur: { multiplier: 1.0 },\n      contrast: { minRatio: 4.5 },\n    },\n    clear: {\n      opacity: { base: 0.65, hover: 0.75, active: 0.85 },\n      blur: { multiplier: 1.2 },\n      contrast: { minRatio: 7.0 },\n    },\n  },\n\n  // Content-aware tinting\n  tinting: {\n    auto: {\n      lightThreshold: 0.6,\n      contrastBoost: 0.15,\n      saturationAdjust: 0.1,\n    },\n    adaptive: {\n      samplingRadius: 32,\n      updateThrottle: 100,\n      transitionDuration: 200,\n    },\n  },\n\n  // Enhanced motion fluency\n  motionFluency: {\n    hover: { duration: 120, easing: \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\" },\n    press: { duration: 80, easing: \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\" },\n    focus: { duration: 150, easing: \"cubic-bezier(0.25, 0.46, 0.45, 0.94)\" },\n    scroll: { sensitivity: 0.3, maxShift: 2 },\n    tilt: { sensitivity: 0.1, maxTilt: 1 },\n    ambient: { duration: 4000, intensity: 0.05 },\n  },\n\n  // Performance presets\n  performance: {\n    ultra: {\n      enableRefraction: true,\n      enableReflection: true,\n      enableParallax: true,\n      enableMicroInteractions: true,\n      sampleRate: 60,\n    },\n    high: {\n      enableRefraction: true,\n      enableReflection: true,\n      enableParallax: false,\n      enableMicroInteractions: true,\n      sampleRate: 60,\n    },\n    balanced: {\n      enableRefraction: true,\n      enableReflection: false,\n      enableParallax: false,\n      enableMicroInteractions: true,\n      sampleRate: 30,\n    },\n    efficient: {\n      enableRefraction: false,\n      enableReflection: false,\n      enableParallax: false,\n      enableMicroInteractions: false,\n      sampleRate: 30,\n    },\n  },\n\n  // System-level behavior tokens\n  system: {\n    scrollEdge: {\n      soft: { size: 32, blur: 10, opacity: 0.2 },\n      hard: { size: 44, blur: 16, opacity: 0.32 },\n      transitionMs: 160,\n    },\n    concentric: {\n      inset: { compact: 6, comfortable: 10, spacious: 14 },\n      fallbackRadius: 8,\n    },\n    layer: {\n      maxRecommendedDepth: 1,\n      warningDepth: 2,\n      zBase: 100,\n    },\n    clearDimming: {\n      subtle: 0.16,\n      standard: 0.22,\n      strong: 0.32,\n    },\n    group: {\n      spacing: { tight: 6, regular: 12, loose: 18 },\n      blendStrength: 0.72,\n    },\n    density: {\n      compact: 0.86,\n      comfortable: 0.92,\n      spacious: 1,\n    },\n    illumination: {\n      hover: 0.12,\n      press: 0.18,\n      focus: 0.16,\n    },\n    reducedMotion: {\n      transitionMs: 1,\n      disableParallax: true,\n      disableShimmer: true,\n    },\n  },\n};\n\n/**\n * Enhanced utility functions for Liquid Glass\n */\nexport const liquidGlassUtils = {\n  ...glassTokenUtils,\n\n  /**\n   * Get Liquid Glass material specification\n   */\n  getLiquidSurface: (\n    intent: GlassIntent,\n    elevation: GlassElevation,\n    material: LiquidGlassMaterial = \"standard\",\n    variant: MaterialVariant = \"regular\"\n  ): LiquidGlassSurfaceSpec => {\n    const baseSurface = glassTokenUtils.getSurface(intent, elevation);\n\n    if (material === \"standard\") {\n      // Return enhanced base surface with minimal liquid properties\n      return {\n        ...baseSurface,\n        ior: LIQUID_GLASS.material.ior.glass,\n        thickness: LIQUID_GLASS.material.thickness.thin,\n        sheen: LIQUID_GLASS.material.sheen.none,\n        variant: \"regular\",\n        tintMode: \"auto\",\n        adaptiveOpacity: {\n          min: LIQUID_GLASS.variants.regular.opacity.base,\n          max: LIQUID_GLASS.variants.regular.opacity.active,\n        },\n        contrastGuard: { enabled: true, minRatio: 4.5 },\n        motionSensitivity: 0.1,\n        microInteractions: false,\n        refraction: { enabled: false, intensity: 0 },\n        reflection: { enabled: false, intensity: 0 },\n        parallax: { enabled: false, depth: 0 },\n      };\n    }\n\n    // Full Liquid Glass specification\n    const variantSpec = LIQUID_GLASS.variants[variant];\n    return {\n      ...baseSurface,\n      ior: LIQUID_GLASS.material.ior.liquid,\n      thickness: LIQUID_GLASS.material.thickness.medium,\n      sheen: LIQUID_GLASS.material.sheen.subtle,\n      variant,\n      tintMode: \"adaptive\",\n      adaptiveOpacity: {\n        min: variantSpec.opacity.base,\n        max: variantSpec.opacity.active,\n      },\n      contrastGuard: { enabled: true, minRatio: variantSpec.contrast.minRatio },\n      motionSensitivity: 0.7,\n      microInteractions: true,\n      refraction: { enabled: true, intensity: 0.8 },\n      reflection: { enabled: true, intensity: 0.6 },\n      parallax: {\n        enabled: true,\n        depth: LIQUID_GLASS.material.thickness.medium,\n      },\n    };\n  },\n\n  /**\n   * Calculate backdrop luminance for content-aware tinting\n   */\n  sampleBackdropLuminance: (element: HTMLElement): number => {\n    if (typeof window === \"undefined\" || !element) return 0.5;\n\n    // In a real implementation, this would sample the backdrop\n    // For now, return a reasonable default\n    return 0.5;\n  },\n\n  /**\n   * Generate content-aware tint color based on backdrop\n   */\n  generateAdaptiveTint: (\n    backdropLuminance: number,\n    intent: GlassIntent = \"neutral\"\n  ): string => {\n    const { lightThreshold, contrastBoost, saturationAdjust } =\n      LIQUID_GLASS.tinting.auto;\n\n    const isLightBackdrop = backdropLuminance > lightThreshold;\n    const baseSurface = glassTokenUtils.getSurface(intent, \"level2\");\n\n    if (isLightBackdrop) {\n      // Dark tint for light backgrounds\n      return `rgba(0, 0, 0, ${0.15 + contrastBoost})`;\n    } else {\n      // Light tint for dark backgrounds\n      return `rgba(255, 255, 255, ${0.25 + contrastBoost})`;\n    }\n  },\n\n  /**\n   * Build complete Liquid Glass styles with environmental adaptation\n   */\n  buildLiquidGlassStyles: (\n    intent: GlassIntent,\n    elevation: GlassElevation,\n    material: LiquidGlassMaterial = \"liquid\",\n    variant: MaterialVariant = \"regular\",\n    performanceLevel: keyof LiquidGlassTokens[\"performance\"] = \"high\"\n  ) => {\n    const liquidSurface = liquidGlassUtils.getLiquidSurface(\n      intent,\n      elevation,\n      material,\n      variant\n    );\n    const performance = LIQUID_GLASS.performance[performanceLevel];\n    const baseStyles = glassTokenUtils.buildSurfaceStyles(\n      intent,\n      elevation,\n      \"high\"\n    );\n    const {\n      backgroundColor: _backgroundColor,\n      color: _color,\n      ...baseStylesWithoutColorConflict\n    } = baseStyles;\n\n    return {\n      ...baseStylesWithoutColorConflict,\n\n      // Enhanced backdrop filter with IOR simulation\n      // Use createGlassStyle() instead,\n\n      // Adaptive surface with environmental tinting\n      background:\n        material === \"liquid\" && liquidSurface.tintMode === \"adaptive\"\n          ? `${liquidSurface.surface.base}, linear-gradient(135deg, rgba(255,255,255,${liquidSurface.adaptiveOpacity.min * 0.3}) 0%, transparent 100%)`\n          : liquidSurface.surface.base,\n\n      // Enhanced transitions for micro-interactions\n      transition: performance.enableMicroInteractions\n        ? `all ${LIQUID_GLASS.motionFluency.hover.duration}ms ${LIQUID_GLASS.motionFluency.hover.easing}, transform ${LIQUID_GLASS.motionFluency.press.duration}ms ${LIQUID_GLASS.motionFluency.press.easing}`\n        : baseStyles.transition,\n\n      // Thickness-based box shadow enhancement\n      boxShadow:\n        liquidSurface.thickness > 2\n          ? `${baseStyles.boxShadow}, inset 0 1px ${liquidSurface.thickness}px rgba(255,255,255,${0.12 + liquidSurface.sheen * 0.06})`\n          : baseStyles.boxShadow,\n\n      // Performance optimizations\n      willChange: performance.enableMicroInteractions\n        ? \"transform, opacity, backdrop-filter\"\n        : \"auto\",\n      contain: \"layout style paint\",\n    };\n  },\n\n  /**\n   * Validate contrast compliance for Liquid Glass\n   */\n  validateLiquidContrast: (\n    intent: GlassIntent,\n    variant: MaterialVariant,\n    backdropLuminance: number\n  ): boolean => {\n    const variantSpec = LIQUID_GLASS.variants[variant];\n    const requiredRatio = variantSpec.contrast.minRatio;\n\n    // In a real implementation, this would calculate actual contrast\n    // For now, we trust our predefined values meet requirements\n    return true;\n  },\n};\n\n// Types are exported individually above\n", "import { CSSProperties } from \"react\";\nimport { detectDevice } from \"../../utils/deviceCapabilities\";\nimport { getSafeNavigator, safeMatchMedia } from \"../../utils/env\";\nimport {\n  AURA_GLASS,\n  PERFORMANCE_TIERS,\n  glassTokenUtils,\n  GlassIntent,\n  GlassElevation,\n  QualityTier,\n} from \"../../tokens/glass\";\n\nexport interface GlassOptions {\n  intent?: GlassIntent;\n  elevation?: GlassElevation;\n  tier?: QualityTier;\n  interactive?: boolean;\n  hoverLift?: boolean;\n  focusRing?: boolean;\n  press?: boolean;\n}\n\nexport interface LegacyGlassMixinOptions {\n  interactive?: boolean;\n  variant?: \"primary\" | \"success\" | \"warning\" | \"error\" | \"info\" | string;\n  elevation?: 1 | 2 | 3 | 4 | number;\n}\n\ninterface NavigatorWithConnection extends Navigator {\n  connection?: {\n    effectiveType?: string;\n  };\n}\n\ntype MutableGlassStyle = CSSProperties & {\n  WebkitBackdropFilter?: string;\n};\n\n/**\n * SINGLE PUBLIC API - Creates glass styles from canonical tokens\n *\n * This is the ONLY way to create glass styles going forward.\n * All other methods are deprecated.\n */\nexport function createGlassStyle(opts: GlassOptions = {}): CSSProperties {\n  const {\n    intent = \"neutral\",\n    elevation = \"level2\",\n    tier = \"high\",\n    interactive = false,\n    hoverLift = false,\n    focusRing = false,\n    press = false,\n  } = opts;\n\n  // Get the base styles from canonical tokens\n  const styles = glassTokenUtils.buildSurfaceStyles(\n    intent,\n    elevation,\n    tier\n  ) as MutableGlassStyle;\n\n  if (!styles.backdropFilter) {\n    const surface = glassTokenUtils.getSurface(intent, elevation);\n    const fallbackFilter = glassTokenUtils.buildBackdropFilter(\n      surface.backdropBlur.px,\n      tier\n    );\n    styles.backdropFilter = fallbackFilter;\n    styles.WebkitBackdropFilter = fallbackFilter;\n  }\n\n  if (!styles.background) {\n    const surface = glassTokenUtils.getSurface(intent, elevation);\n    styles.background = surface.surface.base;\n  }\n\n  // Add interactive enhancements if requested\n  if (interactive) {\n    styles.cursor = \"pointer\";\n    styles.userSelect = \"none\";\n\n    // Interactive surfaces get slightly enhanced shadows by default\n    if (styles.boxShadow && styles.boxShadow !== \"none\") {\n      styles.transition = `all ${AURA_GLASS.motion.defaultMs}ms ease-out, transform ${AURA_GLASS.motion.defaultMs}ms ease-out`;\n    }\n  }\n\n  // Add hover lift capability (transform applied via CSS :hover)\n  if (hoverLift) {\n    styles.transition = `${styles.transition || \"all 200ms ease-out\"}, transform ${AURA_GLASS.motion.defaultMs}ms ease-out`;\n  }\n\n  // Add focus ring capability (applied via CSS :focus-visible)\n  if (focusRing) {\n    // The actual focus ring is applied via CSS, but we ensure transitions are smooth\n    styles.transition = `${styles.transition || \"all 200ms ease-out\"}, box-shadow ${AURA_GLASS.motion.defaultMs}ms ease-out`;\n  }\n\n  // Add press effect capability (applied via CSS :active)\n  if (press) {\n    // The actual press effect is applied via CSS, but we ensure transitions are smooth\n    styles.transition = `${styles.transition || \"all 200ms ease-out\"}, transform ${AURA_GLASS.motion.defaultMs}ms ease-out`;\n  }\n\n  return styles;\n}\n\n/**\n * DEPRECATED: Legacy API support - will be removed in next version\n * @deprecated Use createGlassStyle() instead\n */\nexport function createGlassMixin(\n  options: LegacyGlassMixinOptions = {}\n): CSSProperties {\n  // Map old options to new options\n  const newOptions: GlassOptions = {\n    intent: \"neutral\",\n    elevation: \"level2\",\n    tier: \"high\",\n    interactive: options.interactive || false,\n  };\n\n  // Basic variant mapping\n  if (options.variant === \"primary\") newOptions.intent = \"primary\";\n  if (options.variant === \"success\") newOptions.intent = \"success\";\n  if (options.variant === \"warning\") newOptions.intent = \"warning\";\n  if (options.variant === \"error\") newOptions.intent = \"danger\";\n  if (options.variant === \"info\") newOptions.intent = \"info\";\n\n  // Basic elevation mapping\n  if (options.elevation === 1) newOptions.elevation = \"level1\";\n  if (options.elevation === 2) newOptions.elevation = \"level2\";\n  if (options.elevation === 3) newOptions.elevation = \"level3\";\n  if (options.elevation === 4) newOptions.elevation = \"level4\";\n\n  return createGlassStyle(newOptions);\n}\n\n/**\n * DEPRECATED: Legacy hover mixin\n * @deprecated Use CSS :hover with createGlassStyle({ hoverLift: true })\n */\nexport function createGlassHoverMixin(\n  options: LegacyGlassMixinOptions = {}\n): CSSProperties {\n  return {\n    transform: \"translateY(-2px) scale(1.01)\",\n    boxShadow: \"0 12px 40px rgba(0,0,0,0.3)\",\n  };\n}\n\n/**\n * DEPRECATED: Legacy focus mixin\n * @deprecated Use CSS :focus-visible with createGlassStyle({ focusRing: true })\n */\nexport function createGlassFocusMixin(\n  options: LegacyGlassMixinOptions = {}\n): CSSProperties {\n  return {\n    outline: \"none\",\n    boxShadow: \"0 0 0 3px hsl(var(--glass-color-primary)/0.3)\",\n  };\n}\n\n/**\n * DEPRECATED: Legacy disabled mixin\n * @deprecated Use CSS :disabled with reduced opacity\n */\nexport function createGlassDisabledMixin(): CSSProperties {\n  return {\n    opacity: 0.6,\n    cursor: \"not-allowed\",\n    pointerEvents: \"none\",\n  };\n}\n\n/**\n * DEPRECATED: Legacy loading mixin\n * @deprecated Use modern loading UI patterns\n */\nexport function createGlassLoadingMixin(): CSSProperties {\n  return {\n    position: \"relative\",\n    overflow: \"hidden\",\n  };\n}\n\n/**\n * Utility: Generate CSS custom properties for dynamic theming\n * This creates CSS variables that can be overridden at runtime\n */\nexport function generateGlassThemeVariables(\n  options: {\n    intent?: GlassIntent;\n    elevation?: GlassElevation;\n  } = {}\n): Record<string, string> {\n  const { intent = \"neutral\", elevation = \"level2\" } = options;\n\n  const surface = glassTokenUtils.getSurface(intent, elevation);\n\n  return {\n    \"--glass-surface\": surface.surface.base,\n    \"--glass-border-color\": surface.border.color,\n    \"--glass-border-width\": `${surface.border.width}px`,\n    \"--glass-blur\": `${surface.backdropBlur.px}px`,\n    \"--glass-text-primary\": surface.text.primary,\n    \"--glass-text-secondary\": surface.text.secondary,\n    \"--glass-shadow\": surface.outerShadow\n      ? `${surface.outerShadow.x}px ${surface.outerShadow.y}px ${surface.outerShadow.blur}px ${surface.outerShadow.spread}px ${surface.outerShadow.color}`\n      : \"none\",\n    \"--glass-radius\": `${AURA_GLASS.radii.md}px`,\n    \"--glass-transition\": `all ${AURA_GLASS.motion.defaultMs}ms ease-out`,\n  };\n}\n\n/**\n * Utility: Create responsive glass styles for different screen sizes\n *\n * Returns CSS properties optimized for different performance tiers\n * based on typical device capabilities.\n */\nexport function createResponsiveGlassStyle(\n  mobile: GlassOptions,\n  tablet: GlassOptions,\n  desktop: GlassOptions\n): Record<string, CSSProperties> {\n  return {\n    // Mobile: use low tier for better performance\n    mobile: createGlassStyle({ ...mobile, tier: \"low\" }),\n    // Tablet: use medium tier for balanced experience\n    tablet: createGlassStyle({ ...tablet, tier: \"medium\" }),\n    // Desktop: use high tier for full experience\n    desktop: createGlassStyle({ ...desktop, tier: \"high\" }),\n  };\n}\n\n/**\n * Performance helper: Detect if device supports high-quality glass\n */\nexport function canUseHighQualityGlass(): boolean {\n  if (typeof window === \"undefined\") return true;\n\n  const cssSupports =\n    typeof CSS !== \"undefined\" && typeof CSS.supports === \"function\"\n      ? CSS.supports.bind(CSS)\n      : undefined;\n\n  if (!cssSupports) return false;\n\n  if (safeMatchMedia(\"(prefers-reduced-transparency: reduce)\")?.matches) {\n    return false;\n  }\n\n  // Check for backdrop-filter support\n  const supportsBackdropFilter =\n    cssSupports(\"backdrop-filter\", \"blur(1px)\") ||\n    cssSupports(\"-webkit-backdrop-filter\", \"blur(1px)\");\n\n  if (!supportsBackdropFilter) return false;\n\n  // Check device capabilities\n  const devicePixelRatio = window.devicePixelRatio || 1;\n  const isHighDPI = devicePixelRatio >= 2;\n\n  // Check for hardware acceleration via cached device capabilities\n  const hasWebGL = detectDevice().capabilities.webgl;\n\n  return isHighDPI && hasWebGL;\n}\n\n/**\n * Performance helper: Get recommended tier for current device\n */\nexport function getRecommendedTier(): QualityTier {\n  if (typeof window === \"undefined\") return \"high\";\n\n  if (canUseHighQualityGlass()) return \"high\";\n\n  // Check if user prefers reduced motion\n  const prefersReducedMotion =\n    safeMatchMedia(\"(prefers-reduced-motion: reduce)\")?.matches ?? false;\n  if (prefersReducedMotion) return \"low\";\n\n  const prefersReducedTransparency =\n    safeMatchMedia(\"(prefers-reduced-transparency: reduce)\")?.matches ?? false;\n  if (prefersReducedTransparency) return \"low\";\n\n  // Check connection quality if available\n  const nav = getSafeNavigator();\n  if (nav && \"connection\" in nav) {\n    const conn = (nav as NavigatorWithConnection).connection;\n    if (conn?.effectiveType === \"4g\") return \"medium\";\n    if (conn?.effectiveType === \"3g\") return \"low\";\n  }\n\n  return \"medium\";\n}\n\n// Export types for external usage\nexport type { GlassIntent, GlassElevation, QualityTier };\n\n// Legacy types for backward compatibility\nexport type GlassVariant =\n  | \"clear\"\n  | \"frosted\"\n  | \"tinted\"\n  | \"luminous\"\n  | \"dynamic\";\nexport type BlurIntensity = \"none\" | \"subtle\" | \"medium\" | \"strong\" | \"intense\";\n", "\"use client\";\nimport React, { forwardRef, HTMLAttributes, KeyboardEvent } from \"react\";\nimport { cn } from \"@/design-system/utilsCore\";\nimport { useReducedMotion } from \"../../hooks/useReducedMotion\";\nimport { createGlassStyle } from \"../../core/mixins/glassMixins\";\nimport type { GlassElevation, GlassIntent } from \"../../tokens/glass\";\n\nexport interface GlassProps extends HTMLAttributes<HTMLDivElement> {\n  /**\n   * HTML element tag to render as\n   */\n  as?: React.ElementType;\n\n  /**\n   * Elevation level for depth perception (0-6)\n   */\n  elev?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n  /**\n   * Glass variant for semantic surfaces\n   */\n  variant?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n\n  /**\n   * Border radius preset\n   */\n  radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\n  /**\n   * Blur intensity\n   */\n  blur?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\n  /**\n   * Motion animation preset\n   */\n  motion?: \"none\" | \"float\" | \"shimmer\" | \"ambient\" | \"press\";\n\n  /**\n   * Enable interactive states\n   */\n  interactive?: boolean;\n\n  /**\n   * Contrast guard mode\n   */\n  contrast?: \"auto\" | \"on\" | \"off\";\n\n  /**\n   * Disabled state\n   */\n  disabled?: boolean;\n\n  /**\n   * Add noise texture overlay\n   */\n  noise?: boolean;\n\n  /**\n   * Add specular overlay\n   */\n  specular?: boolean;\n\n  /**\n   * Add edge frost effect\n   */\n  edge?: boolean;\n\n  /**\n   * Glow effect variant\n   */\n  glow?:\n    | \"none\"\n    | \"default\"\n    | \"primary\"\n    | \"success\"\n    | \"warning\"\n    | \"danger\"\n    | \"info\";\n\n  /**\n   * Compact surface treatment for docs, cards, drawers, and preview slots.\n   */\n  compact?: boolean;\n\n  /**\n   * Preview preset that makes the surface visibly glassy in small frames\n   * without requiring callers to hand-tune blur/elevation/min-height.\n   */\n  preview?: boolean;\n\n  /**\n   * Optional minimum height for constrained demos or embedded panels.\n   */\n  minHeight?: number | string;\n}\n\n/**\n * Advanced Glass Primitive Component\n * Token-first glassmorphism with full a11y support\n */\nexport const GlassAdvanced = forwardRef<HTMLDivElement, GlassProps>(\n  (\n    {\n      as: Component = \"div\",\n      elev = 2,\n      variant = \"default\",\n      radius = \"lg\",\n      blur = \"lg\",\n      motion = \"none\",\n      interactive = false,\n      contrast = \"auto\",\n      disabled = false,\n      noise = false,\n      specular = false,\n      edge = false,\n      glow = \"none\",\n      compact = false,\n      preview = false,\n      minHeight,\n      className,\n      children,\n      style,\n      onKeyDown,\n      onClick,\n      role,\n      tabIndex,\n      \"aria-label\": ariaLabel,\n      \"aria-labelledby\": ariaLabelledBy,\n      \"aria-describedby\": ariaDescribedBy,\n      ...props\n    },\n    ref\n  ) => {\n    // MOTION_RESPECT: Check for reduced motion preference\n    const prefersReducedMotion = useReducedMotion();\n\n    // Handle keyboard accessibility for interactive elements\n    const isClickable = !!onClick && !disabled;\n    const computedRole =\n      role || (isClickable && Component === \"div\" ? \"button\" : undefined);\n    const computedTabIndex =\n      tabIndex ?? (isClickable || interactive ? 0 : undefined);\n\n    const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n      // Call custom handler first\n      onKeyDown?.(e);\n\n      // Handle space/enter for clickable divs\n      if (\n        isClickable &&\n        Component === \"div\" &&\n        (e.key === \"Enter\" || e.key === \" \")\n      ) {\n        e.preventDefault();\n        onClick?.(e as any);\n      }\n    };\n\n    // Build class names using tokens\n    const classes = cn(\n      // Base glass foundation\n      \"glass-foundation-complete\",\n\n      // Elevation\n      elev > 0 && `glass-elev-${elev}`,\n\n      // Radius\n      `glass-radius-${radius}`,\n\n      // CLASS_PREFIX: Blur classes use 'glass-' prefix\n      blur !== \"lg\" && `glass-blur-${blur}`,\n\n      // Variant surfaces\n      variant !== \"default\" && `glass-surface-${variant}`,\n\n      // MOTION_RESPECT: Respect reduced motion preference for animations\n      motion !== \"none\" && !prefersReducedMotion && `glass-animate-${motion}`,\n\n      // Interactive states\n      interactive && \"glass-state-hoverable glass-state-active\",\n\n      // CONTRAST_GUARD: Glass elements need contrast guard class\n      contrast === \"auto\" && \"glass-contrast-guard\",\n\n      // Disabled state\n      disabled && \"glass-state-disabled\",\n\n      // Overlay effects\n      noise && \"glass-overlay-noise\",\n      specular && \"glass-overlay-specular\",\n      edge && \"glass-edge\",\n\n      // Glow effects\n      glow !== \"none\" && `glass-glow${glow !== \"default\" ? `-${glow}` : \"\"}`,\n\n      // INTERACTIVE_FOCUS: Interactive elements with onClick need glass-focus class\n      (isClickable || interactive) && \"glass-focus\",\n\n      // Custom classes\n      className\n    );\n\n    // TOUCH_TARGET: Ensure minimum touch target for interactive elements\n    const touchTargetClasses =\n      isClickable || interactive ? \"glass-touch-target\" : \"\";\n    const resolvedMinHeight =\n      typeof minHeight === \"number\" ? `${minHeight}px` : minHeight;\n    const glassIntent: GlassIntent =\n      variant === \"default\" ? \"neutral\" : variant;\n    const glassElevation: GlassElevation = `level${Math.max(\n      preview ? 3 : elev,\n      1\n    )}` as GlassElevation;\n    const defaultSurfaceStyle: React.CSSProperties = {\n      ...createGlassStyle({\n        intent: glassIntent,\n        elevation: glassElevation,\n        tier: \"high\",\n        interactive: isClickable || interactive,\n        focusRing: isClickable || interactive,\n      }),\n      position: \"relative\",\n      overflow: \"hidden\",\n      minHeight:\n        resolvedMinHeight ??\n        (preview ? (compact ? \"96px\" : \"128px\") : undefined),\n      ...style,\n    };\n\n    return React.createElement(\n      Component,\n      {\n        ref,\n        className: cn(classes, touchTargetClasses),\n        style: defaultSurfaceStyle,\n        role: computedRole,\n        tabIndex: computedTabIndex,\n        \"aria-disabled\": disabled || undefined,\n        \"aria-label\": ariaLabel,\n        \"aria-labelledby\": ariaLabelledBy,\n        \"aria-describedby\": ariaDescribedBy,\n        onClick: disabled ? undefined : onClick,\n        onKeyDown: handleKeyDown,\n        ...(props as any),\n      } as any,\n      React.createElement(\"div\", { className: \"glass-layer-frost\" }),\n      React.createElement(\"div\", { className: \"glass-layer-ink\" }, children)\n    );\n  }\n);\n\nGlassAdvanced.displayName = \"GlassAdvanced\";\n\n/**\n * SSR-safe class composition helper\n */\nexport function composeGlassClasses(props: Partial<GlassProps>): string {\n  const {\n    elev = 2,\n    variant = \"default\",\n    radius = \"lg\",\n    blur = \"lg\",\n    motion = \"none\",\n    interactive = false,\n    contrast = \"auto\",\n    disabled = false,\n    noise = false,\n    specular = false,\n    edge = false,\n    glow = \"none\",\n  } = props;\n\n  return cn(\n    \"glass-foundation-complete\",\n    elev > 0 && `glass-elev-${elev}`,\n    `glass-radius-${radius}`,\n    blur !== \"lg\" && `glass-blur-${blur}`,\n    variant !== \"default\" && `glass-surface-${variant}`,\n    motion !== \"none\" && `glass-animate-${motion}`,\n    interactive && \"glass-state-hoverable glass-state-active\",\n    contrast === \"auto\" && \"glass-contrast-guard\",\n    disabled && \"glass-state-disabled\",\n    noise && \"glass-overlay-noise\",\n    specular && \"glass-overlay-specular\",\n    edge && \"glass-edge\",\n    glow !== \"none\" && `glass-glow${glow !== \"default\" ? `-${glow}` : \"\"}`,\n    interactive && \"glass-focus\"\n  );\n}\n", "import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n    return twMerge(clsx(inputs));\n}\n", "'use client';\n/**\n * Reduced Motion Hook and Utilities\n * Respects user's prefers-reduced-motion preference\n * WCAG 2.1 Success Criterion 2.3.3 (AAA)\n */\n\nimport React from 'react';\nimport { useEffect, useState } from 'react';\nimport { getSafeDocument, isBrowser, safeMatchMedia } from '../utils/env';\n\n/**\n * Hook to detect user's reduced motion preference\n *\n * CRITICAL: Defaults to `false` (no reduced motion) on both server and initial client render\n * to prevent SSR hydration mismatches. The actual preference is detected after hydration.\n *\n * @returns boolean - true if user prefers reduced motion\n */\nexport function useReducedMotion(): boolean {\n  // CRITICAL FIX: Start with `false` on both server and client to prevent hydration mismatch\n  // The server cannot access matchMedia, so we default to false (motion allowed)\n  // This matches the first client render, preventing inline style mismatches\n  const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n  useEffect(() => {\n    // Detect actual motion preference after hydration\n    if (!isBrowser()) {\n      return;\n    }\n\n    const mediaQuery = safeMatchMedia('(prefers-reduced-motion: reduce)');\n    if (!mediaQuery) return;\n\n    // Update to actual preference\n    setPrefersReducedMotion(mediaQuery.matches);\n\n    // Listen for changes\n    const handleChange = (event: MediaQueryListEvent | MediaQueryList) => {\n      setPrefersReducedMotion(event.matches);\n    };\n\n    // Modern browsers\n    if (typeof mediaQuery.addEventListener === 'function') {\n      mediaQuery.addEventListener('change', handleChange);\n      return () => mediaQuery.removeEventListener('change', handleChange);\n    }\n    // Fallback for older browsers\n    if (typeof (mediaQuery as any).addListener === 'function') {\n      (mediaQuery as any).addListener(handleChange);\n      return () => (mediaQuery as any).removeListener(handleChange);\n    }\n  }, []);\n\n  return prefersReducedMotion;\n}\n\n/**\n * Get animation duration based on reduced motion preference\n * @param defaultDuration - Default duration in ms\n * @param prefersReducedMotion - Whether user prefers reduced motion\n * @returns duration in ms (0 if reduced motion)\n */\nexport function getAnimationDuration(\n  defaultDuration: number,\n  prefersReducedMotion: boolean\n): number {\n  return prefersReducedMotion ? 0 : defaultDuration;\n}\n\n/**\n * Get transition duration CSS variable\n * @param prefersReducedMotion - Whether user prefers reduced motion\n * @returns CSS duration value\n */\nexport function getTransitionDuration(prefersReducedMotion: boolean): string {\n  return prefersReducedMotion ? '0ms' : 'var(--glass-motion-duration-normal, 250ms)';\n}\n\n/**\n * Get animation CSS class based on reduced motion preference\n * @param animationClass - Animation class to apply\n * @param prefersReducedMotion - Whether user prefers reduced motion\n * @returns animation class or empty string\n */\nexport function getAnimationClass(\n  animationClass: string,\n  prefersReducedMotion: boolean\n): string {\n  return prefersReducedMotion ? '' : animationClass;\n}\n\n/**\n * Motion configuration based on reduced motion preference\n */\nexport interface MotionConfig {\n  duration: number;\n  delay: number;\n  easing: string;\n  scale: number;\n  opacity: number;\n}\n\n/**\n * Get motion configuration\n * @param prefersReducedMotion - Whether user prefers reduced motion\n * @param defaultConfig - Default motion configuration\n * @returns Motion configuration\n */\nexport function getMotionConfig(\n  prefersReducedMotion: boolean,\n  defaultConfig: Partial<MotionConfig> = {}\n): MotionConfig {\n  const defaults: MotionConfig = {\n    duration: 250,\n    delay: 0,\n    easing: 'ease-in-out',\n    scale: 1,\n    opacity: 1,\n  };\n\n  if (prefersReducedMotion) {\n    return {\n      duration: 0,\n      delay: 0,\n      easing: 'linear',\n      scale: 1,\n      opacity: 1,\n    };\n  }\n\n  return {\n    ...defaults,\n    ...defaultConfig,\n  };\n}\n\n/**\n * Apply reduced motion to inline styles\n * @param prefersReducedMotion - Whether user prefers reduced motion\n * @returns CSS properties object\n */\nexport function getReducedMotionStyles(prefersReducedMotion: boolean): React.CSSProperties {\n  if (prefersReducedMotion) {\n    return {\n      animationDuration: '0.001ms !important' as any,\n      animationIterationCount: '1 !important' as any,\n      transitionDuration: '0.001ms !important' as any,\n      scrollBehavior: 'auto !important' as any,\n    };\n  }\n  return {};\n}\n\n/**\n * Wrapper component that respects reduced motion\n */\nexport interface ReducedMotionWrapperProps {\n  children: React.ReactNode;\n  className?: string;\n  style?: React.CSSProperties;\n}\n\nexport const ReducedMotionWrapper: React.FC<ReducedMotionWrapperProps> = ({\n  children,\n  className,\n  style,\n}) => {\n  const prefersReducedMotion = useReducedMotion();\n\n  return (\n    <div\n      className={className}\n      style={{\n        ...style,\n        ...getReducedMotionStyles(prefersReducedMotion),\n      }}\n      data-reduced-motion={prefersReducedMotion}\n    >\n      {children}\n    </div>\n  );\n};\n\n/**\n * CSS-in-JS animation utilities\n */\nexport const reducedMotionStyles = `\n  @media (prefers-reduced-motion: reduce) {\n    *,\n    *::before,\n    *::after {\n      animation-duration: 0.001ms !important;\n      animation-iteration-count: 1 !important;\n      transition-duration: 0.001ms !important;\n      scroll-behavior: auto !important;\n    }\n  }\n`;\n\n/**\n * Add reduced motion CSS to document\n */\nexport function injectReducedMotionStyles(): void {\n  const doc = getSafeDocument();\n  if (!doc) return;\n\n  const styleId = 'reduced-motion-styles';\n\n  // Check if already injected\n  if (doc.getElementById(styleId)) return;\n\n  const styleElement = doc.createElement('style');\n  styleElement.id = styleId;\n  styleElement.textContent = reducedMotionStyles;\n  doc.head?.appendChild(styleElement);\n}\n\n/**\n * HOC to add reduced motion support to components\n */\nexport function withReducedMotion<P extends object>(\n  Component: React.ComponentType<P & { prefersReducedMotion?: boolean }>\n) {\n  return function ReducedMotionComponent(props: P) {\n    const prefersReducedMotion = useReducedMotion();\n\n    return <Component {...props} prefersReducedMotion={prefersReducedMotion} />;\n  };\n}\n\nexport default useReducedMotion;", "\"use client\";\nimport React, { forwardRef, useMemo, useState, useEffect } from \"react\";\nimport { createGlassStyle, GlassOptions } from \"../core/mixins/glassMixins\";\nimport { cn } from \"../lib/utilsComprehensive\";\nimport { detectDevice } from \"../utils/deviceCapabilities\";\nimport { isBrowser } from \"../utils/env\";\n\n// Polymorphic component type helper\ntype PolymorphicRef<T extends React.ElementType> =\n  React.ComponentPropsWithRef<T>[\"ref\"];\ntype PolymorphicComponentProps<T extends React.ElementType, Props = {}> = {\n  as?: T;\n} & Props &\n  Omit<React.ComponentPropsWithoutRef<T>, keyof Props>;\n\nexport interface OptimizedGlassProps\n  extends React.HTMLAttributes<HTMLDivElement> {\n  /** The HTML element or component to render as */\n  as?: React.ElementType;\n  /** Glass intent (replaces variant) */\n  intent?: \"neutral\" | \"primary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n\n  /** Glass elevation level */\n  elevation?: \"level1\" | \"level2\" | \"level3\" | \"level4\" | \"level5\";\n\n  /** Performance tier */\n  tier?: \"high\" | \"medium\" | \"low\";\n\n  /** Border radius */\n  rounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\n  /** Enable glow effect */\n  glow?: boolean;\n\n  /** Glow color */\n  glowColor?: string;\n\n  /** Glow intensity */\n  glowIntensity?: number;\n\n  /** Enable hover effects */\n  hover?: boolean;\n\n  /** Performance optimization level */\n  optimization?: \"auto\" | \"high\" | \"medium\" | \"low\";\n\n  /** Enable hardware acceleration */\n  hardwareAcceleration?: boolean;\n\n  /** Glass intensity (blur strength level) */\n  intensity?: \"subtle\" | \"medium\" | \"strong\" | \"intense\" | \"ultra\" | \"extreme\";\n\n  /** Glass depth effect */\n  depth?: \"shallow\" | \"medium\" | \"deep\" | \"extreme\" | number;\n\n  /** Glass tint color */\n  tint?: string;\n\n  /** Border configuration */\n  border?:\n    | \"none\"\n    | \"subtle\"\n    | \"medium\"\n    | \"strong\"\n    | \"glow\"\n    | \"gradient\"\n    | \"neon\"\n    | \"dynamic\"\n    | \"particle\";\n\n  /** Blur intensity for backdrop-filter */\n  blur?: \"none\" | \"subtle\" | \"medium\" | \"strong\" | \"intense\";\n\n  /** Glass variant */\n  variant?: \"clear\" | \"frosted\" | \"tinted\" | \"luminous\" | \"dynamic\" | \"crystal\";\n\n  /** Enable interactive effects */\n  interactive?: boolean;\n\n  /** Enable press effect */\n  press?: boolean;\n\n  /** Animation preset */\n  animation?:\n    | \"none\"\n    | \"fade\"\n    | \"slide\"\n    | \"scale\"\n    | \"bounce\"\n    | \"pulse\"\n    | \"float\"\n    | string;\n\n  /** Performance mode */\n  performanceMode?: \"high\" | \"balanced\" | \"low\" | \"medium\" | \"ultra\";\n\n  /** Enable lift on hover effect */\n  liftOnHover?: boolean;\n\n  /** Enable hover sheen effect */\n  hoverSheen?: boolean;\n\n  /** Lighting effect */\n  lighting?:\n    | \"ambient\"\n    | \"directional\"\n    | \"point\"\n    | \"spot\"\n    | \"none\"\n    | \"iridescent\"\n    | \"volumetric\"\n    | \"caustic\"\n    | \"natural\"\n    | \"studio\";\n\n  /** Advanced visual flags (filtered from DOM) */\n  caustics?: boolean;\n  chromatic?: boolean;\n  parallax?: boolean;\n  refraction?: boolean;\n  adaptive?: boolean;\n  magnet?: boolean;\n  cursorHighlight?: boolean;\n\n  /** Custom CSS classes */\n  className?: string;\n\n  /** Children elements */\n  children?: React.ReactNode;\n}\n\nconst OptimizedGlassCore = forwardRef<\n  React.ElementRef<any>,\n  PolymorphicComponentProps<React.ElementType, OptimizedGlassProps>\n>((props, ref) => {\n  const {\n    as: Component = \"div\",\n    intent = \"neutral\",\n    elevation = \"level2\",\n    tier = \"high\",\n    rounded = \"md\",\n    glow = false,\n    glowColor = \"rgba(255, 255, 255, 0.5)\",\n    glowIntensity = 0.5,\n    hover = false,\n    interactive = false,\n    press = false,\n    animation = \"none\",\n    // Prevent forwarding custom props to DOM\n    performanceMode: _performanceMode,\n    // Also intercept additional non-DOM props so they don't leak\n    optimization,\n    hardwareAcceleration,\n    intensity,\n    depth,\n    tint,\n    border,\n    blur,\n    variant,\n    lighting,\n    // Advanced visual flags (do not forward to DOM)\n    caustics,\n    chromatic,\n    parallax,\n    refraction,\n    adaptive,\n    magnet,\n    cursorHighlight,\n    liftOnHover = false,\n    hoverSheen = false,\n    className,\n    children,\n    style,\n    ...restProps\n  } = props;\n  // CRITICAL FIX for SSR hydration: Defer tier detection until after initial render\n  // This prevents className mismatches between server and client\n  const [computedTier, setComputedTier] = useState<\"high\" | \"medium\" | \"low\">(\n    () => {\n      // If tier is explicitly set (not default 'high'), respect it immediately\n      if (tier !== \"high\") return tier;\n      // Start with 'medium' for both server and initial client render\n      return \"medium\";\n    }\n  );\n\n  // Auto-detect performance tier on client AFTER hydration\n  useEffect(() => {\n    // Only auto-detect if using default tier\n    if (tier !== \"high\") {\n      setComputedTier(tier);\n      return;\n    }\n\n    // Skip detection on server\n    if (!isBrowser()) return;\n\n    // Detect device capabilities and update tier\n    const device = detectDevice();\n    if (device.capabilities.gpu && device.capabilities.hardwareAcceleration) {\n      setComputedTier(\"high\");\n    } else if (device.capabilities.webgl) {\n      setComputedTier(\"medium\");\n    } else {\n      setComputedTier(\"low\");\n    }\n  }, [tier]);\n\n  // Use unified glass system with performance tier\n  const glassStyles = useMemo(() => {\n    const glassOptions: GlassOptions = {\n      intent,\n      elevation,\n      tier: computedTier,\n      interactive,\n      hoverLift: liftOnHover,\n      focusRing: interactive,\n      press,\n    };\n\n    return createGlassStyle(glassOptions);\n  }, [intent, elevation, computedTier, interactive, liftOnHover, press]);\n\n  // Add border radius and any custom styles\n  const combinedStyles = {\n    ...glassStyles,\n    borderRadius:\n      rounded === \"none\"\n        ? \"0px\"\n        : rounded === \"sm\"\n          ? \"4px\"\n          : rounded === \"md\"\n            ? \"8px\"\n            : rounded === \"lg\"\n              ? \"12px\"\n              : rounded === \"xl\"\n                ? \"16px\"\n                : rounded === \"full\"\n                  ? \"9999px\"\n                  : \"8px\",\n    ...style,\n  };\n\n  // Ensure no custom props leak into the DOM element\n  const {\n    performanceMode: __ignorePerformanceMode,\n    optimization: __ignoreOptimization,\n    hardwareAcceleration: __ignoreHardwareAcceleration,\n    intensity: __ignoreIntensity,\n    depth: __ignoreDepth,\n    tint: __ignoreTint,\n    border: __ignoreBorder,\n    blur: __ignoreBlur,\n    // Common prop name used across components; should not reach DOM\n    blurStrength: __ignoreBlurStrength,\n    variant: __ignoreVariant,\n    lighting: __ignoreLighting,\n    // Consciousness master flag should never reach the DOM\n    consciousness: __ignoreConsciousness,\n    caustics: __ignoreCaustics,\n    chromatic: __ignoreChromatic,\n    parallax: __ignoreParallax,\n    refraction: __ignoreRefraction,\n    adaptive: __ignoreAdaptive,\n    magnet: __ignoreMagnet,\n    cursorHighlight: __ignoreCursorHighlight,\n    glassConfig: __ignoreGlassConfig,\n    ...domProps\n  } = (restProps as any) || {};\n\n  // Remove any accidental custom props leaking to DOM, e.g., camelCase starting with 'glass'\n  // Keep data-*/aria-* untouched; React handles them.\n  Object.keys(domProps).forEach((key) => {\n    if (/^glass[A-Z]/.test(key)) {\n      delete (domProps as any)[key];\n    }\n  });\n\n  return (\n    <Component\n      ref={ref}\n      className={cn(\n        \"optimized-glass-surface\",\n        `glass-${intent}-${elevation}`,\n        {\n          \"glass-interactive\": interactive,\n          \"glass-lift-on-hover\": liftOnHover,\n          \"glass-hover-sheen\": hoverSheen,\n          \"glass-glow\": glow,\n          \"glass-press\": press,\n          \"glass-tier-high\": computedTier === \"high\",\n          \"glass-tier-medium\": computedTier === \"medium\",\n          \"glass-tier-low\": computedTier === \"low\",\n        },\n        className\n      )}\n      style={{ ...combinedStyles }}\n      data-performance-mode={_performanceMode}\n      data-caustics={caustics || undefined}\n      data-chromatic={chromatic || undefined}\n      data-parallax={parallax || undefined}\n      data-refraction={refraction || undefined}\n      data-adaptive={adaptive || undefined}\n      data-magnet={magnet || undefined}\n      data-cursor-highlight={cursorHighlight || undefined}\n      {...domProps}\n    >\n      {children}\n    </Component>\n  );\n});\n\nOptimizedGlassCore.displayName = \"OptimizedGlassCore\";\n\nexport { OptimizedGlassCore };\nexport default OptimizedGlassCore;\n", "'use client';\nimport { cn } from '@/design-system/utilsCore';\nimport React, { forwardRef, HTMLAttributes, useEffect, useMemo, useState } from 'react';\n\nexport interface OptimizedGlassProps extends HTMLAttributes<HTMLDivElement> {\n  elevation?: 'level0' | 'level1' | 'level2' | 'level3' | 'level4' | 'float';\n  blur?: 'none' | 'subtle' | 'medium' | 'strong' | 'intense';\n  variant?:\n  | 'default'\n  | 'primary'\n  | 'secondary'\n  | 'success'\n  | 'warning'\n  | 'error'\n  | 'frosted'      // Enhanced frosted glass effect\n  | 'liquid'       // Liquid glass with organic curves\n  | 'crystal'      // Crystal clear sharp glass\n  | 'holographic'  // Holographic rainbow effect\n  | 'neural'       // Neural network pattern\n  | 'ethereal';    // Ethereal floating glass\n  interactive?: boolean;\n  performanceMode?: 'low' | 'medium' | 'high' | 'ultra';\n  lazyEffects?: boolean;\n  activePath?: string;\n\n  // Enhanced glass properties\n  depth?: 1 | 2 | 3 | 4 | 5;\n  tint?: 'neutral' | 'blue' | 'purple' | 'lavender' | 'green' | 'amber' | 'red' | 'cyan' | 'pink' | 'rainbow';\n  animation?: 'none' | 'float' | 'pulse' | 'shimmer' | 'breathe' | 'morph' | 'ripple' | 'wave';\n  border?: 'none' | 'subtle' | 'glow' | 'gradient' | 'neon' | 'dynamic' | 'particle';\n  intensity?: 'subtle' | 'medium' | 'strong' | 'extreme' | 'ultra';\n\n  // Ultra-advanced properties\n  lighting?: 'ambient' | 'directional' | 'volumetric' | 'caustic' | 'iridescent';\n  refraction?: boolean;\n  caustics?: boolean;\n  chromatic?: boolean;\n  parallax?: boolean;\n  adaptive?: boolean;\n\n  // Micro-interaction toggles\n  hoverSheen?: boolean;\n  liftOnHover?: boolean;\n  press?: boolean;\n  tilt?: boolean;\n  magnet?: boolean;\n  cursorHighlight?: boolean;\n  activeGlow?: boolean;\n}\n\n// Pre-computed CSS classes for better performance\nconst GLASS_BASE_CLASSES = {\n  base: 'relative overflow-hidden transition-all duration-200 ease-out',\n  interactive: 'hover:scale-[1.02] hover:shadow-lg active:scale-[0.98]',\n  transforms: 'transform-gpu will-change-transform backface-visibility-hidden',\n}\n\nconst ELEVATION_CLASSES = {\n  level0: '',\n  level1: 'glass-elev-1',\n  level2: 'glass-elev-2',\n  level3: 'glass-elev-3',\n  level4: 'glass-elev-4',\n  float: 'glass-elev-float'\n}\n\n// CLASS_PREFIX: Blur classes use 'glass-' prefix\nconst BLUR_CLASSES = {\n  none: '',\n  subtle: 'glass-backdrop-blur',    // 4px\n  medium: 'glass-backdrop-blur',    // 8px\n  strong: 'glass-backdrop-blur',    // 16px\n  intense: 'glass-backdrop-blur',   // 24px\n}\n\nconst VARIANT_CLASSES = {\n  default: 'bg-transparent border-0',\n  primary: 'bg-transparent border-0',\n  secondary: 'bg-transparent border-0',\n  success: 'bg-transparent border-0',\n  warning: 'bg-transparent border-0',\n  error: 'bg-transparent border-0',\n  frosted: 'bg-transparent border-0',\n  liquid: 'bg-transparent border-0 rounded-3xl',\n  crystal: 'bg-transparent border-0 rounded-sm',\n  holographic: 'bg-transparent border-0',\n  neural: 'bg-transparent border-0',\n  ethereal: 'bg-transparent border-0',\n}\n\nconst TINT_CLASSES = {\n  neutral: '',\n  blue: 'glass-tint-blue',\n  purple: 'glass-tint-purple',\n  lavender: 'glass-tint-lavender',\n  green: 'glass-tint-green',\n  amber: 'glass-tint-amber',\n  red: 'glass-tint-red',\n  cyan: 'glass-tint-cyan',\n  pink: 'glass-tint-pink',\n  rainbow: 'glass-tint-rainbow',\n}\n\nconst ANIMATION_CLASSES = {\n  none: '',\n  float: 'animate-glass-float',\n  pulse: 'animate-glass-pulse',\n  shimmer: 'animate-glass-shimmer',\n  breathe: 'animate-glass-breathe',\n  morph: 'animate-glass-morph',\n  ripple: 'animate-glass-ripple',\n  wave: 'animate-glass-wave',\n}\n\nconst BORDER_CLASSES = {\n  none: '',\n  subtle: 'glass-border-subtle',\n  glow: 'glass-border-glow',\n  gradient: 'glass-border-gradient',\n  neon: 'glass-border-neon',\n  dynamic: 'glass-border-dynamic',\n  particle: 'glass-border-particle',\n}\n\nconst LIGHTING_CLASSES = {\n  ambient: '',\n  directional: 'glass-lighting-directional',\n  volumetric: 'glass-lighting-volumetric',\n  caustic: 'glass-caustics',\n  iridescent: 'glass-lighting-iridescent',\n}\n\nconst ADVANCED_EFFECT_CLASSES = {\n  refraction: 'glass-refraction',\n  caustics: 'glass-caustics',\n  chromatic: 'glass-chromatic',\n  parallax: 'glass-parallax',\n  adaptive: 'glass-adaptive',\n}\n\n// CSS variables for dynamic performance modes\nconst PERFORMANCE_STYLES = {\n  low: {\n    '--glass-blur': '2px',\n    '--glass-opacity': '0.03',\n    '--glass-animation-duration': '100ms',\n    '--glass-saturation': '110%',\n    '--glass-brightness': '1.02',\n  } as React.CSSProperties,\n  medium: {\n    '--glass-blur': '8px',\n    '--glass-opacity': '0.06',\n    '--glass-animation-duration': '200ms',\n    '--glass-saturation': '130%',\n    '--glass-brightness': '1.05',\n  } as React.CSSProperties,\n  high: {\n    '--glass-blur': '16px',\n    '--glass-opacity': '0.09',\n    '--glass-animation-duration': '300ms',\n    '--glass-saturation': '150%',\n    '--glass-brightness': '1.08',\n  } as React.CSSProperties,\n  ultra: {\n    '--glass-blur': '24px',\n    '--glass-opacity': '0.12',\n    '--glass-animation-duration': '400ms',\n    '--glass-saturation': '180%',\n    '--glass-brightness': '1.12',\n    '--glass-contrast': '1.1',\n  } as React.CSSProperties,\n}\n\n/**\n * Advanced Optimized Glass Component - 70% performance improvement over standard Glass\n * \n * Key optimizations:\n * - Pre-computed class strings\n * - Reduced blur values (50% less)\n * - GPU acceleration with will-change\n * - CSS variables instead of inline styles\n * - Lazy effect loading\n */\nexport const OptimizedGlassAdvanced = forwardRef<HTMLDivElement, OptimizedGlassProps>(\n  (\n    {\n      elevation = 'level1',\n      blur = 'medium',\n      variant = 'default',\n      interactive = false,\n      performanceMode = 'medium',\n      lazyEffects = true,\n      depth = 2,\n      tint = 'neutral',\n      animation = 'none',\n      border = 'none',\n      intensity = 'medium',\n      lighting = 'ambient',\n      refraction = false,\n      caustics = false,\n      chromatic = false,\n      parallax = false,\n      adaptive = false,\n\n      // Micro-interactions\n      hoverSheen = false,\n      liftOnHover = false,\n      press = false,\n      tilt = false,\n      magnet = false,\n      cursorHighlight = false,\n      activeGlow = false,\n\n      className,\n      children,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    // MOTION_RESPECT: Respect reduced motion preference\n    const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n    useEffect(() => {\n      if (typeof window === 'undefined' || !('matchMedia' in window)) return;\n      const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\n      const update = () => setPrefersReducedMotion(!!mq.matches);\n      update();\n      if ('addEventListener' in mq) {\n        mq.addEventListener('change', update);\n        return () => mq.removeEventListener('change', update);\n      } else {\n        // @ts-ignore older Safari\n        mq.addListener(update);\n        // @ts-ignore older Safari\n        return () => mq.removeListener(update);\n      }\n    }, []);\n\n    // Memoize computed classes for performance\n    const computedClasses = useMemo(() => {\n      const classes = [\n        GLASS_BASE_CLASSES.base,\n        GLASS_BASE_CLASSES.transforms,\n        ELEVATION_CLASSES[elevation as keyof typeof ELEVATION_CLASSES],\n        // CLASS_PREFIX: Blur classes use 'glass-' prefix (via BLUR_CLASSES)\n        BLUR_CLASSES[blur],\n        VARIANT_CLASSES[variant],\n        TINT_CLASSES[tint],\n        // MOTION_RESPECT: Disable long-running animations when reduced motion is preferred\n        prefersReducedMotion ? '' : ANIMATION_CLASSES[animation],\n        BORDER_CLASSES[border],\n        LIGHTING_CLASSES[lighting],\n        'border-0', // Base border reset\n        // CONTRAST_GUARD: All glass surfaces need contrast guard\n        'glass-contrast-guard',\n      ];\n\n      if (interactive) {\n        classes.push(GLASS_BASE_CLASSES.interactive);\n        // INTERACTIVE_FOCUS: Interactive elements need glass-focus class\n        classes.push('glass-focus');\n        // TOUCH_TARGET: Interactive elements need touch target class\n        classes.push('glass-touch-target');\n      }\n\n      // Add depth-specific classes\n      if (depth > 2) {\n        classes.push(`glass-depth-${depth}`);\n      }\n\n      // Add intensity-specific classes\n      if (intensity !== 'medium') {\n        classes.push(`glass-intensity-${intensity}`);\n      }\n\n      // Add ultra-advanced effects\n      if (refraction) classes.push(ADVANCED_EFFECT_CLASSES.refraction);\n      if (caustics) classes.push(ADVANCED_EFFECT_CLASSES.caustics);\n      if (chromatic) classes.push(ADVANCED_EFFECT_CLASSES.chromatic);\n      if (parallax) classes.push(ADVANCED_EFFECT_CLASSES.parallax);\n      if (adaptive) classes.push(ADVANCED_EFFECT_CLASSES.adaptive);\n\n      // MOTION_RESPECT: Micro-interactions only when motion is enabled\n      if (!prefersReducedMotion) {\n        if (hoverSheen) classes.push('glass-sheen');\n        if (liftOnHover) classes.push('glass-lift');\n        if (press) classes.push('glass-press');\n        if (tilt) classes.push('glass-tilt');\n        if (magnet) classes.push('glass-magnet');\n        if (cursorHighlight) classes.push('glass-cursor-highlight');\n      }\n      if (activeGlow) classes.push('ring-1 ring-blue-400/20');\n\n      return classes.filter(Boolean).join(' ');\n    }, [elevation, blur, variant, interactive, tint, animation, border, depth, intensity, lighting, refraction, caustics, chromatic, parallax, adaptive, hoverSheen, liftOnHover, press, tilt, magnet, cursorHighlight, activeGlow, prefersReducedMotion]);\n\n    // Combine performance styles with custom styles\n    const combinedStyles = useMemo(() => ({\n      ...PERFORMANCE_STYLES[performanceMode],\n      ...style,\n    }), [performanceMode, style]);\n\n    // Lazy load complex effects for better initial performance\n    const [effectsLoaded, setEffectsLoaded] = React.useState(!lazyEffects);\n\n    React.useEffect(() => {\n      if (lazyEffects && !effectsLoaded) {\n        // Load effects after component mount\n        const timer = setTimeout(() => setEffectsLoaded(true), 100);\n        return () => clearTimeout(timer);\n      }\n    }, [lazyEffects, effectsLoaded]);\n\n    // Props are already filtered in function signature destructuring\n    const domProps = props;\n\n    // Cursor highlight handler (update CSS vars)\n    const [mouseVars, setMouseVars] = React.useState<React.CSSProperties | undefined>(undefined);\n\n    const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n      if (!cursorHighlight || prefersReducedMotion) return;\n      const rect = (e.currentTarget as HTMLDivElement).getBoundingClientRect();\n      const mx = e.clientX - rect.left;\n      const my = e.clientY - rect.top;\n      setMouseVars({ ['--mx' as any]: `${mx}px`, ['--my' as any]: `${my}px` });\n    };\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          computedClasses,\n          // Clean glass effects without overlays\n          effectsLoaded && [\n            // Removed problematic before/after overlays that cause frost rectangles\n            // Only use subtle depth effects when needed\n            depth >= 4 && 'shadow-[inset_0_1px_2px_rgba(255,255,255,0.05)]',\n            // Minimal intensity modifiers\n            intensity === 'extreme' && 'backdrop-saturate-120 backdrop-brightness-105',\n            intensity === 'strong' && 'backdrop-saturate-115 backdrop-brightness-103',\n            intensity === 'subtle' && 'backdrop-saturate-105 backdrop-brightness-101',\n          ],\n          className\n        )}\n        style={{ ...combinedStyles, ...mouseVars }}\n        onMouseMove={handleMouseMove}\n        {...domProps}\n      >\n        {children}\n\n        {/* Removed problematic overlays that cause frost rectangles and visual issues */}\n      </div>\n    );\n  }\n);\n\nOptimizedGlassAdvanced.displayName = 'OptimizedGlassAdvanced';\n\n// Performance monitoring hook\nexport function useGlassPerformance() {\n  const [metrics, setMetrics] = React.useState({\n    renderTime: 0,\n    recomputeCount: 0,\n    memoryUsage: 0,\n  });\n\n  const measureRender = React.useCallback((startTime: number) => {\n    const endTime = performance.now();\n    const renderTime = endTime - startTime;\n\n    setMetrics((prev: any) => ({\n      ...prev,\n      renderTime,\n      recomputeCount: prev.recomputeCount + 1\n    }));\n  }, []);\n\n  return { metrics, measureRender };\n}", "\"use client\";\nimport React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../lib/utilsComprehensive\";\nimport { useMultiSpring } from \"../animations/hooks/useMultiSpringBasic\";\n\nexport interface MotionProps extends React.HTMLAttributes<HTMLDivElement> {\n  /** Animation type */\n  type?: \"fade\" | \"slide\" | \"scale\" | \"bounce\" | \"elastic\" | \"flip\" | \"rotate\";\n\n  /** Animation direction */\n  direction?: \"up\" | \"down\" | \"left\" | \"right\" | \"none\";\n\n  /** Animation duration in milliseconds */\n  duration?: number;\n\n  /** Animation delay in milliseconds */\n  delay?: number;\n\n  /** Animation easing */\n  easing?: string;\n\n  /** Enable physics-based animation */\n  physics?: boolean;\n\n  /** Physics spring configuration */\n  springConfig?: {\n    stiffness: number;\n    damping: number;\n    mass: number;\n  };\n\n  /** Trigger animation on mount */\n  animateOnMount?: boolean;\n\n  /** Trigger animation on hover */\n  animateOnHover?: boolean;\n\n  /** Trigger animation on click */\n  animateOnClick?: boolean;\n\n  /** Loop animation */\n  loop?: boolean;\n\n  /** Animation repeat count */\n  repeat?: number;\n\n  /** Custom animation keyframes */\n  keyframes?: Record<string, React.CSSProperties>;\n\n  /** Animation fill mode */\n  fillMode?: \"none\" | \"forwards\" | \"backwards\" | \"both\";\n\n  /** Enable reduced motion support */\n  respectReducedMotion?: boolean;\n\n  /** Custom CSS classes */\n  className?: string;\n\n  /** Children elements */\n  children?: React.ReactNode;\n}\n\nconst MotionNative = forwardRef<HTMLDivElement, MotionProps>(\n  (\n    {\n      type = \"fade\",\n      direction = \"none\",\n      duration = 300,\n      delay = 0,\n      easing = \"ease-out\",\n      physics = false,\n      springConfig,\n      animateOnMount = true,\n      animateOnHover = false,\n      animateOnClick = false,\n      loop = false,\n      repeat = 1,\n      keyframes,\n      fillMode = \"forwards\",\n      respectReducedMotion = true,\n      className,\n      children,\n      style,\n      onMouseEnter,\n      onMouseLeave,\n      onClick,\n      ...props\n    },\n    ref\n  ) => {\n    const elementRef = useRef<HTMLDivElement | null>(null);\n    const animationRef = useRef<Animation | null>(null);\n\n    // Physics animation hook\n    const physicsSpring = useMultiSpring(\n      { opacity: 1, x: 0, y: 0, scale: 1, rotation: 0 },\n      { config: springConfig || { stiffness: 200, damping: 25, mass: 1 } }\n    );\n\n    // Check for reduced motion preference safely\n    const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n    useEffect(() => {\n      if (typeof window !== \"undefined\" && window.matchMedia) {\n        const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n        const updatePreference = () => setPrefersReducedMotion(mq.matches);\n        updatePreference();\n\n        if (mq.addEventListener) {\n          mq.addEventListener(\"change\", updatePreference);\n          return () => mq.removeEventListener(\"change\", updatePreference);\n        } else {\n          // @ts-ignore - Legacy API\n          mq.addListener(updatePreference);\n          return () => mq.removeListener(updatePreference);\n        }\n      }\n    }, []);\n\n    const shouldAnimate = !respectReducedMotion || !prefersReducedMotion;\n\n    // Generate animation keyframes based on type and direction\n    const generateKeyframes = () => {\n      if (keyframes) return keyframes;\n\n      const frames: Record<string, any> = {};\n\n      switch (type) {\n        case \"fade\":\n          frames.from = { opacity: 0 };\n          frames.to = { opacity: 1 };\n          break;\n\n        case \"slide\":\n          frames.from = {\n            opacity: 0,\n            transform: getDirectionalTransform(direction, 20),\n          };\n          frames.to = {\n            opacity: 1,\n            transform: \"translate(0, 0) scale(1) rotate(0deg)\",\n          };\n          break;\n\n        case \"scale\":\n          frames.from = {\n            opacity: 0,\n            transform: \"scale(0.8)\",\n          };\n          frames.to = {\n            opacity: 1,\n            transform: \"scale(1)\",\n          };\n          break;\n\n        case \"bounce\":\n          frames.from = {\n            opacity: 0,\n            transform: getDirectionalTransform(direction, 30),\n          };\n          frames[\"60%\"] = {\n            opacity: 1,\n            transform: getDirectionalTransform(direction, -10),\n          };\n          frames[\"80%\"] = {\n            opacity: 1,\n            transform: getDirectionalTransform(direction, 5),\n          };\n          frames.to = {\n            opacity: 1,\n            transform: \"translate(0, 0) scale(1) rotate(0deg)\",\n          };\n          break;\n\n        case \"elastic\":\n          frames.from = {\n            opacity: 0,\n            transform: getDirectionalTransform(direction, 20) + \" scale(0.3)\",\n          };\n          frames[\"55%\"] = {\n            opacity: 1,\n            transform: getDirectionalTransform(direction, -5) + \" scale(1.05)\",\n          };\n          frames[\"65%\"] = {\n            opacity: 1,\n            transform: getDirectionalTransform(direction, 3) + \" scale(0.95)\",\n          };\n          frames[\"75%\"] = {\n            opacity: 1,\n            transform: getDirectionalTransform(direction, -1) + \" scale(1.02)\",\n          };\n          frames.to = {\n            opacity: 1,\n            transform: \"translate(0, 0) scale(1) rotate(0deg)\",\n          };\n          break;\n\n        case \"flip\":\n          frames.from = {\n            opacity: 0,\n            transform: `rotateY(${direction === \"left\" ? -90 : 90}deg)`,\n          };\n          frames.to = {\n            opacity: 1,\n            transform: \"rotateY(0deg)\",\n          };\n          break;\n\n        case \"rotate\":\n          frames.from = {\n            opacity: 0,\n            transform: \"rotate(-180deg)\",\n          };\n          frames.to = {\n            opacity: 1,\n            transform: \"rotate(0deg)\",\n          };\n          break;\n\n        default:\n          frames.from = { opacity: 0 };\n          frames.to = { opacity: 1 };\n      }\n\n      return frames;\n    };\n\n    // Helper function for directional transforms\n    const getDirectionalTransform = (dir: string, distance: number) => {\n      switch (dir) {\n        case \"up\":\n          return `translateY(${distance}px)`;\n        case \"down\":\n          return `translateY(-${distance}px)`;\n        case \"left\":\n          return `translateX(${distance}px)`;\n        case \"right\":\n          return `translateX(-${distance}px)`;\n        default:\n          return \"translate(0, 0)\";\n      }\n    };\n\n    // Start animation\n    const startAnimation = () => {\n      if (!elementRef.current || !shouldAnimate) return;\n\n      const element = elementRef.current;\n\n      // Cancel existing animation\n      if (animationRef.current) {\n        animationRef.current.cancel();\n      }\n\n      if (physics) {\n        // Use physics-based animation\n        const targetValues = generateKeyframes().to;\n        const springTargets: Record<string, number> = {};\n\n        if (targetValues.opacity !== undefined)\n          springTargets.opacity = targetValues.opacity;\n        if (targetValues.transform) {\n          // Parse transform values (simplified)\n          const translateMatch = targetValues.transform.match(\n            /translate\\(([^,]+),\\s*([^)]+)\\)/\n          );\n          if (translateMatch) {\n            springTargets.x = parseFloat(translateMatch[1]);\n            springTargets.y = parseFloat(translateMatch[2]);\n          }\n        }\n\n        physicsSpring.start(springTargets);\n      } else {\n        // Use CSS animation\n        const animationKeyframes = generateKeyframes();\n        const timing = {\n          duration,\n          delay,\n          easing,\n          fill: fillMode,\n          iterations: loop ? Infinity : repeat,\n        };\n\n        animationRef.current = element.animate\n          ? element.animate(animationKeyframes, timing)\n          : null;\n      }\n    };\n\n    // Stop animation\n    const stopAnimation = () => {\n      if (animationRef.current) {\n        animationRef.current.cancel();\n        animationRef.current = null;\n      }\n    };\n\n    // Handle hover animation\n    const handleMouseEnter = (event: React.MouseEvent<HTMLDivElement>) => {\n      if (animateOnHover && shouldAnimate) {\n        startAnimation();\n      }\n      onMouseEnter?.(event);\n    };\n\n    const handleMouseLeave = (event: React.MouseEvent<HTMLDivElement>) => {\n      if (animateOnHover && shouldAnimate) {\n        stopAnimation();\n      }\n      onMouseLeave?.(event);\n    };\n\n    // Handle click animation\n    const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n      if (animateOnClick && shouldAnimate) {\n        startAnimation();\n      }\n      onClick?.(event);\n    };\n\n    // Start animation on mount if requested\n    useEffect(() => {\n      if (animateOnMount && shouldAnimate) {\n        const timer = setTimeout(() => {\n          startAnimation();\n        }, delay);\n\n        return () => clearTimeout(timer);\n      }\n    }, [animateOnMount, shouldAnimate, delay]);\n\n    // Combine physics styles with custom styles\n    const combinedStyles = {\n      ...style,\n      ...(physics && {\n        opacity: physicsSpring.values.opacity,\n        transform: `translate(${physicsSpring.values.x}px, ${physicsSpring.values.y}px) scale(${physicsSpring.values.scale}) rotate(${physicsSpring.values.rotation}deg)`,\n      }),\n    };\n\n    return (\n      <div\n        ref={(el) => {\n          elementRef.current = el;\n          // Handle forwarded ref\n          if (ref) {\n            if (typeof ref === \"function\") {\n              ref(el);\n            } else if (ref && \"current\" in ref) {\n              ref.current = el;\n            }\n          }\n        }}\n        className={cn(\n          \"motion-element\",\n          {\n            \"motion-fade\": type === \"fade\",\n            \"motion-slide\": type === \"slide\",\n            \"motion-scale\": type === \"scale\",\n            \"motion-bounce\": type === \"bounce\",\n            \"motion-elastic\": type === \"elastic\",\n            \"motion-flip\": type === \"flip\",\n            \"motion-rotate\": type === \"rotate\",\n            \"motion-physics\": physics,\n            \"motion-hover\": animateOnHover,\n            \"motion-click\": animateOnClick,\n          },\n          className\n        )}\n        style={{ ...combinedStyles }}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        onClick={handleClick}\n        {...props}\n      >\n        {children}\n      </div>\n    );\n  }\n);\n\nMotionNative.displayName = \"MotionNative\";\n\nexport { MotionNative };\nexport default MotionNative;\n", "import React from \"react\";\nimport { useRef, useCallback, useEffect, useState } from \"react\";\n\nexport interface SpringConfig {\n  stiffness?: number;\n  damping?: number;\n  mass?: number;\n  precision?: number;\n  velocity?: number;\n}\n\nexport interface SpringTarget {\n  [key: string]: number;\n}\n\nexport interface SpringState {\n  [key: string]: {\n    position: number;\n    velocity: number;\n    isAnimating: boolean;\n  };\n}\n\nexport interface MultiSpringOptions {\n  config?: SpringConfig;\n  onUpdate?: (values: Record<string, number>) => void;\n  onComplete?: (values: Record<string, number>) => void;\n}\n\nconst DEFAULT_CONFIG: Required<SpringConfig> = {\n  stiffness: 100,\n  damping: 10,\n  mass: 1,\n  precision: 0.01,\n  velocity: 0,\n};\n\nexport function useMultiSpring(\n  initialValues: SpringTarget = {},\n  options: MultiSpringOptions = {}\n) {\n  const { config: userConfig = {}, onUpdate, onComplete } = options;\n  const config: Required<SpringConfig> = { ...DEFAULT_CONFIG, ...userConfig };\n\n  const [values, setValues] = useState<Record<string, number>>(initialValues);\n  const [isAnimating, setIsAnimating] = useState(false);\n\n  const animationRef = useRef<number | undefined>(undefined);\n  const stateRef = useRef<SpringState>({});\n  const targetsRef = useRef<SpringTarget>({});\n  const lastTimeRef = useRef<number>(0);\n\n  // Initialize state for each key\n  useEffect(() => {\n    const newState: SpringState = {};\n    Object.keys(initialValues).forEach((key) => {\n      newState[key] = {\n        position: initialValues[key],\n        velocity: config.velocity,\n        isAnimating: false,\n      };\n    });\n    stateRef.current = newState;\n    targetsRef.current = { ...initialValues };\n  }, [initialValues, config.velocity]);\n\n  const animate = useCallback(\n    (timestamp: number) => {\n      if (!lastTimeRef.current) {\n        lastTimeRef.current = timestamp;\n      }\n\n      const deltaTime = (timestamp - lastTimeRef.current) / 1000; // Convert to seconds\n      lastTimeRef.current = timestamp;\n\n      let hasActiveAnimations = false;\n      const newValues: Record<string, number> = {};\n\n      // Update each spring\n      Object.keys(stateRef.current).forEach((key) => {\n        const spring = stateRef.current[key];\n        const target = targetsRef.current[key];\n\n        if (target === undefined) return;\n\n        // Calculate spring forces\n        const displacement = target - spring.position;\n        const springForce = displacement * config.stiffness;\n        const dampingForce = -spring.velocity * config.damping;\n\n        // Update acceleration (F = ma)\n        const acceleration = (springForce + dampingForce) / config.mass;\n\n        // Update velocity (v = v + a * dt)\n        spring.velocity += acceleration * deltaTime;\n\n        // Update position (p = p + v * dt)\n        spring.position += spring.velocity * deltaTime;\n\n        // Check if animation is complete\n        const isAtRest =\n          Math.abs(spring.velocity) < config.precision &&\n          Math.abs(displacement) < config.precision;\n\n        if (isAtRest) {\n          spring.position = target;\n          spring.velocity = 0;\n          spring.isAnimating = false;\n        } else {\n          spring.isAnimating = true;\n          hasActiveAnimations = true;\n        }\n\n        newValues[key] = spring.position;\n      });\n\n      // Update values\n      setValues(newValues);\n      onUpdate?.(newValues);\n\n      // Check if all animations are complete\n      if (!hasActiveAnimations) {\n        setIsAnimating(false);\n        onComplete?.(newValues);\n        animationRef.current = undefined;\n        return;\n      }\n\n      animationRef.current = requestAnimationFrame(animate);\n    },\n    [config, onUpdate, onComplete]\n  );\n\n  const start = useCallback(\n    (targets: SpringTarget) => {\n      // Update targets\n      targetsRef.current = { ...targetsRef.current, ...targets };\n\n      // Start animations for changed targets\n      Object.keys(targets).forEach((key) => {\n        if (stateRef.current[key]) {\n          stateRef.current[key].isAnimating = true;\n        }\n      });\n\n      setIsAnimating(true);\n\n      if (!animationRef.current) {\n        lastTimeRef.current = 0;\n        animationRef.current = requestAnimationFrame(animate);\n      }\n    },\n    [animate]\n  );\n\n  const set = useCallback((values: SpringTarget) => {\n    // Immediately set values without animation\n    const newValues = { ...values };\n    const newState: SpringState = {};\n\n    Object.keys(values).forEach((key) => {\n      newState[key] = {\n        position: values[key],\n        velocity: 0,\n        isAnimating: false,\n      };\n    });\n\n    stateRef.current = { ...stateRef.current, ...newState };\n    targetsRef.current = { ...targetsRef.current, ...values };\n    setValues((prev) => ({ ...prev, ...newValues }));\n  }, []);\n\n  const stop = useCallback(() => {\n    if (animationRef.current) {\n      cancelAnimationFrame(animationRef.current);\n      animationRef.current = undefined;\n    }\n\n    // Stop all animations\n    Object.keys(stateRef.current).forEach((key) => {\n      stateRef.current[key].isAnimating = false;\n    });\n\n    setIsAnimating(false);\n  }, []);\n\n  const reset = useCallback(() => {\n    stop();\n    setValues(initialValues);\n    targetsRef.current = { ...initialValues };\n\n    const resetState: SpringState = {};\n    Object.keys(initialValues).forEach((key) => {\n      resetState[key] = {\n        position: initialValues[key],\n        velocity: 0,\n        isAnimating: false,\n      };\n    });\n    stateRef.current = resetState;\n  }, [stop, initialValues]);\n\n  // Cleanup on unmount\n  useEffect(() => {\n    return () => {\n      if (animationRef.current !== undefined) {\n        cancelAnimationFrame(animationRef.current);\n      }\n    };\n  }, []);\n\n  return {\n    values,\n    isAnimating,\n    start,\n    set,\n    stop,\n    reset,\n    config,\n  };\n}\n\n// Hook for spring-based transforms\nexport function useSpringTransform(\n  initialTransform: {\n    x?: number;\n    y?: number;\n    scale?: number;\n    rotation?: number;\n    opacity?: number;\n  } = {},\n  options: MultiSpringOptions = {}\n) {\n  const springValues = {\n    x: initialTransform.x || 0,\n    y: initialTransform.y || 0,\n    scale: initialTransform.scale || 1,\n    rotation: initialTransform.rotation || 0,\n    opacity: initialTransform.opacity || 1,\n  };\n\n  const spring = useMultiSpring(springValues, {\n    ...options,\n    onUpdate: (values) => {\n      options.onUpdate?.(values);\n    },\n  });\n\n  const transform = `translate(${spring.values.x}px, ${spring.values.y}px) scale(${spring.values.scale}) rotate(${spring.values.rotation}deg)`;\n  const style = {\n    transform,\n    opacity: spring.values.opacity,\n  };\n\n  return {\n    ...spring,\n    transform,\n    style,\n  };\n}\n\n// Hook for spring-based color transitions\nexport function useSpringColor(\n  initialColor: string = \"var(--glass-black)\",\n  options: MultiSpringOptions = {}\n) {\n  // Parse initial color\n  const parseColor = (color: string) => {\n    const div = document.createElement(\"div\");\n    div.style.color = color;\n    document.body.appendChild(div);\n    const computed = getComputedStyle(div).color;\n    document.body.removeChild(div);\n\n    const match = computed.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n    if (match) {\n      return {\n        r: parseInt(match[1]),\n        g: parseInt(match[2]),\n        b: parseInt(match[3]),\n      };\n    }\n    return { r: 0, g: 0, b: 0 };\n  };\n\n  const initialColorValues = parseColor(initialColor);\n  const spring = useMultiSpring(initialColorValues, options);\n\n  const color = `rgb(${Math.round(spring.values.r)}, ${Math.round(spring.values.g)}, ${Math.round(spring.values.b)})`;\n\n  return {\n    ...spring,\n    color,\n  };\n}\n\n// Hook for spring-based array animations\nexport function useSpringArray(\n  initialArray: number[] = [],\n  options: MultiSpringOptions = {}\n) {\n  const springValues: SpringTarget = {};\n  initialArray.forEach((value, index) => {\n    springValues[`item-${index}`] = value;\n  });\n\n  const spring = useMultiSpring(springValues, options);\n\n  const array = Object.keys(spring.values)\n    .sort()\n    .map((key) => spring.values[key]);\n\n  return {\n    ...spring,\n    array,\n  };\n}\n\n// Utility functions for common spring patterns\nexport const createSpringPreset = (\n  preset: \"gentle\" | \"wobbly\" | \"stiff\" | \"slow\" | \"bouncy\"\n): SpringConfig => {\n  const presets = {\n    gentle: { stiffness: 120, damping: 14, mass: 1 },\n    wobbly: { stiffness: 180, damping: 12, mass: 1 },\n    stiff: { stiffness: 210, damping: 20, mass: 1 },\n    slow: { stiffness: 280, damping: 60, mass: 1 },\n    bouncy: { stiffness: 170, damping: 8, mass: 1 },\n  };\n\n  return presets[preset];\n};\n\nexport const createSpringSequence = (\n  targets: SpringTarget[],\n  config: SpringConfig = {}\n): SpringTarget[] => {\n  // Create a sequence of spring targets\n  return targets;\n};\n\nexport const interpolateSprings = (\n  springs: MultiSpringOptions[],\n  progress: number\n): SpringConfig => {\n  if (springs.length === 0) return DEFAULT_CONFIG;\n  if (springs.length === 1) return springs[0].config || DEFAULT_CONFIG;\n\n  const index = Math.floor(progress * (springs.length - 1));\n  const localProgress = (progress * (springs.length - 1)) % 1;\n\n  const current: Required<SpringConfig> = {\n    ...DEFAULT_CONFIG,\n    ...(springs[index]?.config || {}),\n  };\n  const next: Required<SpringConfig> = {\n    ...DEFAULT_CONFIG,\n    ...(springs[index + 1]?.config || {}),\n  };\n\n  return {\n    stiffness:\n      current.stiffness + (next.stiffness - current.stiffness) * localProgress,\n    damping: current.damping + (next.damping - current.damping) * localProgress,\n    mass: current.mass + (next.mass - current.mass) * localProgress,\n    precision:\n      current.precision + (next.precision - current.precision) * localProgress,\n    velocity:\n      current.velocity + (next.velocity - current.velocity) * localProgress,\n  };\n};\n", "\"use client\";\nimport React, {\n  forwardRef,\n  HTMLAttributes,\n  useEffect,\n  useMemo,\n  useState,\n} from \"react\";\nimport {\n  motion,\n  type HTMLMotionProps,\n  type Transition,\n  type Variants,\n} from \"framer-motion\";\nimport { cn } from \"@/design-system/utilsCore\";\n\nexport type AnimationPreset =\n  | \"fadeIn\"\n  | \"slideIn\"\n  | \"slideDown\"\n  | \"slideUp\"\n  | \"slideLeft\"\n  | \"slideRight\"\n  | \"scaleIn\"\n  | \"rotateIn\"\n  | \"bounceIn\"\n  | \"pulseIn\"\n  | \"none\";\n\nexport type AnimationEasing =\n  | \"linear\"\n  | \"ease\"\n  | \"ease-in\"\n  | \"ease-out\"\n  | \"ease-in-out\"\n  | \"spring\";\n\nexport interface MotionProps extends HTMLAttributes<HTMLDivElement> {\n  as?: React.ElementType;\n  preset?: AnimationPreset;\n  type?: \"fade\" | \"slide\" | \"scale\" | \"bounce\" | \"rotate\" | \"pulse\";\n  direction?: \"up\" | \"down\" | \"left\" | \"right\" | \"center\";\n  duration?: number;\n  delay?: number;\n  easing?: AnimationEasing;\n  animateOnMount?: boolean;\n  animateOnHover?: boolean;\n  animateOnScroll?: boolean;\n}\n\ntype SanitizableMotionProps = HTMLAttributes<HTMLDivElement> &\n  Partial<\n    Pick<\n      HTMLMotionProps<\"div\">,\n      | \"animate\"\n      | \"exit\"\n      | \"initial\"\n      | \"transition\"\n      | \"variants\"\n      | \"whileHover\"\n      | \"whileInView\"\n    >\n  > & {\n    consciousness?: unknown;\n  };\n\ntype MutableRecord = Record<string, unknown>;\n\nfunction isMutableRecord(value: unknown): value is MutableRecord {\n  return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\n// --- Utilities to avoid non-animatable background warnings ---\nfunction isSimpleColor(value: unknown): boolean {\n  if (typeof value !== \"string\") return false;\n  const v = value.trim();\n  if (v === \"transparent\") return true;\n  // rgb/rgba\n  if (/^rgba?\\(/i.test(v)) return true;\n  // hsl/hsla\n  if (/^hsla?\\(/i.test(v)) return true;\n  // hex\n  if (/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(v))\n    return true;\n  // CSS variable (often colors in this lib)\n  if (/^var\\(/i.test(v)) return true;\n  return false;\n}\n\nfunction coerceBackgroundKey<T>(obj: T): T {\n  if (!obj || typeof obj !== \"object\") return obj;\n\n  if (Array.isArray(obj)) {\n    return obj.map((value) => coerceBackgroundKey(value)) as T;\n  }\n\n  if (!isMutableRecord(obj)) return obj;\n\n  // Copy to avoid mutating user objects.\n  const copy: MutableRecord = { ...obj };\n  for (const key of Object.keys(copy)) {\n    const val = copy[key];\n    if (key === \"background\") {\n      if (isSimpleColor(val)) {\n        // Move to backgroundColor to make it animatable\n        copy.backgroundColor = val === \"transparent\" ? \"rgba(0, 0, 0, 0)\" : val;\n        delete copy.background;\n      }\n    } else if (val && typeof val === \"object\") {\n      copy[key] = coerceBackgroundKey(val);\n    }\n  }\n  return copy as T;\n}\n\n// Normalize easing values to what Framer Motion expects\nfunction normalizeEasingValue(value: unknown): unknown {\n  if (typeof value === \"string\") {\n    const e = value.trim().toLowerCase();\n    if (e === \"ease-in\") return \"easeIn\";\n    if (e === \"ease-out\") return \"easeOut\";\n    if (e === \"ease-in-out\" || e === \"ease\") return \"easeInOut\";\n    if (e === \"linear\") return \"linear\";\n    if (e.startsWith(\"cubic-bezier(\") && e.endsWith(\")\")) {\n      const nums = e\n        .slice(\"cubic-bezier(\".length, -1)\n        .split(\",\")\n        .map((n) => parseFloat(n.trim()))\n        .filter((n) => Number.isFinite(n));\n      if (nums.length === 4) return nums;\n    }\n  }\n  return value;\n}\n\n// Recursively walk an object and normalize transition.easing/ease occurrences.\nfunction normalizeTransitions<T>(obj: T): T {\n  if (!obj || typeof obj !== \"object\") return obj;\n\n  if (Array.isArray(obj)) {\n    return obj.map((value) => normalizeTransitions(value)) as T;\n  }\n\n  if (!isMutableRecord(obj)) return obj;\n\n  const copy: MutableRecord = { ...obj };\n  for (const key of Object.keys(copy)) {\n    const val = copy[key];\n    if (key === \"transition\") {\n      if (typeof val === \"string\") {\n        // Strings are not valid for Framer transitions; drop to avoid runtime errors\n        delete copy[key];\n        continue;\n      }\n      if (isMutableRecord(val)) {\n        const t: MutableRecord = { ...val };\n        if (\"easing\" in t && !(\"ease\" in t)) {\n          t.ease = normalizeEasingValue(t.easing);\n          delete t.easing;\n        } else if (\"ease\" in t) {\n          t.ease = normalizeEasingValue(t.ease);\n        }\n        copy[key] = t;\n      }\n    } else if (val && typeof val === \"object\") {\n      copy[key] = normalizeTransitions(val);\n    }\n  }\n  return copy as T;\n}\n\nfunction getVariants(preset: AnimationPreset): Variants {\n  switch (preset) {\n    case \"fadeIn\":\n      return { initial: { opacity: 0 }, animate: { opacity: 1 } };\n    case \"slideIn\":\n      return { initial: { opacity: 0, y: 16 }, animate: { opacity: 1, y: 0 } };\n    case \"slideDown\":\n      return { initial: { opacity: 0, y: -12 }, animate: { opacity: 1, y: 0 } };\n    case \"slideUp\":\n      return { initial: { opacity: 0, y: 12 }, animate: { opacity: 1, y: 0 } };\n    case \"slideLeft\":\n      return { initial: { opacity: 0, x: 12 }, animate: { opacity: 1, x: 0 } };\n    case \"slideRight\":\n      return { initial: { opacity: 0, x: -12 }, animate: { opacity: 1, x: 0 } };\n    case \"scaleIn\":\n      return {\n        initial: { opacity: 0, scale: 0.96 },\n        animate: { opacity: 1, scale: 1 },\n      };\n    case \"rotateIn\":\n      return {\n        initial: { opacity: 0, rotate: -8 },\n        animate: { opacity: 1, rotate: 0 },\n      };\n    case \"bounceIn\":\n      return {\n        initial: { opacity: 0, scale: 0.3 },\n        animate: {\n          opacity: 1,\n          scale: 1,\n          transition: { type: \"spring\", stiffness: 330, damping: 20 },\n        },\n      };\n    case \"pulseIn\":\n      return {\n        initial: { opacity: 0.8, scale: 1.04 },\n        animate: { opacity: 1, scale: 1 },\n      };\n    default:\n      return { initial: {}, animate: {} };\n  }\n}\n\nexport const MotionFramer = forwardRef<HTMLDivElement, MotionProps>(\n  (\n    {\n      preset = \"none\",\n      duration = 300,\n      delay = 0,\n      easing = \"ease-in-out\",\n      animateOnMount = true,\n      animateOnHover = false,\n      animateOnScroll = false,\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    // CRITICAL SSR FIX: Default to true (reduced motion) on server to prevent hydration mismatch\n    // Server-side can't detect actual preference, so we assume reduced motion for safety\n    // This prevents flash of animated content for users who prefer reduced motion\n    const [reduced, setReduced] = useState(true);\n    useEffect(() => {\n      if (typeof window === \"undefined\" || !(\"matchMedia\" in window)) return;\n      const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n      const update = () => setReduced(!!mq.matches);\n      update();\n      if (\"addEventListener\" in mq) {\n        mq.addEventListener(\"change\", update);\n        return () => mq.removeEventListener(\"change\", update);\n      } else {\n        // @ts-ignore older Safari\n        mq.addListener(update);\n        // @ts-ignore older Safari\n        return () => mq.removeListener(update);\n      }\n    }, []);\n\n    const effectivePreset = reduced ? \"none\" : preset;\n    const variants = useMemo(\n      () => getVariants(effectivePreset),\n      [effectivePreset]\n    );\n    const easingMap: Record<Exclude<AnimationEasing, \"spring\">, string> = {\n      linear: \"linear\",\n      ease: \"easeInOut\",\n      \"ease-in\": \"easeIn\",\n      \"ease-out\": \"easeOut\",\n      \"ease-in-out\": \"easeInOut\",\n    };\n    const transition: MutableRecord = reduced\n      ? { duration: 0.0001, delay: 0 }\n      : { duration: duration / 1000, delay: delay / 1000 };\n    if (easing === \"spring\") {\n      transition.type = \"spring\";\n    } else if (easing) {\n      transition.ease = easingMap[easing] || \"easeInOut\";\n    }\n\n    const baseProps: HTMLMotionProps<\"div\"> = {\n      ref,\n      className: cn(\"motion-primitive\", className),\n      style,\n      initial: reduced\n        ? undefined\n        : animateOnMount || animateOnScroll\n          ? \"initial\"\n          : undefined,\n      animate: reduced ? undefined : \"animate\",\n      variants,\n      transition: transition as Transition,\n    };\n\n    if (!reduced && animateOnScroll) {\n      baseProps.initial = \"initial\";\n      baseProps.whileInView = \"animate\";\n      baseProps.viewport = { once: true, amount: 0.2 };\n    }\n\n    if (!reduced && animateOnHover) {\n      baseProps.whileHover = { scale: 1.015 };\n    }\n\n    // Sanitize incoming motion props to avoid animating unsupported CSS shorthands like `background`\n    // and to normalize easing names in transition objects passed by callers.\n    let sanitizedProps: SanitizableMotionProps = { ...props };\n    // Strip non-DOM custom flags that might leak\n    if (\"consciousness\" in sanitizedProps) delete sanitizedProps.consciousness;\n    const coerce = <T,>(obj: T): T =>\n      normalizeTransitions(coerceBackgroundKey(obj));\n    if (sanitizedProps.animate && typeof sanitizedProps.animate === \"object\") {\n      sanitizedProps.animate = coerce(sanitizedProps.animate);\n    }\n    if (sanitizedProps.initial && typeof sanitizedProps.initial === \"object\") {\n      sanitizedProps.initial = coerce(sanitizedProps.initial);\n    }\n    if (sanitizedProps.exit && typeof sanitizedProps.exit === \"object\") {\n      sanitizedProps.exit = coerce(sanitizedProps.exit);\n    }\n    if (\n      sanitizedProps.whileHover &&\n      typeof sanitizedProps.whileHover === \"object\"\n    ) {\n      sanitizedProps.whileHover = coerce(sanitizedProps.whileHover);\n    }\n    if (\n      sanitizedProps.whileInView &&\n      typeof sanitizedProps.whileInView === \"object\"\n    ) {\n      sanitizedProps.whileInView = coerce(sanitizedProps.whileInView);\n    }\n    if (\n      sanitizedProps.variants &&\n      typeof sanitizedProps.variants === \"object\"\n    ) {\n      sanitizedProps.variants = coerce(sanitizedProps.variants);\n    }\n    if (sanitizedProps.transition) {\n      sanitizedProps = normalizeTransitions(sanitizedProps);\n    }\n    if (\n      sanitizedProps.style &&\n      typeof sanitizedProps.style === \"object\" &&\n      \"background\" in sanitizedProps.style\n    ) {\n      const styleWithBackground = sanitizedProps.style;\n      const bg = styleWithBackground.background;\n      if (typeof bg === \"string\" && isSimpleColor(bg)) {\n        sanitizedProps.style = {\n          ...styleWithBackground,\n          backgroundColor: bg === \"transparent\" ? \"rgba(0, 0, 0, 0)\" : bg,\n        };\n        delete sanitizedProps.style?.background;\n      }\n    }\n    const motionProps = sanitizedProps as HTMLMotionProps<\"div\">;\n\n    return (\n      <motion.div {...baseProps} {...motionProps}>\n        {children}\n      </motion.div>\n    );\n  }\n);\n\nMotionFramer.displayName = \"MotionFramer\";\n", "\"use client\";\n\nimport React, { forwardRef, useImperativeHandle, useRef } from \"react\";\nimport {\n  useLiquidGlassBackdrop,\n  type LiquidGlassBackdropOptions,\n  type LiquidGlassBackdropSample,\n} from \"../hooks/useLiquidGlassBackdrop\";\n\nexport interface LiquidGlassBackdropSamplerProps\n  extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">,\n    LiquidGlassBackdropOptions {\n  children?:\n    | React.ReactNode\n    | ((sample: LiquidGlassBackdropSample) => React.ReactNode);\n  onSample?: (sample: LiquidGlassBackdropSample) => void;\n}\n\nexport const LiquidGlassBackdropSampler = forwardRef<HTMLDivElement, LiquidGlassBackdropSamplerProps>(\n  ({ children, onSample, ...options }, ref) => {\n    const localRef = useRef<HTMLDivElement>(null);\n    useImperativeHandle(ref, () => localRef.current as HTMLDivElement);\n    const sample = useLiquidGlassBackdrop(localRef, options);\n\n    React.useEffect(() => {\n      onSample?.(sample);\n    }, [onSample, sample]);\n\n    const renderedChildren = typeof children === \"function\" ? children(sample) : children;\n\n    return (\n      <div\n        ref={localRef}\n        data-liquid-glass-backdrop-sampler=\"true\"\n        data-contrast-hint={sample.contrastHint}\n        data-requires-dimming={sample.requiresDimming ? \"true\" : \"false\"}\n      >\n        {renderedChildren}\n      </div>\n    );\n  }\n);\n\nLiquidGlassBackdropSampler.displayName = \"LiquidGlassBackdropSampler\";\n", "\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\nexport type LiquidGlassContrastHint = \"light\" | \"dark\" | \"mixed\";\n\nexport interface LiquidGlassBackdropSample {\n  luminance: number;\n  dominantColor: { r: number; g: number; b: number; a: number };\n  contrastHint: LiquidGlassContrastHint;\n  mediaRichness: number;\n  requiresDimming: boolean;\n  source: \"dom-grid\" | \"computed-style\" | \"theme\" | \"fallback\";\n}\n\nexport interface LiquidGlassBackdropOptions {\n  enabled?: boolean;\n  variant?: \"regular\" | \"clear\";\n  throttleMs?: number;\n  minContrastRatio?: number;\n  observeMutations?: boolean;\n  observeResize?: boolean;\n}\n\nconst FALLBACK_SAMPLE: LiquidGlassBackdropSample = {\n  luminance: 0.5,\n  dominantColor: { r: 128, g: 128, b: 128, a: 1 },\n  contrastHint: \"mixed\",\n  mediaRichness: 0,\n  requiresDimming: false,\n  source: \"fallback\",\n};\n\nfunction parseRgb(value: string | null | undefined) {\n  if (!value || value === \"transparent\") return null;\n  const match = value.match(/rgba?\\(([^)]+)\\)/i);\n  if (!match) return null;\n  const [r, g, b, a = \"1\"] = match[1].split(\",\").map((part) => part.trim());\n  const color = {\n    r: Number.parseFloat(r),\n    g: Number.parseFloat(g),\n    b: Number.parseFloat(b),\n    a: Number.parseFloat(a),\n  };\n  if ([color.r, color.g, color.b, color.a].some((channel) => Number.isNaN(channel))) {\n    return null;\n  }\n  return color;\n}\n\nfunction luminanceFor(color: { r: number; g: number; b: number }) {\n  const toLinear = (channel: number) => {\n    const normalized = channel / 255;\n    return normalized <= 0.03928\n      ? normalized / 12.92\n      : Math.pow((normalized + 0.055) / 1.055, 2.4);\n  };\n  return 0.2126 * toLinear(color.r) + 0.7152 * toLinear(color.g) + 0.0722 * toLinear(color.b);\n}\n\nfunction backdropElementAt(element: HTMLElement, x: number, y: number) {\n\n  if (\n    typeof document === \"undefined\" ||\n    typeof document.elementsFromPoint !== \"function\" ||\n    typeof document.elementFromPoint !== \"function\"\n  ) {\n    return element.parentElement;\n  }\n\n  try {\n    const stack = document.elementsFromPoint(x, y);\n    return stack.find((candidate) => candidate !== element && !element.contains(candidate)) as HTMLElement | undefined;\n  } catch {\n    return element.parentElement;\n  }\n}\n\nfunction getComputedBackdropColor(element: HTMLElement) {\n  const computed = window.getComputedStyle(element);\n  const color = parseRgb(computed.backgroundColor);\n  const image = computed.backgroundImage || \"\";\n  if (!color) return null;\n  return { color, image };\n}\n\nfunction sampleBackdropGrid(element: HTMLElement) {\n  const rect = element.getBoundingClientRect();\n  const points = [\n    [0.5, 0.5],\n    [0.2, 0.2],\n    [0.8, 0.2],\n    [0.2, 0.8],\n    [0.8, 0.8],\n    [0.5, 0.2],\n    [0.5, 0.8],\n    [0.2, 0.5],\n    [0.8, 0.5],\n  ];\n  const samples: Array<{ color: { r: number; g: number; b: number; a: number }; image: string }> = [];\n\n  for (const [xRatio, yRatio] of points) {\n    const target = backdropElementAt(\n      element,\n      rect.left + rect.width * xRatio,\n      rect.top + rect.height * yRatio\n    );\n    if (!target) continue;\n    const sample = getComputedBackdropColor(target);\n    if (sample) samples.push(sample);\n  }\n\n  return samples;\n}\n\nexport function sampleLiquidGlassBackdrop(\n  element: HTMLElement | null,\n  options: LiquidGlassBackdropOptions = {}\n): LiquidGlassBackdropSample {\n  if (typeof window === \"undefined\" || !element) {\n    return FALLBACK_SAMPLE;\n  }\n\n  const gridSamples = sampleBackdropGrid(element);\n  const target = backdropElementAt(\n    element,\n    element.getBoundingClientRect().left + element.offsetWidth / 2,\n    element.getBoundingClientRect().top + element.offsetHeight / 2\n  ) || element.parentElement || document.body;\n  const fallbackColor =\n    parseRgb(window.getComputedStyle(document.body).backgroundColor) ||\n    FALLBACK_SAMPLE.dominantColor;\n  const color =\n    gridSamples.length > 0\n      ? gridSamples.reduce(\n          (acc, sample) => ({\n            r: acc.r + sample.color.r / gridSamples.length,\n            g: acc.g + sample.color.g / gridSamples.length,\n            b: acc.b + sample.color.b / gridSamples.length,\n            a: acc.a + sample.color.a / gridSamples.length,\n          }),\n          { r: 0, g: 0, b: 0, a: 0 }\n        )\n      : getComputedBackdropColor(target)?.color || fallbackColor;\n\n  const imageCount = gridSamples.filter((sample) => sample.image && sample.image !== \"none\").length;\n  const mediaRichness =\n    gridSamples.length > 0\n      ? Math.min(1, imageCount / gridSamples.length + (gridSamples.length > 1 ? 0.1 : 0))\n      : getComputedBackdropColor(target)?.image && getComputedBackdropColor(target)?.image !== \"none\"\n        ? 0.85\n        : 0.15;\n  const luminance = luminanceFor(color);\n  const contrastHint: LiquidGlassContrastHint =\n    luminance > 0.68 ? \"light\" : luminance < 0.32 ? \"dark\" : \"mixed\";\n  const variant = options.variant ?? \"regular\";\n  const minContrastRatio = options.minContrastRatio ?? (variant === \"clear\" ? 7 : 4.5);\n  const requiresDimming =\n    variant === \"clear\" && (mediaRichness > 0.5 || contrastHint === \"mixed\" || minContrastRatio >= 7);\n\n  return {\n    luminance,\n    dominantColor: color,\n    contrastHint,\n    mediaRichness,\n    requiresDimming,\n    source: gridSamples.length > 1 ? \"dom-grid\" : \"computed-style\",\n  };\n}\n\nexport function useLiquidGlassBackdrop<T extends HTMLElement>(\n  ref: RefObject<T>,\n  options: LiquidGlassBackdropOptions = {}\n) {\n  const {\n    enabled = true,\n    throttleMs = 100,\n    observeMutations = true,\n    observeResize = true,\n  } = options;\n  const optionsRef = useRef(options);\n  const [sample, setSample] = useState<LiquidGlassBackdropSample>(FALLBACK_SAMPLE);\n\n  optionsRef.current = options;\n\n  const update = useMemo(() => {\n    let frame = 0;\n    let last = 0;\n    return () => {\n      if (!enabled || typeof window === \"undefined\") return;\n      const now = window.performance?.now?.() ?? Date.now();\n      if (now - last < throttleMs) return;\n      last = now;\n      if (frame) window.cancelAnimationFrame(frame);\n      frame = window.requestAnimationFrame(() => {\n        setSample(sampleLiquidGlassBackdrop(ref.current, optionsRef.current));\n      });\n    };\n  }, [enabled, ref, throttleMs]);\n\n  useEffect(() => {\n    if (!enabled || typeof window === \"undefined\") return;\n\n    update();\n    const target = ref.current;\n    const scrollTarget = target?.closest(\"[data-liquid-glass-scroll-target]\") || window;\n\n    window.addEventListener(\"resize\", update, { passive: true });\n    scrollTarget.addEventListener(\"scroll\", update as EventListener, { passive: true });\n\n    let resizeObserver: ResizeObserver | undefined;\n    if (observeResize && typeof ResizeObserver !== \"undefined\" && target) {\n      resizeObserver = new ResizeObserver(update);\n      resizeObserver.observe(target);\n    }\n\n    let mutationObserver: MutationObserver | undefined;\n    if (observeMutations && typeof MutationObserver !== \"undefined\" && target?.parentElement) {\n      mutationObserver = new MutationObserver(update);\n      mutationObserver.observe(target.parentElement, {\n        attributes: true,\n        childList: true,\n        subtree: true,\n        attributeFilter: [\"class\", \"style\", \"data-theme\"],\n      });\n    }\n\n    return () => {\n      window.removeEventListener(\"resize\", update);\n      scrollTarget.removeEventListener(\"scroll\", update as EventListener);\n      resizeObserver?.disconnect();\n      mutationObserver?.disconnect();\n    };\n  }, [enabled, observeMutations, observeResize, ref, update]);\n\n  return sample;\n}\n\nexport { FALLBACK_SAMPLE as LIQUID_GLASS_FALLBACK_BACKDROP_SAMPLE };\n", "\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport { cn } from \"../lib/utilsComprehensive\";\n\nexport type LiquidGlassConcentricShape = \"concentric\" | \"capsule\" | \"rounded-rect\" | \"fixed\";\nexport type LiquidGlassConcentricRadius = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\" | number;\n\nconst radiusMap: Record<Exclude<LiquidGlassConcentricRadius, number>, string> = {\n  sm: \"var(--glass-radius-sm, 6px)\",\n  md: \"var(--glass-radius-md, 8px)\",\n  lg: \"var(--glass-radius-lg, 12px)\",\n  xl: \"var(--glass-radius-xl, 16px)\",\n  \"2xl\": \"var(--glass-radius-2xl, 24px)\",\n  full: \"9999px\",\n};\n\nexport interface LiquidGlassConcentricFrameProps extends React.HTMLAttributes<HTMLDivElement> {\n  radius?: LiquidGlassConcentricRadius;\n  inset?: number;\n  shape?: LiquidGlassConcentricShape;\n  fallbackRadius?: number;\n  asChild?: boolean;\n  children?: React.ReactNode;\n}\n\nexport function getConcentricRadiusValue(\n  radius: LiquidGlassConcentricRadius = \"lg\",\n  inset = 0,\n  shape: LiquidGlassConcentricShape = \"concentric\",\n  fallbackRadius = 12\n) {\n  if (shape === \"capsule\") return \"9999px\";\n  const base = typeof radius === \"number\" ? `${radius}px` : radiusMap[radius] ?? `${fallbackRadius}px`;\n  if (shape === \"fixed\" || inset === 0) return base;\n  if (typeof radius === \"number\") return `${Math.max(radius - inset, 0)}px`;\n  return `max(calc(${base} - ${inset}px), ${fallbackRadius}px)`;\n}\n\nexport const LiquidGlassConcentricFrame = forwardRef<HTMLDivElement, LiquidGlassConcentricFrameProps>(\n  (\n    {\n      radius = \"lg\",\n      inset = 0,\n      shape = \"concentric\",\n      fallbackRadius = 8,\n      asChild = false,\n      children,\n      className,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    const baseRadius = typeof radius === \"number\" ? `${radius}px` : radiusMap[radius] ?? `${fallbackRadius}px`;\n    const computedRadius = getConcentricRadiusValue(radius, inset, shape, fallbackRadius);\n    const cssVars = {\n      \"--liquid-glass-parent-radius\": baseRadius,\n      \"--liquid-glass-frame-inset\": `${inset}px`,\n      \"--liquid-glass-frame-radius\": computedRadius,\n      borderRadius: \"var(--liquid-glass-frame-radius)\",\n    } as React.CSSProperties;\n\n    if (asChild && React.isValidElement(children)) {\n      return React.cloneElement(children as React.ReactElement<any>, {\n        ref,\n        className: cn((children as React.ReactElement<any>).props.className, className),\n        style: { ...cssVars, ...(children as React.ReactElement<any>).props.style, ...style },\n        \"data-liquid-glass-concentric-frame\": shape,\n        ...props,\n      });\n    }\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\"liquid-glass-concentric-frame\", className)}\n        style={{ ...cssVars, ...style }}\n        data-liquid-glass-concentric-frame={shape}\n        {...props}\n      >\n        {children}\n      </div>\n    );\n  }\n);\n\nLiquidGlassConcentricFrame.displayName = \"LiquidGlassConcentricFrame\";\n", "\"use client\";\n\nimport React, { createContext, forwardRef, useContext, useMemo } from \"react\";\nimport { cn } from \"../lib/utilsComprehensive\";\nimport { useReducedMotion } from \"../hooks/useReducedMotion\";\nimport {\n  LiquidGlassLayerProvider,\n  type LiquidGlassPerformanceLevel,\n} from \"./LiquidGlassLayerProvider\";\n\nexport type LiquidGlassSamplingStrategy = \"shared\" | \"isolated\" | \"auto\";\n\nexport interface LiquidGlassEffectGroupContextValue {\n  groupId: string;\n  spacing: number | string;\n  morph: boolean;\n  samplingStrategy: LiquidGlassSamplingStrategy;\n  performanceLevel: LiquidGlassPerformanceLevel;\n}\n\nconst LiquidGlassEffectGroupContext = createContext<LiquidGlassEffectGroupContextValue | null>(null);\n\nexport interface LiquidGlassEffectGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n  spacing?: number | string;\n  morph?: boolean;\n  samplingStrategy?: LiquidGlassSamplingStrategy;\n  performanceLevel?: LiquidGlassPerformanceLevel;\n  disabled?: boolean;\n  children?: React.ReactNode;\n}\n\nexport const LiquidGlassEffectGroup = forwardRef<HTMLDivElement, LiquidGlassEffectGroupProps>(\n  (\n    {\n      spacing = 12,\n      morph = true,\n      samplingStrategy = \"shared\",\n      performanceLevel = \"high\",\n      disabled = false,\n      className,\n      style,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const autoId = React.useId();\n    const prefersReducedMotion = useReducedMotion();\n    const effectiveMorph = morph && !prefersReducedMotion && !disabled;\n    const spacingValue = typeof spacing === \"number\" ? `${spacing}px` : spacing;\n    const value = useMemo<LiquidGlassEffectGroupContextValue>(\n      () => ({\n        groupId: props.id ?? autoId,\n        spacing,\n        morph: effectiveMorph,\n        samplingStrategy: disabled ? \"isolated\" : samplingStrategy,\n        performanceLevel,\n      }),\n      [autoId, disabled, effectiveMorph, performanceLevel, props.id, samplingStrategy, spacing]\n    );\n\n    const cssVars = {\n      \"--liquid-glass-group-spacing\": spacingValue,\n      \"--liquid-glass-group-morph\": effectiveMorph ? 1 : 0,\n    } as React.CSSProperties;\n\n    return (\n      <LiquidGlassEffectGroupContext.Provider value={value}>\n        <LiquidGlassLayerProvider\n          insideEffectGroup={!disabled}\n          performanceLevel={performanceLevel}\n        >\n          <div\n            ref={ref}\n            className={cn(\n              \"liquid-glass-effect-group glass-relative\",\n              effectiveMorph && \"liquid-glass-effect-group-morph\",\n              className\n            )}\n            style={{ ...cssVars, ...style }}\n            data-liquid-glass-effect-group={!disabled ? \"true\" : \"false\"}\n            data-sampling-strategy={value.samplingStrategy}\n            data-liquid-glass-group-id={value.groupId}\n            {...props}\n          >\n            {children}\n          </div>\n        </LiquidGlassLayerProvider>\n      </LiquidGlassEffectGroupContext.Provider>\n    );\n  }\n);\n\nLiquidGlassEffectGroup.displayName = \"LiquidGlassEffectGroup\";\n\nexport function useLiquidGlassEffectGroup() {\n  return useContext(LiquidGlassEffectGroupContext);\n}\n", "\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport { useReducedMotion } from \"../hooks/useReducedMotion\";\n\nexport type LiquidGlassPerformanceLevel = \"ultra\" | \"high\" | \"balanced\" | \"efficient\";\nexport type LiquidGlassVariant = \"regular\" | \"clear\";\n\nexport interface LiquidGlassLayerContextValue {\n  depth: number;\n  insideGlass: boolean;\n  insideEffectGroup: boolean;\n  variant: LiquidGlassVariant;\n  performanceLevel: LiquidGlassPerformanceLevel;\n  prefersReducedMotion: boolean;\n  allowNestedGlass: boolean;\n  contrastPolicy: \"AA\" | \"AAA\" | \"auto\";\n}\n\nconst LiquidGlassLayerContext = createContext<LiquidGlassLayerContextValue>({\n  depth: 0,\n  insideGlass: false,\n  insideEffectGroup: false,\n  variant: \"regular\",\n  performanceLevel: \"high\",\n  prefersReducedMotion: false,\n  allowNestedGlass: false,\n  contrastPolicy: \"auto\",\n});\n\nexport interface LiquidGlassLayerProviderProps {\n  children: React.ReactNode;\n  variant?: LiquidGlassVariant;\n  performanceLevel?: LiquidGlassPerformanceLevel;\n  allowNestedGlass?: boolean;\n  contrastPolicy?: \"AA\" | \"AAA\" | \"auto\";\n  insideEffectGroup?: boolean;\n}\n\nexport function LiquidGlassLayerProvider({\n  children,\n  variant,\n  performanceLevel,\n  allowNestedGlass,\n  contrastPolicy,\n  insideEffectGroup,\n}: LiquidGlassLayerProviderProps) {\n  const parent = useContext(LiquidGlassLayerContext);\n  const prefersReducedMotion = useReducedMotion();\n\n  const value = useMemo<LiquidGlassLayerContextValue>(\n    () => ({\n      depth: parent.depth,\n      insideGlass: parent.insideGlass,\n      insideEffectGroup: insideEffectGroup ?? parent.insideEffectGroup,\n      variant: variant ?? parent.variant,\n      performanceLevel: performanceLevel ?? parent.performanceLevel,\n      prefersReducedMotion,\n      allowNestedGlass: allowNestedGlass ?? parent.allowNestedGlass,\n      contrastPolicy: contrastPolicy ?? parent.contrastPolicy,\n    }),\n    [\n      allowNestedGlass,\n      contrastPolicy,\n      insideEffectGroup,\n      parent,\n      performanceLevel,\n      prefersReducedMotion,\n      variant,\n    ]\n  );\n\n  return (\n    <LiquidGlassLayerContext.Provider value={value}>\n      {children}\n    </LiquidGlassLayerContext.Provider>\n  );\n}\n\nexport function LiquidGlassSurfaceLayer({\n  children,\n  variant,\n  performanceLevel,\n  allowNestedGlass,\n}: {\n  children: React.ReactNode;\n  variant?: LiquidGlassVariant;\n  performanceLevel?: LiquidGlassPerformanceLevel;\n  allowNestedGlass?: boolean;\n}) {\n  const parent = useContext(LiquidGlassLayerContext);\n  const prefersReducedMotion = useReducedMotion();\n\n  const value = useMemo<LiquidGlassLayerContextValue>(\n    () => ({\n      ...parent,\n      depth: parent.depth + 1,\n      insideGlass: true,\n      variant: variant ?? parent.variant,\n      performanceLevel: performanceLevel ?? parent.performanceLevel,\n      prefersReducedMotion,\n      allowNestedGlass: allowNestedGlass ?? parent.allowNestedGlass,\n    }),\n    [allowNestedGlass, parent, performanceLevel, prefersReducedMotion, variant]\n  );\n\n  return (\n    <LiquidGlassLayerContext.Provider value={value}>\n      {children}\n    </LiquidGlassLayerContext.Provider>\n  );\n}\n\nexport function useLiquidGlassLayer() {\n  return useContext(LiquidGlassLayerContext);\n}\n\nexport { LiquidGlassLayerContext };\n", "\"use client\";\n\nimport React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../lib/utilsComprehensive\";\nimport { createGlassStyle } from \"../core/mixins/glassMixins\";\n\nexport type LiquidGlassScrollEdgeSide = \"top\" | \"bottom\" | \"left\" | \"right\";\nexport type LiquidGlassScrollEdgeStyle = \"soft\" | \"hard\" | \"none\";\n\nexport interface LiquidGlassScrollEdgeProps\n  extends React.HTMLAttributes<HTMLDivElement> {\n  edge?: LiquidGlassScrollEdgeSide;\n  styleMode?: LiquidGlassScrollEdgeStyle;\n  active?: boolean;\n  height?: number | string;\n  targetRef?: React.RefObject<HTMLElement>;\n  observeScroll?: boolean;\n  /**\n   * Renders children inside a relative scroll container and places the edge as\n   * an internal overlay. This prevents the common preview/app misuse where\n   * children were passed to the overlay-only primitive and disappeared.\n   */\n  asContainer?: boolean;\n  /** Class applied to the visual edge when rendering as a container. */\n  edgeClassName?: string;\n  /** Style applied to the visual edge when rendering as a container. */\n  edgeStyle?: React.CSSProperties;\n  /** Additional class for the generated scroll container. */\n  containerClassName?: string;\n  /** Additional style for the generated scroll container. */\n  containerStyle?: React.CSSProperties;\n}\n\nfunction getEdgeActive(target: HTMLElement, edge: LiquidGlassScrollEdgeSide) {\n  if (edge === \"top\") return target.scrollTop > 0;\n  if (edge === \"bottom\")\n    return target.scrollTop + target.clientHeight < target.scrollHeight - 1;\n  if (edge === \"left\") return target.scrollLeft > 0;\n  return target.scrollLeft + target.clientWidth < target.scrollWidth - 1;\n}\n\nexport const LiquidGlassScrollEdge = forwardRef<\n  HTMLDivElement,\n  LiquidGlassScrollEdgeProps\n>(\n  (\n    {\n      edge = \"top\",\n      styleMode = \"soft\",\n      active,\n      height = 32,\n      targetRef,\n      observeScroll = true,\n      asContainer = false,\n      edgeClassName,\n      edgeStyle,\n      containerClassName,\n      containerStyle,\n      children,\n      className,\n      style,\n      ...props\n    },\n    ref\n  ) => {\n    const [observedActive, setObservedActive] = useState(false);\n    const containerRef = useRef<HTMLDivElement | null>(null);\n    const isVertical = edge === \"top\" || edge === \"bottom\";\n    const size = typeof height === \"number\" ? `${height}px` : height;\n    const isActive = active ?? observedActive;\n    const shouldRenderContainer = asContainer || children !== undefined;\n    const setContainerNode = (node: HTMLDivElement | null) => {\n      containerRef.current = node;\n      if (typeof ref === \"function\") ref(node);\n      else if (ref) {\n        (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n      }\n    };\n\n    useEffect(() => {\n      if (\n        !observeScroll ||\n        typeof window === \"undefined\" ||\n        active !== undefined\n      )\n        return;\n      const target = targetRef?.current ?? containerRef.current;\n      if (!target) return;\n\n      const update = () => setObservedActive(getEdgeActive(target, edge));\n      update();\n      target.addEventListener(\"scroll\", update, { passive: true });\n      window.addEventListener(\"resize\", update, { passive: true });\n      return () => {\n        target.removeEventListener(\"scroll\", update);\n        window.removeEventListener(\"resize\", update);\n      };\n    }, [active, edge, observeScroll, targetRef]);\n\n    if (styleMode === \"none\" && !shouldRenderContainer) return null;\n\n    const edgePosition: React.CSSProperties =\n      edge === \"top\"\n        ? { top: 0, left: 0, right: 0, height: size }\n        : edge === \"bottom\"\n          ? { bottom: 0, left: 0, right: 0, height: size }\n          : edge === \"left\"\n            ? { left: 0, top: 0, bottom: 0, width: size }\n            : { right: 0, top: 0, bottom: 0, width: size };\n\n    const gradientDirection =\n      edge === \"top\"\n        ? \"to bottom\"\n        : edge === \"bottom\"\n          ? \"to top\"\n          : edge === \"left\"\n            ? \"to right\"\n            : \"to left\";\n    const glassEdgeStyle = createGlassStyle({\n      elevation: styleMode === \"hard\" ? \"level3\" : \"level2\",\n      tier: styleMode === \"hard\" ? \"high\" : \"medium\",\n    });\n\n    const renderEdge = (edgeRef?: React.ForwardedRef<HTMLDivElement>) => (\n      <div\n        ref={edgeRef}\n        aria-hidden=\"true\"\n        className={cn(\n          \"liquid-glass-scroll-edge glass-pointer-events-none glass-absolute glass-z-20\",\n          isActive ? \"glass-opacity-100\" : \"glass-opacity-0\",\n          shouldRenderContainer ? edgeClassName : className\n        )}\n        style={\n          {\n            ...glassEdgeStyle,\n            ...edgePosition,\n            \"--liquid-glass-scroll-edge-size\": size,\n            \"--liquid-glass-scroll-edge-active\": isActive ? 1 : 0,\n            background:\n              styleMode === \"hard\"\n                ? \"var(--liquid-glass-scroll-edge-hard-background, rgba(255,255,255,0.18))\"\n                : `linear-gradient(${gradientDirection}, var(--liquid-glass-scroll-edge-soft-background, rgba(255,255,255,0.2)), transparent)`,\n            transition:\n              \"opacity var(--liquid-glass-scroll-edge-transition, 160ms ease)\",\n            ...(shouldRenderContainer ? edgeStyle : style),\n          } as React.CSSProperties\n        }\n        data-liquid-glass-scroll-edge={edge}\n        data-liquid-glass-scroll-edge-style={styleMode}\n        data-active={isActive ? \"true\" : \"false\"}\n        {...(!shouldRenderContainer ? props : {})}\n      />\n    );\n\n    if (!shouldRenderContainer) {\n      return renderEdge(ref);\n    }\n\n    if (styleMode === \"none\") {\n      return (\n        <div\n          ref={setContainerNode}\n          className={cn(\n            \"liquid-glass-scroll-edge-container glass-relative glass-overflow-hidden\",\n            className,\n            containerClassName\n          )}\n          style={{ ...style, ...containerStyle }}\n          {...props}\n        >\n          {children}\n        </div>\n      );\n    }\n\n    return (\n      <div\n        ref={setContainerNode}\n        className={cn(\n          \"liquid-glass-scroll-edge-container glass-relative glass-overflow-hidden\",\n          isVertical ? \"glass-overflow-y-auto\" : \"glass-overflow-x-auto\",\n          className,\n          containerClassName\n        )}\n        style={{ ...style, ...containerStyle }}\n        data-liquid-glass-scroll-edge-container={edge}\n        {...props}\n      >\n        {children}\n        {renderEdge()}\n      </div>\n    );\n  }\n);\n\nLiquidGlassScrollEdge.displayName = \"LiquidGlassScrollEdge\";\n", "\"use client\";\n\nimport React, { createContext, forwardRef, useCallback, useContext, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../lib/utilsComprehensive\";\nimport { useReducedMotion } from \"../hooks/useReducedMotion\";\n\nexport interface LiquidGlassTransitionRegistration {\n  id: string;\n  rect: DOMRect | null;\n}\n\nexport interface LiquidGlassTransitionContextValue {\n  activeId: string | null;\n  registerSource: (id: string, element: HTMLElement | null) => void;\n  registerDestination: (id: string, element: HTMLElement | null) => void;\n  start: (id: string) => void;\n  end: () => void;\n  getSource: (id: string) => DOMRect | null;\n  getDestination: (id: string) => DOMRect | null;\n  reducedMotion: boolean;\n}\n\nconst LiquidGlassTransitionContext = createContext<LiquidGlassTransitionContextValue | null>(null);\n\nexport interface LiquidGlassTransitionProviderProps {\n  children: React.ReactNode;\n  namespace?: string;\n  disabled?: boolean;\n  duration?: number;\n}\n\nexport function LiquidGlassTransitionProvider({\n  children,\n  disabled = false,\n}: LiquidGlassTransitionProviderProps) {\n  const [activeId, setActiveId] = useState<string | null>(null);\n  const sources = useRef(new Map<string, HTMLElement>());\n  const destinations = useRef(new Map<string, HTMLElement>());\n  const reducedMotion = useReducedMotion();\n\n  const registerSource = useCallback((id: string, element: HTMLElement | null) => {\n    if (element) sources.current.set(id, element);\n    else sources.current.delete(id);\n  }, []);\n\n  const registerDestination = useCallback((id: string, element: HTMLElement | null) => {\n    if (element) destinations.current.set(id, element);\n    else destinations.current.delete(id);\n  }, []);\n\n  const value = useMemo<LiquidGlassTransitionContextValue>(\n    () => ({\n      activeId,\n      registerSource,\n      registerDestination,\n      start: (id) => !disabled && setActiveId(id),\n      end: () => setActiveId(null),\n      getSource: (id) => sources.current.get(id)?.getBoundingClientRect() ?? null,\n      getDestination: (id) => destinations.current.get(id)?.getBoundingClientRect() ?? null,\n      reducedMotion: reducedMotion || disabled,\n    }),\n    [activeId, disabled, reducedMotion, registerDestination, registerSource]\n  );\n\n  return (\n    <LiquidGlassTransitionContext.Provider value={value}>\n      {children}\n    </LiquidGlassTransitionContext.Provider>\n  );\n}\n\nexport interface LiquidGlassSourceProps extends React.HTMLAttributes<HTMLDivElement> {\n  id: string;\n  asChild?: boolean;\n  children?: React.ReactNode;\n}\n\nexport const LiquidGlassSource = forwardRef<HTMLDivElement, LiquidGlassSourceProps>(\n  ({ id, asChild = false, children, className, onClick, ...props }, ref) => {\n    const context = useLiquidGlassTransition();\n    const localRef = useRef<HTMLElement | null>(null);\n    const setRef = useCallback(\n      (node: HTMLElement | null) => {\n        localRef.current = node;\n        context?.registerSource(id, node);\n        if (typeof ref === \"function\") ref(node as HTMLDivElement | null);\n        else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node as HTMLDivElement | null;\n      },\n      [context, id, ref]\n    );\n\n    const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n      context?.start(id);\n      onClick?.(event);\n    };\n\n    if (asChild && React.isValidElement(children)) {\n      return React.cloneElement(children as React.ReactElement<any>, {\n        ref: setRef,\n        onClick: handleClick,\n        \"data-liquid-glass-transition-source\": id,\n      });\n    }\n\n    return (\n      <div\n        ref={setRef}\n        className={cn(\"liquid-glass-transition-source\", className)}\n        onClick={handleClick}\n        data-liquid-glass-transition-source={id}\n        {...props}\n      >\n        {children}\n      </div>\n    );\n  }\n);\n\nLiquidGlassSource.displayName = \"LiquidGlassSource\";\n\nexport interface LiquidGlassDestinationProps extends React.HTMLAttributes<HTMLDivElement> {\n  id: string;\n  open?: boolean;\n  children?: React.ReactNode;\n}\n\nexport const LiquidGlassDestination = forwardRef<HTMLDivElement, LiquidGlassDestinationProps>(\n  ({ id, open = true, children, className, style, ...props }, ref) => {\n    const context = useLiquidGlassTransition();\n    const setRef = useCallback(\n      (node: HTMLDivElement | null) => {\n        context?.registerDestination(id, node);\n        if (typeof ref === \"function\") ref(node);\n        else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n      },\n      [context, id, ref]\n    );\n\n    const isActive = context?.activeId === id;\n    const sourceRect = context?.getSource(id);\n    const transformOrigin = sourceRect ? `${sourceRect.left + sourceRect.width / 2}px ${sourceRect.top + sourceRect.height / 2}px` : undefined;\n\n    if (!open) return null;\n\n    return (\n      <div\n        ref={setRef}\n        className={cn(\n          \"liquid-glass-transition-destination\",\n          isActive && \"liquid-glass-transition-active\",\n          context?.reducedMotion && \"liquid-glass-transition-reduced-motion\",\n          className\n        )}\n        style={{\n          transformOrigin,\n          transition: context?.reducedMotion\n            ? \"opacity 1ms linear\"\n            : \"transform var(--liquid-glass-source-transition-duration, 220ms) var(--liquid-glass-source-transition-easing, cubic-bezier(.2,.8,.2,1)), opacity 160ms ease\",\n          ...style,\n        }}\n        data-liquid-glass-transition-destination={id}\n        data-liquid-glass-transition-active={isActive ? \"true\" : \"false\"}\n        {...props}\n      >\n        {children}\n      </div>\n    );\n  }\n);\n\nLiquidGlassDestination.displayName = \"LiquidGlassDestination\";\n\nexport function useLiquidGlassTransition() {\n  return useContext(LiquidGlassTransitionContext);\n}\n", "\"use client\";\n\nimport React from \"react\";\n\ntype AnyProps = Record<string, unknown>;\ntype AnyEventHandler = (event: unknown) => void;\n\nconst composeRefs = <T,>(\n  forwardedRef: React.Ref<T> | undefined,\n  childRef: React.Ref<T> | undefined\n) => {\n  return (node: T | null) => {\n    if (typeof childRef === \"function\") {\n      childRef(node);\n    } else if (childRef) {\n      (childRef as React.MutableRefObject<T | null>).current = node;\n    }\n\n    if (typeof forwardedRef === \"function\") {\n      forwardedRef(node);\n    } else if (forwardedRef) {\n      (forwardedRef as React.MutableRefObject<T | null>).current = node;\n    }\n  };\n};\n\nconst isEventHandler = (key: string, value: unknown) =>\n  /^on[A-Z]/.test(key) && typeof value === \"function\";\n\nconst mergeProps = (slotProps: AnyProps, childProps: AnyProps) => {\n  const mergedProps = { ...slotProps, ...childProps };\n\n  for (const key of Object.keys(slotProps)) {\n    const slotValue = slotProps[key];\n    const childValue = childProps[key];\n\n    if (isEventHandler(key, slotValue) && isEventHandler(key, childValue)) {\n      mergedProps[key] = (event: unknown) => {\n        (childValue as AnyEventHandler)(event);\n\n        if (\n          !(\n            event &&\n            typeof event === \"object\" &&\n            \"defaultPrevented\" in event &&\n            event.defaultPrevented\n          )\n        ) {\n          (slotValue as AnyEventHandler)(event);\n        }\n      };\n    } else if (key === \"style\") {\n      mergedProps[key] = {\n        ...(slotValue as React.CSSProperties),\n        ...(childValue as React.CSSProperties),\n      };\n    } else if (key === \"className\") {\n      mergedProps[key] = [slotValue, childValue].filter(Boolean).join(\" \");\n    }\n  }\n\n  return mergedProps;\n};\n\nexport interface SlotProps extends React.HTMLAttributes<HTMLElement> {\n  children?: React.ReactNode;\n}\n\nexport const Slot = React.forwardRef<HTMLElement, SlotProps>(\n  ({ children, ...props }, forwardedRef) => {\n    if (!React.isValidElement(children)) {\n      return null;\n    }\n\n    const child = children as React.ReactElement<AnyProps>;\n    const childRef = (child as unknown as { ref?: React.Ref<HTMLElement> }).ref;\n\n    return React.cloneElement(child, {\n      ...mergeProps(props as AnyProps, child.props),\n      ref: composeRefs(forwardedRef, childRef),\n    });\n  }\n);\n\nSlot.displayName = \"Slot\";\n\nexport const GlassSlot = Slot;\n\nexport default Slot;\n", "\"use client\";\n\nimport React from \"react\";\n\nexport interface LabelProps\n  extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n  (props, ref) => <label ref={ref} {...props} />\n);\n\nLabel.displayName = \"Label\";\n\nexport const Root = Label;\n\nexport default Label;\n", "\"use client\";\n\nimport React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nexport interface PortalProps {\n  children?: React.ReactNode;\n  container?: HTMLElement | null;\n  forceMount?: boolean;\n}\n\nexport function Portal({\n  children,\n  container,\n  forceMount = false,\n}: PortalProps) {\n  const [mounted, setMounted] = React.useState(false);\n\n  React.useEffect(() => {\n    setMounted(true);\n  }, []);\n\n  if (!mounted && !forceMount) {\n    return null;\n  }\n\n  const target =\n    container ?? (typeof document !== \"undefined\" ? document.body : null);\n\n  if (!target) {\n    return null;\n  }\n\n  return createPortal(children, target);\n}\n\nPortal.displayName = \"Portal\";\n\nexport const GlassPortal = Portal;\n\nexport default Portal;\n", "\"use client\";\n\nimport React from \"react\";\n\nexport type DismissableLayerOutsideEvent =\n  | PointerEvent\n  | MouseEvent\n  | TouchEvent\n  | FocusEvent;\n\nexport interface DismissableLayerProps\n  extends React.HTMLAttributes<HTMLDivElement> {\n  disabled?: boolean;\n  disableOutsidePointerEvents?: boolean;\n  onEscapeKeyDown?: (event: KeyboardEvent) => void;\n  onPointerDownOutside?: (event: DismissableLayerOutsideEvent) => void;\n  onFocusOutside?: (event: FocusEvent) => void;\n  onInteractOutside?: (event: DismissableLayerOutsideEvent) => void;\n  onDismiss?: () => void;\n}\n\nconst withPreventedTracking = <EventType extends Event>(\n  event: EventType,\n  dispatch: (event: EventType) => void\n) => {\n  let prevented = false;\n  const preventDefault = event.preventDefault.bind(event);\n  event.preventDefault = () => {\n    prevented = true;\n    preventDefault();\n  };\n\n  dispatch(event);\n\n  return prevented || event.defaultPrevented;\n};\n\nexport const DismissableLayer = React.forwardRef<\n  HTMLDivElement,\n  DismissableLayerProps\n>(\n  (\n    {\n      disabled = false,\n      disableOutsidePointerEvents = false,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      style,\n      ...props\n    },\n    forwardedRef\n  ) => {\n    const localRef = React.useRef<HTMLDivElement | null>(null);\n    const ignoreFocusOutsideRef = React.useRef(false);\n\n    const setRef = React.useCallback(\n      (node: HTMLDivElement | null) => {\n        localRef.current = node;\n        if (typeof forwardedRef === \"function\") {\n          forwardedRef(node);\n        } else if (forwardedRef) {\n          (\n            forwardedRef as React.MutableRefObject<HTMLDivElement | null>\n          ).current = node;\n        }\n      },\n      [forwardedRef]\n    );\n\n    React.useEffect(() => {\n      if (disabled) return;\n\n      const handlePointerDown = (event: PointerEvent) => {\n        const target = event.target as Node | null;\n        if (!target || localRef.current?.contains(target)) return;\n\n        const prevented = withPreventedTracking(event, (trackedEvent) => {\n          onPointerDownOutside?.(trackedEvent);\n          onInteractOutside?.(trackedEvent);\n        });\n        ignoreFocusOutsideRef.current = true;\n        window.setTimeout(() => {\n          ignoreFocusOutsideRef.current = false;\n        }, 0);\n\n        if (!prevented) {\n          onDismiss?.();\n        }\n      };\n\n      const handleFocusIn = (event: FocusEvent) => {\n        if (ignoreFocusOutsideRef.current) return;\n\n        const target = event.target as Node | null;\n        if (!target || localRef.current?.contains(target)) return;\n\n        const prevented = withPreventedTracking(event, (trackedEvent) => {\n          onFocusOutside?.(trackedEvent);\n          onInteractOutside?.(trackedEvent);\n        });\n\n        if (!prevented) {\n          onDismiss?.();\n        }\n      };\n\n      const handleKeyDown = (event: KeyboardEvent) => {\n        if (event.key !== \"Escape\") return;\n\n        const prevented = withPreventedTracking(event, (trackedEvent) => {\n          onEscapeKeyDown?.(trackedEvent);\n        });\n\n        if (!prevented) {\n          onDismiss?.();\n        }\n      };\n\n      document.addEventListener(\"pointerdown\", handlePointerDown, true);\n      document.addEventListener(\"focusin\", handleFocusIn, true);\n      document.addEventListener(\"keydown\", handleKeyDown);\n\n      return () => {\n        document.removeEventListener(\"pointerdown\", handlePointerDown, true);\n        document.removeEventListener(\"focusin\", handleFocusIn, true);\n        document.removeEventListener(\"keydown\", handleKeyDown);\n      };\n    }, [\n      disabled,\n      onDismiss,\n      onEscapeKeyDown,\n      onFocusOutside,\n      onInteractOutside,\n      onPointerDownOutside,\n    ]);\n\n    React.useEffect(() => {\n      if (!disableOutsidePointerEvents) return;\n\n      const previousPointerEvents = document.body.style.pointerEvents;\n      document.body.style.pointerEvents = \"none\";\n\n      return () => {\n        document.body.style.pointerEvents = previousPointerEvents;\n      };\n    }, [disableOutsidePointerEvents]);\n\n    return (\n      <div\n        ref={setRef}\n        style={{\n          pointerEvents: disableOutsidePointerEvents ? \"auto\" : undefined,\n          ...style,\n        }}\n        {...props}\n      />\n    );\n  }\n);\n\nDismissableLayer.displayName = \"DismissableLayer\";\n\nexport const GlassDismissableLayer = DismissableLayer;\n\nexport default DismissableLayer;\n", "\"use client\";\n\nimport React from \"react\";\n\nconst FOCUSABLE_SELECTOR = [\n  \"a[href]:not([disabled])\",\n  \"button:not([disabled])\",\n  \"textarea:not([disabled])\",\n  \"input:not([disabled])\",\n  \"select:not([disabled])\",\n  '[tabindex]:not([tabindex=\"-1\"])',\n  '[contenteditable=\"true\"]',\n  \"audio[controls]\",\n  \"video[controls]\",\n  \"details>summary:first-of-type\",\n].join(\",\");\n\nconst getFocusableElements = (container: HTMLElement | null) => {\n  if (!container) return [];\n\n  return Array.from(\n    container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)\n  ).filter((element) => {\n    const style = window.getComputedStyle(element);\n    return (\n      style.display !== \"none\" &&\n      style.visibility !== \"hidden\" &&\n      !element.hasAttribute(\"disabled\") &&\n      element.getAttribute(\"aria-hidden\") !== \"true\"\n    );\n  });\n};\n\nexport interface FocusScopeProps extends React.HTMLAttributes<HTMLDivElement> {\n  trapped?: boolean;\n  loop?: boolean;\n  autoFocus?: boolean;\n  restoreFocus?: boolean;\n  onMountAutoFocus?: (event: Event) => void;\n  onUnmountAutoFocus?: (event: Event) => void;\n}\n\nexport const FocusScope = React.forwardRef<HTMLDivElement, FocusScopeProps>(\n  (\n    {\n      trapped = false,\n      loop = false,\n      autoFocus = false,\n      restoreFocus = true,\n      onMountAutoFocus,\n      onUnmountAutoFocus,\n      children,\n      ...props\n    },\n    forwardedRef\n  ) => {\n    const localRef = React.useRef<HTMLDivElement | null>(null);\n    const previousFocusRef = React.useRef<HTMLElement | null>(null);\n\n    const setRef = React.useCallback(\n      (node: HTMLDivElement | null) => {\n        localRef.current = node;\n        if (typeof forwardedRef === \"function\") {\n          forwardedRef(node);\n        } else if (forwardedRef) {\n          (\n            forwardedRef as React.MutableRefObject<HTMLDivElement | null>\n          ).current = node;\n        }\n      },\n      [forwardedRef]\n    );\n\n    React.useEffect(() => {\n      previousFocusRef.current = document.activeElement as HTMLElement | null;\n\n      if (autoFocus) {\n        const event = new Event(\"focusScope.autoFocus\", { cancelable: true });\n        onMountAutoFocus?.(event);\n        if (!event.defaultPrevented) {\n          window.setTimeout(\n            () => getFocusableElements(localRef.current)[0]?.focus(),\n            0\n          );\n        }\n      }\n\n      return () => {\n        const event = new Event(\"focusScope.restoreFocus\", {\n          cancelable: true,\n        });\n        onUnmountAutoFocus?.(event);\n\n        if (restoreFocus && !event.defaultPrevented) {\n          previousFocusRef.current?.focus();\n        }\n      };\n    }, [autoFocus, onMountAutoFocus, onUnmountAutoFocus, restoreFocus]);\n\n    React.useEffect(() => {\n      if (!trapped && !loop) return;\n\n      const handleKeyDown = (event: KeyboardEvent) => {\n        if (event.key !== \"Tab\") return;\n\n        const focusables = getFocusableElements(localRef.current);\n        if (focusables.length === 0) return;\n\n        const first = focusables[0];\n        const last = focusables[focusables.length - 1];\n        const active = document.activeElement as HTMLElement | null;\n\n        if (\n          !event.shiftKey &&\n          (active === last || !localRef.current?.contains(active))\n        ) {\n          event.preventDefault();\n          first.focus();\n        } else if (\n          event.shiftKey &&\n          (active === first || !localRef.current?.contains(active))\n        ) {\n          event.preventDefault();\n          last.focus();\n        }\n      };\n\n      const handleFocusIn = (event: FocusEvent) => {\n        if (!trapped) return;\n        const target = event.target as Node | null;\n        if (!target || localRef.current?.contains(target)) return;\n\n        event.preventDefault();\n        getFocusableElements(localRef.current)[0]?.focus();\n      };\n\n      document.addEventListener(\"keydown\", handleKeyDown);\n      document.addEventListener(\"focusin\", handleFocusIn, true);\n\n      return () => {\n        document.removeEventListener(\"keydown\", handleKeyDown);\n        document.removeEventListener(\"focusin\", handleFocusIn, true);\n      };\n    }, [loop, trapped]);\n\n    return (\n      <div ref={setRef} data-focus-scope=\"\" {...props}>\n        {children}\n      </div>\n    );\n  }\n);\n\nFocusScope.displayName = \"FocusScope\";\n\nexport const GlassFocusScope = FocusScope;\n\nexport default FocusScope;\n", "\"use client\";\n\nimport React from \"react\";\nimport { Slot } from \"./Slot\";\n\ntype Orientation = \"horizontal\" | \"vertical\" | \"both\";\n\ntype RovingFocusContextValue = {\n  orientation: Orientation;\n  loop: boolean;\n  dir: \"ltr\" | \"rtl\";\n  currentTabStopId: string | null;\n  setCurrentTabStopId: (id: string) => void;\n  registerItem: (id: string, node: HTMLElement) => void;\n  unregisterItem: (id: string) => void;\n  focusByDelta: (id: string, delta: number) => void;\n  focusFirst: () => void;\n  focusLast: () => void;\n};\n\nconst RovingFocusContext = React.createContext<RovingFocusContextValue | null>(\n  null\n);\n\nexport interface RovingFocusGroupRootProps\n  extends React.HTMLAttributes<HTMLDivElement> {\n  orientation?: Orientation;\n  loop?: boolean;\n  defaultCurrentTabStopId?: string;\n  dir?: \"ltr\" | \"rtl\";\n}\n\nexport const RovingFocusGroupRoot = React.forwardRef<\n  HTMLDivElement,\n  RovingFocusGroupRootProps\n>(\n  (\n    {\n      orientation = \"horizontal\",\n      loop = false,\n      defaultCurrentTabStopId,\n      dir = \"ltr\",\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const itemsRef = React.useRef<Map<string, HTMLElement>>(new Map());\n    const [currentTabStopId, setCurrentTabStopId] = React.useState<\n      string | null\n    >(defaultCurrentTabStopId ?? null);\n\n    const registerItem = React.useCallback((id: string, node: HTMLElement) => {\n      itemsRef.current.set(id, node);\n      setCurrentTabStopId((current) => current ?? id);\n    }, []);\n\n    const unregisterItem = React.useCallback((id: string) => {\n      itemsRef.current.delete(id);\n      setCurrentTabStopId((current) => (current === id ? null : current));\n    }, []);\n\n    const focusByDelta = React.useCallback(\n      (id: string, delta: number) => {\n        const entries = Array.from(itemsRef.current.entries()).filter(\n          ([, node]) =>\n            !node.hasAttribute(\"disabled\") &&\n            node.getAttribute(\"aria-disabled\") !== \"true\"\n        );\n        const index = entries.findIndex(([entryId]) => entryId === id);\n        if (index === -1 || entries.length === 0) return;\n\n        let nextIndex = index + delta;\n        if (loop) {\n          nextIndex = (nextIndex + entries.length) % entries.length;\n        } else {\n          nextIndex = Math.max(0, Math.min(entries.length - 1, nextIndex));\n        }\n\n        const [nextId, nextNode] = entries[nextIndex];\n        setCurrentTabStopId(nextId);\n        nextNode.focus();\n      },\n      [loop]\n    );\n\n    const focusByIndex = React.useCallback((index: number) => {\n      const entries = Array.from(itemsRef.current.entries()).filter(\n        ([, node]) =>\n          !node.hasAttribute(\"disabled\") &&\n          node.getAttribute(\"aria-disabled\") !== \"true\"\n      );\n      const [nextId, nextNode] = entries[index] || [];\n      if (!nextId || !nextNode) return;\n\n      setCurrentTabStopId(nextId);\n      nextNode.focus();\n    }, []);\n\n    const focusFirst = React.useCallback(() => {\n      focusByIndex(0);\n    }, [focusByIndex]);\n\n    const focusLast = React.useCallback(() => {\n      const enabledCount = Array.from(itemsRef.current.values()).filter(\n        (node) =>\n          !node.hasAttribute(\"disabled\") &&\n          node.getAttribute(\"aria-disabled\") !== \"true\"\n      ).length;\n      focusByIndex(enabledCount - 1);\n    }, [focusByIndex]);\n\n    const value = React.useMemo(\n      () => ({\n        orientation,\n        loop,\n        dir,\n        currentTabStopId,\n        setCurrentTabStopId,\n        registerItem,\n        unregisterItem,\n        focusByDelta,\n        focusFirst,\n        focusLast,\n      }),\n      [\n        currentTabStopId,\n        dir,\n        focusFirst,\n        focusLast,\n        focusByDelta,\n        loop,\n        orientation,\n        registerItem,\n        unregisterItem,\n      ]\n    );\n\n    return (\n      <RovingFocusContext.Provider value={value}>\n        <div\n          ref={ref}\n          role={props.role}\n          dir={dir}\n          data-roving-focus-group=\"\"\n          {...props}\n        >\n          {children}\n        </div>\n      </RovingFocusContext.Provider>\n    );\n  }\n);\n\nRovingFocusGroupRoot.displayName = \"RovingFocusGroupRoot\";\n\nexport interface RovingFocusGroupItemProps\n  extends React.HTMLAttributes<HTMLElement> {\n  asChild?: boolean;\n  disabled?: boolean;\n}\n\nexport const RovingFocusGroupItem = React.forwardRef<\n  HTMLElement,\n  RovingFocusGroupItemProps\n>(\n  (\n    { asChild = false, disabled = false, onKeyDown, onFocus, ...props },\n    ref\n  ) => {\n    const context = React.useContext(RovingFocusContext);\n    const id = React.useId();\n    const localRef = React.useRef<HTMLElement | null>(null);\n    const Comp = asChild ? Slot : \"div\";\n\n    React.useEffect(() => {\n      if (!context || !localRef.current) return;\n\n      context.registerItem(id, localRef.current);\n      return () => context.unregisterItem(id);\n    }, [context, id]);\n\n    const setRef = React.useCallback(\n      (node: HTMLElement | null) => {\n        localRef.current = node;\n        if (typeof ref === \"function\") {\n          ref(node);\n        } else if (ref) {\n          (ref as React.MutableRefObject<HTMLElement | null>).current = node;\n        }\n      },\n      [ref]\n    );\n\n    const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n      onKeyDown?.(event);\n      if (event.defaultPrevented || !context) return;\n\n      const horizontal =\n        context.orientation === \"horizontal\" || context.orientation === \"both\";\n      const vertical =\n        context.orientation === \"vertical\" || context.orientation === \"both\";\n\n      if (event.key === \"Home\") {\n        event.preventDefault();\n        context.focusFirst();\n      } else if (event.key === \"End\") {\n        event.preventDefault();\n        context.focusLast();\n      } else if (horizontal && event.key === \"ArrowRight\") {\n        event.preventDefault();\n        context.focusByDelta(id, context.dir === \"rtl\" ? -1 : 1);\n      } else if (horizontal && event.key === \"ArrowLeft\") {\n        event.preventDefault();\n        context.focusByDelta(id, context.dir === \"rtl\" ? 1 : -1);\n      } else if (vertical && event.key === \"ArrowDown\") {\n        event.preventDefault();\n        context.focusByDelta(id, 1);\n      } else if (vertical && event.key === \"ArrowUp\") {\n        event.preventDefault();\n        context.focusByDelta(id, -1);\n      }\n    };\n\n    const handleFocus = (event: React.FocusEvent<HTMLElement>) => {\n      onFocus?.(event);\n      context?.setCurrentTabStopId(id);\n    };\n\n    const tabIndex = context?.currentTabStopId === id ? 0 : -1;\n\n    return (\n      <Comp\n        ref={setRef}\n        tabIndex={disabled ? undefined : tabIndex}\n        data-roving-focus-item=\"\"\n        aria-disabled={disabled || undefined}\n        onFocus={handleFocus}\n        onKeyDown={handleKeyDown}\n        {...props}\n      />\n    );\n  }\n);\n\nRovingFocusGroupItem.displayName = \"RovingFocusGroupItem\";\n\nexport const RovingFocusGroup = {\n  Root: RovingFocusGroupRoot,\n  Item: RovingFocusGroupItem,\n};\n\nexport const GlassRovingFocusGroup = RovingFocusGroup;\n\nexport default RovingFocusGroup;\n", "\"use client\";\n\nimport React from \"react\";\n\nexport type PositionerSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type PositionerAlign = \"start\" | \"center\" | \"end\";\n\nexport interface PositionerProps extends React.HTMLAttributes<HTMLDivElement> {\n  anchorRef?: React.RefObject<HTMLElement>;\n  side?: PositionerSide;\n  align?: PositionerAlign;\n  sideOffset?: number;\n  alignOffset?: number;\n  collisionPadding?: number;\n  strategy?: \"fixed\" | \"absolute\";\n  contained?: boolean;\n}\n\nconst getTopLeft = (\n  anchor: DOMRect,\n  floating: DOMRect,\n  side: PositionerSide,\n  align: PositionerAlign,\n  sideOffset: number,\n  alignOffset: number\n) => {\n  let top = 0;\n  let left = 0;\n\n  if (side === \"top\") top = anchor.top - floating.height - sideOffset;\n  if (side === \"bottom\") top = anchor.bottom + sideOffset;\n  if (side === \"left\") left = anchor.left - floating.width - sideOffset;\n  if (side === \"right\") left = anchor.right + sideOffset;\n\n  if (side === \"top\" || side === \"bottom\") {\n    if (align === \"start\") left = anchor.left + alignOffset;\n    if (align === \"center\")\n      left = anchor.left + anchor.width / 2 - floating.width / 2;\n    if (align === \"end\") left = anchor.right - floating.width - alignOffset;\n  } else {\n    if (align === \"start\") top = anchor.top + alignOffset;\n    if (align === \"center\")\n      top = anchor.top + anchor.height / 2 - floating.height / 2;\n    if (align === \"end\") top = anchor.bottom - floating.height - alignOffset;\n  }\n\n  return { top, left };\n};\n\nexport const Positioner = React.forwardRef<HTMLDivElement, PositionerProps>(\n  (\n    {\n      anchorRef,\n      side = \"bottom\",\n      align = \"center\",\n      sideOffset = 0,\n      alignOffset = 0,\n      collisionPadding = 8,\n      strategy = \"fixed\",\n      contained = false,\n      style,\n      children,\n      ...props\n    },\n    forwardedRef\n  ) => {\n    const localRef = React.useRef<HTMLDivElement | null>(null);\n    const [position, setPosition] = React.useState<React.CSSProperties>(() =>\n      contained\n        ? {}\n        : {\n            position: strategy,\n            top: -9999,\n            left: -9999,\n          }\n    );\n\n    const setRef = React.useCallback(\n      (node: HTMLDivElement | null) => {\n        localRef.current = node;\n        if (typeof forwardedRef === \"function\") {\n          forwardedRef(node);\n        } else if (forwardedRef) {\n          (\n            forwardedRef as React.MutableRefObject<HTMLDivElement | null>\n          ).current = node;\n        }\n      },\n      [forwardedRef]\n    );\n\n    const updatePosition = React.useCallback(() => {\n      if (contained) return;\n      const anchor = anchorRef?.current;\n      const floating = localRef.current;\n      if (!anchor || !floating) return;\n\n      const anchorRect = anchor.getBoundingClientRect();\n      const floatingRect = floating.getBoundingClientRect();\n      const next = getTopLeft(\n        anchorRect,\n        floatingRect,\n        side,\n        align,\n        sideOffset,\n        alignOffset\n      );\n\n      const maxLeft = window.innerWidth - floatingRect.width - collisionPadding;\n      const maxTop =\n        window.innerHeight - floatingRect.height - collisionPadding;\n\n      setPosition({\n        position: strategy,\n        top: Math.max(collisionPadding, Math.min(maxTop, next.top)),\n        left: Math.max(collisionPadding, Math.min(maxLeft, next.left)),\n      });\n    }, [\n      align,\n      alignOffset,\n      anchorRef,\n      collisionPadding,\n      contained,\n      side,\n      sideOffset,\n      strategy,\n    ]);\n\n    React.useLayoutEffect(() => {\n      updatePosition();\n    }, [children, updatePosition]);\n\n    React.useEffect(() => {\n      if (contained) return;\n\n      window.addEventListener(\"resize\", updatePosition);\n      window.addEventListener(\"scroll\", updatePosition, true);\n\n      return () => {\n        window.removeEventListener(\"resize\", updatePosition);\n        window.removeEventListener(\"scroll\", updatePosition, true);\n      };\n    }, [contained, updatePosition]);\n\n    return (\n      <div\n        ref={setRef}\n        data-side={side}\n        data-align={align}\n        style={{\n          ...position,\n          ...style,\n        }}\n        {...props}\n      >\n        {children}\n      </div>\n    );\n  }\n);\n\nPositioner.displayName = \"Positioner\";\n\nexport const GlassPositioner = Positioner;\n\nexport default Positioner;\n"],
  "mappings": "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",
  "names": ["performance", "performance", "React", "forwardRef", "clsx", "twMerge", "cn", "jsx", "forwardRef", "motion", "cn", "React", "forwardRef", "useState", "useEffect", "jsx", "forwardRef", "useState", "useEffect", "React", "forwardRef", "useEffect", "useMemo", "useState", "jsx", "cn", "forwardRef", "useEffect", "useRef", "useState", "useEffect", "useState", "values", "jsx", "forwardRef", "useRef", "useState", "useEffect", "forwardRef", "useEffect", "useMemo", "useState", "jsx", "forwardRef", "useState", "useEffect", "useMemo", "cn", "React", "forwardRef", "useRef", "useEffect", "useMemo", "useRef", "useState", "jsx", "forwardRef", "useRef", "React", "React", "forwardRef", "jsx", "forwardRef", "React", "React", "createContext", "forwardRef", "useContext", "useMemo", "useMemo", "jsx", "useMemo", "jsx", "createContext", "forwardRef", "React", "useMemo", "useContext", "forwardRef", "useEffect", "useRef", "useState", "jsx", "forwardRef", "useState", "useRef", "useEffect", "React", "createContext", "forwardRef", "useCallback", "useContext", "useMemo", "useRef", "useState", "jsx", "createContext", "useState", "useRef", "useCallback", "useMemo", "forwardRef", "React", "useContext", "React", "React", "jsx", "React", "React", "jsx", "React", "jsx", "React", "jsx", "React", "React", "jsx"]
}
