/* Pollos a la Brasa Pinar del Rey · estilos
   Mobile first; diseño de escritorio a partir de 1024 px.
   Referencia: referencias/maqueta-l1 (Main, Carta-Movil, Producto-Movil, Horario-Movil, Escritorio). */

/* ---------- Fuentes autoalojadas (sin Google Fonts) ---------- */
@font-face { font-family: 'Bricolage Grotesque'; font-weight: 700; font-style: normal; font-display: swap; src: url('../fonts/bricolage-grotesque-700.woff2') format('woff2'); }
@font-face { font-family: 'Bricolage Grotesque'; font-weight: 800; font-style: normal; font-display: swap; src: url('../fonts/bricolage-grotesque-800.woff2') format('woff2'); }
@font-face { font-family: 'Figtree'; font-weight: 400; font-style: normal; font-display: swap; src: url('../fonts/figtree-400.woff2') format('woff2'); }
@font-face { font-family: 'Figtree'; font-weight: 600; font-style: normal; font-display: swap; src: url('../fonts/figtree-600.woff2') format('woff2'); }
@font-face { font-family: 'Figtree'; font-weight: 700; font-style: normal; font-display: swap; src: url('../fonts/figtree-700.woff2') format('woff2'); }

/* ---------- Paleta A: ají y rocoto ---------- */
:root {
  --rojo: #C8102E;
  --rojo-oscuro: #9E0C24;
  --rojo-sobre-oscuro: #FF8C9C;
  --amarillo: #FFB81C;
  --marron: #3A2400;
  --texto: #1A1423;
  --texto-suave: #5E5666;
  --fondo: #FFFFFF;
  --crema: #FFF4E0;
  --rosa: #FFF1F3;
  --borde: #F0E4D6;
  --borde-suave: #F4ECE3;
  --verde: #2F6B4F;
  --naranja: #B34700;
  --oscuro-2: #2A2130;
  --oscuro-3: #120D18;
  --fuente-titular: 'Bricolage Grotesque', system-ui, sans-serif;
  --fuente-texto: 'Figtree', system-ui, sans-serif;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
body {
  margin: 0;
  background: var(--fondo);
  color: var(--texto);
  font-family: var(--fuente-texto);
  font-size: 1rem;
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
}
h1, h2, h3 { font-family: var(--fuente-titular); margin: 0; line-height: 1.1; }
p { margin: 0; }
img { max-width: 100%; display: block; }
ul[role="list"], ol[role="list"] { list-style: none; margin: 0; padding: 0; }
a { color: var(--rojo); }
a:hover { color: var(--rojo-oscuro); }
button { font: inherit; color: inherit; cursor: pointer; }

/* Foco visible: oscuro sobre fondos claros, amarillo sobre fondos oscuros */
:focus-visible { outline: 3px solid var(--texto); outline-offset: 2px; }
.portada :focus-visible, .pasos :focus-visible, .pie :focus-visible, .avisos :focus-visible { outline-color: var(--amarillo); }

.visualmente-oculto {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.saltar {
  position: absolute; left: 12px; top: -100px; z-index: 20;
  background: var(--texto); color: #fff; padding: 12px 16px; border-radius: 12px; font-weight: 700;
}
.saltar:focus { top: 12px; color: #fff; outline-color: var(--amarillo); }
.solo-escritorio { display: none !important; }

.precio { font-weight: 700; color: var(--rojo); font-size: 15px; white-space: nowrap; }

/* ---------- Botones ---------- */
.boton {
  display: inline-flex; align-items: center; justify-content: center; text-align: center;
  min-height: 50px; padding: 0 16px; border-radius: 12px;
  font-weight: 700; font-size: 16px; text-decoration: none;
}
.boton-primario { background: var(--rojo); color: #fff; border: 0; }
.boton-primario:hover { background: var(--rojo-oscuro); color: #fff; }
.boton-claro { border: 1.5px solid #fff; color: #fff; font-weight: 600; }
.boton-claro:hover { background: rgba(255, 255, 255, 0.14); color: #fff; }
.boton-contorno { border: 1.5px solid var(--rojo); color: var(--rojo); min-height: 48px; font-size: 15px; }
.boton-contorno:hover { background: var(--rosa); }

.boton-anadir {
  position: relative; z-index: 1; /* por encima del área clicable de la tarjeta */
  width: 44px; height: 44px; flex-shrink: 0; border-radius: 12px; border: none;
  background: var(--rojo); color: #fff; display: inline-flex; align-items: center; justify-content: center;
}
.boton-anadir.contorno { background: #fff; color: var(--rojo); border: 1.5px solid var(--rojo); }

/* ---------- Avisos (festivos) ---------- */
.avisos { background: var(--amarillo); color: var(--marron); padding: 10px 16px; text-align: center; font-weight: 700; font-size: 14px; }
.avisos p + p { margin-top: 4px; }

/* ---------- Cabecera ---------- */
.portada-envoltorio { position: relative; }
.cabecera {
  position: absolute; top: 0; left: 0; right: 0; z-index: 5;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 16px 20px; color: #fff;
}
.cabecera :focus-visible { outline-color: var(--amarillo); }
.logo { display: flex; flex-direction: column; line-height: 1.1; color: inherit; text-decoration: none; min-height: 44px; justify-content: center; }
.logo:hover { color: inherit; }
.logo-nombre { font-family: var(--fuente-titular); font-weight: 700; font-size: 16px; }
.logo-sub { font-size: 11px; letter-spacing: 3px; font-weight: 600; text-transform: uppercase; color: var(--amarillo); }
.menu-boton {
  width: 44px; height: 44px; border-radius: 12px;
  border: 1.5px solid rgba(255, 255, 255, 0.6); background: rgba(26, 20, 35, 0.3); color: #fff;
  display: flex; align-items: center; justify-content: center;
}
.menu { display: none; }
.menu-boton[aria-expanded="true"] + .menu {
  display: block; position: absolute; top: 72px; left: 12px; right: 12px;
  background: #fff; border-radius: 16px; padding: 8px; box-shadow: 0 12px 32px rgba(26, 20, 35, 0.3);
}
.menu a {
  display: flex; align-items: center; min-height: 48px; padding: 0 14px; border-radius: 10px;
  color: var(--texto); font-weight: 600; text-decoration: none;
}
.menu a:hover { background: var(--crema); }
.menu :focus-visible { outline-color: var(--texto); }
.cabecera-pedir { display: none; }

/* ---------- Portada a sangre ---------- */
.portada { position: relative; height: 580px; display: flex; color: #fff; overflow: hidden; background: var(--texto); }
.portada-foto { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 45% 50%; z-index: 0; }
.portada::after {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(26, 20, 35, 0.55) 0%, rgba(26, 20, 35, 0.10) 30%, rgba(26, 20, 35, 0.35) 55%, rgba(26, 20, 35, 0.92) 100%);
}
.portada-contenido {
  position: relative; z-index: 2; margin-top: auto; width: 100%;
  padding: 0 20px 28px; display: flex; flex-direction: column; gap: 12px; align-items: flex-start;
}
.portada h1 { font-size: 40px; line-height: 1.02; font-weight: 800; letter-spacing: -0.5px; }
.portada-texto { font-size: 16px; line-height: 1.45; }
.portada-botones { display: flex; gap: 10px; width: 100%; margin-top: 4px; }
.portada-botones .boton { flex: 1; }

.chip-estado {
  display: inline-flex; gap: 6px; align-items: center;
  background: var(--amarillo); color: var(--marron);
  border-radius: 16px; padding: 5px 12px; font-weight: 700; font-size: 13px;
}
.chip-parte { white-space: nowrap; }
.chip-texto { display: inline-flex; flex-wrap: wrap; column-gap: 0.25em; }
.chip-punto { width: 8px; height: 8px; border-radius: 50%; background: var(--verde); flex-shrink: 0; }
.chip-estado[data-tipo="cierra-pronto"] .chip-punto { background: var(--naranja); }
.chip-estado[data-tipo="cerrado"], .chip-estado[data-tipo="sin-pedidos"] { background: #fff; color: var(--texto); }
.chip-estado[data-tipo="cerrado"] .chip-punto, .chip-estado[data-tipo="sin-pedidos"] .chip-punto { background: var(--rojo); }
.chip-estado[data-tipo="cargando"] .chip-punto { background: var(--texto-suave); }

.franja { display: flex; height: 6px; }
.franja span:first-child { flex: 3; background: var(--rojo); }
.franja span:last-child { flex: 2; background: var(--amarillo); }

/* ---------- Secciones de portada ---------- */
.seccion { padding: 28px 20px 8px; display: flex; flex-direction: column; gap: 14px; }
.seccion-cabecera { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.destacados h2 { font-size: 26px; font-weight: 800; }
.tambien h2 { font-size: 22px; font-weight: 800; }
.enlace { font-weight: 600; font-size: 14px; display: inline-flex; align-items: center; min-height: 44px; }
.nuestro-pollo { display: flex; flex-direction: column; gap: 14px; }

.tambien-lista { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.tambien-enlace { display: flex; flex-direction: column; gap: 6px; color: var(--texto); text-decoration: none; border-radius: 14px; }
.tambien-enlace:hover { color: var(--texto); }
.tambien-enlace:hover .tambien-nombre { text-decoration: underline; }
.tambien-enlace img { width: 100%; height: 130px; object-fit: cover; object-position: 50% 35%; border-radius: 14px; }
.tambien-nombre { font-weight: 600; font-size: 14px; line-height: 1.25; }
.tambien .precio { font-size: 14px; }

.pasos { margin: 24px 20px 0; padding: 20px; border-radius: 20px; background: var(--texto); color: #fff; }
.pasos h2 { font-size: 22px; font-weight: 800; margin-bottom: 14px; }
.pasos ol { display: flex; flex-direction: column; gap: 14px; }
.pasos li { display: flex; gap: 12px; align-items: flex-start; }
.pasos li div { display: flex; flex-direction: column; gap: 2px; font-size: 14px; line-height: 1.4; }
.pasos li b { font-size: 15px; }
.pasos li span:not(.paso-numero) { opacity: 0.85; }
.paso-numero {
  width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0;
  background: var(--amarillo); color: var(--marron); font-weight: 800;
  display: flex; align-items: center; justify-content: center;
}

/* ---------- Tarjeta agrupada (pollo a la brasa con opciones) ---------- */
.grupo { border-radius: 20px; overflow: hidden; border: 1px solid var(--borde); background: #fff; }
.grupo-foto { position: relative; height: 170px; }
.grupo-foto img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 45%; }
.insignia {
  position: absolute; left: 12px; top: 12px; background: var(--rojo); color: #fff;
  border-radius: 99px; padding: 4px 10px; font-weight: 700; font-size: 12px;
}
.grupo-cuerpo { padding: 16px 8px 8px; }
.grupo-nombre { font-size: 20px; font-weight: 700; padding: 0 8px; }
.grupo-cuerpo > .producto-desc { margin: 4px 8px 6px; font-size: 14px; line-height: 1.4; }
.opcion { display: flex; align-items: center; gap: 10px; border-top: 1px solid var(--borde-suave); padding: 2px 0; }
.opcion-abrir {
  flex: 1; display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 6px 8px;
  border: 0; border-radius: 10px; background: none; text-align: left;
}
.opcion-abrir:hover { background: var(--crema); }
.opcion-nombre { flex: 1; font-weight: 600; font-size: 15px; }

/* ---------- Tarjeta de producto ---------- */
.producto { position: relative; display: flex; gap: 12px; align-items: center; min-height: 56px; }
.producto.con-foto { padding: 10px; border-radius: 16px; border: 1px solid var(--borde); }
.producto.sin-foto { padding: 8px 2px 10px; border-bottom: 1px solid var(--borde-suave); }
.producto:hover { border-color: #E2C9B0; }
.producto-foto { width: 84px; height: 84px; object-fit: cover; object-position: 50% 30%; border-radius: 12px; flex-shrink: 0; }
.producto-texto { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; }
.producto-nombre { font-family: var(--fuente-texto); font-weight: 700; font-size: 15px; line-height: 1.3; }
.producto-desc { font-size: 13px; color: var(--texto-suave); line-height: 1.35; }
/* Sin foto: nombre y descripción a la izquierda, precio a la derecha */
.sin-foto .producto-texto { display: grid; grid-template-columns: 1fr auto; column-gap: 12px; row-gap: 2px; }
.sin-foto .producto-texto > :not(.precio) { grid-column: 1; }
.sin-foto .precio { grid-column: 2; grid-row: 1 / span 2; align-self: center; }
.producto-crema { background: var(--crema); border: 0 !important; padding: 12px; border-radius: 16px; }

/* Toda la tarjeta es clicable: el botón del nombre se extiende sobre ella */
.producto-abrir { background: none; border: 0; padding: 0; text-align: left; font-weight: inherit; }
.producto-abrir::after { content: ""; position: absolute; inset: 0; border-radius: 16px; }
.producto-abrir:focus-visible { outline: none; }
.producto-abrir:focus-visible::after { outline: 3px solid var(--texto); outline-offset: 2px; }

/* ---------- Carta ---------- */
.carta { padding-top: 32px; }
.carta-cabecera { padding: 0 16px 8px; display: flex; flex-direction: column; gap: 2px; }
.carta-cabecera h2 { font-size: 26px; font-weight: 800; }
.carta-estado { font-size: 13px; font-weight: 700; color: var(--verde); }
.carta-estado[data-tipo="cierra-pronto"] { color: var(--naranja); }
.carta-estado[data-tipo="cerrado"], .carta-estado[data-tipo="sin-pedidos"] { color: var(--rojo); }

.carta-nav { position: sticky; top: 0; z-index: 4; background: #fff; border-bottom: 1px solid var(--borde); }
.carta-nav-titulo { display: none; }
.carta-nav ul { display: flex; gap: 8px; overflow-x: auto; padding: 10px 12px 12px; scrollbar-width: none; }
.carta-nav ul::-webkit-scrollbar { display: none; }
.chip-categoria {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 14px; border-radius: 99px;
  background: var(--crema); color: var(--texto); font-weight: 600; font-size: 14px; white-space: nowrap; text-decoration: none;
}
.chip-categoria:hover { color: var(--texto); background: #FFE8BF; }
.chip-categoria[aria-current="true"] { background: var(--rojo); color: #fff; font-weight: 700; }

.carta-contenido { padding: 0 16px; }
.aviso-alergias {
  margin-top: 14px; padding: 12px 14px; border-radius: 14px; background: var(--crema);
  display: flex; gap: 10px; align-items: flex-start; font-size: 13px; line-height: 1.4;
}
.aviso-alergias svg { flex-shrink: 0; margin-top: 1px; }
.aviso-alergias a { color: var(--rojo-oscuro); font-weight: 700; }

.categoria { padding-top: 24px; scroll-margin-top: 72px; }
.categoria-titulo { font-size: 24px; font-weight: 800; margin-bottom: 12px; }
.categoria-lista { display: flex; flex-direction: column; gap: 10px; }
.categoria .grupo-foto { height: 160px; }
.producto, .grupo, .opcion { scroll-margin-top: 80px; }
.error-carga { padding: 24px 0; color: var(--texto-suave); }
/* Espacio reservado mientras se cargan los JSON, para que el contenido de debajo no salte (CLS) */
.nuestro-pollo:empty { min-height: 540px; }
.tambien-lista:empty { min-height: 400px; }
#carta-categorias:empty { min-height: 150vh; }

/* ---------- Horario, dirección y reparto ---------- */
.info { padding: 32px 20px 0; display: flex; flex-direction: column; gap: 28px; }
.info-bloque h2 { font-size: 22px; font-weight: 800; margin-bottom: 14px; }

.horario-tarjeta { border-radius: 20px; border: 1px solid var(--borde); overflow: hidden; }
.horario-estado { padding: 14px 16px; background: var(--texto); color: #fff; display: flex; align-items: center; gap: 12px; }
.horario-estado svg { flex-shrink: 0; }
.horario-titulo { font-weight: 800; font-size: 16px; }
.horario-detalle { font-size: 13px; opacity: 0.85; }
.horario-tabla { width: 100%; border-collapse: collapse; font-size: 15px; }
.horario-tabla tr { border-top: 1px solid var(--borde-suave); }
.horario-tabla th, .horario-tabla td { padding: 12px 16px; font-weight: 500; vertical-align: top; }
.horario-tabla th { text-align: left; }
.horario-tabla td { text-align: right; }
.horario-tabla td.cerrado { color: var(--rojo); }
.horario-tabla tr.hoy { background: var(--crema); }
.horario-tabla tr.hoy th, .horario-tabla tr.hoy td { font-weight: 800; }
.etiqueta-hoy {
  margin-left: 8px; background: var(--rojo); color: #fff; border-radius: 99px;
  padding: 2px 8px; font-size: 11px; font-weight: 800; text-transform: uppercase; vertical-align: 1px;
}
.nota { margin-top: 10px; font-size: 13px; color: var(--texto-suave); line-height: 1.45; }

.direccion-tarjeta { display: flex; flex-direction: column; gap: 8px; padding: 16px; border-radius: 16px; border: 1px solid var(--borde); }
address { font-style: normal; display: flex; flex-direction: column; gap: 4px; }
address b { font-size: 15px; }
address span { font-size: 14px; color: var(--texto-suave); }
.direccion-botones { display: flex; gap: 8px; margin-top: 6px; }
.direccion-botones .boton { flex: 1; }

.reparto-tarjeta { display: flex; flex-direction: column; gap: 6px; padding: 16px; border-radius: 16px; background: var(--crema); font-size: 14px; line-height: 1.45; }
.reparto-pago { color: var(--texto-suave); }

/* ---------- Pie ---------- */
.pie { margin-top: 32px; padding: 24px 20px 32px; background: var(--texto); color: #fff; display: flex; flex-direction: column; gap: 10px; font-size: 13px; }
.pie-nombre { font-family: var(--fuente-titular); font-weight: 700; font-size: 16px; }
.pie-direccion { opacity: 0.8; }
.pie-enlaces { display: flex; gap: 4px 20px; flex-wrap: wrap; }
.pie-enlaces a { color: var(--amarillo); display: inline-flex; align-items: center; min-height: 44px; }
.pie-enlaces a:hover { color: #FFD066; }
.pie-cookies { opacity: 0.7; }

/* ---------- Ficha de plato (dialog) ---------- */
.ficha {
  position: fixed; inset: auto 0 0 0; margin: 0; padding: 0; border: 0;
  width: 100%; max-width: 100%; max-height: calc(100dvh - 56px); overflow: auto;
  border-radius: 24px 24px 0 0; background: #fff; color: var(--texto);
}
.ficha::backdrop { background: rgba(26, 20, 35, 0.6); }
html:has(.ficha[open]) { overflow: hidden; }
.ficha-foto { height: 250px; }
.ficha-foto img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 35%; }
.ficha-cerrar {
  position: absolute; right: 12px; top: 12px; width: 44px; height: 44px; border-radius: 50%;
  border: 0; background: #fff; color: var(--texto); display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 8px rgba(26, 20, 35, 0.25);
}
.ficha-cuerpo { padding: 18px 20px 28px; display: flex; flex-direction: column; gap: 14px; }
.ficha.sin-foto .ficha-cuerpo { padding-top: 68px; }
.ficha-titulo { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.ficha-titulo h2 { font-size: 26px; font-weight: 800; }
.ficha-precio { font-weight: 800; color: var(--rojo); font-size: 20px; white-space: nowrap; }
.ficha-descripcion { font-size: 15px; color: var(--texto-suave); line-height: 1.45; }
.ficha-subtitulo { font-family: var(--fuente-texto); font-weight: 700; font-size: 14px; margin-bottom: -6px; }
.ficha .aviso-alergias { margin-top: 0; }
.etiquetas-alergenos { display: flex; gap: 6px; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; }
.etiquetas-alergenos li { background: var(--crema); border-radius: 99px; padding: 4px 12px; font-size: 13px; font-weight: 600; }
.sin-alergenos { font-size: 14px; color: var(--texto-suave); }

@media (min-width: 640px) {
  .ficha { inset: 0; margin: auto; max-width: 480px; max-height: 90dvh; border-radius: 24px; }
}

/* =========================================================
   Escritorio (≥ 1024 px): maqueta "Escritorio"
   ========================================================= */
@media (min-width: 1024px) {
  .solo-movil { display: none !important; }
  .solo-escritorio { display: inline-flex !important; }

  .cabecera {
    position: static; height: 76px; padding: 0 max(48px, (100% - 1280px) / 2); gap: 32px;
    background: #fff; color: var(--texto); border-bottom: 1px solid var(--borde);
  }
  .cabecera :focus-visible { outline-color: var(--texto); }
  .logo-nombre { font-weight: 800; font-size: 20px; }
  .logo-sub { color: var(--rojo); letter-spacing: 3.5px; font-weight: 700; }
  .menu-boton { display: none; }
  .menu { display: block; margin-left: auto; }
  .menu ul { display: flex; gap: 8px; }
  .menu a { font-size: 15px; padding: 0 10px; }
  .cabecera-pedir { display: inline-flex; min-height: 46px; padding: 0 22px; font-size: 15px; }

  .portada { height: 520px; }
  .portada-foto { object-position: 60% 45%; }
  .portada::after { background: linear-gradient(90deg, rgba(26, 20, 35, 0.92) 0%, rgba(26, 20, 35, 0.70) 38%, rgba(26, 20, 35, 0.05) 75%); }
  .portada-contenido { margin: 0; max-width: calc(640px + max(0px, (100% - 1280px) / 2)); padding: 0 48px 0 max(48px, (100% - 1280px) / 2); justify-content: center; gap: 18px; }
  .portada h1 { font-size: 64px; line-height: 1; letter-spacing: -1px; }
  .portada-texto { font-size: 19px; line-height: 1.5; }
  .portada-botones { width: auto; gap: 12px; margin-top: 6px; }
  .portada-botones .boton { flex: none; min-height: 54px; padding: 0 28px; font-size: 17px; }
  .chip-estado { font-size: 14px; padding: 6px 14px; gap: 8px; }

  /* En escritorio la portada pasa directamente a la carta (maqueta Escritorio) */
  .destacados, .tambien { display: none; }
  .pasos { max-width: 1184px; margin: 40px auto 0; }

  .carta { padding: 40px 48px 0; max-width: 1376px; margin: 0 auto; }
  .carta-cabecera { padding: 0 0 20px 230px; flex-direction: row; align-items: baseline; gap: 16px; }
  .carta-cabecera h2 { font-size: 34px; }
  .carta-estado { font-size: 14px; }
  .carta-layout { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 40px; align-items: start; }
  .carta-nav { top: 16px; border: 0; background: none; padding-top: 6px; }
  .carta-nav-titulo { display: block; font-size: 12px; font-weight: 700; letter-spacing: 1.5px; color: var(--texto-suave); padding: 0 12px 8px; text-transform: uppercase; }
  .carta-nav ul { flex-direction: column; gap: 4px; padding: 0; overflow: visible; }
  .chip-categoria { border-radius: 10px; padding: 0 12px; font-size: 15px; background: none; }
  .chip-categoria:hover { background: var(--crema); }

  .carta-contenido { padding: 0; }
  .aviso-alergias { margin-top: 0; font-size: 14px; align-items: center; }
  .categoria { padding-top: 32px; scroll-margin-top: 16px; }
  .categoria-titulo { font-size: 30px; margin-bottom: 14px; }
  .categoria-lista { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .producto, .grupo, .opcion { scroll-margin-top: 24px; }

  .categoria .grupo { grid-column: 1 / -1; display: flex; }
  .categoria .grupo-foto { width: 280px; height: auto; flex-shrink: 0; }
  .categoria .grupo-cuerpo { flex: 1; padding: 18px 10px 10px; }
  .categoria .grupo-nombre { font-size: 22px; }
  .categoria .grupo-cuerpo > .producto-desc { font-size: 15px; margin-bottom: 8px; }

  .producto.con-foto, .producto.sin-foto { padding: 12px; gap: 14px; border-radius: 16px; border: 1px solid var(--borde); min-height: 72px; }
  .producto-foto { width: 88px; height: 88px; }
  .producto-nombre { font-size: 16px; }
  .sin-foto .producto-texto { display: flex; }
  .sin-foto .precio { align-self: flex-start; }

  /* Horario, dirección y reparto en una banda oscura de 3 columnas */
  .info {
    margin-top: 56px; padding: 48px max(48px, (100% - 1280px) / 2) 40px; background: var(--texto); color: #fff;
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px;
  }
  .info :focus-visible { outline-color: var(--amarillo); }
  .info-bloque h2 { color: var(--amarillo); }
  .horario-tarjeta { border-color: rgba(255, 255, 255, 0.15); }
  .horario-estado { background: var(--oscuro-2); }
  .horario-tabla tr { border-top-color: rgba(255, 255, 255, 0.15); }
  .horario-tabla th, .horario-tabla td { padding: 10px 14px; }
  .horario-tabla td.cerrado { color: var(--rojo-sobre-oscuro); }
  .horario-tabla tr.hoy { background: rgba(255, 184, 28, 0.16); }
  .nota { color: rgba(255, 255, 255, 0.75); }
  .direccion-tarjeta { border: 0; padding: 0; }
  address b { font-size: 16px; font-weight: 600; }
  address span { color: #fff; font-size: 15px; }
  .direccion-botones { flex-wrap: wrap; }
  .direccion-botones .boton { flex: none; border-color: #fff; color: #fff; padding: 0 18px; }
  .direccion-botones .boton:hover { background: rgba(255, 255, 255, 0.12); }
  .reparto-tarjeta { background: none; padding: 0; font-size: 15px; line-height: 1.5; }
  .reparto-pago { color: rgba(255, 255, 255, 0.75); }

  .pie { margin-top: 0; background: var(--oscuro-3); padding: 12px max(48px, (100% - 1280px) / 2); flex-direction: row; align-items: center; gap: 24px; }
  .pie-nombre { font-family: var(--fuente-texto); font-weight: 400; font-size: 13px; opacity: 0.8; }
  .pie-nombre::before { content: "© "; }
  .pie-direccion { display: none; }
  .pie-cookies { margin-left: auto; }
}

/* ---------- Páginas simples (aviso legal, privacidad, alérgenos) ---------- */
.cabecera-simple { padding: 12px 20px; border-bottom: 1px solid var(--borde); }
.cabecera-simple .logo { color: var(--texto); }
.cabecera-simple .logo-sub { color: var(--rojo); }
.contenido-simple { max-width: 720px; margin: 0 auto; padding: 40px 20px 64px; display: flex; flex-direction: column; gap: 16px; }
.contenido-simple h1 { font-size: 32px; font-weight: 800; }
.contenido-simple a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; }

/* =========================================================
   L2 · Pedido: carrito, datos, confirmación (maquetas Pedido, Datos, Enviado y panel de Escritorio)
   ========================================================= */
:root { --borde-campo: #8A7F8C; --verde-claro: #EAF3EE; --verde-oscuro: #1F4D37; }

.boton-ancho { width: 100%; gap: 10px; }
.boton-amarillo { border: 0; background: var(--amarillo); color: var(--marron); font-weight: 800; font-size: 15px; min-height: 46px; padding: 0 18px; }
.boton-amarillo:hover { background: #FFC845; color: var(--marron); }
.boton[disabled] { background: #F5F1EC; color: var(--texto-suave); border: 1.5px solid #E2D6C8; cursor: not-allowed; }
.bloque-titulo { font-family: var(--fuente-titular); font-weight: 700; font-size: 18px; }

/* Vistas: en móvil son pantallas completas; en ordenador, columnas (ver media query) */
.vista { display: none; }
.vista-cabecera {
  position: sticky; top: 0; z-index: 2; background: #fff;
  display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-bottom: 1px solid var(--borde);
}
.vista-cabecera h2 { font-size: 22px; font-weight: 800; flex: 1; }
.vista-cabecera h2:focus { outline: none; }
.vista-atras { width: 44px; height: 44px; border-radius: 12px; display: flex; align-items: center; justify-content: center; color: var(--texto); flex-shrink: 0; }
.vista-atras:hover { background: var(--crema); color: var(--texto); }
.vista-paso { font-size: 13px; color: var(--texto-suave); padding-right: 8px; }
.vista-cuerpo { padding: 16px; display: flex; flex-direction: column; gap: 18px; }
.vista-pie {
  position: sticky; bottom: 0; margin-top: auto; background: #fff; border-top: 1px solid var(--borde);
  padding: 12px 16px 20px; display: flex; flex-direction: column; gap: 10px;
}
.nota-envio { font-size: 12px; color: var(--texto-suave); text-align: center; line-height: 1.4; }

@media (max-width: 1023px) {
  body[data-vista="pedido"] #panel-pedido,
  body[data-vista="datos"] #vista-datos,
  body[data-vista="enviado"] #vista-enviado {
    display: flex; flex-direction: column; position: fixed; inset: 0; z-index: 40;
    background: #fff; overflow-y: auto; overscroll-behavior: contain;
  }
  html:has(body[data-vista="pedido"]), html:has(body[data-vista="datos"]), html:has(body[data-vista="enviado"]) { overflow: hidden; }
  body.con-barra { padding-bottom: 88px; }
  body[data-vista="pedido"] .barra-pedido, body[data-vista="datos"] .barra-pedido, body[data-vista="enviado"] .barra-pedido { display: none; }
}

/* ---------- Carrito ---------- */
.modalidad { display: flex; flex-direction: column; gap: 8px; }
.modalidad .bloque-titulo { font-family: var(--fuente-texto); font-size: 15px; }
.modalidad-opciones { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.modalidad-opcion {
  text-align: left; padding: 12px 14px; border-radius: 14px; border: 1.5px solid var(--borde-campo);
  background: #fff; display: flex; flex-direction: column; gap: 2px; min-height: 64px;
}
.modalidad-opcion[aria-pressed="true"] { border: 2px solid var(--rojo); background: var(--rosa); padding: 11.5px 13.5px; }
.modalidad-titulo { font-weight: 700; font-size: 15px; }
.modalidad-detalle { font-size: 13px; color: var(--texto-suave); }

.lineas { display: flex; flex-direction: column; }
.linea { display: flex; gap: 12px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--borde-suave); }
.linea-texto { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.linea-nombre { font-weight: 700; font-size: 15px; }
.linea-nota { font-size: 13px; color: var(--texto-suave); }
.linea .precio { font-size: 14px; }
.cantidad { display: flex; align-items: center; border: 1.5px solid var(--borde-campo); border-radius: 12px; flex-shrink: 0; }
.cantidad button {
  width: 42px; height: 44px; border: 0; background: transparent; font-size: 20px; font-weight: 700;
  display: flex; align-items: center; justify-content: center; border-radius: 10px;
}
.cantidad button:hover:not(:disabled) { background: var(--crema); }
.cantidad button:disabled { opacity: 0.35; cursor: not-allowed; }
.cantidad output { min-width: 24px; text-align: center; font-weight: 800; }
.pedido-vacio { color: var(--texto-suave); padding: 8px 0; }
.anadir-mas { display: inline-flex; gap: 6px; align-items: center; min-height: 44px; font-weight: 700; font-size: 15px; text-decoration: none; align-self: flex-start; }
.aviso-verde { padding: 12px 14px; border-radius: 14px; background: var(--verde-claro); color: var(--verde-oscuro); font-size: 14px; display: flex; gap: 10px; align-items: center; }
.aviso-verde svg { flex-shrink: 0; }
.aviso-crema { padding: 12px 14px; border-radius: 14px; background: var(--crema); font-size: 13px; line-height: 1.45; }
.totales { margin: 0; display: flex; flex-direction: column; gap: 8px; font-size: 15px; }
.total-fila { display: flex; justify-content: space-between; gap: 12px; }
.total-fila dt { color: var(--texto-suave); }
.total-fila dd { margin: 0; text-align: right; }
.total-fila s { color: var(--texto-suave); }
.gratis { color: var(--verde); }
.total-final { font-weight: 800; font-size: 20px; padding-top: 8px; border-top: 1px solid var(--borde); }
.total-final dt { color: var(--texto); }

/* Aviso "solo programar" (maqueta Horario-Movil, 3) */
.aviso-programar { margin-top: 14px; }
.aviso-programar-caja {
  padding: 14px; border-radius: 16px; background: var(--texto); color: #fff;
  display: flex; gap: 12px; align-items: flex-start; font-size: 14px; line-height: 1.45;
}
.aviso-programar-caja svg { flex-shrink: 0; }

/* Barra inferior del pedido (móvil) */
.barra-pedido {
  position: fixed; left: 12px; right: 12px; bottom: 14px; z-index: 20;
  background: var(--texto); color: #fff; border-radius: 16px; padding: 10px 10px 10px 16px;
  display: flex; justify-content: space-between; align-items: center; box-shadow: 0 8px 24px rgba(26, 20, 35, 0.35);
}
.barra-pedido p { display: flex; flex-direction: column; line-height: 1.2; }
.barra-pedido span { font-size: 13px; opacity: 0.85; }
.barra-pedido strong { font-size: 18px; font-weight: 800; }
.barra-pedido :focus-visible { outline-color: var(--amarillo); }

/* Aviso "Añadido" */
.aviso-anadido {
  position: fixed; left: 50%; bottom: 96px; z-index: 50; transform: translateX(-50%);
  background: var(--texto); color: #fff; padding: 10px 18px; border-radius: 99px; font-weight: 700; font-size: 14px;
  box-shadow: 0 8px 24px rgba(26, 20, 35, 0.3); opacity: 0; pointer-events: none; max-width: calc(100% - 32px); text-align: center;
}
.aviso-anadido:empty { display: none; }
.aviso-anadido.visible { opacity: 1; }
@media (prefers-reduced-motion: no-preference) { .aviso-anadido { transition: opacity 0.2s; } }

/* ---------- Formulario de datos ---------- */
.form-datos { display: flex; flex-direction: column; flex: 1; }
.datos-resumen { display: flex; justify-content: space-between; gap: 12px; padding: 12px 14px; border-radius: 14px; background: var(--crema); font-size: 14px; }
.error-general { padding: 12px 14px; border-radius: 12px; background: #FDECEE; color: var(--rojo-oscuro); font-weight: 600; font-size: 14px; }
.bloque { border: 0; margin: 0; padding: 0; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.bloque > legend { padding: 0; margin-bottom: 12px; }
.campo { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.campo > label { font-weight: 600; font-size: 14px; }
.campo > label.bloque-titulo { font-size: 18px; font-weight: 700; }
.etiqueta-opcional { font-weight: 400; color: var(--texto-suave); }
.campo input[type="text"], .campo input[type="tel"], .campo textarea {
  font: inherit; font-size: 16px; padding: 12px 14px; border: 1.5px solid var(--borde-campo); border-radius: 12px;
  color: var(--texto); background: #fff; width: 100%; min-height: 48px;
}
.campo textarea { resize: vertical; min-height: 72px; }
.campo input::placeholder, .campo textarea::placeholder { color: #736875; }
.campo [aria-invalid="true"] { border-color: var(--rojo); border-width: 2px; }
.campo-ayuda { font-size: 13px; color: var(--texto-suave); }
.campo-error { font-size: 13px; font-weight: 600; color: var(--rojo-oscuro); }
.campo-error::before { content: "\26A0\FE0E  "; }
.campos-dos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.cp-estado { font-size: 13px; font-weight: 600; }
.cp-estado:empty { display: none; }
.cp-estado.ok { color: var(--verde); }
.cp-estado.fuera { color: var(--rojo-oscuro); }
#cambiar-a-recoger { align-self: flex-start; }

.segmento { display: flex; gap: 8px; }
.segmento-opcion, .franja-hora { position: relative; flex: 1; }
.segmento-opcion input, .franja-hora input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.segmento-opcion span, .franja-hora span {
  display: flex; align-items: center; justify-content: center; text-align: center; min-height: 48px; padding: 0 8px;
  border-radius: 12px; border: 1.5px solid var(--borde-campo); background: #fff; font-weight: 600; font-size: 15px;
}
.segmento-opcion input:checked + span, .franja-hora input:checked + span { border: 2px solid var(--rojo); background: var(--rosa); font-weight: 800; }
.segmento-opcion input:disabled + span { background: #F5F1EC; color: var(--texto-suave); border-style: dashed; cursor: not-allowed; }
.segmento-opcion input:focus-visible + span, .franja-hora input:focus-visible + span { outline: 3px solid var(--texto); outline-offset: 2px; }
.segmento-opcion input[aria-invalid="true"] + span { border-color: var(--rojo); }
.franjas { display: flex; flex-direction: column; gap: 14px; }
.franjas-dia { border: 0; margin: 0; padding: 0; min-width: 0; }
.franjas-dia legend { font-weight: 700; font-size: 14px; padding: 0; margin-bottom: 8px; }
.franjas-rejilla { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }

.campo-casilla { display: grid; grid-template-columns: 24px 1fr; gap: 6px 12px; align-items: start; }
.campo-casilla input { width: 24px; height: 24px; margin: 1px 0 0; accent-color: var(--rojo); }
.campo-casilla label { font-size: 14px; line-height: 1.45; font-weight: 400; }
.campo-casilla .campo-error { grid-column: 2; }
.aviso-email-largo { padding: 12px 14px; border-radius: 12px; background: var(--crema); font-size: 13px; line-height: 1.45; }
.aviso-email-largo a { font-weight: 700; }

/* ---------- Confirmación ---------- */
.enviado-cuerpo { padding: 40px 24px 16px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 14px; }
.enviado-icono { width: 84px; height: 84px; border-radius: 50%; background: var(--verde-claro); color: var(--verde); display: flex; align-items: center; justify-content: center; }
.vista-enviado h2 { font-size: 30px; font-weight: 800; }
.vista-enviado h2:focus { outline: none; }
.chip-pendiente { background: var(--amarillo); color: var(--marron); border-radius: 99px; padding: 6px 14px; font-weight: 700; font-size: 14px; }
.enviado-texto { font-size: 16px; line-height: 1.5; color: var(--texto-suave); }
.enviado-resumen { width: 100%; margin-top: 10px; padding: 16px; border-radius: 16px; background: var(--crema); display: flex; flex-direction: column; gap: 6px; font-size: 14px; text-align: left; color: var(--texto-suave); }
.enviado-linea { display: flex; justify-content: space-between; gap: 12px; color: var(--texto); }
.enviado-reenviar { font-size: 14px; line-height: 1.45; color: var(--texto-suave); }
.enviado-enlaces { display: flex; gap: 16px; justify-content: center; font-weight: 700; }
.enviado-enlaces a { display: inline-flex; align-items: center; min-height: 44px; }
.enviado-pie { border-top: 0; padding: 12px 20px 28px; }

/* ---------- Ficha: cantidad, nota y "Añadir" ---------- */
.ficha-pie { position: sticky; bottom: 0; background: #fff; padding: 14px 16px 20px; display: flex; gap: 10px; align-items: center; border-top: 1px solid var(--borde); }
.ficha-pie .cantidad button { height: 48px; }
.ficha-pie .boton { flex: 1; min-height: 52px; font-weight: 800; }
.ficha .campo label { font-weight: 700; font-size: 14px; }

@media (min-width: 1024px) {
  .barra-pedido { display: none !important; }
  .aviso-anadido { bottom: 32px; }

  .carta-layout.con-pedido { grid-template-columns: 190px minmax(0, 1fr) 330px; }
  .carta-layout.con-pedido > .carta-nav { grid-column: 1; grid-row: 1; }
  .carta-layout.con-pedido > .carta-contenido,
  .carta-layout.con-pedido > .vista-datos,
  .carta-layout.con-pedido > .vista-enviado { grid-column: 2; grid-row: 1; }

  .panel-pedido {
    display: flex; flex-direction: column; grid-column: 3; grid-row: 1;
    position: sticky; top: 16px; max-height: calc(100vh - 32px); overflow-y: auto;
    border: 1px solid var(--borde); border-radius: 20px; box-shadow: 0 10px 30px rgba(26, 20, 35, 0.08);
  }
  .panel-pedido .vista-cabecera { position: static; border: 0; padding: 20px 20px 0; }
  .panel-pedido .vista-atras, .panel-pedido .vista-paso { display: none; }
  .panel-pedido .vista-cuerpo { padding: 14px 20px; gap: 14px; }
  .panel-pedido .vista-pie { position: static; border: 0; padding: 0 20px 20px; }
  .panel-pedido .modalidad-opcion { padding: 10px 12px; min-height: 0; }
  .panel-pedido .modalidad-opcion[aria-pressed="true"] { padding: 9.5px 11.5px; }

  body[data-vista="datos"] .carta-contenido, body[data-vista="enviado"] .carta-contenido { display: none; }
  body[data-vista="datos"] #vista-datos, body[data-vista="enviado"] #vista-enviado { display: flex; flex-direction: column; }
  body[data-vista="datos"] .panel-continuar, body[data-vista="enviado"] .panel-continuar { display: none; }
  .vista-datos, .vista-enviado { border: 1px solid var(--borde); border-radius: 20px; overflow: hidden; }
  .vista-datos .vista-cabecera { position: static; }
  .vista-datos .vista-cuerpo { padding: 20px 24px; gap: 22px; }
  .vista-datos .vista-pie { position: static; padding: 16px 24px 24px; }
  .vista-datos .franjas-rejilla { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

/* Botones de contorno que son <button>: sin el fondo gris del navegador */
button.boton-contorno { background: #fff; }
button.boton-contorno:hover { background: var(--rosa); }
/* Dentro de las pantallas del pedido, el aviso "Añadido" no tapa el botón principal */
@media (max-width: 1023px) { body[data-vista="pedido"] .aviso-anadido { bottom: 130px; } }

/* ---------- Alérgenos: consultar, trazas y selección en el pedido ---------- */
.aviso-alergias-textos { display: flex; flex-direction: column; gap: 6px; }
.aviso-alergias .trazas { color: var(--texto); }
.alergenos-consultar { display: flex; flex-direction: column; gap: 10px; padding: 12px 14px; border-radius: 12px; background: var(--crema); font-size: 14px; }
.alergenos-botones { display: flex; gap: 8px; }
.alergenos-botones .boton { flex: 1; min-height: 44px; background: #fff; }
.ficha .trazas { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; color: var(--texto-suave); line-height: 1.4; }
.ficha .trazas svg { flex-shrink: 0; width: 18px; height: 18px; }
#ficha-alergenos { display: flex; flex-direction: column; gap: 10px; }

.alergenos-pedido > legend { font-size: 14px; font-weight: 600; margin-bottom: 10px; }
.chips-alergenos { display: flex; flex-wrap: wrap; gap: 8px; }
.chip-alergeno { position: relative; }
.chip-alergeno input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.chip-alergeno span {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 14px; border-radius: 99px;
  border: 1.5px solid var(--borde-campo); background: #fff; font-size: 14px; font-weight: 600;
}
.chip-alergeno input:checked + span { border: 2px solid var(--rojo); background: var(--rosa); padding: 0 13.5px; }
.chip-alergeno input:checked + span::before { content: "\2713\00A0"; color: var(--rojo); font-weight: 800; }
.chip-alergeno input:focus-visible + span { outline: 3px solid var(--texto); outline-offset: 2px; }
.chip-alergeno input[aria-invalid="true"] + span { border-color: var(--rojo); }
