/* ═══════════════════════════════════════
   ▓ COMPONENTE · Navegación pública — gemelo vanilla ▓
   v1.0 · 2026-08-28. Ficha: `design-system/COMPONENTE_NAV_PUBLICA.md`
   Fuente: `exante-git/app/index.html` + `app/css/cotizador.css` (bloques `.nav-*`,
   `.navbar`) + `app/js/cotizador/cotizador-2.js`.

   LA BARRA Y SUS PANELES DE LA LANDING PÚBLICA DEL COTIZADOR (marca · pestañas de
   producto · sesión · CTA de ventas · mega-desplegable de escritorio · hoja de
   teléfono). Es UNA sola pieza (Ricardo, 2026-08-28, decisión 3 de la hoja de
   decisiones): el ☰ no sirve sin el panel que abre.

   ⛔ ES UNA SUPERFICIE OSCURA (`COMPONENTE_SUPERFICIE_OSCURA.md`) — se declara con
   `data-superficie="oscura"` en el `<header>`, nunca se adivina del color de fondo.

   REUSA del catálogo (ver `## Composición` de la ficha):
     · `exds-tabs[data-superficie="oscura"]` + `.exds-tab` + `.exds-tab-thumb` — las
       pestañas de producto y su píldora (`tabs.css`). Esta hoja SÓLO reposiciona el
       contenedor (centrado, transparente); no redeclara su piel.
     · `exds-btn[data-variant="sales"][data-size="sm"]` — «Solicitar».
     · `exds-btn[data-variant="link"][data-size="sm"]` — «Iniciar sesión» en escritorio.
     · `exds-iconbtn exds-iconbtn--ghost` — el ☰ (par ☰/✕ alternado por `aria-expanded`,
       que es composición de esta pieza, no un componente nuevo).
   COSECHA (nuevo en el catálogo, nadie más lo tenía): el marco (`.exds-navp*`), el
   mega-desplegable y la hoja de teléfono.
   CRUDO, declarado: la marca (`.exds-navp-brand`, un `<a><img></a>`) y la fila de
   acciones (`.exds-navp-actions`, un `flex` sin estado propio).

   REQUISITOS DEL ANFITRIÓN:
     1. Los tokens del canon (`colors_and_type.css`).
     2. `box-sizing: border-box`.
     3. Las hojas de `button`, `iconbutton` y `tabs` — esta pieza NO las duplica.
     4. `nav-publica.js` — sin él nada abre: pestañas, ☰, mega-menú y acordeón de
        teléfono son todos JavaScript.
   ═══════════════════════════════════════ */

/* ── EL MARCO ─────────────────────────────────────────────────────────────────
   `--navp-h` es una medida LOCAL de esta pieza (56px en producción), no un token del
   canon: no hay «alto de barra pública» en `colors_and_type.css` porque sólo esta
   barra lo usa. Se declara aquí, respaldada, para que el resto de la hoja no repita
   el número a mano. */
.exds-navp {
  --navp-h: 56px;
  position: fixed; top: 0; left: 0; right: 0; z-index: var(--z-nav, 500);
  background: var(--color-bg-dark, #0F1419);
  border-bottom: 1px solid var(--color-hairline-dark, rgba(255,255,255,0.08));
  transition: background var(--motion-slow, 400ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1)),
              backdrop-filter var(--motion-slow, 400ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1));
}
/* La barra de vidrio al hacer scroll — GATE-ALLOW: box-shadow y backdrop-filter a mano ·
   es la elevación de una barra pegajosa despegándose del contenido, la misma excepción
   que ya tiene `exds-tabs[data-sticky]` (COMPONENTE_TABS.md). */
.exds-navp.is-scrolled {
  background: rgba(15,20,25,0.55);
  backdrop-filter: saturate(220%) blur(28px) brightness(0.95);
  -webkit-backdrop-filter: saturate(220%) blur(28px) brightness(0.95);
  border-bottom: 1px solid var(--color-hairline-dark, rgba(255,255,255,0.08));
  box-shadow: var(--shadow-md, 0 4px 12px -2px rgba(15,20,25,0.06));
}

