/* RSJ · plantillas v3 · hoja de la página del carrito (encargo «carrito y pago v3», pieza 2; maqueta v0.2, pantallas 1 y 1b).
   El dibujo de la maqueta con los tokens del libro de estilo (comun.css) y las clases .cv- de esta página. Las líneas, como el carrito
   lateral 1.6: unidades primero, «= N cajas de 75» y precio tachado. Opción elegida: borde verde y fondo verde suave (decisión 14).
   Móvil (< 600 px): pasos en una barra fija bajo el header (decisión 16), líneas en filas (decisión 17), ahorro en dos columnas (18)
   y barra fija abajo con el total y «Tramitar pedido». */
.cv{padding-block:var(--s-32) var(--s-64)}
.cv h1{font-size:var(--fs-h1);line-height:1.15;overflow-wrap:anywhere}
.cv h2{font-size:var(--fs-h3);line-height:1.3;margin:0}
.cv [hidden]{display:none!important}

/* Pasos */
.cv-pasos{display:flex;flex-wrap:wrap;gap:var(--s-8) var(--s-24);list-style:none;padding:0;margin:0 0 var(--s-16);font-size:var(--fs-aux);font-weight:var(--fw-semibold);color:var(--color-text-muted)}
.cv-pasos li{display:flex;align-items:center;gap:var(--s-8)}
.cv-pasos .sh{display:none}
.cv-pasos i{font-style:normal;display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;border:2px solid var(--color-border-strong);font-size:var(--fs-badge)}
.cv-pasos .is-done{color:var(--color-action)}
.cv-pasos .is-done i{background:var(--color-action);border-color:var(--color-action);color:var(--color-surface)}
.cv-pasos .is-now{color:var(--color-ink)}
.cv-pasos .is-now i{border-color:var(--color-ink);background:var(--color-ink);color:var(--color-surface)}
.cv-cab{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-8) var(--s-16);margin-bottom:var(--s-24)}
.cv-cab p{margin:0;color:var(--color-text-muted);font-size:var(--fs-aux);font-weight:var(--fw-medium)}
.cv-vacio{display:grid;justify-items:start;gap:var(--s-16)}
.cv-dia-caros{display:grid;gap:var(--s-4);margin-top:var(--s-12);padding:var(--s-12) var(--s-16);border-radius:var(--radius-sm);background:var(--color-warning-soft);font-size:var(--fs-aux)} /* días con el precio más alto (decisión 20) */
.cv-dia-caros[hidden]{display:none}.cv-dia-caros p{margin:0}
.cv-vacio p{margin:0}
.cv-hecho{display:grid;gap:var(--s-24);max-width:720px} /* pedido ya hecho al volver atrás (pantalla 3c) */
.cv-hecho .cv-hero h2{margin:0}
.cv-hecho .cv-bloque p{max-width:60ch}
.cv-guardado p{max-width:60ch}.cv-guardado__btn{display:flex;flex-wrap:wrap;gap:var(--s-8)} /* pedido guardado al volver atrás (26/10/2026) */
.cv-flota{margin:var(--s-8) 0 0;padding:var(--s-12) var(--s-16);border-radius:var(--radius-sm);background:var(--color-ink);color:var(--color-surface);font-size:var(--fs-aux);box-shadow:var(--shadow-sm);animation:cv-flota var(--dur-base) var(--ease)} /* aviso al pulsar «Recibir el presupuesto» o «Tramitar pedido» */
@keyframes cv-flota{from{opacity:0;transform:translateY(-4px)}}

/* Columnas: contenido y resumen fijo a la derecha */
.cv-cols{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:var(--s-32);align-items:start}
.cv-main{display:grid;gap:var(--s-24);min-width:0}
.cv-side{position:sticky;top:calc(var(--header-h) + var(--s-24));display:grid;gap:var(--s-16)}

