{"version":3,"sources":["../src/css.ts","../src/registry.ts","../src/sheet.ts","../src/class-naming.ts","../src/layers.ts","../src/component-config-context.ts","../src/component.ts","../src/container.ts","../src/at-rule-block.ts","../src/relational-pseudo.ts","../src/styles.ts","../src/types.ts","../src/theme.ts","../src/tokens.ts","../src/global-style-tuple.ts","../src/global.ts","../src/create-global.ts","../src/create-type-styles.ts","../src/keyframes.ts","../src/color.ts","../src/vars.ts","../src/cx.ts","../src/css-math.ts","../src/css-content.ts","../src/index.ts"],"names":["body","registeredNamespaces","options","styles","tokens","global","alpha"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { CSSProperties } from './types';\n\n/**\n * Convert a camelCase CSS property name to kebab-case.\n * Handles vendor prefixes (ms, webkit, moz) correctly.\n */\nexport function toKebabCase(prop: string): string {\n  // Handle ms- prefix specially (no leading dash in camelCase)\n  if (prop.startsWith('ms')) {\n    return '-' + prop.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());\n  }\n  return prop.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());\n}\n\n/**\n * Serialize a single CSS value. Numbers are treated as px for most properties.\n */\nfunction serializeValue(prop: string, value: string | number): string {\n  if (typeof value === 'number') {\n    if (value === 0) return '0';\n    // Unitless properties that shouldn't get 'px'\n    if (unitlessProperties.has(prop)) return String(value);\n    return value + 'px';\n  }\n  return value;\n}\n\nconst unitlessProperties = new Set([\n  'animationIterationCount',\n  'borderImageOutset',\n  'borderImageSlice',\n  'borderImageWidth',\n  'columnCount',\n  'columns',\n  'flex',\n  'flexGrow',\n  'flexPositive',\n  'flexShrink',\n  'flexNegative',\n  'flexOrder',\n  'fontWeight',\n  'gridArea',\n  'gridColumn',\n  'gridColumnEnd',\n  'gridColumnSpan',\n  'gridColumnStart',\n  'gridRow',\n  'gridRowEnd',\n  'gridRowSpan',\n  'gridRowStart',\n  'lineClamp',\n  'lineHeight',\n  'opacity',\n  'order',\n  'orphans',\n  'tabSize',\n  'widows',\n  'zIndex',\n  'zoom',\n  'fillOpacity',\n  'floodOpacity',\n  'stopOpacity',\n  'strokeDasharray',\n  'strokeDashoffset',\n  'strokeMiterlimit',\n  'strokeOpacity',\n  'strokeWidth',\n]);\n\n/**\n * Represents a generated CSS rule.\n */\nexport interface CSSRule {\n  /** Unique key for deduplication */\n  key: string;\n  /** The CSS rule string */\n  css: string;\n}\n\n/**\n * Serialize a style definition object into CSS rule(s) for a given selector.\n */\nexport function serializeStyle(selector: string, properties: CSSProperties): CSSRule[] {\n  const rules: CSSRule[] = [];\n  const declarations: string[] = [];\n\n  for (const [prop, value] of Object.entries(properties)) {\n    if (value == null) continue;\n\n    const nestedSelector = resolveNestedSelector(selector, prop);\n    if (nestedSelector) {\n      rules.push(...serializeStyle(nestedSelector, value as CSSProperties));\n    } else if (prop.startsWith('@')) {\n      // At-rule: wrap the serialized content in the at-rule\n      const innerRules = serializeStyle(selector, value as CSSProperties);\n      for (const inner of innerRules) {\n        rules.push({\n          key: `${prop}:${inner.key}`,\n          css: `${prop} { ${inner.css} }`,\n        });\n      }\n    } else {\n      // Regular CSS property\n      const kebabProp = toKebabCase(prop);\n      declarations.push(`${kebabProp}: ${serializeValue(prop, value as string | number)}`);\n    }\n  }\n\n  // Add the base rule with all plain declarations\n  if (declarations.length > 0) {\n    rules.unshift({\n      key: selector,\n      css: `${selector} { ${declarations.join('; ')}; }`,\n    });\n  }\n\n  return rules;\n}\n\nfunction resolveNestedSelector(parentSelector: string, key: string): string | null {\n  // Parent placeholder anywhere in the key (e.g. `html[data-mode=\"dark\"] &`, `.wrap &`).\n  if (key.includes('&')) {\n    return key.replace(/&/g, parentSelector);\n  }\n\n  // Support attribute selectors without requiring \"&\", including selector lists:\n  // '[data-state=\"open\"], [aria-expanded=\"true\"]'\n  if (key.startsWith('[')) {\n    const parts = splitSelectorList(key);\n    return parts.map((part) => `${parentSelector}${part.trimStart()}`).join(', ');\n  }\n\n  return null;\n}\n\nfunction splitSelectorList(selector: string): string[] {\n  const result: string[] = [];\n  let current = '';\n  let bracketDepth = 0;\n  let parenDepth = 0;\n  let quote: '\"' | \"'\" | null = null;\n\n  for (let i = 0; i < selector.length; i++) {\n    const char = selector[i];\n    const prev = i > 0 ? selector[i - 1] : '';\n\n    if (quote) {\n      current += char;\n      if (char === quote && prev !== '\\\\') {\n        quote = null;\n      }\n      continue;\n    }\n\n    if (char === '\"' || char === \"'\") {\n      quote = char;\n      current += char;\n      continue;\n    }\n\n    if (char === '[') bracketDepth++;\n    if (char === ']') bracketDepth = Math.max(0, bracketDepth - 1);\n    if (char === '(') parenDepth++;\n    if (char === ')') parenDepth = Math.max(0, parenDepth - 1);\n\n    if (char === ',' && bracketDepth === 0 && parenDepth === 0) {\n      result.push(current.trim());\n      current = '';\n      continue;\n    }\n\n    current += char;\n  }\n\n  if (current.trim()) {\n    result.push(current.trim());\n  }\n\n  return result;\n}\n","/**\n * Shared registry for detecting duplicate namespace registrations.\n */\nexport const registeredNamespaces = new Set<string>();\n\nconst COLON = ':';\n\n/**\n * Drop reserved `scopeId:namespace` keys so a module can re-register after HMR.\n * `namespace` is the first argument to `styles.component()` / `styles.class()` (not the scope).\n */\nexport function releaseReservedNamespacesForComponentOrClassNames(\n  namespaces: readonly string[],\n): void {\n  if (namespaces.length === 0) return;\n  const wanted = new Set(namespaces);\n  const toRemove: string[] = [];\n  for (const key of registeredNamespaces) {\n    const i = key.indexOf(COLON);\n    if (i === -1) continue;\n    if (wanted.has(key.slice(i + 1))) {\n      toRemove.push(key);\n    }\n  }\n  for (const key of toRemove) {\n    registeredNamespaces.delete(key);\n  }\n}\n\n/** Vite plugin passes `.${namespace}-` prefixes for `styles.component()` invalidation. */\nexport function namespacesFromTypestylesHmrPrefixes(prefixes: readonly string[]): string[] {\n  const out: string[] = [];\n  for (const p of prefixes) {\n    if (p.length >= 2 && p.startsWith('.') && p.endsWith('-')) {\n      out.push(p.slice(1, -1));\n    }\n  }\n  return out;\n}\n","import {\n  namespacesFromTypestylesHmrPrefixes,\n  releaseReservedNamespacesForComponentOrClassNames,\n} from './registry';\n\nconst STYLE_ELEMENT_ID = 'typestyles';\n\n/**\n * Tracks which CSS rules have been inserted to avoid duplicates.\n */\nconst insertedRules = new Set<string>();\n\n/**\n * Last emitted CSS per dedupe key (see {@link warnIfDuplicateRuleKeyConflict}).\n * Cleared with {@link reset} and kept in sync when keys are invalidated.\n */\nconst ruleCssByKey = new Map<string, string>();\n\nfunction duplicateRuleKeyConflictWarningsEnabled(): boolean {\n  if (typeof process === 'undefined') return true;\n  return process.env.NODE_ENV !== 'production';\n}\n\n/**\n * When the same key is registered again with different CSS, the second rule is skipped\n * (idempotency / HMR). In non-production builds, surface that so overlapping globals\n * (e.g. reset `body` + app `body` in the same scope) are not silent failures.\n */\nfunction warnIfDuplicateRuleKeyConflict(\n  key: string,\n  previousCss: string,\n  ignoredCss: string,\n): void {\n  if (!duplicateRuleKeyConflictWarningsEnabled()) return;\n  const prevShort = previousCss.length > 220 ? `${previousCss.slice(0, 220)}…` : previousCss;\n  const nextShort = ignoredCss.length > 220 ? `${ignoredCss.slice(0, 220)}…` : ignoredCss;\n  console.warn(\n    `[typestyles] Skipped a rule: dedupe key \"${key}\" already exists with different CSS. ` +\n      `Only the first registration is kept. For globals, merge into one \\`global.style\\`, ` +\n      `or use a distinct selector (e.g. \\`html body\\` after reset’s \\`body\\`).\\n` +\n      `  Existing: ${prevShort}\\n` +\n      `  Skipped:  ${nextShort}`,\n  );\n}\n\n/**\n * Whether runtime DOM insertion is disabled (for build-time/zero-runtime mode).\n * The Vite plugin (mode: 'build') defines __TYPESTYLES_RUNTIME_DISABLED__ as the\n * string \"true\" at build time, so this is true in production and no <style> is created.\n *\n * `@typestyles/next/build` `withTypestylesExtract` sets `NEXT_PUBLIC_TYPESTYLES_RUNTIME_DISABLED`\n * via `next.config` `env` so Turbopack and webpack both inline the flag (DefinePlugin\n * alone does not run under Turbopack).\n */\ndeclare const __TYPESTYLES_RUNTIME_DISABLED__: string | undefined;\nfunction readNextPublicRuntimeDisabled(): boolean {\n  if (typeof process === 'undefined' || !process.env) return false;\n  return process.env.NEXT_PUBLIC_TYPESTYLES_RUNTIME_DISABLED === 'true';\n}\nconst RUNTIME_DISABLED =\n  (typeof __TYPESTYLES_RUNTIME_DISABLED__ !== 'undefined' &&\n    __TYPESTYLES_RUNTIME_DISABLED__ === 'true') ||\n  readNextPublicRuntimeDisabled();\n\n/**\n * Buffer of CSS rules waiting to be flushed.\n */\nlet pendingRules: string[] = [];\n\n/**\n * All CSS rules ever registered (for SSR extraction).\n * Unlike pendingRules (which is cleared on flush), this retains every rule\n * so getRegisteredCss() can return the full stylesheet at any point.\n */\nconst allRules: string[] = [];\n\n/**\n * Whether a flush is scheduled.\n */\nlet flushScheduled = false;\n\n/**\n * The managed <style> element, lazily created.\n */\nlet styleElement: HTMLStyleElement | null = null;\n\n/**\n * When in SSR collection mode, CSS is captured here instead of injected.\n */\nlet ssrBuffer: string[] | null = null;\n\n/**\n * Whether we're running in a browser environment.\n */\nconst isBrowser = typeof document !== 'undefined' && typeof window !== 'undefined';\n\n/**\n * Re-insert every registered rule into a (usually fresh) <style> element.\n * Used when the live element was detached (e.g. Astro view transitions replacing <head>).\n */\nfunction writeAllRulesToStyleElement(el: HTMLStyleElement): void {\n  if (RUNTIME_DISABLED || allRules.length === 0) return;\n  const sheet = el.sheet;\n  if (sheet) {\n    for (const css of allRules) {\n      try {\n        sheet.insertRule(css, sheet.cssRules.length);\n      } catch {\n        el.appendChild(document.createTextNode(css));\n      }\n    }\n  } else {\n    el.appendChild(document.createTextNode(allRules.join('\\n')));\n  }\n}\n\nfunction getStyleElement(): HTMLStyleElement {\n  let reconnectAfterDetach = false;\n  if (styleElement && !styleElement.isConnected) {\n    reconnectAfterDetach = true;\n    styleElement = null;\n  }\n  if (styleElement) return styleElement;\n\n  // Prefer an element actually in the document (SSR or another copy on the page).\n  const existing = document.getElementById(STYLE_ELEMENT_ID) as HTMLStyleElement | null;\n  if (existing?.isConnected) {\n    styleElement = existing;\n    return styleElement;\n  }\n\n  styleElement = document.createElement('style');\n  styleElement.id = STYLE_ELEMENT_ID;\n  document.head.appendChild(styleElement);\n\n  // After a doc swap, we have a new empty sheet but insertRule() won't re-queue (deduped keys).\n  if (reconnectAfterDetach && allRules.length > 0) {\n    writeAllRulesToStyleElement(styleElement);\n  }\n\n  return styleElement;\n}\n\n/**\n * Ensure the managed <style id=\"typestyles\"> is attached to the current document and populated.\n * Call after SPA-style navigation (e.g. Astro `astro:after-swap`) when runtime injection is enabled.\n */\nexport function ensureDocumentStylesAttached(): void {\n  if (!isBrowser || RUNTIME_DISABLED) return;\n  getStyleElement();\n}\n\nfunction flush(): void {\n  flushScheduled = false;\n  if (pendingRules.length === 0) return;\n\n  const rules = pendingRules;\n  pendingRules = [];\n\n  if (ssrBuffer) {\n    ssrBuffer.push(...rules);\n    return;\n  }\n\n  if (!isBrowser || RUNTIME_DISABLED) return;\n\n  const el = getStyleElement();\n  const sheet = el.sheet;\n\n  if (sheet) {\n    for (const rule of rules) {\n      try {\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch {\n        // Fallback: append as text (handles edge cases with certain selectors)\n        el.appendChild(document.createTextNode(rule));\n      }\n    }\n  } else {\n    // Sheet not available yet, append as text\n    el.appendChild(document.createTextNode(rules.join('\\n')));\n  }\n}\n\nfunction scheduleFlush(): void {\n  if (flushScheduled) return;\n  flushScheduled = true;\n\n  if (ssrBuffer) {\n    // In SSR mode, flush synchronously\n    flush();\n    return;\n  }\n\n  if (isBrowser && !RUNTIME_DISABLED) {\n    // Use microtask for fast, batched insertion\n    queueMicrotask(flush);\n  }\n}\n\n/**\n * Register a single `@layer a, b, c;` preamble so layer **order** is defined before any\n * `@layer name { … }` blocks. Inserts at the front of the virtual sheet and at CSSOM index 0\n * when injecting into the document.\n */\nexport function registerCascadeLayerOrder(preambleKey: string, css: string): void {\n  const key = `typestyles:@layer-order:${preambleKey}`;\n  if (insertedRules.has(key)) return;\n  insertedRules.add(key);\n\n  allRules.unshift(css);\n\n  if (ssrBuffer) {\n    ssrBuffer.unshift(css);\n    return;\n  }\n\n  if (RUNTIME_DISABLED) return;\n\n  if (!isBrowser) return;\n\n  const el = getStyleElement();\n  const sheet = el.sheet;\n  if (sheet) {\n    try {\n      sheet.insertRule(css, 0);\n    } catch {\n      el.insertBefore(document.createTextNode(`${css}\\n`), el.firstChild);\n    }\n  } else {\n    el.insertBefore(document.createTextNode(`${css}\\n`), el.firstChild);\n  }\n}\n\n/**\n * Insert a CSS rule. Deduplicates by rule key.\n */\nexport function insertRule(key: string, css: string): void {\n  if (insertedRules.has(key)) {\n    const prev = ruleCssByKey.get(key);\n    if (prev != null && prev !== css) {\n      warnIfDuplicateRuleKeyConflict(key, prev, css);\n    }\n    return;\n  }\n  insertedRules.add(key);\n  ruleCssByKey.set(key, css);\n  allRules.push(css);\n  if (RUNTIME_DISABLED && !ssrBuffer) return;\n  pendingRules.push(css);\n  scheduleFlush();\n}\n\n/**\n * Insert multiple CSS rules at once.\n */\nexport function insertRules(rules: Array<{ key: string; css: string }>): void {\n  let added = false;\n  for (const { key, css } of rules) {\n    if (insertedRules.has(key)) {\n      const prev = ruleCssByKey.get(key);\n      if (prev != null && prev !== css) {\n        warnIfDuplicateRuleKeyConflict(key, prev, css);\n      }\n      continue;\n    }\n    insertedRules.add(key);\n    ruleCssByKey.set(key, css);\n    allRules.push(css);\n    if (!RUNTIME_DISABLED || ssrBuffer) {\n      pendingRules.push(css);\n      added = true;\n    }\n  }\n  if (added) scheduleFlush();\n}\n\n/**\n * Replace a CSS rule (used for HMR). Removes the old rule and inserts the new one.\n */\nexport function replaceRule(key: string, css: string): void {\n  if (!isBrowser || RUNTIME_DISABLED) return;\n\n  insertedRules.delete(key);\n  ruleCssByKey.delete(key);\n\n  // Remove existing rule from the sheet if possible\n  const el = getStyleElement();\n  const sheet = el.sheet;\n  if (sheet) {\n    for (let i = sheet.cssRules.length - 1; i >= 0; i--) {\n      // We can't reliably match by key in CSSOM, so for HMR we fall back to\n      // clearing and re-inserting. This is fine since HMR is dev-only.\n    }\n  }\n\n  insertRule(key, css);\n}\n\n/**\n * Start collecting CSS for SSR. Returns a function to stop collection and get the CSS.\n */\nexport function startCollection(): () => string {\n  ssrBuffer = [];\n  return () => {\n    const css = ssrBuffer ? ssrBuffer.join('\\n') : '';\n    ssrBuffer = null;\n    return css;\n  };\n}\n\n/**\n * Return all registered CSS as a string.\n *\n * Unlike `collectStyles`, this doesn't require wrapping a render function.\n * It simply returns every CSS rule that has been registered via\n * `styles.component`, `styles.class`, `tokens.create`, `keyframes.create`, etc.\n *\n * Ideal for SSR frameworks that need the CSS separately from the render\n * pass (e.g. TanStack Start's `head()`, Next.js metadata, Remix links).\n *\n * @example\n * ```ts\n * import { getRegisteredCss } from 'typestyles/server';\n *\n * // In a route's head/meta function:\n * export const head = () => ({\n *   styles: [{ id: 'typestyles', children: getRegisteredCss() }],\n * });\n * ```\n */\nexport function getRegisteredCss(): string {\n  return allRules.join('\\n');\n}\n\n/**\n * Reset all state (useful for testing).\n */\nexport function reset(): void {\n  insertedRules.clear();\n  ruleCssByKey.clear();\n  pendingRules = [];\n  allRules.length = 0;\n  flushScheduled = false;\n  ssrBuffer = null;\n  if (isBrowser && styleElement) {\n    styleElement.remove();\n    styleElement = null;\n  }\n}\n\n/**\n * Flush all pending rules synchronously. Used for SSR and testing.\n */\nexport function flushSync(): void {\n  flush();\n}\n\n/**\n * Invalidate all dedup keys that start with the given prefix.\n * Also removes matching rules from the live stylesheet.\n * Used for HMR — allows modules to re-register their styles after editing.\n */\nexport function invalidatePrefix(prefix: string): void {\n  for (const key of insertedRules) {\n    if (key.startsWith(prefix)) {\n      insertedRules.delete(key);\n      ruleCssByKey.delete(key);\n    }\n  }\n\n  releaseReservedNamespacesForComponentOrClassNames(namespacesFromTypestylesHmrPrefixes([prefix]));\n\n  if (!isBrowser) return;\n\n  const el = styleElement;\n  if (!el) return;\n  const sheet = el.sheet;\n  if (!sheet) return;\n\n  for (let i = sheet.cssRules.length - 1; i >= 0; i--) {\n    const rule = sheet.cssRules[i];\n    if (ruleMatchesPrefix(rule, prefix)) {\n      sheet.deleteRule(i);\n    }\n  }\n}\n\n/**\n * Invalidate a list of exact keys or prefixes.\n * Each entry in `keys` is treated as an exact key match.\n * Each entry in `prefixes` is treated as a prefix match.\n * Used for HMR to invalidate all styles from a module at once.\n */\nexport function invalidateKeys(keys: string[], prefixes: string[]): void {\n  for (const key of keys) {\n    insertedRules.delete(key);\n    ruleCssByKey.delete(key);\n  }\n  for (const prefix of prefixes) {\n    for (const key of insertedRules) {\n      if (key.startsWith(prefix)) {\n        insertedRules.delete(key);\n        ruleCssByKey.delete(key);\n      }\n    }\n  }\n\n  releaseReservedNamespacesForComponentOrClassNames(namespacesFromTypestylesHmrPrefixes(prefixes));\n\n  if (!isBrowser) return;\n\n  const el = styleElement;\n  if (!el) return;\n  const sheet = el.sheet;\n  if (!sheet) return;\n\n  const keySet = new Set(keys);\n  for (let i = sheet.cssRules.length - 1; i >= 0; i--) {\n    const rule = sheet.cssRules[i];\n    let shouldRemove = false;\n\n    for (const prefix of prefixes) {\n      if (ruleMatchesPrefix(rule, prefix)) {\n        shouldRemove = true;\n        break;\n      }\n    }\n\n    if (!shouldRemove) {\n      // Check exact key matches — for tokens/themes/keyframes,\n      // we match based on rule content patterns\n      const ruleText = rule.cssText;\n      for (const key of keySet) {\n        if (ruleMatchesKey(ruleText, key)) {\n          shouldRemove = true;\n          break;\n        }\n      }\n    }\n\n    if (shouldRemove) {\n      sheet.deleteRule(i);\n    }\n  }\n}\n\n/**\n * Drop every rule key tied to a `styles.component('namespace', …)` registration, including\n * `@layer`-wrapped keys (`layer:….:.namespace-…`), and release reserved namespace entries.\n * Used for Vite HMR and for dev recovery when a module re-runs before `hot.dispose`.\n */\nexport function invalidateComponentNamespaceForDev(namespace: string): void {\n  const selectorInfix = `.${namespace}-`;\n  const keysToDrop: string[] = [];\n  for (const k of insertedRules) {\n    if (k.includes(selectorInfix)) {\n      keysToDrop.push(k);\n    }\n  }\n  invalidateKeys(keysToDrop, [selectorInfix]);\n}\n\nfunction ruleMatchesPrefix(rule: CSSRule, prefix: string): boolean {\n  if (prefix.startsWith('font-face:')) {\n    const family = prefix.slice('font-face:'.length).split(':')[0];\n    // CSSFontFaceRule has type 5 and cssText contains @font-face\n    if (rule.cssText.includes('@font-face')) {\n      return rule.cssText.includes(`\"${family}\"`) || rule.cssText.includes(`'${family}'`);\n    }\n    return false;\n  }\n  if ('selectorText' in rule) {\n    return (rule as CSSStyleRule).selectorText.startsWith(prefix);\n  }\n  if ('name' in rule && prefix.startsWith('keyframes:')) {\n    return (rule as CSSKeyframesRule).name === prefix.slice('keyframes:'.length);\n  }\n  // For at-rules wrapping style rules, check inner rules\n  if ('cssRules' in rule) {\n    const innerRules = (rule as CSSGroupingRule).cssRules;\n    for (let i = 0; i < innerRules.length; i++) {\n      if (ruleMatchesPrefix(innerRules[i], prefix)) return true;\n    }\n  }\n  return false;\n}\n\nfunction ruleMatchesKey(cssText: string, key: string): boolean {\n  if (key.startsWith('tokens:')) {\n    // tokens:color or tokens:color@layerName -> :root rule with --color- custom properties\n    const rest = key.slice('tokens:'.length);\n    const at = rest.lastIndexOf('@');\n    const namespace = at === -1 ? rest : rest.slice(0, at);\n    return cssText.includes(`:root`) && cssText.includes(`--${namespace}-`);\n  }\n  if (key.startsWith('theme:')) {\n    // theme:dark -> .theme-dark selector\n    const name = key.slice('theme:'.length);\n    return cssText.includes(`.theme-${name}`);\n  }\n  if (key.startsWith('keyframes:')) {\n    const name = key.slice('keyframes:'.length);\n    return cssText.includes(`@keyframes ${name}`);\n  }\n  return false;\n}\n","import type { CSSProperties } from './types';\nimport type { ResolvedCascadeLayers } from './layers';\n\n/**\n * How generated class names are formed for `styles.class`, `styles.component`,\n * and related APIs.\n *\n * - `semantic` — readable names like `button-base`, `button-intent-primary` (default).\n * - `hashed` — stable hash from namespace, variant segment, and declarations, with a short namespace slug for debugging.\n * - `atomic` — hash-only names (shortest); same collision properties as `hashed` when `scopeId` differs.\n */\nexport type ClassNamingMode = 'semantic' | 'hashed' | 'atomic';\n\nexport type ClassNamingConfig = {\n  mode: ClassNamingMode;\n  /** Prefix for hashed / atomic output and for `hashClass`. Default `ts`. */\n  prefix: string;\n  /**\n   * Package, app, or per-file id: same logical `styles.component` / `styles.class` name under different\n   * scopes produces different classes. In development, re-registering the same scope + component name\n   * (e.g. HMR) clears prior rules instead of throwing. Use `fileScopeId(import.meta)` for file-local\n   * isolation (CSS Modules–style).\n   */\n  scopeId: string;\n  /**\n   * When set (via `createStyles({ layers: … })`), every `class` / `hashClass` / `component`\n   * call must pass `{ layer: … }` and emitted rules are wrapped in `@layer`.\n   */\n  cascadeLayers?: ResolvedCascadeLayers;\n};\n\n/** Default naming options used by `createStyles()` when no overrides are passed. */\nexport const defaultClassNamingConfig: ClassNamingConfig = {\n  mode: 'semantic',\n  prefix: 'ts',\n  scopeId: '',\n};\n\nexport function mergeClassNaming(partial?: Partial<ClassNamingConfig>): ClassNamingConfig {\n  return { ...defaultClassNamingConfig, ...partial };\n}\n\nexport function stableSerialize(value: unknown): string {\n  if (value === null) return 'null';\n  if (typeof value !== 'object') return JSON.stringify(value);\n  if (Array.isArray(value)) return `[${value.map((v) => stableSerialize(v)).join(',')}]`;\n\n  const entries = Object.entries(value as Record<string, unknown>)\n    .sort(([a], [b]) => a.localeCompare(b))\n    .map(([k, v]) => `${JSON.stringify(k)}:${stableSerialize(v)}`);\n\n  return `{${entries.join(',')}}`;\n}\n\nexport function hashString(input: string): string {\n  let hash = 0x811c9dc5;\n  for (let i = 0; i < input.length; i++) {\n    hash ^= input.charCodeAt(i);\n    hash = Math.imul(hash, 0x01000193);\n  }\n  return (hash >>> 0).toString(36);\n}\n\n/**\n * Stable, short id derived from `import.meta.url` (file path). Use as `createStyles({ scopeId: fileScopeId(import.meta) })`\n * so the same logical namespace in different files does not collide (similar to CSS Modules file scope).\n *\n * @example\n * ```ts\n * const styles = createStyles({ scopeId: fileScopeId(import.meta) });\n * styles.component('button', { base: { padding: '8px' } });\n * ```\n */\nexport function fileScopeId(meta: { url: string }): string {\n  let pathKey = meta.url;\n  try {\n    pathKey = new URL(meta.url).pathname;\n  } catch {\n    // keep raw url\n  }\n  return `file-${hashString(pathKey)}`;\n}\n\nexport function sanitizeClassSegment(label: string): string {\n  const normalized = label\n    .trim()\n    .toLowerCase()\n    .replace(/[^a-z0-9-]/g, '-');\n  return normalized.replace(/-+/g, '-').replace(/^-|-$/g, '') || 'style';\n}\n\n/** CSS custom property namespace segment for `tokens.create` / `createTheme` when `scopeId` is set. */\nexport function scopedTokenNamespace(\n  scopeId: string | undefined,\n  logicalNamespace: string,\n): string {\n  if (!scopeId || !scopeId.trim()) return logicalNamespace;\n  return `${sanitizeClassSegment(scopeId)}-${logicalNamespace}`;\n}\n\n/** `styles.class(name, …)` */\nexport function buildSingleClassName(\n  cfg: ClassNamingConfig,\n  name: string,\n  properties: CSSProperties,\n): string {\n  if (cfg.mode === 'semantic') return name;\n\n  const payload = stableSerialize({\n    ...(cfg.scopeId ? { scope: cfg.scopeId } : {}),\n    namespace: name,\n    suffix: '',\n    properties,\n  });\n  const h = hashString(payload);\n  if (cfg.mode === 'atomic') return `${cfg.prefix}-${h}`;\n  return `${cfg.prefix}-${sanitizeClassSegment(name)}-${h}`;\n}\n\n/**\n * `styles.component` / components with `slots`: logical namespace plus\n * a variant segment (`base`, `intent-primary`, `root-trigger-primary`, …).\n */\nexport function buildComponentClassName(\n  cfg: ClassNamingConfig,\n  namespace: string,\n  suffix: string,\n  properties: CSSProperties,\n): string {\n  if (cfg.mode === 'semantic') return `${namespace}-${suffix}`;\n\n  const payload = stableSerialize({\n    ...(cfg.scopeId ? { scope: cfg.scopeId } : {}),\n    namespace,\n    suffix,\n    properties,\n  });\n  const h = hashString(payload);\n  if (cfg.mode === 'atomic') return `${cfg.prefix}-${h}`;\n  return `${cfg.prefix}-${sanitizeClassSegment(namespace)}-${h}`;\n}\n","import { stableSerialize, hashString } from './class-naming';\nimport { registerCascadeLayerOrder } from './sheet';\n\n/**\n * Declare cascade layer order and optionally prepend framework layer names\n * (e.g. Bootstrap) so TypeStyles participates in the same ordering graph.\n */\nexport type CascadeLayersObjectInput = {\n  readonly order: readonly string[];\n  readonly prependFrameworkLayers?: readonly string[];\n};\n\n/** Argument to `createStyles` / `createTokens` / `createTypeStyles` when enabling `@layer`. */\nexport type CascadeLayersInput = readonly string[] | CascadeLayersObjectInput;\n\n/** Normalized cascade layer stack for runtime CSS emission. */\nexport type ResolvedCascadeLayers = {\n  /** Dedup key for the `@layer a, b, c;` preamble. */\n  readonly preambleKey: string;\n  /** Full `@layer …;` order statement (prepend + own layers). */\n  readonly preambleCss: string;\n  /** Layers TypeStyles may emit into (excludes `prependFrameworkLayers`). */\n  readonly ownOrder: readonly string[];\n  /** Full ordering passed to the preamble. */\n  readonly fullOrder: readonly string[];\n};\n\nexport function resolveCascadeLayers(\n  input: CascadeLayersInput,\n  scopeId: string | undefined,\n): ResolvedCascadeLayers {\n  let prepend: string[];\n  let own: string[];\n  if (Array.isArray(input)) {\n    prepend = [];\n    own = input.map((s: string) => String(s).trim());\n  } else {\n    const obj = input as CascadeLayersObjectInput;\n    prepend = [...(obj.prependFrameworkLayers ?? [])];\n    own = obj.order.map((s: string) => String(s).trim());\n  }\n\n  if (own.length === 0) {\n    throw new Error(\n      '[typestyles] `layers` must contain at least one layer name when cascade layers are enabled.',\n    );\n  }\n\n  const seen = new Set<string>();\n  for (const name of own) {\n    if (!name) {\n      throw new Error('[typestyles] Layer names in `layers` must be non-empty strings.');\n    }\n    if (seen.has(name)) {\n      throw new Error(`[typestyles] Duplicate layer name \"${name}\" in \\`layers\\`.`);\n    }\n    seen.add(name);\n  }\n\n  const fullOrder = [...prepend, ...own];\n  const preambleCss = `@layer ${fullOrder.join(', ')};`;\n  const preambleKey = hashString(stableSerialize({ scope: scopeId ?? '', order: fullOrder }));\n\n  return {\n    preambleKey,\n    preambleCss,\n    ownOrder: own,\n    fullOrder,\n  };\n}\n\nexport function assertOwnLayer(stack: ResolvedCascadeLayers, layer: string, context: string): void {\n  if (!stack.ownOrder.includes(layer)) {\n    throw new Error(\n      `[typestyles] Invalid \\`layer: \"${layer}\"\\` for ${context}. ` +\n        `Expected one of: ${stack.ownOrder.map((l) => `\"${l}\"`).join(', ')}.`,\n    );\n  }\n}\n\n/**\n * Wrap serialized rules in `@layer { … }` and ensure the order preamble is registered once.\n */\nexport function applyLayerToRules(\n  rules: Array<{ key: string; css: string }>,\n  layer: string,\n  stack: ResolvedCascadeLayers,\n): Array<{ key: string; css: string }> {\n  registerCascadeLayerOrder(stack.preambleKey, stack.preambleCss);\n  return rules.map((r) => ({\n    key: `layer:${layer}:${r.key}`,\n    css: `@layer ${layer} {\\n${r.css}\\n}`,\n  }));\n}\n\nexport function applyLayerToRule(\n  key: string,\n  css: string,\n  layer: string,\n  stack: ResolvedCascadeLayers,\n): Array<{ key: string; css: string }> {\n  return applyLayerToRules([{ key, css }], layer, stack);\n}\n","import { sanitizeClassSegment, scopedTokenNamespace, type ClassNamingConfig } from './class-naming';\nimport type {\n  ComponentConfigContext,\n  ComponentInternalVarRef,\n  ComponentVarDefinitions,\n  ComponentVarDescriptor,\n  ComponentVarNode,\n  ComponentVarOptions,\n  ComponentVarRefTree,\n  CSSVarRef,\n} from './types';\nimport { insertRule } from './sheet';\n\nfunction escapePropertySyntaxString(s: string): string {\n  return s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n}\n\nfunction isVarDescriptor(o: unknown): o is ComponentVarDescriptor {\n  return (\n    typeof o === 'object' &&\n    o !== null &&\n    'value' in o &&\n    (typeof (o as { value: unknown }).value === 'string' ||\n      typeof (o as { value: unknown }).value === 'number')\n  );\n}\n\nexport type FlatComponentVarEntry = {\n  path: string;\n  value: string;\n  syntax?: string;\n  inherits?: boolean;\n};\n\n/**\n * Flatten nested var definitions (same nesting rules as tokens) into dashed paths.\n */\nexport function flattenComponentVars(\n  obj: Record<string, ComponentVarNode>,\n  prefix = '',\n): FlatComponentVarEntry[] {\n  const out: FlatComponentVarEntry[] = [];\n\n  for (const [key, value] of Object.entries(obj)) {\n    const path = prefix ? `${prefix}-${key}` : key;\n\n    if (typeof value === 'string' || typeof value === 'number') {\n      out.push({ path, value: String(value) });\n    } else if (isVarDescriptor(value)) {\n      out.push({\n        path,\n        value: String(value.value),\n        syntax: value.syntax,\n        inherits: value.inherits,\n      });\n    } else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n      out.push(...flattenComponentVars(value as Record<string, ComponentVarNode>, path));\n    }\n  }\n\n  return out;\n}\n\nfunction pathPrefixes(path: string): string[] {\n  const parts = path.split('-');\n  const prefixes: string[] = [];\n  for (let i = 1; i <= parts.length; i++) {\n    prefixes.push(parts.slice(0, i).join('-'));\n  }\n  return prefixes;\n}\n\nfunction collectPathKeys(entries: FlatComponentVarEntry[]): Set<string> {\n  const keys = new Set<string>();\n  for (const e of entries) {\n    for (const p of pathPrefixes(e.path)) {\n      keys.add(p);\n    }\n  }\n  return keys;\n}\n\nfunction createVarRefsProxy(\n  refByPath: Map<string, ComponentInternalVarRef>,\n  allPathKeys: Set<string>,\n  prefix: string,\n): object {\n  const handler: ProxyHandler<object> = {\n    get(_target, prop: string | symbol): unknown {\n      if (typeof prop === 'symbol') {\n        return undefined;\n      }\n      if (prop === 'constructor') return Object;\n      if (prop === '__esModule') return false;\n\n      const newPrefix = prefix ? `${prefix}-${prop}` : prop;\n\n      if (refByPath.has(newPrefix)) {\n        const hasChildren = [...refByPath.keys()].some(\n          (k) => k !== newPrefix && k.startsWith(`${newPrefix}-`),\n        );\n        if (hasChildren) {\n          return createVarRefsProxy(refByPath, allPathKeys, newPrefix);\n        }\n        return refByPath.get(newPrefix);\n      }\n\n      if ([...refByPath.keys()].some((k) => k.startsWith(`${newPrefix}-`))) {\n        return createVarRefsProxy(refByPath, allPathKeys, newPrefix);\n      }\n\n      if (prefix !== '' && allPathKeys.has(newPrefix)) {\n        return createVarRefsProxy(refByPath, allPathKeys, newPrefix);\n      }\n\n      return undefined;\n    },\n    has(_target, prop: string | symbol) {\n      if (typeof prop !== 'string') return false;\n      const newPrefix = prefix ? `${prefix}-${prop}` : prop;\n      if (refByPath.has(newPrefix)) return true;\n      return [...refByPath.keys()].some((k) => k.startsWith(`${newPrefix}-`));\n    },\n    set(_target, _prop, _value) {\n      return false;\n    },\n  };\n\n  return new Proxy({}, handler);\n}\n\nexport function mergeComponentVarDefaultsInto(\n  config: Record<string, unknown>,\n  defaults: Record<string, string>,\n): Record<string, unknown> {\n  if (Object.keys(defaults).length === 0) return config;\n  if ('slots' in config) return config;\n\n  const userBase = config.base;\n  const mergedBase =\n    userBase && typeof userBase === 'object' && !Array.isArray(userBase)\n      ? { ...defaults, ...userBase }\n      : { ...defaults };\n  return { ...config, base: mergedBase };\n}\n\nexport function createComponentConfigContextPair(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n): {\n  ctx: ComponentConfigContext;\n  mergeVarDefaultsInto: (config: Record<string, unknown>) => Record<string, unknown>;\n} {\n  const seen = new Set<string>();\n  const ns = scopedTokenNamespace(\n    classNaming.scopeId?.trim() || undefined,\n    sanitizeClassSegment(namespace),\n  );\n\n  const varBaseDefaults: Record<string, string> = {};\n\n  function registerVar(\n    logicalPath: string,\n    entry: { value: string; syntax?: string; inherits?: boolean },\n  ): ComponentInternalVarRef {\n    const safeId = sanitizeClassSegment(logicalPath);\n    if (seen.has(safeId)) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn(\n          `[typestyles] Duplicate internal var path \"${logicalPath}\" for component \"${namespace}\". ` +\n            `Declare each path once and reuse the returned ref.`,\n        );\n      }\n    } else {\n      seen.add(safeId);\n    }\n\n    const name = `--${ns}-${safeId}`;\n    varBaseDefaults[name] = entry.value;\n\n    if (entry.syntax != null) {\n      const inherits = entry.inherits ?? false;\n      const css = `@property ${name} { syntax: \"${escapePropertySyntaxString(entry.syntax)}\"; inherits: ${inherits}; initial-value: ${entry.value}; }`;\n      insertRule(`@property:${name}`, css);\n    }\n\n    return {\n      name,\n      var: `var(${name})` as CSSVarRef,\n    };\n  }\n\n  function varFn(id: string, options?: ComponentVarOptions): ComponentInternalVarRef {\n    const safePath = sanitizeClassSegment(id);\n    const valueStr =\n      options?.value !== undefined && options?.value !== null ? String(options.value) : undefined;\n\n    if (valueStr !== undefined) {\n      return registerVar(safePath, {\n        value: valueStr,\n        syntax: options?.syntax,\n        inherits: options?.inherits,\n      });\n    }\n\n    const name = `--${ns}-${safePath}`;\n    if (seen.has(safePath)) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn(\n          `[typestyles] Duplicate internal var \"${id}\" for component \"${namespace}\". ` +\n            `Declare each id once and reuse the returned ref.`,\n        );\n      }\n    } else {\n      seen.add(safePath);\n    }\n\n    return {\n      name,\n      var: `var(${name})` as CSSVarRef,\n    };\n  }\n\n  function varsFn<const T extends ComponentVarDefinitions>(definitions: T): ComponentVarRefTree<T> {\n    const entries = flattenComponentVars(definitions);\n    const refByPath = new Map<string, ComponentInternalVarRef>();\n    const allPathKeys = collectPathKeys(entries);\n\n    for (const e of entries) {\n      refByPath.set(e.path, registerVar(e.path, e));\n    }\n\n    return createVarRefsProxy(refByPath, allPathKeys, '') as ComponentVarRefTree<T>;\n  }\n\n  const ctx: ComponentConfigContext = { var: varFn, vars: varsFn };\n\n  return {\n    ctx,\n    mergeVarDefaultsInto: (config: Record<string, unknown>) =>\n      mergeComponentVarDefaultsInto(config, varBaseDefaults),\n  };\n}\n","import type {\n  CSSProperties,\n  VariantDefinitions,\n  ComponentConfig,\n  ComponentConfigContext,\n  ComponentConfigInput,\n  ComponentReturn,\n  FlatComponentConfig,\n  FlatComponentConfigInput,\n  FlatComponentReturn,\n  SlotComponentConfig,\n  SlotComponentConfigInput,\n  SlotComponentFunction,\n  SlotVariantDefinitions,\n  MultiSlotConfig,\n  MultiSlotConfigInput,\n  MultiSlotReturn,\n} from './types';\nimport { serializeStyle } from './css';\nimport { insertRules, invalidateComponentNamespaceForDev } from './sheet';\nimport { applyLayerToRules, assertOwnLayer } from './layers';\nimport { registeredNamespaces } from './registry';\nimport { buildComponentClassName, type ClassNamingConfig } from './class-naming';\nimport { createComponentConfigContextPair } from './component-config-context';\n\n// ---------------------------------------------------------------------------\n// Reserved keys that signal a dimensioned config (not flat variant keys)\n// ---------------------------------------------------------------------------\nconst RESERVED_KEYS = new Set(['base', 'variants', 'compoundVariants', 'defaultVariants', 'slots']);\n\nfunction devWarnUnknownVariantDimensions(\n  namespace: string,\n  selections: Record<string, unknown>,\n  variants: Record<string, unknown>,\n): void {\n  if (process.env.NODE_ENV === 'production') return;\n  for (const key of Object.keys(selections)) {\n    if (!Object.prototype.hasOwnProperty.call(variants, key)) {\n      console.error(\n        `[typestyles] Unknown variant dimension \"${key}\" for namespace \"${namespace}\".`,\n      );\n    }\n  }\n}\n\n/** When `effective` resolves to no valid option class, warn in dev (typos, bad defaults). */\nfunction devWarnInvalidDimensionOption(\n  namespace: string,\n  dimension: string,\n  effective: unknown,\n  selected: string | undefined,\n  optionMap: Record<string, unknown>,\n): void {\n  if (process.env.NODE_ENV === 'production') return;\n  if (effective == null || effective === false) return;\n  if (selected != null && Object.prototype.hasOwnProperty.call(optionMap, selected)) return;\n  console.error(\n    `[typestyles] Unknown variant \"${String(effective)}\" for dimension \"${dimension}\" in namespace \"${namespace}\".`,\n  );\n}\n\nfunction devWarnUnknownFlatVariantKeys(\n  namespace: string,\n  selections: Record<string, unknown>,\n  variantKeys: readonly string[],\n): void {\n  if (process.env.NODE_ENV === 'production') return;\n  const allowed = new Set(variantKeys);\n  for (const key of Object.keys(selections)) {\n    if (key === 'base') continue;\n    if (!allowed.has(key)) {\n      console.error(`[typestyles] Unknown variant \"${key}\" for namespace \"${namespace}\".`);\n    }\n  }\n}\n\n/**\n * Detect whether a config uses dimensioned variants (has `variants` key)\n * or flat variants (every non-`base` key is a variant).\n */\nfunction isDimensionedConfig(\n  config: Record<string, unknown>,\n): config is ComponentConfig<VariantDefinitions> {\n  return 'variants' in config || 'compoundVariants' in config || 'defaultVariants' in config;\n}\n\nfunction isSlotWithVariantsConfig(\n  config: Record<string, unknown>,\n): config is SlotComponentConfig<readonly string[], SlotVariantDefinitions<string>> {\n  return (\n    'slots' in config &&\n    ('variants' in config || 'compoundVariants' in config || 'defaultVariants' in config)\n  );\n}\n\nfunction isMultiSlotConfig(\n  config: Record<string, unknown>,\n): config is MultiSlotConfig<readonly string[]> {\n  return (\n    'slots' in config &&\n    !('variants' in config || 'compoundVariants' in config || 'defaultVariants' in config)\n  );\n}\n\nfunction resolveComponentConfig(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n  config: Record<string, unknown> | ((ctx: ComponentConfigContext) => Record<string, unknown>),\n): Record<string, unknown> {\n  if (typeof config === 'function') {\n    const { ctx, mergeVarDefaultsInto } = createComponentConfigContextPair(classNaming, namespace);\n    const resolved = config(ctx) as Record<string, unknown>;\n    return mergeVarDefaultsInto(resolved);\n  }\n  return config;\n}\n\n// ---------------------------------------------------------------------------\n// Public API — overloads\n// ---------------------------------------------------------------------------\n\n/**\n * Create a multi-variant component style.\n *\n * Returns an object that is **both callable and destructurable**:\n * - Call it as a function with variant selections → class string (base always included)\n * - Destructure it to access individual class strings\n *\n * Supports two config styles:\n *\n * **Dimensioned variants** (recommended for multi-axis variants):\n * ```ts\n * const button = styles.component('button', {\n *   base: { padding: '8px 16px' },\n *   variants: {\n *     intent: {\n *       primary: { backgroundColor: '#0066ff', color: '#fff' },\n *       ghost: { backgroundColor: 'transparent' },\n *     },\n *     size: {\n *       sm: { fontSize: '14px' },\n *       lg: { fontSize: '18px', padding: '12px 24px' },\n *     },\n *   },\n *   compoundVariants: [\n *     { variants: { intent: 'primary', size: 'lg' }, style: { fontWeight: 700 } },\n *   ],\n *   defaultVariants: { intent: 'primary', size: 'sm' },\n * });\n *\n * // Function call — base always included, defaults applied\n * button()                                    // \"button-base button-intent-primary button-size-sm\"\n * button({ intent: 'ghost' })                 // \"button-base button-intent-ghost button-size-sm\"\n * button({ intent: 'primary', size: 'lg' })   // includes compound class\n *\n * // Destructure individual class strings\n * const { base, 'intent-primary': primary } = button;\n * ```\n *\n * **Flat variants** (simple boolean-style toggles):\n * ```ts\n * const card = styles.component('card', {\n *   base: { padding: '16px', borderRadius: '8px' },\n *   elevated: { boxShadow: '0 4px 12px rgba(0,0,0,0.1)' },\n *   compact: { padding: '8px' },\n * });\n *\n * // Function call\n * card()                        // \"card-base\"\n * card({ elevated: true })      // \"card-base card-elevated\"\n *\n * // Destructure\n * const { base, elevated } = card;\n * ```\n *\n * **Function config** — declare internal custom properties for variant-driven styling:\n * ```ts\n * const badge = styles.component('badge', (c) => {\n *   const v = c.vars({\n *     textColor: '#333',\n *     borderColor: { value: '#ccc', syntax: '<color>', inherits: false },\n *   });\n *   return {\n *     base: { color: v.textColor.var, borderColor: v.borderColor.var, borderWidth: '1px' },\n *     variants: {\n *       tone: {\n *         neutral: {},\n *         danger: { [v.textColor.name]: '#900', [v.borderColor.name]: '#f00' },\n *       },\n *     },\n *     defaultVariants: { tone: 'neutral' },\n *   };\n * });\n * ```\n */\nexport function createComponent<const V extends VariantDefinitions>(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n  config: ComponentConfigInput<V>,\n  layer?: string,\n): ComponentReturn<V>;\n\nexport function createComponent<const K extends string>(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n  config: FlatComponentConfigInput<K>,\n  layer?: string,\n): FlatComponentReturn<K>;\n\nexport function createComponent<\n  const Slots extends readonly string[],\n  V extends SlotVariantDefinitions<Slots[number]>,\n>(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n  config: SlotComponentConfigInput<Slots, V>,\n  layer?: string,\n): SlotComponentFunction<Slots, V>;\n\nexport function createComponent<const Slots extends readonly string[]>(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n  config: MultiSlotConfigInput<Slots>,\n  layer?: string,\n): MultiSlotReturn<Slots>;\n\nexport function createComponent(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n  config: Record<string, unknown> | ((ctx: ComponentConfigContext) => Record<string, unknown>),\n  layer?: string,\n): unknown {\n  if (classNaming.cascadeLayers) {\n    if (layer == null || layer === '') {\n      throw new Error(\n        `[typestyles] \\`layer\\` is required in the third argument when using \\`createStyles({ layers })\\` — ` +\n          `e.g. styles.component('${namespace}', config, { layer: '…' }).`,\n      );\n    }\n    assertOwnLayer(classNaming.cascadeLayers, layer, `styles.component('${namespace}', …)`);\n  }\n\n  claimComponentNamespace(classNaming, namespace);\n\n  const resolved = resolveComponentConfig(classNaming, namespace, config);\n  if (isMultiSlotConfig(resolved)) {\n    return createMultiSlotComponent(\n      classNaming,\n      namespace,\n      resolved as MultiSlotConfig<readonly string[]>,\n      layer,\n    );\n  }\n  if (isSlotWithVariantsConfig(resolved)) {\n    return createSlotComponent(\n      classNaming,\n      namespace,\n      resolved as SlotComponentConfig<readonly string[], SlotVariantDefinitions<string>>,\n      layer,\n    );\n  }\n  if (isDimensionedConfig(resolved)) {\n    return createDimensionedComponent(\n      classNaming,\n      namespace,\n      resolved as ComponentConfig<VariantDefinitions>,\n      layer,\n    );\n  }\n  return createFlatComponent(\n    classNaming,\n    namespace,\n    resolved as FlatComponentConfig<string>,\n    layer,\n  );\n}\n\n// ---------------------------------------------------------------------------\n// Dimensioned variant component (the primary path)\n// ---------------------------------------------------------------------------\n\nfunction registryKeyForComponent(classNaming: ClassNamingConfig, namespace: string): string {\n  const scope = classNaming.scopeId || 'default';\n  return `${scope}:${namespace}`;\n}\n\n/**\n * Reserves the logical namespace before config resolution so nested `styles.component` calls\n * cannot bypass duplicate detection.\n *\n * In **development**, a second registration for the same scope + namespace clears prior sheet\n * keys and registry state (same as `typestyles/hmr` invalidation). Some bundlers (notably Astro)\n * can re-run the module before `import.meta.hot.dispose` fires, so this keeps HMR from throwing.\n * In **production**, duplicate registration does not throw (rule insertion dedupes by key).\n */\nfunction claimComponentNamespace(classNaming: ClassNamingConfig, namespace: string): void {\n  const key = registryKeyForComponent(classNaming, namespace);\n  if (process.env.NODE_ENV !== 'production' && registeredNamespaces.has(key)) {\n    invalidateComponentNamespaceForDev(namespace);\n  }\n  registeredNamespaces.add(key);\n}\n\nfunction finalizeComponentRules(\n  classNaming: ClassNamingConfig,\n  layer: string | undefined,\n  rules: Array<{ key: string; css: string }>,\n): Array<{ key: string; css: string }> {\n  if (classNaming.cascadeLayers && layer) {\n    return applyLayerToRules(rules, layer, classNaming.cascadeLayers);\n  }\n  return rules;\n}\n\nfunction createDimensionedComponent<V extends VariantDefinitions>(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n  config: ComponentConfig<V>,\n  layer?: string,\n): ComponentReturn<V> {\n  const { base, variants = {} as V, compoundVariants = [], defaultVariants = {} } = config;\n\n  const rules: Array<{ key: string; css: string }> = [];\n\n  // Track all class names for the destructurable properties\n  const classMap: Record<string, string> = {};\n\n  // 1. Base\n  let baseClassName: string | undefined;\n  if (base) {\n    baseClassName = buildComponentClassName(classNaming, namespace, 'base', base);\n    classMap['base'] = baseClassName;\n    rules.push(...serializeStyle(`.${baseClassName}`, base));\n  }\n\n  // 2. Variant options\n  const variantClassByKey: Record<string, string> = {};\n  for (const [dimension, options] of Object.entries(variants)) {\n    for (const [option, properties] of Object.entries(options as Record<string, CSSProperties>)) {\n      const segment = `${dimension}-${option}`;\n      const className = buildComponentClassName(classNaming, namespace, segment, properties);\n      variantClassByKey[segment] = className;\n      classMap[segment] = className;\n      rules.push(...serializeStyle(`.${className}`, properties));\n    }\n  }\n\n  // 3. Compound variants\n  const compoundClassByIndex: string[] = [];\n  (compoundVariants as Array<{ variants: Record<string, unknown>; style: CSSProperties }>).forEach(\n    (cv, index) => {\n      const className = buildComponentClassName(\n        classNaming,\n        namespace,\n        `compound-${index}`,\n        cv.style,\n      );\n      compoundClassByIndex[index] = className;\n      rules.push(...serializeStyle(`.${className}`, cv.style));\n    },\n  );\n\n  insertRules(finalizeComponentRules(classNaming, layer, rules));\n\n  // 4. Build the callable + destructurable return\n  const selectorFn = (selections: Record<string, unknown> = {}): string => {\n    const classes: string[] = [];\n\n    if (base && baseClassName) classes.push(baseClassName);\n\n    devWarnUnknownVariantDimensions(namespace, selections, variants as Record<string, unknown>);\n\n    // Resolve selections with defaults\n    const resolved: Record<string, unknown> = {};\n    for (const [dimension, options] of Object.entries(variants)) {\n      const optionMap = options as Record<string, CSSProperties>;\n      const explicit = selections[dimension];\n      const fallback = (defaultVariants as Record<string, unknown>)[dimension];\n      const effective = explicit ?? fallback;\n      const selected = normalizeSelection(effective, optionMap);\n      resolved[dimension] = selected;\n\n      devWarnInvalidDimensionOption(\n        namespace,\n        dimension,\n        effective,\n        selected,\n        optionMap as Record<string, unknown>,\n      );\n    }\n\n    // Apply variant classes\n    for (const [dimension, options] of Object.entries(variants)) {\n      const optionMap = options as Record<string, CSSProperties>;\n      const selected = normalizeSelection(resolved[dimension], optionMap);\n      if (selected != null) {\n        const key = `${dimension}-${selected}`;\n        const cn = variantClassByKey[key];\n        if (cn) classes.push(cn);\n      }\n    }\n\n    // Apply compound variant classes\n    (\n      compoundVariants as Array<{ variants: Record<string, unknown>; style: CSSProperties }>\n    ).forEach((cv, index) => {\n      const matches = Object.entries(cv.variants).every(([k, expected]) => {\n        const options = (variants as Record<string, Record<string, CSSProperties>>)[k];\n        if (!options) return false;\n\n        const selected = normalizeSelection(resolved[k], options);\n        if (selected == null) return false;\n\n        if (Array.isArray(expected)) {\n          return expected.some((value) => normalizeSelection(value, options) === selected);\n        }\n\n        return normalizeSelection(expected, options) === selected;\n      });\n      if (matches) {\n        const cn = compoundClassByIndex[index];\n        if (cn) classes.push(cn);\n      }\n    });\n\n    return classes.join(' ');\n  };\n\n  return makeCallableObject(\n    (...args: unknown[]) => selectorFn(args[0] as Record<string, unknown> | undefined),\n    classMap,\n  ) as ComponentReturn<V>;\n}\n\n// ---------------------------------------------------------------------------\n// Flat variant component\n// ---------------------------------------------------------------------------\n\nfunction createFlatComponent<K extends string>(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n  config: FlatComponentConfig<K>,\n  layer?: string,\n): FlatComponentReturn<K> {\n  const rules: Array<{ key: string; css: string }> = [];\n  const classMap: Record<string, string> = {};\n  const variantKeys: string[] = [];\n\n  for (const [key, properties] of Object.entries(config)) {\n    if (RESERVED_KEYS.has(key) && key !== 'base') continue;\n    const props = properties as CSSProperties;\n    const segment = key;\n    const className = buildComponentClassName(classNaming, namespace, segment, props);\n    classMap[segment] = className;\n    rules.push(...serializeStyle(`.${className}`, props));\n    if (key !== 'base') {\n      variantKeys.push(key);\n    }\n  }\n\n  insertRules(finalizeComponentRules(classNaming, layer, rules));\n\n  const baseClassName = classMap['base'];\n\n  const selectorFn = (selections: Record<string, unknown> = {}): string => {\n    const classes: string[] = [];\n\n    devWarnUnknownFlatVariantKeys(namespace, selections, variantKeys);\n\n    if (baseClassName) classes.push(baseClassName);\n\n    for (const key of variantKeys) {\n      if (selections[key]) {\n        const cn = classMap[key];\n        if (cn) classes.push(cn);\n      }\n    }\n\n    return classes.join(' ');\n  };\n\n  return makeCallableObject(\n    (...args: unknown[]) => selectorFn(args[0] as Record<string, unknown> | undefined),\n    classMap,\n  ) as FlatComponentReturn<K>;\n}\n\n// ---------------------------------------------------------------------------\n// Multi-slot component (no variants, just multiple independent slot styles)\n// ---------------------------------------------------------------------------\n\nfunction createMultiSlotComponent<Slots extends readonly string[]>(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n  config: MultiSlotConfig<Slots>,\n  layer?: string,\n): MultiSlotReturn<Slots> {\n  const { slots } = config;\n\n  const rules: Array<{ key: string; css: string }> = [];\n  const slotClassMap: Record<string, string> = {};\n\n  for (const slot of slots) {\n    const properties = (config as Record<string, CSSProperties | undefined>)[slot];\n    if (properties) {\n      const className = buildComponentClassName(classNaming, namespace, slot, properties);\n      slotClassMap[slot] = className;\n      rules.push(...serializeStyle(`.${className}`, properties));\n    } else {\n      slotClassMap[slot] = '';\n    }\n  }\n\n  insertRules(finalizeComponentRules(classNaming, layer, rules));\n\n  const selectorFn = (): Record<string, string> => {\n    const result: Record<string, string> = {};\n    for (const slot of slots) {\n      result[slot] = slotClassMap[slot] || '';\n    }\n    return result;\n  };\n\n  return makeMultiSlotObject(selectorFn, slotClassMap) as MultiSlotReturn<Slots>;\n}\n\nfunction makeMultiSlotObject(\n  selectorFn: () => Record<string, string>,\n  slotClassMap: Record<string, string>,\n): unknown {\n  const fn = function (this: unknown) {\n    return selectorFn();\n  };\n\n  Object.defineProperties(\n    fn,\n    Object.fromEntries(\n      Object.entries(slotClassMap).map(([key, value]) => [\n        key,\n        { value, enumerable: true, writable: false, configurable: false },\n      ]),\n    ),\n  );\n\n  return fn;\n}\n\n// ---------------------------------------------------------------------------\n// Slot component (unchanged behavior, kept for complex multi-element components)\n// ---------------------------------------------------------------------------\n\nfunction createSlotComponent<\n  Slots extends readonly string[],\n  V extends SlotVariantDefinitions<Slots[number]>,\n>(\n  classNaming: ClassNamingConfig,\n  namespace: string,\n  config: SlotComponentConfig<Slots, V>,\n  layer?: string,\n): SlotComponentFunction<Slots, V> {\n  const {\n    slots,\n    base = {},\n    variants = {} as V,\n    compoundVariants = [],\n    defaultVariants = {},\n  } = config;\n\n  const rules: Array<{ key: string; css: string }> = [];\n\n  const baseClassBySlot: Record<string, string> = {};\n  for (const [slot, properties] of Object.entries(base as Record<string, CSSProperties>)) {\n    const className = buildComponentClassName(classNaming, namespace, slot, properties);\n    baseClassBySlot[slot] = className;\n    rules.push(...serializeStyle(`.${className}`, properties));\n  }\n\n  const variantClassByKey: Record<string, string> = {};\n  for (const [dimension, options] of Object.entries(variants)) {\n    for (const [option, slotStyles] of Object.entries(\n      options as Record<string, Record<string, CSSProperties>>,\n    )) {\n      for (const [slot, properties] of Object.entries(slotStyles)) {\n        const segment = `${slot}-${dimension}-${option}`;\n        const className = buildComponentClassName(classNaming, namespace, segment, properties);\n        variantClassByKey[segment] = className;\n        rules.push(...serializeStyle(`.${className}`, properties));\n      }\n    }\n  }\n\n  const slotCompoundClassByKey: Record<string, string> = {};\n  (\n    compoundVariants as Array<{\n      variants: Record<string, unknown>;\n      style: Record<string, CSSProperties>;\n    }>\n  ).forEach((cv, index) => {\n    for (const [slot, properties] of Object.entries(cv.style)) {\n      const segment = `${slot}-compound-${index}`;\n      const className = buildComponentClassName(classNaming, namespace, segment, properties);\n      slotCompoundClassByKey[`${slot}::${index}`] = className;\n      rules.push(...serializeStyle(`.${className}`, properties));\n    }\n  });\n\n  insertRules(finalizeComponentRules(classNaming, layer, rules));\n\n  return ((selections: Record<string, unknown> = {}) => {\n    const classes = Object.fromEntries(\n      (slots as readonly string[]).map((slot) => [slot, [] as string[]]),\n    ) as Record<string, string[]>;\n\n    devWarnUnknownVariantDimensions(namespace, selections, variants as Record<string, unknown>);\n\n    const resolvedSelections: Record<string, unknown> = {};\n    for (const [dimension, options] of Object.entries(variants)) {\n      const optionMap = options as Record<string, unknown>;\n      const explicit = selections[dimension];\n      const fallback = (defaultVariants as Record<string, unknown>)[dimension];\n      const effective = explicit ?? fallback;\n      const selected = normalizeSelection(effective, optionMap);\n      resolvedSelections[dimension] = selected;\n\n      devWarnInvalidDimensionOption(namespace, dimension, effective, selected, optionMap);\n    }\n\n    for (const [slot, properties] of Object.entries(base as Record<string, CSSProperties>)) {\n      const cn = baseClassBySlot[slot];\n      if (cn && classes[slot]) classes[slot].push(cn);\n      void properties; // used only for iteration\n    }\n\n    for (const [dimension, options] of Object.entries(variants)) {\n      const optionMap = options as Record<string, Record<string, CSSProperties>>;\n      const selected = normalizeSelection(resolvedSelections[dimension], optionMap);\n      if (selected == null) continue;\n      const slotStyles = optionMap[selected];\n      if (!slotStyles) continue;\n\n      for (const slot of Object.keys(slotStyles)) {\n        const segment = `${slot}-${dimension}-${selected}`;\n        const cn = variantClassByKey[segment];\n        if (cn && classes[slot]) classes[slot].push(cn);\n      }\n    }\n\n    (\n      compoundVariants as Array<{\n        variants: Record<string, unknown>;\n        style: Record<string, CSSProperties>;\n      }>\n    ).forEach((cv, index) => {\n      const matches = Object.entries(cv.variants).every(([k, expected]) => {\n        const options = (variants as Record<string, Record<string, unknown>>)[k];\n        if (!options) return false;\n\n        const selected = normalizeSelection(resolvedSelections[k], options);\n        if (selected == null) return false;\n\n        if (Array.isArray(expected)) {\n          return expected.some((value) => normalizeSelection(value, options) === selected);\n        }\n\n        return normalizeSelection(expected, options) === selected;\n      });\n\n      if (!matches) return;\n\n      for (const slot of Object.keys(cv.style)) {\n        const cn = slotCompoundClassByKey[`${slot}::${index}`];\n        if (cn && classes[slot]) classes[slot].push(cn);\n      }\n    });\n\n    return Object.fromEntries(\n      (slots as readonly string[]).map((slot) => [slot, classes[slot].join(' ')]),\n    ) as Record<Slots[number], string>;\n  }) as SlotComponentFunction<Slots, V>;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction normalizeSelection(value: unknown, options: Record<string, unknown>): string | undefined {\n  if (value == null) return undefined;\n\n  if (typeof value === 'boolean') {\n    const boolKey = String(value);\n    if (Object.prototype.hasOwnProperty.call(options, boolKey)) return boolKey;\n    if (value === false) return undefined;\n    return boolKey;\n  }\n\n  return String(value);\n}\n\n/**\n * Create an object that is both callable as a function and has properties\n * for each class in the classMap. This is the CVA-style return.\n *\n * Uses a Proxy so that:\n * - Calling it invokes selectorFn\n * - Property access returns the class string from classMap\n * - Destructuring works via standard property enumeration\n */\nfunction makeCallableObject(\n  selectorFn: (...args: unknown[]) => string,\n  classMap: Record<string, string>,\n): unknown {\n  // Create the function as the base (makes it callable)\n  const fn = function (this: unknown, ...args: unknown[]) {\n    return selectorFn(...args);\n  };\n\n  // Copy class map properties onto the function\n  Object.defineProperties(\n    fn,\n    Object.fromEntries(\n      Object.entries(classMap).map(([key, value]) => [\n        key,\n        { value, enumerable: true, writable: false, configurable: false },\n      ]),\n    ),\n  );\n\n  return fn;\n}\n","import { sanitizeClassSegment } from './class-naming';\nimport type { JoinAnd } from './join-selector-list-types';\n\n/**\n * Object key for nested styles: `@container … { … }`.\n * Returned by {@link container} for typed container queries (see also raw `@container` strings).\n */\nexport type ContainerQueryKey = `@container ${string}`;\n\n/**\n * Typed `container-name` from {@link createContainerRef} or `styles.containerRef()` (human-readable; use for `containerName` and {@link container}).\n */\nexport type ContainerNameRef = string & { readonly __containerNameRef?: true };\n\n/**\n * Size features for {@link container}. Maps to parenthesis groups joined with `and`.\n * Numbers become `px` except `aspectRatio` (emitted as a number or pass a string like `16 / 9`).\n */\nexport type ContainerQueryFeatures = {\n  minWidth?: string | number;\n  maxWidth?: string | number;\n  minHeight?: string | number;\n  maxHeight?: string | number;\n  minInlineSize?: string | number;\n  maxInlineSize?: string | number;\n  minBlockSize?: string | number;\n  maxBlockSize?: string | number;\n  aspectRatio?: string | number;\n  orientation?: 'portrait' | 'landscape';\n};\n\n/**\n * Named container + size features (`name` matches `containerName` on an ancestor).\n */\nexport type ContainerQueryObject = ContainerQueryFeatures & {\n  name?: string;\n};\n\n// ---------------------------------------------------------------------------\n// Type-level @container keys (mirrors conditionFromFeatures + emitFeatureValue)\n// ---------------------------------------------------------------------------\n\ntype EmitLengthish<V> = V extends 0\n  ? '0'\n  : V extends number\n    ? `${V}px`\n    : V extends string\n      ? V\n      : never;\n\ntype EmitAspect<V> = V extends 0 ? '0' : V extends number ? `${V}` : V extends string ? V : never;\n\ntype GMinWidth<F extends ContainerQueryFeatures> = F['minWidth'] extends infer V\n  ? V extends string | number\n    ? [`(min-width: ${EmitLengthish<V>})`]\n    : []\n  : [];\n\ntype GMaxWidth<F extends ContainerQueryFeatures> = F['maxWidth'] extends infer V\n  ? V extends string | number\n    ? [`(max-width: ${EmitLengthish<V>})`]\n    : []\n  : [];\n\ntype GMinHeight<F extends ContainerQueryFeatures> = F['minHeight'] extends infer V\n  ? V extends string | number\n    ? [`(min-height: ${EmitLengthish<V>})`]\n    : []\n  : [];\n\ntype GMaxHeight<F extends ContainerQueryFeatures> = F['maxHeight'] extends infer V\n  ? V extends string | number\n    ? [`(max-height: ${EmitLengthish<V>})`]\n    : []\n  : [];\n\ntype GMinInlineSize<F extends ContainerQueryFeatures> = F['minInlineSize'] extends infer V\n  ? V extends string | number\n    ? [`(min-inline-size: ${EmitLengthish<V>})`]\n    : []\n  : [];\n\ntype GMaxInlineSize<F extends ContainerQueryFeatures> = F['maxInlineSize'] extends infer V\n  ? V extends string | number\n    ? [`(max-inline-size: ${EmitLengthish<V>})`]\n    : []\n  : [];\n\ntype GMinBlockSize<F extends ContainerQueryFeatures> = F['minBlockSize'] extends infer V\n  ? V extends string | number\n    ? [`(min-block-size: ${EmitLengthish<V>})`]\n    : []\n  : [];\n\ntype GMaxBlockSize<F extends ContainerQueryFeatures> = F['maxBlockSize'] extends infer V\n  ? V extends string | number\n    ? [`(max-block-size: ${EmitLengthish<V>})`]\n    : []\n  : [];\n\ntype GAspectRatio<F extends ContainerQueryFeatures> = F['aspectRatio'] extends infer V\n  ? V extends string | number\n    ? [`(aspect-ratio: ${EmitAspect<V>})`]\n    : []\n  : [];\n\ntype GOrientation<F extends ContainerQueryFeatures> = F['orientation'] extends infer V\n  ? V extends 'portrait' | 'landscape'\n    ? [`(orientation: ${V})`]\n    : []\n  : [];\n\ntype ContainerConditionTuple<F extends ContainerQueryFeatures> = [\n  ...GMinWidth<F>,\n  ...GMaxWidth<F>,\n  ...GMinHeight<F>,\n  ...GMaxHeight<F>,\n  ...GMinInlineSize<F>,\n  ...GMaxInlineSize<F>,\n  ...GMinBlockSize<F>,\n  ...GMaxBlockSize<F>,\n  ...GAspectRatio<F>,\n  ...GOrientation<F>,\n];\n\ntype CondFromFeatures<F extends ContainerQueryFeatures> = JoinAnd<ContainerConditionTuple<F>>;\n\ntype NamePart<F extends ContainerQueryObject> = F['name'] extends string\n  ? F['name'] extends ''\n    ? ''\n    : F['name']\n  : '';\n\n/** Narrow `@container` key for {@link container} object form — allows `[container({ … })]` without widening. */\nexport type ContainerObjectKey<F extends ContainerQueryObject> =\n  CondFromFeatures<Omit<F, 'name'>> extends infer B extends string\n    ? B extends ''\n      ? never\n      : NamePart<F> extends ''\n        ? `@container ${B}`\n        : `@container ${NamePart<F>} ${B}`\n    : never;\n\nconst FEATURE_ORDER: ReadonlyArray<{\n  key: keyof ContainerQueryFeatures;\n  cssName: string;\n  valueKind: 'length' | 'aspect' | 'orientation';\n}> = [\n  { key: 'minWidth', cssName: 'min-width', valueKind: 'length' },\n  { key: 'maxWidth', cssName: 'max-width', valueKind: 'length' },\n  { key: 'minHeight', cssName: 'min-height', valueKind: 'length' },\n  { key: 'maxHeight', cssName: 'max-height', valueKind: 'length' },\n  { key: 'minInlineSize', cssName: 'min-inline-size', valueKind: 'length' },\n  { key: 'maxInlineSize', cssName: 'max-inline-size', valueKind: 'length' },\n  { key: 'minBlockSize', cssName: 'min-block-size', valueKind: 'length' },\n  { key: 'maxBlockSize', cssName: 'max-block-size', valueKind: 'length' },\n  { key: 'aspectRatio', cssName: 'aspect-ratio', valueKind: 'aspect' },\n  { key: 'orientation', cssName: 'orientation', valueKind: 'orientation' },\n];\n\nfunction emitFeatureValue(\n  value: string | number,\n  kind: 'length' | 'aspect' | 'orientation',\n): string {\n  if (kind === 'orientation') {\n    return String(value);\n  }\n  if (typeof value === 'number') {\n    if (kind === 'aspect') {\n      return String(value);\n    }\n    if (value === 0) {\n      return '0';\n    }\n    return `${value}px`;\n  }\n  return value;\n}\n\nexport type CreateContainerRefOptions = {\n  /**\n   * When non-empty, the name is `{scopeId}-{label}` (sanitized), same as `createStyles({ scopeId })`.\n   * When empty, the name is `{prefix}-{label}` instead.\n   */\n  scopeId?: string;\n  /**\n   * Used only if **`scopeId`** is empty: `{prefix}-{label}`. Default `ts` (same default as class `prefix`).\n   */\n  prefix?: string;\n};\n\n/**\n * Build a **human-readable** `container-name`: share one value between `containerName` and {@link container}’s `name` argument without repeating string literals.\n *\n * Shape: **`{scopeId}-{label}`** when `scopeId` is set, else **`{prefix}-{label}`** (defaults match `createStyles`).\n *\n * Prefer **`styles.containerRef(label)`** so `scopeId` / `prefix` come from your instance.\n *\n * @example\n * ```ts\n * const shell = createContainerRef('product-shell', { scopeId: 'my-app' });\n *\n * styles.class('shell', {\n *   containerType: 'inline-size',\n *   containerName: shell,\n * });\n *\n * styles.class('shell-body', {\n *   ...styles.atRuleBlock(styles.container(shell, { minWidth: 480 }), { flexDirection: 'row' }),\n * });\n * ```\n */\nexport function createContainerRef(\n  label: string,\n  options?: CreateContainerRefOptions,\n): ContainerNameRef {\n  const trimmed = label.trim();\n  if (!trimmed) {\n    throw new Error('[typestyles] createContainerRef(label): label must not be empty.');\n  }\n\n  const segment = sanitizeClassSegment(trimmed);\n  const scopeId = options?.scopeId?.trim() ?? '';\n\n  if (scopeId) {\n    return `${sanitizeClassSegment(scopeId)}-${segment}` as ContainerNameRef;\n  }\n\n  const prefixRaw = options?.prefix?.trim() || 'ts';\n  return `${sanitizeClassSegment(prefixRaw)}-${segment}` as ContainerNameRef;\n}\n\nfunction conditionFromFeatures(features: ContainerQueryFeatures): string {\n  const groups: string[] = [];\n\n  for (const { key, cssName, valueKind } of FEATURE_ORDER) {\n    const raw = features[key];\n    if (raw === undefined || raw === null) continue;\n    const v = emitFeatureValue(raw as string | number, valueKind);\n    groups.push(`(${cssName}: ${v})`);\n  }\n\n  if (groups.length === 0) {\n    return '';\n  }\n  return groups.join(' and ');\n}\n\n/**\n * Build a typed `@container` key for use in style objects (same output shape as a manual `'@container …'` string).\n *\n * **Ecosystem notes:** StyleX and Panda usually expose `@container` as string keys (or Panda conditions);\n * Vanilla Extract’s `createContainer()` scopes names—here you set `containerName` and pass the same string as `name`.\n *\n * @example Size query\n * ```ts\n * styles.class('card', {\n *   containerType: 'inline-size',\n *   ...styles.atRuleBlock(styles.container({ minWidth: 400 }), { padding: '24px' }),\n * });\n * ```\n *\n * @example Named container\n * ```ts\n * styles.class('item', {\n *   ...styles.atRuleBlock(styles.container('sidebar', { minWidth: 300 }), {\n *     flexDirection: 'row',\n *   }),\n * });\n * ```\n *\n * @example Style / scroll / `not` — raw condition after `@container`\n * ```ts\n * ...styles.atRuleBlock(styles.container('style(--theme: dark)'), { color: '#fff' })\n * ```\n */\nexport function container<const F extends ContainerQueryObject>(features: F): ContainerObjectKey<F>;\n\nexport function container<const N extends string, const F extends ContainerQueryFeatures>(\n  name: N,\n  features: F,\n): CondFromFeatures<F> extends infer B extends string\n  ? B extends ''\n    ? never\n    : `@container ${N} ${B}`\n  : never;\n\n/** Raw condition after `@container` — literal `S` preserves a narrow key for `[container('…')]`. */\nexport function container<const S extends string>(rawCondition: S): `@container ${S}`;\n\nexport function container(rawCondition: string): ContainerQueryKey;\n\nexport function container(\n  a: string | ContainerQueryObject,\n  b?: ContainerQueryFeatures,\n): ContainerQueryKey {\n  if (typeof a === 'string' && b !== undefined) {\n    const body = conditionFromFeatures(b);\n    if (!body) {\n      throw new Error(\n        '[typestyles] container(name, features): pass at least one size feature (e.g. minWidth), or use container(\"raw condition\") for non-size queries.',\n      );\n    }\n    return `@container ${a} ${body}` as ContainerQueryKey;\n  }\n\n  if (typeof a === 'string') {\n    const cond = a.trim();\n    if (!cond) {\n      throw new Error('[typestyles] container(raw): condition string must not be empty.');\n    }\n    return `@container ${cond}` as ContainerQueryKey;\n  }\n\n  const { name, ...features } = a;\n  const body = conditionFromFeatures(features as ContainerQueryFeatures);\n  if (!body) {\n    throw new Error(\n      '[typestyles] container({ … }): pass at least one size feature, or use container(\"raw condition\") for style/scroll-state queries.',\n    );\n  }\n  if (name !== undefined && name !== '') {\n    return `@container ${name} ${body}` as ContainerQueryKey;\n  }\n  return `@container ${body}` as ContainerQueryKey;\n}\n","import type { CSSProperties } from './types';\n\n/**\n * Returns a one-key object to **spread** into a style map.\n *\n * TypeScript widens **computed** `[someFn()]` keys to `string`, which clashes with {@link CSSProperties}’s\n * `` `@${string}` `` index signature. Spreading `Record<@${string}, CSSProperties>` preserves a narrow key type.\n *\n * Works for keys from `container()`, literal `'@media (…)'`, `'@supports (…)'`, etc.\n *\n * @example\n * ```ts\n * styles.class('card', {\n *   padding: '16px',\n *   ...atRuleBlock(styles.container({ minWidth: 400 }), { padding: '24px' }),\n * });\n * ```\n */\nexport function atRuleBlock<const K extends `@${string}`>(\n  key: K,\n  block: CSSProperties,\n): Record<K, CSSProperties> {\n  return { [key]: block } as Record<K, CSSProperties>;\n}\n","import type { JoinComma } from './join-selector-list-types';\n\n/**\n * Object key for nested styles using {@link has} — compiles to `.base:has(…)`.\n * Prefer variadic {@link has} so keys narrow to a single literal (mixes cleanly with longhands).\n */\nexport type HasNestedKey = `&:has(${string})`;\n\n/**\n * Object key for nested styles using {@link is} — compiles to `.base:is(…)`.\n */\nexport type IsNestedKey = `&:is(${string})`;\n\n/**\n * Object key for nested styles using {@link where} — compiles to `.base:where(…)` (zero-specificity).\n */\nexport type WhereNestedKey = `&:where(${string})`;\n\n/**\n * Pseudos often grouped with {@link is} for shared focus/hover styles.\n * Plain strings still work; this union improves autocomplete at call sites.\n */\nexport type IsPseudoArg =\n  | ':hover'\n  | ':active'\n  | ':focus'\n  | ':focus-visible'\n  | ':focus-within'\n  | ':disabled'\n  | ':enabled'\n  | ':checked'\n  | ':indeterminate'\n  | ':read-only'\n  | ':read-write'\n  | ':placeholder-shown'\n  | ':default'\n  | ':required'\n  | ':optional'\n  | ':valid'\n  | ':invalid'\n  | ':in-range'\n  | ':out-of-range'\n  | ':any-link'\n  | ':link'\n  | ':visited'\n  | ':target'\n  | ':target-within';\n\nfunction joinSelectorListArguments(parts: readonly string[]): string {\n  const trimmed = parts.map((p) => p.trim()).filter((p) => p.length > 0);\n  return trimmed.join(', ');\n}\n\n/**\n * Build a nested style key for `:has()` — parental/descendant-aware styling without leaving the style object.\n *\n * Accepts a [relative selector list](https://drafts.csswg.org/selectors/#relative-real-selector-list):\n * multiple arguments become comma-separated branches inside `:has()`.\n *\n * **Ecosystem:** StyleX exposes contextual selectors via dedicated `when.*` helpers; Panda/Stitches lean on\n * nesting strings. TypeStyles keeps emit as real CSS and adds small builders beside raw `'&:has(…)'` keys.\n *\n * @example\n * ```ts\n * styles.class('nav', {\n *   base: { display: 'flex' },\n *   [has('.active')]: { borderBottom: '2px solid blue' },\n * });\n * ```\n */\nexport function has<const T extends readonly string[]>(\n  ...relativeSelectors: T\n): `&:has(${JoinComma<T>})`;\nexport function has(...relativeSelectors: string[]): HasNestedKey {\n  const inner = joinSelectorListArguments(relativeSelectors);\n  if (!inner) {\n    throw new Error('[typestyles] has(…): pass at least one non-empty relative selector string.');\n  }\n  return `&:has(${inner})` as HasNestedKey;\n}\n\n/**\n * Build a nested style key for `:is()` — group pseudos or tags into one branch with the specificity of the\n * most specific argument selector.\n *\n * @example\n * ```ts\n * [is(':hover', ':focus-visible')]: { outline: '2px solid blue' }\n * ```\n */\nexport function is<const T extends readonly string[]>(...selectors: T): `&:is(${JoinComma<T>})`;\nexport function is(...selectors: string[]): IsNestedKey {\n  const inner = joinSelectorListArguments(selectors);\n  if (!inner) {\n    throw new Error('[typestyles] is(…): pass at least one non-empty selector string.');\n  }\n  return `&:is(${inner})` as IsNestedKey;\n}\n\n/**\n * Build a nested style key for `:where()` — **zero-specificity** wrapper so library defaults stay easy for\n * consumers to override (unlike `:is()`, which preserves specificity of its arguments).\n *\n * @example\n * ```ts\n * [where('.nav')]: { display: 'flex', gap: '8px' }\n * ```\n */\nexport function where<const T extends readonly string[]>(\n  ...selectors: T\n): `&:where(${JoinComma<T>})`;\nexport function where(...selectors: string[]): WhereNestedKey {\n  const inner = joinSelectorListArguments(selectors);\n  if (!inner) {\n    throw new Error('[typestyles] where(…): pass at least one non-empty selector string.');\n  }\n  return `&:where(${inner})` as WhereNestedKey;\n}\n","import type {\n  CSSProperties,\n  CSSPropertiesWithUtils,\n  StyleUtils,\n  VariantDefinitions,\n  ComponentConfig,\n  ComponentConfigContext,\n  ComponentConfigInput,\n  ComponentReturn,\n  FlatComponentConfigInput,\n  FlatComponentReturn,\n  SlotVariantDefinitions,\n  SlotComponentConfigInput,\n  SlotComponentFunction,\n  MultiSlotConfigInput,\n  MultiSlotReturn,\n} from './types';\nimport { serializeStyle } from './css';\nimport { insertRules } from './sheet';\nimport type { CascadeLayersInput, CascadeLayersObjectInput } from './layers';\nimport { applyLayerToRules, assertOwnLayer, resolveCascadeLayers } from './layers';\nimport { registeredNamespaces } from './registry';\nimport {\n  buildSingleClassName,\n  defaultClassNamingConfig,\n  hashString,\n  mergeClassNaming,\n  sanitizeClassSegment,\n  stableSerialize,\n  type ClassNamingConfig,\n} from './class-naming';\nimport { createComponent } from './component';\nimport {\n  container as containerQuery,\n  createContainerRef,\n  type ContainerNameRef,\n} from './container';\nimport { atRuleBlock as atRuleBlockFn } from './at-rule-block';\nimport { has as hasNested, is as isNested, where as whereNested } from './relational-pseudo';\n\n/**\n * Create a single class with the given styles. Returns the class name string.\n * Use this when you don't need variants — just a class with typed CSS properties.\n *\n * @example\n * ```ts\n * const card = styles.class('card', {\n *   padding: '1rem',\n *   borderRadius: '0.5rem',\n *   backgroundColor: 'white',\n *   '&:hover': { boxShadow: '0 4px 6px rgb(0 0 0 / 0.1)' },\n * });\n *\n * <div className={card} />  // class=\"card\"\n * ```\n */\nfunction registryKeyForClass(classNaming: ClassNamingConfig, name: string): string {\n  const scope = classNaming.scopeId || 'default';\n  return `${scope}:${name}`;\n}\n\nexport function createClass(\n  classNaming: ClassNamingConfig,\n  name: string,\n  properties: CSSProperties,\n  layer?: string,\n): string {\n  const regKey = registryKeyForClass(classNaming, name);\n  if (process.env.NODE_ENV !== 'production' && registeredNamespaces.has(regKey)) {\n    const scopeLabel = classNaming.scopeId?.trim()\n      ? `'${classNaming.scopeId}'`\n      : 'default (empty scopeId)';\n    throw new Error(\n      `[typestyles] styles.class('${name}', ...) was called more than once for scope ${scopeLabel}. ` +\n        `Class names would collide. Use a unique class name, or isolate with ` +\n        `createStyles({ scopeId: fileScopeId(import.meta) }) or createStyles({ scopeId: 'your-package' }) ` +\n        `(import \\`fileScopeId\\` from 'typestyles').`,\n    );\n  }\n  registeredNamespaces.add(regKey);\n\n  const className = buildSingleClassName(classNaming, name, properties);\n  const selector = `.${className}`;\n  const rules = serializeStyle(selector, properties);\n  if (classNaming.cascadeLayers) {\n    if (layer == null || layer === '') {\n      throw new Error(\n        `[typestyles] \\`layer\\` is required in the third argument when using \\`createStyles({ layers })\\` — ` +\n          `e.g. styles.class('${name}', { … }, { layer: '…' }).`,\n      );\n    }\n    assertOwnLayer(classNaming.cascadeLayers, layer, `styles.class('${name}', …)`);\n    insertRules(applyLayerToRules(rules, layer, classNaming.cascadeLayers));\n  } else {\n    insertRules(rules);\n  }\n\n  return className;\n}\n\n/**\n * Create a deterministic hashed class from a style object.\n * The same style object shape+values always returns the same class name.\n *\n * Optional `label` is appended as a readable prefix for debugging.\n *\n * @example\n * ```ts\n * const button = styles.hashClass({\n *   padding: '8px 12px',\n *   borderRadius: '8px',\n * });\n *\n * const danger = styles.hashClass(\n *   { backgroundColor: 'red', color: 'white' },\n *   'danger'\n * );\n * ```\n */\nexport function createHashClass(\n  classNaming: ClassNamingConfig,\n  properties: CSSProperties,\n  label?: string,\n  layer?: string,\n): string {\n  const cfg = classNaming;\n  const serialized =\n    cfg.scopeId !== ''\n      ? stableSerialize({ scope: cfg.scopeId, properties })\n      : stableSerialize(properties);\n  const hash = hashString(serialized);\n  const className = label\n    ? `${cfg.prefix}-${sanitizeClassSegment(label)}-${hash}`\n    : `${cfg.prefix}-${hash}`;\n  const selector = `.${className}`;\n  const rules = serializeStyle(selector, properties);\n  if (classNaming.cascadeLayers) {\n    if (layer == null || layer === '') {\n      throw new Error(\n        '[typestyles] `layer` is required in the options argument when using `createStyles({ layers })` — ' +\n          'e.g. styles.hashClass({ … }, { layer: `utilities` }).',\n      );\n    }\n    assertOwnLayer(classNaming.cascadeLayers, layer, 'styles.hashClass(…)');\n    insertRules(applyLayerToRules(rules, layer, classNaming.cascadeLayers));\n  } else {\n    insertRules(rules);\n  }\n  return className;\n}\n\n/**\n * Compose multiple component functions or class strings into one.\n * Returns a new function that calls all inputs and joins results.\n *\n * @example\n * ```ts\n * const base = styles.component('base', { base: { padding: '8px' } });\n * const primary = styles.component('primary', { base: { color: 'blue' } });\n * const button = styles.compose(base, primary);\n *\n * button(); // \"base-base primary-base\"\n * ```\n */\ntype AnySelectorFunction = {\n  (...args: unknown[]): string;\n};\n\nexport function compose(\n  ...selectors: Array<AnySelectorFunction | string | false | null | undefined>\n): AnySelectorFunction {\n  const validSelectors = selectors.filter(Boolean) as Array<AnySelectorFunction | string>;\n\n  return (...args: unknown[]): string => {\n    const classNames: string[] = [];\n\n    for (const selector of validSelectors) {\n      if (typeof selector === 'string') {\n        classNames.push(selector);\n      } else {\n        const result = selector(...args);\n        if (result) classNames.push(result);\n      }\n    }\n\n    return classNames.join(' ');\n  };\n}\n\n// ---------------------------------------------------------------------------\n// withUtils\n// ---------------------------------------------------------------------------\n\nexport type StylesApi = {\n  /** Resolved naming config for this instance (useful for debugging). */\n  readonly classNaming: Readonly<ClassNamingConfig>;\n  /**\n   * Typed `@container` object keys for nested styles (size features, named containers, or raw conditions).\n   * Same function as the named export `container` from `typestyles`.\n   */\n  readonly container: typeof containerQuery;\n  /**\n   * Readable `container-name` for `containerName`: `{scopeId}-{label}` or `{prefix}-{label}` when `scopeId` is empty.\n   * Same as `createContainerRef(label, { scopeId, prefix })` from this instance’s naming config.\n   */\n  readonly containerRef: (label: string) => ContainerNameRef;\n  /**\n   * Build a spreadable `{ [ @key ]: nested }` so computed `@…` keys stay typed (see `atRuleBlock` export).\n   */\n  readonly atRuleBlock: typeof atRuleBlockFn;\n  /**\n   * Nested `&:has(…)` object keys (same helpers as the `has` export).\n   */\n  readonly has: typeof hasNested;\n  /**\n   * Nested `&:is(…)` object keys for grouped states (same as the `is` export).\n   */\n  readonly is: typeof isNested;\n  /**\n   * Nested `&:where(…)` keys — zero-specificity defaults (same as the `where` export).\n   */\n  readonly where: typeof whereNested;\n  class: (name: string, properties: CSSProperties) => string;\n  hashClass: (properties: CSSProperties, label?: string) => string;\n  component: {\n    <const V extends VariantDefinitions>(\n      namespace: string,\n      config: ComponentConfigInput<V>,\n    ): ComponentReturn<V>;\n    <const K extends string>(\n      namespace: string,\n      config: FlatComponentConfigInput<K>,\n    ): FlatComponentReturn<K>;\n    <const Slots extends readonly string[], V extends SlotVariantDefinitions<Slots[number]>>(\n      namespace: string,\n      config: SlotComponentConfigInput<Slots, V>,\n    ): SlotComponentFunction<Slots, V>;\n    <const Slots extends readonly string[]>(\n      namespace: string,\n      config: MultiSlotConfigInput<Slots>,\n    ): MultiSlotReturn<Slots>;\n  };\n  withUtils: <U extends StyleUtils>(utils: U) => StylesWithUtilsApi<U>;\n  compose: typeof compose;\n};\n\n/** Options argument for styles when `createStyles({ layers })` is used. */\nexport type LayerOption<L extends string = string> = { readonly layer: L };\n\nexport type CreateStylesInput = Partial<Omit<ClassNamingConfig, 'cascadeLayers'>> & {\n  layers?: CascadeLayersInput;\n  /**\n   * Only applies when using `createTokens` / `createTypeStyles` for `:root` and theme CSS.\n   * Ignored by `createStyles` alone (passing it here avoids repeating the key at the factory).\n   */\n  tokenLayer?: string;\n};\n\nexport type LayeredComponentFn<L extends string> = {\n  <const V extends VariantDefinitions>(\n    namespace: string,\n    config: ComponentConfigInput<V>,\n    options: LayerOption<L>,\n  ): ComponentReturn<V>;\n  <const K extends string>(\n    namespace: string,\n    config: FlatComponentConfigInput<K>,\n    options: LayerOption<L>,\n  ): FlatComponentReturn<K>;\n  <const Slots extends readonly string[], V extends SlotVariantDefinitions<Slots[number]>>(\n    namespace: string,\n    config: SlotComponentConfigInput<Slots, V>,\n    options: LayerOption<L>,\n  ): SlotComponentFunction<Slots, V>;\n  <const Slots extends readonly string[]>(\n    namespace: string,\n    config: MultiSlotConfigInput<Slots>,\n    options: LayerOption<L>,\n  ): MultiSlotReturn<Slots>;\n};\n\nexport type LayeredComponentFnWithUtils<L extends string> = {\n  <const V extends VariantDefinitions>(\n    namespace: string,\n    config: ComponentConfigInput<V>,\n    options: LayerOption<L>,\n  ): ComponentReturn<V>;\n  <const K extends string>(\n    namespace: string,\n    config: FlatComponentConfigInput<K>,\n    options: LayerOption<L>,\n  ): FlatComponentReturn<K>;\n  <const Slots extends readonly string[], V extends SlotVariantDefinitions<Slots[number]>>(\n    namespace: string,\n    config: SlotComponentConfigInput<Slots, V>,\n    options: LayerOption<L>,\n  ): SlotComponentFunction<Slots, V>;\n  <const Slots extends readonly string[]>(\n    namespace: string,\n    config: MultiSlotConfigInput<Slots>,\n    options: LayerOption<L>,\n  ): MultiSlotReturn<Slots>;\n};\n\nexport type StylesWithUtilsApiLayered<U extends StyleUtils, L extends string> = Omit<\n  StylesWithUtilsApi<U>,\n  'class' | 'hashClass' | 'component'\n> & {\n  class: (name: string, properties: CSSPropertiesWithUtils<U>, options: LayerOption<L>) => string;\n  hashClass: (\n    properties: CSSPropertiesWithUtils<U>,\n    options: LayerOption<L> & { label?: string },\n  ) => string;\n  component: LayeredComponentFnWithUtils<L>;\n  compose: typeof compose;\n};\n\nexport type StylesApiWithLayers<L extends string> = Omit<\n  StylesApi,\n  'class' | 'hashClass' | 'component' | 'withUtils'\n> & {\n  class: (name: string, properties: CSSProperties, options: LayerOption<L>) => string;\n  hashClass: (properties: CSSProperties, options: LayerOption<L> & { label?: string }) => string;\n  component: LayeredComponentFn<L>;\n  withUtils: <U extends StyleUtils>(utils: U) => StylesWithUtilsApiLayered<U, L>;\n};\n\n/**\n * Create a styles API with its own class naming config (scope, mode, prefix).\n * Use one instance per package or micro-frontend so hashed names stay isolated without global mutation.\n * Pass **`scopeId`** (or `fileScopeId(import.meta)` per module) so duplicate logical namespaces across\n * files do not collide; in development, registering the same name twice under one scope throws.\n *\n * Pass **`layers`** to enable CSS cascade layers: a tuple (or `{ order, prependFrameworkLayers? }`)\n * defines a single `@layer a, b, c;` preamble, and every `class` / `hashClass` / `component` call\n * must pass `{ layer: … }` with a name from that stack.\n */\nexport function createStyles<const L extends readonly string[]>(\n  options: Partial<Omit<ClassNamingConfig, 'cascadeLayers'>> & {\n    layers: L;\n    tokenLayer?: L[number];\n  },\n): StylesApiWithLayers<L[number]>;\n\nexport function createStyles(\n  options: Partial<Omit<ClassNamingConfig, 'cascadeLayers'>> & {\n    layers: CascadeLayersObjectInput;\n    tokenLayer?: string;\n  },\n): StylesApiWithLayers<string>;\n\nexport function createStyles(options?: CreateStylesInput): StylesApi;\n\nexport function createStyles(options?: CreateStylesInput): StylesApi | StylesApiWithLayers<string> {\n  const partial = options ?? {};\n  const { layers, tokenLayer: tokenLayerHint, ...namingPartial } = partial;\n\n  if (process.env.NODE_ENV !== 'production' && tokenLayerHint !== undefined && !layers) {\n    console.warn(\n      '[typestyles] `tokenLayer` on `createStyles` is ignored without `layers`. Use `createTokens` or `createTypeStyles` to emit token CSS into a layer.',\n    );\n  }\n\n  const cascadeLayers = layers ? resolveCascadeLayers(layers, namingPartial.scopeId) : undefined;\n  const classNaming = mergeClassNaming({ ...namingPartial, cascadeLayers });\n\n  return buildStylesRuntimeApi(classNaming) as StylesApi | StylesApiWithLayers<string>;\n}\n\nfunction buildStylesRuntimeApi(\n  classNaming: ClassNamingConfig,\n): StylesApi | StylesApiWithLayers<string> {\n  const layered = Boolean(classNaming.cascadeLayers);\n\n  const componentImpl = (\n    namespace: string,\n    config: Record<string, unknown> | ((ctx: ComponentConfigContext) => Record<string, unknown>),\n    options?: LayerOption<string>,\n  ) => createComponent(classNaming, namespace, config, options?.layer);\n\n  const containerRef = (label: string): ContainerNameRef =>\n    createContainerRef(label, {\n      scopeId: classNaming.scopeId,\n      prefix: classNaming.prefix,\n    });\n\n  if (layered) {\n    return {\n      classNaming,\n      container: containerQuery,\n      containerRef,\n      atRuleBlock: atRuleBlockFn,\n      has: hasNested,\n      is: isNested,\n      where: whereNested,\n      class: (name: string, properties: CSSProperties, options: LayerOption<string>) => {\n        const layer = options.layer;\n        return createClass(classNaming, name, properties, layer);\n      },\n      hashClass: (properties: CSSProperties, options: LayerOption<string> & { label?: string }) => {\n        const { layer, label } = options;\n        return createHashClass(classNaming, properties, label, layer);\n      },\n      component: componentImpl as unknown as LayeredComponentFn<string>,\n      withUtils: (utils) => createStylesWithUtilsLayered(utils, classNaming),\n      compose,\n      // `as` (not `satisfies`): checking `typeof container` overloads with conditional literal returns hits TS2589.\n    } as StylesApiWithLayers<string>;\n  }\n\n  return {\n    classNaming,\n    container: containerQuery,\n    containerRef,\n    atRuleBlock: atRuleBlockFn,\n    has: hasNested,\n    is: isNested,\n    where: whereNested,\n    class: (name: string, properties: CSSProperties) => createClass(classNaming, name, properties),\n    hashClass: (properties: CSSProperties, label?: string) =>\n      createHashClass(classNaming, properties, label),\n    component: ((namespace: string, config: unknown) =>\n      createComponent(\n        classNaming,\n        namespace,\n        config as\n          | Record<string, unknown>\n          | ((ctx: ComponentConfigContext) => Record<string, unknown>),\n      )) as StylesApi['component'],\n    withUtils: (utils) => createStylesWithUtils(utils, classNaming),\n    compose,\n    // `as` (not `satisfies`): checking `typeof container` overloads with conditional literal returns hits TS2589.\n  } as StylesApi;\n}\n\nexport type StylesWithUtilsApi<U extends StyleUtils> = {\n  readonly container: typeof containerQuery;\n  readonly containerRef: (label: string) => ContainerNameRef;\n  readonly atRuleBlock: typeof atRuleBlockFn;\n  readonly has: typeof hasNested;\n  readonly is: typeof isNested;\n  readonly where: typeof whereNested;\n  class: (name: string, properties: CSSPropertiesWithUtils<U>) => string;\n  hashClass: (properties: CSSPropertiesWithUtils<U>, label?: string) => string;\n  component: {\n    <const V extends VariantDefinitions>(\n      namespace: string,\n      config: ComponentConfigInput<V>,\n    ): ComponentReturn<V>;\n    <const K extends string>(\n      namespace: string,\n      config: FlatComponentConfigInput<K>,\n    ): FlatComponentReturn<K>;\n    <const Slots extends readonly string[], V extends SlotVariantDefinitions<Slots[number]>>(\n      namespace: string,\n      config: SlotComponentConfigInput<Slots, V>,\n    ): SlotComponentFunction<Slots, V>;\n    <const Slots extends readonly string[]>(\n      namespace: string,\n      config: MultiSlotConfigInput<Slots>,\n    ): MultiSlotReturn<Slots>;\n  };\n  compose: typeof compose;\n};\n\n/**\n * Create a utility-aware styles API, similar to Stitches' `utils`.\n *\n * @example\n * ```ts\n * const u = styles.withUtils({\n *   marginX: (value: string | number) => ({ marginLeft: value, marginRight: value }),\n *   size: (value: string | number) => ({ width: value, height: value }),\n * });\n *\n * const card = u.component('card', {\n *   base: { size: 40, marginX: 16 },\n * });\n * ```\n */\nexport function createStylesWithUtils<U extends StyleUtils>(\n  utils: U,\n  classNaming: ClassNamingConfig = defaultClassNamingConfig,\n): StylesWithUtilsApi<U> {\n  const containerRef = (label: string): ContainerNameRef =>\n    createContainerRef(label, {\n      scopeId: classNaming.scopeId,\n      prefix: classNaming.prefix,\n    });\n\n  const apply = (properties: CSSPropertiesWithUtils<U>): CSSProperties =>\n    expandStyleWithUtils(properties, utils);\n\n  const transformComponentConfigWithUtils = makeTransformComponentConfigWithUtils(apply);\n\n  function component(\n    namespace: string,\n    config: Record<string, unknown> | ((ctx: ComponentConfigContext) => Record<string, unknown>),\n  ): unknown {\n    if (typeof config === 'function') {\n      return createComponent(classNaming, namespace, (ctx) =>\n        transformComponentConfigWithUtils(config(ctx) as Record<string, unknown>),\n      );\n    }\n    return createComponent(\n      classNaming,\n      namespace,\n      transformComponentConfigWithUtils(config) as ComponentConfig<VariantDefinitions>,\n    );\n  }\n\n  return {\n    container: containerQuery,\n    containerRef,\n    atRuleBlock: atRuleBlockFn,\n    has: hasNested,\n    is: isNested,\n    where: whereNested,\n    class: (name, properties) => createClass(classNaming, name, apply(properties)),\n    hashClass: (properties, label) => createHashClass(classNaming, apply(properties), label),\n    component: component as StylesWithUtilsApi<U>['component'],\n    compose,\n  };\n}\n\nfunction createStylesWithUtilsLayered<U extends StyleUtils>(\n  utils: U,\n  classNaming: ClassNamingConfig,\n): StylesWithUtilsApiLayered<U, string> {\n  const containerRef = (label: string): ContainerNameRef =>\n    createContainerRef(label, {\n      scopeId: classNaming.scopeId,\n      prefix: classNaming.prefix,\n    });\n\n  const apply = (properties: CSSPropertiesWithUtils<U>): CSSProperties =>\n    expandStyleWithUtils(properties, utils);\n\n  const transformComponentConfigWithUtils = makeTransformComponentConfigWithUtils(apply);\n\n  function component(\n    namespace: string,\n    config: Record<string, unknown> | ((ctx: ComponentConfigContext) => Record<string, unknown>),\n    options?: LayerOption<string>,\n  ): unknown {\n    const layer = options?.layer;\n    if (typeof config === 'function') {\n      return createComponent(\n        classNaming,\n        namespace,\n        (ctx) => transformComponentConfigWithUtils(config(ctx) as Record<string, unknown>),\n        layer,\n      );\n    }\n    return createComponent(\n      classNaming,\n      namespace,\n      transformComponentConfigWithUtils(config) as ComponentConfig<VariantDefinitions>,\n      layer,\n    );\n  }\n\n  return {\n    container: containerQuery,\n    containerRef,\n    atRuleBlock: atRuleBlockFn,\n    has: hasNested,\n    is: isNested,\n    where: whereNested,\n    class: (name, properties, options) =>\n      createClass(classNaming, name, apply(properties), options.layer),\n    hashClass: (properties, options) =>\n      createHashClass(classNaming, apply(properties), options.label, options.layer),\n    component: component as unknown as LayeredComponentFnWithUtils<string>,\n    compose,\n  };\n}\n\nfunction makeTransformComponentConfigWithUtils<U extends StyleUtils>(\n  apply: (properties: CSSPropertiesWithUtils<U>) => CSSProperties,\n): (raw: Record<string, unknown>) => Record<string, unknown> {\n  return function transformComponentConfigWithUtils(\n    raw: Record<string, unknown>,\n  ): Record<string, unknown> {\n    const transformed: Record<string, unknown> = {};\n\n    for (const [key, value] of Object.entries(raw)) {\n      if (key === 'base' && value && typeof value === 'object') {\n        transformed[key] = apply(value as CSSPropertiesWithUtils<U>);\n      } else if (key === 'variants' && value && typeof value === 'object') {\n        const variants: Record<string, Record<string, CSSProperties>> = {};\n        for (const [dim, options] of Object.entries(value as Record<string, unknown>)) {\n          variants[dim] = {};\n          for (const [opt, props] of Object.entries(options as Record<string, unknown>)) {\n            variants[dim][opt] = apply(props as CSSPropertiesWithUtils<U>);\n          }\n        }\n        transformed[key] = variants;\n      } else if (key === 'compoundVariants' && Array.isArray(value)) {\n        transformed[key] = value.map(\n          (cv: { variants: Record<string, unknown>; style: CSSPropertiesWithUtils<U> }) => ({\n            ...cv,\n            style: apply(cv.style),\n          }),\n        );\n      } else if (\n        key !== 'defaultVariants' &&\n        key !== 'slots' &&\n        value &&\n        typeof value === 'object' &&\n        !Array.isArray(value)\n      ) {\n        transformed[key] = apply(value as CSSPropertiesWithUtils<U>);\n      } else {\n        transformed[key] = value;\n      }\n    }\n\n    return transformed;\n  };\n}\n\nfunction expandStyleWithUtils<U extends StyleUtils>(\n  properties: CSSPropertiesWithUtils<U>,\n  utils: U,\n): CSSProperties {\n  const expanded: CSSProperties = {};\n\n  for (const [key, value] of Object.entries(properties as Record<string, unknown>)) {\n    if (value == null) continue;\n\n    if (key.startsWith('&') || key.startsWith('[') || key.startsWith('@')) {\n      if (isObject(value)) {\n        assignStyleEntry(\n          expanded,\n          key,\n          expandStyleWithUtils(value as CSSPropertiesWithUtils<U>, utils),\n        );\n      }\n      continue;\n    }\n\n    if (Object.prototype.hasOwnProperty.call(utils, key)) {\n      const utilFn = utils[key as keyof U] as unknown as (arg: unknown) => CSSProperties;\n      const utilResult = utilFn(value);\n      const normalized = expandStyleWithUtils(utilResult as CSSPropertiesWithUtils<U>, utils);\n      for (const [utilKey, utilValue] of Object.entries(normalized as Record<string, unknown>)) {\n        assignStyleEntry(expanded, utilKey, utilValue);\n      }\n      continue;\n    }\n\n    assignStyleEntry(expanded, key, value);\n  }\n\n  return expanded;\n}\n\nfunction assignStyleEntry(target: CSSProperties, key: string, value: unknown): void {\n  const targetRecord = target as Record<string, unknown>;\n\n  if (isObject(value)) {\n    const existing = targetRecord[key];\n    if (isObject(existing)) {\n      targetRecord[key] = mergeStyleObjects(existing as CSSProperties, value as CSSProperties);\n      return;\n    }\n    targetRecord[key] = value;\n    return;\n  }\n\n  targetRecord[key] = value;\n}\n\nfunction mergeStyleObjects(base: CSSProperties, next: CSSProperties): CSSProperties {\n  const merged: CSSProperties = { ...base };\n\n  for (const [key, value] of Object.entries(next as Record<string, unknown>)) {\n    assignStyleEntry(merged, key, value);\n  }\n\n  return merged;\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n  return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import type * as CSS from 'csstype';\n\n/**\n * A CSS value that can be a standard value or a token reference (var() string).\n *\n * Values are emitted verbatim. TypeScript does **not** validate CSS syntax, so a typo in\n * `calc()`, `clamp()`, `min()`, `max()`, `url()`, etc. (for example a missing `)`) can produce\n * invalid CSS that breaks parsing for following rules. Use **`calc`** (tagged template) and\n * **`clamp`** from `typestyles` to keep function parentheses balanced, or small named helpers;\n * see the docs “TypeScript Tips” page.\n */\nexport type CSSValue = string | number;\n\n/**\n * CSS properties with support for nested selectors and at-rules.\n * Extends csstype's Properties with nesting capabilities.\n *\n * For `@…` keys, **`container()`** / **`styles.container()`** infer a **literal** `@container …` template so\n * `[container({ minWidth: 400 })]` mixes with longhands without casting. For **dynamic** `@…` strings, spread\n * **`atRuleBlock` / `styles.atRuleBlock`**. Same idea for **`has` / `is` / `where`**: variadic literals narrow\n * to `&:…` keys; if the key is only known as `string`, spread a one-key object or use `atRuleBlock`.\n */\nexport interface CSSProperties extends CSS.Properties<CSSValue> {\n  /** Nested selector (e.g., '&:hover', `has('.x')`, '& .child', '&::before', '&[data-variant]') */\n  [selector: `&${string}`]: CSSProperties;\n  /**\n   * Ancestor-prefixed selector where `&` is the styled element (e.g. `html[data-mode=\"dark\"] &`,\n   * `html:not([data-mode=\"light\"]) &`). Runtime serialization replaces every `&` with the class selector.\n   */\n  [selectorWithAncestor: `${string}&${string}`]: CSSProperties;\n  /** Attribute selector (e.g., '[data-variant]', '[data-variant=\"primary\"]', '[disabled]') */\n  [attribute: `[${string}]`]: CSSProperties;\n  /** At-rule (e.g., '@media (max-width: 768px)', '@container', '@supports') */\n  [atRule: `@${string}`]: CSSProperties;\n}\n\n/**\n * Utility function map used by styles.withUtils().\n * Each key becomes an extra style property that expands into CSSProperties.\n */\ntype BivariantCallback<Arg, Ret> = {\n  bivarianceHack(value: Arg): Ret;\n}['bivarianceHack'];\n\nexport type StyleUtils = Record<string, BivariantCallback<unknown, CSSProperties>>;\n\ntype UtilityValue<U extends StyleUtils, K extends keyof U> = U[K] extends (\n  value: infer V,\n) => CSSProperties\n  ? V\n  : never;\n\n/**\n * CSS properties augmented with user-defined utility keys.\n */\nexport type CSSPropertiesWithUtils<U extends StyleUtils> = CSS.Properties<CSSValue> & {\n  [K in keyof U]?: UtilityValue<U, K>;\n} & {\n  [selector: `&${string}`]: CSSPropertiesWithUtils<U>;\n  [selectorWithAncestor: `${string}&${string}`]: CSSPropertiesWithUtils<U>;\n  [attribute: `[${string}]`]: CSSPropertiesWithUtils<U>;\n  [atRule: `@${string}`]: CSSPropertiesWithUtils<U>;\n};\n\n/**\n * A map of style names to utility-aware CSS property definitions.\n */\nexport type StyleDefinitionsWithUtils<U extends StyleUtils> = Record<\n  string,\n  CSSPropertiesWithUtils<U>\n>;\n\n/**\n * A map of variant names to their CSS property definitions.\n */\nexport type StyleDefinitions = Record<string, CSSProperties>;\n\n/**\n * A token value can be a string/number or a nested object of token values.\n * Supports arbitrarily deep nesting for hierarchical token structures.\n */\nexport type TokenValues =\n  | string\n  | number\n  | {\n      [key: string]: TokenValues;\n    };\n\n/**\n * A flattened key-value pair for CSS custom property generation.\n */\nexport type FlatTokenEntry = [key: string, value: string];\n\n/**\n * Flattens a nested TokenValues object into an array of [key, value] pairs.\n * Deeply nested objects are flattened with keys joined by hyphens.\n *\n * @example\n * flattenTokens({ text: { primary: '#000' } })\n * // => [['text-primary', '#000']]\n */\nexport function flattenTokenEntries(obj: TokenValues, prefix = ''): FlatTokenEntry[] {\n  const entries: FlatTokenEntry[] = [];\n\n  if (obj === null || obj === undefined) {\n    return entries;\n  }\n\n  if (typeof obj === 'string' || typeof obj === 'number') {\n    if (prefix) {\n      entries.push([prefix, String(obj)]);\n    }\n    return entries;\n  }\n\n  for (const [key, value] of Object.entries(obj)) {\n    const newKey = prefix ? `${prefix}-${key}` : key;\n\n    if (typeof value === 'string' || typeof value === 'number') {\n      entries.push([newKey, String(value)]);\n    } else if (value !== null && typeof value === 'object') {\n      entries.push(...flattenTokenEntries(value as TokenValues, newKey));\n    }\n  }\n\n  return entries;\n}\n\n/**\n * A typed token reference object. Property access returns var(--namespace-key).\n * Supports nested access: token.text.primary => var(--namespace-text-primary)\n */\nexport type TokenRef<T extends TokenValues> = T extends string | number\n  ? string\n  : {\n      readonly [K in keyof T]: T[K] extends TokenValues ? TokenRef<T[K]> : string;\n    };\n\n/**\n * Nested token values where any object level may omit keys (for mode layers that\n * only tweak a subtree of `base`).\n */\nexport type DeepPartialTokenValues =\n  | string\n  | number\n  | {\n      [key: string]: DeepPartialTokenValues | undefined;\n    };\n\n/**\n * Theme overrides: namespaces map to full or deeply partial token trees.\n * Aligns with `tokens.create` namespaces; mode `overrides` often only set a subset of keys.\n */\nexport type ThemeOverrides = {\n  [namespace: string]: DeepPartialTokenValues | undefined;\n};\n\n/**\n * Keyframe stops: 'from', 'to', or percentage strings mapped to CSS properties.\n */\nexport type KeyframeStops = Record<string, CSSProperties>;\n\n// ---------------------------------------------------------------------------\n// Theme condition types (discriminated union)\n// ---------------------------------------------------------------------------\n\n/** Match a media query (e.g. `(prefers-color-scheme: dark)`). */\nexport type ThemeConditionMedia = {\n  readonly type: 'media';\n  readonly query: string;\n};\n\n/** Match an attribute on the themed element (`self`) or an ancestor (`ancestor`). */\nexport type ThemeConditionAttr = {\n  readonly type: 'attr';\n  readonly name: string;\n  readonly value: string;\n  readonly scope: 'self' | 'ancestor';\n};\n\n/** Match a class on the themed element (`self`) or an ancestor (`ancestor`). */\nexport type ThemeConditionClass = {\n  readonly type: 'class';\n  readonly name: string;\n  readonly scope: 'self' | 'ancestor';\n};\n\n/** Raw selector escape hatch — the selector is used as an ancestor context for the theme class. */\nexport type ThemeConditionSelector = {\n  readonly type: 'selector';\n  readonly selector: string;\n};\n\n/** All child conditions must hold. */\nexport type ThemeConditionAnd = {\n  readonly type: 'and';\n  readonly conditions: readonly ThemeCondition[];\n};\n\n/** Any child condition must hold (emits separate rules per branch). */\nexport type ThemeConditionOr = {\n  readonly type: 'or';\n  readonly conditions: readonly ThemeCondition[];\n};\n\n/** Negate a single-branch condition (see `tokens.when.not` JSDoc for limits). */\nexport type ThemeConditionNot = {\n  readonly type: 'not';\n  readonly condition: ThemeCondition;\n};\n\n/**\n * A condition that determines **when** a set of token overrides applies.\n * Conditions compile to media queries, selector prefixes/suffixes, or combinations.\n */\nexport type ThemeCondition =\n  | ThemeConditionMedia\n  | ThemeConditionAttr\n  | ThemeConditionClass\n  | ThemeConditionSelector\n  | ThemeConditionAnd\n  | ThemeConditionOr\n  | ThemeConditionNot;\n\n// ---------------------------------------------------------------------------\n// Theme mode / config / surface\n// ---------------------------------------------------------------------------\n\n/**\n * A single mode layer within a theme surface.\n * Applies `overrides` when `when` is satisfied.\n */\nexport type ThemeModeDefinition = {\n  readonly id: string;\n  readonly overrides: ThemeOverrides;\n  readonly when: ThemeCondition;\n};\n\n/**\n * Configuration for `tokens.createTheme()`.\n * Provide `modes` (manual) **or** `colorMode` (preset), not both.\n */\nexport type ThemeConfig = {\n  /** Base token overrides — emitted as `.theme-{name} { … }`. */\n  base?: ThemeOverrides;\n  /** Manual mode layers with explicit conditions. Mutually exclusive with `colorMode`. */\n  modes?: ThemeModeDefinition[];\n  /** Preset mode layers from `tokens.colorMode.*`. Mutually exclusive with `modes`. */\n  colorMode?: ThemeModeDefinition[];\n};\n\n/**\n * The object returned by `tokens.createTheme()`.\n *\n * - `surface.className` — the generated class name (e.g. `\"theme-acme\"`)\n * - `surface.name` — the theme name (e.g. `\"acme\"`)\n * - `String(surface)` / template interpolation — coerces to `className`\n */\nexport interface ThemeSurface {\n  readonly className: string;\n  readonly name: string;\n  toString(): string;\n  [Symbol.toPrimitive](hint: string): string;\n}\n\n// ---------------------------------------------------------------------------\n// Component API types\n// ---------------------------------------------------------------------------\n\n/**\n * Styles for a single variant option (or slot variant block).\n * Union with a permissive record so **`[v.name]: value`** from {@link ComponentInternalVarRef}\n * (custom properties) infers as `{ [key: string]: … }` and still matches — that shape is not\n * assignable to {@link CSSProperties} alone, which would otherwise reject the dimensioned overload\n * and fall through to unrelated `component` overloads. **`Record<string, unknown>`** also covers\n * objects that mix custom-property keys with nested selector blocks like `'&:hover'`.\n */\nexport type VariantOptionStyle = CSSProperties | Record<string, unknown>;\n\n/**\n * A map of variant dimensions to their options (each option is {@link VariantOptionStyle}).\n */\nexport type VariantDefinitions = Record<string, Record<string, VariantOptionStyle>>;\nexport type SlotStyles<S extends string> = Partial<Record<S, VariantOptionStyle>>;\nexport type SlotVariantDefinitions<S extends string> = Record<\n  string,\n  Record<string, SlotStyles<S>>\n>;\n\ntype VariantDimensions = Record<string, Record<string, unknown>>;\ntype VariantOptionKey<V extends VariantDimensions, K extends keyof V> = Extract<keyof V[K], string>;\n\ntype VariantSelectionValue<OptionKey extends string> =\n  | OptionKey\n  | (Extract<OptionKey, 'true'> extends never ? never : true)\n  | (Extract<OptionKey, 'false'> extends never ? never : false);\n\ntype CompoundSelectionValue<OptionKey extends string> =\n  | VariantSelectionValue<OptionKey>\n  | readonly VariantSelectionValue<OptionKey>[];\n\nexport type ComponentSelections<V extends VariantDimensions> = {\n  [K in keyof V]?: VariantSelectionValue<VariantOptionKey<V, K>> | null | undefined;\n};\n\n/**\n * A CSS custom property reference as a `var(--…)` value (tokens, `createVar()`, component internal vars).\n */\nexport type CSSVarRef = `var(--${string})`;\n\n// ---------------------------------------------------------------------------\n// Dimensioned variant config (has `variants: { ... }`)\n// ---------------------------------------------------------------------------\n\n/**\n * Leaf shape for `ctx.vars({ … })` — mirrors typed tokens: `value` is the default (merged into `base`);\n * optional `syntax` / `inherits` register `@property` like typed design tokens.\n */\nexport type ComponentVarDescriptor = {\n  value: string | number;\n  syntax?: string;\n  inherits?: boolean;\n};\n\n/**\n * Nested map of component internal vars (same nesting as `tokens.create` / theme token trees).\n */\nexport type ComponentVarNode =\n  | string\n  | number\n  | ComponentVarDescriptor\n  | { [key: string]: ComponentVarNode };\n\nexport type ComponentVarDefinitions = {\n  [key: string]: ComponentVarNode;\n};\n\n/**\n * Options for `ctx.var(id, options?)`. Set `value` to merge a default into `base` and as `@property` initial-value when `syntax` is set.\n */\nexport type ComponentVarOptions = {\n  value?: string | number;\n  syntax?: string;\n  inherits?: boolean;\n};\n\n/**\n * Reference to a component-scoped custom property: `.name` for declaration keys and transitions, `.var` for values.\n */\nexport type ComponentInternalVarRef = {\n  readonly name: string;\n  readonly var: CSSVarRef;\n};\n\n/**\n * Context passed to `styles.component(namespace, (ctx) => { ... })` to declare internal custom properties.\n */\n/** Proxy tree returned by `ctx.vars({ … })` — leaves are `{ name, var }`, nested objects are sub-trees. */\nexport type ComponentVarRefTree<T> = {\n  [K in keyof T]: T[K] extends ComponentVarDescriptor | string | number\n    ? ComponentInternalVarRef\n    : ComponentVarRefTree<T[K]>;\n};\n\nexport type ComponentConfigContext = {\n  var: (id: string, options?: ComponentVarOptions) => ComponentInternalVarRef;\n  vars: <const T extends ComponentVarDefinitions>(definitions: T) => ComponentVarRefTree<T>;\n};\n\n/**\n * The full config object passed to styles.component() with dimensioned variants.\n */\nexport type ComponentConfig<V extends VariantDefinitions> = {\n  base?: CSSProperties;\n  variants?: V;\n  compoundVariants?: Array<{\n    variants: { [K in keyof V]?: CompoundSelectionValue<VariantOptionKey<V, K>> };\n    style: VariantOptionStyle;\n  }>;\n  defaultVariants?: ComponentSelections<V>;\n};\n\n// ---------------------------------------------------------------------------\n// Flat variant config (no `variants` key — each key besides `base` is a variant)\n// ---------------------------------------------------------------------------\n\n/**\n * Config for flat variants: `{ base: {...}, elevated: {...}, compact: {...} }`.\n * Each key besides `base` is a boolean-style variant.\n *\n * **`variants`**, **`defaultVariants`**, **`compoundVariants`**, and **`slots`** are forbidden\n * on this shape so TypeScript does not pick the flat overload for CVA-style or slot configs.\n * Nested variant maps can otherwise satisfy {@link CSSProperties} too loosely (index signatures),\n * which produced wrong callable types for `styles.component(ns, (ctx) => ({ variants: … }), { layer })`\n * when cascade layers are enabled.\n */\nexport type FlatComponentConfig<K extends string> = {\n  base?: CSSProperties;\n  variants?: never;\n  defaultVariants?: never;\n  compoundVariants?: never;\n  slots?: never;\n} & Record<K, CSSProperties>;\n\n/**\n * Selection object for flat variants: `{ elevated: true, compact: true }`.\n */\nexport type FlatComponentSelections<K extends string> = {\n  [P in K]?: boolean | null | undefined;\n};\n\n// ---------------------------------------------------------------------------\n// CVA-style return: callable AND destructurable\n// ---------------------------------------------------------------------------\n\n/**\n * All possible variant class string keys that can be destructured from a\n * dimensioned component. Includes 'base' plus all `{dimension}-{option}` keys\n * flattened from the variants config.\n */\ntype DimensionedVariantKeys<V extends VariantDefinitions> = {\n  [D in keyof V]: keyof V[D] extends string ? `${D & string}-${keyof V[D] & string}` : never;\n}[keyof V];\n\n/**\n * The CVA-style return for dimensioned variants.\n * Callable as a function, destructurable as an object.\n */\nexport type ComponentReturn<V extends VariantDefinitions> = {\n  /** Call with variant selections to get composed class string (base always included). */\n  (selections?: ComponentSelections<V>): string;\n} & {\n  /** The base class string. */\n  readonly base: string;\n} & {\n  /** Individual variant class strings, keyed as `{dimension}-{option}`. */\n  readonly [K in DimensionedVariantKeys<V>]: string;\n};\n\n/**\n * The CVA-style return for flat variants.\n * Callable as a function, destructurable as an object.\n */\nexport type FlatComponentReturn<K extends string> = {\n  /** Call with variant selections to get composed class string (base always included). */\n  (selections?: FlatComponentSelections<Exclude<K, 'base'>>): string;\n} & {\n  /** The base class string. */\n  readonly base: string;\n} & {\n  /** Individual variant class strings. */\n  readonly [P in Exclude<K, 'base'>]: string;\n};\n\n// ---------------------------------------------------------------------------\n// Multi-slot components (no variants, just multiple independent slot styles)\n// ---------------------------------------------------------------------------\n\nexport type MultiSlotConfig<Slots extends readonly string[]> = {\n  slots: Slots;\n} & Partial<Record<Slots[number], CSSProperties>>;\n\nexport type MultiSlotReturn<Slots extends readonly string[]> = {\n  (): Record<Slots[number], string>;\n} & {\n  readonly [K in Slots[number]]: string;\n};\n\n// ---------------------------------------------------------------------------\n// Slot component types\n// ---------------------------------------------------------------------------\n\nexport type SlotComponentConfig<\n  Slots extends readonly string[],\n  V extends SlotVariantDefinitions<Slots[number]>,\n> = {\n  slots: Slots;\n  base?: SlotStyles<Slots[number]>;\n  variants?: V;\n  compoundVariants?: Array<{\n    variants: { [K in keyof V]?: CompoundSelectionValue<VariantOptionKey<V, K>> };\n    style: SlotStyles<Slots[number]>;\n  }>;\n  defaultVariants?: ComponentSelections<V>;\n};\n\nexport type SlotComponentFunction<\n  Slots extends readonly string[],\n  V extends SlotVariantDefinitions<Slots[number]>,\n> = (selections?: ComponentSelections<V>) => Record<Slots[number], string>;\n\n/**\n * Config for `styles.component` may be a plain object or a function that receives {@link ComponentConfigContext}.\n */\nexport type ComponentConfigInput<V extends VariantDefinitions> =\n  | ComponentConfig<V>\n  | ((ctx: ComponentConfigContext) => ComponentConfig<V>);\n\nexport type FlatComponentConfigInput<K extends string> =\n  | FlatComponentConfig<K>\n  | ((ctx: ComponentConfigContext) => FlatComponentConfig<K>);\n\nexport type SlotComponentConfigInput<\n  Slots extends readonly string[],\n  V extends SlotVariantDefinitions<Slots[number]>,\n> =\n  | SlotComponentConfig<Slots, V>\n  | ((ctx: ComponentConfigContext) => SlotComponentConfig<Slots, V>);\n\nexport type MultiSlotConfigInput<Slots extends readonly string[]> =\n  | MultiSlotConfig<Slots>\n  | ((ctx: ComponentConfigContext) => MultiSlotConfig<Slots>);\n\n/**\n * Extract the variant prop types from a ComponentReturn or ComponentFunction.\n *\n * @example\n * ```ts\n * const button = styles.component('button', {\n *   variants: {\n *     intent: { primary: {...}, ghost: {...} },\n *     size:   { sm: {...}, lg: {...} },\n *   },\n * });\n *\n * type ButtonProps = ComponentVariants<typeof button>;\n * // { intent?: 'primary' | 'ghost'; size?: 'sm' | 'lg' }\n * ```\n */\nexport type ComponentVariants<T> = T extends (selections?: ComponentSelections<infer V>) => unknown\n  ? { [K in keyof V]?: keyof V[K] }\n  : never;\n\n/**\n * `src` value for {@link FontFaceProps}: a single CSS `src` fragment or multiple\n * fragments joined with commas (same as authoring `url(...), local(...)` by hand).\n */\nexport type FontFaceSrc = string | readonly string[];\n\n/**\n * Font face property declarations.\n *\n * Maps to standard `@font-face` descriptors. Values are emitted verbatim in CSS.\n */\nexport type FontFaceProps = {\n  src: FontFaceSrc;\n  fontWeight?: string | number;\n  fontStyle?: 'normal' | 'italic' | 'oblique' | string;\n  fontDisplay?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n  fontStretch?: string;\n  unicodeRange?: string;\n  /** `size-adjust` — fallback tuning and font-size-adjust related metrics. */\n  sizeAdjust?: string;\n  /** `ascent-override` */\n  ascentOverride?: string;\n  /** `descent-override` */\n  descentOverride?: string;\n  /** `line-gap-override` */\n  lineGapOverride?: string;\n};\n","import type {\n  ThemeCondition,\n  ThemeConditionMedia,\n  ThemeConditionAttr,\n  ThemeConditionClass,\n  ThemeConditionSelector,\n  ThemeConditionAnd,\n  ThemeConditionOr,\n  ThemeConditionNot,\n  ThemeConfig,\n  ThemeModeDefinition,\n  ThemeOverrides,\n  ThemeSurface,\n  TokenValues,\n} from './types';\nimport { flattenTokenEntries } from './types';\nimport { sanitizeClassSegment, scopedTokenNamespace } from './class-naming';\nimport { insertRule, insertRules } from './sheet';\nimport type { ResolvedCascadeLayers } from './layers';\nimport { applyLayerToRules } from './layers';\n\n/** When present, theme rules are wrapped in `@layer` alongside token `:root` CSS. */\nexport type ThemeEmitLayerContext = {\n  readonly stack: ResolvedCascadeLayers;\n  readonly layer: string;\n};\n\n// ---------------------------------------------------------------------------\n// Condition builders — tokens.when.*\n// ---------------------------------------------------------------------------\n\nfunction condMedia(query: string): ThemeConditionMedia {\n  return { type: 'media', query };\n}\n\nfunction condAttr(\n  name: string,\n  value: string,\n  opts: { scope: 'self' | 'ancestor' },\n): ThemeConditionAttr {\n  return { type: 'attr', name, value, scope: opts.scope };\n}\n\nfunction condClassName(name: string, opts: { scope: 'self' | 'ancestor' }): ThemeConditionClass {\n  return { type: 'class', name, scope: opts.scope };\n}\n\nfunction condSelector(selector: string): ThemeConditionSelector {\n  if (process.env.NODE_ENV !== 'production') {\n    validateSelector(selector);\n  }\n  return { type: 'selector', selector };\n}\n\nfunction condAnd(...conditions: ThemeCondition[]): ThemeConditionAnd {\n  return { type: 'and', conditions };\n}\n\nfunction condOr(...conditions: ThemeCondition[]): ThemeConditionOr {\n  return { type: 'or', conditions };\n}\n\n/**\n * Negate a condition. Double negation is folded (`not(not(x))` → `x`).\n *\n * Supported inner shapes (single CSS branch after compile):\n * - `when.media` / `when.prefersDark` / `when.prefersLight` → `@media not (…)`\n * - `when.attr` / `when.className` with `scope: 'self'` → `:not(…)` on the theme class\n * - `when.attr` / `when.className` with `scope: 'ancestor'` → `:root:not(…) .theme-*` (intended when state lives on `html` / `:root`)\n *\n * Not supported: `when.selector`, `when.or`, combined `@media` + selector, or both ancestor and self selector parts on the same branch. Those log a dev warning and emit no rule.\n */\nfunction condNot(condition: ThemeCondition): ThemeCondition {\n  if (condition.type === 'not') {\n    return condition.condition;\n  }\n  return { type: 'not', condition };\n}\n\n/**\n * Condition builders for theme mode layers.\n *\n * @example\n * ```ts\n * tokens.when.prefersDark\n * tokens.when.media('(prefers-color-scheme: dark)')\n * tokens.when.attr('data-color-mode', 'dark', { scope: 'ancestor' })\n * tokens.when.or(tokens.when.prefersDark, tokens.when.attr('data-mode', 'dark', { scope: 'self' }))\n * ```\n */\nexport const when = {\n  media: condMedia,\n  attr: condAttr,\n  className: condClassName,\n  selector: condSelector,\n  and: condAnd,\n  or: condOr,\n  not: condNot,\n  /** Shorthand for `when.media('(prefers-color-scheme: dark)')`. */\n  prefersDark: { type: 'media', query: '(prefers-color-scheme: dark)' } as ThemeConditionMedia,\n  /** Shorthand for `when.media('(prefers-color-scheme: light)')`. */\n  prefersLight: { type: 'media', query: '(prefers-color-scheme: light)' } as ThemeConditionMedia,\n} as const;\n\n// ---------------------------------------------------------------------------\n// Dev-only selector validation (lightweight heuristics)\n// ---------------------------------------------------------------------------\n\nfunction validateSelector(selector: string): void {\n  if (!selector || !selector.trim()) {\n    console.warn(\n      '[typestyles] when.selector() received an empty string. This will produce an invalid CSS rule.',\n    );\n    return;\n  }\n\n  if (selector.includes('!important')) {\n    console.warn(\n      '[typestyles] when.selector() contains \"!important\" — this belongs in declarations, not selectors.',\n    );\n  }\n\n  // Check for unmatched brackets/parens\n  let parens = 0;\n  let brackets = 0;\n  for (const ch of selector) {\n    if (ch === '(') parens++;\n    else if (ch === ')') parens--;\n    else if (ch === '[') brackets++;\n    else if (ch === ']') brackets--;\n    if (parens < 0 || brackets < 0) break;\n  }\n  if (parens !== 0 || brackets !== 0) {\n    console.warn(\n      `[typestyles] when.selector() has unmatched brackets or parentheses: \"${selector}\"`,\n    );\n  }\n}\n\n// ---------------------------------------------------------------------------\n// Condition compilation — turns ThemeCondition into CSS wrappers\n// ---------------------------------------------------------------------------\n\ntype CompiledCondition = {\n  media?: string;\n  selectorPrefix?: string;\n  selectorSuffix?: string;\n};\n\n/** Strip paired `not` wrappers; `negated` is true when an odd number of `not`s remain. */\nfunction peelNot(condition: ThemeConditionNot): { negated: boolean; inner: ThemeCondition } {\n  let negated = true;\n  let c: ThemeCondition = condition.condition;\n  while (c.type === 'not') {\n    negated = !negated;\n    c = c.condition;\n  }\n  return { negated, inner: c };\n}\n\nfunction compileCondition(condition: ThemeCondition): CompiledCondition[] {\n  switch (condition.type) {\n    case 'media':\n      return [{ media: condition.query }];\n\n    case 'attr':\n      if (condition.scope === 'self') {\n        return [{ selectorSuffix: `[${condition.name}=\"${condition.value}\"]` }];\n      }\n      return [{ selectorPrefix: `[${condition.name}=\"${condition.value}\"]` }];\n\n    case 'class':\n      if (condition.scope === 'self') {\n        return [{ selectorSuffix: `.${condition.name}` }];\n      }\n      return [{ selectorPrefix: `.${condition.name}` }];\n\n    case 'selector':\n      return [{ selectorPrefix: condition.selector }];\n\n    case 'and': {\n      let result: CompiledCondition[] = [{}];\n      for (const child of condition.conditions) {\n        const childCompiled = compileCondition(child);\n        const merged: CompiledCondition[] = [];\n        for (const existing of result) {\n          for (const cc of childCompiled) {\n            merged.push(mergeCompiled(existing, cc));\n          }\n        }\n        result = merged;\n      }\n      return result;\n    }\n\n    case 'or':\n      return condition.conditions.flatMap((c) => compileCondition(c));\n\n    case 'not': {\n      const { negated: shouldNegate, inner } = peelNot(condition);\n      if (!shouldNegate) {\n        return compileCondition(inner);\n      }\n\n      if (inner.type === 'selector') {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\n            '[typestyles] when.not(when.selector(...)) is not supported — arbitrary selector text is not safe to wrap in :not(). Use when.attr, when.className, or when.media instead.',\n          );\n        }\n        return [];\n      }\n\n      const innerBranches = compileCondition(inner);\n      if (innerBranches.length !== 1) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\n            '[typestyles] when.not() requires the inner condition to compile to a single rule branch. ' +\n              'Do not wrap when.or(), and avoid inner shapes that expand to multiple branches.',\n          );\n        }\n        return [];\n      }\n\n      const negated = negateCompiled(innerBranches[0]);\n      if (negated === null) {\n        return [];\n      }\n      return [negated];\n    }\n  }\n}\n\nfunction negateCompiled(c: CompiledCondition): CompiledCondition | null {\n  const { media, selectorPrefix, selectorSuffix } = c;\n  const hasMedia = Boolean(media);\n  const hasPre = Boolean(selectorPrefix);\n  const hasSuf = Boolean(selectorSuffix);\n\n  if (hasMedia && (hasPre || hasSuf)) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.warn(\n        '[typestyles] when.not() does not support negating combined @media + selector conditions. ' +\n          'Split into separate modes or use only media, only ancestor selector, or only self selector.',\n      );\n    }\n    return null;\n  }\n\n  if (hasPre && hasSuf) {\n    if (process.env.NODE_ENV !== 'production') {\n      console.warn(\n        '[typestyles] when.not() does not support negating combined ancestor + self selector parts on one branch.',\n      );\n    }\n    return null;\n  }\n\n  if (hasMedia && media) {\n    return { media: `not ${media}` };\n  }\n\n  if (hasPre && selectorPrefix) {\n    const p = selectorPrefix.trim();\n    return { selectorPrefix: `:root:not(${p})` };\n  }\n\n  if (hasSuf && selectorSuffix) {\n    const s = selectorSuffix.trim();\n    if (s.startsWith('[') || s.startsWith('.')) {\n      return { selectorSuffix: `:not(${s})` };\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      console.warn(`[typestyles] when.not(): unexpected selector suffix shape: \"${s}\"`);\n    }\n    return null;\n  }\n\n  return {};\n}\n\nfunction mergeCompiled(a: CompiledCondition, b: CompiledCondition): CompiledCondition {\n  return {\n    media: a.media && b.media ? `${a.media} and ${b.media}` : a.media || b.media || undefined,\n    selectorPrefix:\n      a.selectorPrefix && b.selectorPrefix\n        ? `${a.selectorPrefix} ${b.selectorPrefix}`\n        : a.selectorPrefix || b.selectorPrefix || undefined,\n    selectorSuffix:\n      a.selectorSuffix && b.selectorSuffix\n        ? `${a.selectorSuffix}${b.selectorSuffix}`\n        : a.selectorSuffix || b.selectorSuffix || undefined,\n  };\n}\n\n// ---------------------------------------------------------------------------\n// CSS declaration building\n// ---------------------------------------------------------------------------\n\nfunction buildDeclarations(scopeId: string | undefined, overrides: ThemeOverrides): string {\n  const parts: string[] = [];\n  for (const [namespace, values] of Object.entries(overrides)) {\n    if (values === null || values === undefined) continue;\n    const cssNs = scopedTokenNamespace(scopeId, namespace);\n    for (const [key, value] of flattenTokenEntries(values as TokenValues)) {\n      parts.push(`--${cssNs}-${key}: ${value}`);\n    }\n  }\n  return parts.join('; ');\n}\n\nfunction themeSegment(scopeId: string | undefined, name: string): string {\n  const n = sanitizeClassSegment(name);\n  if (!scopeId) return n;\n  return `${sanitizeClassSegment(scopeId)}-${n}`;\n}\n\nfunction buildSelector(themeClass: string, compiled: CompiledCondition): string {\n  const prefix = compiled.selectorPrefix ? `${compiled.selectorPrefix} ` : '';\n  const suffix = compiled.selectorSuffix ?? '';\n  return `${prefix}.${themeClass}${suffix}`;\n}\n\nfunction buildRule(selector: string, declarations: string, media?: string): string {\n  if (media) {\n    return `@media ${media} { ${selector} { ${declarations}; } }`;\n  }\n  return `${selector} { ${declarations}; }`;\n}\n\n// ---------------------------------------------------------------------------\n// Color mode presets — tokens.colorMode.*\n// ---------------------------------------------------------------------------\n\ntype ColorModeMediaOnlyOptions = {\n  dark: ThemeOverrides;\n};\n\ntype ColorModeAttributeOnlyOptions = {\n  attribute: string;\n  values: { dark: string; light?: string };\n  scope: 'self' | 'ancestor';\n  dark: ThemeOverrides;\n  light?: ThemeOverrides;\n};\n\ntype ColorModeMediaOrAttributeOptions = {\n  attribute: string;\n  values: { dark: string; light?: string; system?: string };\n  scope: 'self' | 'ancestor';\n  dark: ThemeOverrides;\n};\n\ntype ColorModeSystemWithOverrideOptions = {\n  attribute: string;\n  values: { light: string; dark: string; system?: string };\n  scope: 'self' | 'ancestor';\n  light: ThemeOverrides;\n  dark: ThemeOverrides;\n};\n\nfunction presetMediaOnly(opts: ColorModeMediaOnlyOptions): ThemeModeDefinition[] {\n  return [\n    {\n      id: 'dark',\n      overrides: opts.dark,\n      when: when.prefersDark,\n    },\n  ];\n}\n\nfunction presetAttributeOnly(opts: ColorModeAttributeOnlyOptions): ThemeModeDefinition[] {\n  const modes: ThemeModeDefinition[] = [\n    {\n      id: 'dark',\n      overrides: opts.dark,\n      when: when.attr(opts.attribute, opts.values.dark, { scope: opts.scope }),\n    },\n  ];\n\n  if (opts.light && opts.values.light) {\n    modes.push({\n      id: 'light',\n      overrides: opts.light,\n      when: when.attr(opts.attribute, opts.values.light, { scope: opts.scope }),\n    });\n  }\n\n  return modes;\n}\n\n/**\n * Dark when the OS prefers dark **or** the attribute matches `values.dark`.\n *\n * **`values.system`** — Optional app-facing token only. No extra CSS rule is emitted for it:\n * with `data-*` set to `system`, neither branch of the `or` matches from the attribute side;\n * appearance follows the media branch (and your `base` tokens) like OS “system” mode.\n */\nfunction presetMediaOrAttribute(opts: ColorModeMediaOrAttributeOptions): ThemeModeDefinition[] {\n  return [\n    {\n      id: 'dark',\n      overrides: opts.dark,\n      when: when.or(\n        when.prefersDark,\n        when.attr(opts.attribute, opts.values.dark, { scope: opts.scope }),\n      ),\n    },\n  ];\n}\n\nfunction presetSystemWithLightDarkOverride(\n  opts: ColorModeSystemWithOverrideOptions,\n): ThemeModeDefinition[] {\n  // Four-rule pattern:\n  // 1. (base is handled by createTheme, not here)\n  // 2. Dark under @media (prefers-color-scheme: dark)\n  // 3. Dark under attribute=dark (forced dark)\n  // 4. Light under @media dark + attribute=light (forced light overriding system dark)\n  return [\n    {\n      id: 'dark-media',\n      overrides: opts.dark,\n      when: when.prefersDark,\n    },\n    {\n      id: 'dark-attr',\n      overrides: opts.dark,\n      when: when.attr(opts.attribute, opts.values.dark, { scope: opts.scope }),\n    },\n    {\n      id: 'light-override',\n      overrides: opts.light,\n      when: when.and(\n        when.prefersDark,\n        when.attr(opts.attribute, opts.values.light, { scope: opts.scope }),\n      ),\n    },\n  ];\n}\n\n/**\n * Color mode presets that expand into `ThemeModeDefinition[]` arrays.\n * Use via the `colorMode` property on `tokens.createTheme()`.\n *\n * @example\n * ```ts\n * tokens.createTheme('acme', {\n *   base: lightTokens,\n *   colorMode: tokens.colorMode.systemWithLightDarkOverride({\n *     attribute: 'data-color-mode',\n *     values: { light: 'light', dark: 'dark' },\n *     scope: 'ancestor',\n *     light: lightTokens,\n *     dark: darkTokens,\n *   }),\n * });\n * ```\n */\nexport const colorMode = {\n  mediaOnly: presetMediaOnly,\n  attributeOnly: presetAttributeOnly,\n  mediaOrAttribute: presetMediaOrAttribute,\n  systemWithLightDarkOverride: presetSystemWithLightDarkOverride,\n} as const;\n\n// ---------------------------------------------------------------------------\n// ThemeSurface factory\n// ---------------------------------------------------------------------------\n\nfunction createThemeSurface(name: string, className: string): ThemeSurface {\n  return {\n    className,\n    name,\n    toString() {\n      return className;\n    },\n    [Symbol.toPrimitive]() {\n      return className;\n    },\n  };\n}\n\n// ---------------------------------------------------------------------------\n// createTheme\n// ---------------------------------------------------------------------------\n\n/**\n * Create a themed surface with base token overrides and optional mode layers.\n *\n * Returns a `ThemeSurface` object whose `className` (and string coercion)\n * is a stable, human-readable class name like `\"theme-acme\"`.\n *\n * @example\n * ```ts\n * const acme = tokens.createTheme('acme', {\n *   base: { color: { text: { primary: '#111827' } } },\n *   colorMode: tokens.colorMode.mediaOnly({ dark: darkOverrides }),\n * });\n *\n * // acme.className === 'theme-acme'\n * // `${acme}` === 'theme-acme'\n * ```\n */\nexport function createTheme(\n  name: string,\n  config: ThemeConfig,\n  scopeId?: string,\n  layerContext?: ThemeEmitLayerContext,\n): ThemeSurface {\n  if (process.env.NODE_ENV !== 'production') {\n    if (config.modes && config.colorMode) {\n      throw new Error(\n        `[typestyles] createTheme('${name}'): provide either \"modes\" or \"colorMode\", not both. ` +\n          `Use \"modes\" for manual conditions or \"colorMode\" for presets like tokens.colorMode.mediaOnly().`,\n      );\n    }\n  }\n\n  const segment = themeSegment(scopeId, name);\n  const className = `theme-${segment}`;\n\n  const emitRule = (key: string, css: string): void => {\n    if (layerContext) {\n      insertRules(applyLayerToRules([{ key, css }], layerContext.layer, layerContext.stack));\n    } else {\n      insertRule(key, css);\n    }\n  };\n\n  // 1. Base rule\n  const baseDecls = config.base ? buildDeclarations(scopeId, config.base) : '';\n  if (baseDecls) {\n    emitRule(`theme:${segment}:base`, `.${className} { ${baseDecls}; }`);\n  } else {\n    // Emit an empty base rule so the class always exists in the sheet\n    emitRule(`theme:${segment}:base`, `.${className} { }`);\n  }\n\n  // 2. Mode layers\n  const modes = config.modes ?? config.colorMode ?? [];\n  const rules: Array<{ key: string; css: string }> = [];\n\n  for (const mode of modes) {\n    const decls = buildDeclarations(scopeId, mode.overrides);\n    if (!decls) {\n      if (process.env.NODE_ENV !== 'production') {\n        console.warn(\n          `[typestyles] createTheme('${name}'): mode \"${mode.id}\" has empty overrides — no CSS was emitted for this mode. Remove the mode or add token overrides.`,\n        );\n      }\n      continue;\n    }\n\n    const compiledBranches = compileCondition(mode.when);\n\n    for (let i = 0; i < compiledBranches.length; i++) {\n      const branch = compiledBranches[i];\n      const selector = buildSelector(className, branch);\n      const key = `theme:${segment}:mode:${mode.id}:branch:${i}`;\n      rules.push({ key, css: buildRule(selector, decls, branch.media) });\n    }\n  }\n\n  if (rules.length > 0) {\n    if (layerContext) {\n      insertRules(applyLayerToRules(rules, layerContext.layer, layerContext.stack));\n    } else {\n      insertRules(rules);\n    }\n  }\n\n  return createThemeSurface(name, className);\n}\n\n// ---------------------------------------------------------------------------\n// createDarkMode shorthand\n// ---------------------------------------------------------------------------\n\n/**\n * Shorthand: create a theme surface that applies `darkOverrides` under\n * `@media (prefers-color-scheme: dark)`.\n *\n * Equivalent to:\n * ```ts\n * tokens.createTheme(name, {\n *   modes: [{ id: 'dark', overrides: darkOverrides, when: tokens.when.prefersDark }],\n * });\n * ```\n */\nexport function createDarkMode(\n  name: string,\n  darkOverrides: ThemeOverrides,\n  scopeId?: string,\n  layerContext?: ThemeEmitLayerContext,\n): ThemeSurface {\n  return createTheme(\n    name,\n    {\n      modes: [{ id: 'dark', overrides: darkOverrides, when: when.prefersDark }],\n    },\n    scopeId,\n    layerContext,\n  );\n}\n","import type { TokenValues, TokenRef, ThemeConfig, ThemeSurface, ThemeOverrides } from './types';\nimport { flattenTokenEntries } from './types';\nimport { scopedTokenNamespace } from './class-naming';\nimport { insertRule, insertRules } from './sheet';\nimport { createTheme, createDarkMode, when, colorMode } from './theme';\nimport type { CascadeLayersInput } from './layers';\nimport { applyLayerToRules, assertOwnLayer, resolveCascadeLayers } from './layers';\n\nexport type CreateTokensOptions = {\n  /**\n   * Prefix for CSS custom property namespaces and theme class segments so multiple\n   * packages on one page do not share `--color-*` or `.theme-*` collisions.\n   */\n  scopeId?: string;\n  /**\n   * When set with **`tokenLayer`**, `:root` custom properties and theme surfaces are wrapped in\n   * `@layer tokenLayer { … }`, and a matching `@layer …;` order preamble is registered.\n   */\n  layers?: CascadeLayersInput;\n  /**\n   * Default `@layer` from **`layers`** for token and theme CSS (`:root`, themes). Required when **`layers`** is set.\n   * Override per call: `tokens.create('color', { … }, { layer: '…' })`.\n   */\n  tokenLayer?: string;\n};\n\n/**\n * Design token and theme API bound to an optional `scopeId`.\n */\nexport type TokensApi = {\n  /** Same `scopeId` passed to `createTokens`, if any. */\n  readonly scopeId: string | undefined;\n  create: <T extends TokenValues>(\n    namespace: string,\n    values: T,\n    options?: { layer?: string },\n  ) => TokenRef<T>;\n  use: <T extends TokenValues = TokenValues>(namespace: string) => TokenRef<T>;\n  createTheme: (name: string, config: ThemeConfig) => ThemeSurface;\n  createDarkMode: (name: string, darkOverrides: ThemeOverrides) => ThemeSurface;\n  when: typeof when;\n  colorMode: typeof colorMode;\n};\n\n/**\n * Registry tracking which token namespaces have been created per instance,\n * so `use()` can provide warnings in development.\n */\nfunction getAllKeys(obj: TokenValues, prefix = ''): Set<string> {\n  const keys = new Set<string>();\n\n  if (obj === null || obj === undefined) return keys;\n\n  for (const [key, value] of Object.entries(obj)) {\n    const fullKey = prefix ? `${prefix}-${key}` : key;\n\n    if (typeof value !== 'object' || value === null) {\n      keys.add(fullKey);\n    } else {\n      keys.add(fullKey);\n      const nestedKeys = getAllKeys(value as TokenValues, fullKey);\n      nestedKeys.forEach((k) => keys.add(k));\n    }\n  }\n\n  return keys;\n}\n\nfunction createTokenProxy(namespace: string, prefix: string, allKeys: Set<string>): object {\n  const makeToken = (p: string) => `var(--${namespace}-${p})`;\n\n  const handler: ProxyHandler<object> = {\n    get(_target, prop: string | symbol): unknown {\n      if (typeof prop === 'symbol') {\n        return undefined;\n      }\n\n      if (prop === 'toString') {\n        return () => makeToken(prefix);\n      }\n      if (prop === 'valueOf') {\n        return () => makeToken(prefix);\n      }\n      if (prop === 'constructor') {\n        return Object;\n      }\n      if (prop === '__esModule') {\n        return false;\n      }\n      if (prop === 'length') {\n        return 0;\n      }\n\n      const newPrefix = prefix ? `${prefix}-${prop}` : prop;\n\n      if (allKeys.size === 0) {\n        return makeToken(newPrefix);\n      }\n\n      if (allKeys.has(newPrefix)) {\n        const hasChildren = [...allKeys].some(\n          (k) => k !== newPrefix && k.startsWith(newPrefix + '-'),\n        );\n        if (hasChildren) {\n          return createTokenProxy(namespace, newPrefix, allKeys);\n        }\n        return makeToken(newPrefix);\n      }\n\n      if (prefix !== '') {\n        return makeToken(newPrefix);\n      }\n\n      return createTokenProxy(namespace, newPrefix, allKeys);\n    },\n    has(_target, _prop) {\n      return true;\n    },\n    set(_target, _prop, _value) {\n      return false;\n    },\n  };\n\n  return new Proxy({}, handler);\n}\n\n/**\n * Create a tokens + theme API for a package or app. Each instance keeps its own\n * namespace registry; with `scopeId`, emitted custom properties and theme classes\n * are prefixed so they do not collide with other bundles on the same page.\n *\n * @example\n * ```ts\n * const tokens = createTokens({ scopeId: 'design-system' });\n * const color = tokens.create('color', { primary: '#0066ff' });\n * color.primary // var(--design-system-color-primary)\n * ```\n */\nexport function createTokens(options: CreateTokensOptions = {}): TokensApi {\n  const scopeId = options.scopeId?.trim() || undefined;\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (options.layers && options.tokenLayer == null) {\n      throw new Error(\n        '[typestyles] `createTokens({ layers })` requires `tokenLayer` — pass the layer name for `:root` and theme CSS.',\n      );\n    }\n    if (!options.layers && options.tokenLayer != null) {\n      throw new Error(\n        '[typestyles] `tokenLayer` is only valid on `createTokens` when `layers` is also set.',\n      );\n    }\n  } else if (options.layers && options.tokenLayer == null) {\n    throw new Error(\n      '[typestyles] `createTokens({ layers })` requires `tokenLayer` — pass the layer name for `:root` and theme CSS.',\n    );\n  }\n\n  const cascadeStack = options.layers ? resolveCascadeLayers(options.layers, scopeId) : undefined;\n  const tokenLayer = options.tokenLayer;\n\n  if (cascadeStack && tokenLayer) {\n    assertOwnLayer(cascadeStack, tokenLayer, 'tokens.create / createTheme');\n  }\n\n  const themeLayerContext =\n    cascadeStack && tokenLayer ? { stack: cascadeStack, layer: tokenLayer } : undefined;\n\n  const registeredNamespaces = new Set<string>();\n  const createdTokenKeys = new Map<string, Set<string>>();\n\n  function create<T extends TokenValues>(\n    namespace: string,\n    values: T,\n    options?: { layer?: string },\n  ): TokenRef<T> {\n    if (options?.layer != null && !themeLayerContext) {\n      throw new Error(\n        '[typestyles] `tokens.create(..., { layer })` requires `createTokens({ layers, tokenLayer })`.',\n      );\n    }\n\n    registeredNamespaces.add(namespace);\n\n    const cssNs = scopedTokenNamespace(scopeId, namespace);\n    const flatEntries = flattenTokenEntries(values);\n    const declarations = flatEntries\n      .map(([key, value]) => `--${cssNs}-${key}: ${value}`)\n      .join('; ');\n\n    const css = `:root { ${declarations}; }`;\n    if (themeLayerContext) {\n      const layer = options?.layer ?? themeLayerContext.layer;\n      assertOwnLayer(themeLayerContext.stack, layer, 'tokens.create');\n      const key = `tokens:${cssNs}@${layer}`;\n      insertRules(applyLayerToRules([{ key, css }], layer, themeLayerContext.stack));\n    } else {\n      insertRule(`tokens:${cssNs}`, css);\n    }\n\n    const allKeys = getAllKeys(values);\n    createdTokenKeys.set(namespace, allKeys);\n\n    return createTokenProxy(cssNs, '', allKeys) as TokenRef<T>;\n  }\n\n  function use<T extends TokenValues = TokenValues>(namespace: string): TokenRef<T> {\n    if (\n      process.env.NODE_ENV !== 'production' &&\n      registeredNamespaces.size > 0 &&\n      !registeredNamespaces.has(namespace)\n    ) {\n      console.warn(\n        `[typestyles] tokens.use('${namespace}') references a namespace that hasn't been created yet. ` +\n          `Make sure tokens.create('${namespace}', ...) is called before using these tokens.`,\n      );\n    }\n\n    const cssNs = scopedTokenNamespace(scopeId, namespace);\n    const allKeys = createdTokenKeys.get(namespace) ?? new Set<string>();\n    return createTokenProxy(cssNs, '', allKeys) as TokenRef<T>;\n  }\n\n  return {\n    scopeId,\n    create,\n    use,\n    createTheme: (name, config) => createTheme(name, config, scopeId, themeLayerContext),\n    createDarkMode: (name, darkOverrides) =>\n      createDarkMode(name, darkOverrides, scopeId, themeLayerContext),\n    when,\n    colorMode,\n  };\n}\n","import type { CSSProperties } from './types';\n\n/**\n * Return type of helpers in `typestyles/globals`, passed to `global.style(…)`.\n *\n * @example\n * ```ts\n * global.style(boxSizing());\n * global.style(body({ margin: 0 }, { layer: 'components' }));\n * ```\n */\nexport type GlobalStyleTuple =\n  | readonly [selector: string, properties: CSSProperties]\n  | readonly [selector: string, properties: CSSProperties, options: { layer?: string }];\n\nexport function parseGlobalStyleArgs(\n  first: string | GlobalStyleTuple,\n  second?: CSSProperties,\n  third?: { layer?: string },\n): { selector: string; properties: CSSProperties; options?: { layer?: string } } {\n  if (Array.isArray(first)) {\n    const t = first as readonly unknown[];\n    if (t.length < 2 || t.length > 3) {\n      throw new Error(\n        '[typestyles] global.style(…) recipe tuple must be [selector, properties] or [selector, properties, { layer }].',\n      );\n    }\n    const selector = t[0];\n    const properties = t[1];\n    if (typeof selector !== 'string') {\n      throw new Error(\n        '[typestyles] global.style(…) recipe tuple must start with a selector string.',\n      );\n    }\n    if (typeof properties !== 'object' || properties === null || Array.isArray(properties)) {\n      throw new Error(\n        '[typestyles] global.style(…) recipe tuple must use a style object as the second element.',\n      );\n    }\n    if (t.length === 3) {\n      const opts = t[2];\n      if (typeof opts !== 'object' || opts === null || Array.isArray(opts)) {\n        throw new Error(\n          '[typestyles] global.style(…) recipe tuple optional third element must be `{ layer?: string }`.',\n        );\n      }\n      return {\n        selector,\n        properties: properties as CSSProperties,\n        options: opts as { layer?: string },\n      };\n    }\n    return { selector, properties: properties as CSSProperties, options: undefined };\n  }\n\n  if (typeof first !== 'string' || second === undefined) {\n    throw new Error(\n      '[typestyles] global.style(…) expected `(selector, properties)` or a recipe tuple from `typestyles/globals`.',\n    );\n  }\n\n  return { selector: first, properties: second, options: third };\n}\n","import type { CSSProperties, FontFaceProps, FontFaceSrc } from './types';\nimport { serializeStyle } from './css';\nimport { insertRule, insertRules } from './sheet';\nimport type { GlobalStyleTuple } from './global-style-tuple';\nimport { parseGlobalStyleArgs } from './global-style-tuple';\n\n/**\n * Apply styles to an arbitrary CSS selector.\n *\n * Use for CSS resets, body/root defaults, third-party elements, or any\n * selector that isn't tied to a specific component class.\n *\n * @example\n * ```ts\n * global.style('body', { margin: 0, fontFamily: 'sans-serif' });\n * global.style('a:hover', { textDecoration: 'underline' });\n * global.style('*, *::before, *::after', { boxSizing: 'border-box' });\n * ```\n *\n * Also accepts a tuple from `typestyles/globals` recipes:\n *\n * ```ts\n * import { boxSizing, body } from 'typestyles/globals';\n * global.style(boxSizing());\n * global.style(body({ margin: 0 }));\n * ```\n *\n * Optional `{ layer }` on the tuple or as a third argument is ignored on the root `global` object —\n * use `createGlobal({ layers })` or `createTypeStyles({ layers }).global` for `@layer`.\n */\nexport function globalStyle(tuple: GlobalStyleTuple): void;\nexport function globalStyle(\n  selector: string,\n  properties: CSSProperties,\n  options?: { layer?: string },\n): void;\nexport function globalStyle(\n  first: string | GlobalStyleTuple,\n  second?: CSSProperties,\n  third?: { layer?: string },\n): void {\n  const { selector, properties, options } = parseGlobalStyleArgs(first, second, third);\n  if (process.env.NODE_ENV !== 'production' && options?.layer != null) {\n    console.warn(\n      '[typestyles] `layer` on root `global.style(...)` is ignored — use `createGlobal({ layers })` or `createTypeStyles({ layers }).global` for cascade layers.',\n    );\n  }\n  const rules = serializeStyle(selector, properties);\n  insertRules(rules);\n}\n\n/** Apply multiple `typestyles/globals` tuples (e.g. {@link reset}) in one call. */\nexport function globalApply(...tuples: GlobalStyleTuple[]): void {\n  for (const t of tuples) {\n    globalStyle(t);\n  }\n}\n\n/** Join `src` fragments for CSS `src` and for dedupe keys. */\nfunction normalizeFontFaceSrc(src: FontFaceSrc): string {\n  return typeof src === 'string' ? src : src.join(', ');\n}\n\n/**\n * Declare a `@font-face` rule to load a custom font.\n *\n * Multiple weights/styles of the same family can be registered by calling\n * this function multiple times with different `src` values — each call is\n * deduplicated by `family +` normalized `src`.\n *\n * @example\n * ```ts\n * global.fontFace('Inter', {\n *   src: \"url('/fonts/Inter-Regular.woff2') format('woff2')\",\n *   fontWeight: 400,\n *   fontStyle: 'normal',\n *   fontDisplay: 'swap',\n * });\n *\n * global.fontFace('Inter', {\n *   src: \"url('/fonts/Inter-Bold.woff2') format('woff2')\",\n *   fontWeight: 700,\n *   fontStyle: 'normal',\n *   fontDisplay: 'swap',\n * });\n * ```\n *\n * @example Variable font (weight range)\n * ```ts\n * global.fontFace('InterVar', {\n *   src: \"url('/fonts/Inter.var.woff2') format('woff2')\",\n *   fontWeight: '100 900',\n *   fontDisplay: 'swap',\n * });\n * ```\n *\n * @example Multiple `src` entries (e.g. `local()` then remote)\n * ```ts\n * global.fontFace('Inter', {\n *   src: [`local('Inter')`, \"url('/fonts/Inter.woff2') format('woff2')\"],\n *   fontDisplay: 'swap',\n * });\n * ```\n */\nexport function globalFontFace(family: string, props: FontFaceProps): void {\n  const srcCss = normalizeFontFaceSrc(props.src);\n  const decls: string[] = [`font-family: \"${family}\"`, `src: ${srcCss}`];\n  if (props.fontWeight != null) decls.push(`font-weight: ${props.fontWeight}`);\n  if (props.fontStyle) decls.push(`font-style: ${props.fontStyle}`);\n  if (props.fontDisplay) decls.push(`font-display: ${props.fontDisplay}`);\n  if (props.fontStretch) decls.push(`font-stretch: ${props.fontStretch}`);\n  if (props.unicodeRange) decls.push(`unicode-range: ${props.unicodeRange}`);\n  if (props.sizeAdjust) decls.push(`size-adjust: ${props.sizeAdjust}`);\n  if (props.ascentOverride) decls.push(`ascent-override: ${props.ascentOverride}`);\n  if (props.descentOverride) decls.push(`descent-override: ${props.descentOverride}`);\n  if (props.lineGapOverride) decls.push(`line-gap-override: ${props.lineGapOverride}`);\n  const css = `@font-face { ${decls.join('; ')}; }`;\n  // Key includes src for uniqueness (multiple weights per family)\n  insertRule(`font-face:${family}:${srcCss}`, css);\n}\n","import type { CSSProperties, FontFaceProps } from './types';\nimport { serializeStyle } from './css';\nimport { insertRules } from './sheet';\nimport type { CascadeLayersInput } from './layers';\nimport {\n  applyLayerToRules,\n  assertOwnLayer,\n  resolveCascadeLayers,\n  type ResolvedCascadeLayers,\n} from './layers';\nimport { globalFontFace } from './global';\nimport type { GlobalStyleTuple } from './global-style-tuple';\nimport { parseGlobalStyleArgs } from './global-style-tuple';\n\ntype CreateGlobalOptions = {\n  /**\n   * Prefixes inserted rule keys so globals from different bundles dedupe independently.\n   * Within one scope, each `selector` (+ optional `layer`) maps to a single rule: a second\n   * `global.style('body', …)` with different properties is ignored; non-production builds warn.\n   */\n  scopeId?: string;\n};\n\ntype CreateGlobalWithLayers = CreateGlobalOptions & {\n  layers: CascadeLayersInput;\n  /**\n   * Default `@layer` for `style()` when the call (or recipe tuple) omits `{ layer }`.\n   * Must be one of the stack’s own layer names (not a prepended framework layer).\n   */\n  globalLayer?: string;\n};\n\nexport type GlobalApiUnlayered = {\n  readonly cascadeLayers: undefined;\n  style(tuple: GlobalStyleTuple): void;\n  style(selector: string, properties: CSSProperties, options?: { layer?: string }): void;\n  /** Apply multiple recipe tuples (e.g. {@link reset} from `typestyles/globals`). */\n  apply(...tuples: GlobalStyleTuple[]): void;\n  fontFace(family: string, props: FontFaceProps): void;\n};\n\nexport type GlobalApiLayered = {\n  readonly cascadeLayers: ResolvedCascadeLayers;\n  style(tuple: GlobalStyleTuple): void;\n  style(selector: string, properties: CSSProperties, options?: { layer?: string }): void;\n  apply(...tuples: GlobalStyleTuple[]): void;\n  fontFace(family: string, props: FontFaceProps): void;\n};\n\nexport function createGlobal(options?: CreateGlobalOptions): GlobalApiUnlayered;\n\nexport function createGlobal(options: CreateGlobalWithLayers): GlobalApiLayered;\n\nexport function createGlobal(\n  options?: CreateGlobalOptions | CreateGlobalWithLayers,\n): GlobalApiUnlayered | GlobalApiLayered {\n  const scopeId = options?.scopeId;\n  const scopePrefix = scopeId != null && scopeId !== '' ? `g:${scopeId}:` : '';\n  const layersOpt = options && 'layers' in options ? options.layers : undefined;\n  const globalLayerDefault =\n    options && 'layers' in options && 'globalLayer' in options ? options.globalLayer : undefined;\n\n  const stack = layersOpt != null ? resolveCascadeLayers(layersOpt, scopeId) : undefined;\n\n  if (stack && globalLayerDefault != null && globalLayerDefault !== '') {\n    assertOwnLayer(stack, globalLayerDefault, 'createGlobal({ globalLayer })');\n  }\n\n  const style = (\n    first: string | GlobalStyleTuple,\n    second?: CSSProperties,\n    third?: { layer?: string },\n  ): void => {\n    const { selector, properties, options: opts } = parseGlobalStyleArgs(first, second, third);\n\n    const rules = serializeStyle(selector, properties).map((r) => ({\n      ...r,\n      key: scopePrefix + r.key,\n    }));\n\n    if (stack) {\n      const layer = opts?.layer ?? globalLayerDefault;\n      if (layer == null || layer === '') {\n        throw new Error(\n          '[typestyles] `global.style(..., { layer })` (or a recipe tuple with `{ layer }`) is required when using `createGlobal({ layers })` without `globalLayer`.',\n        );\n      }\n      assertOwnLayer(stack, layer, `global.style('${selector}', …)`);\n      insertRules(applyLayerToRules(rules, layer, stack));\n      return;\n    }\n\n    if (process.env.NODE_ENV !== 'production' && opts?.layer != null) {\n      console.warn(\n        '[typestyles] `layer` in `global.style(..., { layer })` is ignored when `createGlobal()` was created without `layers`.',\n      );\n    }\n    insertRules(rules);\n  };\n\n  const apply = (...tuples: GlobalStyleTuple[]): void => {\n    for (const t of tuples) {\n      style(t);\n    }\n  };\n\n  return {\n    cascadeLayers: stack,\n    style,\n    apply,\n    fontFace: globalFontFace,\n  } as GlobalApiUnlayered | GlobalApiLayered;\n}\n","import type { ClassNamingConfig } from './class-naming';\nimport type { CascadeLayersObjectInput } from './layers';\nimport { createGlobal } from './create-global';\nimport type { GlobalApiLayered, GlobalApiUnlayered } from './create-global';\nimport { createStyles } from './styles';\nimport type { StylesApi, StylesApiWithLayers } from './styles';\nimport { createTokens } from './tokens';\nimport type { TokensApi } from './tokens';\n\ntype NamingPartial = Partial<Omit<ClassNamingConfig, 'cascadeLayers'>>;\n\ntype GlobalLayerOption<L extends string = string> = {\n  /**\n   * Default `@layer` for `global.style()` when using `layers`.\n   * Omit to require `{ layer }` on each `global.style` call or recipe tuple.\n   * Per-call override: `global.style(selector, props, { layer: '…' })` or `body(props, { layer: '…' })`.\n   */\n  globalLayer?: L;\n};\n\n/** Unified factory: one `scopeId`, shared cascade layer stack for both class rules and token/theme CSS. */\nexport function createTypeStyles(options: NamingPartial): {\n  styles: StylesApi;\n  tokens: TokensApi;\n  global: GlobalApiUnlayered;\n};\n\nexport function createTypeStyles<const L extends readonly [string, ...string[]]>(\n  options: NamingPartial & { layers: L; tokenLayer: L[number] } & GlobalLayerOption<L[number]>,\n): { styles: StylesApiWithLayers<L[number]>; tokens: TokensApi; global: GlobalApiLayered };\n\nexport function createTypeStyles(\n  options: NamingPartial & {\n    layers: CascadeLayersObjectInput;\n    tokenLayer: string;\n  } & GlobalLayerOption,\n): { styles: StylesApiWithLayers<string>; tokens: TokensApi; global: GlobalApiLayered };\n\nexport function createTypeStyles(\n  options: NamingPartial & {\n    layers?: CascadeLayersObjectInput | readonly string[];\n    tokenLayer?: string;\n    globalLayer?: string;\n  },\n): {\n  styles: StylesApi | StylesApiWithLayers<string>;\n  tokens: TokensApi;\n  global: GlobalApiUnlayered | GlobalApiLayered;\n} {\n  const { layers, tokenLayer, globalLayer, ...rest } = options;\n\n  if (layers != null) {\n    if (tokenLayer === undefined) {\n      throw new Error(\n        '[typestyles] `createTypeStyles({ layers })` requires `tokenLayer` — the default `@layer` for `:root` and theme CSS.',\n      );\n    }\n    const styles = createStyles({ ...rest, layers, tokenLayer });\n    const tokens = createTokens({ scopeId: rest.scopeId, layers, tokenLayer });\n    const global = createGlobal({\n      layers,\n      scopeId: rest.scopeId,\n      globalLayer,\n    });\n    return { styles, tokens, global };\n  }\n\n  if (tokenLayer !== undefined) {\n    throw new Error(\n      '[typestyles] `createTypeStyles`: `tokenLayer` is only valid together with `layers`.',\n    );\n  }\n\n  if (globalLayer !== undefined) {\n    throw new Error(\n      '[typestyles] `createTypeStyles`: `globalLayer` is only valid together with `layers`.',\n    );\n  }\n\n  const styles = createStyles(rest);\n  const tokens = createTokens({ scopeId: rest.scopeId });\n  const global = createGlobal({ scopeId: rest.scopeId });\n  return { styles, tokens, global };\n}\n","import type { CSSProperties } from './types';\nimport { toKebabCase } from './css';\nimport { insertRule } from './sheet';\n\n/**\n * A keyframe stop is either 'from', 'to', or a percentage like '50%'.\n */\nexport type KeyframeStops = Record<string, CSSProperties>;\n\n/**\n * Serialize CSS declarations for a single keyframe stop (no nesting/at-rules).\n */\nfunction serializeDeclarations(properties: CSSProperties): string {\n  const declarations: string[] = [];\n\n  for (const [prop, value] of Object.entries(properties)) {\n    if (value == null) continue;\n    // Keyframe stops only contain plain properties — skip nested selectors/at-rules\n    if (prop.startsWith('&') || prop.startsWith('@')) continue;\n\n    const kebabProp = toKebabCase(prop);\n    const serialized = typeof value === 'number' ? (value === 0 ? '0' : value + 'px') : value;\n    declarations.push(`${kebabProp}: ${serialized}`);\n  }\n\n  return declarations.join('; ');\n}\n\n/**\n * Create a CSS @keyframes animation and return its name.\n *\n * The returned string is the animation name — use it directly in\n * `animation` shorthand or `animationName`.\n *\n * @example\n * ```ts\n * const fadeIn = keyframes.create('fadeIn', {\n *   from: { opacity: 0 },\n *   to: { opacity: 1 },\n * });\n *\n * const card = styles.component('card', {\n *   base: { animation: `${fadeIn} 300ms ease` },\n * });\n * ```\n *\n * @example\n * ```ts\n * const bounce = keyframes.create('bounce', {\n *   '0%': { transform: 'translateY(0)' },\n *   '50%': { transform: 'translateY(-20px)' },\n *   '100%': { transform: 'translateY(0)' },\n * });\n * ```\n */\nexport function createKeyframes(name: string, stops: KeyframeStops): string {\n  const stopsCSS = Object.entries(stops)\n    .map(([stop, properties]) => {\n      const decls = serializeDeclarations(properties as CSSProperties);\n      return `${stop} { ${decls}; }`;\n    })\n    .join(' ');\n\n  const css = `@keyframes ${name} { ${stopsCSS} }`;\n  insertRule(`keyframes:${name}`, css);\n\n  return name;\n}\n","/**\n * Type-safe helpers for CSS color functions.\n *\n * Each function returns a plain CSS string — no runtime color math.\n * Works naturally with token references since tokens are strings too.\n */\n\ntype ColorValue = string | number;\n\n/** Color spaces supported by color-mix(). */\nexport type ColorMixSpace =\n  | 'srgb'\n  | 'srgb-linear'\n  | 'display-p3'\n  | 'a98-rgb'\n  | 'prophoto-rgb'\n  | 'rec2020'\n  | 'lab'\n  | 'oklab'\n  | 'xyz'\n  | 'xyz-d50'\n  | 'xyz-d65'\n  | 'hsl'\n  | 'hwb'\n  | 'lch'\n  | 'oklch';\n\n/**\n * `rgb(r g b)` or `rgb(r g b / a)`\n *\n * @example\n * ```ts\n * color.rgb(0, 102, 255)        // \"rgb(0 102 255)\"\n * color.rgb(0, 102, 255, 0.5)   // \"rgb(0 102 255 / 0.5)\"\n * ```\n */\nexport function rgb(r: ColorValue, g: ColorValue, b: ColorValue, alpha?: ColorValue): string {\n  if (alpha != null) return `rgb(${r} ${g} ${b} / ${alpha})`;\n  return `rgb(${r} ${g} ${b})`;\n}\n\n/**\n * `hsl(h s l)` or `hsl(h s l / a)`\n *\n * @example\n * ```ts\n * color.hsl(220, '100%', '50%')       // \"hsl(220 100% 50%)\"\n * color.hsl(220, '100%', '50%', 0.8)  // \"hsl(220 100% 50% / 0.8)\"\n * ```\n */\nexport function hsl(h: ColorValue, s: ColorValue, l: ColorValue, alpha?: ColorValue): string {\n  if (alpha != null) return `hsl(${h} ${s} ${l} / ${alpha})`;\n  return `hsl(${h} ${s} ${l})`;\n}\n\n/**\n * `oklch(L C h)` or `oklch(L C h / a)`\n *\n * @example\n * ```ts\n * color.oklch(0.7, 0.15, 250)       // \"oklch(0.7 0.15 250)\"\n * color.oklch(0.7, 0.15, 250, 0.5)  // \"oklch(0.7 0.15 250 / 0.5)\"\n * ```\n */\nexport function oklch(l: ColorValue, c: ColorValue, h: ColorValue, alpha?: ColorValue): string {\n  if (alpha != null) return `oklch(${l} ${c} ${h} / ${alpha})`;\n  return `oklch(${l} ${c} ${h})`;\n}\n\n/**\n * `oklab(L a b)` or `oklab(L a b / alpha)`\n *\n * @example\n * ```ts\n * color.oklab(0.7, -0.1, -0.1)       // \"oklab(0.7 -0.1 -0.1)\"\n * color.oklab(0.7, -0.1, -0.1, 0.5)  // \"oklab(0.7 -0.1 -0.1 / 0.5)\"\n * ```\n */\nexport function oklab(l: ColorValue, a: ColorValue, b: ColorValue, alpha?: ColorValue): string {\n  if (alpha != null) return `oklab(${l} ${a} ${b} / ${alpha})`;\n  return `oklab(${l} ${a} ${b})`;\n}\n\n/**\n * `lab(L a b)` or `lab(L a b / alpha)`\n *\n * @example\n * ```ts\n * color.lab('50%', 40, -20)  // \"lab(50% 40 -20)\"\n * ```\n */\nexport function lab(l: ColorValue, a: ColorValue, b: ColorValue, alpha?: ColorValue): string {\n  if (alpha != null) return `lab(${l} ${a} ${b} / ${alpha})`;\n  return `lab(${l} ${a} ${b})`;\n}\n\n/**\n * `lch(L C h)` or `lch(L C h / alpha)`\n *\n * @example\n * ```ts\n * color.lch('50%', 80, 250)  // \"lch(50% 80 250)\"\n * ```\n */\nexport function lch(l: ColorValue, c: ColorValue, h: ColorValue, alpha?: ColorValue): string {\n  if (alpha != null) return `lch(${l} ${c} ${h} / ${alpha})`;\n  return `lch(${l} ${c} ${h})`;\n}\n\n/**\n * `hwb(h w b)` or `hwb(h w b / alpha)`\n *\n * @example\n * ```ts\n * color.hwb(220, '10%', '0%')  // \"hwb(220 10% 0%)\"\n * ```\n */\nexport function hwb(h: ColorValue, w: ColorValue, b: ColorValue, alpha?: ColorValue): string {\n  if (alpha != null) return `hwb(${h} ${w} ${b} / ${alpha})`;\n  return `hwb(${h} ${w} ${b})`;\n}\n\n/**\n * `color-mix(in colorspace, color1 p1%, color2 p2%)`\n *\n * Mixes two colors in the given color space. Percentages are optional.\n *\n * @example\n * ```ts\n * color.mix('red', 'blue')                      // \"color-mix(in srgb, red, blue)\"\n * color.mix('red', 'blue', 30)                   // \"color-mix(in srgb, red 30%, blue)\"\n * color.mix(theme.primary, 'white', 20)          // \"color-mix(in srgb, var(--theme-primary) 20%, white)\"\n * color.mix('red', 'blue', 50, 'oklch')          // \"color-mix(in oklch, red 50%, blue)\"\n * ```\n */\nexport function mix(\n  color1: string,\n  color2: string,\n  percentage?: number,\n  colorSpace: ColorMixSpace = 'srgb',\n): string {\n  const c1 = percentage != null ? `${color1} ${percentage}%` : color1;\n  return `color-mix(in ${colorSpace}, ${c1}, ${color2})`;\n}\n\n/**\n * `light-dark(lightColor, darkColor)`\n *\n * Uses the `light-dark()` CSS function that resolves based on\n * the computed `color-scheme` of the element.\n *\n * @example\n * ```ts\n * color.lightDark('#111', '#eee')                     // \"light-dark(#111, #eee)\"\n * color.lightDark(theme.textLight, theme.textDark)     // \"light-dark(var(--theme-textLight), var(--theme-textDark))\"\n * ```\n */\nexport function lightDark(lightColor: string, darkColor: string): string {\n  return `light-dark(${lightColor}, ${darkColor})`;\n}\n\n/**\n * Adjust the alpha/opacity of any color using `color-mix()`.\n *\n * This is a common pattern: mixing a color with transparent to change opacity.\n * Works with any color value including token references.\n *\n * @example\n * ```ts\n * color.alpha('red', 0.5)              // \"color-mix(in srgb, red 50%, transparent)\"\n * color.alpha(theme.primary, 0.2)      // \"color-mix(in srgb, var(--theme-primary) 20%, transparent)\"\n * color.alpha('#0066ff', 0.8, 'oklch') // \"color-mix(in oklch, #0066ff 80%, transparent)\"\n * ```\n */\nexport function alpha(\n  colorValue: string,\n  opacity: number,\n  colorSpace: ColorMixSpace = 'srgb',\n): string {\n  const percentage = Math.round(opacity * 100);\n  return `color-mix(in ${colorSpace}, ${colorValue} ${percentage}%, transparent)`;\n}\n","import type { CSSVarRef } from './types';\n\nlet counter = 0;\n\n/** Reset the counter. Used in tests only. */\nexport function __resetVarCounter(): void {\n  counter = 0;\n}\n\n/**\n * Create a unique CSS custom property reference.\n *\n * Returns a `var(--ts-N)` string that can be used anywhere a CSS value is\n * accepted. Use assignVars() to set its value per element via inline styles.\n *\n * @example\n * ```ts\n * const cardBg = createVar();\n *\n * const card = styles.component('card', {\n *   base: { background: cardBg, padding: '16px' },\n * });\n *\n * // Consumer sets the variable per instance:\n * <div className={card('base')} style={assignVars({ [cardBg]: '#ff0099' })} />\n * ```\n */\nexport function createVar(): CSSVarRef {\n  const name = `--ts-${++counter}`;\n  return `var(${name})` as CSSVarRef;\n}\n\n/**\n * Build a CSS custom property assignment map from var refs to values.\n *\n * The returned object is safe to spread into a React (or any framework)\n * inline `style` prop.\n *\n * @example\n * ```ts\n * assignVars({ [cardBg]: '#ff0099' })\n * // → { '--ts-1': '#ff0099' }\n * ```\n */\nexport function assignVars(vars: Partial<Record<CSSVarRef, string>>): Record<string, string> {\n  const result: Record<string, string> = {};\n  for (const [varRef, value] of Object.entries(vars)) {\n    if (value == null) continue;\n    // Strip \"var(\" prefix and \")\" suffix to get the raw property name\n    const match = varRef.match(/^var\\((--[^)]+)\\)$/);\n    if (match) result[match[1]] = value;\n  }\n  return result;\n}\n","/**\n * Join class name parts, filtering out falsy values.\n *\n * A lightweight utility for combining TypeStyles classes, external class\n * strings, and conditional expressions into a single `className` string.\n *\n * @example\n * ```ts\n * import { cx } from 'typestyles';\n *\n * cx('card', isActive && 'active', className);\n * // => \"card active my-external-class\"\n *\n * cx(button('base', 'primary'), 'extra');\n * // => \"button-base button-primary extra\"\n * ```\n */\nexport function cx(...parts: Array<string | undefined | null | false | 0 | ''>): string {\n  return parts.filter(Boolean).join(' ');\n}\n","/**\n * Helpers for CSS `calc()` and `clamp()` that keep the function parentheses in one place.\n * Values are plain strings at runtime — no validation of inner syntax.\n */\n\n/** Token refs, lengths, percentages, etc. */\nexport type CssMathValue = string | number;\n\n/**\n * Tagged template: wraps the interpolated expression in `calc(...)`.\n *\n * @example\n * ```ts\n * import { calc } from 'typestyles';\n *\n * calc`100vh - 2 * ${t.space[4]}`\n * // => \"calc(100vh - 2 * var(--space-4))\"\n * ```\n */\nexport function calc(strings: TemplateStringsArray, ...values: CssMathValue[]): string {\n  let inner = strings[0] ?? '';\n  for (let i = 0; i < values.length; i++) {\n    inner += String(values[i]) + (strings[i + 1] ?? '');\n  }\n  return `calc(${inner})`;\n}\n\n/**\n * CSS `clamp(MIN, PREFERRED, MAX)`.\n *\n * @example\n * ```ts\n * import { clamp } from 'typestyles';\n *\n * clamp('1rem', '5vw', '3rem')\n * // => \"clamp(1rem, 5vw, 3rem)\"\n * ```\n */\nexport function clamp(min: CssMathValue, preferred: CssMathValue, max: CssMathValue): string {\n  return `clamp(${min}, ${preferred}, ${max})`;\n}\n","/**\n * Helper for CSS `content` string values. Emits a double-quoted CSS string; values are plain strings\n * at runtime — same spirit as `calc` / `clamp` in css-math.\n */\n\n/**\n * Wrap `text` in a CSS string (`content: \"…\";`). `null` / `undefined` yield `''` (omit the property\n * or pair with a conditional if you need no declaration).\n *\n * @example\n * ```ts\n * import { content } from 'typestyles';\n *\n * content() // => '' (skip property or use a conditional if you want no rule)\n * content('') // => '\"\"' → valid `content: \"\";` for an empty pseudo-element box\n * content('*') // => '\"*\"' → `content: \"*\";`\n * ```\n */\nexport function content(text?: string | null): string {\n  if (text == null) return '';\n  return JSON.stringify(text);\n}\n","import { createStyles } from './styles';\nimport { createTokens } from './tokens';\nimport { createTypeStyles } from './create-type-styles';\nimport { createGlobal } from './create-global';\nimport { createTheme, createDarkMode, when, colorMode } from './theme';\nimport { createKeyframes } from './keyframes';\nimport * as colorFns from './color';\nimport {\n  getRegisteredCss,\n  insertRules,\n  reset,\n  flushSync,\n  ensureDocumentStylesAttached,\n} from './sheet';\nimport { globalStyle, globalFontFace, globalApply } from './global';\nimport { createVar, assignVars } from './vars';\nimport { cx } from './cx';\nimport { container, createContainerRef } from './container';\nimport { atRuleBlock } from './at-rule-block';\nimport { has, is, where } from './relational-pseudo';\nimport { calc, clamp } from './css-math';\nimport { content } from './css-content';\n\nexport type {\n  StylesApi,\n  StylesApiWithLayers,\n  CreateStylesInput,\n  LayerOption,\n  LayeredComponentFn,\n} from './styles';\nexport type { CreateTokensOptions, TokensApi } from './tokens';\n\nexport type { CascadeLayersInput, CascadeLayersObjectInput, ResolvedCascadeLayers } from './layers';\n\nexport type { ClassNamingConfig, ClassNamingMode } from './class-naming';\nexport {\n  mergeClassNaming,\n  defaultClassNamingConfig,\n  scopedTokenNamespace,\n  fileScopeId,\n} from './class-naming';\n\nexport { createStyles, createTokens, createTypeStyles, createGlobal };\n\nexport type { GlobalApiUnlayered, GlobalApiLayered } from './create-global';\n\nexport type { GlobalStyleTuple } from './global-style-tuple';\n\nexport { container, createContainerRef, atRuleBlock, has, is, where };\n\nexport { calc, clamp, content };\n\nexport type { CssMathValue } from './css-math';\n\nexport type {\n  ContainerQueryKey,\n  ContainerQueryFeatures,\n  ContainerQueryObject,\n  ContainerObjectKey,\n  ContainerNameRef,\n  CreateContainerRefOptions,\n} from './container';\n\nexport type { HasNestedKey, IsNestedKey, WhereNestedKey, IsPseudoArg } from './relational-pseudo';\n\nexport type {\n  CSSProperties,\n  CSSValue,\n  StyleDefinitions,\n  StyleDefinitionsWithUtils,\n  CSSPropertiesWithUtils,\n  StyleUtils,\n  TokenValues,\n  TokenRef,\n  ThemeOverrides,\n  FlatTokenEntry,\n  KeyframeStops,\n  VariantDefinitions,\n  VariantOptionStyle,\n  ComponentConfig,\n  ComponentConfigContext,\n  ComponentConfigInput,\n  ComponentInternalVarRef,\n  ComponentReturn,\n  ComponentVarDefinitions,\n  ComponentVarDescriptor,\n  ComponentVarNode,\n  ComponentVarOptions,\n  ComponentVarRefTree,\n  FlatComponentConfig,\n  FlatComponentConfigInput,\n  FlatComponentReturn,\n  FlatComponentSelections,\n  ComponentSelections,\n  SlotStyles,\n  SlotVariantDefinitions,\n  SlotComponentConfig,\n  SlotComponentConfigInput,\n  SlotComponentFunction,\n  MultiSlotConfigInput,\n  FontFaceProps,\n  FontFaceSrc,\n  CSSVarRef,\n  ComponentVariants,\n  ThemeCondition,\n  ThemeConditionMedia,\n  ThemeConditionAttr,\n  ThemeConditionClass,\n  ThemeConditionSelector,\n  ThemeConditionAnd,\n  ThemeConditionOr,\n  ThemeConditionNot,\n  ThemeModeDefinition,\n  ThemeConfig,\n  ThemeSurface,\n  DeepPartialTokenValues,\n} from './types';\n\nexport { flattenTokenEntries } from './types';\n\nexport { createVar, assignVars };\n\nexport type { ColorMixSpace } from './color';\n\nexport { createTheme, createDarkMode, when, colorMode };\n\nexport type { ThemeEmitLayerContext } from './theme';\n\n/**\n * Default style API (semantic class names, empty `scopeId`). Prefer `createStyles({ scopeId, mode, prefix })`\n * per package or micro-frontend for isolation.\n *\n * @example\n * ```ts\n * // Multi-variant component (CVA-style)\n * const button = styles.component('button', {\n *   base: { padding: '8px 16px' },\n *   variants: {\n *     intent: { primary: { backgroundColor: '#0066ff' } },\n *     size: { sm: { fontSize: '14px' }, lg: { fontSize: '18px' } },\n *   },\n *   defaultVariants: { intent: 'primary', size: 'sm' },\n * });\n *\n * button({ intent: 'primary', size: 'lg' })\n *\n * const card = styles.class('card', { padding: '1rem' });\n * ```\n */\nexport const styles = createStyles();\n\n/**\n * Global CSS API for arbitrary selectors and font-face declarations.\n *\n * @example\n * ```ts\n * global.style('body', { margin: 0 });\n * global.apply(...reset());\n * global.fontFace('Inter', { src: \"url('/Inter.woff2') format('woff2')\", fontWeight: 400 });\n * global.fontFace('Inter', { src: [`local('Inter')`, \"url('/Inter.woff2') format('woff2')\"] });\n * ```\n */\nexport const global = {\n  style: globalStyle,\n  apply: globalApply,\n  fontFace: globalFontFace,\n} as const;\n\n/**\n * Default token API (unscoped custom properties). Prefer `createTokens({ scopeId })` when multiple\n * bundles share a page.\n *\n * @example\n * ```ts\n * const color = tokens.create('color', { primary: '#0066ff' });\n * color.primary // \"var(--color-primary)\"\n *\n * const acme = tokens.createTheme('acme', {\n *   base: { color: { primary: '#ff6600' } },\n *   colorMode: tokens.colorMode.mediaOnly({ dark: darkOverrides }),\n * });\n * ```\n */\nexport const tokens = createTokens();\n\n/**\n * Keyframe animation API.\n *\n * @example\n * ```ts\n * const fadeIn = keyframes.create('fadeIn', {\n *   from: { opacity: 0 },\n *   to: { opacity: 1 },\n * });\n *\n * const card = styles.component('card', {\n *   base: { animation: `${fadeIn} 300ms ease` },\n * });\n * ```\n */\nexport const keyframes = {\n  create: createKeyframes,\n} as const;\n\n/**\n * Type-safe CSS color function helpers.\n *\n * Each function returns a plain CSS color string — no runtime color math.\n * Composes naturally with token references.\n *\n * @example\n * ```ts\n * color.rgb(0, 102, 255)                    // \"rgb(0 102 255)\"\n * color.oklch(0.7, 0.15, 250)               // \"oklch(0.7 0.15 250)\"\n * color.mix(theme.primary, 'white', 20)      // \"color-mix(in srgb, var(--theme-primary) 20%, white)\"\n * color.alpha(theme.primary, 0.5)            // \"color-mix(in srgb, var(--theme-primary) 50%, transparent)\"\n * color.lightDark('#111', '#eee')            // \"light-dark(#111, #eee)\"\n * ```\n */\nexport const color = colorFns;\n\n/**\n * Return all registered CSS as a string (for SSR).\n */\nexport { getRegisteredCss };\n\n/**\n * Insert multiple CSS rules into the stylesheet.\n * Low-level API used internally and by packages like @typestyles/props.\n */\nexport { insertRules };\n\n/**\n * Testing utilities for clearing the stylesheet and flushing pending rules.\n */\nexport { reset, flushSync, ensureDocumentStylesAttached };\n\n/**\n * Join class name parts, filtering out falsy values.\n *\n * A lightweight utility for combining TypeStyles classes, external class\n * strings, and conditional expressions into a single `className` string.\n *\n * @example\n * ```ts\n * import { cx } from 'typestyles';\n *\n * cx(card('root'), isActive && 'active', externalClassName);\n * // => \"card-root active my-external-class\"\n * ```\n */\nexport { cx };\n"]}