/* ============================================================================
   MTMP 360 — DESIGN SYSTEM CASCADE INDEX (single source of layer order)
   ----------------------------------------------------------------------------
   Epic UX-DS-01 / Story DS-01.02 — @layer cascade.

   PROBLEMA (pre-DS-01.02): Bootstrap + 25 CSS de app + overrides inline peleaban
   especificidad ad-hoc; cualquier primitivo nuevo tenía que ganar la guerra a mano
   (a veces con !important).

   SOLUCIÓN: declarar UNA VEZ el orden de capas. Lo último en el orden gana.
     reset      → vendor/normalize (Bootstrap vive aquí, prioridad MÁS BAJA)
     tokens     → design-system/tokens.css (variables :root, DS-01.01)
     base       → design-system/base.css   (estilos globales base, DS-01.01)
     components → primitivos Components/DesignSystem/* + componentes de app
     utilities  → clases utilitarias (.mt-*, .gap-*, …)
     overrides  → escotilla de último recurso (debe quedar casi vacía)

   Con esto, una regla en `components`/`base`/`tokens` gana a Bootstrap (en `reset`)
   SIN `!important`, porque el orden de @layer manda sobre la especificidad entre
   capas distintas.

   NOTA de cascada CSS: los estilos NO-layered (los <link> de app que aún no se
   movieron a una capa, y el CSS scoped de Blazor *.styles.css) tienen prioridad
   MÁS ALTA que cualquier capa. Por eso sus reglas siguen aplicando intactas
   (regresión cero). DS-01.07 los moverá progresivamente a `components`/`utilities`.
   ============================================================================ */

/* 1) Orden de capas — declaración única (lo único que fija la precedencia). */
@layer reset, tokens, base, components, utilities, overrides;

/* 2) Bootstrap → capa `reset` (prioridad más baja entre las capas).
      Se importa aquí en vez de via <link> para poder asignarlo a una capa. */
@import url("../bootstrap/bootstrap.min.css") layer(reset);

/* 3) Tokens canónicos (DS-01.01) → capa `tokens`. */
@import url("tokens.css") layer(tokens);

/* 3a) Paleta "refined" del rebrand (UX-DS-07) → capa `tokens`.
      C-20 / fase 3d — hasta ahora se cargaba con un <link> SUELTO en _Layout.cshtml, es decir
      FUERA del sistema de capas. Un estilo no-layered gana a CUALQUIER capa, así que estas
      variables ganaban a todo sin que nadie lo hubiera decidido: era el corazón del conflicto
      de paletas D-0, y no por su contenido sino por dónde se cargaba. Metido aquí, participa de
      la cascada como el resto y la decisión de qué paleta manda vuelve a ser una decisión.
      Se importa ANTES que tokens.css a propósito: hoy solo DECLARA variables --mtmp-*, no
      sobreescribe ninguna --med-*, así que el orden no cambia nada visual; cuando D-0 se cierre,
      el orden importará y este es el correcto. */
@import url("tokens-mtmp.css") layer(tokens);

/* 3b) Diccionario estado → color (goal polish-m1-estructural, fase 2) → capa `tokens`.
      Vive en su propio archivo, no dentro de tokens.css, para que el mapa completo
      "qué estado es de qué color" se lea de un vistazo y se audite sin buscar entre
      300 variables de tipografía, espaciado y sombra. Depende de tokens.css: solo
      contiene alias, ningún hex propio. */
@import url("state-tokens.css") layer(tokens);

/* 3c) Tokens de densidad de celda + alineación de cifras (goal polish-m1-adopcion, F1) →
      capa `tokens`. Colapsa las cuatro densidades ad-hoc del módulo en tres escalones
      nombrados, y trae las utilidades .is-numeric / .is-date con cifras tabulares. Como
      state-tokens.css: solo medidas, ningún hex propio (FD-01). */
@import url("density-tokens.css") layer(tokens);

/* 4) Estilos base globales (DS-01.01) → capa `base`. */
@import url("base.css") layer(base);

/* 4a) Defaults de Card + KPI (promoción del patrón AEP a nivel proyecto,
      2026-08-05) → capa `components`. Aplica border/shadow/rounding suaves
      a todas las `.card` y expone las primitivas `.kpi-strip / .kpi-card /
      .kpi-icon / .kpi-label / .kpi-value / .kpi-sub / .kpi-tint-*` para
      cualquier surface nueva. Detalles del rationale en el propio archivo. */
@import url("cards.css") layer(components);

/* 4b) DM catalog / event page shared primitives (Request Center rollout
      2026-08-10) → capa `components`. Expone `.dm-btn-primary /
      .dm-btn-secondary / .dm-catalog-table / .dm-catalog-row` para que
      cualquier catálogo / evento de DM se pinte con el mismo look
      "refined" sin duplicar CSS en `.razor.css`. Piloto: Requests +
      Tools; el resto sigue en el PR de propagación (Suppliers, CFN,
      Parts, Audits, Sustaining, ChangeRequests). */
@import url("dm-catalog.css") layer(components);

/* 5) UX-DS-02.03 — los 2 hotfixes amplios (antes <link> sueltos en _Layout, no-layered,
      372 !important) se pliegan a la capa `overrides` (la de mayor precedencia entre capas).
      Se preserva su orden de carga original (create-project-hotfix ANTES de visual-polish, para
      que visual-polish gane los conflictos como antes). Con esto salen de la cascada no-layered
      y participan del @layer cascade; el conteo de <link> en _Layout baja en 2. Verificado con
      diff visual + computed styles de CreateProject (regresión cero). */
@import url("../create-project-hotfix.css") layer(overrides);
@import url("../visual-polish-2026.css") layer(overrides);