/* Bloques */
.cv-bloque{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--s-24);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-16)}
.cv-bloque-h{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-4) var(--s-12)}
.cv-bloque-h .n{flex:none;display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--color-ink);color:var(--color-surface);font-size:var(--fs-aux);font-weight:var(--fw-bold)}
.cv-bloque-h .n.ok{background:var(--color-action)}
.cv-bloque-h p{margin:0 0 0 auto;font-size:var(--fs-badge);color:var(--color-text-muted);font-weight:var(--fw-medium)}
.cv-ayuda,.cv-nota{margin:0;font-size:var(--fs-aux);color:var(--color-text-muted)}
.cv-nota{font-size:var(--fs-badge);text-align:center}
.cv-link{background:none;border:0;padding:0;color:var(--color-action);font:inherit;font-weight:var(--fw-semibold);text-decoration:underline;text-underline-offset:3px;min-height:var(--h-touch-min);cursor:pointer}

/* Avisos */
.cv-aviso,.cv-error{display:flex;gap:var(--s-12);align-items:flex-start;padding:var(--s-16);border-radius:var(--radius-md);font-size:var(--fs-aux);font-weight:var(--fw-medium)}
.cv-aviso{background:var(--color-warning-soft);color:var(--color-ink)}
.cv-aviso b{display:block;font-size:var(--fs-body)}
.cv-aviso p,.cv-aviso ul{margin:0}
.cv-error{background:var(--color-error-soft);color:var(--color-error)}
.cv-aviso svg,.cv-error svg,.cv-dia-msg svg{width:20px;height:20px;flex:none;margin-top:2px}
.cv-aviso svg{color:var(--color-warning)}

/* Líneas (el dibujo del carrito lateral 1.6, en ancho) */
.cv-lineas{list-style:none;margin:0;padding:0}
.cv-linea{display:grid;grid-template-columns:80px minmax(0,1fr) auto auto var(--h-touch-min);grid-template-areas:"img info qty sub del" "img save save save save";gap:var(--s-8) var(--s-16);align-items:center;padding-block:var(--s-16);border-bottom:1px solid var(--color-border)}
.cv-linea:first-child{padding-top:0}
.cv-linea:last-child{border-bottom:0;padding-bottom:0}
.cv-img{grid-area:img;width:80px;height:80px;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;align-self:start;background:var(--color-surface-soft)}
.cv-img img{width:100%;height:100%;object-fit:cover;display:block}
.cv-info{grid-area:info;display:grid;gap:2px;min-width:0}
.cv-nombre{font-size:var(--fs-body);font-weight:var(--fw-bold);line-height:1.35}
.cv-formato{font-size:var(--fs-badge);font-weight:var(--fw-medium);color:var(--color-text-muted)}
.cv-precio{font-size:var(--fs-aux)}
.cv-precio s{font-size:var(--fs-badge);color:var(--color-text-muted);margin-right:var(--s-4)}
.cv-precio b{color:var(--color-action)}
.cv-precio small{color:var(--color-text-muted);font-size:var(--fs-badge)}
.cv-qty{grid-area:qty;display:grid;justify-items:center;gap:2px}
.cv-qty small{font-size:var(--fs-badge);font-weight:var(--fw-semibold);white-space:nowrap}
.cv-stepper{display:inline-flex;align-items:stretch;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);overflow:hidden}
.cv-stepper button{width:var(--h-touch-min);min-height:var(--h-touch-min);border:0;background:var(--color-surface-soft);font-size:var(--fs-h3);font-weight:var(--fw-semibold);line-height:1;cursor:pointer;color:var(--color-ink)}
.cv-stepper button:hover{background:var(--color-action-soft)}
.cv-stepper button:disabled{color:var(--color-border-strong);cursor:not-allowed;background:var(--color-surface-soft)}
.cv-stepper output{display:grid;place-items:center;min-width:72px;padding-inline:var(--s-8);border-inline:1px solid var(--color-border-strong);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;background:var(--color-surface)}
.cv-sub{grid-area:sub;text-align:right;font-weight:var(--fw-bold);min-width:96px;white-space:nowrap}
.cv-sub span{display:none}
.cv-quitar{grid-area:del;width:var(--h-touch-min);height:var(--h-touch-min);display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-sm);background:none;color:var(--color-text-muted);cursor:pointer}
.cv-quitar:hover{background:var(--color-brand-100);color:var(--color-error)}
.cv-quitar svg{width:20px;height:20px}
.cv-save{grid-area:save;margin:0;font-size:var(--fs-badge);font-weight:var(--fw-medium);color:var(--color-text-muted)}
.cv-save b{color:var(--color-action)}
.cv-deshacer{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-8);font-size:var(--fs-aux)}
.cv-ocupado .cv-lineas{opacity:.6;pointer-events:none}