.exds-navp-inner {
  max-width: 1280px; margin: 0 auto;
  padding: 0 24px; height: var(--navp-h);
  display: flex; align-items: center; gap: 0;
  position: relative;
}
@media (min-width: 1024px){ .exds-navp-inner { padding: 0 40px; } }

/* ── LA MARCA · crudo declarado ──────────────────────────────────────────────
   Un enlace con una imagen. No hay pieza del catálogo para esto: `BrandMark` es del
   Shell (isotipo↔wordmark animado al colapsar la barra LATERAL) y esta es una landing
   pública con logo estático. Envolverlo no añadiría ni una regla. */
.exds-navp-brand { display: flex; align-items: center; text-decoration: none; flex-shrink: 0; }
/* ⛔ 32px, NO 28. Al cosechar la pieza el alto bajo a 28 sin que nadie lo decidiera:
   el marcado viejo lo llevaba en linea (`style="height:32px"`, que gana a la hoja) y al
   pasarlo a la hoja se escribio otro numero. Restaurado el 2026-08-28.
   Y el 32 no es arbitrario: es el valor que Ricardo fijo el 2026-08-07 midiendo el
   CONTRAPESO con el boton «Solicitar» — su altura optica real es 26.8 (trae 5 de sus 61
   px originales en transparencia por lado), lo que contra un boton de 32 da 1.20x.
   Cambiarlo a 28 mueve esa proporcion sin que la decision se haya vuelto a tomar.
   *Una migracion que cambia una medida de paso no esta reproduciendo: esta rediseñando
   sin decirlo.* */
.exds-navp-brand img { height: 32px; display: block; }

/* ── LAS PESTAÑAS DE PRODUCTO · REUSA `exds-tabs`/`exds-tab`/`exds-tab-thumb` ──────
   Esta hoja NO redeclara el color, el hover ni la píldora — eso vive en `tabs.css` bajo
   `[data-superficie="oscura"]`. Sólo cambia dónde se PARA el contenedor dentro de esta
   barra concreta: centrado en vez de pegado a la izquierda, sin el fondo/sombra/padding
   de barra que trae por defecto (aquí el fondo ya lo pone `.exds-navp`). */
.exds-navp-inner > .exds-tabs {
  position: absolute; left: 50%; transform: translateX(-50%);
  background: transparent; border-bottom: none; box-shadow: none; padding: 0;
  z-index: 1;
}
@media (max-width: 767px){ .exds-navp-inner > .exds-tabs { display: none; } }

/* El chevron de cada pestaña — NO existe en el gemelo `tabs` (esas pestañas no abren
   nada); es composición propia de este mega-menú. Gira con SU desplegable, a la
   velocidad del gesto «algo se abrió» (`--motion-fast`), nunca la de un viaje. */
.exds-navp-tab-chevron { transition: transform var(--motion-fast, 120ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1)); flex-shrink: 0; }
.exds-navp .exds-tab[aria-expanded="true"] .exds-navp-tab-chevron { transform: rotate(180deg); }
/* El tab-enlace-directo (Soporte) es un <a>: sin esto el navegador le pone su propio
   subrayado, que ninguna pestaña de esta barra lleva. */
.exds-navp .exds-tab { text-decoration: none; }

/* ── LA FILA DE ACCIONES · crudo declarado ─────────────────────────────────────
   Un contenedor flex con gap y margin-left:auto. No hay pieza de «fila de acciones»
   y no debería haberla: es composición, no componente. */
.exds-navp-actions { display: flex; align-items: center; gap: var(--space-4, 16px); margin-left: auto; }
/* ⛔ EN TELÉFONO «SOLICITAR» SE QUEDA EN LA BARRA (Ricardo, 2026-08-07). La barra lleva
   marca · Solicitar · ☰; «Iniciar sesión» baja al menú como botón secundario. NO SE
   CAMBIA: es la razón de que el CTA de conversión se vea sin abrir nada. */
@media (max-width: 767px){
  .exds-navp-actions { gap: var(--space-2, 8px); margin-left: auto; }
  .exds-navp-actions .exds-btn[data-variant="link"] { display: none; }
}

