/* ============================================================
   EMMA C2C — Design Tokens
   Curriculum-to-Credentials Engine by Think! Design and Planning
   
   All values are overwritten at runtime from branding.json.
   These defaults are the CAES Landscape Architecture skin.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,600&display=swap');

:root {
  /* ── Brand Colors (injected from branding.json) ── */
  --theme-primary: #004684;
  --theme-primary-rgb: 0, 70, 132;
  --theme-secondary: #fdb927;
  --theme-secondary-rgb: 253, 185, 39;
  --theme-bg: #F0F2F5;
  --theme-surface: #FFFFFF;
  --theme-text-primary: #1A1A2E;
  --theme-text-secondary: #555770;

  /* ── Category Colors (injected from branding.json) ── */
  --cat-purpose: #2563EB;
  --cat-purpose-rgb: 37, 99, 235;
  --cat-communities: #059669;
  --cat-communities-rgb: 5, 150, 105;
  --cat-localglobal: #D97706;
  --cat-localglobal-rgb: 217, 119, 6;
  --cat-identity: #7C3AED;
  --cat-identity-rgb: 124, 58, 237;

  /* ── Typography ── */
  --font-primary: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-scale-xs: 0.6875rem;   /* 11px */
  --font-scale-sm: 0.8125rem;   /* 13px */
  --font-scale-base: 0.9375rem; /* 15px */
  --font-scale-lg: 1.125rem;    /* 18px */
  --font-scale-xl: 1.5rem;      /* 24px */
  --font-scale-2xl: 2rem;       /* 32px */
  --font-scale-3xl: 2.5rem;     /* 40px */
  --font-weight-light: 300;
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-black: 900;

  /* ── Spacing ── */
  --space-2xs: 0.25rem;  /* 4px */
  --space-xs: 0.5rem;    /* 8px */
  --space-sm: 0.75rem;   /* 12px */
  --space-md: 1rem;      /* 16px */
  --space-lg: 1.5rem;    /* 24px */
  --space-xl: 2rem;      /* 32px */
  --space-2xl: 3rem;     /* 48px */
  --space-3xl: 4rem;     /* 64px */

  /* ── Radius ── */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --radius-xl: 20px;
  --radius-2xl: 28px;
  --radius-full: 9999px;

  /* ── Shadows ── */
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);
  --shadow-lg: 0 10px 32px rgba(0, 0, 0, 0.1);
  --shadow-xl: 0 20px 48px rgba(0, 0, 0, 0.14);
  --shadow-glow-primary: 0 0 24px rgba(var(--theme-primary-rgb), 0.25);
  --shadow-glow-secondary: 0 0 24px rgba(var(--theme-secondary-rgb), 0.3);

  /* ── Glass ── */
  --glass-bg: rgba(255, 255, 255, 0.7);
  --glass-bg-strong: rgba(255, 255, 255, 0.88);
  --glass-blur: blur(16px);
  --glass-blur-strong: blur(24px);
  --glass-border: 1px solid rgba(255, 255, 255, 0.3);

  /* ── Transitions ── */
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
  --ease-spring: cubic-bezier(0.4, 0, 0.2, 1);
  --duration-fast: 150ms;
  --duration-normal: 250ms;
  --duration-slow: 400ms;
  --duration-slower: 600ms;

  /* ── Z-Index Scale ── */
  --z-base: 1;
  --z-panel: 10;
  --z-header: 50;
  --z-overlay: 80;
  --z-modal: 100;
  --z-toast: 120;

  /* ── Layout ── */
  --header-height: 64px;
  --utility-panel-width: 340px;
  --validation-panel-width: 360px;
  --utility-rail-width: 64px;
}

/* ── Base Reset ── */
*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  height: 100%;
  overflow: hidden;
}

body {
  font-family: var(--font-primary);
  font-size: var(--font-scale-base);
  font-weight: var(--font-weight-regular);
  color: var(--theme-text-primary);
  background-color: var(--theme-bg);
  line-height: 1.6;
  height: 100%;
  overflow: hidden;
  margin: 0;
}

/* ── Utility Classes ── */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