/* Entrega: código postal, modalidad y día */
.cv-cp{display:flex;flex-wrap:wrap;gap:var(--s-12);align-items:end}
.cv-cp .field{display:grid;gap:var(--s-4)}
.cv-cp label{font-size:var(--fs-aux);font-weight:var(--fw-semibold)}
.cv-cp .cv-ayuda{flex-basis:100%}
.cv-cp-input{width:140px;font-size:var(--fs-h3);font-weight:var(--fw-semibold);letter-spacing:.08em;font-variant-numeric:tabular-nums}
.cv-modos{border:0;padding:0;margin:0;min-width:0}
.cv-modos legend{padding:0;margin-bottom:var(--s-8);font-size:var(--fs-aux);font-weight:var(--fw-semibold)}
.cv-opciones{display:grid;gap:var(--s-12)}
.cv-opcion{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:var(--s-12);align-items:center;padding:var(--s-16);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);cursor:pointer;background:var(--color-surface)}
.cv-opcion:hover{border-color:var(--color-action)}
.cv-opcion input{width:20px;height:20px;accent-color:var(--color-action);margin:0}
.cv-opcion b{display:block;font-size:var(--fs-body);line-height:1.35}
.cv-opcion .d{display:block;font-size:var(--fs-badge);color:var(--color-text-muted);font-weight:var(--fw-medium)}
.cv-opcion .pr{font-weight:var(--fw-bold);white-space:nowrap;font-variant-numeric:tabular-nums}
.cv-opcion .pr small{font-weight:var(--fw-medium);color:var(--color-text-muted)}
.cv-opcion:has(input:checked){border:2px solid var(--color-action);background:var(--color-action-soft);padding:15px}
.cv-dias{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:var(--s-8)}
.cv-dia{display:grid;justify-items:center;padding:var(--s-8) var(--s-4);min-height:88px;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);line-height:1.2;cursor:pointer;color:var(--color-ink);font:inherit}
.cv-dia small{font-size:var(--fs-badge);font-weight:var(--fw-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}
.cv-dia b{font-size:var(--fs-h3)}
.cv-dia span{font-size:var(--fs-badge);font-weight:var(--fw-medium)}
.cv-dia em{font-style:normal;font-size:11px;font-weight:var(--fw-semibold);color:var(--color-text-muted);margin-top:2px;font-variant-numeric:tabular-nums;white-space:nowrap}
.cv-dia em.up{color:var(--color-warning)}
.cv-dia em.min{color:var(--color-success)} /* encargo 27, punto 6: verde el más barato, naranja más caro de lo habitual (el habitual, sin color) */
.cv-dia:hover{border-color:var(--color-action)}
.cv-dia[aria-pressed="true"]{border:2px solid var(--color-action);background:var(--color-action-soft);color:var(--color-action)}
.cv-dia[aria-pressed="true"] em{color:var(--color-action)}
.cv-dia-msg{display:flex;gap:var(--s-8);font-size:var(--fs-aux);padding:var(--s-12) var(--s-16);border-radius:var(--radius-md);background:var(--color-surface-soft);border:1px solid var(--color-border)}
.cv-dia-msg svg{color:var(--color-action)}
/* Calendario de las campañas largas (26/10/2026): un mes, de lunes a domingo */
.cv-dias--cal{display:block}
.cv-cal__cab{display:flex;align-items:center;justify-content:space-between;gap:var(--s-8);margin-bottom:var(--s-8)}
.cv-cal__cab b{font-size:var(--fs-body);text-transform:capitalize}
.cv-cal__nav{width:var(--h-touch-min);height:var(--h-touch-min);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);font-size:var(--fs-h3);line-height:1;cursor:pointer}
.cv-cal__nav:disabled{opacity:.35;cursor:default}
.cv-cal__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--s-4)}
.cv-cal__sem{text-align:center;font-size:var(--fs-badge);font-weight:var(--fw-semibold);color:var(--color-text-muted);padding-bottom:var(--s-4)}
.cv-cal__dia{display:grid;justify-items:center;align-content:center;min-height:var(--h-touch-min);padding:var(--s-4) 2px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);line-height:1.15;cursor:pointer}
.cv-cal__dia b{font-size:var(--fs-aux)}
.cv-cal__dia em{font-style:normal;font-size:10px;font-weight:var(--fw-semibold);color:var(--color-text-muted);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;text-align:center}
.cv-cal__dia em.up{color:var(--color-warning)}
.cv-cal__dia em.min{color:var(--color-success)}
.cv-cal__dia:hover{border-color:var(--color-action)}
.cv-cal__dia[aria-pressed="true"]{border:2px solid var(--color-action);background:var(--color-action-soft);color:var(--color-action)}
.cv-cal__dia.is-off{border-color:transparent;background:none;color:var(--color-border-strong);cursor:default}
/* Aviso del día elegido (26/10/2026) */
.cv-dia-aviso{max-width:min(440px,calc(100vw - 32px));padding:var(--s-24);border:0;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-ink)}
.cv-dia-aviso::backdrop{background:var(--overlay)}
.cv-dia-aviso__in{display:flex;gap:var(--s-12);margin-bottom:var(--s-16)}
.cv-dia-aviso__in svg{width:24px;height:24px;flex:none;color:var(--color-action)}
.cv-dia-aviso h2{font-size:var(--fs-h3);margin:0 0 var(--s-8)}
.cv-dia-aviso p{margin:0}
.cv-dia-aviso form{display:flex;justify-content:flex-end}