/* ── EL ☰ · REUSA `exds-iconbtn exds-iconbtn--ghost` ─────────────────────────────
   El par ☰/✕ vive aquí (dos svg alternados por `aria-expanded`, sin JS que inyecte
   marcado) — es composición de esta pieza, no un componente nuevo. */
.exds-navp-ham { display: none; flex-shrink: 0; }
.exds-navp-ham .exds-navp-ham-cerrar { display: none; }
.exds-navp-ham[aria-expanded="true"] .exds-navp-ham-abrir { display: none; }
.exds-navp-ham[aria-expanded="true"] .exds-navp-ham-cerrar { display: block; }
@media (max-width: 767px){ .exds-navp-ham { display: inline-flex; } }
/* Zona de dedo del ☰: se ve del tamaño del icon-button, se toca como de 44. Cosechada
   de `cotizador.css` (`@media(pointer:coarse)`), y aquí SÓLO para esta instancia — el
   gemelo `iconbutton` es genérico y no todos sus usos son un disparador de navegación
   de página completa que merezca ese piso de toque. */
@media (pointer: coarse) {
  .exds-navp-ham { position: relative; }
  .exds-navp-ham::after {
    content: ''; position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%); width: max(100%, 44px); height: max(100%, 44px);
  }
}

/* ── EL MEGA-DESPLEGABLE DE ESCRITORIO · COSECHA (nuevo en el catálogo) ────────────
   `exds-menu` es una columna cabecera·cuerpo·pie; esto es un panel de varias columnas
   con títulos — otra anatomía, no una variante. */
.exds-navp-dropdown {
  position: absolute; top: var(--navp-h); left: 0; right: 0;
  background: var(--color-surface, #FFFFFF);
  border-bottom: 1px solid var(--color-border-default, #D1D5DB);
  box-shadow: var(--shadow-md, 0 4px 12px -2px rgba(15,20,25,0.06));
  /* Crece de ALTO, no se estira (mismo papel que el Acordeón: `grid-template-rows`
     nunca deforma el contenido de dentro). */
  display: grid; grid-template-rows: 0fr;
  opacity: 0; pointer-events: none; overflow: hidden;
  transition: grid-template-rows var(--motion-fast, 120ms) var(--ease-exit, cubic-bezier(0.4,0,1,1)),
              opacity var(--motion-fast, 120ms) var(--ease-exit, cubic-bezier(0.4,0,1,1)),
              box-shadow var(--motion-fast, 120ms) var(--ease-exit, cubic-bezier(0.4,0,1,1));
}
.exds-navp-dropdown.open {
  grid-template-rows: 1fr; opacity: 1; pointer-events: auto;
  box-shadow: var(--shadow-md, 0 4px 12px -2px rgba(15,20,25,0.06));
  transition: grid-template-rows var(--motion-base, 250ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1)),
              opacity var(--motion-base, 250ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1)),
              box-shadow var(--motion-base, 250ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1));
}
@media (max-width: 767px){ .exds-navp-dropdown { display: none; } }

.exds-navp-dropdown-inner { max-width: 1280px; margin: 0 auto; padding: 40px 24px; overflow: hidden; min-height: 0; }
@media (min-width: 1024px){ .exds-navp-dropdown-inner { padding: 40px 40px; } }

.exds-navp-panel { display: none; }
.exds-navp-panel.active { display: block; }
/* El panel VIEJO se apaga primero (rápido, salida) y el nuevo entra después: el marco
   persiste y sólo cruza lo de dentro, cuando se cambia de menú sin cerrar. */
.exds-navp-panel.saliendo {
  display: block; opacity: 0; transform: translateY(-4px);
  transition: opacity var(--motion-fast, 120ms) var(--ease-exit, cubic-bezier(0.4,0,1,1)),
              transform var(--motion-fast, 120ms) var(--ease-exit, cubic-bezier(0.4,0,1,1));
}
.exds-navp-dropdown.open .exds-navp-panel.active .exds-navp-col {
  animation: navpPanelIn var(--motion-base, 250ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1)) backwards;
}
.exds-navp-dropdown.open .exds-navp-panel.active .exds-navp-col:nth-child(2) { animation-delay: 30ms; }
.exds-navp-dropdown.open .exds-navp-panel.active .exds-navp-col:nth-child(3) { animation-delay: 60ms; }
@keyframes navpPanelIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

