/* PLENAJUR® Design Tokens — fonte única oficial do ecossistema. */
/* Componentes consomem apenas tokens semânticos; temas sobrescrevem esta camada. */

:root,
[data-plj-theme="institutional"] {
  color-scheme: light;

  /* Cores primitivas */
  --plj-palette-navy-950: #031524;
  --plj-palette-navy-900: #061d31;
  --plj-palette-navy-800: #0b2742;
  --plj-palette-navy-700: #123a60;
  --plj-palette-blue-500: #586fd6;
  --plj-palette-gold-700: #9e7621;
  --plj-palette-gold-600: #b98d2f;
  --plj-palette-gold-500: #cfa646;
  --plj-palette-gold-400: #d9b85f;
  --plj-palette-gold-300: #e8d28c;
  --plj-palette-neutral-0: #ffffff;
  --plj-palette-neutral-50: #faf9f6;
  --plj-palette-neutral-100: #f5f2ea;
  --plj-palette-neutral-200: #e8e3d8;
  --plj-palette-neutral-300: #ccd5df;
  --plj-palette-neutral-500: #748195;
  --plj-palette-neutral-700: #394656;
  --plj-palette-neutral-900: #132238;
  --plj-palette-green-600: #246849;
  --plj-palette-green-500: #2f8a62;
  --plj-palette-amber-600: #a66c12;
  --plj-palette-amber-500: #d49a2e;
  --plj-palette-red-600: #9d342d;
  --plj-palette-red-500: #c84b42;
  --plj-palette-cyan-600: #276b89;
  --plj-palette-cyan-500: #3c8faf;
  --plj-color-transparent: transparent;
  --plj-color-current: currentColor;

  /* Cores semânticas preparadas para temas */
  --plj-color-brand-primary: var(--plj-palette-navy-900);
  --plj-color-brand-primary-strong: var(--plj-palette-navy-950);
  --plj-color-brand-primary-soft: var(--plj-palette-navy-800);
  --plj-color-brand-accent: var(--plj-palette-gold-500);
  --plj-color-brand-accent-hover: var(--plj-palette-gold-400);
  --plj-color-brand-accent-subtle: var(--plj-palette-gold-300);
  --plj-color-surface-canvas: var(--plj-palette-neutral-100);
  --plj-color-surface-default: var(--plj-palette-neutral-0);
  --plj-color-surface-subtle: var(--plj-palette-neutral-50);
  --plj-color-surface-raised: var(--plj-palette-neutral-0);
  --plj-color-text-primary: var(--plj-palette-neutral-900);
  --plj-color-text-secondary: var(--plj-palette-neutral-700);
  --plj-color-text-muted: var(--plj-palette-neutral-500);
  --plj-color-text-inverse: var(--plj-palette-neutral-0);
  --plj-color-text-accent: var(--plj-palette-gold-700);
  --plj-color-border-subtle: var(--plj-palette-neutral-200);
  --plj-color-border-default: var(--plj-palette-neutral-300);
  --plj-color-border-strong: var(--plj-palette-neutral-500);
  --plj-color-overlay: rgb(3 21 36 / 64%);
  --plj-color-scrim: rgb(3 21 36 / 82%);

  /* Estados e feedback */
  --plj-color-success: var(--plj-palette-green-600);
  --plj-color-success-hover: var(--plj-palette-green-500);
  --plj-color-success-surface: color-mix(in srgb, var(--plj-color-success) 12%, var(--plj-color-surface-default));
  --plj-color-warning: var(--plj-palette-amber-600);
  --plj-color-warning-hover: var(--plj-palette-amber-500);
  --plj-color-warning-surface: color-mix(in srgb, var(--plj-color-warning) 12%, var(--plj-color-surface-default));
  --plj-color-danger: var(--plj-palette-red-600);
  --plj-color-danger-hover: var(--plj-palette-red-500);
  --plj-color-danger-surface: color-mix(in srgb, var(--plj-color-danger) 12%, var(--plj-color-surface-default));
  --plj-color-info: var(--plj-palette-cyan-600);
  --plj-color-info-hover: var(--plj-palette-cyan-500);
  --plj-color-info-surface: color-mix(in srgb, var(--plj-color-info) 12%, var(--plj-color-surface-default));
  --plj-color-focus: var(--plj-color-brand-accent);
  --plj-color-hover-surface: color-mix(in srgb, var(--plj-color-brand-accent) 10%, var(--plj-color-surface-default));
  --plj-color-disabled-surface: var(--plj-palette-neutral-200);
  --plj-color-disabled-text: var(--plj-palette-neutral-500);
  --plj-color-loading-track: var(--plj-palette-neutral-200);
  --plj-color-loading-indicator: var(--plj-color-brand-accent);

  /* Tipografia */
  --plj-font-family-sans: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --plj-font-family-display: Georgia, "Times New Roman", serif;
  --plj-font-family-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --plj-font-size-2xs: 0.6875rem;
  --plj-font-size-xs: 0.75rem;
  --plj-font-size-sm: 0.875rem;
  --plj-font-size-md: 1rem;
  --plj-font-size-lg: 1.125rem;
  --plj-font-size-xl: 1.25rem;
  --plj-font-size-2xl: 1.5rem;
  --plj-font-size-3xl: 2rem;
  --plj-font-size-4xl: 2.5rem;
  --plj-font-size-5xl: 3rem;
  --plj-font-weight-regular: 400;
  --plj-font-weight-medium: 500;
  --plj-font-weight-semibold: 600;
  --plj-font-weight-bold: 700;
  --plj-line-height-tight: 1.15;
  --plj-line-height-heading: 1.25;
  --plj-line-height-body: 1.5;
  --plj-line-height-relaxed: 1.7;
  --plj-letter-spacing-tight: -0.02em;
  --plj-letter-spacing-normal: 0;
  --plj-letter-spacing-wide: 0.04em;

  /* Espaçamento — escala de 4px */
  --plj-space-0: 0;
  --plj-space-0-5: 0.125rem;
  --plj-space-1: 0.25rem;
  --plj-space-1-5: 0.375rem;
  --plj-space-2: 0.5rem;
  --plj-space-2-5: 0.625rem;
  --plj-space-3: 0.75rem;
  --plj-space-4: 1rem;
  --plj-space-5: 1.25rem;
  --plj-space-6: 1.5rem;
  --plj-space-8: 2rem;
  --plj-space-10: 2.5rem;
  --plj-space-12: 3rem;
  --plj-space-16: 4rem;
  --plj-space-20: 5rem;
  --plj-space-24: 6rem;
  --plj-space-32: 8rem;

  /* Radius */
  --plj-radius-none: 0;
  --plj-radius-xs: 0.25rem;
  --plj-radius-sm: 0.375rem;
  --plj-radius-md: 0.75rem;
  --plj-radius-lg: 1.25rem;
  --plj-radius-xl: 1.5rem;
  --plj-radius-full: 9999px;

  /* Shadow e elevação */
  --plj-shadow-none: none;
  --plj-shadow-xs: 0 1px 2px rgb(3 21 36 / 6%);
  --plj-shadow-sm: 0 4px 12px rgb(3 21 36 / 8%);
  --plj-shadow-md: 0 12px 30px rgb(3 21 36 / 12%);
  --plj-shadow-lg: 0 20px 60px rgb(3 21 36 / 16%);
  --plj-shadow-xl: 0 30px 80px rgb(3 21 36 / 22%);
  --plj-elevation-0: var(--plj-shadow-none);
  --plj-elevation-1: var(--plj-shadow-xs);
  --plj-elevation-2: var(--plj-shadow-sm);
  --plj-elevation-3: var(--plj-shadow-md);
  --plj-elevation-4: var(--plj-shadow-lg);
  --plj-elevation-5: var(--plj-shadow-xl);

  /* Transições e microanimações */
  --plj-duration-instant: 0ms;
  --plj-duration-fast: 140ms;
  --plj-duration-normal: 220ms;
  --plj-duration-slow: 480ms;
  --plj-easing-standard: cubic-bezier(0.2, 0, 0, 1);
  --plj-easing-enter: cubic-bezier(0, 0, 0.2, 1);
  --plj-easing-exit: cubic-bezier(0.4, 0, 1, 1);
  --plj-transition-color: color var(--plj-duration-fast) var(--plj-easing-standard), background-color var(--plj-duration-fast) var(--plj-easing-standard), border-color var(--plj-duration-fast) var(--plj-easing-standard);
  --plj-transition-interactive: transform var(--plj-duration-fast) var(--plj-easing-standard), box-shadow var(--plj-duration-fast) var(--plj-easing-standard), var(--plj-transition-color);
  --plj-transition-layout: width var(--plj-duration-normal) var(--plj-easing-standard), height var(--plj-duration-normal) var(--plj-easing-standard);

  /* Opacidade */
  --plj-opacity-invisible: 0;
  --plj-opacity-disabled: 0.48;
  --plj-opacity-muted: 0.68;
  --plj-opacity-visible: 1;

  /* Z-index */
  --plj-z-base: 0;
  --plj-z-raised: 10;
  --plj-z-sticky: 100;
  --plj-z-dropdown: 300;
  --plj-z-overlay: 500;
  --plj-z-modal: 700;
  --plj-z-toast: 900;
  --plj-z-tooltip: 1000;

  /* Breakpoints (consumo por JS e documentação; media queries usam os mesmos valores) */
  --plj-breakpoint-xs: 30rem;
  --plj-breakpoint-sm: 40rem;
  --plj-breakpoint-md: 48rem;
  --plj-breakpoint-lg: 64rem;
  --plj-breakpoint-xl: 80rem;
  --plj-breakpoint-2xl: 96rem;

  /* Containers */
  --plj-container-xs: 30rem;
  --plj-container-sm: 40rem;
  --plj-container-md: 48rem;
  --plj-container-lg: 64rem;
  --plj-container-xl: 80rem;
  --plj-container-2xl: 90rem;
  --plj-container-gutter: var(--plj-space-6);

  /* Focus, hover, disabled e loading */
  --plj-focus-width: 0.1875rem;
  --plj-focus-offset: 0.125rem;
  --plj-focus-ring: 0 0 0 var(--plj-focus-width) color-mix(in srgb, var(--plj-color-focus) 45%, transparent);
  --plj-hover-translate-y: -0.0625rem;
  --plj-disabled-cursor: not-allowed;
  --plj-loading-size-sm: 1rem;
  --plj-loading-size-md: 1.5rem;
  --plj-loading-size-lg: 2rem;
  --plj-loading-stroke: 0.1875rem;

  /* Aliases compatíveis */
  --plj-color-navy-950: var(--plj-palette-navy-950);
  --plj-color-navy-900: var(--plj-palette-navy-900);
  --plj-color-gold-500: var(--plj-palette-gold-500);
  --plj-color-gold-400: var(--plj-palette-gold-400);
  --plj-color-white: var(--plj-palette-neutral-0);
  --plj-color-gray-100: var(--plj-palette-neutral-100);
  --plj-color-gray-300: var(--plj-palette-neutral-300);
  --plj-color-gray-700: var(--plj-palette-neutral-700);
  --plj-font-sans: var(--plj-font-family-sans);
  --plj-font-serif: var(--plj-font-family-display);
  --plj-shadow-soft: var(--plj-shadow-lg);
}

[data-plj-theme="dark"] {
  color-scheme: dark;
  --plj-color-surface-canvas: var(--plj-palette-navy-950);
  --plj-color-surface-default: var(--plj-palette-navy-900);
  --plj-color-surface-subtle: var(--plj-palette-navy-800);
  --plj-color-surface-raised: var(--plj-palette-navy-700);
  --plj-color-text-primary: var(--plj-palette-neutral-0);
  --plj-color-text-secondary: var(--plj-palette-neutral-300);
  --plj-color-text-muted: var(--plj-palette-neutral-500);
  --plj-color-border-subtle: color-mix(in srgb, var(--plj-palette-neutral-0) 10%, transparent);
  --plj-color-border-default: color-mix(in srgb, var(--plj-palette-neutral-0) 18%, transparent);
  --plj-color-hover-surface: color-mix(in srgb, var(--plj-color-brand-accent) 12%, var(--plj-color-surface-default));
  --plj-color-disabled-surface: color-mix(in srgb, var(--plj-palette-neutral-0) 8%, transparent);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --plj-duration-fast: var(--plj-duration-instant);
    --plj-duration-normal: var(--plj-duration-instant);
    --plj-duration-slow: var(--plj-duration-instant);
  }
}