/* Resumen */
.cv-sum{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--s-24);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-16);background:var(--color-surface)}
.cv-filas{display:grid;gap:var(--s-8);margin:0}
.cv-fila{display:flex;justify-content:space-between;gap:var(--s-16);font-size:var(--fs-aux)}
.cv-fila dt{color:var(--color-text-muted);font-weight:var(--fw-medium)}
.cv-fila dd{margin:0;font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;text-align:right}
.cv-fila .pend{color:var(--color-text-muted);font-weight:var(--fw-medium)}
.cv-fila.nota dt{font-size:var(--fs-badge)}
.cv-ahorro{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"ico txt" "ico val";column-gap:var(--s-12);align-items:center;padding:var(--s-12) var(--s-16);border-radius:var(--radius-md);background:var(--color-action-soft)}
.cv-ahorro svg{grid-area:ico;width:32px;height:32px;color:var(--color-action)}
.cv-ahorro span{grid-area:txt;font-size:var(--fs-aux);font-weight:var(--fw-medium);line-height:1.3}
.cv-ahorro output{grid-area:val;font-size:20px;font-weight:var(--fw-bold);line-height:1.2;color:var(--color-action);white-space:nowrap}
.cv-total{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--s-16)}
.cv-total p{margin:0}
.cv-total small{font-size:var(--fs-badge);color:var(--color-text-muted);font-weight:var(--fw-medium)}
.cv-total output{font-size:var(--fs-price);font-weight:var(--fw-bold);line-height:1.15;white-space:nowrap}
.cv-total output small{display:block;text-align:right}
.cv-ctas{display:grid;gap:var(--s-8)}
/* Código de descuento (encargo «carrito y pago v3» v0.3: la página antigua del paso 3 ya no se ve) */
.cv-dto{display:grid;gap:var(--s-8);font-size:var(--fs-aux)}
.cv-dto label{font-weight:var(--fw-semibold)}
.cv-dto__fila{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s-8)}
.cv-dto__fila .input{min-width:0;text-transform:uppercase}
.cv-dto__msg{display:flex;gap:var(--s-8);margin:0;padding:var(--s-8) var(--s-12);border-radius:var(--radius-sm)}
.cv-dto__ok{margin:0;color:var(--color-success)}
.cv-dto__ok a{color:inherit}
.cv-ctas .btn svg{width:20px;height:20px;flex:none}
/* Botones apagados (sin día elegido, o con la venta cerrada): grises. Los enlaces siguen recibiendo la pulsación para que carrito.js diga
   qué falta junto al botón (Miguel, 27/10/2026: «le doy al botón y no pasa nada») */