.exds-navp-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-12, 48px); }
/* ⛔ 600, NO 700. La escala del canon llega a `--fw-semibold` (600) y NO existe un
   `--fw-bold`. El 700 venia copiado fiel de la barra vieja, donde era deuda LOCAL; al
   cosecharla se habria promovido a canon, y toda pantalla que monte esta pieza lo
   heredaria. Es la regla de oro del gobierno al reves: el handoff se acopla al catalogo,
   no el catalogo al handoff. Homologado el 2026-08-28. */
.exds-navp-col-heading { font-size: var(--fs-body, 14px); font-weight: var(--fw-semibold, 600); color: var(--fg1, #0F1419); margin: 0 0 16px; padding: 0; }
.exds-navp-link {
  display: block; font-size: var(--fs-body, 14px); color: var(--fg3, #5C6B7A);
  line-height: 1.5; margin-bottom: var(--space-3, 12px); text-decoration: none;
  transition: color var(--motion-fast, 120ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1));
}
.exds-navp-link:hover, .exds-navp-col-heading:hover { color: var(--fg1, #0F1419); }

/* ── LA HOJA DE TELÉFONO · COSECHA + REUSA CLASES de `COMPONENTE_ACORDEON` ─────────
   ⛔ HOMOLOGADO 2026-08-28 (A-3/A-4, `homologacion/cotizador.md`). Antes esta hoja
   reusaba la REGLA (apertura única) pero redibujaba las clases con nombre propio
   (`.exds-navp-mobile-toggle/-chevron/-content/-content-in`) — una segunda
   implementación del mismo acordeón. Ahora usa las clases canónicas `.exds-acc-*`,
   que ya viven en `cotizador.css` y se cargan en la misma página, con el estado en
   las DOS señales que el Acordeón exige: `data-open` en la tarjeta y `aria-expanded`
   en la cabecera, escritas siempre juntas (ver `patrones/acordeon-faq/acordeon-faq.js`
   § `poner()`).
   ⛔ VAN ESCOPADAS bajo `.exds-navp-mobile`: `cotizador.css` declara las MISMAS clases
   sueltas para su modo guiado (tarjeta con borde+sombra, cabecera partida en dos
   botones hermanos) y se carga DESPUÉS de esta hoja — sin el ámbito, esas reglas
   pintarían aquí un marco que esta hoja nunca ha tenido. `.exds-navp-mobile-*` sigue
   vivo para lo que NO es el acordeón: el panel entero (que abre y cierra por su
   cuenta, no es una tarjeta), sus columnas y sus enlaces — declarado en el Mapa de
   `COMPONENTE_ACORDEON.md`. */
.exds-navp-mobile {
  display: none;
  position: absolute; top: var(--navp-h); left: 0; right: 0;
  background: var(--color-surface, #FFFFFF);
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows var(--motion-fast, 120ms) var(--ease-exit, cubic-bezier(0.4,0,1,1));
}
.exds-navp-mobile.open { border-top: 1px solid var(--color-border-default, #D1D5DB); }
.exds-navp-mobile.open {
  grid-template-rows: 1fr;
  box-shadow: var(--shadow-md, 0 4px 12px -2px rgba(15,20,25,0.06));
  transition: grid-template-rows var(--motion-base, 250ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1));
}
.exds-navp-mobile > * { overflow: hidden; min-height: 0; }
/* Altura máxima del panel de teléfono: 80vh — y vive en el HIJO, no en `.exds-navp-mobile`
   (medido en producción: en el padre no tiene efecto porque el padre crece con `grid-rows`). */
.exds-navp-mobile.open > * { overflow-y: auto; max-height: 80vh; }
@media (max-width: 767px){ .exds-navp-mobile { display: grid; } }

.exds-navp-mobile-inner { padding: 0; }
.exds-navp-mobile.open .exds-navp-mobile-inner { padding-bottom: 4px; }
.exds-navp-mobile .exds-acc-card { border-bottom: 1px solid var(--color-border-subtle, #E5E7EB); }
.exds-navp-mobile .exds-acc-h {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-3, 12px);
  width: 100%; padding: 16px 20px; background: none; border: none;
  font-size: var(--fs-body, 14px); font-weight: var(--fw-medium, 500); color: var(--fg1, #0F1419);
  cursor: pointer; font-family: inherit; text-align: left;
  transition: background var(--motion-fast, 120ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1));
}
.exds-navp-mobile .exds-acc-card[data-open="true"] .exds-acc-h { background: var(--color-bg-subtle, #F2F4F6); }
.exds-navp-mobile .exds-acc-chev {
  transition: transform var(--motion-base, 250ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1));
  flex-shrink: 0; color: var(--fg3, #5C6B7A);
}
.exds-navp-mobile .exds-acc-card[data-open="true"] .exds-acc-chev { transform: rotate(180deg); }
.exds-navp-mobile .exds-acc-body {
  display: grid; grid-template-rows: 0fr; background: var(--color-bg-subtle, #F2F4F6);
  transition: grid-template-rows var(--motion-base, 250ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1));
}
.exds-navp-mobile .exds-acc-card[data-open="true"] .exds-acc-body { grid-template-rows: 1fr; }
.exds-navp-mobile .exds-acc-inner { overflow: hidden; min-height: 0; }
.exds-navp-mobile .exds-acc-card[data-open="true"] .exds-acc-inner > * {
  /* ⛔ EL RETARDO VA EN SU PROPIA PROPIEDAD, no dentro de la abreviatura (2026-08-28).
     Escrito como `animation: … 250ms … 60ms backwards`, el medidor de vocabulario lee el
     60ms como una DURACION inventada y reprueba, con razon: en la abreviatura los dos
     tiempos son indistinguibles. Pero 60ms no es una duracion, es el escalon con el que
     el contenido entra detras de la fila — y el catalogo ya escribe sus escalones asi
     (board.css, y las dos lineas de este mismo archivo, que nunca reprobaron).
     Cero cambio de conducta: mismo valor, misma animacion. Cambia donde se escribe.
     *Una abreviatura que junta dos cosas distintas en la misma posicion obliga a quien
     mide a adivinar cual es cual — y adivina mal la que menos se usa.* */
  animation: navpPanelIn var(--motion-base, 250ms) var(--ease-default, cubic-bezier(0.32,0.72,0,1)) backwards;
  animation-delay: 60ms;
}
.exds-navp-mobile-col { padding: 4px 20px 14px; }
.exds-navp-mobile-col:first-child { padding-top: 10px; }
.exds-navp-mobile-heading {
  font-size: var(--fs-caption, 12px); text-transform: uppercase; letter-spacing: 0.05em;
  font-weight: var(--fw-semibold, 600); color: var(--fg3, #5C6B7A); margin: 0 0 6px;  /* 600: el canon no declara 700 (ver el rotulo de columna, arriba) */
}
.exds-navp-mobile-direct {
  display: block; padding: 16px 20px;
  font-size: var(--fs-body, 14px); font-weight: var(--fw-medium, 500); color: var(--fg1, #0F1419);
  border-bottom: 1px solid var(--color-border-subtle, #E5E7EB); text-decoration: none;
}
/* «Iniciar sesión» de teléfono · ES EL BOTÓN DEL CATÁLOGO, y aquí sólo se COLOCA.
   Se homologó el 2026-08-28, al descubrir que la primera versión de este gemelo lo
   redibujaba a mano: 48px de alto, radio de botón, superficie blanca, borde y hover — o
   sea, `exds-btn[data-variant="secondary"][data-size="lg"]` letra por letra. Reimplementar
   por dentro una pieza que ya existe es el Frankenstein un nivel más abajo, y cada pantalla
   que montara esta barra lo habría heredado sin poder verlo (CLAUDE.md §5-bis paso 7).
   ⛔ Y al homologarlo salió gratis un defecto que se arrastraba: el botón a mano usaba
   `--color-border-control` (#8B92A1) para el borde, que Ricardo RETIRÓ de los botones el
   2026-07-18 dejándolo sólo para inputs, cards y radios. La app iba un mes por detrás del
   canon y nadie lo veía, porque la regla no se llamaba «botón».
   Lo único que queda aquí es lo que el catálogo NO decide: que ocupe el ancho de la hoja y
   su separación del acordeón. El ancho completo es de la COMPOSICIÓN, no de la pieza. */
.exds-navp-mobile-sesion {
  margin: 16px 20px 20px;
  width: calc(100% - 40px);
}

/* ── EL ANILLO DE FOCO DE LAS PIEZAS PROPIAS ──────────────────────────────────
   ⛔ FALTABA ENTERO, y se midio con el tabulador de verdad (2026-08-28): de las 33
   paradas del teclado dentro de esta barra, 28 enseñaban el azul por defecto del
   navegador en vez del anillo del sistema. Los 5 que si lo tenian eran justo los que
   NO son de esta hoja — los botones y las pestañas, que lo traen de su propio gemelo.
   *La cosecha heredo el foco de lo que reusa y no le puso ninguno a lo que invento.
   Es el modo de fallo tipico de una pieza compuesta: lo prestado llega completo y lo
   propio llega desnudo, y desde fuera se ve igual.*
   Y es la puerta de entrada del negocio: quien navega con teclado se perdia aqui.
   Forma canonica de COMPONENTE_FOCO: contorno de 2px con 2px de separacion. Sobre la
   barra oscura sube a tinta blanca, igual que hicieron el boton y el boton de icono. */
.exds-navp-link:focus-visible,
.exds-navp-brand:focus-visible,
.exds-navp-mobile .exds-acc-h:focus-visible,
.exds-navp-mobile-direct:focus-visible {
  outline: 2px solid var(--color-border-focus, #6E7378);
  outline-offset: 2px;
  border-radius: var(--radius-sm, 6px);
}
[data-superficie="oscura"] .exds-navp-link:focus-visible,
[data-superficie="oscura"] .exds-navp-brand:focus-visible,
[data-superficie="oscura"] .exds-navp-mobile .exds-acc-h:focus-visible,
[data-superficie="oscura"] .exds-navp-mobile-direct:focus-visible {
  outline-color: var(--color-ink-on-dark, #FFFFFF);
}
/* Y los paneles claros vuelven al anillo neutro, como el resto del canon. */
[data-superficie="clara"] .exds-navp-link:focus-visible,
[data-superficie="clara"] .exds-navp-mobile .exds-acc-h:focus-visible,
[data-superficie="clara"] .exds-navp-mobile-direct:focus-visible {
  outline-color: var(--color-border-focus, #6E7378);
}

/* ── MOVIMIENTO REDUCIDO ──────────────────────────────────────────────────────
   Apagar el movimiento no es dejar sin señal: los estados finales (abierto/cerrado,
   activo/inactivo) se pintan igual, sólo sin la transición/animación de por medio.
   Cubre las piezas propias de este gemelo; `tabs.css`, `button.css` e `iconbutton.css`
   ya declaran la suya para lo que REUSAN. */
@media (prefers-reduced-motion: reduce) {
  .exds-navp,
  .exds-navp-tab-chevron,
  .exds-navp-dropdown,
  .exds-navp-dropdown.open,
  .exds-navp-panel.saliendo,
  .exds-navp-link,
  .exds-navp-mobile,
  .exds-navp-mobile.open,
  .exds-navp-mobile .exds-acc-h,
  .exds-navp-mobile .exds-acc-chev,
  .exds-navp-mobile .exds-acc-body,
  .exds-navp-mobile .exds-acc-card[data-open="true"] .exds-acc-body,
  .exds-navp-mobile-sesion {
    transition: none !important;
  }
  .exds-navp-dropdown.open .exds-navp-panel.active .exds-navp-col,
  .exds-navp-mobile .exds-acc-card[data-open="true"] .exds-acc-inner > * {
    animation: none !important;
  }
}
