{
  "_nota": "Fuente única de verdad de design tokens de Viceversable. Cualquier cambio de color o tipografía se hace SOLO aquí. build_bi.py y build_riders.py inyectan estos tokens automáticamente en los HTML.",
  "_reglas": "sistema-de-color.md (reglas de uso, no valores)",
  "_actualizado": "2026-05-11",
  "_wcag_nota": "Rampa principal actualizada: background #F7F5F3, surface #F1ECE9, accent-soft #D0B3FF, accent #A179FF, accent-deep #8253F0, foreground #1B071F. Familias semánticas lima/teal/yellow/naranja/rosa conservan sus valores.",
  "_regla_opacidades": "Opacidades SOLO para: (1) fondos de pills/chips/icon-circles (6–15%), (2) borders/strokes de contenedores (10–22%), (3) shadows/glows (8–25%), (4) hover overlays (6%), (5) texto decorativo/footer (30–50%). TODO lo demás — texto legible, iconos funcionales, indicadores, superficies, CTAs — usa el color SÓLIDO de paleta. NUNCA inventar hexes fuera de paleta; si se necesita un tono muted, usar opacidad del token más cercano. PILLS/CHIPS: sin borde — solo fondo semántico + texto.",
  "_regla_logo": "El logo de Viceversable (wordmark o isotipo) SIEMPRE al 100% de opacidad. Sin excepciones. No usar opacity, filter, o color con opacidad reducida sobre el logo.",
  "_regla_emojis": "La identidad visual de Viceversable nunca usa emojis. Están prohibidos en navegación, títulos, CTAs, badges, estados, celebraciones, dashboards, apps, webs, presentaciones y documentos de marca. Si se necesita apoyo visual, usar iconografía del sistema o SVGs consistentes.",

  "palette": {
    "background": "#F7F5F3",
    "surface":    "#F1ECE9",
    "accent-soft":"#D0B3FF",
    "accent":     "#A179FF",
    "accent-deep":"#8253F0",
    "foreground": "#1B071F",

    "blanco":  "#FFFFFF",
    "hueso":   "#F7F5F3",
    "arena":   "#F1ECE9",
    "malva":   "#D0B3FF",
    "lila":    "#D0B3FF",
    "purpura": "#A179FF",
    "morado":  "#8253F0",
    "real":    "#8253F0",
    "violeta": "#1B071F",
    "street":  "#1B071F",

    "teal-tint":    "#E5F8F7",
    "teal-base":    "#7AE2DB",
    "teal-mid":     "#1CA89F",

    "lima-tint":    "#F0F8D6",
    "lima-base":    "#C4EA60",
    "lima-mid":     "#91B80E",

    "yellow-tint":  "#FFFFC3",
    "yellow-base":  "#F6F66E",
    "yellow-mid":   "#C5C53A",

    "naranja-tint": "#FFF1E9",
    "naranja-base": "#FF8965",
    "naranja-mid":  "#E1562C",

    "rosa-tint":    "#FFECF5",
    "rosa-base":    "#FF729E",
    "rosa-mid":     "#C21D50"
  },

  "typography": {
    "font-body":    "'Geist', sans-serif",
    "font-display": "'Instrument Serif', serif",
    "font-style-serif": "normal",

    "_fonts_nota": "font-body (Geist 300-700): H4-H6, body, UI, labels, navegación — la voz funcional. font-display (Instrument Serif): Display, H1-H3, wordmark — la voz editorial. Display siempre italic. Clase utilitaria .text-serif-italic para mezclar Instrument italic en cualquier línea.",
    "_google_fonts": "https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=Instrument+Serif:ital@0;1&display=swap",

    "_escala_nota": "Escala modular Major Third (ratio 1.250). Tipografía fluida con clamp(). Piso: 320px viewport / 16px base. Techo: 1240px viewport / 18px base.",
    "_escala_formula": "S_n = Base × 1.250^n — preferred = intercept_rem + slope_vw",

    "text-small":   "clamp(0.64rem, 0.612rem + 0.139vw, 0.72rem)",
    "text-h6":      "clamp(0.8rem, 0.765rem + 0.174vw, 0.9rem)",
    "text-body":    "clamp(1rem, 0.957rem + 0.217vw, 1.125rem)",
    "text-h5":      "clamp(1rem, 0.957rem + 0.217vw, 1.125rem)",
    "text-h4":      "clamp(1.25rem, 1.196rem + 0.272vw, 1.406rem)",
    "text-h3":      "clamp(1.563rem, 1.495rem + 0.340vw, 1.758rem)",
    "text-h2":      "clamp(1.953rem, 1.868rem + 0.425vw, 2.197rem)",
    "text-h1":      "clamp(2.441rem, 2.335rem + 0.531vw, 2.747rem)",
    "text-display": "clamp(3.052rem, 2.919rem + 0.663vw, 3.433rem)",

    "_roles": {
      "display":     "font-display italic (fijo), text-display, fw-regular, lh-display, ls-display — saludo, hero editorial",
      "display-kpi": "font-display regular, text-display, fw-regular, lh-display, ls-kpi — números hero KPI",
      "h1":          "font-display regular, text-h1, fw-regular, lh-heading, ls-heading — título de página",
      "h2":          "font-display regular, text-h2, fw-regular, lh-heading, ls-heading — sección principal",
      "h3":          "font-display regular, text-h3, fw-regular, lh-heading — subsección",
      "h4":          "font-body, text-h4, fw-semibold, lh-subhead — título de card",
      "h5":          "font-body, text-h5 (=text-body), fw-semibold, lh-subhead — agrupador interno",
      "h6":          "font-body, text-h6, fw-semibold, lh-subhead — label funcional",
      "overline":    "font-body, text-small, fw-bold, uppercase, ls-overline — encabezados de tabla",
      "body":        "font-body, text-body, fw-light (300), lh-body — lectura principal",
      "body-sec":    "font-body, text-body, fw-regular (400), lh-body — texto secundario",
      "small":       "font-body, text-small, fw-light (300) — metadata, timestamps, hints",
      "badge":       "font-body, text-small, fw-medium, uppercase, ls-badge — chips de fase, status. Sin borde. Solo fondo de color semántico + texto.",
      "kpi-label":   "font-body, text-small, fw-semibold, uppercase, ls-badge — descriptores bajo KPI",
      "nav":         "font-body, text-h6, fw-light (300) / fw-medium (activo) — navegación",
      "wordmark":    "font-display italic (fijo), text-h3, fw-regular — logo tipográfico app"
    },

    "_utility_classes": {
      "text-serif-italic": "font-family: font-display, font-style: italic — mezclar Instrument Serif italic en cualquier línea sin afectar peso"
    },

    "fw-light":     "300",
    "fw-regular":   "400",
    "fw-medium":    "500",
    "fw-semibold":  "600",
    "fw-bold":      "700",

    "lh-display":   "1.05",
    "lh-heading":   "1.15",
    "lh-subhead":   "1.3",
    "lh-body":      "1.55",

    "ls-display":   "-0.03em",
    "ls-heading":   "-0.02em",
    "ls-badge":     "0.14em",
    "ls-kpi":       "0.05em",
    "ls-overline":  "0.20em",
    "ls-overline-compact": "0.06em"
  },

  "ui": {
    "light": {
      "bg":             "var(--hueso)",
      "surface":        "var(--arena)",
      "raised":         "var(--blanco)",
      "txt-dark":       "var(--violeta)",
      "txt-mid":        "rgba(27,7,31,0.62)",
      "txt-muted":      "rgba(27,7,31,0.40)",
      "muted":          "rgba(27,7,31,0.40)",
      "border":         "rgba(27,7,31,0.07)",
      "border-l":       "rgba(27,7,31,0.10)",
      "nav-bg":         "var(--blanco)",
      "nav-text":       "rgba(27,7,31,0.42)",
      "nav-active":     "var(--violeta)",
      "nav-hover":      "rgba(27,7,31,0.04)",
      "topbar-bg":      "transparent",
      "topbar-border":  "none",
      "clr-data":       "var(--purpura)"
    },
    "dark": {
      "bg":             "var(--violeta)",
      "surface":        "rgba(247,245,243,0.06)",
      "raised":         "rgba(247,245,243,0.10)",
      "txt-dark":       "#F2EFEC",
      "txt-mid":        "rgba(247,245,243,0.72)",
      "txt-muted":      "rgba(247,245,243,0.52)",
      "muted":          "rgba(247,245,243,0.52)",
      "border":         "rgba(161,121,255,0.10)",
      "border-l":       "rgba(161,121,255,0.16)",
      "nav-bg":         "var(--violeta)",
      "nav-text":       "rgba(255,255,255,0.50)",
      "nav-active":     "#F2EFEC",
      "nav-hover":      "rgba(161,121,255,0.08)",
      "topbar-bg":      "var(--violeta)",
      "topbar-border":  "rgba(161,121,255,0.08)",
      "clr-data":       "#F2EFEC"
    }
  },

  "semantic": {
    "light": {
      "sem-lima":    "var(--lima-mid)",
      "sem-teal":    "var(--teal-mid)",
      "sem-yellow":  "var(--yellow-mid)",
      "sem-naranja": "var(--naranja-mid)",
      "sem-rosa":    "var(--rosa-mid)",

      "sem-lima-bg":    "var(--lima-tint)",
      "sem-lima-bdr":   "rgba(145,184,14,0.30)",
      "sem-yellow-bg":  "var(--yellow-tint)",
      "sem-yellow-bdr": "rgba(213,165,53,0.30)",
      "sem-naranja-bg": "var(--naranja-tint)",
      "sem-naranja-bdr":"rgba(225,86,44,0.25)",
      "sem-rosa-bg":    "var(--rosa-tint)",
      "sem-rosa-bdr":   "rgba(194,29,80,0.25)",
      "sem-purple-bg":  "var(--malva)",
      "sem-purple-bdr": "rgba(161,121,255,0.30)",
      "purpura-subtle": "rgba(161,121,255,0.25)",
      "purpura-fill":   "rgba(161,121,255,0.45)"
    },
    "dark": {
      "sem-lima":    "var(--lima-base)",
      "sem-teal":    "var(--teal-base)",
      "sem-yellow":  "var(--yellow-base)",
      "sem-naranja": "var(--naranja-base)",
      "sem-rosa":    "var(--rosa-base)",

      "sem-lima-bg":    "rgba(196,234,96,0.10)",
      "sem-lima-bdr":   "rgba(196,234,96,0.22)",
      "sem-yellow-bg":  "rgba(255,229,80,0.10)",
      "sem-yellow-bdr": "rgba(255,229,80,0.22)",
      "sem-naranja-bg": "rgba(255,137,101,0.12)",
      "sem-naranja-bdr":"rgba(255,137,101,0.24)",
      "sem-rosa-bg":    "rgba(255,114,158,0.12)",
      "sem-rosa-bdr":   "rgba(255,114,158,0.24)",
      "sem-purple-bg":  "rgba(161,121,255,0.10)",
      "sem-purple-bdr": "rgba(161,121,255,0.22)"
    }
  }
}