.cv-ctas a[aria-disabled="true"],.cv-barra a[aria-disabled="true"],.cv-ctas .btn:disabled{background:var(--color-border);border-color:var(--color-border);color:var(--color-text-muted);cursor:not-allowed}
.cv-recauda{margin:0;text-align:center;font-size:var(--fs-aux);font-weight:var(--fw-medium);line-height:1.35;text-wrap:balance}
.cv-recauda svg{display:inline-block;width:20px;height:20px;margin-right:var(--s-8);vertical-align:-4px;color:var(--color-action)}
.cv-recauda output{font-weight:var(--fw-bold);color:var(--color-action)}
.cv-recauda small{font-size:var(--fs-badge);white-space:nowrap}
.cv-confianza{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-8);font-size:var(--fs-badge);font-weight:var(--fw-medium);color:var(--color-text-muted)}
.cv-confianza li{display:flex;gap:var(--s-8);align-items:center}
.cv-confianza svg{width:20px;height:20px;flex:none;color:var(--color-action)}
.cv-barra{display:none}

@media (max-width:900px){
  .cv-cols{grid-template-columns:minmax(0,1fr)}
  .cv-side{position:static}
}
@media (max-width:599.98px){
  .cv{padding-block:var(--s-16) 120px}
  .cv h1{font-size:26px}
  .cv-bloque,.cv-sum{padding:var(--s-16)}
  /* Decisión 16: pasos en una barra fija bajo el header, tres rayas de 4 px (verde hecho, negro actual, gris pendiente) */
  .cv-pasos{position:sticky;top:var(--header-h);z-index:30;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-8);margin:calc(-1 * var(--s-16)) calc(-1 * var(--gutter)) var(--s-16);padding:var(--s-8) var(--gutter);background:var(--color-surface);border-bottom:1px solid var(--color-border);font-size:var(--fs-badge);line-height:1.2}
  .cv-pasos li{display:grid;gap:var(--s-4);align-content:start}
  .cv-pasos li::before{content:"";height:4px;border-radius:2px;background:var(--color-border)}
  .cv-pasos .is-done::before{background:var(--color-action)}
  .cv-pasos .is-now::before{background:var(--color-ink)}
  .cv-pasos i,.cv-pasos .lg{display:none}
  .cv-pasos .sh{display:inline}
  /* Decisión 17: cantidad y «= N cajas» en la misma fila; debajo, «Subtotal» e importe; nada sale del recuadro */
  .cv-linea{grid-template-columns:64px minmax(0,1fr) var(--h-touch-min);grid-template-areas:"img info del" "qty qty qty" "sub sub sub" "save save save";gap:var(--s-8) var(--s-12)}
  .cv-img{width:64px;height:64px}
  .cv-qty{display:flex;align-items:center;gap:var(--s-12);flex-wrap:wrap}
  .cv-sub{display:flex;justify-content:space-between;align-items:baseline;min-width:0}
  .cv-sub span{display:inline;font-size:var(--fs-aux);font-weight:var(--fw-medium);color:var(--color-text-muted)}
  .cv-opcion{grid-template-columns:20px minmax(0,1fr) auto;padding:var(--s-12)}
  .cv-opcion:has(input:checked){padding:11px}
  .cv-dias{grid-template-columns:repeat(3,minmax(0,1fr))}
  .cv-barra{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--s-12);position:fixed;left:0;right:0;bottom:0;z-index:40;padding:var(--s-12) var(--gutter) calc(var(--s-12) + env(safe-area-inset-bottom,0px));background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:0 -4px 16px rgba(29,36,32,.08)}
  .cv-barra p{margin:0;font-size:var(--fs-badge);color:var(--color-text-muted);line-height:1.3}
  .cv-barra b{display:block;font-size:var(--fs-h3);color:var(--color-ink)}
  .cv-barra .btn{padding-inline:var(--s-16)}
}

