.aside .icono {
  /* Regla de flota: en apps de fondo OSCURO los iconos van en BLANCO
     (decisión Manu, jul 2026). En claras, color de marca (ver HC). */
  background-color: var(--color-icono-nav);
  animation: rotation 3s;
  cursor: pointer;
}
/* ***************** PÁGINAS DE LAS CARTAS *************** */
/* ******************************************************* */
/* NUEVO CSS */
/* ******************************************************* */
/* ESTILOS DE LA PÁGINA */
.carta {
  display: flex;
  flex-direction: column;
}
.bandera {
  /* Tamaño de la bandera (antes lo heredaba de .carta__icons, ya migrado a .icono). */
  width: 2rem;
  aspect-ratio: 1;
  border-radius: 50%;
  box-shadow: var(--sombra);
}
/* Las banderas llevan glow BLANCO (no el rojo de los iconos del aside).
   img.bandera tiene la misma especificidad que img.carta__icons y va después,
   así que gana en la cascada. */
img.bandera {
  filter: drop-shadow(0 0 0.25rem var(--blanco)) drop-shadow(0 0 0.625rem var(--blanco));
}

/*BARRAS HEADER CON BANDERAS Y ASIDE */
.main__header,
.main__header2 {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: fit-content;
  display: flex;
  justify-content: end;
  align-items: center;
  gap: 1rem;
  padding: 0.5rem 2rem;
  backdrop-filter: blur(0.3125rem);
  -webkit-backdrop-filter: blur(0.3125rem);
  z-index: 1;
}

/* Botón RESERVAR del header de carta y drinks — color/background/animación en styles1.css */
.carta__boton-reservar {
  margin-right: auto;
  padding: 0.3em 0.5rem;
  text-align: center;
  font-size: 1.3rem;
  font-weight: 800;
  border-radius: var(--border-radius);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
}

/* Aquí SOLO el layout propio de la app (position/top/left/width/height). Todo
   el ASPECTO —sombra, flex column, align-items, y gap/padding por token
   (--aside-gap / --aside-padding)— lo pone estructura-base.css, que carga
   después y pisaría cualquier cosa que se declare aquí. */
.aside {
  position: fixed;
  top: 0;
  left: 0;
  width: fit-content;
  height: 100dvh;
}

/* MAIN */
.wrapper {
  width: 90dvw;
  position: absolute;
  top: 0;
  right: 0;
  padding: 1rem;
  z-index: -1;
}
.main {
  width: 100%;
  max-width: 50rem;
  margin: 3rem auto 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}
/* Logo superior */
/* Logo grande que encabeza la carta (igual que el de alérgenos) */
/* Imagen de cabecera: aspecto compartido en .hero-img (estructura-base.css).
   Aquí solo su posición dentro de la carta (va dentro de .main, que ya baja 3rem). */
/* Hero de carta: despeje en estructura-base */
/* FAMILIA */
/* Tarjeta del bloque de platos (.cont-platos): estándar en estructura-base */
.platos {
  width: 100%;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
}
/* Aspecto de la tarjeta (padding, radio, sombra, degradado): estructura-base. */
.platos__familia {
  width: 100%; /* margen entre familias: estructura-base */
  cursor: pointer;
}
.platos__familia-h2 {
  margin: 0.2rem;
  color: var(--color-titulo); /* tamaño: estructura-base */
  font-weight: 600;
  text-transform: uppercase; /* títulos de familia SIEMPRE en mayúsculas (convención de flota) */
  text-shadow: var(--halo-texto);
}

/* *************************************************** */
/* Acordeón de familias: si se reactiva el toggle en cartaMaster2.js
   (actualmente comentado), .active se aplica al .cont-platos para
   expandir sus productos. Scopeada para no colisionar con .form.active
   ni con .maps-modal.active. */
.cont-platos.active {
  max-height: 175rem;
  overflow: visible;
}
/* Imagen de la familia */
/* Imagen de familia: estándar en estructura-base */

.textos__header-footer-familia {
  color: var(--color-texto-tema);
  padding: 0.5rem 0;
}

/* PRODUCTOS */
.nuevo__producto {
  display: flex;
  flex-direction: column;
}
/* Subcabeceras (.new__header): estándar completo en estructura-base */
/* Cabeceras de columnas: métrica en estructura-base (estándar de flota) */
/* Rejilla nombre/precios (.container): estándar en estructura-base */
/* Colores de nombres/descripciones/precios: tokens en :root + base */
/* Descripciones (.product__description): estándar en estructura-base */
.product__img {
  width: 4rem;
  padding-right: 0.2rem;
}
.footer-producto {
  font-size: 0.9rem;
  color: var(--color-texto-tema);
}
/* Alérgenos por plato (fila de iconos) */
.product__alergenos {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.3rem;
  margin-top: 0.35rem;
}
.alergeno-icono {
  width: 1.1rem;
  height: 1.1rem;
  object-fit: contain;
}
/* "Puede contener" (trazas): mismo icono, atenuado para distinguirlo de "contiene" */
.alergeno-icono--traza {
  opacity: 0.45;
}
.cont__prices {
  display: flex;
  justify-content: end;
  gap: 0.5rem;
  & span {
    width: 3.5rem;
    text-align: right;
    font-size: 1.1rem;
  }
}

/* Icono individual de los platos */
.pepper {
  height: 1rem;
  width: auto;
  margin: 0 0.5rem;
  display: inline-block;
}
/* IMPUESTO */
.impuesto {
  width: 100%;
  text-align: right;
  color: var(--color-texto-tema);
  margin-top: 2rem;
}
/* FOOTER */
.baner__alergenos {
  width: 100%;
  max-width: 50rem;
  margin: 3rem auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  padding: 1rem;
  border-radius: var(--border-radius);
  box-shadow: var(--sombra);
  /* Degradado de marca por token (convención): en apps CLARAS la tarjeta lleva
     el gradiente bajo el cristal; en OSCURAS el token es 'none' → cristal puro. */
  background-image: var(--color-degradado2);
}

/* display, dirección y padding del footer: estructura-base (estándar de flota).
   ⚠️ Aquí había un `padding-bottom: 20dvh` que NO se aplicaba desde que la base
   fijó el suyo (3rem). Si alguna app quiere más aire abajo, se sube como token,
   no se vuelve a declarar aquí. */
.footer {
  width: 100%;
}
.footer__texto-alergenos {
  font-size: 0.8rem;
  color: var(--color-titulo);
}
.email {
  font-size: 0.9rem;
  color: var(--color-texto-tema);
  margin: 1rem 0;
}
.restaurant123 {
  display: flex;
  justify-content: center;
  font-size: 0.8rem;
}
.restaurant123 a {
  padding: 0 0.2rem;
}
@media screen and (min-width: 48rem) {
  .wrapper {
    width: 90%;
  }
}