/* Segundo pago (pieza 7; maqueta v0.2, pantalla 4) */
.cv-estrecho{max-width:720px;margin-inline:auto;display:grid;gap:var(--s-24)}
.cv-hero{display:grid;gap:var(--s-12)}
.cv-hero h1{margin:0}
.cv-badge{justify-self:start;display:inline-flex;padding:var(--s-4) var(--s-12);border-radius:var(--radius-pill);background:var(--color-warning-soft);color:var(--color-warning);font-size:var(--fs-badge);font-weight:var(--fw-bold);letter-spacing:.04em;text-transform:uppercase}
.cv-codigo{font-weight:var(--fw-bold);color:var(--color-brand-600);letter-spacing:.04em}
.cv-fila-pend{padding-top:var(--s-8);border-top:1px solid var(--color-border);align-items:baseline}
.cv-fila-pend dt{color:var(--color-ink);font-weight:var(--fw-bold)}
.cv-grande{font-size:40px;font-weight:var(--fw-bold);line-height:1.1}
.cv-radios{display:flex;flex-wrap:wrap;gap:var(--s-12)}
.cv-radio{display:flex;align-items:center;gap:var(--s-8);min-height:var(--h-touch-min);padding:0 var(--s-16);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-aux);font-weight:var(--fw-semibold)}
.cv-radio input{accent-color:var(--color-action);width:18px;height:18px;margin:0}
.cv-radio:has(input:checked){border:2px solid var(--color-action);background:var(--color-action-soft);padding:0 15px}
details.cv-bloque summary{cursor:pointer;font-weight:var(--fw-semibold);min-height:var(--h-touch-min);display:flex;align-items:center}
.cv-mini{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-12)}
.cv-mini li{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:var(--s-12);align-items:center;font-size:var(--fs-aux)}
.cv-mini img{width:48px;height:48px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--color-border)}
.cv-mini b{display:block;line-height:1.3}
.cv-mini span{font-size:var(--fs-badge);color:var(--color-text-muted)}
@media (max-width:599.98px){.cv-grande{font-size:32px}}

/* Datos y pago, transferencia y pago hecho (maqueta v0.2, pantallas 2, 3a y 3b) */
.cv-ok{display:flex;gap:var(--s-12);align-items:flex-start;padding:var(--s-16);border-radius:var(--radius-md);background:var(--color-success-soft);font-size:var(--fs-aux);font-weight:var(--fw-medium);margin-bottom:var(--s-24)}
.cv-ok svg{width:20px;height:20px;flex:none;margin-top:2px;color:var(--color-success)}
.cv-ok p{margin:0}
.cv-ok a{color:var(--color-action);font-weight:var(--fw-semibold)}
.cv > .cv-error{margin-bottom:var(--s-24)}
.cv-elegido{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-8) var(--s-16);padding:var(--s-12) var(--s-16);border-radius:var(--radius-md);background:var(--color-surface-soft);border:1px solid var(--color-border);font-size:var(--fs-aux)}
.cv-elegido svg{width:24px;height:24px;color:var(--color-action);flex:none}
.cv-elegido > div{display:grid;gap:2px;flex:1 1 220px;min-width:0}
.cv-elegido b{font-size:var(--fs-body)}
.cv-link-off{margin-left:auto;font-weight:var(--fw-semibold);color:var(--color-text-muted)}
.cv-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-16)}
.cv-grid2[hidden]{display:none}
.cv-full{grid-column:1/-1}
.cv .field{display:grid;gap:var(--s-4);min-width:0;align-content:start}
.cv .field label{font-size:var(--fs-aux);font-weight:var(--fw-semibold)}
.cv .field .opt{font-weight:var(--fw-medium);color:var(--color-text-muted)}
.cv .field input[readonly]{background:var(--color-surface-soft);color:var(--color-text-muted)}
.cv-textarea{min-height:88px;resize:vertical;font:inherit}
.cv-check{display:flex;gap:var(--s-12);align-items:flex-start;font-size:var(--fs-aux);cursor:pointer}
.cv-check input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--color-action);flex:none}
.cv-check a{color:var(--color-action)}
.cv-re{display:grid;gap:var(--s-8);padding:var(--s-16);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md)}
.cv-re .cv-ayuda{font-size:var(--fs-badge)}
.cv-radio[hidden],.cv-re[hidden],[data-tipo][hidden]{display:none}
.cv-radio:has(input:disabled){opacity:.55;cursor:not-allowed}
.cv-fila.cv-sep{padding-top:var(--s-8);border-top:1px solid var(--color-border)}
.cv-sum h2 .cv-codigo{font-size:var(--fs-aux)}
.cv-mini s{color:var(--color-text-muted);margin-right:var(--s-4)}
.cv-badge-ok{background:var(--color-success-soft);color:var(--color-success)}
.cv-hero p{margin:0}
.cv-modal{position:fixed;inset:0;z-index:100;background:rgba(29,36,32,.48);display:grid;place-items:center;padding:var(--s-16)}
.cv-modal[hidden]{display:none}
.cv-modal-caja{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:0 8px 32px rgba(29,36,32,.18);max-width:520px;width:100%;padding:var(--s-24);display:grid;gap:var(--s-16)}
.cv-modal-caja p{margin:0;font-size:var(--fs-aux)}
.cv-stop{padding:var(--s-12) var(--s-16);border-radius:var(--radius-md);background:var(--color-error-soft);color:var(--color-error);font-weight:var(--fw-bold);font-size:var(--fs-body)!important;text-align:center}
.cv-modal-botones{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-8)}
.cv-banco{display:grid;gap:var(--s-12);margin:0}
.cv-banco div{display:grid;grid-template-columns:140px minmax(0,1fr) auto;gap:var(--s-12);align-items:center;padding-bottom:var(--s-12);border-bottom:1px solid var(--color-border)}
.cv-banco div:last-child{border-bottom:0;padding-bottom:0}
.cv-banco dt{font-size:var(--fs-aux);color:var(--color-text-muted);font-weight:var(--fw-medium)}
.cv-banco dd{margin:0;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.cv-copiar{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:var(--radius-sm);min-height:var(--h-touch-min);padding:0 var(--s-12);font:inherit;font-size:var(--fs-badge);font-weight:var(--fw-semibold);cursor:pointer;color:var(--color-ink)}
.cv-copiar:hover{background:var(--color-action-soft)}
@media (max-width:599.98px){
  .cv-grid2{grid-template-columns:minmax(0,1fr)}
  .cv-modal-botones{grid-template-columns:1fr}
  .cv-banco div{grid-template-columns:minmax(0,1fr) auto}
  .cv-banco dt{grid-column:1/-1}
}

/* Área de clientes: entrar o crear una cuenta, mis pedidos y mis datos (mismas piezas que el carrito y el pago) */
.ca .ca-form{display:grid;gap:var(--s-16)}
.ca .ca-form[hidden]{display:none}
.ca-res{margin:0}
.ca-res.cv-error p{margin:0}
.ca-entrar{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--s-32);align-items:start}
.ca-recaptcha{min-height:78px}
.ca-cab{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s-16);margin-bottom:var(--s-24)}
.ca-cab h1{margin:0}
.ca-hola{margin:0 0 var(--s-4);font-size:var(--fs-aux);font-weight:var(--fw-semibold);color:var(--color-text-muted)}
.ca-tabs{display:flex;gap:var(--s-8);border-bottom:1px solid var(--color-border);margin-bottom:var(--s-24);overflow-x:auto}
.ca-tabs [role=tab]{display:inline-flex;align-items:center;gap:var(--s-8);min-height:var(--h-touch-min);padding:0 var(--s-16);border:0;border-bottom:3px solid transparent;margin-bottom:-1px;background:none;font-weight:var(--fw-semibold);color:var(--color-text-muted);cursor:pointer;white-space:nowrap}
.ca-tabs [role=tab]:hover{color:var(--color-ink)}
.ca-tabs [aria-selected=true]{border-bottom-color:var(--color-action);color:var(--color-ink)}
.ca-num{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:var(--radius-pill);background:var(--color-surface-soft);border:1px solid var(--color-border);font-size:var(--fs-badge)}
.ca-panel{display:grid;gap:var(--s-24);max-width:880px}
.ca-panel[hidden]{display:none}
.ca-panel:focus-visible{outline:2px solid var(--color-action);outline-offset:4px}
.ca-pedidos{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-16)}
.ca-pedido{scroll-margin-top:calc(var(--header-h) + var(--s-16))}
.ca-pedido.is-marcado{border:2px solid var(--color-action);padding:23px}
.ca-pedido-cab{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-8) var(--s-12)}
.ca-pedido-cab h2{margin:0}
.ca-fecha{margin:0 0 0 auto;font-size:var(--fs-aux);color:var(--color-text-muted);font-weight:var(--fw-medium)}
.ca-pend dt,.ca-pend dd{color:var(--color-error);font-weight:var(--fw-bold)}
.ca-acciones{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-8) var(--s-12)}
.ca-acciones .btn-link{padding:0;display:inline-flex;gap:var(--s-8);font-weight:var(--fw-semibold)}
.ca-facturas{padding-top:var(--s-16);border-top:1px solid var(--color-border)}
.ca-facturas h3{font-size:var(--fs-aux);margin:0 0 var(--s-8)}
.ca-facturas ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-4);font-size:var(--fs-aux)}
.ca-facturas li{display:flex;flex-wrap:wrap;column-gap:var(--s-16)}
.ca-facturas a{display:inline-flex;align-items:center;gap:var(--s-8);min-height:var(--h-touch-min);color:var(--color-action);font-weight:var(--fw-semibold)}
.ca-facturas svg{width:18px;height:18px;flex:none}
.ca-facturas .ca-xsig{font-weight:var(--fw-medium)}
/* Encargo 27, punto 3: entrega y día de cada pedido (3c) y aviso del pedido hecho que espera el pago (3d) */
.ca-entrega{display:grid;gap:var(--s-4);font-size:var(--fs-aux)}
.ca-entrega p{margin:0}
.ca-entrega span{display:block;color:var(--color-text-muted);overflow-wrap:anywhere}
.ca-pago-elegido{font-weight:var(--fw-medium)}
.ca-guardar{display:flex;justify-content:flex-end}
.ca #ca-bloque-pwd{scroll-margin-top:calc(var(--header-h) + var(--s-16))}
@media (max-width:900px){
  .ca-entrar{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:599.98px){
  .ca.cv{padding-bottom:var(--s-48)}
  .ca-cab .btn{width:100%}
  .ca-pedido.is-marcado{padding:15px}
  .ca-fecha{margin-left:0;flex-basis:100%}
  .ca-acciones .btn:not(.btn-link),.ca-guardar .btn{width:100%}
}
.cv-opcion .pr .cv-porcaja{display:block;text-align:right;font-size:var(--fs-aux);font-weight:var(--fw-medium);color:var(--color-text-muted);white-space:nowrap} /* encargo 26, C13: «X € por caja · N cajas» */
/* Aviso de festivos locales (encargo 27, punto 6): al pulsar un día se resalta con color de aviso y una sacudida breve (sin movimiento si el
   sistema pide reducirlo: solo el color) */
.cv-festivos.is-aviso{padding:var(--s-8) var(--s-12);border-radius:var(--radius-sm);background:var(--color-warning-soft);color:var(--color-warning);font-weight:var(--fw-semibold);animation:cv-festivo .6s var(--ease) 1}
@keyframes cv-festivo{0%,100%{transform:none}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(3px)}}
@media (prefers-reduced-motion:reduce){.cv-festivos.is-aviso{animation:none}}
/* «Datos y pago»: qué falta, bajo el campo (encargo 27, punto 19 sexies) */
.cv-campo-falta{margin:var(--s-4) 0 0;color:var(--color-error);font-size:var(--fs-aux);font-weight:var(--fw-semibold)}
.cv .input[aria-invalid="true"]{border-color:var(--color-error)}
.cv-presu-pdf{margin-top:var(--s-12)!important}
.cv-presu-pdf .btn svg{width:20px;height:20px;margin:0;color:currentColor}
